Skip to content

Accessibility

SilkCircuit is designed with accessibility as a core principle.

WCAG AA Compliance

Contrast is measured rather than asserted. The test suite computes every ratio from the WCAG formula and fails if any pair falls under its bar, and :checkhealth silkcircuit reports the text numbers for whichever variant you are running.

CriterionRequirementSilkCircuit
Normal text4.5:1 minimumGated for every text color on the page, the float body and the cursorline
Large text (18pt+)3:1 minimumCovered by the stricter 4.5:1 text bar
UI elements3:1 minimumGated for borders, gutters, indent guides and the ANSI normals
Graphics3:1 minimumA design target, not machine-checked

:checkhealth silkcircuit runs the narrower version of the text check, measuring each distinct text color against the active variant's own background. On neon it reports 19 colors checked and no issues.

Variant Accessibility

Each variant is optimized for different conditions:

Neon

Full WCAG AA compliance with standard dark-theme contrast.

Vibrant

Enhanced contrast for work in various lighting conditions.

Soft

Optimized for extended use. Reduces eye strain while maintaining readability.

Glow

Maximum contrast with pure neon on ultra-dark backgrounds. Ideal for:

  • Low-light environments
  • OLED displays
  • Users who prefer high contrast

Dawn

Light theme optimized for:

  • Bright environments
  • Daytime work
  • Users who prefer light themes
  • Outdoor laptop use

Testing Tools

Neovim

vim
:SilkCircuitContrast

Validates all highlight group contrast ratios against WCAG AA standards.

Web

bash
# Install axe-core CLI
npm install -g @axe-core/cli

# Test your implementation
axe-cli --tags wcag2a,wcag2aa

Manual Testing

ToolPurpose
Contrast CheckerVerify specific color pairs
Colorblind SimulatorTest color blindness scenarios
Screen readerVerify content accessibility

Keyboard Navigation

All SilkCircuit implementations should support:

  • Focus indicators: Cyan glow (#80ffea) clearly shows focus state
  • Tab order: Logical flow through interactive elements
  • Skip links: Available for screen reader users
  • No keyboard traps: Users can always navigate away

Focus Indicator Style

css
.sc-focusable:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--sc-cyan);
}

.sc-focusable:focus-visible {
  box-shadow:
    0 0 0 2px var(--sc-cyan),
    0 0 8px var(--sc-cyan);
}

Screen Reader Support

Requirements

  • Semantic HTML structure
  • Proper ARIA labels and roles
  • Alternative text for meaningful graphics
  • Color never conveys information alone

Color Blindness Considerations

SilkCircuit uses shapes and patterns alongside color:

IndicatorColorAdditional Cue
ErrorRedWarning icon, text label
SuccessGreenCheckmark, text label
WarningYellowCaution icon, text label
Git addGreen+ prefix
Git deleteRed- prefix

Motion Sensitivity

For users with vestibular disorders:

css
@media (prefers-reduced-motion: reduce) {
  .sc-animated {
    animation: none;
    transition: none;
  }
}

All SilkCircuit animations respect this media query.

Checklist

Development

  • [ ] All text meets 4.5:1 contrast ratio
  • [ ] Interactive elements have 3:1 contrast
  • [ ] Focus indicators are clearly visible
  • [ ] Keyboard navigation works throughout
  • [ ] Color is not the only indicator of meaning

Testing

  • [ ] Run :SilkCircuitContrast in Neovim
  • [ ] Test with keyboard-only navigation
  • [ ] Verify with screen reader
  • [ ] Check reduced motion preference
  • [ ] Test in all five variants

Resources