.form-row{display:flex;gap:10px;flex-wrap:wrap}
.form-row .col{flex:1 1 200px}
.btn.primary{background:var(--primary);border-color:var(--primary-border);color:var(--on-primary)}

/* Harmoniser rapidement les champs avec les boutons */
.input {
  height: 44px;
  padding: 0 12px;
  border-radius: 10px;
  border: 1px solid var(--border, #d1d5db);
  background: #fff;
  color: var(--text, #111827);
  outline: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.18); }

/* Spinners inline (pour boutons / cellule quantité) */
.spin {
  width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid #e5e7eb; border-top-color: #2563eb;
  animation: spin .8s linear infinite;
  display: inline-block; vertical-align: middle;
}
.spin.sm { width: 14px; height: 14px; border-width: 2px; }

.btn.is-loading { position: relative; pointer-events: none; opacity: .85; }
.btn.is-loading > .label { visibility: hidden; }
.btn.is-loading::after {
  content: ""; position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
  width: 16px; height: 16px; border-radius: 50%;
  border: 2px solid currentColor; border-top-color: transparent; animation: spin .8s linear infinite;
}