:root{
  --accent:#2E8B7A; --accent-fonce:#246B5E; --fond:#F4F6F7; --surface:#fff;
  --bord:#DDE3E5; --texte:#2C3E42; --doux:#7A8A8F; --neg:#C0392B;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--fond);color:var(--texte);
  font-family:-apple-system,"SF Pro Text",Helvetica,Arial,sans-serif;font-size:16px}
a{color:inherit;text-decoration:none}

.barre{position:sticky;top:0;background:var(--accent);color:#fff;
  padding:calc(env(safe-area-inset-top) + 10px) 16px 10px;display:flex;
  align-items:center;justify-content:space-between;gap:12px}
.marque{font-weight:800;font-size:18px}
.barre nav a{color:#eafff8;margin-left:14px;font-weight:600}

main{padding:16px;max-width:640px;margin:0 auto}
h1{font-size:22px;margin:8px 0 12px}
h2.groupe{font-size:15px;color:var(--doux);margin:18px 0 6px}
.retour{color:var(--accent-fonce);font-weight:600;display:inline-block;margin-bottom:6px}

.total{background:var(--surface);border:1px solid var(--bord);border-radius:14px;
  padding:16px;text-align:center;font-size:20px;font-weight:800;color:var(--accent-fonce);
  margin-bottom:14px}

.cartes{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.cartes a{display:flex;justify-content:space-between;align-items:center;
  background:var(--surface);border:1px solid var(--bord);border-radius:14px;padding:16px 18px}
.cartes .nom{font-weight:700}
.cartes .solde{font-weight:700}
.negatif{color:var(--neg)}

.bandeau{display:flex;gap:16px;justify-content:space-between;background:var(--surface);
  border:1px solid var(--bord);border-radius:12px;padding:10px 14px;color:var(--doux);
  font-size:14px;margin-bottom:14px}
.bandeau b{color:var(--texte);font-size:16px}

.saisie{background:var(--surface);border:1px solid var(--bord);border-radius:14px;
  padding:12px 14px;margin-bottom:16px}
.saisie summary{font-weight:700;cursor:pointer;list-style:none}
.saisie form{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.saisie input,.saisie select{width:100%;padding:12px;border:1px solid var(--bord);
  border-radius:10px;font-size:16px;background:#fff}
.saisie .deux{display:flex;gap:10px}
.saisie .deux input{flex:1}
button.principal{background:var(--accent);color:#fff;border:none;border-radius:10px;
  padding:14px;font-size:16px;font-weight:700}

.operations{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.operations li{display:flex;align-items:stretch;gap:10px;background:var(--surface);
  border:1px solid var(--bord);border-radius:12px;padding:10px 12px}
.operations li.pointee{background:#F3FAF8}
.check{display:flex;align-items:center;margin:0}
.check button{background:none;border:none;font-size:22px;color:var(--accent);padding:0 4px}
.infos{flex:1;min-width:0}
.haut{display:flex;justify-content:space-between;gap:8px}
.lib{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mnt{font-weight:700;white-space:nowrap}
.mnt.debit{color:var(--neg)}
.mnt.credit{color:var(--accent-fonce)}
.bas{display:flex;justify-content:space-between;gap:8px;color:var(--doux);
  font-size:13px;margin-top:2px}
.sld{font-weight:600}
.vide{color:var(--doux)}

/* liens d'opération (modifier) */
a.infos{display:block;color:inherit}

/* boutons secondaires / danger */
button.danger{background:#fff;color:var(--neg);border:1px solid var(--neg);
  border-radius:10px;padding:12px;font-size:15px;font-weight:700;width:100%;margin-top:12px}

/* actions d'échéance */
.echeance .actions{display:flex;gap:6px;margin-top:8px}
.echeance .actions form{flex:1;margin:0}
button.mini{width:100%;padding:8px;border-radius:8px;border:1px solid var(--bord);
  background:#fff;font-size:13px;font-weight:600;
  display:inline-flex;align-items:center;justify-content:center;gap:6px}
.ic svg{width:18px;height:18px;display:block}
button.mini.principal{background:var(--accent);color:#fff;border-color:var(--accent)}
button.mini.danger{color:var(--neg);border-color:var(--neg)}
.mini .ic{display:none}          /* sur bureau : texte seul */
.due{color:#B8860B}

/* ===================== APP (style bureau, responsive) ===================== */
/* Cadre "fenêtre" centré, comme l'application Mac */
body{background:#E7ECEE}
.cadre{width:calc(100% - 32px);height:calc(100vh - 32px);margin:16px auto;
  background:var(--surface);border:1px solid #CDD6D9;border-radius:14px;
  box-shadow:0 18px 50px rgba(0,0,0,.18);overflow:hidden;display:flex;flex-direction:column}
.titlebar{position:relative;height:44px;flex:0 0 44px;background:#EDF1F2;
  border-bottom:1px solid var(--bord);display:flex;align-items:center;padding:0 14px}
.titlebar .dots{display:flex;gap:8px}
.titlebar .dots span{width:12px;height:12px;border-radius:50%;background:#C9D2D5;display:block}
.titlebar .dots span:nth-child(1){background:#FF5F57}
.titlebar .dots span:nth-child(2){background:#FEBC2E}
.titlebar .dots span:nth-child(3){background:#28C840}
.titlebar .titre-app{position:absolute;left:0;right:0;
  display:flex;align-items:center;justify-content:center;gap:10px;
  font-weight:700;color:var(--texte);text-decoration:none;pointer-events:none}
.titlebar .titre-app .titre-logo,.titlebar .titre-app .titre-txt{pointer-events:auto}
.titlebar .titre-logo{height:26px;width:26px;border-radius:7px;display:block}
.titlebar .quitter{margin-left:auto;color:var(--doux);text-decoration:none;font-size:18px;z-index:1}
.burger{display:none}          /* visible seulement sur mobile */
.sidebar-overlay{display:none}

/* barre de menus (Fichier / Profil) */
.menubar{display:flex;gap:2px;z-index:2}
.menu{position:relative}
.menu-b{background:none;border:none;padding:6px 12px;border-radius:8px;font-weight:600;
  cursor:pointer;color:var(--texte);font-size:14px;line-height:1.4;font-family:inherit;display:inline-flex;align-items:center}
.menu-b:hover{background:#E1E7E9}
.menu.ouvert .menu-b{background:#DDE4E6}
.menu-liste{display:none;position:absolute;top:100%;left:0;margin-top:6px;background:var(--surface);
  border:1px solid var(--bord);border-radius:10px;box-shadow:0 14px 34px rgba(0,0,0,.18);
  min-width:240px;padding:6px;z-index:20}
.menu.ouvert .menu-liste{display:block}
.menu-liste a,.menu-liste button{display:block;width:100%;text-align:left;background:none;
  border:none;padding:9px 12px;border-radius:8px;font-size:14px;color:var(--texte);
  cursor:pointer;text-decoration:none}
.menu-liste a:hover,.menu-liste button:hover{background:#EFF3F4}
.menu-liste button.rouge{color:var(--neg)}
.menu-info{padding:8px 12px;color:var(--doux);font-size:13px}
.menu-sep{height:1px;background:var(--bord);margin:4px 0}

/* page Paramètres (mobile) */
.param-bloc{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
  padding:16px;margin-bottom:14px}
.param-bloc h2{margin:0 0 10px;font-size:18px}
.param-bloc h3{margin:14px 0 6px;font-size:14px;color:var(--doux)}
.param-liste{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:6px}
.param-liste a{display:block;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;
  text-decoration:none;color:inherit}
.bouton.large,.danger.large{display:block;width:100%;text-align:center;padding:12px;
  margin-top:8px;border-radius:10px;cursor:pointer;border:1px solid var(--bord);background:var(--surface)}
.danger.large{color:var(--neg);border-color:var(--neg)}
.param-info{color:var(--doux)}
/* cartes en grille (Mon compte / Paramètres) */
.cartes-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:16px;align-items:start}
.param-bloc{box-shadow:0 2px 12px rgba(0,0,0,.05);margin-bottom:0}
.param-bloc.pleine{grid-column:1/-1}
.param-bloc.securite{border-color:#F3C9C4;background:#FFF9F8}
.menu-b.actif{background:#DDE4E6;color:var(--accent-fonce)}
.switch{display:flex;align-items:flex-start;gap:10px;font-size:14px;color:var(--texte);padding:6px 0}
.switch input{width:20px;height:20px;margin-top:1px;flex:0 0 auto}
.form-vertical{display:flex;flex-direction:column;gap:10px}
.form-vertical input{padding:11px;border:1px solid var(--bord);border-radius:10px;font-size:15px;background:#fff}
.form-vertical button{margin-top:2px}
.badge-admin{background:var(--accent);color:#fff;border-radius:6px;padding:1px 8px;font-size:12px;font-weight:700;margin-left:6px}

.app{display:grid;grid-template-columns:300px 1fr;flex:1;min-height:0;overflow:hidden}
.sidebar{background:var(--fond);border-right:1px solid var(--bord);display:flex;
  flex-direction:column;padding:12px;gap:10px;overflow-y:auto}
.sidebar .marque{display:flex;justify-content:space-between;align-items:center;
  font-weight:800;font-size:17px;color:var(--accent-fonce);padding:2px 4px}
.sidebar .quitter{color:var(--doux);text-decoration:none;font-size:18px}

.sidebar .cartes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;
  gap:8px;overflow-y:auto;flex:1}
.sidebar .cartes a{display:flex;flex-direction:column;gap:2px;background:var(--surface);
  border:1px solid var(--bord);border-radius:12px;padding:12px 14px;text-decoration:none;color:inherit}
.sidebar .cartes a.actif{background:var(--accent);border-color:var(--accent);color:#fff}
.sidebar .cartes a.actif .solde{color:#eafff8}
.sidebar .cartes .nom{font-weight:700}
.sidebar .cartes .solde{font-weight:600}

.sb-bas{display:flex;flex-direction:column;gap:8px}
.btn-echeancier{display:block;text-align:center;background:var(--surface);border:1px solid var(--bord);
  border-radius:12px;padding:12px;font-weight:700;text-decoration:none;color:inherit}
.btn-echeancier.actif{border-color:var(--accent);color:var(--accent-fonce)}
.total{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
  padding:10px;text-align:center;font-weight:800;color:var(--accent-fonce)}

.cal{background:var(--surface);border:1px solid var(--bord);border-radius:12px;padding:8px}
.cal-nav{display:flex;justify-content:space-between;align-items:center;font-weight:700;padding:2px 4px}
.cal-nav a{text-decoration:none;color:var(--accent-fonce);padding:0 8px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-top:6px;text-align:center}
.cal-head{font-size:11px;color:var(--doux);font-weight:700;padding:2px 0}
.cal-jour{font-size:12px;padding:5px 0;border-radius:6px}
.cal-jour.hors{color:#C7D0D3}
.cal-jour.we{color:var(--neg)}
.cal-jour.ech{background:#FDE3A7;color:#8A5A00;font-weight:700}
.cal-jour.today{outline:2px solid var(--accent)}

.contenu{padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;
  max-width:none;margin:0;width:auto}

.toolbar{display:flex;gap:8px;align-items:center}
.toolbar .espace{flex:1}
.toolbar button,.toolbar .bouton{background:var(--surface);border:1px solid var(--bord);
  border-radius:8px;padding:8px 14px;font-weight:600;cursor:pointer;text-decoration:none;color:inherit}
.toolbar button.principal{background:var(--accent);color:#fff;border-color:var(--accent)}

.registre{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
  overflow:auto;flex:1;min-height:200px}
.registre table{width:100%;border-collapse:collapse;font-size:14px}
.registre thead th{position:sticky;top:0;background:var(--fond);color:var(--doux);
  text-align:left;padding:10px;border-bottom:1px solid var(--bord);font-weight:600}
.registre th.num,.registre td.num{text-align:right}
.registre tbody td{padding:8px 10px;border-bottom:1px solid #EEF2F3}
.registre tbody tr:nth-child(even){background:#FAFBFC}
.registre tbody tr:hover{background:#F1F7F5;cursor:pointer}
.registre tbody tr.selectionnee{background:#DFF0EC}
.registre td.num.negatif{color:var(--neg)}
.registre .c-point{width:36px;text-align:center}
.registre .c-lib{font-weight:500}

.bandeau{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
  padding:10px 14px;color:var(--doux);display:flex;gap:22px}
.bandeau b{color:var(--texte)}

.formulaire{background:var(--surface);border:1px solid var(--bord);border-radius:12px;padding:10px 14px}
.formulaire summary{font-weight:700;cursor:pointer}
.formulaire form{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.formulaire .ligne{display:flex;gap:8px}
.formulaire .ligne>*{flex:1;padding:9px;border:1px solid var(--bord);border-radius:8px;font-size:14px;background:#fff}
.formulaire .l2 input[type=date],.formulaire .l2 .col-date{flex:0 0 140px}
.formulaire .actions{justify-content:flex-end}
.formulaire .actions button{flex:0 0 auto;padding:10px 18px;border-radius:8px;font-weight:700;cursor:pointer}
button.principal{background:var(--accent);color:#fff;border:1px solid var(--accent)}
button.secondaire{background:#fff;border:1px solid var(--bord)}
/* corrige le bouton Valider du formulaire docké (rendu blanc par .ligne>*) */
.formulaire .actions .principal{background:var(--accent);color:#fff;border:1px solid var(--accent)}
.formulaire .actions .secondaire{background:var(--surface);color:var(--texte);border:1px solid var(--bord)}

/* échéancier */
.ech-entete h1{font-size:20px;margin:0}
.groupe{font-size:14px;color:var(--doux);margin:14px 0 6px}
.ech-item{display:flex;align-items:center;gap:12px;background:var(--surface);
  border:1px solid var(--bord);border-radius:12px;padding:10px 14px;margin-bottom:8px}
.ech-info{flex:1;display:flex;flex-direction:column}
.ech-info .lib{font-weight:600}
.ech-info .meta{font-size:12px;color:var(--doux)}
.ech-item .mnt{font-weight:700}
.ech-item .mnt.debit{color:var(--neg)}
.ech-item .mnt.credit{color:var(--accent-fonce)}
.ech-actions{display:flex;gap:6px}
.ech-actions form{margin:0}
.due{color:#B8860B}

/* popup / modale */
.modal[hidden]{display:none}
.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center}
.modal-fond{position:absolute;inset:0;background:rgba(0,0,0,.35)}
.modal-boite{position:relative;background:var(--surface);border-radius:14px;
  width:min(520px,92vw);box-shadow:0 24px 70px rgba(0,0,0,.3);overflow:hidden}
.modal-tete{display:flex;justify-content:space-between;align-items:center;
  padding:14px 18px;border-bottom:1px solid var(--bord)}
.modal-tete h2{margin:0;font-size:18px}
.modal-x{background:none;border:none;font-size:24px;color:var(--doux);cursor:pointer;line-height:1}
.modal-corps{padding:18px}
.modal-corps .aide{color:var(--doux);margin:0 0 12px}
.modal-corps form{display:flex;flex-direction:column;gap:12px}
.modal-corps input[type=file]{padding:10px;border:1px solid var(--bord);border-radius:10px}
.import-ok{background:#F3FAF8;border:1px solid #CFE8E1;border-radius:10px;padding:12px;
  text-align:center;color:var(--accent-fonce);font-weight:600;margin-top:12px}

/* vue détail d'une opération */
.detail{margin:0}
.detail>div{display:flex;justify-content:space-between;gap:14px;padding:10px 0;
  border-bottom:1px solid #EEF2F3}
.detail dt{color:var(--doux);font-size:13px}
.detail dd{margin:0;font-weight:600;text-align:right}
.detail dd.negatif{color:var(--neg)}
.detail-actions{display:flex;gap:10px;margin-top:16px}
.detail-actions .bouton,.detail-actions .danger{flex:1;text-align:center;padding:12px;
  border-radius:10px;cursor:pointer;font-weight:700}
.detail-actions .bouton.principal{background:var(--accent);color:#fff;border:1px solid var(--accent)}
.detail-actions .danger{background:#fff;border:1px solid var(--neg);color:var(--neg)}

/* formulaire détail/édition d'opération */
.actions-ligne{display:flex;justify-content:space-between;gap:12px;margin-top:18px}
.actions-ligne button{flex:1 1 0;width:100%;margin:0;min-height:52px;padding:14px;
  border-radius:10px;font-weight:700;cursor:pointer;font-size:15px;box-sizing:border-box}
.actions-ligne .bouton.principal{background:var(--accent);color:#fff;border:1px solid var(--accent)}
.actions-ligne .danger{background:#fff;border:1px solid var(--neg);color:var(--neg)}
.form-op{display:flex;flex-direction:column;gap:14px}
.form-op .champ{display:flex;flex-direction:column;gap:5px}
.form-op label{font-size:13px;color:var(--doux);font-weight:600}
.form-op input,.form-op select{padding:12px;border:1px solid var(--bord);border-radius:10px;
  font-size:15px;background:#fff;width:100%}
.form-op input:disabled{background:var(--fond);color:var(--doux)}
.form-op .ligne2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.form-op .ligne2{grid-template-columns:1fr}}

/* barre d'onglets mobile (masquée sur bureau) */
.tabbar{display:none}

/* --------- Mobile : barre latérale au-dessus + barre d'onglets en bas --------- */
@media (max-width:820px){
  body{background:var(--fond)}
  .cadre{width:100%;min-height:100vh;height:auto;margin:0;border:none;border-radius:0;box-shadow:none}
  /* Barre du haut FIXE en mobile (reste visible au défilement), hauteur 80px */
  .titlebar{position:fixed;top:0;left:0;right:0;z-index:99999999;
    height:calc(80px + env(safe-area-inset-top));flex:none;
    padding-top:env(safe-area-inset-top);padding-bottom:0}
  .titlebar .titre-txt{font-size:26px}
  /* Icônes de la barre du haut plus grosses en mobile */
  .titlebar .burger{font-size:30px}
  .titlebar .titre-logo{height:40px;width:40px;border-radius:10px}
  .titlebar .quitter{font-size:28px}
  .titlebar .dots{display:none}
  .menubar{display:none}          /* menus déplacés dans l'onglet Paramètres */
  .burger{display:inline-flex;align-items:center;justify-content:center;background:none;
    border:none;font-size:22px;padding:0 8px;cursor:pointer;color:var(--texte);z-index:3}
  /* décaler le contenu sous la barre fixe */
  .app{grid-template-columns:1fr;height:auto;overflow:visible;
    margin-top:calc(80px + env(safe-area-inset-top))}

  /* barre latérale = tiroir coulissant depuis la gauche (sous la barre fixe) */
  .sidebar{position:fixed;top:calc(80px + env(safe-area-inset-top));left:0;bottom:0;width:290px;max-width:84vw;z-index:310;
    transform:translateX(-100%);transition:transform .25s ease;overflow-y:auto;
    background:var(--fond);border-right:1px solid var(--bord);border-bottom:none;
    box-shadow:0 0 40px rgba(0,0,0,.28);padding-top:16px}
  body.menu-ouvert .sidebar{transform:translateX(0)}
  .sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:305}
  body.menu-ouvert .sidebar-overlay{display:block}
  .sidebar{display:flex;flex-direction:column}
  .sidebar .cartes{flex-direction:column;overflow:visible;flex:none}
  .sb-bas{margin-top:auto}     /* Échéancier + Total + calendrier collés en bas du tiroir */
  .contenu{height:auto;padding-bottom:80px}   /* place pour la barre du bas */
  .bandeau{flex-wrap:wrap;gap:10px}
  .formulaire .ligne{flex-wrap:wrap}
  .formulaire .ligne>*{flex:1 1 140px}

  .tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;height:60px;
    background:var(--surface);border-top:1px solid var(--bord);z-index:50;
    padding-bottom:env(safe-area-inset-bottom)}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:2px;font-size:11px;color:var(--doux);text-decoration:none}
  .tabbar a span{font-size:20px;line-height:1}
  .tabbar a.actif{color:var(--accent-fonce);font-weight:700}

  /* échéancier : boutons en icônes (compacts), sur leur propre ligne */
  .ech-item{flex-wrap:wrap}
  .ech-actions{gap:6px;width:100%;justify-content:flex-end;margin-top:8px}
  .ech-actions .txt{display:none}
  .ech-actions .ic{display:inline-flex;align-items:center;justify-content:center}
  .ech-actions button.mini{width:38px;min-width:38px;height:38px;padding:0}
}

/* page document (confidentialité) */
.doc{max-width:720px;margin:0 auto;padding:24px 20px}
.doc h1{font-size:24px;margin-bottom:6px}
.doc h2{font-size:16px;margin-top:20px;color:var(--accent-fonce)}
.doc p{line-height:1.55}

/* pages de connexion */
.connexion{max-width:360px;margin:0 auto;padding:40px 20px;text-align:center}
.connexion .logo{width:96px;height:96px;border-radius:22px;margin-bottom:12px}
.connexion h1{font-size:22px;margin:6px 0 18px}
.connexion .aide{color:var(--doux);font-size:14px;margin-bottom:14px}
.connexion form{display:flex;flex-direction:column;gap:12px}
.connexion input[type=text],.connexion input[type=password]{padding:14px;border:1px solid var(--bord);
  border-radius:10px;font-size:16px;background:#fff}
.connexion .confiance{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--doux);
  text-align:left}
.connexion .confiance input{width:auto}
.erreur{background:#FDECEA;color:var(--neg);border:1px solid #F5C6C0;border-radius:10px;
  padding:10px;font-size:14px;margin-bottom:12px}
.info-ok{background:#F3FAF8;color:var(--accent-fonce);border:1px solid #CFE8E1;border-radius:10px;
  padding:10px;font-size:14px;margin-bottom:12px}
form.alt{margin-top:14px}
button.lien{background:none;border:none;color:var(--accent-fonce);font-weight:600;
  cursor:pointer;text-decoration:underline;font-size:14px}
.badge-admin{background:var(--accent);color:#fff;border-radius:6px;padding:1px 8px;font-size:12px;font-weight:700;margin-left:6px}

/* ============================ THÈMES ============================ */
/* Clair = valeurs par défaut (:root). Auto -> résolu en clair/sombre par JS. */

:root[data-theme="vert"]{
  --accent:#2E8B7A; --accent-fonce:#246B5E; --fond:#E6F1EB; --surface:#F3FAF6;
  --bord:#CDE3D8; --texte:#22332C; --doux:#5E7A6E; --neg:#C0392B;
}
:root[data-theme="vert"] body{background:#D9E9E0}
:root[data-theme="vert"] .titlebar{background:#E3F0E9}
:root[data-theme="vert"] .cadre{border-color:#CADED4}

:root[data-theme="sombre"]{
  --accent:#37A48C; --accent-fonce:#86D6C4; --fond:#1a2024; --surface:#242b30;
  --bord:#3a444c; --texte:#E7EDEF; --doux:#95A3A9; --neg:#E27167;
}
:root[data-theme="sombre"] body{background:#10151a}
:root[data-theme="sombre"] .titlebar{background:#1f272c}
:root[data-theme="sombre"] .cadre{border-color:#333c43}
:root[data-theme="sombre"] input,
:root[data-theme="sombre"] select,
:root[data-theme="sombre"] textarea{background:#1e2529;color:var(--texte);border-color:var(--bord)}
:root[data-theme="sombre"] input:disabled{background:#171c20}
:root[data-theme="sombre"] .registre tbody tr:nth-child(even){background:#20272b}
:root[data-theme="sombre"] .registre tbody tr:hover{background:#2a343a}
:root[data-theme="sombre"] .registre tbody tr.selectionnee{background:#274b43}
:root[data-theme="sombre"] .registre tbody td{border-bottom-color:#2c353b}
:root[data-theme="sombre"] .registre thead th{background:#1c2327}
:root[data-theme="sombre"] .menu-b:hover,
:root[data-theme="sombre"] .menu.ouvert .menu-b{background:#2b343a}
:root[data-theme="sombre"] .menu-liste a:hover,
:root[data-theme="sombre"] .menu-liste button:hover{background:#2b343a}
:root[data-theme="sombre"] .cal-jour.ech{background:#5a4a1e;color:#ffd98a}
:root[data-theme="sombre"] .cal-jour.hors{color:#4a555b}
:root[data-theme="sombre"] .import-ok{background:#1e2f2a;border-color:#2f4b42}
:root[data-theme="sombre"] .tabbar{background:var(--surface)}
:root[data-theme="sombre"] button.mini,
:root[data-theme="sombre"] .toolbar button,
:root[data-theme="sombre"] .toolbar .bouton{background:var(--surface);color:var(--texte)}
.theme-select{width:100%;padding:12px;border:1px solid var(--bord);border-radius:10px;font-size:15px;background:var(--surface);color:var(--texte)}

/* Bouton + flottant (mobile) */
/* Bouton + : visible seulement dans la barre mobile (au centre) */
.tab-plus{display:none}
.fab-menu[hidden]{display:none}
@media (max-width:820px){
  /* Bouton central surélevé de la barre de navigation */
  .tab-plus{display:flex;align-items:center;justify-content:center;
    flex:0 0 auto;width:54px;height:54px;margin:-22px 6px 0;border:none;border-radius:50%;
    background:var(--accent);color:#fff;font-size:30px;line-height:1;cursor:pointer;
    box-shadow:0 6px 18px rgba(0,0,0,.28);transition:transform .2s}
  .tab-plus.ouvert{transform:rotate(45deg)}
  /* Menu du + : au-dessus du centre de la barre */
  .fab-menu{position:fixed;left:50%;transform:translateX(-50%);bottom:78px;z-index:120;
    display:flex;flex-direction:column;gap:8px;min-width:190px}
  .fab-menu a{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
    padding:13px 16px;text-decoration:none;color:var(--texte);font-weight:600;text-align:center;
    box-shadow:0 5px 16px rgba(0,0,0,.18)}
}

/* cartes de thème (Paramètres) */
.themes-choix{display:grid;grid-template-columns:repeat(auto-fit,minmax(78px,1fr));gap:10px}
.theme-carte{background:var(--surface);border:2px solid var(--bord);border-radius:12px;
  padding:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;
  font-size:12px;font-weight:700;color:var(--texte)}
.theme-carte:hover{border-color:var(--accent-fonce)}
.theme-carte.actif{border-color:var(--accent);box-shadow:0 0 0 3px rgba(46,139,122,.18)}
.theme-apercu{width:100%;height:40px;border-radius:8px;overflow:hidden;display:flex;
  border:1px solid rgba(0,0,0,.12)}
.theme-apercu i{flex:1;display:block}
.apercu-clair i:nth-child(1){background:#E7ECEE}.apercu-clair i:nth-child(2){background:#2E8B7A}
.apercu-sombre i:nth-child(1){background:#10151a}.apercu-sombre i:nth-child(2){background:#37A48C}
.apercu-vert i:nth-child(1){background:#D9E9E0}.apercu-vert i:nth-child(2){background:#2E8B7A}
.apercu-auto i:nth-child(1){background:#E7ECEE}.apercu-auto i:nth-child(2){background:#10151a}
:root[data-theme="sombre"] .param-bloc.securite{background:#2a1f1f;border-color:#553a3a}
:root[data-theme="sombre"] .param-bloc.securite .param-info{color:#c99}

/* logo cliquable (barre de titre) -> accueil */
.logo-lien{display:flex;align-items:center;margin-right:10px;z-index:3}
.logo-lien img{height:28px;width:28px;border-radius:7px;display:block}

/* ============================ ADMIN ============================ */
.menu-admin{color:var(--accent-fonce);font-weight:800}
.admin-body{background:var(--fond)}
.admin{min-height:100vh;display:flex;flex-direction:column}
.admin-top{height:56px;display:flex;align-items:center;gap:12px;padding:0 16px;
  background:var(--accent);color:#fff;position:sticky;top:0;z-index:50}
.admin-logo img{height:32px;width:32px;border-radius:8px;display:block}
.admin-titre{font-weight:800;font-size:17px}
.admin-spacer{flex:1}
.admin-retour{color:#eafff8;text-decoration:none;font-weight:600;padding:6px 10px;
  border-radius:8px}
.admin-retour:hover{background:rgba(255,255,255,.15)}
.admin-burger{display:none;color:#fff}
.admin-corps{flex:1;display:grid;grid-template-columns:230px 1fr}
.admin-nav{background:var(--surface);border-right:1px solid var(--bord);padding:12px;
  display:flex;flex-direction:column;gap:4px}
.admin-nav a{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;
  text-decoration:none;color:var(--texte);font-weight:600}
.admin-nav a:hover{background:var(--fond)}
.admin-nav a.actif{background:var(--accent);color:#fff}
.admin-main{padding:22px;overflow-x:auto;max-width:none;margin:0;width:auto}
.admin-main h1{font-size:24px;margin:0 0 18px}
.admin-h2{font-size:17px;margin:24px 0 10px;color:var(--doux)}

.admin-stats{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch}
.admin-stats .stat{flex:0 1 200px}
.stat{background:var(--surface);border:1px solid var(--bord);border-radius:14px;padding:18px;
  display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit;
  box-shadow:0 2px 12px rgba(0,0,0,.05)}
.stat:hover{border-color:var(--accent)}
.stat-nb{font-size:26px;font-weight:800;color:var(--accent-fonce)}
.stat-lib{color:var(--doux);font-size:14px;font-weight:600}

.admin-entete{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.btn-admin{background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:9px;
  padding:9px 16px;font-weight:700;cursor:pointer;font-size:14px}
.btn-admin.plein{width:100%}
.admin-form{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
  padding:16px;margin-bottom:16px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.admin-form label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--doux);
  font-weight:600;flex:1;min-width:150px}
.admin-form input,.admin-form select{padding:10px;border:1px solid var(--bord);border-radius:9px;
  font-size:15px;background:var(--surface);color:var(--texte)}
.admin-form>button{flex:0 0 auto}

.admin-table{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
  overflow:auto;box-shadow:0 2px 12px rgba(0,0,0,.05)}
.admin-table table{width:100%;border-collapse:collapse;font-size:14px;min-width:520px}
.admin-table thead th{position:sticky;top:0;background:var(--fond);color:var(--doux);
  text-align:left;padding:11px 12px;border-bottom:1px solid var(--bord);font-weight:700}
.admin-table th.num,.admin-table td.num{text-align:right}
.admin-table tbody td{padding:10px 12px;border-bottom:1px solid var(--bord)}
.admin-table tbody tr:hover{background:var(--fond)}
.admin-table td.negatif{color:var(--neg)}
.col-act{white-space:nowrap;text-align:right;display:flex;gap:8px;justify-content:flex-end;align-items:center}
.lien-act{color:var(--accent-fonce);font-weight:700;text-decoration:none}
.btn-suppr{background:none;border:none;cursor:pointer;font-size:16px}
.col-act form{margin:0}

/* Bouton Admin dans le tiroir (mobile uniquement, superadmin) */
.sb-admin-mobile{display:none}
/* Barre de nav admin (mobile uniquement) */
.admin-tabbar{display:none}

@media (max-width:820px){
  .admin-corps{grid-template-columns:1fr}
  /* Sur mobile : plus de tiroir ni de burger, on utilise la barre du bas */
  .admin-nav{display:none}
  .admin-burger{display:none}
  .admin-main{padding:16px 14px 84px}      /* place pour la barre du bas */
  .admin-main h1{font-size:20px}

  /* Barre de navigation admin en bas */
  .admin-tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;height:62px;z-index:60;
    background:var(--surface);border-top:1px solid var(--bord);
    padding-bottom:env(safe-area-inset-bottom)}
  .admin-tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;font-size:11px;color:var(--doux);text-decoration:none}
  .admin-tabbar a span{font-size:20px;line-height:1}
  .admin-tabbar a.actif{color:var(--accent-fonce);font-weight:700}

  /* Bouton Admin dans le tiroir latéral (superadmin) */
  .sb-admin-mobile{display:block;text-align:center;background:var(--accent-fonce);color:#fff;
    border-radius:12px;padding:13px;font-weight:700;text-decoration:none;margin:12px}

  /* Tableaux admin -> cartes empilées */
  .admin-table{border:none;overflow:visible}
  .admin-table table,.admin-table tbody,.admin-table tr,.admin-table td{display:block;width:auto;min-width:0}
  .admin-table thead{display:none}
  .admin-table td{text-align:right}
  .admin-table td::before{flex:0 0 auto}
  .admin-table td>*{text-align:right}
  .admin-table tbody tr{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
    padding:10px 12px;margin-bottom:8px}
  .admin-table td{border:none;padding:3px 0;display:flex;justify-content:space-between;gap:10px}
  .admin-table td::before{content:attr(data-label);color:var(--doux);font-weight:600;font-size:13px}
  .admin-table td:empty{display:none}
  .admin-stats .stat{flex:1 1 140px}
  .lien-invit{flex-direction:column}
}
.admin-form[hidden]{display:none}
.btn-admin-sidebar{display:block;text-align:center;background:var(--accent-fonce);color:#fff;border-radius:12px;padding:12px;font-weight:700;text-decoration:none;margin-top:8px}
.btn-admin-sidebar:hover{background:var(--accent)}

/* ---- Gestion des comptes ---- */
.cpt-ajout{background:var(--surface);border:1px solid var(--bord);border-radius:14px;
  padding:14px 16px;margin:14px 0}
.cpt-ajout>summary{cursor:pointer;font-weight:700;color:var(--accent);list-style:none}
.cpt-ajout>summary::-webkit-details-marker{display:none}
.cpt-form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-top:12px}
.cpt-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}
.cpt-form input[type=text],.cpt-form select{padding:9px 10px;border:1px solid var(--bord);
  border-radius:9px;background:var(--fond);color:var(--texte);font-size:14px;min-width:150px}
.cpt-form label.switch{flex-direction:row;align-items:center;gap:8px;font-weight:400;
  flex-basis:100%}
.cpt-table{overflow-x:auto;margin-top:8px;border:1px solid var(--bord);border-radius:14px}
.cpt-table table{width:100%;border-collapse:collapse;min-width:640px}
.cpt-table th,.cpt-table td{padding:12px 14px;border-bottom:1px solid var(--bord);
  text-align:left;vertical-align:top}
.cpt-table thead th{font-size:12px;text-transform:uppercase;letter-spacing:.4px;
  color:var(--texte-doux,#667);background:var(--surface)}
.cpt-table td.num,.cpt-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.cpt-table tr.inactif{opacity:.55}
.cpt-table a{color:var(--accent);text-decoration:none}
.cpt-sous{font-size:12px;opacity:.7;font-weight:400}
.cpt-ordre{white-space:nowrap}
.cpt-ordre .inline{display:inline}
.cpt-ordre button{background:var(--fond);border:1px solid var(--bord);border-radius:7px;
  width:26px;height:26px;cursor:pointer;color:var(--texte)}
.cpt-ordre button:disabled{opacity:.3;cursor:default}
.cpt-actions{white-space:nowrap;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.inline{display:inline;margin:0}
.lien-b{background:none;border:0;color:var(--accent);cursor:pointer;font-size:14px;
  font-weight:600;padding:0;text-align:left}
.lien-b.danger-b{color:#c0392b}
.cpt-edit>summary{cursor:pointer;list-style:none;color:var(--accent);font-weight:600}
.cpt-edit>summary::-webkit-details-marker{display:none}
.cpt-edit[open]{background:var(--surface);border:1px solid var(--bord);border-radius:12px;
  padding:12px;margin-bottom:6px}
.badge-ok{background:#E7F6F1;color:var(--accent-fonce);border-radius:20px;padding:3px 10px;
  font-size:12px;font-weight:700}
.badge-off{background:#eee;color:#777;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:700}
:root[data-theme="sombre"] .badge-off{background:#333;color:#aaa}

/* Suppression de compte protégée par mot de passe */
.info-err{background:#FDECEA;color:#B0281A;border:1px solid #F5C6C2;border-radius:10px;
  padding:10px 14px;margin:10px 0}
.cpt-suppr>summary{list-style:none}
.cpt-suppr>summary::-webkit-details-marker{display:none}
.cpt-suppr[open]{background:#FFF9F8;border:1px solid #F3C9C4;border-radius:12px;
  padding:12px;margin-top:6px;max-width:320px}
.cpt-suppr-form{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.cpt-suppr-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}
.cpt-suppr-form input[type=password]{padding:9px 10px;border:1px solid var(--bord);
  border-radius:9px;background:var(--surface);color:var(--texte);font-size:14px}
.cpt-suppr-txt{font-size:12.5px;color:var(--neg);margin:0;line-height:1.4}
.cpt-suppr-form .danger{width:100%}

/* ================= Page Calendrier ================= */
.cal-entete{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.cal-mois-nav{display:flex;align-items:center;gap:14px;font-weight:700;color:var(--accent-fonce)}
.cal-mois-nav a{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--bord);border-radius:9px;background:var(--surface);text-decoration:none;color:var(--texte)}
.cal-grand{background:var(--surface);border:1px solid var(--bord);border-radius:16px;padding:16px;margin:14px 0}
.cal-grand .cal-grid{gap:6px;margin-top:0}
.cal-grand .cal-head{font-size:13px;padding:6px 0}
.cal-grand .cal-jour{font-size:16px;padding:14px 0;border:1px solid transparent}
.cal-grand .cal-jour.hors{opacity:.4}
.cal-legende{margin:14px 0 0;color:var(--doux);font-size:13px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pastille{width:14px;height:14px;border-radius:4px;display:inline-block;vertical-align:middle}
.pastille.ech{background:#FDE3A7}
.pastille.today{background:transparent;outline:2px solid var(--accent)}
.cal-liste-titre{font-size:16px;margin:18px 0 8px;color:var(--doux)}
.cal-liste{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.cal-item{display:flex;gap:12px;align-items:stretch;background:var(--surface);
  border:1px solid var(--bord);border-radius:12px;padding:10px 12px}
.cal-item.due{border-color:#E7C98A;background:#FFFBF2}
.cal-jour-num{flex:0 0 44px;display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:800;color:var(--accent-fonce);background:var(--fond);border-radius:10px}
.cal-item-corps{flex:1;min-width:0}
.cal-item-haut{display:flex;justify-content:space-between;gap:8px}
.cal-item-lib{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-item-mnt{font-weight:700;white-space:nowrap}
.cal-item-bas{display:flex;align-items:center;gap:8px;margin-top:3px;color:var(--doux);font-size:12.5px}
.tag-ech,.tag-op{border-radius:20px;padding:2px 9px;font-size:11px;font-weight:700}
.tag-ech{background:#FDE3A7;color:#8A5A00}
.tag-op{background:#E7F6F1;color:var(--accent-fonce)}
:root[data-theme="sombre"] .tag-ech{background:#5a4a1e;color:#ffd98a}
:root[data-theme="sombre"] .cal-item.due{background:#2a2617;border-color:#5a4a1e}

/* En-tête compte : masqué en bureau (nom dans la barre + sidebar) */
.compte-entete{display:none}
.op-carte .oc-txt{margin-left:4px}

/* ====== Registre mobile : style app bancaire (lignes compactes) ====== */
@media (max-width:820px){
  /* En-tête de compte avec solde bien visible */
  .compte-entete{display:flex;align-items:center;justify-content:space-between;
    background:var(--surface);border:1px solid var(--bord);border-radius:14px;
    padding:14px 16px;margin-bottom:10px}
  .compte-entete .ce-nom{font-weight:700;font-size:16px}
  .compte-entete .ce-solde{font-weight:800;font-size:20px;color:var(--accent-fonce)}
  .compte-entete .ce-solde.negatif{color:var(--neg)}

  .registre{background:var(--surface);border:1px solid var(--bord);border-radius:14px;
    overflow:hidden;flex:none;min-height:0;padding:0}
  .registre table,.registre tbody,.registre tr,.registre td{display:block;width:auto}
  .registre thead{display:none}

  /* Une ligne = une opération : [check] date  libellé …………  montant */
  .registre tbody tr{display:flex;align-items:center;gap:10px;margin:0;border-radius:0;
    padding:11px 14px;border-bottom:1px solid var(--bord);background:var(--surface)}
  .registre tbody tr:last-child{border-bottom:none}
  .registre tbody tr.pointee{background:#F3FAF8}
  .registre tbody tr.selectionnee{background:#DFF0EC}
  .registre td{border:none;padding:0;text-align:left}
  .registre td.c-point{flex:0 0 auto}
  .registre td.c-point .pt{width:20px;height:20px}
  .registre td.c-date{flex:0 0 auto;color:var(--doux);font-size:12px;white-space:nowrap;line-height:1.1}
  .registre td.c-lib{flex:1 1 auto;min-width:0;font-weight:600;font-size:15px;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .registre td.c-lib .op-carte .oc-txt{display:none}   /* garder la ligne épurée */
  .registre td.c-lib .op-carte{margin-left:6px}
  .registre td.c-cat,.registre td.c-solde{display:none}  /* catégorie & solde -> fiche détail */
  .registre td.num{flex:0 0 auto;font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}
  .registre td.c-debit:empty,.registre td.c-credit:empty{display:none}
  .registre td.c-debit{color:var(--neg)}
  .registre td.c-credit{color:var(--accent-fonce)}

  .contenu{display:block;overflow:visible}
}

/* Admin — carte + lien d'invitation */
.admin-carte{background:var(--surface);border:1px solid var(--bord);border-radius:14px;padding:16px;margin:10px 0 18px}
.lien-invit{display:flex;gap:8px;margin:10px 0}
.lien-invit input{flex:1;padding:10px 12px;border:1px solid var(--bord);border-radius:9px;
  background:var(--fond);color:var(--texte);font-size:13px;font-family:monospace}
.lien-actions{display:flex;gap:10px;align-items:center;margin-top:8px}
.lien-actions form{margin:0}

/* ===== Liens stylés en boutons (barres d'outils) ===== */
.bouton-lien{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}

/* ===== Pages de saisie dédiées (nouvelle opération / échéance) ===== */
.page-form{max-width:560px}
.form-page{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.form-page label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--texte)}
.form-page input,.form-page select{padding:12px;border:1px solid var(--bord);border-radius:10px;
  font-size:16px;background:var(--surface);color:var(--texte)}
.form-page input:disabled{background:var(--fond);color:var(--doux)}
.form-page-actions{display:flex;gap:10px;margin-top:8px}
.form-page-actions .bouton,.form-page-actions .principal{flex:1;text-align:center;padding:13px;
  border-radius:10px;text-decoration:none;cursor:pointer;font-weight:700}
.form-page-actions .bouton{border:1px solid var(--bord);background:var(--surface);color:var(--texte)}

/* ===== Cartes bancaires ===== */
.cartes-liste{list-style:none;padding:0;margin:14px 0 0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.carte-item{display:flex;flex-direction:column;gap:8px}
.carte-visu{border-radius:16px;padding:18px;color:#fff;min-height:120px;display:flex;
  flex-direction:column;justify-content:space-between;
  background:linear-gradient(135deg,var(--accent),var(--accent-fonce));box-shadow:0 6px 18px rgba(0,0,0,.18)}
.carte-visu.credit{background:linear-gradient(135deg,#5b6cb5,#33407a)}
.carte-type{font-size:12px;text-transform:uppercase;letter-spacing:1px;opacity:.85}
.carte-nom{font-size:19px;font-weight:800}
.carte-num{font-family:monospace;letter-spacing:2px;font-size:15px}
.carte-bas{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--doux)}
.carte-bas form{margin:0}

/* Badge carte dans le registre (bureau) */
.op-carte{display:inline-flex;align-items:center;margin-left:8px;font-size:12px;
  color:var(--accent-fonce);background:#E7F6F1;border-radius:20px;padding:1px 8px;font-weight:600}
:root[data-theme="sombre"] .op-carte{background:#22332e}

@media (max-width:820px){
  .toolbar{gap:6px}
  .toolbar .principal,.toolbar .bouton{padding:9px 12px;font-size:14px}
  .op-carte{background:none;padding:0;margin-left:6px}
  .cartes-liste{grid-template-columns:1fr}
}

/* Choix de méthode 2FA */
.form-vertical{display:flex;flex-direction:column;gap:12px}
.radio-carte{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--bord);
  border-radius:12px;cursor:pointer;font-size:14px;background:var(--surface)}
.radio-carte input{margin-top:3px;width:18px;height:18px;flex:0 0 auto}
.radio-carte:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 2px rgba(46,139,122,.18)}

/* ===== Cartes : plafond, stats, détail ===== */
.carte-visu.off{opacity:.55;filter:grayscale(.4)}
.carte-plafond{margin-top:4px}
.cp-barre{height:7px;border-radius:6px;background:rgba(255,255,255,.35);overflow:hidden}
.cp-barre>span{display:block;height:100%;background:#fff;border-radius:6px}
.cp-barre>span.depasse{background:#ffd0d0}
.cp-txt{font-size:12px;opacity:.9;display:block;margin-top:3px}
.carte-edit>summary{list-style:none;cursor:pointer;color:var(--accent);font-weight:600}
.carte-edit>summary::-webkit-details-marker{display:none}
.carte-edit[open]{background:var(--surface);border:1px solid var(--bord);border-radius:12px;padding:12px;margin-top:6px;flex-basis:100%}
.carte-stats{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}
.carte-stats .stat{flex:1 1 120px;background:var(--surface);border:1px solid var(--bord);
  border-radius:14px;padding:14px}
.carte-stats .stat-nb{display:block;font-size:22px;font-weight:800;color:var(--accent-fonce)}
.carte-stats .stat-lib{color:var(--doux);font-size:13px}

/* Bouton "Inviter un utilisateur" (section repliable) */
.inviter-bloc{padding:0;overflow:hidden}
.inviter-bloc>summary{list-style:none;cursor:pointer}
.inviter-bloc>summary::-webkit-details-marker{display:none}
.btn-inviter{display:block;background:var(--accent);color:#fff;font-weight:700;font-size:15px;
  padding:14px 16px;text-align:center}
.btn-inviter:hover{background:var(--accent-fonce)}
.inviter-bloc[open]>summary.btn-inviter{border-bottom:1px solid var(--bord)}
.inviter-bloc>*:not(summary){margin-left:16px;margin-right:16px}
.inviter-bloc>*:last-child{margin-bottom:16px}

/* ================= Interface de pointage (rapprochement) ================= */
.pointage-tete{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0 16px}
.pointage-tete .pt-val{background:var(--surface);border:1px solid var(--bord);border-radius:14px;
  padding:12px;text-align:center}
.pt-val .pt-lib{display:block;color:var(--doux);font-size:12px;margin-bottom:4px}
.pt-val .pt-nb{font-size:19px;font-weight:800;color:var(--texte)}
.pt-diff .pt-nb{color:var(--neg)}
.pt-diff.ok{background:#E7F6F1;border-color:#Bfe6da}
.pt-diff.ok .pt-nb{color:var(--accent-fonce)}
.pt-diff.ok .pt-lib::after{content:' ✓'}

.pointage-liste{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.pt-item{display:flex;align-items:center;gap:12px;background:var(--surface);
  border:1px solid var(--bord);border-radius:12px;padding:12px 14px;transition:background .15s}
.pt-item.pointe{background:#F1FAF7;border-color:#CFE8E1}
.pt-toggle{flex:0 0 auto;width:34px;height:34px;border-radius:50%;border:2px solid var(--bord);
  background:var(--surface);color:transparent;cursor:pointer;display:flex;align-items:center;
  justify-content:center;transition:all .15s}
.pt-toggle svg{width:20px;height:20px}
.pt-item.pointe .pt-toggle{background:var(--accent);border-color:var(--accent);color:#fff}
.pt-corps{flex:1;min-width:0}
.pt-haut{display:flex;justify-content:space-between;gap:10px}
.pt-lib2{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-mnt{font-weight:700;white-space:nowrap;color:var(--accent-fonce)}
.pt-mnt.neg{color:var(--neg)}
.pt-date{color:var(--doux);font-size:12.5px;margin-top:2px}
@media (max-width:820px){
  .pointage-tete .pt-nb{font-size:16px}
  .pointage-tete{gap:6px}
}

/* ================= Ajout de carte : formulaire agréable + aperçu ================= */
.carte-ajout{background:var(--surface);border:1px solid var(--bord);border-radius:16px;
  overflow:hidden;margin:14px 0;box-shadow:0 2px 12px rgba(0,0,0,.05)}
.carte-ajout>summary.carte-ajout-sum{list-style:none;cursor:pointer;font-weight:700;
  color:var(--accent);padding:16px}
.carte-ajout>summary.carte-ajout-sum::-webkit-details-marker{display:none}
.carte-ajout[open]>summary.carte-ajout-sum{border-bottom:1px solid var(--bord)}
.carte-ajout-corps{padding:18px}

/* aperçu live de la carte */
.carte-visu.apercu{max-width:340px;margin:0 auto 18px;min-height:150px}
.carte-visu.apercu .carte-nom{font-size:20px;min-height:24px}

/* formulaire */
.carte-form{display:flex;flex-direction:column;gap:14px;max-width:420px;margin:0 auto}
.carte-form-row{display:flex;gap:12px}
.carte-form-row .cf-champ{flex:1}
.cf-champ{display:flex;flex-direction:column;gap:6px}
.cf-lib{font-size:13px;font-weight:600;color:var(--texte)}
.cf-lib em{color:var(--doux);font-weight:400;font-style:normal;font-size:12px}
.carte-form input,.carte-form select{padding:13px 14px;border:1px solid var(--bord);
  border-radius:12px;font-size:16px;background:var(--fond);color:var(--texte);
  transition:border-color .15s,box-shadow .15s}
.carte-form input:focus,.carte-form select:focus{outline:none;border-color:var(--accent);
  background:var(--surface);box-shadow:0 0 0 3px rgba(46,139,122,.15)}
.cf-btn{margin-top:4px;border-radius:12px}

/* Champ scan de carte (optionnel) */
.cf-scan input{background:var(--surface);border-style:dashed}
.cf-scan .cf-lib em{display:block;margin-top:2px}
