Web Accessibility in a Harm-Reduction Context
Harm-reduction portals occupy a unique ethical position on the web. Unlike a news site or e-commerce store, a resource about psilocybin mushrooms is frequently accessed by people who may be in emotionally or cognitively vulnerable states — someone researching for the first time after an unexpectedly intense experience, a caregiver looking for safety information, or a person in ongoing mental-health recovery exploring therapeutic options. The stakes of inaccessible content are therefore higher than average.
Accessibility on Psilobase is not a checkbox exercise. It is a core harm-reduction commitment. If a screen reader user cannot navigate the dosage safety section, they may turn to less reliable sources. If a dyslexic visitor cannot parse a warning about drug interactions, a preventable harm may occur. If someone on a low-end mobile device with poor connectivity cannot load a safety checklist, that gap has real-world consequences.
Who Visits a Psilobase-Type Portal?
The audience for a psilocybin harm-reduction site is unusually diverse:
- First-time researchers — often young adults with no prior experience, possibly anxious, reading on mobile devices late at night.
- People with mental-health conditions — including depression, PTSD, anxiety disorders, who are exploring psilocybin-assisted therapy evidence.
- Older adults — possibly with age-related vision decline, less digital fluency, seeking therapeutic alternatives.
- Neurodivergent users — ADHD, autism spectrum, dyslexia — who benefit enormously from predictable layouts, clear language, and sensory-considerate design.
- Medical professionals and researchers — needing fast, precise navigation to cited content.
- People in crisis or altered states — who need simple, calm, unambiguous presentation with no cognitive overload.
- Non-native English speakers — who rely on clear sentence structure and consistent terminology.
- Users with physical disabilities — keyboard-only users, switch access users, voice control users.
Designing for this audience means designing for everyone. Accessibility improvements on Psilobase simultaneously serve the screen reader user, the person with cognitive fatigue, the non-native speaker, and the person reading on a cracked phone screen with a damaged touchscreen.
WCAG 2.1 AA Standards: Practical Explanations
The Web Content Accessibility Guidelines (WCAG) 2.1 Level AA is the internationally recognised standard adopted by law in many jurisdictions, including the EU Web Accessibility Directive and the UK Equality Act 2010. The guidelines are organised around four principles, remembered by the acronym POUR.
1. Perceivable
All information and user interface components must be presentable to users in ways they can perceive. This means the content is available to at least one of the senses — sight, hearing, or touch — regardless of disability.
- Text alternatives (1.1.1): Every non-text element — images, icons, charts, infographics — must have a text alternative. For a Psilobase species identification photo of Psilocybe cubensis, the alt text should describe identifying features, not just say "mushroom."
- Captions and audio descriptions (1.2.x): Any video content about mushroom cultivation or integration practices must include accurate captions. Pre-recorded audio must include a transcript.
- Adaptable content (1.3.x): The structure and relationships in the content — headings, lists, tables — must be conveyed by more than just visual formatting. A dosage table must use proper
<th>headers, not just bold text in cells. - Distinguishable (1.4.x): Colour must not be the only visual means of conveying information. Text must have sufficient contrast. Audio must be controllable. Content must reflow at 400% zoom without loss of information.
Psilobase practical example: A warning notice using only a red border to signal danger fails this criterion. The warning must also include an icon with appropriate alt text (e.g., "Warning:") and text that stands alone without colour context.
2. Operable
User interface components and navigation must be operable — meaning all functionality must be available via keyboard and users must have enough time to interact with content.
- Keyboard accessible (2.1.x): Every interactive element — the dosage calculator, the species filter, the integration journal form — must be fully operable with a keyboard alone. No keyboard traps. Focus must be visible at all times.
- Enough time (2.2.x): If Psilobase ever implements session timeouts or auto-advancing content, users must be able to extend or disable time limits.
- Seizures and physical reactions (2.3.x): No content should flash more than three times per second. This is especially relevant given that some visitors may have epilepsy exacerbated by psychedelic experiences.
- Navigable (2.4.x): Skip links must be provided. Pages must have descriptive titles. Headings and labels must describe the topic or purpose. Focus order must be logical.
- Input modalities (2.5.x): Touch targets must be large enough (minimum 44×44 CSS pixels). Pointer gestures like swipe-to-filter must have single-pointer alternatives.
Psilobase practical example: The mobile navigation hamburger menu must open and close with the Enter or Space key, trap focus within the open menu, and return focus to the trigger button when closed. This is a common failure on static HTML sites.
3. Understandable
Information and the operation of the user interface must be understandable.
- Readable (3.1.x): The page language must be set (
lang="en"on the<html>element). Unusual words (psilocybin, serotonergic, mycelium) should be explained or linked to a glossary. - Predictable (3.2.x): Navigation must appear in a consistent location across all pages. Components that look the same must behave the same way.
- Input assistance (3.3.x): Forms — including integration journal entries and mood trackers — must provide clear labels, error identification, error suggestions, and the opportunity to review before submission.
Psilobase practical example: If a user enters an invalid dose in the calculator (e.g., a letter instead of a number), the error message must specifically identify the problem ("Please enter a number for the dose field") and suggest a correction, not just highlight the field in red.
4. Robust
Content must be robust enough that it can be reliably interpreted by a wide variety of user agents, including current and future assistive technologies.
- Compatible (4.1.x): HTML must be valid and well-formed. ARIA attributes must be used correctly. Status messages must be programmatically determinable so screen readers can announce them without focus moving.
Psilobase practical example: When the dosage calculator produces a result, the result text must be placed in an aria-live="polite" region so screen reader users hear the updated value without needing to manually find it.
Screen Reader Optimisation for Sensitive Content
Screen readers convert on-screen text and structure to speech or Braille output. The three dominant screen readers — NVDA (Windows, free), JAWS (Windows, commercial), and VoiceOver (Apple, built-in) — each have slightly different behaviours, but all rely on the same underlying accessibility tree exposed by the browser.
Landmark Regions
Landmark regions allow screen reader users to jump directly to sections of a page. Psilobase should implement all of the following landmarks consistently across every page template:
<header>(orrole="banner") — site header, appears once per page.<nav aria-label="Primary navigation">— the main navbar. Use a distinctaria-labelif there are multiple nav elements on a page (e.g., "Footer navigation").<main id="main-content" role="main">— the primary content area. The skip link target.<aside aria-label="Related resources">— sidebar or related content panels.<footer>(orrole="contentinfo") — site footer.
Screen reader users navigating a Psilobase article should be able to jump with a single keystroke from the banner straight to the main content, bypassing the 13-item navigation menu. This is what the skip-link provides visually, and what landmark navigation provides for NVDA/JAWS users pressing the R key (for region).
Heading Hierarchy
NVDA users commonly navigate by heading. The heading hierarchy on every Psilobase page must follow a strict logical order:
<h1>— one per page, the page title (e.g., "Psilocybe Cubensis: Species Profile").<h2>— major sections (e.g., "Identification", "Pharmacology", "Safety Considerations").<h3>— subsections withinh2sections.<h4>–<h6>— used sparingly and never as styling shortcuts.
A heading audit using NVDA's heading list (Insert+F7) or the HeadingsMap browser extension will reveal any broken hierarchy immediately. Skipping from h2 to h4 is a common error that disrupts screen reader navigation.
ARIA Roles for Interactive Components
Native HTML elements should always be preferred over ARIA roles, as they carry implicit semantics. Where custom components are necessary, use ARIA correctly:
- Accordion / FAQ items: use
<details>and<summary>natively, or implement withrole="button",aria-expanded, andaria-controls. - Dosage calculator output: wrap in
<div aria-live="polite" aria-atomic="true">. - Modal dialogs (e.g., a "talk to someone" crisis resource popup): use
role="dialog",aria-modal="true",aria-labelledbypointing to the dialog heading, and trap focus within the modal. - Tab interfaces (e.g., switching between species info panels): use
role="tablist",role="tab",role="tabpanel", with properaria-selectedand keyboard arrow-key navigation.
Sensitive Content and Screen Reader Announcements
Harm-reduction content about drug interactions, contraindications, and crisis resources should use role="alert" or aria-live="assertive" for truly critical safety messages — this interrupts the screen reader's current speech to announce the message immediately. Use this sparingly and only for genuinely urgent information; overuse desensitises users.
Colour Contrast Requirements
WCAG 2.1 Success Criterion 1.4.3 requires that normal text has a contrast ratio of at least 4.5:1 against its background. Large text (18pt / 24px or 14pt bold / 18.67px bold) requires at least 3:1. Interactive UI components and graphical elements require at least 3:1 against adjacent colours under criterion 1.4.11.
Psilobase Brand Green #2c5f2d on White #ffffff
The brand primary colour is #2c5f2d (a deep forest green). Calculating the contrast ratio against white (#ffffff):
- Relative luminance of
#2c5f2d: approximately 0.0595 - Relative luminance of
#ffffff: 1.0 - Contrast ratio: (1.0 + 0.05) / (0.0595 + 0.05) = approximately 9.6:1
This significantly exceeds both AA (4.5:1) and AAA (7:1) thresholds for normal text. The brand green on white is an excellent accessible combination. The challenge arises in interactive states and decorative uses.
Interactive States
Every interactive element must maintain contrast in all states:
- Default link colour:
#2c5f2don white — passes at 9.6:1. - Hover state: If lightened to, say,
#4a8c4b, verify the ratio does not drop below 4.5:1. A lightened green at#4a8c4byields approximately 4.8:1 — just passing. Going lighter than this risks failure. - Focus outline: The default browser focus ring should be supplemented or replaced with a clearly visible custom outline. A solid 3px outline in
#2c5f2dor an offset outline in a high-contrast colour is recommended. - Disabled state: Disabled buttons and inputs are typically exempt from contrast requirements (WCAG explicitly excludes them), but providing visible differentiation from active states via both colour and texture or labelling is good practice.
- Visited links: If visually distinct from unvisited links, the visited state colour must also pass contrast. A purple visited state (
#6b2d8b) on white passes at approximately 8.1:1.
Dark Mode Considerations
If Psilobase implements a dark theme (responding to the prefers-color-scheme: dark media query), contrast requirements apply equally. The brand green #2c5f2d on a dark background such as #1a1a1a yields approximately 4.7:1 — just passing for normal text. For large hero headings, this would pass comfortably. A lighter tint of the green, such as #5fa860, on a dark background of #121212 provides approximately 6.1:1 — a safer margin for body text in dark mode.
Dark mode also benefits users with photophobia, a condition that can be triggered or exacerbated during post-psychedelic sensitivity periods. Providing a respectful dark mode is both an accessibility and a harm-reduction measure for Psilobase's specific audience.
Keyboard Navigation for Interactive Tools
Psilobase's dosage calculators and protocol selectors are among the highest-stakes interactive components on the site. A user relying on keyboard navigation — whether because of a motor disability, a broken touchscreen, or a preference — must be able to use every feature without a mouse.
Tabindex Management
The tab order must match the visual reading order. Do not use positive tabindex values (e.g., tabindex="3") as these override the natural document order and create unpredictable navigation. Use only:
tabindex="0"— to add a non-interactive element (e.g., a custom<div>-based component) to the tab sequence.tabindex="-1"— to remove an element from the tab sequence while keeping it focusable programmatically (useful for managing focus in dialogs and composite widgets).
Dosage Calculator Keyboard Flow
A well-implemented dosage calculator on Psilobase should support the following keyboard interactions:
- Tab to the body weight input field; type a number.
- Tab to the experience level selector; use Up/Down arrow keys to select an option (if implemented as a custom widget) or Tab to the next native
<select>. - Tab to the "Calculate" button; press Enter or Space to submit.
- The result appears in an
aria-liveregion and is announced by screen readers automatically. - Tab continues to any follow-up actions (e.g., "Save to journal", "View safety guidelines for this dose").
Focus Trap in Modals
When a modal dialog opens (e.g., a crisis support resource popup), focus must be trapped inside the modal. This means:
- The first focusable element inside the modal receives focus when it opens.
- Tab and Shift+Tab cycle only through focusable elements within the modal.
- Escape key closes the modal and returns focus to the trigger element.
- Background content is hidden from assistive technologies using
aria-hidden="true"on the rest of the page while the modal is open.
Protocol Selector Keyboard Navigation
If Psilobase implements a multi-step protocol selector (e.g., "Choose your intention", "Select experience level", "Review protocol"), each step must:
- Move focus to the heading of the new step when it appears.
- Announce the step change via
aria-liveor by moving focus programmatically. - Allow backward navigation to review and change previous selections.
- Not require drag-and-drop interactions without providing an alternative.
Alt Text Best Practices for Mushroom Images
Image alt text on Psilobase is not a minor SEO consideration — it is a safety-critical requirement. Species identification images must convey enough information to be genuinely useful to someone who cannot see the image.
Descriptive Images: Species Identification
For a species profile image where visual identification matters, alt text must be detailed and precise:
- Poor alt text:
alt="mushroom" - Acceptable alt text:
alt="Psilocybe cubensis mushroom" - Good alt text for harm reduction:
alt="Psilocybe cubensis: golden-brown convex cap with white stem and blue bruising at the base where the stipe meets the substrate"
The "good" version conveys the key identification features — cap colour, stem characteristics, and the diagnostic blue bruising (a sign of psilocybin/psilocin oxidation) — that a sighted user would assess visually. This information is genuinely important for someone who cannot see the image but is using the species guide for harm-reduction purposes.
Decorative Images
Background textures, divider flourishes, and purely ornamental images should use an empty alt attribute: alt="". This instructs screen readers to skip the image entirely. Never use alt="decorative" — screen readers will speak the word "decorative" unnecessarily.
Emotional and Metaphorical Images
Psilobase may use evocative imagery — fractal patterns, nature photography, abstract artwork — to create an atmosphere of calm and wonder appropriate to the subject matter. Alt text for these images should convey the emotional intent:
- Poor:
alt="fractal image" - Good:
alt="Intricate geometric fractal pattern in blue and gold, evoking the visual complexity reported during psilocybin experiences"
Complex Informational Images
Charts showing dose-response curves, diagrams of serotonin receptor binding, or infographics about mushroom life cycles require more than a brief alt text. Use a combination of a short alt attribute and a longer description:
- Short alt:
alt="Dose-response curve for psilocybin — see description below" - Long description: provided in adjacent text, or linked via
aria-describedbypointing to a following paragraph.
Form Accessibility for Integration Journals and Mood Trackers
Integration journals and mood trackers are among the most sensitive interactive features Psilobase could offer. Users may be in emotionally vulnerable states when completing these forms. Inaccessible form design in this context is not merely inconvenient — it is a barrier to self-care tools at a critical moment.
Label Association
Every form input must have an associated <label>. The association is created either by wrapping the input in the label, or by using for/id matching:
<label for="mood-score">Overall mood today (1–10)</label>
<input type="number" id="mood-score" name="mood-score" min="1" max="10" required aria-describedby="mood-score-hint">
<p id="mood-score-hint" class="form-hint">1 = very low, 10 = excellent</p>
Placeholder text is not a substitute for a visible label. Placeholders disappear on focus and have insufficient contrast in most browsers by default. They also do not consistently work with all screen reader/browser combinations.
Error Messages
Error messages must be:
- Specific: Tell the user exactly which field has an error and why.
- Actionable: Tell the user exactly how to fix it.
- Persistent: Remain visible while the user corrects the error.
- Programmatically associated: Linked to the input via
aria-describedbyoraria-errormessageso screen readers announce the error when focus enters the field.
<input type="text" id="session-date" aria-describedby="session-date-error" aria-invalid="true">
<p id="session-date-error" role="alert">Please enter the date in DD/MM/YYYY format, e.g., 15/06/2026</p>
Required Fields
Required fields must be indicated both visually and programmatically. Do not rely solely on an asterisk (*) — add a note at the top of the form explaining the convention ("Fields marked with * are required") and add the required attribute (or aria-required="true") to each required input.
Grouping with Fieldset and Legend
Related form controls — such as a set of radio buttons for "How would you describe your experience?" — must be grouped with <fieldset> and labelled with <legend>:
<fieldset>
<legend>How would you describe your overall experience?</legend>
<label><input type="radio" name="experience" value="positive"> Positive</label>
<label><input type="radio" name="experience" value="neutral"> Neutral</label>
<label><input type="radio" name="experience" value="challenging"> Challenging</label>
<label><input type="radio" name="experience" value="difficult"> Difficult</label>
</fieldset>
Screen readers will announce "How would you describe your overall experience?" before each radio option, giving the user the essential context they need to make a selection.
Autocomplete and Sensitive Data
Integration journals may contain sensitive personal health information. Do not set autocomplete attributes that cause browsers to offer to save and autofill sensitive journal entries. Use autocomplete="off" for fields containing personal health data, with the explicit intent of protecting user privacy.
Mobile Accessibility
Over 60% of visits to harm-reduction websites occur on mobile devices, often during or shortly after experiences when desktop access is unavailable. Mobile accessibility is therefore a primary — not secondary — concern for Psilobase.
Touch Target Sizes
WCAG 2.5.5 (Level AAA) recommends a minimum touch target size of 44×44 CSS pixels. At Level AA, the minimum is 24×24 pixels (WCAG 2.2, criterion 2.5.8), but the 44×44px guideline should be treated as the de facto standard for Psilobase given its mobile-first audience.
Specific targets to audit on Psilobase:
- Navigation menu items in the collapsed mobile menu — each item should have a minimum 44px touch height.
- Accordion expand/collapse triggers in the FAQ section.
- "Copy" or "Share" buttons on dosage information.
- Form submit buttons — must be wide enough to tap reliably.
- Breadcrumb links — typically rendered small and close together; ensure adequate padding.
- Social sharing icons — if used, must have adequate tap areas even if the icon itself is small.
Zoom Support
The viewport meta tag on Psilobase reads:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
This is correct. What it must not include are user-scalable=no or maximum-scale=1. These attributes disable pinch-to-zoom and are prohibited under WCAG 1.4.4 (Resize Text). Users with low vision depend on pinch-to-zoom; disabling it is one of the most impactful mobile accessibility failures a site can make. WCAG 1.4.4 requires that text can be resized up to 200% without loss of content or functionality. Pinch-to-zoom is the primary mechanism mobile users rely on to achieve this.
Orientation Lock
Do not lock the screen orientation. Users with physical disabilities may have their device mounted in a fixed position (landscape or portrait). WCAG 1.3.4 requires that content does not restrict its view to a single display orientation unless a particular orientation is essential. No content on Psilobase meets the "essential" exemption.
Pointer Coarse (Touch) Media Query
CSS can detect touch-primary devices and adjust UI accordingly:
@media (pointer: coarse) {
.nav-menu a {
padding: 12px 16px; /* Increase touch target */
}
.btn {
min-height: 44px;
min-width: 44px;
}
}
This ensures touch users get enlarged interactive targets while mouse users see a more compact UI appropriate for precise pointing.
Testing Tools and Methodologies
Automated tools catch approximately 30–40% of WCAG failures. The remaining 60–70% require manual testing. A comprehensive accessibility audit for Psilobase must combine both approaches.
Automated Testing Tools
- axe DevTools (browser extension by Deque): The most accurate automated checker. Install in Chrome or Firefox, open the browser DevTools, and run a scan on any Psilobase page. axe categorises issues by severity and links to detailed explanations. The free version catches a substantial portion of failures; the Pro version adds guided tests and full-page scanning.
- WAVE (WebAIM): A browser extension that overlays visual indicators directly on the page, making it easy to see where errors and warnings occur in context. Particularly good at identifying missing alt text, empty links, and contrast failures.
- Lighthouse (built into Chrome DevTools): Run an accessibility audit from the Lighthouse tab. Provides a score out of 100 and a list of specific failures. Note that the score is weighted and a 100/100 Lighthouse score does not guarantee full WCAG compliance — it only means the automated checks passed.
- Pa11y: A command-line tool and CI/CD integration. Run
pa11y https://psilobase.com/safety/to get a list of WCAG failures that can be incorporated into a build pipeline to prevent regressions. - Colour Contrast Analyser (by TPGi, free desktop app): Pick any two colours on-screen with an eyedropper tool and get the exact contrast ratio with a pass/fail verdict against AA and AAA thresholds.
Manual Testing: NVDA Screen Reader Walkthrough
NVDA (NonVisual Desktop Access) is the most widely used free screen reader. To test a Psilobase page with NVDA:
- Download and install NVDA from nvaccess.org. It is free.
- Open Firefox (preferred) or Chrome. NVDA works best with Firefox for web testing.
- Navigate to a Psilobase page, e.g., a species profile.
- Press NVDA+F7 (where NVDA key is Insert by default) to open the Elements List. Check headings — is the hierarchy correct? Are there descriptive h1, h2, h3 elements?
- Press H to move forward through headings, Shift+H to move backward. Does the reading order match the visual order?
- Press F to move through form fields. Do all fields announce their labels?
- Press K to navigate links. Do all links have descriptive text? (Not just "click here" or "read more".)
- Press G to navigate images. Does every informational image have a useful alt text?
- Tab through interactive elements (calculator, forms, nav) with NVDA active. Is each element's role, name, and state announced correctly?
- Trigger form errors and confirm they are announced.
Keyboard-Only Testing
Disconnect or ignore the mouse and navigate through the entire Psilobase site using only the keyboard. Use Tab, Shift+Tab, Enter, Space, and arrow keys. Document every moment where you cannot complete a task or where focus is lost or invisible.
Zoom Testing
In the browser, zoom to 200% and then 400%. At 400% zoom, WCAG 1.4.10 (Reflow) requires content to reflow to a single column without requiring horizontal scrolling at a viewport width of 320 CSS pixels (equivalent to the full-width view at 400% zoom on a 1280px-wide screen). Test all Psilobase page templates at this zoom level.
How Accessibility Helps Harm Reduction Reach Diverse Communities
Harm-reduction information historically concentrated in academic and professional settings has failed to reach the communities with the greatest need. Web accessibility is one of the most practical tools available to break down those barriers.
Multilingual Users
While Psilobase primarily publishes in English, the use of clear language, defined technical terms, consistent terminology, and logical sentence structure directly assists non-native English speakers. Accessibility features that support multilingual use include:
- Setting the correct
langattribute on the<html>element — this ensures text-to-speech engines use the correct language pronunciation and can be especially important if someone uses an auto-translate tool alongside a screen reader. - Defining specialist terminology (psilocybin, serotonin, mycelium, integration) in plain language on first use.
- Using short sentences and active voice, which survive machine translation more reliably than complex passive constructions.
- Consistent navigation labels across all pages — if a non-English speaker memorises "Safety" as a navigation destination, it must always be "Safety", not "Safety Information" on some pages and "Safe Use" on others.
Low-Literacy Users
WCAG 3.1.5 (Level AAA) recommends providing reading comprehension support for content that requires a higher reading ability than lower secondary education. For Psilobase, this means:
- Providing a glossary of scientific terms (already a priority given the pharmacology content).
- Offering summary boxes at the start of long articles.
- Using numbered lists for step-by-step safety information rather than dense paragraphs.
- Including visual aids (with proper alt text) to support text-based content.
Users in Crisis States
Someone experiencing a difficult psychedelic experience — or helping another person through one — needs information fast, under stress, with potentially reduced cognitive capacity. Accessibility for these users means:
- Crisis resources (e.g., Fireside Project hotline) must be in a consistent, prominent, easily findable location on every page.
- The most important safety information must be available above the fold, not behind multiple scrolls or tabs.
- Plain language with short sentences reduces cognitive load under stress.
- High contrast and large text are easier to read when visual processing is altered.
- Avoiding auto-playing audio or video, which can be startling and distressing.
Elderly Users
Research interest in psilocybin for age-related depression and end-of-life anxiety is growing. Older adults may access Psilobase. Accessibility features with disproportionate benefit for elderly users include large text options, high contrast, large touch targets, straightforward navigation without complex interactions, and content that does not require the user to hover to access information.
Neurodiversity Considerations
Neurodivergent users — including those with ADHD, autism spectrum conditions, dyslexia, and related differences — make up a significant portion of the population and are overrepresented in communities interested in psychedelics for therapeutic self-exploration. Designing inclusively for neurodivergent users is essential for Psilobase.
ADHD: Attention and Distraction
Users with ADHD may struggle with long, undivided content, auto-playing media, animation, and complex navigation. Psilobase accommodations for ADHD:
- Clear visual hierarchy: Distinct headings, bullet points, and summary boxes help users scan and find what they need without reading everything.
- No auto-playing content: Auto-play video or audio can cause immediate abandonment and distress for users with attention regulation difficulties.
- Reduced animation: Implement the
prefers-reduced-motionmedia query to disable animations, parallax scrolling, and transitions for users who have requested reduced motion in their OS settings:@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } } - Short paragraphs: Keep paragraphs to 3–5 sentences. Use white space generously.
- Consistent, predictable layout: Navigation, footers, and content zones must appear in the same position on every page.
- Progress indicators: For multi-step tools (protocol selectors, calculators), show a clear progress indicator so users know where they are.
Autism: Sensory Sensitivity and Predictability
Autistic users may have heightened sensory sensitivity to visual complexity, unexpected changes, and social/ambiguity in content. Psilobase accommodations:
- Predictable navigation: Never move navigation elements or change their labels between pages.
- Literal and unambiguous language: Avoid idioms, metaphors, or sarcasm in safety-critical content. "This dose is not recommended" is clearer than "This dose might not be for everyone."
- No unexpected changes of context: Do not open links in new tabs without warning, or redirect users without explanation. If a link opens in a new tab, indicate this with text or an icon with alt text.
- Calm visual design: Avoid busy, highly saturated, or rapidly changing visual elements. The Psilobase brand aesthetic — earthy greens and natural imagery — is naturally well-suited here.
- Explicit structure: Make all structure visible. If a page has four sections, say so at the top: "This article covers: Identification | Pharmacology | Safety | Integration."
Dyslexia: Fonts, Spacing, and Line Length
Dyslexic users benefit from typographic choices that reduce visual confusion between similar characters and improve reading flow. Psilobase typographic recommendations:
- Font choice: Use a sans-serif font with clear character differentiation. Avoid fonts where lowercase "l", uppercase "I", and the numeral "1" look similar. Good choices include Open Sans, Atkinson Hyperlegible (designed specifically for low-vision and dyslexic users), or similar humanist sans-serifs.
- Line spacing: Set
line-heightto at least 1.5 (WCAG 1.4.8 recommends 1.5 for body text). This is especially important given Psilobase's long-form articles. - Letter spacing: A slight increase in letter spacing (
letter-spacing: 0.05em) can reduce letter confusion for dyslexic readers without affecting aesthetics significantly. - Line length: WCAG 1.4.8 recommends a maximum of 80 characters per line. Psilobase's container width should be constrained so that body text does not exceed approximately 75 characters per line on desktop.
- Left-align text: Justify (
text-align: justify) creates uneven word spacing that is particularly difficult for dyslexic readers. Usetext-align: leftfor body text. - Avoid all-caps text: All-caps text removes the distinctive word shapes that dyslexic readers use as reading cues. Use
text-transform: uppercasein CSS rather than typing in capitals, so screen readers still read the original case.
Low-Vision Users and Psychedelic Portals
Low-vision users — those with significant visual impairment that is not fully corrected by glasses and who do not use a screen reader — represent a large and often overlooked accessibility audience. Estimates suggest 253 million people worldwide have vision impairment, with the vast majority having low vision rather than total blindness.
Large Text and Zoom Compatibility
Low-vision users frequently operate browsers with default zoom levels of 150–400%. All Psilobase layouts must be responsive at these zoom levels:
- Use relative font units (
remorem) rather thanpxfor font sizes. This ensures text scales with the user's browser font size preference. - The base font size should be set in
remon thebody:font-size: 1rem(do not override the 16px browser default without good reason). - Ensure all content reflows to a single column at 320px viewport width (WCAG 1.4.10).
- Test with text-only zoom enabled in Firefox (View > Zoom > Zoom Text Only) as well as full-page zoom.
High Contrast Mode
Windows High Contrast Mode (now called "Contrast Themes" in Windows 11) overrides all site colours with system-defined high-contrast colours. Many Psilobase design decisions may appear broken in this mode:
- Background images may be hidden — any informational content conveyed only by a background image will be lost. Always ensure informational content is also in foreground text.
- Custom focus outlines defined in CSS may be hidden. Test keyboard navigation in High Contrast Mode — the browser's default focus styling will take over, and it may be more or less visible depending on the theme.
- CSS
borderandoutlinedeclarations are generally respected in High Contrast Mode;box-shadowis not. - Use the
forced-colors: activemedia query to make specific adjustments for forced-colour environments.
Test Psilobase using the Windows "Aquatic" or "Desert" High Contrast themes to verify that all content remains perceivable and all interactive elements are visible.
Psychedelic-Specific Low-Vision Considerations
Some visitors may experience temporary visual disturbances (visual snow, afterimages, HPPD) following psychedelic use. These users may find:
- High-frequency patterns (tight stripes, fine grids) particularly uncomfortable — avoid using these as decorative backgrounds.
- Auto-playing animations more distressing than neurotypical users would — reinforcing the need for
prefers-reduced-motionsupport. - High contrast and large text more useful even at standard zoom levels.
- Simple, clean layouts less visually overwhelming than dense multi-column designs.
Practical Accessibility Audit Checklist
The following table provides a structured audit checklist for Psilobase. Each row corresponds to a WCAG success criterion relevant to the site's specific content and functionality.
| Category | Criterion | WCAG Ref | Priority | Test Method | Status |
|---|---|---|---|---|---|
| Images | All informational images have descriptive alt text | 1.1.1 | Critical | WAVE / manual inspection | Audit required |
| Images | Decorative images have empty alt="" attribute | 1.1.1 | High | Code inspection | Audit required |
| Colour | Body text meets 4.5:1 contrast ratio | 1.4.3 | Critical | Colour Contrast Analyser | Brand green passes |
| Colour | Large text meets 3:1 contrast ratio | 1.4.3 | Critical | Colour Contrast Analyser | Verify hero headings |
| Colour | UI components meet 3:1 contrast ratio | 1.4.11 | High | Colour Contrast Analyser | Check buttons, inputs |
| Colour | Colour is not the only means of conveying information | 1.4.1 | High | View in greyscale | Check error states |
| Zoom | Content reflows at 400% zoom (320px width) | 1.4.10 | Critical | Browser zoom test | Test all templates |
| Zoom | No user-scalable=no in viewport meta | 1.4.4 | Critical | Code inspection | Currently passes |
| Keyboard | All interactive elements keyboard accessible | 2.1.1 | Critical | Keyboard-only walkthrough | Audit required |
| Keyboard | No keyboard traps | 2.1.2 | Critical | Keyboard-only walkthrough | Check modals/dropdowns |
| Focus | Focus indicator visible on all interactive elements | 2.4.7 | Critical | Keyboard-only walkthrough | Audit required |
| Focus | Focus order is logical and matches reading order | 2.4.3 | High | Keyboard-only walkthrough | Audit required |
| Navigation | Skip link present and functional | 2.4.1 | High | Keyboard test | Present in template |
| Navigation | Page titles are unique and descriptive | 2.4.2 | High | Review title tags | Audit required |
| Navigation | Link text is descriptive and meaningful out of context | 2.4.4 | High | NVDA link list / WAVE | Audit required |
| Headings | Single h1 per page, logical hierarchy (h2, h3...) | 1.3.1 / 2.4.6 | High | HeadingsMap extension | Audit required |
| Landmarks | All landmark regions present (header, nav, main, footer) | 1.3.6 | High | NVDA landmark navigation | Present in template |
| Forms | All form inputs have associated visible labels | 1.3.1 / 3.3.2 | Critical | Code inspection / NVDA | Audit required |
| Forms | Error messages are specific and actionable | 3.3.1 / 3.3.3 | High | Manual testing | Audit required |
| Forms | Required fields indicated programmatically and visually | 3.3.2 | High | Code inspection | Audit required |
| Language | lang attribute set on html element | 3.1.1 | High | Code inspection | lang="en" set |
| Mobile | Touch targets minimum 44×44px | 2.5.5 (AAA) / 2.5.8 (AA) | High | DevTools responsive mode | Audit required |
| Motion | prefers-reduced-motion respected | 2.3.3 (AAA) | High | OS setting + code review | Implement in CSS |
| ARIA | ARIA attributes used correctly, no invalid roles | 4.1.2 | High | axe DevTools | Audit required |
| ARIA | Dynamic content changes announced via aria-live | 4.1.3 | High | NVDA test + code review | Audit required |
Frequently Asked Questions
Why does accessibility matter more on a psychedelics portal than on other websites?
The audience for harm-reduction content frequently includes people who are in vulnerable emotional or cognitive states — whether researching before an experience, integrating after one, or supporting a friend. Inaccessible content in this context is not just inconvenient; it can lead someone to turn to less reliable sources for safety-critical information. Additionally, many people drawn to psychedelic research are neurodivergent, have mental health conditions, or have visual impairments — all groups who benefit directly from accessible design. Accessibility on Psilobase is an ethical extension of the harm-reduction mission itself.
What is the contrast ratio of the Psilobase brand green (#2c5f2d) on white, and does it pass WCAG AA?
The brand green #2c5f2d on white #ffffff achieves a contrast ratio of approximately 9.6:1. This exceeds both the WCAG AA threshold of 4.5:1 for normal text and the AAA threshold of 7:1. The brand colour is therefore an excellent accessible choice for body text. However, interactive states (hover, active) must be individually verified, as lightening the green to create visual feedback can reduce the contrast ratio towards borderline values.
Is a Lighthouse accessibility score of 100 sufficient to claim WCAG compliance?
No. A Lighthouse score of 100 confirms that automated checks have passed, but automated tools catch only approximately 30–40% of WCAG failures. Issues that require human judgement — such as whether a form label is meaningful, whether heading hierarchy makes logical sense, or whether a link's destination is clear in context — are not detectable by Lighthouse. WCAG compliance requires manual testing including screen reader evaluation, keyboard-only navigation testing, and content review by someone familiar with the guidelines. Lighthouse is a useful starting point and regression tool, not a compliance certification.
What ARIA roles are needed for the dosage calculator to be accessible?
The dosage calculator requires several ARIA patterns to be fully accessible. Each input field must have an associated <label>. The calculate button should be a native <button> element. The result output area must be wrapped in a live region: <div role="status" aria-live="polite" aria-atomic="true">. If there are error states, each error must be linked to its input via aria-describedby and the input marked with aria-invalid="true". If the calculator uses a multi-step flow, focus must be managed programmatically to move to the next step's heading when it appears. If a custom slider is used for dose selection, it must implement the full ARIA slider pattern with role="slider", aria-valuemin, aria-valuemax, aria-valuenow, and keyboard support for arrow keys.
How should species identification images be described in alt text for blind users?
Alt text for species identification images should describe the visually distinctive and safety-relevant features of the mushroom. For Psilocybe cubensis, a good alt text would be: "Psilocybe cubensis: golden-brown convex cap approximately 2–8cm diameter, white fibrous stem with persistent ring, gills close and grey-brown, blue bruising visible at stem base — a key identifying characteristic." For toxic lookalikes, the alt text should note distinguishing features that differentiate them from psilocybin species. The purpose is to convey the information a visual user would use to assess identification, not merely to name the subject. For complex comparative images or spore print photographs, a long description linked via aria-describedby or provided in the body text is more appropriate than attempting to compress all information into a single alt attribute.
How does the prefers-reduced-motion media query work and where should it be applied on Psilobase?
The prefers-reduced-motion CSS media query detects whether the user has enabled "Reduce Motion" in their operating system settings (available on macOS, iOS, Android, Windows). When active, the query value is reduce. You apply it in CSS to disable or simplify animations for users who are sensitive to motion — including people with vestibular disorders, ADHD, post-psychedelic visual sensitivity, or epilepsy. On Psilobase, it should be applied to: page transition animations, scroll-triggered animations on article sections, any parallax effects on hero images, the hamburger menu open/close transition, accordion expand/collapse transitions, and any decorative particle or floating-element animations. The safest implementation is a global reset: @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } }. This does not disable all motion — it makes it essentially instant — which preserves functionality while eliminating the perceptual experience of motion.
What typographic changes most benefit dyslexic readers on a long-form content site like Psilobase?
The most impactful typographic changes for dyslexic readers are: (1) Generous line spacing — set line-height: 1.6 or higher for body text; (2) Left-aligned text — never justified text, which creates uneven word spacing that is particularly difficult for dyslexic readers; (3) Adequate letter spacing — letter-spacing: 0.05em reduces letter confusion; (4) Short line length — constrain body text to 65–75 characters per line using a maximum container width or max-width: 65ch; (5) Humanist sans-serif fonts — fonts with clear differentiation between similar characters (b/d, p/q, l/I/1); (6) Sufficient font size — minimum 16px / 1rem for body text; (7) Adequate paragraph spacing — at least 1.5× the line height of white space between paragraphs; (8) Short paragraphs — 3–5 sentences maximum. These changes benefit the full spectrum of readers, not only those with dyslexia, making them low-cost, high-impact improvements for Psilobase.
What mobile accessibility issues are most commonly found on static HTML sites like Psilobase?
The most common mobile accessibility failures on static HTML sites are: (1) user-scalable=no or maximum-scale=1 in the viewport meta tag — this disables pinch-to-zoom and directly violates WCAG 1.4.4; (2) Touch targets smaller than 44×44px — commonly affects navigation links, breadcrumbs, footer links, and icon buttons; (3) Tap targets placed too close together — even if individually large enough, adjacent interactive elements without sufficient spacing cause accidental activations; (4) Horizontal scrolling — when content does not reflow correctly at small viewport widths; (5) Auto-playing media — particularly intrusive on mobile where the user may be in a quiet environment; (6) Sticky headers that consume too much screen height at 200% zoom — leaving insufficient space for content; (7) Complex hover interactions with no touch equivalent — information visible only on hover is completely inaccessible on touchscreens. Psilobase's simple, mostly-static HTML architecture is advantageous here — the risk surface is smaller than for complex JavaScript-heavy SPAs.
How should Psilobase handle accessibility for users who may be in an altered cognitive state?
This is a harm-reduction-specific consideration that goes beyond standard WCAG requirements. For users who may be experiencing cognitive alteration — whether during a psychedelic experience, in the difficult hours after one, or in an integrated but emotionally raw state — the following design principles apply: Simplify language to the shortest clear statement possible. Emergency or safety resources should be available without scrolling on every page. Avoid time-pressured interactions — no countdown timers, no "session expiring" warnings. Use calm, grounding visual design — earthy tones, natural imagery, generous white space, nothing jarring or chaotic. Ensure the most critical safety information (contraindications, crisis contacts, what to do if a trip goes wrong) is always accessible from a single click or tap anywhere on the site. Consider a "I need help now" button in a persistent, consistent location. Reduce visual noise — avoid busy layouts, multiple simultaneous moving elements, or overwhelming amounts of text on a single screen. These principles align with trauma-informed design and with the harm-reduction values Psilobase represents.