Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/magical/llms.txt

Use this file to discover all available pages before exploring further.

The Magical Portfolio’s visual identity is built entirely on a custom Tailwind CSS design system. A palette of six mystic-* color tokens defines every surface, accent, and glow in the UI. Three carefully chosen typefaces reinforce the contrast between ancient mysticism and modern engineering. Glow effects — achieved with text-shadow and box-shadow utilities — make the dark background feel alive without resorting to heavy image assets.

Color Tokens

All six tokens are registered under the mystic key in tailwind.config.js and available as Tailwind utility classes (bg-*, text-*, border-*, from-*, etc.) throughout the codebase.
TokenHexUsage
mystic-950#0a0612Page background — the darkest value, applied to body and BackgroundEffects
mystic-900#14091fCard backgrounds, form inputs, tooltip surfaces
mystic-800#2d1b4eBorders, subtle hover backgrounds, gradient midpoints
mystic-violet#a855f7Primary accent — sigil strokes, active nav indicator, focus rings
mystic-teal#2dd4bfSecondary accent — code text, links, cursor glow, skill orb highlights
mystic-mint#a7f3d0Heading text, logo wordmark, highlight color for selected text
The palette steps from near-black (mystic-950) through deep purple (mystic-800) to vivid violet and teal accents, keeping contrast ratios accessible against the dark background while maintaining the arcane aesthetic. mystic-mint is intentionally pale — it reads as “glowing white” on dark surfaces — and is used only for the most prominent typographic elements.

Typography

Three font families are loaded from Google Fonts at the top of assets/main.css and mapped to Tailwind’s standard utility classes:
Tailwind ClassFamilyWeight(s) LoadedRole
font-serifCormorant Garamond400, 500, 600, 700 (+ italic 400, 500)Headings, decorative text, card titles, the hero name
font-sansInter300, 400, 500, 600Body copy, UI labels, form elements, descriptions
font-monoJetBrains Mono400, 500Code blocks, category labels, route subtitles, timestamps
Cormorant Garamond’s high contrast between thick and thin strokes gives headings an engraved, arcane character. Inter’s geometric neutrality keeps body text highly readable at small sizes. JetBrains Mono’s wide letter-spacing makes category labels and timestamps feel like they were stamped rather than typed. The Tailwind base layer maps these families directly:
/* In assets/main.css (compiled Tailwind output) */
html { font-family: Inter, sans-serif; }

h1, h2, h3, h4, h5, h6 {
  font-family: Cormorant Garamond, serif;
  letter-spacing: 0.025em;
  color: rgb(241 245 249);   /* slate-100 */
}

code, kbd, samp, pre {
  font-family: JetBrains Mono, monospace;
}

Glow Effects

The .text-glow utility class is the signature effect of the design system. It applies a dual-layered text shadow that bleeds violet and teal light outward from any text element, simulating a bioluminescent glow against the dark background.
.text-glow {
  text-shadow: 0 0 10px rgba(168,85,247,0.5), 0 0 20px rgba(45,212,191,0.3);
}
The inner shadow (10 px radius, violet at 0.5 opacity) defines the tight corona directly around the letterforms. The outer shadow (20 px radius, teal at 0.3 opacity) creates a softer, cooler penumbra that bleeds into the background. The combination reads as “glowing” rather than blurry because the tight inner layer preserves legibility. text-glow is applied to all major page headings (h1.font-serif.text-mystic-mint.text-glow) and the Navigation logo on hover.

Box Shadow Patterns

Cards and interactive surfaces use box-shadow for the same glow technique. Common patterns used in the codebase:
/* Violet card glow — used on Grimoire project cards (hover) */
box-shadow: 0 0 30px rgba(168, 85, 247, 0.2);

/* Teal card glow — used on Grimoire card back face */
box-shadow: 0 0 30px rgba(45, 212, 191, 0.1);

/* Intense violet — used on the Affinities center orb */
box-shadow: 0 0 50px rgba(168, 85, 247, 0.2);

/* Teal cursor dot glow */
box-shadow: 0 0 10px #a7f3d0, 0 0 20px #2dd4bf;

/* Skill orb teal pinpoint */
box-shadow: 0 0 8px #2dd4bf;
All box-shadow values are written as Tailwind arbitrary values (shadow-[0_0_30px_rgba(168,85,247,0.2)]) directly in JSX, keeping them co-located with the component they style.

Tailwind Configuration

The mystic-* tokens and font stacks are declared in tailwind.config.js under theme.extend so they augment — rather than replace — Tailwind’s default palette and font families:
// tailwind.config.js
module.exports = {
  content: ["./index.html", "./src/**/*.{js,jsx,ts,tsx}"],
  theme: {
    extend: {
      colors: {
        mystic: {
          950:    "#0a0612",
          900:    "#14091f",
          800:    "#2d1b4e",
          violet: "#a855f7",
          teal:   "#2dd4bf",
          mint:   "#a7f3d0",
        },
      },
      fontFamily: {
        serif: ["Cormorant Garamond", "serif"],
        sans:  ["Inter", "sans-serif"],
        mono:  ["JetBrains Mono", "monospace"],
      },
    },
  },
  plugins: [],
};
The named variants (violet, teal, mint) sit alongside the numeric shade steps (950, 900, 800) inside the same mystic object, so Tailwind generates utilities like text-mystic-violet and bg-mystic-950 with identical specificity.

Customizing the Theme

To adjust or extend the color scale, update the mystic object in tailwind.config.js. For example, adding a lighter accent shade:
mystic: {
  950:    "#0a0612",
  900:    "#14091f",
  800:    "#2d1b4e",
  700:    "#4a2878",   // ← new mid-purple for hover states
  violet: "#a855f7",
  teal:   "#2dd4bf",
  mint:   "#a7f3d0",
},
After saving, restart the Vite dev server (vite dev) so Tailwind’s JIT scanner picks up the new token and generates the corresponding CSS utilities.
Tailwind uses JIT (Just-In-Time) mode and only generates CSS for class names it finds in your JSX/HTML source files. If you add a new mystic-* token to tailwind.config.js but never reference it in a component (e.g. bg-mystic-700), no CSS will be emitted for it. Always add at least one usage in your source to see the token appear in the compiled stylesheet.

Build docs developers (and LLMs) love