/* =========================================================================
   VD Studio — paiement.css (octobre 2026)
   Pages privées : « Régler ma facture » (/paiement/…) et administration
   des paiements (/admin). Chargée UNIQUEMENT par ces deux pages, après
   style.css : mêmes couleurs, police, rayons, ombres et composants
   (variables du design system), aucune règle globale modifiée.

   Sommaire
   1. Mise en page de la page de paiement
   2. Carte récapitulative (référence, montant, statut)
   3. Moyens de paiement (accordéon)
   4. Virement : coordonnées et boutons de copie
   5. États : chargement, succès, attente, erreur, voile de traitement
   6. Réassurance et colonne latérale
   7. Administration
   8. Responsive et mouvement réduit
   ========================================================================= */

/* ---------- 1. Mise en page ---------- */
/* L'attribut hidden l'emporte toujours (les blocs ont leur propre « display »). */
.paiement-page [hidden], .admin-page [hidden] { display: none !important; }

.paiement-section {
  background:
    radial-gradient(1100px 420px at 85% -10%, rgba(37, 108, 241, .09), transparent 60%),
    var(--brume);
  padding: clamp(36px, 6vw, 72px) 0 clamp(56px, 8vw, 96px);
  min-height: 70vh;
}
.paiement-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(28px, 4vw, 56px); align-items: start; }
.paiement-colonne { max-width: 760px; min-width: 0; width: 100%; margin-inline: auto; }
.paiement-entete { margin-bottom: 24px; }
.paiement-entete h1 { font-size: clamp(2rem, 1.4rem + 2.2vw, 2.9rem); margin-bottom: 10px; }
.paiement-intro { color: var(--texte-doux); margin: 0; font-size: 1.05rem; }
.eyebrow-securise { display: inline-flex; align-items: center; gap: 6px; }
.eyebrow-securise svg { width: 15px; height: 15px; }

.paiement-carte {
  background: #fff; border: 1px solid var(--bordure); border-radius: 22px;
  padding: clamp(20px, 3.4vw, 34px); box-shadow: var(--ombre-soft);
  margin-bottom: 18px; animation: apparait var(--t-normal);
}
.paiement-titre-carte { font-size: clamp(1.25rem, 1.1rem + .6vw, 1.55rem); margin: 0 0 6px; }
.paiement-titre-carte:focus { outline: none; }
.paiement-sous-titre { color: var(--texte-doux); margin: 0 0 20px; }
.paiement-note { color: var(--texte-doux); font-size: .9rem; line-height: 1.5; margin: 14px 0 0; }
.paiement-note a { text-decoration: underline; text-underline-offset: 3px; }
.paiement-note a.btn { text-decoration: none; }
.mono { font-family: var(--mono); letter-spacing: .02em; }
.btn-bloc { width: 100%; }

/* ---------- 2. Récapitulatif ---------- */
.paiement-doc-tete { margin-bottom: 22px; }
.statut-pastille {
  display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; border-radius: var(--r-full);
  font-size: .86rem; font-weight: 700; background: var(--bleu-pale); color: #1B4FB3; white-space: nowrap;
}
.statut-pastille::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.statut-pastille[data-statut="PAYEE"] { background: var(--vert-fond); color: #146A38; }
.statut-pastille[data-statut="VIREMENT_EN_ATTENTE"], .statut-pastille[data-statut="PAIEMENT_EN_COURS"] { background: #FFF4DE; color: #8A5300; }
.statut-pastille[data-statut="ANNULEE"], .statut-pastille[data-statut="REMBOURSEE"] { background: #EEF1F5; color: var(--texte-doux); }

.resume-grille { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px 28px; align-items: end; }
.resume-ref { margin: 0; }
.champ-avec-bouton { display: flex; gap: 8px; }
.input-lecture {
  background: var(--blanc-casse) !important; color: var(--texte-fort); font-family: var(--mono);
  font-size: 1.02rem; letter-spacing: .03em; cursor: text; user-select: all;
}
.input-lecture:focus { border-color: var(--bordure-forte) !important; box-shadow: 0 0 0 4px var(--bleu-pale) !important; }
.resume-montant {
  display: flex; flex-direction: column; align-items: flex-end; text-align: right;
  padding: 14px 18px; border-radius: 16px; background: var(--nuit); color: #fff; min-width: 210px;
}
.resume-montant-lib { font-size: .84rem; color: var(--texte-clair-doux); font-weight: 600; }
.resume-montant-val { color: #fff; font-size: clamp(1.9rem, 1.5rem + 1.4vw, 2.5rem); font-weight: 800; letter-spacing: -.025em; line-height: 1.15; }
.resume-montant-note { font-size: .74rem; color: var(--texte-clair-doux); margin-top: 2px; }

/* ---------- 3. Moyens de paiement ---------- */
.moyens { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.moyen {
  border: 1.5px solid var(--bordure); border-radius: 16px; background: #fff; overflow: hidden;
  transition: border-color var(--t-normal), box-shadow var(--t-normal);
}
.moyen:hover { border-color: var(--bordure-forte); }
.moyen.ouvert { border-color: var(--bleu); box-shadow: 0 0 0 4px var(--bleu-pale); }
.moyen-tete {
  width: 100%; display: flex; align-items: center; gap: 14px; padding: 16px 18px;
  background: none; border: 0; font: inherit; text-align: left; cursor: pointer; color: var(--texte-fort);
}
.moyen-tete:focus-visible { outline: 3px solid var(--bleu); outline-offset: -3px; border-radius: 14px; }
.moyen-tete:disabled { cursor: not-allowed; }
.moyen-icone {
  flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px;
  background: var(--bleu-pale); color: var(--bleu-texte);
}
.moyen-texte { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }
.moyen-texte strong { font-size: 1.02rem; }
.moyen-texte span { font-size: .88rem; color: var(--texte-doux); line-height: 1.4; }
.moyen-chevron { flex: none; color: var(--texte-doux); transition: transform var(--t-normal); }
.moyen.ouvert .moyen-chevron { transform: rotate(180deg); color: var(--bleu-texte); }
.moyen-panneau { padding: 0 18px 18px 76px; animation: apparait var(--t-normal); }
.moyen-panneau > p { margin: 0 0 14px; color: var(--texte); font-size: .95rem; line-height: 1.55; }
.moyen--verrouille { opacity: .5; }
.moyen--inactif { background: var(--blanc-casse); border-style: dashed; }
.moyen--inactif .moyen-tete { cursor: default; color: var(--texte-doux); }
.moyen--inactif .moyen-icone { background: #EEF1F5; color: var(--texte-doux); }
#moyen-alma { animation: apparait var(--t-normal); }   /* retour en douceur à la fermeture du virement */
.badge-prochainement {
  flex: none; padding: 5px 11px; border-radius: var(--r-full); font-size: .78rem; font-weight: 700;
  background: #fff; color: var(--texte-doux); border: 1px solid var(--bordure-forte); white-space: nowrap;
}
.paypal-zone { min-height: 52px; position: relative; }
.paypal-zone.en-chargement::before {
  content: attr(data-chargement); display: flex; align-items: center; justify-content: center; min-height: 52px;
  border-radius: 12px; background: var(--blanc-casse); color: var(--texte-doux); font-size: .9rem;
  animation: pulse 1.4s ease-in-out infinite;
}
.paypal-zone--compacte { min-height: 0; }
/* Bouton PayPal en cours d'affichage : seule la mention de chargement occupe la place
   (aucun double affichage ni saut de mise en page à l'apparition du bouton). */
.paypal-zone.en-chargement > * { position: absolute; inset: 0 0 auto 0; opacity: 0; pointer-events: none; }
/* Carte bancaire : préparation du formulaire sécurisé PayPal (après le clic sur le bouton carte). */
.carte-preparation {
  display: grid; gap: 10px; margin-top: 12px; padding: 16px; border: 1px solid var(--bordure);
  border-radius: 12px; background: var(--blanc-casse); animation: apparait var(--t-normal);
}
.carte-preparation-tete { display: flex; align-items: center; gap: 10px; margin: 0 0 4px; color: var(--texte); font-size: .92rem; font-weight: 600; }
.carte-preparation .carte-squelette { height: 44px; border-radius: 10px; }
.carte-squelette-ligne { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.carte-echec { margin-top: 12px; padding: 14px 16px; border-radius: 12px; background: #FFF4DE; color: #6B4300; font-size: .92rem; line-height: 1.5; animation: apparait var(--t-normal); }
.carte-echec p { margin: 0 0 10px; }
.paypal-zone .paiement-note .btn { margin-top: 8px; }
.paylater { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--bordure); }
.paylater-titre { margin: 0; font-weight: 700; color: var(--texte-fort); font-size: .95rem; }
.paylater .paiement-note { margin: 4px 0 12px; }
#message-paylater { margin-top: 10px; }
.applepay-zone apple-pay-button {
  --apple-pay-button-width: 100%; --apple-pay-button-height: 48px;
  --apple-pay-button-border-radius: 12px; --apple-pay-button-padding: 0;
  display: block;
}

/* ---------- 4. Virement ---------- */
.virement-consigne {
  display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; margin-bottom: 14px;
  border-radius: 14px; background: #FFF8E8; border: 1px solid #F3DCA8; color: #6B4A00; font-size: .93rem; line-height: 1.5;
}
.virement-consigne > strong { color: #5C3F00; font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; }
.copie-liste { border: 1px solid var(--bordure); border-radius: 14px; overflow: hidden; }
.copie-ligne {
  display: grid; grid-template-columns: 150px minmax(0, 1fr) auto; align-items: center; gap: 12px;
  padding: 11px 14px; border-bottom: 1px solid var(--bordure); background: #fff;
}
.copie-ligne:last-child { border-bottom: 0; }
.copie-ligne--fixe { grid-template-columns: 150px minmax(0, 1fr); }
.copie-libelle { font-size: .86rem; color: var(--texte-doux); }
.copie-valeur { font-family: var(--mono); font-size: .98rem; color: var(--texte-fort); font-weight: 600; overflow-wrap: anywhere; user-select: all; }
.copie-ligne--fixe .copie-valeur { font-family: var(--police); font-weight: 500; user-select: text; }
.copie-btn {
  display: inline-flex; align-items: center; gap: 6px; padding: 7px 11px; min-height: 36px;
  border-radius: 10px; border: 1.5px solid var(--bordure-forte); background: #fff; color: var(--texte-fort);
  font: inherit; font-size: .84rem; font-weight: 600; cursor: pointer; white-space: nowrap;
  transition: border-color var(--t-rapide), background var(--t-rapide), color var(--t-rapide);
}
.copie-btn:hover { border-color: var(--marine); background: var(--brume); }
.copie-btn:focus-visible { outline: 3px solid var(--bleu); outline-offset: 2px; }
.copie-btn.copie-ok { border-color: var(--vert); color: var(--vert); background: var(--vert-fond); }
.copie-btn--champ { min-height: 50px; padding-inline: 14px; }
.virement-changer { margin-top: 16px; }
.virement-changer summary { cursor: pointer; color: var(--texte-doux); font-size: .9rem; text-decoration: underline; text-underline-offset: 3px; }
.virement-changer summary:focus-visible { outline: 2px solid var(--bleu); outline-offset: 3px; border-radius: 4px; }
.virement-changer details[open] summary { margin-bottom: 12px; }
.case-compacte { margin-bottom: 12px; padding: 12px 14px; }

/* ---------- 5. États ---------- */
.paiement-squelette { display: grid; gap: 14px; }
.squelette { display: block; height: 14px; border-radius: 8px; background: linear-gradient(90deg, #EEF2F7 0%, #F7F9FC 50%, #EEF2F7 100%); background-size: 200% 100%; animation: brillance 1.3s linear infinite; }
.squelette-court { width: 32%; }
.squelette-long { width: 78%; }
.squelette-montant { width: 46%; height: 42px; border-radius: 12px; }
.paiement-carte--message, .paiement-succes { text-align: center; }
.paiement-carte--message .paiement-note, .paiement-succes .paiement-note { margin-inline: auto; max-width: 52ch; }
.etat-icone { display: grid; place-items: center; width: 68px; height: 68px; border-radius: 50%; margin: 4px auto 16px; }
.etat-icone--succes { background: var(--vert-fond); color: var(--vert); animation: pose-coche .5s var(--ease-doux); }
.etat-icone--alerte { background: var(--rouge-fond); color: var(--rouge); }
.etat-icone--attente { background: #FFF4DE; color: #A36300; }
/* Vérification du paiement après PayPal : animation de chargement, même gabarit que les icônes d'état. */
.verification-anim { display: grid; place-items: center; width: 68px; height: 68px; border-radius: 50%; margin: 4px auto 16px; background: var(--brume); }
.paiement-recap { max-width: 460px; margin: 18px auto 0; text-align: left; border: 1px solid var(--bordure); border-radius: 14px; padding: 6px 18px; background: var(--brume); }
.paiement-recap .recap-ligne { border-bottom: 1px solid var(--bordure); padding: 10px 0; }
.paiement-recap .recap-ligne:last-child { border-bottom: 0; }
.lien-colle { margin-top: 18px; }
.lien-colle label { display: block; font-weight: 600; color: var(--texte-fort); margin-bottom: 8px; font-size: .95rem; }
.lien-colle-ligne { display: flex; gap: 10px; }
.lien-colle-ligne .input { flex: 1 1 auto; min-width: 0; }

.paiement-voile {
  position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; padding: 20px;
  background: rgba(15, 28, 46, .55); backdrop-filter: blur(3px); animation: apparait var(--t-rapide);
}
.paiement-voile[hidden] { display: none; }
.paiement-voile-carte { background: #fff; border-radius: 20px; padding: 28px 30px; max-width: 380px; text-align: center; box-shadow: var(--ombre-xl); }
.paiement-voile-carte p { margin: 0; color: var(--texte-doux); }
.paiement-voile-titre { font-weight: 800; color: var(--texte-fort) !important; font-size: 1.15rem; margin: 14px 0 6px !important; }
.spinner-grand { width: 34px; height: 34px; border-width: 3.5px; }
body.paiement-voile-actif { overflow: hidden; }

/* ---------- 6. Réassurance et colonne ---------- */
.paiement-reassurance { list-style: none; margin: 22px 0 0; padding: 0; display: grid; gap: 10px; }
.paiement-reassurance li { display: flex; gap: 10px; align-items: flex-start; color: var(--texte-doux); font-size: .88rem; line-height: 1.45; }
.paiement-reassurance svg { flex: none; color: var(--vert); margin-top: 1px; }
.paiement-aside { position: sticky; top: calc(var(--header-h) + 24px); }
.paiement-aside-carte { background: var(--nuit); color: var(--texte-clair); border-radius: 22px; padding: 28px 26px; }
.paiement-aside-carte h2 { color: #fff; font-size: 1.1rem; margin-bottom: 16px; }
.paiement-aside-carte p { font-size: .86rem; color: var(--texte-clair-doux); margin: 18px 0 0; }
.paiement-aside-carte a { color: var(--bleu-vif); text-decoration: underline; text-underline-offset: 3px; }
.paiement-aside-carte a:hover { color: #fff; }
.paiement-etapes { list-style: none; margin: 0; padding: 0; counter-reset: etape; display: grid; gap: 14px; }
.paiement-etapes li { counter-increment: etape; position: relative; padding-left: 40px; display: flex; flex-direction: column; gap: 2px; font-size: .9rem; }
.paiement-etapes li::before {
  content: counter(etape); position: absolute; left: 0; top: 0; width: 26px; height: 26px; border-radius: 50%;
  display: grid; place-items: center; background: var(--nuit-3); color: var(--bleu-vif); font-weight: 800; font-size: .8rem;
}
.paiement-etapes strong { color: #fff; }
.paiement-etapes span { color: var(--texte-clair-doux); line-height: 1.45; }

@keyframes brillance { from { background-position: 200% 0; } to { background-position: -200% 0; } }
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .55; } }
@keyframes pose-coche { from { transform: scale(.6); opacity: 0; } to { transform: scale(1); opacity: 1; } }

/* ---------- 7. Administration ---------- */
.admin-page { background: var(--brume); min-height: 100vh; }
.admin-barre { background: var(--nuit); color: #fff; }
.admin-barre-inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; }
.admin-barre img { display: block; height: 30px; width: auto; }
.admin-barre-titre { display: flex; align-items: center; gap: 14px; }
.admin-barre-titre span { color: var(--texte-clair-doux); font-weight: 600; font-size: .95rem; padding-left: 14px; border-left: 1px solid var(--bordure-nuit); }
.admin-barre-actions { display: flex; align-items: center; gap: 12px; font-size: .9rem; color: var(--texte-clair-doux); }
.admin-main { padding: 28px 0 64px; }
.admin-page .wrap { max-width: 1480px; }
.admin-dialogue h3 { font-size: 1rem; margin: 22px 0 10px; }
.admin-grille { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 24px; align-items: start; }
.admin-grille > * { min-width: 0; }   /* le tableau ne peut jamais élargir la page */
.admin-carte { background: #fff; border: 1px solid var(--bordure); border-radius: 18px; padding: 22px; box-shadow: var(--ombre-sm); margin-bottom: 20px; }
.admin-carte h2 { font-size: 1.15rem; margin: 0 0 14px; }
.admin-carte h3 { font-size: 1rem; margin: 18px 0 10px; }
.admin-connexion { max-width: 420px; margin: 8vh auto 0; }
.admin-connexion .champ input { font-size: 1rem; }
.admin-code { letter-spacing: .4em; font-variant-numeric: tabular-nums; }
.admin-alertes { display: grid; gap: 8px; margin-bottom: 18px; }
.admin-alertes .message { margin: 0; }
.admin-outils { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 14px; }
.admin-outils .input, .admin-outils .select { min-height: 42px; padding-top: 8px; padding-bottom: 8px; width: auto; }
.admin-outils .input { flex: 1 1 220px; }
.admin-outils .btn, .admin-actions .btn, .admin-carte .btn-petit { min-height: 40px; padding: 0 14px; font-size: .9rem; }
.admin-compteurs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.admin-compteur { padding: 6px 12px; border-radius: var(--r-full); background: #fff; border: 1px solid var(--bordure); font-size: .84rem; color: var(--texte-doux); }
.admin-compteur strong { color: var(--texte-fort); margin-left: 4px; }
.admin-table-wrap { overflow-x: auto; border: 1px solid var(--bordure); border-radius: 14px; background: #fff; }
.admin-table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.admin-table th { text-align: left; font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: var(--texte-doux); background: var(--blanc-casse); padding: 10px 12px; border-bottom: 1px solid var(--bordure); white-space: nowrap; }
.admin-table td { padding: 11px 12px; border-bottom: 1px solid var(--bordure); vertical-align: middle; color: var(--texte-fort); }
.admin-table tr:last-child td { border-bottom: 0; }
.admin-table tr:hover td { background: #FAFBFD; }
.admin-table .num { text-align: right; white-space: nowrap; }
.admin-table .ref { font-family: var(--mono); font-weight: 600; min-width: 12ch; }
.admin-table .ref-texte { white-space: nowrap; }
.admin-table .ref-longue { white-space: normal; overflow-wrap: anywhere; }   /* au-delà de 20 caractères seulement */
.admin-table .col-moyen { min-width: 8.5rem; }
.admin-table .col-statut, .admin-table .col-action { white-space: nowrap; }
.admin-table .col-action { text-align: right; width: 1%; }
.admin-sous { display: block; margin-top: 3px; font-family: var(--police); font-weight: 400; font-size: .8rem; color: var(--texte-doux); white-space: nowrap; }
.admin-transaction { font-family: var(--mono); font-size: .76rem; }
.admin-table .doux { color: var(--texte-doux); font-size: .84rem; }
.admin-table .admin-vide { padding: 28px; text-align: center; color: var(--texte-doux); }
.anomalie-pastille { display: inline-block; margin-left: 6px; padding: 2px 8px; border-radius: var(--r-full); background: var(--rouge-fond); color: #8F2A22; font-size: .74rem; font-weight: 700; }
.admin-resultat { margin-top: 16px; padding: 14px; border-radius: 14px; background: var(--vert-fond); border: 1px solid #9FDDB4; }
.admin-resultat p { margin: 0 0 8px; color: #146A38; font-weight: 600; }
.admin-lien { display: flex; gap: 8px; align-items: stretch; }
.admin-lien input { flex: 1 1 auto; min-width: 0; font-family: var(--mono); font-size: .82rem; min-height: 42px; padding: 8px 10px; }
.admin-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.admin-dialogue { border: 0; border-radius: 20px; padding: 0; width: min(760px, calc(100vw - 32px)); max-height: calc(100vh - 48px); box-shadow: var(--ombre-xl); }
.admin-dialogue::backdrop { background: rgba(15, 28, 46, .5); backdrop-filter: blur(2px); }
.admin-dialogue-tete { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--bordure); position: sticky; top: 0; background: #fff; z-index: 1; }
.admin-dialogue-tete h2 { margin: 0; font-size: 1.2rem; }
.admin-dialogue-corps { padding: 18px 22px 24px; }
.admin-fermer { background: none; border: 0; font-size: 1.6rem; line-height: 1; cursor: pointer; color: var(--texte-doux); padding: 4px 8px; border-radius: 8px; }
.admin-fermer:focus-visible { outline: 3px solid var(--bleu); }
.admin-infos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; margin-bottom: 8px; }
.admin-infos .recap-ligne { border-bottom: 1px solid var(--bordure); padding: 8px 0; font-size: .9rem; }
.admin-historique { list-style: none; margin: 0; padding: 0; border-left: 2px solid var(--bordure); }
.admin-historique li { position: relative; padding: 0 0 12px 16px; font-size: .87rem; color: var(--texte); }
.admin-historique li::before { content: ""; position: absolute; left: -6px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: var(--bordure-forte); }
.admin-historique time { display: block; color: var(--texte-doux); font-size: .8rem; }
.admin-historique code { font-size: .78rem; color: var(--texte-doux); }
.admin-formulaire-action { margin-top: 12px; padding: 14px; border-radius: 14px; background: var(--brume); border: 1px solid var(--bordure); }
.admin-formulaire-action[hidden] { display: none; }
.admin-formulaire-action .grille-champs { margin-bottom: 0; }

/* ---------- 8. Responsive et mouvement réduit ---------- */
@media (max-width: 1100px) {
  .paiement-layout { grid-template-columns: minmax(0, 1fr); }
  .paiement-aside { position: static; max-width: 760px; width: 100%; margin-inline: auto; }
}
/* Administration : formulaire au-dessus de la liste tant que la largeur ne permet pas les deux côte à côte. */
@media (max-width: 1239px) {
  .admin-grille { grid-template-columns: minmax(0, 1fr); }
}
/* Administration sur petit écran : chaque demande devient une fiche (aucun défilement horizontal). */
@media (max-width: 860px) {
  .admin-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .admin-table, .admin-table tbody { display: block; }
  .admin-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; padding: 12px 14px; border-bottom: 1px solid var(--bordure); }
  .admin-table tr:last-child { border-bottom: 0; }
  .admin-table tr:hover td { background: none; }
  .admin-table td { display: block; padding: 0; border: 0; min-width: 0; }
  .admin-table .ref, .admin-table .col-moyen { grid-column: 1; }
  .admin-table .col-montant, .admin-table .col-statut { grid-column: 2; text-align: right; }
  .admin-table .col-montant { font-weight: 700; }
  .admin-table .col-moyen { min-width: 0; }
  .admin-table .ref-texte { white-space: normal; overflow-wrap: anywhere; }
  .admin-table .col-action { grid-column: 1 / -1; text-align: left; width: auto; }
  .admin-table .admin-vide { grid-column: 1 / -1; padding: 16px 0; }
}
@media (max-width: 640px) {
  .resume-grille { grid-template-columns: minmax(0, 1fr); }
  .resume-montant { align-items: flex-start; text-align: left; min-width: 0; }
  .moyen-tete { padding: 14px; gap: 12px; }
  .moyen-icone { width: 40px; height: 40px; }
  .moyen-panneau { padding: 0 14px 16px; }
  .copie-ligne { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; }
  .copie-ligne .copie-libelle { grid-column: 1 / -1; }
  .copie-ligne--fixe { grid-template-columns: minmax(0, 1fr); }
  .lien-colle-ligne { flex-direction: column; }
  .admin-infos { grid-template-columns: minmax(0, 1fr); }
  .admin-barre-titre span { display: none; }
  .badge-prochainement { padding: 4px 8px; }
}
@media (max-width: 380px) {
  .champ-avec-bouton { flex-direction: column; }
  .copie-btn span { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .paiement-carte, .moyen-panneau, .paiement-voile, .etat-icone--succes { animation: none; }
  .squelette, .paypal-zone.en-chargement::before { animation: none; }
  .moyen-chevron { transition: none; }
}
@media print {
  .site-header, .site-footer, .paiement-aside, #bloc-moyens, .paiement-voile { display: none !important; }
}

/* Petits boutons (administration) */
.btn-petit { min-height: 38px; padding: 0 14px; font-size: .88rem; border-radius: 10px; }
