MinimaCSS aims to ship sensible defaults so the components you copy from the docs are accessible out of the box. This page documents what the framework does for you and where you, the application author, still need to do work.
- Reduced motion. The reset (
src/base/_reset.scss) honors@media (prefers-reduced-motion: reduce)and collapses animation / transition durations to ~0ms. :focus-visiblerings. Buttons render their focus ring only on keyboard focus, not on mouse click — see.btnin_buttons.scss.- Touch targets.
.btnis at least 2.5rem (~40px) tall;.btn-lgis 3rem. Pair with adequate padding for the 44×44 WCAG 2.5.5 guideline. - Color contrast tokens. The light theme uses
--text-primary-color: gray-700and--text-secondary-color: gray-500, both of which pass WCAG AA against the default white surface. The dark theme uses light-on-dark equivalents. - Screen-reader utility.
.sr-only(inutilities/_visibility.scss) hides content visually while leaving it discoverable to assistive tech. - Print stylesheet.
base/_print.scssremoves interactive chrome (nav, modal, tooltip, buttons) and surfaces link URLs after their text. - Native semantics. The accordion (
<details>/<summary>) and modal (<dialog>) components are built on native elements so keyboard and screen reader behavior comes for free. - CSS cascade layers. Utilities live in
@layer utilities, so you can override component styles without!importantand without losing accessibility defaults from the components themselves.
- Label every input.
<label for="…">or wrap the input in a label. The.inputclass styles, it does not label. aria-expanded/aria-controlson disclosure controls (.dropdown-toggle, accordion summaries) when you build them.role/aria-liveon.toastand.alertwhen content updates dynamically. Static alerts don't need it; live notifications do.- Visible focus on link buttons.
.btn-linkinherits:focus-visiblebut verify in your specific layouts. - Translate the
chevronicon and check colors against your custom themes. The default chevron is#787f94; override with your own SVG if your background is lighter thangray-500.
- Tab through the page — every interactive control must show a visible focus indicator.
- Trigger every modal/toast/dropdown via keyboard. They must be dismissible with
Esc. - Set OS dark mode. Re-test contrast (Chrome DevTools "Emulate vision deficiencies" + Lighthouse contrast audit).
- Set OS reduced-motion. Modals should snap in/out; the dropdown fadeIn should be instant.
- Print preview the page. The print stylesheet should leave a clean, inked document with no UI chrome.
- Tooltips (
.tooltip) are CSS-only and rely on:hover/:focus-within. They are not a substitute foraria-describedbyon form fields. - The slideover/modal components manage open state via the
openattribute on<dialog>. If you fall back to a<div>, you must implement focus trapping yourself.