/*
 * kaloa_stripe4form — mise en page minimale, à surcharger dans la skin du site.
 * Les champs Stripe sont des iframes : leur texte se règle avec l'événement JS « stripe4form:configure ».
 */
.stripe4form {
  --stripe4form-gap: 1rem;
  --stripe4form-border: #ced4da;
  --stripe4form-focus: #2f6fde;
  --stripe4form-error: #c0392b;
  --stripe4form-info: #44546a;
  border: 0;
  margin: 0 0 var(--stripe4form-gap);
  padding: 0;
  min-width: 0;
}

/*
 * Disposition selon la largeur du formulaire (requête de conteneur), pas de l'écran : le formulaire peut être dans
 * une colonne ou un panneau étroit sur un grand écran.
 *   étroit : numéro de carte sur toute la largeur, puis date | cryptogramme ;
 *   large (36em et plus) : les trois champs sur une ligne.
 */
.stripe4form {
  container-type: inline-size;
}

.stripe4form__fields {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  /* champs alignés en bas : un libellé sur deux lignes ne décale pas son champ */
  align-items: end;
  gap: var(--stripe4form-gap);
}

.stripe4form__field--number {
  grid-column: 1 / -1;
}

@container (min-width: 36em) {
  .stripe4form__fields {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .stripe4form__field--number {
    grid-column: auto;
  }
}

.stripe4form__label {
  display: block;
  margin-bottom: 0.25rem;
  cursor: text;
  /* « Cryptogramme (CVC) » : passe à la ligne plutôt que de déborder */
  overflow-wrap: anywhere;
}

/* Conteneur de l'iframe Stripe : reprend l'apparence d'un champ texte (classe form-control par défaut) */
.stripe4form__input {
  min-height: 2.5rem;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--stripe4form-border);
  border-radius: 0.375rem;
  background: #fff;
}

.stripe4form__input.is-focused {
  border-color: var(--stripe4form-focus);
  outline: 2px solid color-mix(in srgb, var(--stripe4form-focus) 25%, transparent);
}

.stripe4form__input.is-invalid {
  border-color: var(--stripe4form-error);
}

.stripe4form__message,
.stripe4form__error {
  display: block;
  margin-top: 0.5rem;
  color: var(--stripe4form-error);
}

.stripe4form__message[data-type="info"] {
  color: var(--stripe4form-info);
}

.stripe4form__message[hidden] {
  display: none;
}

.stripe4form__test-mode {
  margin-top: 0.5rem;
  font-size: 0.875em;
  color: var(--stripe4form-info);
}

.stripe4form.is-busy .stripe4form__fields {
  opacity: 0.6;
  pointer-events: none;
}
