/* Ventes sur iPhone : lignes à glisser (SwipeRow.js) et fiche d'une vente (screens/ventes/SaleDetail.js).
   Repris de la maquette validée par Dylan le 27/09/2026 (D5 : consulter ouvre une page, modifier une feuille). */

/* ---- Ligne à glisser, comme dans Mail (SwipeRow.js) : la ligne glisse, l'action apparaît dessous ---- */
.swipe-row { position: relative; overflow: hidden; touch-action: pan-y; }
/* Pas de will-change ici : un calque par ligne (une quarantaine dans Ventes) gelait 2 images au départ de chaque retour
   vers la liste (vidéos de Dylan du 28/09). SwipeRow.js ne donne un calque qu'à la ligne qui glisse ou reste ouverte. */
.swipe-fg { position: relative; z-index: 1; background: var(--card); }
.swipe-bg { position: absolute; inset: 0; }
.sb {
  position: absolute; top: 0; bottom: 0; width: 100%; border: 0; padding: 0; display: flex; align-items: center; visibility: hidden;
  color: #fff; font: inherit; font-size: 12.5px; font-weight: 650; cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.sb-l { left: 0; justify-content: flex-start; }
.sb-r { right: 0; justify-content: flex-end; }
.dir-l .sb-l, .dir-r .sb-r { visibility: visible; }
.sb-in { width: 88px; display: grid; place-items: center; gap: 2px; transition: transform 0.2s var(--ease); }
.sa-green { background: #1FA97A; }
.sa-red { background: #E5484D; }
.sb:disabled { background: var(--slate); }
/* Ligne de liste (List.js, Documents) : sur écran tactile, iOS laissait le fond « survolé » collé après un glissé.
   Fond au toucher seulement, et aucun pendant que la ligne est déplacée ou ouverte. */
@media (hover: none) {
  .swipe-row .row.is-clickable:hover { background: transparent; }
  .swipe-row .row.is-clickable:active { background: var(--fill-2); }
}
.swipe-row.dir-l .row.is-clickable, .swipe-row.dir-r .row.is-clickable { background: transparent; }

/* ---- Fiche d'une vente ---- */
.dh { display: grid; justify-items: center; text-align: center; gap: 4px; margin: 4px 0 var(--s-5); }
.dh-av { width: 64px; height: 64px; font-size: 30px; margin-bottom: 6px; }
.dh-name { margin: 0; font-size: 26px; font-weight: 750; letter-spacing: -0.02em; }
.dh-sub { margin: 0; color: var(--text-2); font-size: 15px; }
.dh-amt { margin: 6px 0 4px; font-size: 36px; font-weight: 750; letter-spacing: -0.03em; }
.prog-top { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-3); margin-bottom: var(--s-2); font-size: 15px; color: var(--text-2); }
.prog-top b { color: var(--text); font-size: 17px; }
.prog-top small { font-size: 13px; font-weight: 500; color: var(--text-3); }
.fiche .card .caption { margin-top: var(--s-2); }
.sec-t { margin: var(--s-6) 4px var(--s-2); font-size: 20px; font-weight: 700; letter-spacing: -0.015em; }
.ech { cursor: pointer; }
.ech:disabled { cursor: default; opacity: 1; }
.chk {
  width: 26px; height: 26px; flex: none; border-radius: 50%; box-shadow: inset 0 0 0 2px var(--fill-2);
  display: grid; place-items: center; color: transparent; transition: background 0.25s var(--ease), box-shadow 0.25s var(--ease), color 0.2s;
}
.done .chk { background: var(--green); box-shadow: none; color: #fff; }
.done.pop .chk { animation: chkPop 0.45s var(--spring-snappy); } /* seulement l'échéance qu'on vient de cocher */
@keyframes chkPop { 0% { transform: scale(0.7); } 60% { transform: scale(1.15); } 100% { transform: scale(1); } }
.kv { display: flex; align-items: center; gap: var(--s-3); min-height: 50px; padding: var(--s-2) var(--s-4); }
.list li + li.kv { border-top: 1px solid var(--line); }
.kv .k { flex: 1; color: var(--text-2); font-size: 15px; }
.kv .v { font-weight: 600; font-size: 15px; text-align: right; }
.fiche .actions { margin-top: var(--s-5); }
/* Écran tactile : pas de fond « survolé » qui reste collé après un toucher. La surbrillance vient seulement de l'app
   (lp-press, longPress.js) : iOS l'allumait et l'éteignait à contretemps, la ligne clignotait (Dylan, 28/09). */
@media (hover: none) { .sale-row:hover, .sale-row:active { background: transparent; } }
/* Appui long sur une vente : la surbrillance est tenue par l'app jusqu'à l'ouverture du menu. Sans cela, iOS l'éteignait
   un instant avant le menu : la ligne s'éclairait, s'assombrissait, puis se rééclairait (retour de Dylan du 28/09). */
.sale-row.lp-press, .sale-row.lp-lit { background: var(--fill-2); }
