The hover declaration sat on .field-box while the disabled edge is inherited from .field, and a direct declaration beats an inherited one whatever the selectors weigh — so a disabled outlined field lit a full-opacity on-surface outline. It is now scoped past a disabled control and, like every other state layer here, kept inside @media (hover: hover) so a tap does not leave it stuck. M3 gives a disabled control no state. Plan step 13, finding IN-02. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qwx5USif3wFFmxtHg5U1g9