Spooky is a visually rich theme with animated components throughout: a custom cursor, flickering lights, a swinging lantern, a floating ghost mascot, cobweb corner decorations, and an optional jump-scare spider. Before publishing a personalized version, several accessibility areas need attention. This page covers the key areas to test and the adjustments to make.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/spooky/llms.txt
Use this file to discover all available pages before exploring further.
The README’s accessibility and browser compatibility checklist is a useful companion reference when testing your personalized build. See the Accessibility and Browser Compatibility section in the README.
Reduced motion
Visitors who have enabled the reduce motion preference in their operating system should not be subjected to continuous looping animations. Apply theprefers-reduced-motion media query in assets/main.css to disable CSS-driven animations:
Layout.js and CandleCursor.js, use the useReducedMotion() hook to conditionally disable or simplify transitions:
useReducedMotion() reads the prefers-reduced-motion media query reactively and returns true when the user has requested reduced motion.
Jump-scare spider
TheJumpScareToggle button gives users direct control over the spider animation. To ensure this control is accessible:
- Confirm the toggle button is keyboard-focusable and operable with the
EnterandSpacekeys. - Verify the button’s
aria-labelupdates correctly — it should read"Disable jump scares"when active and"Enable jump scares"when inactive. This is already implemented in the source, but confirm it is preserved in your build. - Consider defaulting
scaresEnabledtofalseinJumpScareContext.jsif your audience is likely to include users who are sensitive to sudden animations.
Custom cursor
CandleCursor completely replaces the system cursor with an animated candle flame. Be aware of the following implications:
- Test that all interactive elements (links, buttons, form inputs) are still visually distinguishable when the custom cursor is active.
CandleCursorscales slightly on hover over clickable elements as a visual cue. - Screen reader users are entirely unaffected by the cursor change — screen readers do not rely on cursor position.
- Keyboard-only users are also unaffected — the custom cursor only responds to
mousemoveevents and has no impact on keyboard focus or tab order. - On touch devices,
CandleCursorreturnsnull(nomousemoveevents are fired on touchscreens), so mobile visitors see the native touch indicator.
Keyboard navigation
Test the following keyboard scenarios before publishing:- All navigation links are reachable by pressing
Tabfrom the top of the page. - The hamburger button opens the navigation drawer when activated with
EnterorSpace. - Once the drawer is open, focus moves into the drawer and all links are reachable by
Tab. - The drawer close button (
X) is keyboard-operable and closes the drawer. - When the drawer closes, focus returns to the hamburger button that opened it, rather than being lost or jumping to the top of the page.
- There are no focus traps outside the open navigation drawer (i.e., focus should not get stuck inside a decoration component).
Color contrast
The pumpkin orange (#FF7518) used for accents and active labels on the charcoal background (#1A1A1D) may not meet the WCAG AA contrast ratio requirement of 4.5:1 for small body text. Recommendations:
- Use ghost white (
#F5F5F5) for all body and paragraph text — it provides strong contrast against charcoal. - Reserve pumpkin orange for decorative purposes and large display text (headings, labels, icons), where the WCAG AA large-text threshold of 3:1 is easier to meet.
- Test specific color pairings with a tool such as the WebAIM Contrast Checker.
Decorative elements
Several visual components exist purely for atmosphere and carry no informational content. Ensure they are hidden from assistive technologies:CobwebCornerSVG elements should havearia-hidden="true".GhostMascotshould havearia-hidden="true"(or a descriptivearia-labelif it is interactive).SwingingLanternshould havearia-hidden="true".FlickeringLightsoverlay elements should havearia-hidden="true".
Image alt text
After replacing screenshots inimages/screenshots/ with your own preview images, ensure every <img> element in the HTML pages has a meaningful alt attribute describing the image content. Empty alt="" is appropriate only for purely decorative images.
Accessibility checklist
Before publishing, work through this list:- Test keyboard navigation throughout all pages
- Check that link and button focus states are clearly visible
- Verify the mobile layout at various screen widths
- Add descriptive
alttext to all images - Test the heading hierarchy (h1 → h2 → h3 with no skipped levels)
- Check color contrast ratios for all text/background combinations
- Test with the operating system’s reduced-motion preference enabled
- Verify all decorative elements have
aria-hidden="true"