CSS‑Only Accordion
Accessible, animated, dark‑mode aware—no JavaScript.
What makes this accordion special?
- CSS‑only: native
<details>/<summary>. - Smooth height animation via the grid-rows trick.
- Keyboard & A11y: focus ring, enter/space toggle, screenreader friendly.
- Dark‑mode aware with
prefers-color-scheme.
Can I keep only one panel open?
Yes—use a radio‑input variant to force single-open behavior. This file sticks to native
<details> for simplicity and accessibility.
How do I theme it?
Edit CSS variables at the top:
--acc-brand, --acc-radius, shadows,
borders, and paddings. Swap the header background hover by changing --acc-bg-soft.
Production tips
- Use semantic headings inside
.acc__innerif content is long. - Place accordions in a
<section role="list">for grouped semantics. - Respect motion settings: already handled with
prefers-reduced-motion.