HTML / CSS / JavaScript
HTML is for structure, CSS is for style, JavaScript is for interaction
Separate content, presentation and behaviour while preserving the browser's native capabilities.
HTML describes content, CSS controls presentation and JavaScript adds behaviour. These responsibilities can coexist in one component while remaining understandable and testable.
Enhance native behaviour
HTML already provides interactions such as links, buttons, forms and disclosures. JavaScript is not required for every interaction.
<details>
<summary>What is semantic HTML?</summary>
<p>Markup that communicates the purpose of its content.</p>
</details>
Style the disclosure with CSS. Add JavaScript only if the product requires additional behaviour.
Keep state coherent
When JavaScript changes a control, update both the visible interface and relevant accessibility state. In a reactive framework, derive the rendered view from state instead of manually modifying the same DOM nodes that the framework owns.
Progressive enhancement means preserving useful content and native navigation when scripts fail. It does not mean every application must provide identical behaviour without JavaScript.