field validation
Tier 2Declarative per-cause errors below the field. No browser bubbles.
<m-field>
<label for="email">Email</label>
<input id="email" type="email" required />
<m-error match="value-missing">Email is required.</m-error>
<m-error match="type-mismatch">Not a valid email.</m-error>
<m-error></m-error> <!-- catch-all: browser's own message -->
</m-field>
<script type="module" src="mica/field.js"></script>
Without the module
Matchless <m-error>s still show via
:user-invalid (pure CSS); submits fall back to native bubbles.
Working markup, enhanced — never rendered.