/* ============================================================
   CRM Ordi Lyon — planification et gestion des interventions (services à la personne).

   Le langage visuel de crm.sonnaly.fr (« Cadence ») : une barre blanche de 52 px, des panneaux
   à filets de 1 px sans ombre, des pastilles rectangulaires à 4 px, un seul accent — le bordeaux —
   réservé à l'action. Sora pour les titres, IBM Plex Sans pour le texte. Jetons repris tels quels.
   ============================================================ */
@import url('/polices/polices.css');

:root{
  --brand-50:#FBEFF2; --brand-100:#F6DCE2; --brand-200:#EBC3CD; --brand-500:#C23B56;
  --brand-600:#B5304A; --brand-700:#9A2640; --brand-800:#7A1D33; --brand-900:#4E1030;
  --n-0:#FFFFFF; --n-25:#F7F8FA; --n-50:#F2F4F7; --n-100:#E9ECF1; --n-200:#DDE1E7; --n-300:#C3C9D2;
  --n-350:#8B95A7; --n-400:#98A2B3; --n-500:#5D6679; --n-600:#475467; --n-700:#344054; --n-900:#101828;
  --fond:var(--n-25); --surface:var(--n-0); --filet:var(--n-200); --filet-fort:var(--n-300); --filet-champ:var(--n-350);
  --texte:var(--n-900); --texte-2:var(--n-700); --texte-3:var(--n-500);
  --focus:var(--brand-600); --focus-halo:0 0 0 3px rgba(181,48,74,.22);
  --ok:#067647; --ok-fond:#ECFDF3; --ok-filet:#ABEFC6;
  --warn:#93370D; --warn-fond:#FFFAEB; --warn-filet:#FEDF89;
  --err:#B42318; --err-fond:#FEF3F2; --err-filet:#FECDCA;
  --info:#175CD3; --info-fond:#EFF8FF; --info-filet:#B2DDFF;
  --retard:#9A3412; --retard-fond:#FFEDD5; --retard-filet:#F97316;
  --f-titre:'Sora',system-ui,sans-serif; --f-texte:'IBM Plex Sans',system-ui,sans-serif; --f-mono:'IBM Plex Mono',ui-monospace,monospace;
  --h-ctrl:36px; --h-ctrl-sm:32px; --h-barre:52px; --h-ligne:44px;
  --r-xs:4px; --r-sm:6px; --r-md:8px; --r-rond:999px;
  --sh-barre:0 1px 0 var(--n-200),0 2px 6px rgba(16,24,40,.06); --sh-pop:0 8px 24px rgba(16,24,40,.14),0 0 0 1px var(--n-200);
  --gouttiere:24px;

  /* Statuts d'intervention : texte / fond / point (couples de contraste de crm.sonnaly.fr). */
  --st-a_rappeler-t:#0E6672; --st-a_rappeler-f:#E0F4F5; --st-a_rappeler-p:#2A9CAB;
  --st-messagerie-t:#065986; --st-messagerie-f:#E0F2FE; --st-messagerie-p:#0BA5EC;
  --st-planifiee-t:#3538CD; --st-planifiee-f:#EEF4FF; --st-planifiee-p:#6172F3;
  --st-pc_recupere-t:#5925DC; --st-pc_recupere-f:#F1EDFD; --st-pc_recupere-p:#7A5AF8;
  --st-a_facturer-t:#B93815; --st-a_facturer-f:#FEF6EE; --st-a_facturer-p:#EF6820;
  --st-attente_de_facturation-t:#854A0E; --st-attente_de_facturation-f:#FEF7C3; --st-attente_de_facturation-p:#EAAA08;
  --st-terminee-t:#05603A; --st-terminee-f:#E3F7EC; --st-terminee-p:#17B26A;
  --st-annulee-t:#B42318; --st-annulee-f:#FEF3F2; --st-annulee-p:#F04438;
  --st-sai-t:#A3245C; --st-sai-f:#FCE7F0; --st-sai-p:#D9468A;
}
@media (max-width:820px),(pointer:coarse){ :root{ --h-ctrl:44px; --h-ctrl-sm:40px; } }
@media (max-width:640px){ :root{ --gouttiere:16px; --h-barre:48px; } }

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--h-barre) + 12px)}
body{margin:0;background:var(--fond);color:var(--texte);font:400 14px/1.5 var(--f-texte);-webkit-font-smoothing:antialiased;overflow-x:clip}
h1,h2,h3{font-family:var(--f-titre);margin:0;line-height:1.25;text-wrap:balance;color:var(--texte)}
h1{font-size:24px;font-weight:600;letter-spacing:-.01em}
h2{font-size:16px;font-weight:600;margin:0 0 12px}
h1 small,h2 small{font:400 13px var(--f-texte);color:var(--texte-3);margin-left:8px;letter-spacing:0}
p{margin:0 0 8px}
a{color:inherit;text-underline-offset:3px}
img{max-width:100%;height:auto}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
::selection{background:var(--brand-100)}
[hidden]{display:none !important}
code{font-family:var(--f-mono);font-size:.92em;background:var(--n-50);border:1px solid var(--n-100);border-radius:var(--r-xs);padding:0 4px}
.discret{color:var(--texte-3);font-size:13px}
.rouge{color:var(--err)} .vert{color:var(--ok)}
.nowrap{white-space:nowrap}

/* ---------- barre du haut ---------- */
.barre{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:12px;min-height:var(--h-barre);padding:0 var(--gouttiere);
  background:var(--surface);border-bottom:1px solid var(--filet)}
.marque{display:flex;align-items:center;gap:8px;text-decoration:none;flex:0 0 auto;margin-right:8px}
.marque img{width:24px;height:24px}
.marque b{font:700 13px var(--f-titre);letter-spacing:.08em;color:var(--n-900)}
.marque span{font:400 11px var(--f-mono);letter-spacing:.12em;color:var(--texte-3)}
.barre nav{display:flex;align-self:stretch;gap:2px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent)}
.barre nav::-webkit-scrollbar{display:none}
.barre nav a{display:inline-flex;align-items:center;padding:0 12px;min-height:var(--h-barre);font:500 14px/1 var(--f-texte);color:var(--n-600);
  text-decoration:none;white-space:nowrap;border-top:2px solid transparent;border-bottom:2px solid transparent}
.barre nav a:hover{color:var(--n-900);background:var(--n-25)}
.barre nav a.actif{color:var(--n-900);font-weight:600;border-bottom-color:var(--brand-600)}
.barre nav a .compteur{margin-left:6px}
.moi{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.moi details{position:relative}
.moi summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;min-height:36px;padding:0 8px 0 4px;border-radius:var(--r-sm);font-size:13px;font-weight:500}
.moi summary::-webkit-details-marker{display:none}
.moi summary:hover,.moi details[open] summary{background:var(--n-50)}
.moi summary::after{content:"";width:6px;height:6px;border-right:1.5px solid var(--texte-3);border-bottom:1.5px solid var(--texte-3);transform:rotate(45deg);margin:0 2px 3px 0}
.avatar{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:var(--r-rond);background:var(--brand-50);color:var(--brand-800);font:600 11px var(--f-texte)}
.moi details > div{position:absolute;right:0;top:calc(100% + 4px);z-index:80;min-width:220px;padding:4px;background:var(--surface);border-radius:var(--r-md);box-shadow:var(--sh-pop);display:flex;flex-direction:column}
.moi details > div a,.moi details > div button{display:flex;align-items:center;min-height:36px;padding:6px 10px;border:0;border-radius:var(--r-xs);background:none;
  font:400 14px var(--f-texte);color:var(--texte);text-align:left;text-decoration:none;cursor:pointer}
.moi details > div a:hover,.moi details > div button:hover{background:var(--n-50)}
.moi details form{margin:0}
@media (max-width:1000px){ .moi .bouton{display:none} .moi summary .nom{display:none} }

main{max-width:1280px;margin:0 auto;padding:20px var(--gouttiere) 48px}
main.large{max-width:1600px}

/* ---------- en-tête de page ---------- */
.titre-page{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 20px;margin:0 0 16px}
.titre-page h1{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.titre-page .actions{display:flex;flex-wrap:wrap;gap:8px}
.titre-page .actions form{margin:0}

/* ---------- boutons ---------- */
.bouton{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--h-ctrl);padding:0 14px;border:1px solid var(--brand-600);
  border-radius:var(--r-sm);background:var(--brand-600);color:#fff;font:600 14px/1.2 var(--f-texte);text-decoration:none;white-space:nowrap;cursor:pointer;
  transition:background-color .12s,border-color .12s}
.bouton:hover{background:var(--brand-700);border-color:var(--brand-700)}
.bouton:active{background:var(--brand-800)}
.bouton.secondaire{background:var(--surface);border-color:var(--filet-fort);color:var(--n-900)}
.bouton.secondaire:hover{background:var(--n-50);border-color:var(--n-350)}
.bouton.petit{min-height:var(--h-ctrl-sm);padding:0 10px;font-size:13px}
.bouton[disabled]{opacity:.5;cursor:not-allowed}
.bouton[disabled]:hover{background:var(--surface);border-color:var(--filet-fort)}
.lien{background:none;border:0;padding:0;color:var(--n-900);font:inherit;font-size:13px;cursor:pointer;text-decoration:underline;
  text-decoration-color:var(--n-350);text-underline-offset:3px}
.lien:hover{color:var(--brand-600);text-decoration-color:currentColor}
[data-arme="1"]{color:var(--err) !important;border-color:var(--err) !important}

/* ---------- champs ---------- */
label{display:flex;flex-direction:column;gap:4px;font:500 12px/1.4 var(--f-texte);color:var(--texte-2)}
label.case{flex-direction:row;align-items:center;gap:8px;font-size:14px;font-weight:400;color:var(--texte)}
input[type=checkbox],input[type=radio]{accent-color:var(--brand-600);width:16px;height:16px;margin:0}
input:not([type=checkbox]):not([type=radio]):not([type=color]),select,textarea{min-height:var(--h-ctrl);padding:6px 10px;font:400 14px/1.4 var(--f-texte);color:var(--texte);
  background:var(--surface);border:1px solid var(--filet-champ);border-radius:var(--r-sm);max-width:100%;transition:border-color .12s,box-shadow .12s}
input:hover,select:hover,textarea:hover{border-color:var(--n-500)}
input:focus,select:focus,textarea:focus{border-color:var(--focus);outline:2px solid transparent;box-shadow:var(--focus-halo)}
input[readonly],input:disabled,select:disabled{background:var(--n-50);color:var(--texte-3)}
input::placeholder,textarea::placeholder{color:var(--texte-3);opacity:1}
textarea{width:100%;min-height:72px;resize:vertical;line-height:1.5}
select{appearance:none;-webkit-appearance:none;padding-right:30px;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--n-500) 50%),linear-gradient(135deg,var(--n-500) 50%,transparent 50%);
  background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat}
input[type=search]{padding-left:34px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235D6679' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='m15.5 15.5 5 5'/%3E%3C/svg%3E") no-repeat 11px 50%/16px 16px}
input[type=color]{width:40px;height:32px;padding:2px;border:1px solid var(--filet-champ);border-radius:var(--r-xs);background:var(--surface)}
.champs{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px 14px;margin-bottom:16px}
.champs .large{grid-column:1 / -1}
.champs input,.champs select{width:100%}
fieldset{border:1px solid var(--filet);border-radius:var(--r-sm);padding:10px 14px;display:flex;flex-wrap:wrap;gap:8px 18px;margin:0}
legend{font:500 12px var(--f-texte);color:var(--texte-2);padding:0 4px}
.en-ligne{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}
form.en-ligne{margin:8px 0 0}
.pile{display:flex;flex-direction:column;gap:12px}
.barre-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.recherche{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0}
.recherche input[type=search]{min-width:260px}
.recherche select{width:auto}

/* ---------- panneaux ---------- */
.panneau{background:var(--surface);border:1px solid var(--filet);border-radius:var(--r-sm);padding:16px;margin-bottom:16px}
.panneau h2 + .discret{margin-top:-6px}
.panneau.etroit{max-width:460px}
.panneau.vide{text-align:center;padding:40px 16px;color:var(--texte-3)}
.grille-fiche{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;margin-bottom:16px}
.grille-fiche .panneau{margin:0}
.grille-fiche > .barre-actions{grid-column:1 / -1;position:sticky;bottom:0;z-index:20;margin:0 calc(-1 * var(--gouttiere));padding:10px var(--gouttiere);
  background:color-mix(in srgb,var(--surface) 92%,transparent);border-top:1px solid var(--filet);backdrop-filter:blur(4px)}
.grille-fiche h2:not(:first-child){margin-top:8px;padding-top:14px;border-top:1px solid var(--filet)}

/* ---------- avis flottants (comme crm.sonnaly.fr) ---------- */
.avis{position:fixed;left:24px;bottom:24px;z-index:100;max-width:min(460px,calc(100vw - 32px));padding:12px 14px 12px 40px;border-radius:var(--r-md);
  background:var(--n-900);color:#fff;font-size:14px;line-height:1.45;box-shadow:var(--sh-pop);animation:avis-entree .18s ease}
.avis::before{content:"";position:absolute;left:14px;top:15px;width:14px;height:14px;border-radius:50%;background:#17B26A}

.avis.erreur{background:var(--surface);color:var(--err);border:1px solid var(--err-filet)}
.avis.erreur::before{background:var(--err)}
.avis.fixe{position:static;margin:0 0 12px;background:var(--info-fond);color:var(--info);border:1px solid var(--info-filet);box-shadow:none;animation:none}
.avis.fixe::before{background:var(--info)}
main > .avis.erreur.fixe,.panneau .avis.erreur{position:static;margin:0 0 12px;box-shadow:none;animation:none}
@keyframes avis-entree{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (max-width:640px){ .avis{left:16px;right:16px;bottom:16px} }
code.copiable{user-select:all;word-break:break-all}

/* ---------- tableaux ---------- */
.table-defile{overflow-x:auto;background:var(--surface);border:1px solid var(--filet);border-radius:var(--r-sm)}
table.liste{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;background:var(--surface);font-variant-numeric:tabular-nums}
.panneau > table.liste,.panneau > .table-defile{border-radius:0}
.panneau > .table-defile{border:0;margin:0 -16px;width:calc(100% + 32px)}
table.liste th{text-align:left;padding:8px 12px;background:var(--n-25);border-bottom:1px solid var(--filet);font:600 12px/1.3 var(--f-texte);color:var(--n-500);white-space:nowrap;vertical-align:bottom}
table.liste td{height:var(--h-ligne);padding:6px 12px;border-bottom:1px solid var(--filet);vertical-align:middle;line-height:1.4}
table.liste tbody tr:last-child td{border-bottom:0}
table.liste tbody tr:hover td{background:var(--n-50)}
table.liste tr[data-href]{cursor:pointer}
table.liste .n{text-align:right;font-size:13px;white-space:nowrap}
table.liste td a:not(.bouton){text-decoration:none;font-weight:600}
table.liste td a:not(.bouton):hover{color:var(--brand-600);text-decoration:underline}
table.liste tr.fini td{color:var(--texte-3)}
table.liste tr.total td{font-weight:600;background:var(--n-25)}
table.liste td.vide{text-align:center;color:var(--texte-3);padding:32px}
table.liste td.coupe{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--texte-2)}
table.compacte td{height:36px;padding:4px 10px;font-size:13px}
table.compacte th{padding:6px 10px}
table.liste input:not([type=checkbox]),table.liste select{min-height:32px;padding:4px 8px;font-size:13px}
table.liste td.suivi{font-size:13px;min-width:280px;color:var(--texte-2)}
.sous{display:block;font-size:12px;color:var(--texte-3);font-weight:400;margin-top:1px}
/* Une ligne qui demande une action : le liseré bordeaux à gauche. */
table.liste tr.a-agir td:first-child{box-shadow:inset 3px 0 0 var(--brand-600)}

/* ---------- pastilles de statut ---------- */
.st--a_rappeler,[data-st="a_rappeler"]{--st-t:var(--st-a_rappeler-t);--st-f:var(--st-a_rappeler-f);--st-p:var(--st-a_rappeler-p)}
.st--messagerie,[data-st="messagerie"]{--st-t:var(--st-messagerie-t);--st-f:var(--st-messagerie-f);--st-p:var(--st-messagerie-p)}
.st--planifiee,[data-st="planifiee"]{--st-t:var(--st-planifiee-t);--st-f:var(--st-planifiee-f);--st-p:var(--st-planifiee-p)}
.st--pc_recupere,[data-st="pc_recupere"]{--st-t:var(--st-pc_recupere-t);--st-f:var(--st-pc_recupere-f);--st-p:var(--st-pc_recupere-p)}
.st--a_facturer,[data-st="a_facturer"]{--st-t:var(--st-a_facturer-t);--st-f:var(--st-a_facturer-f);--st-p:var(--st-a_facturer-p)}
.st--attente_de_facturation,[data-st="attente_de_facturation"]{--st-t:var(--st-attente_de_facturation-t);--st-f:var(--st-attente_de_facturation-f);--st-p:var(--st-attente_de_facturation-p)}
.st--terminee,[data-st="terminee"]{--st-t:var(--st-terminee-t);--st-f:var(--st-terminee-f);--st-p:var(--st-terminee-p)}
.st--annulee,[data-st="annulee"]{--st-t:var(--st-annulee-t);--st-f:var(--st-annulee-f);--st-p:var(--st-annulee-p)}
.st--sai,[data-st="sai"]{--st-t:var(--st-sai-t);--st-f:var(--st-sai-f);--st-p:var(--st-sai-p)}
.st{display:inline-flex;align-items:center;gap:6px;height:22px;max-width:100%;padding:0 8px;border-radius:var(--r-xs);vertical-align:middle;
  background:var(--st-f,var(--n-50));color:var(--st-t,var(--n-700));font:500 12px/1 var(--f-texte);white-space:nowrap}
.st::before{content:"";width:6px;height:6px;flex:0 0 auto;border-radius:50%;background:var(--st-p,var(--n-400))}
/* La pastille devenue menu (changement de statut d'un geste, dans le tableau). */
select.st-menu{min-height:26px !important;height:26px;padding:0 24px 0 22px !important;border:1px solid transparent !important;border-radius:var(--r-xs) !important;
  font:500 12px/1 var(--f-texte) !important;color:var(--st-t,var(--n-700)) !important;max-width:190px;
  background:radial-gradient(circle at 11px 50%,var(--st-p,var(--n-400)) 3px,transparent 3.5px),
    linear-gradient(45deg,transparent 50%,var(--st-t,var(--n-500)) 50%) calc(100% - 13px) 50%/4px 4px no-repeat,
    linear-gradient(135deg,var(--st-t,var(--n-500)) 50%,transparent 50%) calc(100% - 9px) 50%/4px 4px no-repeat,
    var(--st-f,var(--n-50)) !important}
select.st-menu:hover{box-shadow:inset 0 0 0 1px var(--st-p)}
.statut-rapide{margin:0}

.etiquette{display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:var(--r-xs);background:var(--n-100);color:var(--n-700);
  font:500 11px/1 var(--f-texte);vertical-align:middle;white-space:nowrap}
.etiquette.vert{background:var(--ok-fond);color:var(--ok)} .etiquette.rouge{background:var(--err-fond);color:var(--err)}
.etiquette.marque{background:var(--brand-50);color:var(--brand-800)}
.pastille{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px;border-radius:var(--r-xs);background:var(--n-50);color:var(--n-700);
  font:500 12px/1 var(--f-texte);white-space:nowrap}
.pastille::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--n-400)}
.pastille.erreur{background:var(--err-fond);color:var(--err)} .pastille.erreur::before{background:#F04438}
.pastille.attente{background:var(--warn-fond);color:var(--warn)} .pastille.attente::before{background:#F79009}
.pastille.ok{background:var(--ok-fond);color:var(--ok)} .pastille.ok::before{background:#17B26A}
.compteur{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-rond);
  background:var(--n-100);color:var(--n-700);font:600 11px/1 var(--f-texte)}
.compteur.marque{background:var(--brand-600);color:#fff}

/* ---------- filtres : puces (statuts) et contrôle segmenté (vues) ---------- */
.compteurs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.compteurs a{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border:1px solid var(--filet);border-radius:var(--r-xs);
  background:var(--surface);color:var(--texte-2);font:500 13px/1.2 var(--f-texte);text-decoration:none;white-space:nowrap}
.compteurs a:hover{background:var(--n-50);border-color:var(--filet-fort);color:var(--texte)}
.compteurs a.actif{background:var(--n-900);border-color:var(--n-900);color:#fff}
.compteurs a i{width:6px;height:6px;border-radius:50%;background:var(--st-p,var(--n-400))}
.compteurs b{font-weight:600}
.onglets{display:inline-flex;flex-wrap:wrap;gap:2px;padding:2px;margin:0 0 12px;background:var(--n-50);border:1px solid var(--filet);border-radius:var(--r-sm)}
.onglets a{display:inline-flex;align-items:center;min-height:26px;padding:0 11px;border-radius:var(--r-xs);color:var(--n-600);font:500 13px/1 var(--f-texte);text-decoration:none;white-space:nowrap}
.onglets a:hover{color:var(--n-900);background:var(--n-100)}
.onglets a.actif{background:var(--surface);color:var(--n-900);font-weight:600;box-shadow:0 0 0 1px var(--filet-fort)}
.titre-page .onglets{margin:0}
.pages{display:flex;flex-wrap:wrap;gap:4px;margin-top:12px}
.pages a{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;border:1px solid var(--filet);border-radius:var(--r-xs);
  background:var(--surface);text-decoration:none;font-size:13px}
.pages a.actif{background:var(--n-900);border-color:var(--n-900);color:#fff}

/* ---------- intervention : client, montant, historique ---------- */
.choix-client{position:relative;margin-bottom:16px}
.choix-client input[type=search]{width:100%}
.suggestions{position:absolute;z-index:80;left:0;right:0;top:40px;padding:4px;background:var(--surface);border-radius:var(--r-md);box-shadow:var(--sh-pop);max-height:340px;overflow:auto}
.suggestions button{display:block;width:100%;padding:8px 10px;border:0;border-radius:var(--r-xs);background:none;font:400 14px var(--f-texte);text-align:left;cursor:pointer}
.suggestions button:hover,.suggestions button.actif{background:var(--n-50)}
.carte-client{margin:8px 0;padding:12px;border:1px solid var(--filet);border-radius:var(--r-sm);background:var(--n-25);font-size:14px;line-height:1.6}
.carte-client strong a{text-decoration:none} .carte-client strong a:hover{color:var(--brand-600)}
.carte-client a[href^="tel:"]{font-weight:500;text-decoration:none;margin-right:8px}
.montant{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 10px;padding:12px;border-radius:var(--r-sm);background:var(--n-25);border:1px solid var(--filet)}
.montant strong{font:600 22px var(--f-titre);letter-spacing:-.01em}
ul.histo{list-style:none;padding:0;margin:0;font-size:13px}
ul.histo li{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid var(--n-100)}
ul.histo li:last-child{border-bottom:0}
ul.histo time{flex:0 0 112px;color:var(--texte-3);font-variant-numeric:tabular-nums}
.contrat{padding:10px 0;border-bottom:1px solid var(--n-100)}
.contrat:last-of-type{border-bottom:0}
.contrat.fini{color:var(--texte-3)}
.jauge{height:6px;max-width:360px;margin:8px 0 4px;border-radius:3px;background:var(--n-100);overflow:hidden}
.jauge span{display:block;height:100%;background:var(--brand-600);border-radius:3px}
.etapes-facture{display:flex;flex-wrap:wrap;gap:2px;margin:0 0 12px;padding:0;list-style:none}
.etapes-facture li{flex:1 1 120px;padding:8px 10px;background:var(--n-50);color:var(--n-600);font:500 12px/1.3 var(--f-texte)}
.etapes-facture li:first-child{border-radius:var(--r-sm) 0 0 var(--r-sm)} .etapes-facture li:last-child{border-radius:0 var(--r-sm) var(--r-sm) 0}
.etapes-facture li.fait{background:var(--ok-fond);color:var(--ok)}
.etapes-facture li.actuel{background:var(--brand-600);color:#fff;font-weight:600}
.etapes-facture li.erreur{background:var(--err-fond);color:var(--err);font-weight:600}

/* ---------- planning ---------- */
.semaine{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}
.semaine.avec-weekend{grid-template-columns:repeat(7,minmax(0,1fr))}
.jour{background:var(--surface);border:1px solid var(--filet);border-radius:var(--r-sm);min-height:180px;display:flex;flex-direction:column}
.jour h2{display:flex;justify-content:space-between;align-items:baseline;margin:0;padding:10px 12px;border-bottom:1px solid var(--filet);font-size:14px;text-transform:capitalize}
.jour h2 small{margin:0}
.jour.aujourdhui{border-color:var(--brand-200)}
.jour.aujourdhui h2{color:var(--brand-700);box-shadow:inset 0 2px 0 var(--brand-600)}
.jour .rdvs{display:flex;flex-direction:column;gap:8px;padding:10px}
.rdv{display:block;padding:8px 10px;border:1px solid var(--filet);border-radius:var(--r-sm);background:var(--surface);color:var(--texte);text-decoration:none;font-size:13px;line-height:1.4;
  box-shadow:inset 3px 0 0 var(--st-p,var(--n-400))}
.rdv:hover{border-color:var(--filet-fort);background:var(--n-25)}
.rdv .heure{font:600 13px var(--f-titre);margin-right:4px}
.rdv strong{font-weight:600}
.rdv .sous{margin-top:3px}
.jour .rien{padding:12px;color:var(--texte-3);font-size:13px}
.tech-ligne{display:flex;flex-wrap:wrap;gap:6px 14px;margin:-4px 0 14px;font-size:13px;color:var(--texte-3)}
.tech-ligne b{color:var(--texte);font-weight:600}
ul.a-planifier{list-style:none;padding:0;margin:0}
ul.a-planifier li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--n-100)}
ul.a-planifier li:last-child{border-bottom:0}
ul.a-planifier a{text-decoration:none;font-weight:600} ul.a-planifier a:hover{color:var(--brand-600)}
@media (max-width:1100px){ .semaine,.semaine.avec-weekend{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))} }

/* ---------- chiffres ---------- */
.tuiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px}
.tuiles > div,.tuiles > a{display:flex;flex-direction:column;gap:4px;padding:16px;background:var(--surface);border:1px solid var(--filet);border-radius:var(--r-sm);text-decoration:none;color:inherit}
.tuiles > a:hover{border-color:var(--brand-200)}
.tuiles span{font:500 12px var(--f-texte);color:var(--texte-2)}
.tuiles b{font:600 28px/1.1 var(--f-titre);letter-spacing:-.01em}
.tuiles small{font-size:12px;color:var(--texte-3)}
.stocks{display:flex;flex-wrap:wrap;gap:12px}
.stock{padding:10px 14px;background:var(--surface);border:1px solid var(--filet);border-radius:var(--r-sm);font-size:13px;line-height:1.35}
.stock b{font:600 20px var(--f-titre)}
.kpi-grille{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.kpi-grille .panneau{margin:0} .kpi-grille .large{grid-column:1 / -1}
.barres{display:flex;align-items:flex-end;gap:8px;height:180px;padding-top:8px;border-bottom:1px solid var(--filet)}
.histo-mois{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}
.histo-mois span{width:70%;max-width:44px;min-height:1px;background:var(--brand-600);border-radius:4px 4px 0 0}
.histo-mois:hover span{background:var(--brand-700)}
.histo-mois small{margin-top:4px;font-size:11px;color:var(--texte-3)}
.colonnes-ventes{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:16px}
.colonnes-ventes .panneau{margin:0}

/* ---------- connexion ---------- */
.page-connexion main{display:flex;justify-content:center;padding-top:12vh}
.connexion{width:100%;max-width:380px;padding:28px;background:var(--surface);border:1px solid var(--filet);border-radius:var(--r-md)}
.connexion .marque{margin:0 0 20px}
.connexion h1{font-size:20px;margin:0 0 16px}
.connexion form{display:flex;flex-direction:column;gap:14px}
.connexion input{width:100%}
.connexion .avis{position:static;margin:0 0 14px;box-shadow:none;animation:none}

@media (max-width:860px){
  .grille-fiche,.kpi-grille{grid-template-columns:1fr}
  .recherche input[type=search]{min-width:0;flex:1 1 200px}
  h1{font-size:20px}
}

/* ---------- fiche d'intervention imprimable ---------- */
.fiche-impression { background: #e9eaed; }
.outils-impression { max-width: 210mm; margin: 12px auto; display: flex; gap: 12px; align-items: center; }
.fiche { background: #fff; max-width: 210mm; margin: 0 auto 30px; padding: 12mm 13mm; font-size: 11.5px; color: #000; }
.fiche header { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; margin-bottom: 10px; }
.fiche .logo img { width: 110px; display: block; } .fiche .logo span { font-weight: 700; font-size: 12px; }
.fiche h1 { font-size: 22px; text-align: center; }
.fiche .numero { text-align: right; } .fiche .numero strong { font-size: 18px; } .fiche .numero span { display: block; font-weight: 700; margin-top: 4px; }
.fiche .rouge { color: #d00; }
.fiche table { width: 100%; border-collapse: collapse; margin-bottom: 8px; }
.fiche table.infos th { text-align: left; font-weight: 700; white-space: nowrap; padding: 4px 4px 4px 0; width: 1%; }
.fiche table.infos td { border-bottom: 1px solid #999; padding: 4px 6px; }
.fiche td.ecrire { min-width: 60px; }
.fiche .deux { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 6px 0; }
.fiche table.tarifs td, .fiche table.tarifs th { padding: 3px 4px; border-bottom: 1px dotted #bbb; text-align: left; }
.fiche .facturation p { margin: 4px 0 8px; }
.case-cocher { display: inline-block; width: 11px; height: 11px; border: 1px solid #000; vertical-align: -1px; margin-left: 4px; }
.case-cocher.coche { background: #000; box-shadow: inset 0 0 0 2px #fff; }
.fiche .petit { font-size: 9.5px; color: #333; margin: 4px 0; }
.fiche .bloc { margin: 7px 0; } .fiche .zone { border: 1px solid #999; min-height: 44px; margin-top: 3px; padding: 4px 6px; }
.fiche .zone.texte { min-height: 30px; }
.fiche .notes { font-size: 11px; } .fiche .signatures .zone { min-height: 60px; }
.fiche .materiel { break-before: page; margin-top: 18px; }
.fiche .materiel h2 { font-size: 15px; }
@media print {
  @page { size: A4; margin: 0; }
  .fiche-impression { background: #fff; } .outils-impression { display: none; }
  .fiche { margin: 0; max-width: none; padding: 10mm 12mm; }
}

/* Un tableau posé directement dans la page porte son propre cadre. */
main > table.liste{border:1px solid var(--filet);border-radius:var(--r-sm);overflow:hidden}
.rdvs-jour{display:flex;flex-direction:column;gap:8px}

/* ---------- tablette : fiche à faire signer ---------- */
.mode-tablette main{max-width:980px}
.mode-tablette .bouton{min-height:44px}
.cartes-tablette{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.carte-tablette{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid var(--filet);border-radius:var(--r-sm);background:var(--surface);
  color:var(--texte);text-decoration:none;font-size:14px;box-shadow:inset 4px 0 0 var(--st-p,var(--n-400))}
.carte-tablette:hover{border-color:var(--filet-fort);background:var(--n-25)}
.carte-tablette .heure{font:600 15px var(--f-titre)}
.carte-tablette strong{font-size:16px}
.carte-tablette .aller{margin-top:6px;color:var(--brand-600);font-weight:600}
.carte-rdv{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.carte-rdv p{margin:0 0 6px}
.carte-rdv a[href^="tel:"]{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;margin:0 6px 6px 0;border:1px solid var(--filet-fort);border-radius:var(--r-sm);font-weight:600;text-decoration:none}
.fiche-tablette label{font-size:13px}
.fiche-tablette input,.fiche-tablette select,.fiche-tablette textarea{font-size:16px}
.champ-heure{display:flex;gap:8px} .champ-heure input{flex:1 1 auto;min-width:0}
.puces-materiel{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.puce{display:inline-flex;align-items:center;min-height:36px;padding:0 10px;border:1px solid var(--filet);border-radius:var(--r-xs);background:var(--surface);color:var(--texte-2);
  font:500 13px/1.2 var(--f-texte);cursor:pointer}
.puce:hover{background:var(--n-50);border-color:var(--filet-fort)}
.choix-reglement{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.choix-reglement .option{flex-direction:row;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--filet-fort);border-radius:var(--r-sm);cursor:pointer;font-size:14px;font-weight:400;color:var(--texte)}
.choix-reglement .option:has(input:checked){border-color:var(--brand-600);background:var(--brand-50);box-shadow:inset 0 0 0 1px var(--brand-600)}
.choix-reglement .option.indispo{opacity:.55;cursor:not-allowed}
.choix-reglement input{width:20px;height:20px;margin-top:2px}
.moyen{max-width:320px}
.montant span{display:block;width:100%}
.etoiles-ligne{display:flex;flex-wrap:wrap;gap:16px 40px}
.etoiles{border:0;padding:0;display:inline-flex;flex-direction:row-reverse;justify-content:flex-end;gap:2px}
.etoiles legend{width:100%;margin-bottom:4px;padding:0}
.etoiles input{position:absolute;opacity:0;pointer-events:none}
.etoiles label{font-size:34px;line-height:1;color:var(--n-200);cursor:pointer;padding:0 2px}
.etoiles input:checked ~ label,.etoiles label:hover,.etoiles label:hover ~ label{color:#F5A524}
.etoiles input:focus-visible + label{outline:2px solid var(--focus);outline-offset:2px}
.signatures{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.signature{display:flex;flex-direction:column;gap:6px}
.signature canvas{width:100%;height:190px;border:1px dashed var(--n-350);border-radius:var(--r-sm);background:#fff;touch-action:none;cursor:crosshair}
.signature .lien{align-self:flex-start}
.barre-validation{position:sticky;bottom:0;display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0 calc(-1 * var(--gouttiere));padding:12px var(--gouttiere);
  background:color-mix(in srgb,var(--surface) 94%,transparent);border-top:1px solid var(--filet);backdrop-filter:blur(4px)}
.bouton.grand{min-height:52px;padding:0 26px;font-size:16px}
.signatures-vues{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px}
.signatures-vues figure{margin:0;border:1px solid var(--filet);border-radius:var(--r-sm);padding:8px}
.signatures-vues img{display:block;width:100%;height:auto}
.signatures-vues figcaption{font-size:12px;color:var(--texte-3);margin-top:4px}
.documents{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
a.doc{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px;border:1px solid var(--filet-fort);border-radius:var(--r-xs);background:var(--surface);
  color:var(--texte) !important;font:500 12px/1 var(--f-texte) !important;text-decoration:none !important;white-space:nowrap}
a.doc::before{content:"";width:10px;height:12px;border:1.5px solid currentColor;border-radius:1px;opacity:.7}
a.doc:hover{border-color:var(--brand-600);color:var(--brand-600) !important}
@media (max-width:760px){ .carte-rdv,.choix-reglement,.signatures,.signatures-vues{grid-template-columns:1fr} }
.lettres{display:flex;flex-wrap:wrap;gap:2px;margin:0 0 10px}
.lettres a{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 6px;border-radius:var(--r-xs);color:var(--n-600);font:500 13px/1 var(--f-texte);text-decoration:none}
.lettres a:hover{background:var(--n-50);color:var(--n-900)}
.lettres a.actif{background:var(--n-900);color:#fff}

/* Cases à cocher et boutons radio : jamais étirés par les grilles de champs. */
.champs input[type=checkbox],.champs input[type=radio],label.case input{width:16px !important;min-width:16px;flex:0 0 auto}
.champs label.case{align-self:center}
label > .lib-statut{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}
