diff --git a/resources/css/components/field.css b/resources/css/components/field.css index bee770b6..51be79ad 100644 --- a/resources/css/components/field.css +++ b/resources/css/components/field.css @@ -387,8 +387,13 @@ display: none; } - .field-box:hover { - --field-edge: var(--md-sys-color-on-surface); + /* Hover only where a pointer can hover, and never on a disabled field: M3 gives a disabled + control no state layer at all, and the disabled edge below is inherited, so a declaration + here would beat it whatever the selector weighs. */ + @media (hover: hover) { + .field:not(:has(.field-control:disabled)) .field-box:hover { + --field-edge: var(--md-sys-color-on-surface); + } } .field-box:focus-within { @@ -405,8 +410,10 @@ --field-ink: var(--md-sys-color-error); } - .field[data-invalid] .field-box:hover { - --field-edge: var(--md-sys-color-on-error-container); + @media (hover: hover) { + .field[data-invalid]:not(:has(.field-control:disabled)) .field-box:hover { + --field-edge: var(--md-sys-color-on-error-container); + } } .field[data-invalid] .field-box:focus-within {