
.sw-btn { -webkit-tap-highlight-color: transparent; }
.sw-btn:not(:disabled):active { transform: translateY(0.5px) scale(0.985); }
.sw-btn:focus-visible { outline: none; box-shadow: var(--ring); }
.sw-btn--primary:not(:disabled):hover { background: var(--brand-hover) !important; border-color: var(--brand-hover) !important; }
.sw-btn--primary:not(:disabled):active { background: var(--brand-active) !important; border-color: var(--brand-active) !important; }
.sw-btn--secondary:not(:disabled):hover { background: var(--surface-hover) !important; border-color: var(--border-strong) !important; }
.sw-btn--ghost:not(:disabled):hover { background: var(--surface-hover) !important; color: var(--text-primary) !important; }
.sw-btn--subtle:not(:disabled):hover { background: color-mix(in srgb, var(--brand) 12%, transparent) !important; }
.sw-btn--danger:not(:disabled):hover { background: var(--red-600) !important; border-color: var(--red-600) !important; }
.sw-iconbtn:not(:disabled):hover { background: var(--surface-hover) !important; color: var(--text-primary) !important; }
.sw-iconbtn:focus-visible { outline: none; box-shadow: var(--ring); }
.sw-iconbtn:not(:disabled):active { transform: scale(0.94); }
.sw-input:focus, .sw-textarea:focus, .sw-select:focus {
  outline: none;
  border-color: var(--border-focus) !important;
  box-shadow: var(--ring);
}
.sw-input::placeholder, .sw-textarea::placeholder { color: var(--text-muted); }
.sw-card.sw-card--interactive:hover { border-color: var(--border-strong); box-shadow: var(--shadow-md); transform: translateY(-1px); }
.sw-check:focus-visible, .sw-switch:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-sm); }
.sw-endpoint:hover { border-color: var(--border-strong); box-shadow: var(--shadow-sm); }
.sw-navitem:hover { background: var(--surface-hover); color: var(--text-primary); }
.sw-tab:hover { color: var(--text-primary); }
.sw-copybtn:hover { background: var(--code-bg-alt) !important; color: var(--code-fg) !important; }
@keyframes sw-spin { to { transform: rotate(360deg); } }
.sw-spin { animation: sw-spin 0.7s linear infinite; }
.sw-table tbody tr.sw-table-row--hover:hover { background: var(--surface-sunken); }
