Two accessible patterns: a JavaScript-controlled disclosure and the native <details> element. Content containers use the class "details". Each widget is wrapped in a div.example.
The native details element provides built-in disclosure behavior with keyboard support, state persistence (open attribute), and semantics. We still add the "details" class to the element to satisfy the requirement that controlled containers use that class.
Use the native element when browser behaviors and basic styling suffice; use the JS-controlled approach when you need custom animations or more control over the interaction.