DevHaunt’s visual identity is built entirely on top of Tailwind CSS, extended with a small set of named design tokens that map directly to Halloween-themed colors. All custom tokens, font assignments, keyframe animations, and global overrides are compiled intoDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev-haunt/llms.txt
Use this file to discover all available pages before exploring further.
assets/main.css and loaded on every page. Nothing in the styling system relies on inline styles or arbitrary one-off values — every design decision is expressed through token names that read like prose.
Color tokens
The palette uses five base colors, each available asbg-*, text-*, and border-* utilities. Opacity modifiers (e.g., text-ghost/70) work as normal Tailwind opacity variants.
| Token | Hex | Example utilities | Use in the UI |
|---|---|---|---|
night | #0b3a44 | bg-night, text-night, border-night | Page background, nav backdrop, scrollbar track |
pumpkin | #ff7a1a | bg-pumpkin, text-pumpkin, border-pumpkin | Headings, active nav links, CTA buttons, scrollbar thumb |
ghost | #f4f1ea | text-ghost, border-ghost | Body text, card borders, fog SVG fill |
tombstone | #5a6268 | bg-tombstone, border-tombstone | Card chrome, separator lines |
tombstone-dark | #3a4044 | bg-tombstone-dark, border-tombstone-dark | Deeper card backgrounds |
tombstone-light | #7a8288 | bg-tombstone-light, border-tombstone-light | Subtle UI chrome |
wood | #3e2723 | bg-wood, border-wood | Blog shelf surface, decorative wood accents |
Text selection uses pumpkin on night: any highlighted text shows the pumpkin background with night-colored characters. This is applied globally on the root
div via selection:bg-pumpkin selection:text-night in components/Layout.js.Typography
Three fonts are loaded from Google Fonts via a single@import at the top of assets/main.css:
| Tailwind class | Font family | Role |
|---|---|---|
font-spooky | Caveat Brush | All page headings, navigation labels, button text |
| (default) | Inter | Body paragraphs, descriptions, form labels |
font-code | JetBrains Mono | Code snippets, metadata labels, archive badges |
html base styles in Tailwind’s preflight set Inter as the document default, so body text requires no extra class. Apply font-spooky to any heading element or font-code to any element that needs the monospaced treatment.
Custom CSS animations
Five keyframe animations are defined inassets/main.css and exposed as Tailwind animate-* utilities or direct CSS class names:
animate-flicker
Simulates an unstable window light by oscillating opacity between fully opaque and 40% transparent at irregular intervals. Used on the lit window of the HauntedHouse component.
animate-sway
Rotates an element between −5° and +5° on a 4-second ease-in-out cycle. Used on decorative hanging signs above doors.
animate-pulse
The standard Tailwind pulse animation — fades opacity to 50% and back over 2 seconds on a cubic-bezier curve. Used on glowing accents and loading states.
fog-drift (via .fog-layer)
Translates the doubled-width fog SVG layers 50% to the left over a long duration, creating seamlessly looping horizontal drift. The second fog layer runs the same animation in reverse to break up the uniformity.
float (via group-hover:animate-float)
Translates an element smoothly from its resting position up 20 pixels and back on a 6-second ease-in-out cycle. Triggered by group-hover — for example, on the ghost icon in the Navigation logo when the user hovers the site title.
Scrollbar styling
DevHaunt replaces the browser’s default scrollbar with a themed one that matches the night/pumpkin palette:The custom scrollbar styles use the
-webkit-scrollbar pseudo-elements, which are supported in Chromium-based browsers and Safari but not in Firefox. Firefox users will see their platform’s default scrollbar styling.Global cursor override
Thebody selector in assets/main.css sets cursor: none globally:
CursorTrail component rendered inside Layout, which draws a glowing pumpkin-orange trail following the mouse position using Framer Motion.