paco.org

Learn. Teach. Tech.

[EI-6.1 — Experience Baseline & Accessibility Audit]

EI-6.1 — Experience Baseline & Accessibility Audit

Status: COMPLETE Date: 2026-08-08

Scope

Repository-level audit of the shared site experience, concentrating first on _layouts/default.html, _includes/meta.html, style.scss, and the navigation/terminal behaviors inherited by the corpus.

This is a code and structure audit. It does not claim to replace browser, screen-reader, or human usability testing.

Baseline strengths

  • Document language is explicitly declared (lang="en-US").
  • A viewport meta element exists.
  • Primary navigation has an accessible label.
  • The terminal input has an accessible label and is keyboard-operable.
  • Core content is rendered as HTML and does not depend on JavaScript to exist.
  • Images are globally constrained to the available width.
  • The main layout already includes mobile-specific rules.
  • The site uses visible text labels rather than icon-only primary navigation.

Findings

Blockers

Keyboard and assistive-technology users must traverse the masthead/navigation before reaching the main content on every page.

Action: add a visible-on-focus Skip to main content link targeting #main and style it so it cannot be obscured by the CRT overlay.

B2 — Motion effects do not honor reduced-motion preference

The global CRT scan/flicker layer and blinking terminal-style decoration animate continuously. The baud-rate display also changes automatically through JavaScript.

Action: add prefers-reduced-motion: reduce handling that disables decorative animation and smooth scrolling. Make the baud-rate animation settle immediately or remain static for reduced-motion users.

Important

I1 — Focus treatment relies too heavily on hover styling

Links have strong hover/active treatment, but the shared stylesheet does not establish an equally explicit :focus-visible system for links, navigation, and the terminal input.

Action: define a consistent high-visibility keyboard focus indicator that remains legible against dark panels and decorative overlays.

I2 — Viewport unnecessarily restricts user zoom behavior

maximum-scale=1.0 is present in the viewport declaration. Modern mobile accessibility should not impose an artificial maximum zoom scale.

Action: simplify viewport to width=device-width, initial-scale=1.

I3 — Main landmark uses redundant legacy ARIA

<div id="main" role="main"> works, but a semantic <main id="main"> is clearer and removes unnecessary ARIA.

Action: replace the wrapper with <main> while preserving the existing ID and classes.

I4 — Decorative CRT overlay sits at very high z-index

body:before uses z-index: 999. It has pointer-events: none, so it does not intercept clicks, but it can visually interfere with focus indicators and text clarity.

Action: ensure focus indicators and skip-link presentation render above the decorative layer, and disable the layer under reduced motion/high-sensitivity presentation where appropriate.

I5 — Terminal interaction is discoverable visually but has weak assistive feedback

Terminal output changes dynamically after commands, but the output region is not identified as a live/status region. A screen-reader user may not be informed when command output changes.

Action: use a restrained live-region strategy for terminal output or explicitly treat the terminal as decorative/optional. Avoid turning every line into noisy announcements.

I6 — Heading presentation forces uppercase site-wide

All h1h6 are visually transformed to uppercase and carry relatively wide letter spacing. This supports the retro identity but can reduce scanning/readability, especially for long headings.

Action: retain the retro treatment selectively for structural/interface headings; reduce forced uppercase/letter spacing for long-form article headings and subordinate content where readability benefits.

Refinements

default.html emits a canonical link directly and _includes/meta.html emits another canonical link. This is not primarily an accessibility defect, but it is unnecessary head duplication.

Action: keep one canonical implementation, preferably the absolute_url version in meta.html.

R2 — Google Fonts dependency should fail gracefully

The site loads JetBrains Mono from Google Fonts. The CSS font stack should remain fully usable if that request is blocked or slow.

Action: verify fallback stacks and avoid layout assumptions that depend on the webfont loading.

R3 — Navigation density deserves narrow-screen review

Seven primary navigation buttons are rendered in the masthead. Mobile rules allow wrapping, but the density can still dominate the first viewport.

Action: evaluate hierarchy in EI-6.4 before introducing a hamburger menu. Prefer a simple resilient HTML solution over JavaScript navigation unless testing demonstrates a need.

R4 — Decorative status bar creates repeated nonessential content

DIALING, NODE 80, SYSOP, and ANSI ON contribute strongly to identity but also add repeated chrome.

Action: retain if it remains visually subordinate; consider aria-hidden="true" for purely decorative status labels after confirming no meaningful information is lost.

EI-6 implementation backlog

EI-6.2

  • improve long-form heading readability
  • review article measure and spacing
  • distinguish interface typography from reading typography
  • verify font fallbacks

EI-6.3

  • add skip link
  • add :focus-visible system
  • remove maximum zoom restriction
  • convert main wrapper to semantic <main>
  • implement reduced-motion behavior
  • improve terminal assistive behavior
  • validate narrow-screen navigation

EI-6.4

  • evaluate seven-item primary navigation hierarchy
  • ensure History, The Loudmouth, subjects, archive, and portfolio remain discoverable without crowding primary navigation
  • preserve Writing rather than reintroducing Blog

EI-6.5

  • audit image alt text contextually rather than enforcing filename-based text
  • distinguish scans/artifacts from decorative imagery
  • retain privacy/media exclusions established in EI-1

EI-6.6

Automate only objective invariants. Strong candidates:

  • <html lang> remains present
  • viewport remains zoom-friendly
  • skip link and main target remain present
  • reduced-motion CSS remains present
  • primary navigation keeps an accessible label
  • known accessibility regressions are rejected

Do not attempt to automate subjective alt-text quality or visual hierarchy with simplistic string checks.

Decision

EI-6.1 is complete. No architectural blocker prevents implementation. The highest-value next work is EI-6.2 and EI-6.3: improve reading hierarchy while immediately correcting keyboard, zoom, semantic-main, and reduced-motion issues.

PACO.ORG BBS v1.2.0 (ANSI ON)
Optional navigation terminal. Type help and press Enter for available commands.