/* Brewstock v2 — contrats d'approvisionnement : bloc de la fiche produit, Mon compte > Mes contrats, panier.
   Mobile d'abord (375 px), jetons de base.css, orange pâle réservé aux contrats (UX-20), cibles de 48 px (UX-02).
   Règles hors couche mais toutes préfixées par .bw-ct : elles l'emportent sur les styles génériques des pages encore
   servies par le thème parent (Mon compte, panier), sans rien toucher en dehors des blocs de contrat.
   Chargé par le module contrats de l'extension (fiche, compte, panier, paiement). */

/* ---------- Bloc de la fiche produit ---------- */
.bw-ct-offre { display: grid; gap: var(--bw-s3); padding: var(--bw-s4); border-radius: var(--bw-radius-l); background: var(--bw-orange-pale); border: 1px solid #F3D3A1; color: var(--bw-ink); font-size: var(--bw-fs-sm); scroll-margin-top: calc(var(--bw-entete-h) + var(--bw-s4)); }
.bw-ct-offre__tete { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--bw-s2); }
.bw-ct-offre__titre { display: flex; align-items: center; gap: var(--bw-s2); margin: 0; font-family: var(--bw-font-display); font-size: var(--bw-fs-h3); line-height: var(--bw-lh-tight); }
.bw-ct-offre__titre .bw-icone { color: var(--bw-orange-700); }
.bw-ct-offre__accroche { margin: 0; }
.bw-ct-form { display: grid; gap: var(--bw-s4); margin: 0; }

/* Volume : champ numérique avec boutons − et +, curseur dessous */
.bw-ct-volume { display: grid; gap: var(--bw-s2); }
.bw-ct-volume__label { font-weight: 700; }
.bw-ct-volume__saisie { display: flex; align-items: center; gap: var(--bw-s2); }
.bw-ct .bw-ct-volume__champ { width: 6.5rem; min-height: var(--bw-tap); padding: 0 var(--bw-s3); border: 1px solid var(--bw-line-strong); border-radius: var(--bw-radius-s); background: var(--bw-white); color: var(--bw-ink); font: 700 1.125rem/1 var(--bw-font-text); font-variant-numeric: tabular-nums; text-align: center; }
.bw-ct .bw-ct-volume__champ[aria-invalid="true"] { border-color: var(--bw-error); box-shadow: inset 0 0 0 1px var(--bw-error); }
.bw-ct-volume__unite { color: var(--bw-ink-soft); font-weight: 600; }
/* FPB-12 : pas de flèches natives du champ nombre, en doublon avec − et + (avec JavaScript seulement : sans script, les
   boutons sont cachés et les flèches restent le seul moyen à la souris). Clavier (flèches haut et bas) inchangé. */
.bw-js .bw-ct .bw-ct-volume__champ { -moz-appearance: textfield; appearance: textfield; }
.bw-js .bw-ct .bw-ct-volume__champ::-webkit-outer-spin-button, .bw-js .bw-ct .bw-ct-volume__champ::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.bw-ct .bw-ct-pas { display: inline-grid; place-items: center; width: var(--bw-tap); height: var(--bw-tap); padding: 0; border: 1px solid var(--bw-line-strong); border-radius: var(--bw-radius-m); background: var(--bw-white); color: var(--bw-ink); font: 700 1.25rem/1 var(--bw-font-text); cursor: pointer; }
.bw-ct .bw-ct-pas:hover { border-color: var(--bw-ink); background: var(--bw-white); color: var(--bw-ink); }
.bw-ct .bw-ct-pas[hidden] { display: none; }
.bw-ct .bw-ct-pas:focus-visible, .bw-ct .bw-ct-volume__champ:focus-visible, .bw-ct .bw-ct-curseur:focus-visible { outline: none; box-shadow: var(--bw-focus); }

/* Curseur : piste fine, poignée de 28 px, zone de toucher de 48 px (hauteur du champ) */
.bw-ct .bw-ct-curseur { -webkit-appearance: none; appearance: none; width: 100%; height: var(--bw-tap); margin: 0; background: transparent; cursor: pointer; }
.bw-ct .bw-ct-curseur::-webkit-slider-runnable-track { height: 6px; border-radius: var(--bw-radius-pill); background: linear-gradient(to right, var(--bw-orange-600) var(--bw-ct-remplir, 0%), #F3D3A1 var(--bw-ct-remplir, 0%)); }
.bw-ct .bw-ct-curseur::-moz-range-track { height: 6px; border-radius: var(--bw-radius-pill); background: #F3D3A1; }
.bw-ct .bw-ct-curseur::-moz-range-progress { height: 6px; border-radius: var(--bw-radius-pill); background: var(--bw-orange-600); }
.bw-ct .bw-ct-curseur::-webkit-slider-thumb { -webkit-appearance: none; width: 28px; height: 28px; margin-top: -11px; border: 2px solid var(--bw-white); border-radius: 50%; background: var(--bw-orange-700); box-shadow: var(--bw-shadow-2); }
.bw-ct .bw-ct-curseur::-moz-range-thumb { width: 24px; height: 24px; border: 2px solid var(--bw-white); border-radius: 50%; background: var(--bw-orange-700); box-shadow: var(--bw-shadow-2); }
.bw-ct-aide { margin: 0; color: var(--bw-ink-soft); font-size: var(--bw-fs-xs); }
.bw-ct-erreur { margin: 0; color: var(--bw-error); font-size: var(--bw-fs-xs); font-weight: 600; }

/* Chiffres clés */
.bw-ct-chiffres { display: grid; gap: var(--bw-s2); margin: 0; padding: var(--bw-s3); border-radius: var(--bw-radius-m); background: var(--bw-white); }
.bw-ct-chiffres > div { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 0 var(--bw-s3); }
.bw-ct-chiffres dt { color: var(--bw-ink-soft); }
.bw-ct-chiffres dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.bw-ct-chiffres__prix dd { font-size: var(--bw-fs-md); font-weight: 800; }
.bw-ct-chiffres__eco dd { color: var(--bw-orange-700); font-weight: 700; }
.bw-ct-chiffres__liv { padding-top: var(--bw-s2); border-top: 1px dashed var(--bw-line); }
.bw-ct-chiffres__liv dd { font-weight: 700; }
.bw-ct-sacs { color: var(--bw-ink-soft); font-weight: 600; white-space: nowrap; }

/* Calendrier des livraisons */
.bw-ct-sous-titre { margin: 0; font-family: var(--bw-font-text); font-size: var(--bw-fs-sm); font-weight: 800; letter-spacing: 0.02em; }
.bw-ct-calendrier, .bw-ct-livraisons { display: grid; gap: var(--bw-s2); margin: 0; padding: 0; list-style: none; }
.bw-ct-etape, .bw-ct-livraison { display: grid; grid-template-columns: auto 1fr; gap: var(--bw-s3); align-items: start; }
.bw-ct-etape__num { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--bw-orange); color: var(--bw-ink); font-weight: 800; font-variant-numeric: tabular-nums; }
.bw-ct-etape__corps { display: grid; gap: 0.1rem; }
.bw-ct-etape__titre { font-weight: 700; }
.bw-ct-etape__texte { color: var(--bw-ink-soft); font-size: var(--bw-fs-xs); }
.bw-ct-note { margin: 0; padding: var(--bw-s2) var(--bw-s3); border-left: 3px solid var(--bw-orange-700); background: var(--bw-white); font-size: var(--bw-fs-xs); }

/* Paliers */
.bw-ct-paliers { border-top: 1px solid #F3D3A1; }
.bw-ct-paliers__titre { display: flex; align-items: center; justify-content: space-between; min-height: var(--bw-tap); cursor: pointer; list-style: none; font-weight: 700; }
.bw-ct-paliers__titre::-webkit-details-marker { display: none; }
.bw-ct-paliers__titre .bw-icone { transition: transform var(--bw-duree); }
.bw-ct-paliers[open] .bw-ct-paliers__titre .bw-icone { transform: rotate(180deg); }
.bw-ct .bw-ct-paliers__table { width: 100%; margin: 0; border-collapse: collapse; font-size: var(--bw-fs-xs); font-variant-numeric: tabular-nums; }
.bw-ct .bw-ct-paliers__table th, .bw-ct .bw-ct-paliers__table td { padding: var(--bw-s2) var(--bw-s1); border: 0; border-bottom: 1px solid #F3D3A1; background: transparent; text-align: left; vertical-align: top; }
.bw-ct .bw-ct-paliers__table thead th { color: var(--bw-ink-soft); font-weight: 700; }
.bw-ct .bw-ct-paliers__table tbody th { font-weight: 600; }
.bw-ct .bw-ct-paliers__table tr.est-courant th, .bw-ct .bw-ct-paliers__table tr.est-courant td { background: var(--bw-white); font-weight: 800; }

/* Bouton et mentions */
.bw-ct .bw-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--bw-s2); min-height: var(--bw-tap); padding: 0 var(--bw-s4); border: 1px solid transparent; border-radius: var(--bw-radius-m); font: 700 var(--bw-fs-sm)/1.2 var(--bw-font-text); text-decoration: none; text-align: center; white-space: normal; cursor: pointer; transition: background var(--bw-duree), border-color var(--bw-duree); }
.bw-ct .bw-btn--contrat { background: var(--bw-orange); color: var(--bw-ink); }
.bw-ct .bw-btn--contrat:hover, .bw-ct .bw-btn--contrat:focus { background: #E8932A; color: var(--bw-ink); }
.bw-ct .bw-btn--action { background: var(--bw-action-bg); color: var(--bw-white); }
.bw-ct .bw-btn--action:hover, .bw-ct .bw-btn--action:focus { background: var(--bw-action-bg-hover); color: var(--bw-white); }
.bw-ct .bw-btn--secondaire { background: var(--bw-white); color: var(--bw-ink); border-color: var(--bw-line-strong); }
.bw-ct .bw-btn--secondaire:hover, .bw-ct .bw-btn--secondaire:focus { border-color: var(--bw-ink); background: var(--bw-white); color: var(--bw-ink); }
.bw-ct .bw-btn:focus-visible { outline: none; box-shadow: var(--bw-focus); }
.bw-ct-valider { width: 100%; font-size: var(--bw-fs-base); }
.bw-ct-mentions { margin: 0; color: var(--bw-ink-soft); font-size: var(--bw-fs-xs); }
.bw-ct a { color: var(--bw-link); text-underline-offset: 0.18em; }
.bw-ct-offre .bw-ct-mentions a { color: var(--bw-orange-700); }

/* ---------- Mon compte ---------- */
.bw-ct-compte { display: grid; gap: var(--bw-s4); color: var(--bw-ink); font-family: var(--bw-font-text); font-size: var(--bw-fs-sm); line-height: var(--bw-lh-body); }
.bw-ct-compte p { margin: 0; }
.bw-ct-vide { display: grid; gap: var(--bw-s3); padding: var(--bw-s4); border: 1px dashed var(--bw-line-strong); border-radius: var(--bw-radius-l); }
.bw-ct-liste { display: grid; gap: var(--bw-s3); margin: 0; padding: 0; list-style: none; }
.bw-ct-carte { display: grid; gap: var(--bw-s2); padding: var(--bw-s4); border: 1px solid var(--bw-line); border-left: 5px solid var(--bw-orange); border-radius: var(--bw-radius-l); background: var(--bw-white); }
.bw-ct-carte__tete { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--bw-s2); }
.bw-ct .bw-ct-carte__titre { margin: 0; font-family: var(--bw-font-display); font-size: var(--bw-fs-h3); line-height: var(--bw-lh-tight); }
.bw-ct .bw-ct-carte__titre a { color: var(--bw-ink); text-decoration: none; }
.bw-ct .bw-ct-carte__titre a:hover { text-decoration: underline; }
.bw-ct-carte__num { color: var(--bw-ink-soft); font-size: var(--bw-fs-xs); }
.bw-ct-donnees { display: grid; gap: var(--bw-s1); margin: 0; }
.bw-ct-donnees > div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0 var(--bw-s3); padding: var(--bw-s1) 0; border-bottom: 1px solid var(--bw-line); }
.bw-ct-donnees dt { color: var(--bw-ink-soft); }
.bw-ct-donnees dd { margin: 0; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.bw-ct-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bw-s2); }
.bw-ct-renoncer-lien { display: inline-flex; align-items: center; min-height: var(--bw-tap); font-weight: 700; }

/* Statuts : toujours un libellé avec la couleur (UX-04) */
.bw-ct-statut { display: inline-flex; align-items: center; min-height: 1.5rem; padding: 0 var(--bw-s2); border-radius: var(--bw-radius-pill); background: #EFEDE6; color: var(--bw-ink); font-size: 0.75rem; font-weight: 700; white-space: nowrap; }
.bw-ct-statut--actif, .bw-ct-statut--payee, .bw-ct-statut--expediee { background: var(--bw-green-pale); color: var(--bw-green-700); }
.bw-ct-statut--pause, .bw-ct-statut--a_payer, .bw-ct-statut--en_attente { background: var(--bw-orange-pale); color: var(--bw-orange-700); }
.bw-ct-statut--annule, .bw-ct-statut--annulee { background: #FDECEA; color: var(--bw-error); }

/* Fiche d'un contrat */
.bw-ct-retour a { display: inline-flex; align-items: center; min-height: var(--bw-tap); font-weight: 600; }
.bw-ct-detail__tete { display: grid; gap: var(--bw-s1); }
.bw-ct-detail__offre { color: var(--bw-orange-700); font-size: var(--bw-fs-xs); font-weight: 700; letter-spacing: 0.02em; }
.bw-ct .bw-ct-detail__titre { margin: 0; font-family: var(--bw-font-display); font-size: var(--bw-fs-h2); line-height: var(--bw-lh-tight); }
.bw-ct .bw-ct-detail__titre a { color: var(--bw-ink); text-decoration: none; }
.bw-ct-detail__sous { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bw-s2); color: var(--bw-ink-soft); font-size: var(--bw-fs-xs); }
.bw-ct-bloc { display: grid; gap: var(--bw-s2); margin: 0; padding: var(--bw-s4); border: 1px solid var(--bw-line); border-radius: var(--bw-radius-l); background: var(--bw-white); min-width: 0; }
.bw-ct .bw-ct-bloc__titre { margin: 0; padding: 0; font-family: var(--bw-font-text); font-size: var(--bw-fs-base); font-weight: 800; }
.bw-ct-bloc--renoncer { border-color: var(--bw-ink); }
.bw-ct-bloc--echeance { background: var(--bw-orange-pale); border-color: #F3D3A1; }
.bw-ct-livraison { padding-bottom: var(--bw-s2); border-bottom: 1px solid var(--bw-line); }
.bw-ct-livraison:last-child { border-bottom: 0; padding-bottom: 0; }
.bw-ct-livraison__corps { display: grid; gap: 0.15rem; font-variant-numeric: tabular-nums; }
.bw-ct-livraison__tete { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bw-s2); }
.bw-ct-livraison--annulee .bw-ct-etape__num { background: #EFEDE6; color: var(--bw-ink-soft); }
.bw-ct-livraison--expediee .bw-ct-etape__num { background: var(--bw-green-pale); color: var(--bw-green-700); }
.bw-ct-documents { display: grid; gap: var(--bw-s2); margin: 0; padding-left: 1.1rem; }
.bw-ct .bw-ct-imprimer { min-height: var(--bw-tap); padding: 0; border: 0; background: none; color: var(--bw-link); font: 600 var(--bw-fs-sm)/1.3 var(--bw-font-text); text-decoration: underline; text-underline-offset: 0.18em; cursor: pointer; text-align: left; }

/* Renonciation : une colonne, champs de 16 px (pas de zoom sur iPhone) */
.bw-ct-form-renoncer { display: grid; gap: var(--bw-s3); max-width: 32rem; }
.bw-ct-form-renoncer legend { float: left; width: 100%; margin-bottom: var(--bw-s2); }
.bw-ct-champ { display: grid; gap: var(--bw-s1); }
.bw-ct-champ label { font-weight: 700; }
.bw-ct .bw-ct-champ input { width: 100%; min-height: var(--bw-tap); padding: 0 var(--bw-s3); border: 1px solid var(--bw-line-strong); border-radius: var(--bw-radius-s); background: var(--bw-white); color: var(--bw-ink); font-size: 1rem; }
.bw-ct .bw-ct-champ input:focus-visible { outline: none; box-shadow: var(--bw-focus); }

/* Rappel sur le tableau de bord du compte */
.bw-ct-rappel { display: grid; gap: var(--bw-s2); margin: var(--bw-s4) 0; padding: var(--bw-s3) var(--bw-s4); border-left: 4px solid var(--bw-orange); background: var(--bw-orange-pale); font-size: var(--bw-fs-sm); }
.bw-ct-rappel p { margin: 0; }
.bw-ct-rappel a { font-weight: 700; }

/* ---------- Panier et paiement ---------- */
.bw-ct-etiquette { display: inline-block; margin-left: var(--bw-s1); padding: 0 var(--bw-s2); border-radius: var(--bw-radius-pill); background: var(--bw-orange-pale); color: var(--bw-orange-700); font-size: 0.75rem; font-weight: 700; }
.bw-ct-qte { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bw-ct-engagement { padding: var(--bw-s3); border: 1px solid #F3D3A1; border-radius: var(--bw-radius-m); background: var(--bw-orange-pale); }

/* ---------- Paiement : contrat à lire et à signer (CTR-21) ---------- */
.bw-ct-signature { display: grid; gap: var(--bw-s3); margin: 0 0 var(--bw-s4); padding: var(--bw-s4); border: 1px solid #F3D3A1; border-radius: var(--bw-radius-l); background: var(--bw-orange-pale); color: var(--bw-ink); font-family: var(--bw-font-text); font-size: var(--bw-fs-sm); }
.bw-ct .bw-ct-signature__titre { margin: 0; font-family: var(--bw-font-display); font-size: var(--bw-fs-h3); line-height: var(--bw-lh-tight); }
.bw-ct .bw-ct-signature__texte { max-height: 22rem; overflow-y: auto; padding: var(--bw-s4); border: 1px solid var(--bw-line-strong); border-radius: var(--bw-radius-m); background: var(--bw-white); font-size: var(--bw-fs-sm); line-height: var(--bw-lh-body); overscroll-behavior: contain; }
.bw-ct .bw-ct-signature__texte:focus-visible { outline: none; box-shadow: var(--bw-focus); }
.bw-ct .bw-ct-signature__texte--document { max-height: none; }
.bw-ct-texte-contrat h3 { margin: 0 0 var(--bw-s1); font-size: var(--bw-fs-md); }
.bw-ct-texte-contrat h4 { margin: var(--bw-s4) 0 var(--bw-s1); font-family: var(--bw-font-text); font-size: var(--bw-fs-sm); font-weight: 800; }
.bw-ct-texte-contrat p { margin: 0 0 var(--bw-s2); }
.bw-ct-texte-contrat__ref { color: var(--bw-ink-soft); font-size: var(--bw-fs-xs); }
.bw-ct .bw-ct-texte-contrat table { width: 100%; margin: var(--bw-s2) 0; border-collapse: collapse; font-size: var(--bw-fs-xs); }
.bw-ct .bw-ct-texte-contrat th, .bw-ct .bw-ct-texte-contrat td { padding: var(--bw-s1) var(--bw-s2); border: 1px solid var(--bw-line); background: transparent; text-align: left; vertical-align: top; }
.bw-ct-signature__etat { margin: 0; color: var(--bw-orange-700); font-size: var(--bw-fs-xs); font-weight: 700; }
.bw-ct .bw-ct-signature__case input[disabled] + span { color: var(--bw-ink-soft); }
.bw-ct .bw-ct-signature__nom input { width: 100%; min-height: var(--bw-tap); padding: 0 var(--bw-s3); border: 1px solid var(--bw-line-strong); border-radius: var(--bw-radius-s); background: var(--bw-white); font-size: 1rem; }
.bw-ct-preuve { display: grid; gap: var(--bw-s1); margin-top: var(--bw-s3); padding: var(--bw-s3); border-left: 4px solid var(--bw-orange-700); background: var(--bw-orange-pale); font-size: var(--bw-fs-xs); overflow-wrap: anywhere; }
.bw-ct-preuve p { margin: 0; }
.bw-ct-donnees__total { border-top: 2px solid var(--bw-ink); }

/* ---------- Panier : proposition de contrat (CTR-22) ---------- */
.bw-ct-proposition { display: grid; gap: var(--bw-s2); margin: var(--bw-s4) 0; padding: var(--bw-s4); border: 1px solid #F3D3A1; border-radius: var(--bw-radius-l); background: var(--bw-orange-pale); color: var(--bw-ink); font-size: var(--bw-fs-sm); }
.bw-ct .bw-ct-proposition__titre { margin: 0; font-family: var(--bw-font-display); font-size: var(--bw-fs-h3); line-height: var(--bw-lh-tight); }
.bw-ct-proposition p { margin: 0; }

@media (min-width: 600px) {
	.bw-ct-offre { padding: var(--bw-s5); }
	.bw-ct-valider { width: auto; justify-self: start; }
	.bw-ct-donnees--large > div { display: grid; grid-template-columns: 14rem 1fr; }
	.bw-ct-donnees--large dd { text-align: left; }
}

/* Impression du récapitulatif : le contrat seul */
@media print {
	.bw-entete, .bw-pied, .woocommerce-MyAccount-navigation, .bw-ct-retour, .bw-ct-actions, .bw-ct-bloc--renoncer .bw-btn, .bw-ct-imprimer, .bw-bascule-prix { display: none !important; }
	.bw-ct-bloc, .bw-ct-carte { break-inside: avoid; border-color: #999; }
	html:not([data-bw-prix="ht"]) .bw-ct .bw-p-ht, html[data-bw-prix="ht"] .bw-ct .bw-p-ttc { display: inline !important; }
	.bw-ct .bw-p-ht::before { content: " · "; }
}
@media (prefers-reduced-motion: reduce) {
	.bw-ct * { transition: none !important; }
}
