/* ==========================================================================
   Kawann Supply — tunnel de commande
   ========================================================================== */

/* --- Barre d'étapes ---
   Compacte : l'icône occupe la pastille, il n'y a plus de rangée d'icônes
   séparée. Le thème parent dessine son propre trait de liaison en li::before
   (vert, décalé de 4px du mien) : les deux se superposaient et la ligne
   paraissait hachée. On neutralise le sien et on n'en garde qu'un. */
.checkout-steps {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
}

.checkout-steps__list {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
}

.checkout-steps__step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1 1 0;
  min-width: 0;
  text-align: center;
}

/* Trait du parent neutralisé. */
.checkout-steps__step::before {
  content: none;
}

/* Un seul filet, d'une pastille à la suivante. */
.checkout-steps__step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 13px;
  left: calc(50% + 18px);
  right: calc(-50% + 18px);
  height: 1px;
  background: var(--kawann-border);
}

.checkout-steps__number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--kawann-surface);
  border: 1px solid var(--kawann-border);
  color: var(--kawann-text-muted);
}

.checkout-steps__icone {
  font-size: 15px;
  line-height: 1;
}

/* Étape en cours : pastille pleine au jaune du logo. */
.checkout-steps__step--current .checkout-steps__number {
  background: var(--kawann-soleil);
  border-color: var(--kawann-soleil);
  color: var(--kawann-marine);
}

.checkout-steps__btn.btn {
  display: block;
  margin: 6px 0 0;
  padding: 0 4px;
  border: 0;
  background: transparent;
  text-decoration: none;
}

.checkout-steps__libelle {
  display: flex;
  flex-direction: column;
  gap: 1px;
  line-height: 1.25;
}

.checkout-steps__titre {
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-text);
  color: var(--kawann-text-muted);
}

.checkout-steps__soustitre {
  font-size: 0.625rem;
  color: var(--kawann-text-muted);
  opacity: 0.75;
}

/* L'étape en cours se distingue par la graisse ET la couleur, pas par la
   seule teinte (WCAG 2.2 AA, 1.4.1). */
.checkout-steps__step--current .checkout-steps__titre {
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

.checkout-steps__btn.btn:focus-visible {
  outline: 2px solid var(--kawann-marine);
  outline-offset: 3px;
  border-radius: 4px;
}

/* --- Cartes de choix du parcours --- */
.kawann-tunnel__choix {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin: 0 0 20px;
  padding: 0;
  border: 0;
}

.kawann-tunnel__carte {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid var(--kawann-border);
  border-radius: 10px;
  background: var(--kawann-blanc);
  cursor: pointer;
}

/* Le parcours retenu se signale par le cadre ET le fond, pas par la seule
   teinte du bouton radio. */
.kawann-tunnel__carte:has(.kawann-tunnel__radio:checked) {
  border-color: var(--kawann-soleil);
  background: #fef8ee;
}

.kawann-tunnel__carte:has(.kawann-tunnel__radio:focus-visible) {
  outline: 2px solid var(--kawann-marine);
  outline-offset: 2px;
}

.kawann-tunnel__radio {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--kawann-soleil);
}

.kawann-tunnel__carte-icone {
  flex: 0 0 auto;
  display: block;
  width: 28px;
  height: 28px;
  color: var(--kawann-text-muted);
}

.kawann-tunnel__carte-icone svg {
  width: 100%;
  height: 100%;
  display: block;
}

.kawann-tunnel__carte:has(.kawann-tunnel__radio:checked) .kawann-tunnel__carte-icone {
  color: var(--kawann-soleil-ink);
}

.kawann-tunnel__carte-texte {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  line-height: 1.35;
}

.kawann-tunnel__carte-texte strong {
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

.kawann-tunnel__carte-texte span {
  font-size: 0.75rem;
  color: var(--kawann-text-muted);
}

.kawann-tunnel__carte-fleche {
  margin-left: auto;
  font-size: 20px;
  color: var(--kawann-text-muted);
}

/* --- Les deux formulaires côte à côte --- */
/* align-items: stretch (la valeur par défaut, rappelée ici) : les deux cartes
   font la même hauteur quel que soit leur contenu. Sans cela, celle du
   visiteur — plus haute à cause des consignes de saisie — dépassait l'autre. */
.kawann-tunnel__formulaires {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  align-items: stretch;
}

.kawann-tunnel__form {
  display: flex;
  flex-direction: column;
  padding: 16px;
  border: 1px solid var(--kawann-border);
  border-radius: 10px;
  background: var(--kawann-blanc);
}

/* Le formulaire occupe toute la hauteur de sa carte, et son bouton de
   validation est renvoyé en bas : les deux boutons se retrouvent alors sur la
   même ligne, quelle que soit la hauteur des champs au-dessus. */
.kawann-tunnel__form form {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}

.kawann-tunnel__form form > section {
  flex: 1 1 auto;
  align-content: start;
}

.kawann-tunnel__form .buttons-wrapper {
  margin-top: auto;
  padding-top: 12px;
}

.kawann-tunnel__form-titre {
  margin: 0 0 14px;
  font-size: 0.8125rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

.kawann-tunnel__form .form-label,
.kawann-tunnel__form label {
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

.kawann-tunnel__form .form-control,
.kawann-tunnel__form input[type="text"],
.kawann-tunnel__form input[type="email"],
.kawann-tunnel__form input[type="password"] {
  padding: 8px 10px;
  border: 1px solid var(--kawann-border);
  border-radius: 8px;
  font-size: 0.8125rem;
  color: var(--kawann-marine);
}

.kawann-tunnel__form .form-control:focus {
  border-color: var(--kawann-marine);
  box-shadow: none;
}

.kawann-tunnel__form small,
.kawann-tunnel__form .form-text {
  font-size: 0.6875rem;
  color: var(--kawann-text-muted);
}

/* Bouton principal de chaque formulaire, au jaune du logo.
   On ne vise que le bouton de validation : le champ mot de passe abrite un
   bouton « afficher/masquer » qui porte lui aussi .btn-primary et se serait
   retrouvé peint en orange sur toute la largeur. */
.kawann-tunnel__form .buttons-wrapper [type="submit"] {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 9px 14px;
  min-height: 38px;
  border: 0;
  border-radius: 8px;
  background: var(--kawann-soleil);
  font-size: 0.8125rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

.kawann-tunnel__form .buttons-wrapper [type="submit"]:hover {
  background: #e8960d;
  color: var(--kawann-marine);
}

/* --- Récapitulatif de commande --- */
.checkout__summary,
.cart-summary {
  padding: 16px;
  border: 1px solid var(--kawann-border);
  border-radius: 12px;
  background: var(--kawann-blanc);
}

.cart-summary__line,
.cart-summary-line {
  font-size: 0.8125rem;
  color: var(--kawann-text-muted);
}

.cart-summary__line .value,
.cart-summary__line .label {
  font-size: 0.8125rem;
}

.cart-summary .cart-total,
.cart-summary__line--total {
  font-size: 0.9375rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-marine);
}

/* --- Titre de page --- */
.page-order h1,
#checkout .page__title,
.checkout__title {
  font-size: 1.5rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-marine);
}

/* --- Sous 992px : tout s'empile --- */
@media (max-width: 991.98px) {
  .kawann-tunnel__choix,
  .kawann-tunnel__formulaires {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 767.98px) {
  .checkout-steps { flex-wrap: wrap; gap: 12px 0; }
  .checkout-steps__step { flex: 1 1 50%; }
  .checkout-steps__step:not(:last-child)::after { display: none; }
  .checkout-steps__soustitre { display: none; }
}

/* Bouton « afficher le mot de passe » ramené à un simple icône. */
.kawann-tunnel__form .password-field .btn {
  width: auto;
  min-height: 0;
  padding: 0 10px;
  border: 1px solid var(--kawann-border);
  border-left: 0;
  border-radius: 0 8px 8px 0;
  background: transparent;
  color: var(--kawann-text-muted);
}

.kawann-tunnel__form .password-field .btn:hover {
  background: var(--kawann-surface);
  color: var(--kawann-marine);
}

/* --- Titre de page --- */
.kawann-tunnel__entete {
  padding-top: 24px;
  padding-bottom: 4px;
}

.kawann-tunnel__titre {
  margin: 0;
  font-size: 1.5rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-marine);
}

/* Titre d'étape et titre du récapitulatif forment une paire visuelle en haut
   des deux colonnes : ils doivent partager la même ligne.
   Les deux conteneurs démarrent bien à la même hauteur, mais celui de droite
   est un bouton d'accordéon avec 14px de retrait interne, et les tailles
   différaient (16px à gauche, 14px à droite) : le décalage venait de là.
   On aligne le retrait et la typographie des deux. */
.step__title .page-title-section,
.step__title h1 {
  margin: 0 0 16px;
  padding-top: 14px;
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  line-height: 1.5;
  color: var(--kawann-marine);
}

.kawann-recap__titre {
  line-height: 1.5;
}

/* Le module blockreassurance n'a jamais été configuré et affiche encore ses
   textes de démonstration : on le masque ici comme sur la fiche produit. */
.checkout-grid__aside .blockreassurance,
.checkout-grid__aside [class*="blockreassurance"] {
  display: none;
}

/* --- Prénom et nom sur une même ligne ---
   La section du formulaire passe en grille à deux colonnes. Tout ce qu'elle
   contient occupe les deux colonnes par défaut ; seuls le prénom et le nom
   sont ramenés chacun sur la sienne. Aucune dépendance à :has(). */
#customer-form > section {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 12px;
}

#customer-form > section > * {
  grid-column: 1 / -1;
  min-width: 0;
}

#customer-form > section > .kawann-champ--firstname { grid-column: 1; }
#customer-form > section > .kawann-champ--lastname { grid-column: 2; }

/* Sous 576px les deux champs se remettent l'un sous l'autre : côte à côte,
   ils deviendraient trop étroits pour un nom composé. */
@media (max-width: 575.98px) {
  #customer-form > section { grid-template-columns: minmax(0, 1fr); }
  #customer-form > section > .kawann-champ--firstname,
  #customer-form > section > .kawann-champ--lastname { grid-column: 1; }
}

/* Consigne de saisie retirée sous le prénom et le nom : sur des champs de
   demi-largeur elle tenait trois lignes et pesait plus lourd que le champ.
   On ne vise que le span.form-text, pas les conteneurs de messages d'erreur :
   si la saisie est refusée, l'explication s'affichera toujours. */
#customer-form .kawann-champ span.form-text {
  display: none;
}

/* --- Récapitulatif de commande, compact --- */
.checkout__summary-accordion-header .accordion-button {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 16px;
  background: transparent;
  box-shadow: none;
}

.kawann-recap__titre {
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

/* Le compte d'articles, au marine du logo, aligné à droite de l'intitulé. */
.kawann-recap__compte {
  flex: 0 0 auto;
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-text);
  color: var(--kawann-marine);
  white-space: nowrap;
}

.kawann-recap__liste {
  display: flex;
  flex-direction: column;
}

.kawann-recap__ligne {
  padding: 8px 0;
  border-top: 1px solid var(--kawann-border-clair, #efeae2);
}

.kawann-recap__liste .kawann-recap__ligne:first-child { border-top: 0; }

.kawann-recap__ligne .cart-summary__product-name,
.kawann-recap__ligne .product-name {
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
  line-height: 1.35;
}

.kawann-recap__ligne .cart-summary__product-quantity,
.kawann-recap__ligne .product-quantity,
.kawann-recap__ligne .product-price {
  font-size: 0.6875rem;
  color: var(--kawann-text-muted);
}

.kawann-recap__ligne img {
  width: 40px;
  height: 40px;
  object-fit: contain;
  border: 1px solid var(--kawann-border);
  border-radius: 6px;
}

/* Lien de dépliage : un texte discret et un chevron qui pivote. */
.kawann-recap__plus {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  padding: 10px 0 2px;
  border: 0;
  border-top: 1px solid var(--kawann-border-clair, #efeae2);
  background: transparent;
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-text);
  color: var(--kawann-text-muted);
  text-align: left;
}

.kawann-recap__plus:hover {
  color: var(--kawann-marine);
}

.kawann-recap__plus-chevron {
  font-size: 18px;
  transition: transform 0.2s ease;
}

.kawann-recap__plus:not(.collapsed) .kawann-recap__plus-chevron {
  transform: rotate(180deg);
}

.kawann-recap__plus:focus-visible {
  outline: 2px solid var(--kawann-marine);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .kawann-recap__plus-chevron { transition: none; }
}

/* Le thème parent masque l'en-tête du récapitulatif au-delà de 992px — le
   récapitulatif y étant toujours déplié, il jugeait le bouton inutile. Mais
   c'est lui qui porte l'intitulé et le nombre d'articles : on le rétablit.
   Sa feuille étant servie dans un @layer, une déclaration hors couche comme
   celle-ci l'emporte sans avoir besoin de !important. */
@media (min-width: 992px) {
  .checkout__summary-accordion-header {
    display: flex;
  }
}

/* Au-delà de 992px le récapitulatif est toujours déplié : le chevron de
   l'accordéon n'annonce donc rien et alourdit l'en-tête. On le retire, et on
   neutralise le repli avec lui — un titre cliquable sans indice visuel serait
   pire que pas de repli du tout.
   En dessous, l'accordéon reste la vraie interaction : le chevron y demeure. */
@media (min-width: 992px) {
  .checkout__summary-accordion-header .accordion-button::after {
    display: none;
  }

  .checkout__summary-accordion-header .accordion-button {
    pointer-events: none;
  }
}

@media (max-width: 991.98px) {
  .checkout__summary-accordion-header .accordion-button::after {
    width: 16px;
    height: 16px;
    background-size: 16px;
  }
}

/* --- « Mot de passe oublié ? » ---
   Placé sous le champ mot de passe et aligné à droite, en petit : c'est un
   recours, pas une action principale. Le parent le mettait à gauche du bouton
   de validation, où il pesait autant que lui. */
.kawann-tunnel__oubli {
  margin: -6px 0 14px;
  text-align: right;
  line-height: 1.3;
}

.kawann-tunnel__oubli a {
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-text);
  color: var(--kawann-text-muted);
  text-decoration: none;
}

.kawann-tunnel__oubli a:hover,
.kawann-tunnel__oubli a:focus-visible {
  color: var(--kawann-marine);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Les deux boutons de validation portent le même poids typographique. */
.kawann-tunnel__form .buttons-wrapper [type="submit"] {
  font-weight: var(--kawann-weight-bold);
}

/* ==========================================================================
   Étape « Votre bateau » (module kawannbateau)
   Formulaire sur deux colonnes, comme les autres étapes ; la consigne
   d'accès prend toute la largeur. Les erreurs sont écrites sous le champ,
   en rouge foncé (contraste 4,5:1 sur blanc), et le champ prend un liseré.
   ========================================================================== */
.kawann-bateau__intro {
  margin: 0 0 18px;
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--kawann-text-muted);
}

.kawann-bateau__champs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 18px;
}

.kawann-bateau__champ { min-width: 0; margin-bottom: 12px; }
.kawann-bateau__champ--large { grid-column: 1 / -1; }

.kawann-bateau .form-label {
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

.kawann-bateau__requis { color: #b42318; }

.kawann-bateau .form-control {
  padding: 9px 12px;
  border: 1px solid var(--kawann-border);
  border-radius: 8px;
  font-size: 0.8125rem;
  color: var(--kawann-marine);
}

.kawann-bateau .form-control:focus {
  border-color: var(--kawann-marine);
  box-shadow: none;
}

.kawann-bateau__champ--erreur .form-control { border-color: #b42318; }

.kawann-bateau__aide,
.kawann-bateau__erreur {
  margin: 6px 0 0;
  font-size: 0.75rem;
  line-height: 1.45;
  color: var(--kawann-text-muted);
}

.kawann-bateau__erreur {
  font-weight: var(--kawann-weight-bold);
  color: #b42318;
}

/* Le jour en toutes lettres, écrit par le script de l'étape. */
.kawann-bateau__aide [data-kawann-bateau-jour]:not(:empty) {
  display: block;
  margin-bottom: 2px;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

@media (max-width: 767.98px) {
  .kawann-bateau__champs { grid-template-columns: minmax(0, 1fr); }
}

/* --- Compte existant : le parcours visiteur est refusé --- */
.kawann-tunnel__existant {
  display: flex;
  gap: 10px;
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid #f1c27a;
  border-radius: 10px;
  background: #fdf6e7;
  color: var(--kawann-marine);
}

.kawann-tunnel__existant-icone {
  flex: 0 0 auto;
  font-size: 22px;
  color: var(--kawann-soleil-ink);
}

.kawann-tunnel__existant-titre {
  margin: 0 0 4px;
  font-size: 0.8125rem;
  font-weight: var(--kawann-weight-bold);
}

.kawann-tunnel__existant-texte {
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.5;
  color: var(--kawann-text-muted);
}

.kawann-tunnel__existant-texte a {
  color: var(--kawann-lien);
  font-weight: var(--kawann-weight-bold);
}

/* ==========================================================================
   Étape « Paiement » — modes de paiement en cartes, conditions à part
   La case des CGV se lisait comme un quatrième mode de paiement et rien
   n'expliquait le bouton grisé.
   ========================================================================== */
.payment-options__list .payment-option {
  margin: 0 0 8px;
  border: 1px solid var(--kawann-border);
  border-radius: 10px;
  background: var(--kawann-blanc);
}

.payment-options__list .payment-option__form-check {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0;
  padding: 12px 14px;
}

.payment-options__list .payment-option__input { margin: 0; flex: 0 0 auto; }

.payment-options__list .payment-option__label {
  margin: 0;
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
  cursor: pointer;
}

.payment-options__list .payment-option:has(.payment-option__input:checked) {
  border-color: var(--kawann-marine);
  background: var(--kawann-surface);
}

.payment-options__list .payment-option__additional-information {
  padding: 0 14px 12px 42px;
  font-size: 0.8125rem;
  color: var(--kawann-text-muted);
}

.payment-options__list .payment-option__additional-information p:last-child { margin-bottom: 0; }

/* --- Conditions générales : encadré distinct, case bien visible --- */
.kawann-paiement__conditions {
  margin-top: 18px !important;
  padding: 14px 16px;
  border: 1px dashed var(--kawann-marine);
  border-radius: 10px;
  background: #fdf6e7;
}

.kawann-paiement__conditions-titre {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 8px;
  font-size: 0.75rem;
  font-weight: var(--kawann-weight-bold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--kawann-soleil-ink);
}

.kawann-paiement__conditions-titre .material-icons { font-size: 18px; }

.kawann-paiement__conditions-case {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0 !important;
  padding: 0;
}

.kawann-paiement__conditions-case .form-check-input {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  margin: 0;
  border: 2px solid var(--kawann-marine);
  cursor: pointer;
}

.kawann-paiement__conditions-case .form-check-label {
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  line-height: 1.45;
  color: var(--kawann-marine);
  cursor: pointer;
}

/* --- Rappel sous le bouton, et bouton inactif « cliquable » --- */
#payment-confirmation { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }

.kawann-paiement__rappel {
  margin: 0;
  max-width: 320px;
  font-size: 0.75rem;
  line-height: 1.45;
  text-align: right;
  color: var(--kawann-text-muted);
}

/* Le clic sur le bouton inactif remonte au conteneur (script de l'étape),
   qui met l'encadré en avant. */
#payment-confirmation button.disabled,
#payment-confirmation button:disabled { pointer-events: none; }

@keyframes kawann-paiement-rappel {
  0%, 100% { box-shadow: 0 0 0 0 rgba(20, 38, 61, 0); transform: translateX(0); }
  15% { transform: translateX(-4px); }
  30% { transform: translateX(4px); }
  45% { transform: translateX(-3px); }
  60% { transform: translateX(0); }
  70% { box-shadow: 0 0 0 4px rgba(233, 154, 22, 0.45); }
}

.kawann-paiement__rappel-anime {
  animation: kawann-paiement-rappel 0.9s ease-out;
  border-radius: 10px;
}

@media (prefers-reduced-motion: reduce) {
  .kawann-paiement__rappel-anime { animation: none; box-shadow: 0 0 0 4px rgba(233, 154, 22, 0.45); }
}

@media (max-width: 767.98px) {
  #payment-confirmation { align-items: stretch; }
  .kawann-paiement__rappel { max-width: none; text-align: center; }
}

/* --- Fenêtre des CGV : lecture sur une colonne, en-tête et pied propres --- */
.kawann-cgv { border-radius: 14px; }

.kawann-cgv__entete {
  padding: 16px 22px;
  border-bottom: 1px solid var(--kawann-border);
}

.kawann-cgv__titre {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-marine);
}

.kawann-cgv__corps { padding: 22px 26px; }

/* La page CGV est en deux colonnes (sommaire + texte) : ici, le texte seul. */
.kawann-cgv__corps .kawann-legal { display: block; }
.kawann-cgv__corps .kawann-legal__sommaire { display: none; }
.kawann-cgv__corps .kawann-legal__corps { max-width: none; }
.kawann-cgv__corps .kawann-legal__marque { margin-top: 0; }
.kawann-cgv__corps h2 { font-size: 1rem; }
.kawann-cgv__corps p,
.kawann-cgv__corps li { font-size: 0.875rem; }

.kawann-cgv__pied {
  gap: 10px;
  padding: 14px 22px;
  border-top: 1px solid var(--kawann-border);
}

.kawann-cgv__pied .btn { display: inline-flex; align-items: center; gap: 6px; }

/* Le bouton « Retour » ne doit pas s'étirer à la hauteur du bloc de droite. */
.page-order #checkout-payment-step .buttons-wrapper { align-items: flex-start; }

/* --- Aucun transporteur : explication + retour aux adresses --- */
.kawann-livraison__aucun p { margin: 0; }
.kawann-livraison__aucun-titre { font-weight: var(--kawann-weight-bold); }
.kawann-livraison__aucun-texte { margin-top: 6px !important; font-size: 0.875rem; }

/* --- Modes de livraison : nom sur une ligne, lieu et horaires sur deux --- */
.delivery-option__carrier-name { white-space: nowrap; }
.delivery-option__content {
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--kawann-text-muted);
}

/* ==========================================================================
   Page Panier — même registre que l'espace client et le tunnel
   Le parent affiche un titre de 2rem, des lignes nues et un récapitulatif
   sans cadre. Ici : titre souligné Soleil, lignes produit dans une carte,
   récapitulatif en carte, réassurance compacte.
   ========================================================================== */
.page-cart .page-title-section {
  position: relative;
  margin: 0 0 18px;
  padding-bottom: 10px;
  font-size: 1.5rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-marine);
}

.page-cart .page-title-section::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 48px;
  height: 3px;
  border-radius: 2px;
  background: var(--kawann-soleil);
}

.page-cart .cart__overview {
  padding: 4px 20px;
  border: 1px solid var(--kawann-border);
  border-radius: 14px;
  background: var(--kawann-blanc);
}

.page-cart .cart__overview > hr { display: none; }

.page-cart .cart__item + .cart__item { border-top: 1px solid var(--kawann-border-clair, #efeae2); }

.page-cart .product-line {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 16px;
  padding: 16px 0;
  align-items: center;
}

.page-cart .product-line__image img {
  width: 72px;
  height: 72px;
  object-fit: contain;
  border: 1px solid var(--kawann-border);
  border-radius: 10px;
  background: var(--kawann-blanc);
}

.page-cart .product-line__content {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 6px 16px;
  align-items: center;
}

.page-cart .product-line__title {
  display: block;
  margin: 0 0 2px;
  font-size: 0.9375rem;
  font-weight: var(--kawann-weight-bold);
  line-height: 1.3;
  color: var(--kawann-marine) !important;
  text-decoration: none;
}

.page-cart .product-line__item--prices {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  align-items: baseline;
}

.page-cart .product-line__item-price {
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

.page-cart .product-line__item-unit-price {
  font-size: 0.75rem;
  color: var(--kawann-text-muted);
}

.page-cart .product-line__content-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
}

.page-cart .product-line__quantity-button .form-control { width: 52px; text-align: center; }

.page-cart .product-line__price {
  font-size: 1rem;
  font-weight: var(--kawann-weight-bold);
  white-space: nowrap;
  color: var(--kawann-marine);
}

.page-cart .product-line__actions { grid-column: 1 / -1; }

.page-cart .product-line__actions .js-remove-from-cart {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 24px;
  font-size: 0.8125rem;
  font-weight: var(--kawann-weight-bold);
  line-height: 1;
  color: #b42318 !important;
  text-decoration: none;
}

/* Corbeille alignée sur le texte : même hauteur de ligne que lui. */
.page-cart .product-line__actions .js-remove-from-cart::before {
  content: "\e872";
  font-family: "Material Icons";
  font-size: 16px;
  line-height: 1;
  vertical-align: middle;
}

.page-cart .product-line__actions .js-remove-from-cart:hover { text-decoration: underline; text-underline-offset: 3px; }

.page-cart .cart__continue-shopping {
  margin-top: 16px;
  font-size: 0.875rem;
  border-radius: 8px;
}

/* --- Récapitulatif --- */
.page-cart .cart-grid__aside-wrapper > h2 {
  margin: 0 0 12px;
  font-size: 1.0625rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-marine);
}

.page-cart .cart-summary {
  padding: 18px 20px;
  border: 1px solid var(--kawann-border);
  border-radius: 14px;
  background: var(--kawann-blanc);
}

.page-cart .cart-summary__line {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 6px 0;
  font-size: 0.875rem;
  color: var(--kawann-marine);
}

.page-cart .cart-summary__subtotals .cart-summary__label { color: var(--kawann-text-muted); }

.page-cart .cart-summary__line--bold {
  margin-top: 6px;
  padding-top: 12px;
  border-top: 1px solid var(--kawann-border);
  font-size: 1.0625rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-soleil-ink);
}

.page-cart .cart-summary__voucher { margin-top: 10px; font-size: 0.875rem; }

.page-cart .cart-summary__actions .btn {
  width: 100%;
  min-height: 46px;
  border-radius: 8px;
  font-size: 0.9375rem;
  font-weight: var(--kawann-weight-bold);
}

.page-cart .cart-grid__aside-wrapper > hr { display: none; }

/* --- Réassurance (module blockreassurance) : icônes en pastille sable --- */
.page-cart .blockreassurance--cart {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 16px;
  padding: 16px 20px;
  border: 1px solid var(--kawann-border);
  border-radius: 14px;
  background: var(--kawann-blanc);
}

.page-cart .reassurance {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0;
  padding: 0;
}

.page-cart .reassurance__image {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fdf0d8;
}

.page-cart .reassurance__image svg,
.page-cart .reassurance__image img { width: 24px; height: 24px; }
.page-cart .reassurance__image svg * { fill: var(--kawann-marine); stroke: none; }

.page-cart .reassurance__content { font-size: 0.75rem; line-height: 1.4; color: var(--kawann-text-muted); }
.page-cart .reassurance__content strong,
.page-cart .reassurance__content .h6,
.page-cart .reassurance__content p:first-child {
  display: block;
  margin: 0 0 2px;
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}
.page-cart .reassurance__content p { margin: 0; }

@media (max-width: 767.98px) {
  .page-cart .cart__overview { padding: 0 14px; }
  .page-cart .product-line { grid-template-columns: 60px minmax(0, 1fr); gap: 12px; }
  .page-cart .product-line__image img { width: 60px; height: 60px; }
  .page-cart .product-line__content { grid-template-columns: minmax(0, 1fr); }
  .page-cart .product-line__content-right { flex-direction: row; justify-content: space-between; align-items: center; }
  .page-cart .cart-grid__aside { margin-top: 20px; }
}

/* ==========================================================================
   Récapitulatif du tunnel : les lignes produit du parent portent les classes
   cart-summary-product__* (et non cart-summary__product-name) — les règles
   plus haut ne les atteignaient pas, d'où des noms en bleu 16px.
   ========================================================================== */
.checkout-grid__aside .cart-summary-product {
  display: flex;
  gap: 10px;
  align-items: flex-start;
}

.checkout-grid__aside .cart-summary-product__image img {
  width: 44px;
  height: 44px;
  object-fit: contain;
  border: 1px solid var(--kawann-border);
  border-radius: 6px;
}

.checkout-grid__aside .cart-summary-product__content {
  display: flex;
  flex: 1 1 auto;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}

.checkout-grid__aside .cart-summary-product__link {
  display: block;
  margin: 0 0 2px;
  font-size: 0.8125rem;
  font-weight: var(--kawann-weight-bold);
  line-height: 1.3;
  color: var(--kawann-marine) !important;
  text-decoration: none;
}

.checkout-grid__aside .cart-summary-product__price,
.checkout-grid__aside .cart-summary-product__unit-price,
.checkout-grid__aside .cart-summary-product__quantity {
  font-size: 0.75rem;
  line-height: 1.4;
  color: var(--kawann-text-muted);
}

.checkout-grid__aside .cart-summary-product__price { color: var(--kawann-marine); }

.checkout-grid__aside .cart-summary-product__prices {
  font-size: 0.875rem;
  font-weight: var(--kawann-weight-bold);
  white-space: nowrap;
  color: var(--kawann-marine);
}

.checkout-grid__aside .cart-summary__line { font-size: 0.875rem; padding: 5px 0; }
.checkout-grid__aside .cart-summary__subtotals .cart-summary__label { color: var(--kawann-text-muted); }
.checkout-grid__aside .cart-summary__line--bold {
  margin-top: 4px;
  padding-top: 10px;
  border-top: 1px solid var(--kawann-border);
  font-size: 1rem;
  font-weight: var(--kawann-weight-title);
  color: var(--kawann-soleil-ink);
}
.checkout-grid__aside .cart-voucher__accordion-button { font-size: 0.875rem; font-weight: var(--kawann-weight-bold); }

/* ==========================================================================
   Étape « Adresses » : cartes d'adresse au registre du tunnel
   ========================================================================== */
#checkout-addresses-step .step__content > .js-address-form > form > p:first-child,
#checkout-addresses-step .js-address-form > form > p:first-child {
  margin: 0 0 16px;
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--kawann-text-muted);
}

#checkout-addresses-step .address__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px;
  margin: 0 0 14px;
}

#checkout-addresses-step .address-card {
  margin: 0;
  border: 1px solid var(--kawann-border);
  border-radius: 12px;
  background: var(--kawann-blanc);
  transition: border-color 0.15s, background-color 0.15s;
}

#checkout-addresses-step .address-card:has(input:checked) {
  border-color: var(--kawann-marine);
  background: var(--kawann-surface);
}

#checkout-addresses-step .address-card__container {
  display: block;
  padding: 14px 16px;
  cursor: pointer;
}

#checkout-addresses-step .address-card__header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 8px;
}

#checkout-addresses-step .address-card__alias {
  font-size: 0.9375rem;
  font-weight: var(--kawann-weight-bold);
  color: var(--kawann-marine);
}

#checkout-addresses-step .address-card__content {
  margin: 0;
  font-size: 0.875rem;
  font-style: normal;
  line-height: 1.5;
  color: var(--kawann-marine);
}

#checkout-addresses-step .address-card__actions {
  display: flex;
  gap: 16px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--kawann-border-clair, #efeae2);
}

#checkout-addresses-step .address-card__actions a {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  font-size: 0.8125rem;
  font-weight: var(--kawann-weight-bold);
  text-decoration: none;
}

#checkout-addresses-step .address-card__edit { color: var(--kawann-lien) !important; }
#checkout-addresses-step .address-card__delete { color: #b42318 !important; }
#checkout-addresses-step .address-card__actions a:hover { text-decoration: underline; text-underline-offset: 3px; }

#checkout-addresses-step .buttons-wrapper .btn,
#checkout-addresses-step .btn-basic {
  font-size: 0.875rem;
  border-radius: 8px;
}

#checkout-addresses-step .btn-basic {
  padding-left: 0;
  color: var(--kawann-lien) !important;
  font-weight: var(--kawann-weight-bold);
}

/* Boutons de navigation de toutes les étapes : même taille que le reste. */
.checkout-step .buttons-wrapper--split .btn,
#checkout-personal-information-step .btn,
#checkout-addresses-step .btn,
#checkout-delivery-step .btn,
#kawann-bateau-step .btn,
#checkout-payment-step .btn { font-size: 0.875rem; border-radius: 8px; }

/* --- Stripe en formulaire intégré : la carte « Paiement par carte bancaire »
   reste une option comme les autres, et le formulaire de carte ne s'ouvre
   qu'une fois cette option cochée, juste en dessous d'elle.
   Le module masque sa propre ligne (display:none en ligne) et pose son
   formulaire en tête de liste : on rétablit la ligne, on ordonne, et on
   n'affiche le formulaire que si le mode est coché. --- */
.payment-options__list { display: flex; flex-direction: column; }
.payment-options__list > .payment-option { order: 3; }
.payment-options__list > .payment-option:has(input[data-module-name="stripe_official"]) { order: 1; display: block !important; }
.payment-options__list > #js-stripe-payment-form { order: 2; margin: 0 0 8px; }
.payment-options__list:not(:has(input[data-module-name="stripe_official"]:checked)) > #js-stripe-payment-form { display: none !important; }

#js-stripe-payment-form {
  padding: 14px 14px 6px;
  border: 1px solid var(--kawann-marine);
  border-top: 0;
  border-radius: 0 0 10px 10px;
  background: var(--kawann-blanc);
}

.payment-options__list > .payment-option:has(input[data-module-name="stripe_official"]:checked) {
  margin-bottom: 0;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
