/*
 * Global button polish — world-class interaction states for EVERY button system.
 *
 * Applies to .wm-btn, .frm-btn-*, .mkt-btn-*, .sf-btn-*, .idx-btn-*, page-scoped
 * *-btn classes, and raw <button> elements via the [class*="-btn"] catch-all.
 *
 * Strictly ADDITIVE: it only adds focus / active / disabled behaviour and never
 * changes a button's default look. Per UI_DESIGN_RULES, state changes here never
 * alter geometry (no padding/border/size/transform) — only colour, opacity, and
 * a geometry-safe brightness filter. Loaded after the system CSS so the focus
 * ring wins even where a base rule set `outline: none`.
 */

/* ---- Keyboard focus ring (the #1 a11y gap) ----------------------------------
   Visible only for keyboard users (:focus-visible), never on mouse click. */
button:focus-visible,
[class*="-btn"]:focus-visible {
  outline: 2px solid var(--brand-primary);
  outline-offset: 2px;
  border-radius: var(--radius-md, 8px);
}
/* Mouse/touch interaction: no ring (we rely on :focus-visible above). */
button:focus:not(:focus-visible),
[class*="-btn"]:focus:not(:focus-visible) {
  outline: none;
}

/* ---- Pressed feedback (geometry-safe — filter, not transform) --------------- */
button:active:not(:disabled),
[class*="-btn"]:active:not([disabled]):not(.is-disabled):not(.disabled) {
  filter: brightness(0.94);
}

/* ---- Consistent disabled state across every system ------------------------- */
button:disabled,
button[disabled],
[class*="-btn"]:disabled,
[class*="-btn"][disabled],
[class*="-btn"].is-disabled,
[class*="-btn"].disabled {
  opacity: 0.55;
  cursor: not-allowed;
  box-shadow: none;
  filter: none;
}
/* A disabled button must not react to hover. */
button:disabled:hover,
[class*="-btn"]:disabled:hover,
[class*="-btn"][disabled]:hover,
[class*="-btn"].is-disabled:hover {
  filter: none;
}
