.visual-feedback-settings{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;flex-shrink:0;margin:0;padding:14px 22px;border-top:1px solid var(--control-edge,#80babc45)}
.visual-feedback-settings .sound-choice-switch[role=switch]>span:not([aria-hidden]){width:auto;height:auto;border-radius:0;background:none;box-shadow:none;opacity:1}
.visual-feedback-settings p{margin:5px 0 0;font-size:.82rem;line-height:1.5}
.visual-feedback-settings>small{grid-column:1/-1;opacity:.8;font-size:.75rem}
.action-feedback-surface{isolation:isolate}
/* A technical lock (circuit startup or an in-flight request) does not make a
   previously available action visually unavailable. Opt in per control so real
   limits/permissions keep their normal disabled appearance. Native disabled and
   server-side guards still block activation. One contract for every feature. */
:is(button,input:not([type=file]),select,textarea,fieldset)[data-ui-pending="true"]:disabled{opacity:1!important;cursor:progress}
/* Custom upload controls intentionally hide the native input. Only its native
   file button may brighten; never override the input's own hidden appearance. */
input[type=file][data-ui-pending="true"]:disabled{cursor:progress}
input[type=file][data-ui-pending="true"]:disabled::file-selector-button{opacity:1!important;cursor:progress}
.action-feedback-positioned{position:relative}
.action-feedback-wash{position:absolute;inset:0;pointer-events:none;z-index:-1;border-radius:inherit;background:linear-gradient(115deg,var(--action-feedback-tint,#a8eee91f),var(--action-feedback-tint-soft,#b8e1fa0d));opacity:0}
:root[data-theme=light]{--action-feedback-tint:#16878c1c;--action-feedback-tint-soft:#16878c08}
@media(prefers-reduced-motion:reduce){.action-feedback-wash{display:none}}
@media(forced-colors:active){.action-feedback-wash{display:none}}
