/* Immediate feedback without changing button size or hiding validation errors. */
button:has(> .submit-pending) { position: relative; }
button:has(> .submit-pending):active { transform: translateY(1px) scale(.985); }
.submit-pending { display: none; }
button.busy:has(> .submit-pending) { cursor: wait; transform: none; }
button.busy > .submit-label { visibility: hidden; }
button.busy > .submit-pending {
  position: absolute; inset: 0; display: flex; align-items: center;
  justify-content: center; gap: 10px; padding: 0 12px;
}
.submit-spinner {
  width: 17px; height: 17px; flex: 0 0 17px; box-sizing: border-box;
  border: 2px solid currentColor; border-right-color: transparent;
  border-radius: 50%; animation: submit-turn .75s linear infinite;
}
@keyframes submit-turn { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .submit-spinner { animation: none; }
  button:has(> .submit-pending) { transition: none; }
  button:has(> .submit-pending):active { transform: none; }
}
