The entire visual identity of Systems Witch — the acid-green glows, pitch-black backgrounds, monospaced terminal typography, and flickering glitch effects — is controlled through a small set of Tailwind custom colors, three Google Font families, and a handful of bespoke CSS utility classes and keyframes defined inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/systems-witch/llms.txt
Use this file to discover all available pages before exploring further.
assets/main.css. Understanding where each piece lives lets you retheme the site from neon-occult to any aesthetic you choose without touching a single component.
Color palette
Four semantic color tokens are registered as Tailwind custom colors. They compile into utility classes liketext-acid, bg-graphite, border-lilac, and so on — usable anywhere in JSX the same way as built-in Tailwind colors.
| Token | Hex | Usage |
|---|---|---|
acid | #A4FF3D | Accents, borders, glow, active states |
bone | #EDEAE2 | Primary text |
graphite | #0E0E10 | Dark borders, card backgrounds |
lilac | #7A6BA8 | Secondary/muted text |
black | #000000 | Page background |
border-acid/30 (#A4FF3D at 30% opacity), bg-graphite/30, text-acid/50, and bg-black/80 are available throughout the codebase at no extra config cost.
To change the accent color: search for every occurrence of #A4FF3D in assets/main.css — this is the compiled Tailwind output, so the color appears both in generated utility classes (e.g., border-acid) and inside the bespoke rules for .shadow-glow, .text-glow, @keyframes pulse-glow, and the glitch pseudo-element text-shadow declarations. Replace all instances with your new hex value. In the original source project, the canonical location is the extend.colors.acid entry in tailwind.config.js.
Typography
Three typefaces handle distinct roles across the UI:| Family | Stack | Applied to |
|---|---|---|
JetBrains Mono | monospace | All h1–h6 headings and font-mono elements |
IBM Plex Sans | sans-serif | Body text, descriptions, font-sans elements |
Cinzel | serif | Decorative italic accent on skill card names and the hero site-name wordmark |
@import at the very top of assets/main.css:
h1–h6 elements receive font-family: JetBrains Mono, monospace; the html and body default to IBM Plex Sans, sans-serif; and font-serif maps to Cinzel, serif.
To swap fonts: replace the @import URL with a new Google Fonts URL containing your chosen families, then update the fontFamily.mono, fontFamily.sans, and fontFamily.serif entries in the Tailwind config in the original source project (or find and replace the font-family declarations directly in assets/main.css).
Glow effects
Three CSS constructs combine to produce the signature acid-green glow:shadow-glow — a custom Tailwind utility class that applies a box shadow:
group-hover:shadow-glow) and on the contact form’s submit button when active.
text-glow — a custom class for glowing text:
animate-pulse-glow — a keyframe animation that pulses a glow between full and reduced intensity:
rgba(164, 255, 61, ...) values in .shadow-glow, .text-glow, and the @keyframes pulse-glow block in assets/main.css.
Scanline overlay
TheScanlineOverlay component renders a fixed full-screen div that mimics a CRT scanline effect. It sits at z-50 above all page content and uses mix-blend-overlay so it tints rather than obscures what’s beneath. The overlay has two opacity layers:
- The outer wrapper uses
opacity-[0.15]and applies alinear-gradientbackground — alternating transparent and semi-black stripes at a 4 px repeat — to produce horizontal scanlines. - The inner
divusesbg-acid opacity-[0.02] animate-pulseto add a very faint pulsing acid-green wash over the entire screen.
0 to suppress it almost entirely. Both values are in components/ScanlineOverlay.js.
Glitch animation
The.glitch-wrapper:hover rule in assets/main.css drives the heading glitch effect seen on all page titles (via the GlitchHeading component). On hover, two ::before and ::after pseudo-elements duplicate the text and animate independently:
::before— shifts2pxright, applies aredtext-shadow, and clips a horizontal slice usingclip-path: polygon(...), animating via@keyframes glitch-anim-1at 2.5 s per cycle.::after— shifts2pxleft, applies abluetext-shadow, clips a different slice, and animates via@keyframes glitch-anim-2at 3 s per cycle.
clip-path polygon() positions, creating the sliced-text tearing effect.
To speed up or slow down the glitch: change the 2.5s and 3s duration values in these rules:
ASCII border decoration
The.ascii-border class adds +---+ corner markers to any element via CSS ::before and ::after pseudo-elements. The markers are only visible on md: screens (768 px and above) to avoid layout noise on mobile:
border: 1px solid #0E0E10 on the element itself. It is currently applied to every project card in the Projects grid. Add or remove the ascii-border class on any element to toggle the decorative corner markers.