/* ============================================================
   Recette V6 — Listes de documents : colonnes par profil, types
   cumulables, documents transformés masqués, sélection et actions
   groupées, menu contextuel, filtres favoris.
   Fichier séparé d'app.css : il reprend les jetons Aurora (--grad,
   --v1…, --r-lg…) sans toucher aux règles communes.
   ============================================================ */

/* ---------- Éléments flottants de la liste ----------
   L'entrée animée de `.app-content` (animation `rise`, conservée après la fin
   par `both`) en fait un bloc conteneur et un contexte d'empilement : la barre
   de sélection, le menu contextuel et le panneau « Colonnes », en position
   fixe, se calaient alors sur la zone de contenu (et passaient sous la barre du
   haut) au lieu de l'écran. L'animation joue toujours, mais ne persiste plus. */
.app-content:has(.liste-docs) { animation-fill-mode: backwards; }

/* ---------- Barre d'outils de la liste ---------- */
.liste-outils { row-gap: .5rem; }

/* Interrupteur « Afficher les documents transformés » (L5) */
.liste-bascule {
    display: inline-flex; align-items: center; gap: .5rem; padding: .3rem .75rem .3rem .45rem;
    border-radius: 999px; border: 1.5px solid var(--line); background: rgba(255,255,255,.7);
    color: var(--ink-soft); font-size: .8rem; font-weight: 600; text-decoration: none; white-space: nowrap;
    transition: background .2s, border-color .2s, color .2s;
}
.liste-bascule:hover { background: #fff; border-color: #dcdbea; color: var(--ink); }
.liste-bascule__piste {
    position: relative; width: 30px; height: 17px; border-radius: 999px; background: #dfe0ec; flex: 0 0 auto;
    transition: background .2s;
}
.liste-bascule__pastille {
    position: absolute; top: 2px; left: 2px; width: 13px; height: 13px; border-radius: 50%; background: #fff;
    box-shadow: 0 1px 3px rgba(20,18,50,.25); transition: transform .2s cubic-bezier(.34,1.3,.5,1);
}
.liste-bascule.is-on { border-color: rgba(124,92,255,.35); background: var(--grad-soft); color: var(--v1); }
.liste-bascule.is-on .liste-bascule__piste { background: var(--grad); }
.liste-bascule.is-on .liste-bascule__pastille { transform: translateX(13px); }

/* ---------- Types cumulables (L4) ---------- */
.types-liste { row-gap: .45rem; }
.type-pastille { display: inline-flex; align-items: stretch; }
.type-pastille .btn { border-radius: 0; }
.type-pastille .type-pastille__case {
    border-radius: 999px 0 0 999px !important; padding-left: .6rem; padding-right: .45rem; border-right-width: 0;
}
.type-pastille .type-pastille__libelle { border-radius: 0 999px 999px 0 !important; padding-left: .5rem; }
.type-pastille .type-pastille__case i { font-size: .85rem; opacity: .55; transition: opacity .15s; }
.type-pastille:hover .type-pastille__case i,
.type-pastille.is-on .type-pastille__case i { opacity: 1; }
.type-pastille.is-on .type-pastille__case { box-shadow: none; border-right: 1px solid rgba(255,255,255,.35) !important; }
.type-pastille.is-on .type-pastille__libelle { box-shadow: none; }
.type-pastille.is-on { border-radius: 999px; box-shadow: var(--sh-glow); }
.types-liste__sep { width: 1px; align-self: stretch; background: var(--line); margin: 0 .15rem; }
.types-liste__raccourci {
    border: 1.5px dashed rgba(124,92,255,.45); color: var(--v1); background: rgba(255,255,255,.75);
}
.types-liste__raccourci:hover { background: var(--grad-soft); color: var(--v1); border-style: solid; }
.types-liste__raccourci.is-on { background: var(--grad); color: #fff; border: 1.5px solid transparent; box-shadow: var(--sh-glow); }
.types-liste__aide { font-size: .74rem; color: var(--ink-faint); }
.types-liste__aide kbd {
    font-size: .68rem; padding: .05rem .35rem; border-radius: 6px; background: #fff; color: var(--ink-soft);
    border: 1px solid var(--line); box-shadow: 0 1px 0 #e3e3ef;
}

/* ---------- Bandeaux : transformés masqués, récapitulatif ---------- */
.liste-masques {
    display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; padding: .55rem .9rem;
    border-radius: var(--r-md); border: 1px dashed rgba(124,92,255,.35);
    background: linear-gradient(90deg, rgba(124,92,255,.08), rgba(34,211,238,.06));
    color: var(--ink-soft); font-size: .86rem;
}
.liste-masques > i { color: var(--v1); }
.liste-masques__lien { font-weight: 600; }

.liste-recap {
    position: relative; border: 1px solid var(--line); border-radius: var(--r-lg); background: rgba(255,255,255,.92);
    box-shadow: var(--sh-md); padding: 1rem 3rem 1rem 1.2rem; overflow: hidden;
}
.liste-recap::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--grad); }
.liste-recap.is-mixte::before { background: linear-gradient(180deg, #7c5cff, #f59e0b); }
.liste-recap.is-refus::before { background: #e11d48; }
.liste-recap__tete { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; color: var(--ink); }
.liste-recap__ko-compte { color: #be123c; font-weight: 600; }
.liste-recap__liste { list-style: none; margin: .6rem 0 0; padding: 0; display: grid; gap: .3rem; font-size: .86rem; }
.liste-recap__liste li { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.liste-recap__liste.is-refus li { color: #9f1239; }
.liste-recap__liste.is-refus i { color: #e11d48; }
.liste-recap__texte { flex: 1 1 18rem; min-width: 0; }
.liste-recap__liste.is-refus .liste-recap__doc { color: #9f1239; text-decoration: underline; text-underline-offset: 2px; }
.liste-recap__action {
    display: inline-flex; align-items: center; gap: .3rem; padding: .12rem .6rem; border-radius: 999px;
    font-size: .76rem; font-weight: 600; text-decoration: none; color: #fff; background: var(--grad); box-shadow: var(--sh-sm);
}
.liste-recap__liste.is-refus .liste-recap__action i { color: #fff; }
.liste-recap__action:hover { color: #fff; filter: brightness(1.08); }
.liste-recap__aide { font-size: .76rem; font-style: italic; color: var(--ink-soft); }
.liste-recap .btn-close { position: absolute; top: .9rem; right: 1rem; }

/* ---------- Tableau : sélection, numéro, actions ---------- */
.liste-docs .table-factures th.liste-th-numero,
.liste-docs .table-factures td.liste-td-numero { white-space: nowrap; }
.liste-th-avec-case, .liste-numero { display: inline-flex; align-items: center; gap: .55rem; }
.liste-case.form-check-input { margin: 0; width: 1.05em; height: 1.05em; flex: 0 0 auto; cursor: pointer; border-width: 1.5px; }
.liste-docs tbody tr.is-selectionnee > * { background: rgba(124,92,255,.07); }
.liste-docs tbody tr.is-selectionnee > td:first-child { box-shadow: inset 3px 0 0 var(--v1); }
.liste-docs tbody tr.is-menu > * { background: rgba(34,211,238,.08); }
.liste-docs .liste-th-actions, .liste-docs .liste-td-actions { width: 1%; white-space: nowrap; }
.liste-actions { display: inline-flex; gap: .2rem; }
.liste-action {
    display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 10px; border: 1px solid transparent;
    background: transparent; color: var(--ink-faint); font-size: 1rem; transition: background .15s, color .15s, border-color .15s;
}
.liste-action:hover, .liste-action:focus-visible { background: var(--grad-soft); color: var(--v1); border-color: rgba(124,92,255,.2); outline: none; }

.liste-solde { font-variant-numeric: tabular-nums; font-weight: 600; }
.liste-solde.is-du { color: var(--ink); }
.liste-solde.is-solde { color: #15803d; }
.liste-solde.is-rendre { color: #be185d; }
/* Recette V8 : reste dû après un paiement partiel. */
.liste-solde.is-partiel { color: #dc2626; }
.liste-livraison i { color: var(--v2); margin-right: .15rem; }
.liste-pill {
    display: inline-flex; align-items: center; gap: .3rem; white-space: nowrap; font-size: .74rem; font-weight: 600;
    padding: .16rem .55rem; border-radius: 999px;
}
.liste-pill.is-pa { background: rgba(91,141,239,.14); color: #1d4ed8; cursor: help; }

/* ---------- Barre flottante de la sélection (L6, L7) ---------- */
.liste-barre {
    position: fixed; left: 50%; bottom: 1.4rem; transform: translateX(-50%); z-index: 1060;
    display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; justify-content: center;
    padding: .55rem .6rem .55rem 1.1rem; border-radius: 999px; max-width: calc(100vw - 2rem);
    /* Largeur naturelle : avec `left: 50%`, la barre ne prenait que la moitié de
       l'écran et empilait ses boutons en colonne sur mobile (trois actions depuis
       « Envoyer relance », intégration de la vague 3). */
    width: max-content;
    background: linear-gradient(120deg, rgba(27,28,49,.94), rgba(40,36,82,.94));
    color: #fff; box-shadow: 0 18px 45px rgba(20,18,50,.35), 0 0 0 1px rgba(255,255,255,.06) inset;
    backdrop-filter: blur(12px); animation: listeBarre .28s cubic-bezier(.34,1.3,.5,1) both;
}
.liste-barre[hidden] { display: none; }
@keyframes listeBarre { from { opacity: 0; transform: translate(-50%, 16px); } to { opacity: 1; transform: translate(-50%, 0); } }
.liste-barre form { margin: 0; }
.liste-barre__compte { font-size: .88rem; color: #d6d8f0; white-space: nowrap; }
.liste-barre__compte strong {
    display: inline-grid; place-items: center; min-width: 1.7rem; height: 1.7rem; padding: 0 .45rem; margin-right: .2rem;
    border-radius: 999px; background: var(--grad); color: #fff; font-family: var(--font-display); font-size: .9rem;
}
.liste-barre__btn.btn-light { background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.14); color: #fff; }
.liste-barre__btn.btn-light:hover { background: rgba(255,255,255,.2); color: #fff; }
.liste-barre__btn.btn-light:disabled { opacity: .4; color: #fff; }
.liste-barre__fermer {
    width: 32px; height: 32px; border-radius: 50%; border: none; background: rgba(255,255,255,.08); color: #c7c9e4;
    display: inline-grid; place-items: center;
}
.liste-barre__fermer:hover { background: rgba(255,255,255,.18); color: #fff; }

/* ---------- Menu contextuel (L8) ---------- */
.liste-menu {
    position: fixed; z-index: 1070; min-width: 230px; padding: .35rem;
    border-radius: var(--r-md); border: 1px solid var(--line); background: rgba(255,255,255,.96);
    backdrop-filter: blur(12px); box-shadow: var(--sh-lg); animation: listeMenu .16s ease-out both;
}
.liste-menu[hidden] { display: none; }
@keyframes listeMenu { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
.liste-menu__tete {
    padding: .35rem .6rem .45rem; margin-bottom: .2rem; border-bottom: 1px solid var(--line);
    font-family: var(--font-display); font-weight: 600; font-size: .82rem; color: var(--ink);
}
.liste-menu__entree {
    display: flex; align-items: center; gap: .6rem; width: 100%; padding: .48rem .65rem; border: none; border-radius: 9px;
    background: transparent; color: var(--ink-soft); font-size: .88rem; font-weight: 500; text-align: left; text-decoration: none;
}
.liste-menu__entree i { width: 1.1rem; text-align: center; color: var(--v1); }
.liste-menu__entree:hover, .liste-menu__entree:focus-visible { background: var(--grad-soft); color: var(--v1); outline: none; }
.liste-menu__entree.is-danger i, .liste-menu__entree.is-danger:hover { color: #be123c; }
.liste-menu__entree.is-danger:hover { background: #fff1f2; }

/* ---------- Écran « Colonnes » (L1/L3) ---------- */
.liste-colonnes.offcanvas { --bs-offcanvas-width: 440px; border-left: none; border-radius: var(--r-xl) 0 0 var(--r-xl); box-shadow: var(--sh-lg); }
/* Fermé, le panneau sort du rendu : décalé hors de l'écran, il élargissait la
   page de sa largeur (barre de défilement horizontale). */
.liste-colonnes.offcanvas:not(.show):not(.showing):not(.hiding) { display: none; }
@starting-style { .liste-colonnes.offcanvas.showing { transform: translateX(100%); } }
.liste-colonnes .offcanvas-header { align-items: flex-start; background: var(--grad-soft); border-bottom: 1px solid var(--line); }
.liste-colonnes .offcanvas-title { font-family: var(--font-display); font-weight: 700; color: var(--ink); }
.liste-colonnes__intro { margin: .3rem 0 0; font-size: .82rem; color: var(--ink-faint); }
.liste-colonnes__corps { display: flex; flex-direction: column; gap: .8rem; }
.liste-colonnes__liste { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; }
.liste-colonnes__item {
    display: grid; grid-template-columns: 18px 22px 1fr auto; align-items: center; gap: .45rem;
    padding: .4rem .5rem; border-radius: var(--r-sm); border: 1px solid var(--line); background: #fafaff;
    transition: background .15s, border-color .15s, box-shadow .15s;
}
.liste-colonnes__item.is-on { background: #fff; border-color: rgba(124,92,255,.28); box-shadow: 0 2px 8px rgba(124,92,255,.08); }
.liste-colonnes__item.is-deplace { opacity: .5; border-style: dashed; }
.liste-colonnes__item.is-fixe { background: var(--grad-soft); }
.liste-colonnes__poignee { color: var(--ink-faint); cursor: grab; text-align: center; }
.liste-colonnes__item.is-fixe .liste-colonnes__poignee { cursor: default; font-size: .8rem; }
.liste-colonnes__coche { margin: 0; display: grid; place-items: center; }
.liste-colonnes__texte { min-width: 0; }
.liste-colonnes__texte .form-control { padding: .25rem .55rem; font-size: .85rem; border-radius: 9px; }
.liste-colonnes__item:not(.is-on) .liste-colonnes__texte .form-control { background-color: transparent; }
.liste-colonnes__aide { display: block; margin-top: .15rem; font-size: .7rem; color: var(--ink-faint); line-height: 1.3; }
.liste-colonnes__fleches { display: inline-flex; flex-direction: column; }
.liste-colonnes__fleches button {
    border: none; background: transparent; color: var(--ink-faint); line-height: 1; padding: .05rem .3rem; border-radius: 6px;
}
.liste-colonnes__fleches button:hover { background: var(--grad-soft); color: var(--v1); }
.liste-colonnes__pied {
    position: sticky; bottom: -1rem; display: flex; gap: .5rem; align-items: center;
    margin: 0 -1rem -1rem; padding: .8rem 1rem; background: rgba(255,255,255,.95); border-top: 1px solid var(--line);
}

/* ---------- « ★ Mes filtres » (L9) ---------- */
.mes-filtres .dropdown-toggle { max-width: 260px; display: inline-flex; align-items: center; gap: .35rem; }
.mes-filtres__libelle { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mes-filtres__compte {
    display: inline-grid; place-items: center; min-width: 1.2rem; height: 1.2rem; padding: 0 .3rem; border-radius: 999px;
    background: var(--grad); color: #fff; font-size: .66rem; font-weight: 700;
}
.mes-filtres .bi-star-fill { color: #f5b301; }
.mes-filtres .btn-primary .bi-star-fill { color: #fff5c2; }
.mes-filtres__menu { width: min(380px, 92vw); padding: .6rem; }
.mes-filtres__titre {
    display: flex; align-items: center; gap: .4rem; padding: .15rem .35rem .5rem;
    font-family: var(--font-display); font-weight: 700; color: var(--ink); font-size: .9rem;
}
.mes-filtres__titre i { color: #f5b301; }
.mes-filtres__ligne {
    display: flex; align-items: center; gap: .15rem; flex-wrap: wrap; padding: .15rem .2rem; border-radius: 10px;
}
.mes-filtres__ligne:hover { background: #f7f6fe; }
.mes-filtres__ligne.is-actif { background: var(--grad-soft); }
.mes-filtres__appliquer {
    flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: .4rem; padding: .35rem .45rem;
    color: var(--ink); font-weight: 600; font-size: .86rem; text-decoration: none;
}
.mes-filtres__nom { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mes-filtres__defaut {
    flex: 0 0 auto; font-size: .62rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
    padding: .08rem .42rem; border-radius: 999px; background: var(--grad); color: #fff;
}
/* Société mémorisée avec le favori (Documents, Commandes) : le nom dit où il
   rouvre la liste, pour ne jamais confondre deux sociétés. */
.mes-filtres__societe {
    flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: .66rem; font-weight: 600; padding: .08rem .45rem; border-radius: 999px;
    background: #eef2ff; color: var(--v1); border: 1px solid rgba(124,92,255,.22);
}
.mes-filtres__societe i { margin-right: .15rem; }
.mes-filtres__geste { margin: 0; }
.mes-filtres__icone {
    display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; border: none;
    background: transparent; color: var(--ink-faint); cursor: pointer; list-style: none;
}
.mes-filtres__icone::-webkit-details-marker { display: none; }
.mes-filtres__icone:hover { background: #fff; color: var(--v1); box-shadow: var(--sh-sm); }
.mes-filtres__icone.is-on { color: var(--v1); }
.mes-filtres__icone.is-danger:hover { color: #be123c; }
.mes-filtres__renommer { display: contents; }
.mes-filtres__renommer[open] .mes-filtres__form-renommer { display: flex; }
.mes-filtres__form-renommer { flex: 1 0 100%; gap: .35rem; padding: .2rem .35rem .45rem; }
.mes-filtres__vide { font-size: .82rem; color: var(--ink-faint); padding: .2rem .35rem .5rem; margin: 0; }
.mes-filtres__enregistrer { margin-top: .4rem; padding: .7rem .6rem .4rem; border-top: 1px solid var(--line); }
.mes-filtres__aide { font-size: .7rem; color: var(--ink-faint); margin: .45rem 0 0; line-height: 1.35; }

/* ---------- Articles : filtre famille ---------- */
.filtre-famille { margin: 0; }
.filtre-famille .form-select { min-width: 220px; padding-top: .3rem; padding-bottom: .3rem; font-size: .84rem; border-radius: 999px; }

/* ---------- Duplication (L8) ---------- */
.duplication-note {
    display: flex; align-items: flex-start; gap: .6rem; padding: .6rem .9rem; border-radius: var(--r-md);
    background: var(--grad-soft); border: 1px solid rgba(124,92,255,.2); color: var(--ink-soft); font-size: .88rem;
}
.duplication-note > i { color: var(--v1); font-size: 1.05rem; margin-top: .05rem; }
.duplication-note.is-alerte { background: #fff7ed; border-color: rgba(245,158,11,.35); color: #7c2d12; }
.duplication-note.is-alerte > i { color: #d97706; }

/* ---------- Impression groupée refusée ---------- */
.selection-refus { max-width: 520px; margin-top: 3rem; }
.selection-refus__icone {
    width: 64px; height: 64px; margin: 0 auto; border-radius: 20px; display: grid; place-items: center;
    background: var(--grad); color: #fff; font-size: 1.6rem; box-shadow: var(--sh-glow);
}

/* ---------- Petits écrans ---------- */
@media (max-width: 767.98px) {
    .types-liste__aide { display: none; }
    .liste-barre { bottom: .8rem; border-radius: var(--r-lg); }
    .liste-colonnes.offcanvas { --bs-offcanvas-width: 100vw; border-radius: 0; }
}

/* =====================================================
   Recette V9 — liste et carte des clients
   ============================================================ */
/* Onglets « Liste / Carte » : un sélecteur segmenté Aurora. */
.clients-vues {
    display: inline-flex; padding: 3px; border-radius: 999px; background: rgba(255,255,255,.7);
    border: 1.5px solid var(--line);
}
.clients-vues__onglet {
    display: inline-flex; align-items: center; gap: .35rem; padding: .25rem .8rem; border-radius: 999px;
    font-size: .8rem; font-weight: 600; color: var(--ink-soft); text-decoration: none; transition: background .2s, color .2s;
}
.clients-vues__onglet:hover { color: var(--v1); }
.clients-vues__onglet.is-on { background: var(--grad); color: #fff; box-shadow: var(--sh-glow); }
.clients-filtres { row-gap: .5rem; }

/* Contact principal sur la ligne d'un client : texte secondaire, en gris. */
.ci-contact { font-size: .82rem; }
.ci-contact .bi { opacity: .7; }

/* Carte des clients */
.clients-carte-card { overflow: hidden; }
.clients-carte { height: calc(100vh - 300px); min-height: 380px; width: 100%; z-index: 0; background: #e8eef5; }
.clients-carte.is-empty { filter: grayscale(.6); opacity: .85; }
.clients-carte__legende {
    display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1.1rem; padding: .7rem 1.1rem;
    border-top: 1px solid var(--line); font-size: .82rem;
}
.clients-carte__legende > span { display: inline-flex; align-items: center; gap: .4rem; }
.clients-carte__point { width: 12px; height: 12px; border-radius: 50%; border: 1.5px solid #fff; box-shadow: 0 0 0 1px rgba(20,18,50,.15); }
.clients-carte__point.is-client { background: #16a34a; }
.clients-carte__point.is-prospect { background: #f59e0b; }
.clients-carte__point.is-sommeil { background: #94a3b8; }
.clients-carte__bulle { min-width: 160px; }
.clients-carte__bulle a { display: inline-block; margin-top: .35rem; font-weight: 600; }

@media (max-width: 600px) {
    /* Liste des clients sur téléphone : le bouton d'appel se réduit à son
       icône, l'intitulé et le contact passent à la ligne au lieu d'être
       coupés après trois lettres. */
    .ci-callable .ci-call__libelle { display: none; }
    .ci-callable .ci-call { width: 40px; height: 40px; padding: 0; display: grid; place-items: center; border-radius: 50%; }
    .ci-callable .ci-chip { width: 38px; height: 38px; border-radius: 12px; }
    .ci-callable .ci-link { gap: .7rem; }
    .collection-item.ci-callable { gap: .55rem; padding: .75rem .8rem; }
    .ci-callable .ci-title, .ci-callable .ci-sub { white-space: normal; overflow-wrap: anywhere; }
    .clients-vues { order: -1; }
    .clients-filtres .liste-bascule { white-space: normal; }
    .clients-carte { height: calc(100vh - 260px); min-height: 320px; }
    .clients-carte__legende .ms-auto { margin-left: 0 !important; width: 100%; }
}
=======
/* Recette V9 : société des favoris affichée dans le titre du menu « Mes filtres ». */
.mes-filtres__titre .mes-filtres__societe { margin-left: auto; }
.mes-filtres__titre .mes-filtres__societe i { color: inherit; }
/* Recette V9 : « Réinitialiser » les filtres, à côté de « Mes filtres ». */
.liste-reinitialiser { display: inline-flex; align-items: center; gap: .3rem; }
