/*
 * Overlays transversaux — modales, recherche, scanner, attente, détail membre et authentification.
 * Extrait du CSS historique sans changement visuel.
 */

.modal-backdrop{position:fixed;inset:0;background:rgba(30,26,22,.42);z-index:2000;display:none;align-items:flex-end;justify-content:center;padding:12px}
.modal-backdrop.open{display:flex}
.modal{width:min(620px,100%);max-height:86dvh;overflow:auto;background:#fffdfa;border-radius:20px;padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal h3{margin:0 0 12px;font-size:22px}
.modal input{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:12px;font-size:16px;background:white;color:var(--ink)}
.modal .modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.modal .modal-actions button,.search-item{border:1px solid var(--line);border-radius:12px;background:white;color:var(--ink);padding:11px 13px;font-weight:700}
.search-results{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.search-item{text-align:left;width:100%;cursor:pointer}
.search-item small{display:block;color:var(--muted);font-weight:500;margin-top:3px}

.scan-modal{max-width:520px}

.scan-help{margin:0 0 10px;color:var(--muted);font-size:14px;text-align:center}

.qr-reader{width:100%;min-height:290px;background:#111;border-radius:16px;overflow:hidden;position:relative}

.qr-reader video{width:100%!important;height:auto!important;display:block;border-radius:16px}

.qr-reader img{max-width:100%}

.scan-status{text-align:center;font-size:13px;color:var(--muted);padding:9px 4px 4px;min-height:28px}

.manual-code-toggle{display:block;margin:6px auto 0;border:0;background:transparent;color:#6d6258;font-weight:750;text-decoration:underline;padding:8px 12px}

.manual-code-panel{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:8px}

.manual-code-panel input{min-width:0}

.manual-code-panel button{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:0 16px;font-weight:800;color:var(--ink)}
@media(max-width:700px){
.qr-reader{min-height:260px}
.scan-modal{width:min(94vw,520px)}

}


.busy-overlay{
  position:fixed;
  inset:0;
  z-index:4000;
  display:none;
  align-items:center;
  justify-content:center;
  background:rgba(244,239,232,.35);
  -webkit-backdrop-filter:blur(1.5px);
  backdrop-filter:blur(1.5px);
}

.busy-overlay.show{display:flex}

/* V3.0 — démarrage : écran neutre tant que les données initiales ne sont pas prêtes. */
body.startup-loading{
  overflow:hidden;
}

body.startup-loading.loading{
  opacity:1!important;
  pointer-events:none;
}

body.startup-loading > :not(#busyOverlay):not(script):not(style){
  visibility:hidden!important;
}

body.startup-loading #busyOverlay{
  display:flex!important;
  visibility:visible!important;
  background:#f4efe8;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}

body.startup-loading #busyOverlay .busy-card{
  min-width:0;
  padding:0;
  border:0;
  background:transparent;
  box-shadow:none;
  gap:0;
}

body.startup-loading #busyText{
  display:none!important;
}

body.startup-loading .busy-hourglass{
  font-size:34px;
}

.busy-card{
  min-width:145px;
  background:#fffdfa;
  border:1px solid var(--line);
  border-radius:18px;
  padding:16px 20px;
  box-shadow:0 15px 45px rgba(0,0,0,.18);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  font-weight:800;
}

.busy-hourglass{
  font-size:30px;
  line-height:1;
  animation:hourglassFlip 1s ease-in-out infinite;
}

@keyframes hourglassFlip{
  0%,45%{transform:rotate(0deg)}
  55%,100%{transform:rotate(180deg)}
}



.dropin-duplicates{
  margin-top:12px;
  padding:12px;
  border-radius:14px;
  background:#fff4d9;
  border:1px solid #e2bd67;
}

.duplicate-title{
  font-weight:900;
  color:#6d4b08;
  font-size:16px;
  margin-bottom:3px;
}

.duplicate-help{
  color:#755b2c;
  font-size:13px;
  margin-bottom:9px;
}

.duplicate-client{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:11px 12px;
  margin-top:7px;
  border:1px solid #d5b668;
  border-radius:12px;
  background:#fffdfa;
  color:#2a251f;
  text-align:left;
  cursor:pointer;
}

.duplicate-client strong{
  font-size:15px;
}

.duplicate-client span{
  font-size:12px;
  font-weight:800;
  color:#6d4b08;
}

.modal-backdrop{
  z-index:20000;
}


/* neutralise l'ancien zoom */


.member-detail-modal{
  max-width:620px;
  max-height:min(82vh,760px);
  overflow:auto;
}

.member-detail-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}

.member-detail-top h3{
  margin:0;
  font-size:23px;
}

.member-detail-close{
  width:38px;
  height:38px;
  border:0;
  border-radius:999px;
  background:#eee5dc;
  color:#3a342f;
  font-size:25px;
  line-height:1;
}

.member-detail-section{
  margin-top:14px;
}

.member-detail-section+.member-detail-section{
  border-top:1px solid var(--line);
  padding-top:16px;
}

.member-detail-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
}

.member-detail-heading strong{
  display:block;
  font-size:17px;
}

.member-detail-heading small{
  display:block;
  margin-top:2px;
  color:var(--text2);
  font-size:13px;
}

.member-detail-heading>span{
  flex:0 0 auto;
  min-width:30px;
  text-align:center;
  background:#e8ded2;
  border-radius:999px;
  padding:5px 9px;
  font-size:12px;
  font-weight:800;
}

.regularize-section .member-detail-heading>span{
  background:#efd7d7;
  color:#7f3232;
}

.member-presence-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-top:7px;
  padding:10px 11px;
  background:#fffdfa;
  border:1px solid var(--line);
  border-radius:13px;
}

.member-presence-item.regularize-item{
  background:#fff5f3;
  border-color:#e1b6b2;
}

.member-presence-main{
  min-width:0;
}

.member-presence-main strong{
  display:block;
  font-size:15px;
  line-height:1.2;
}

.member-presence-main span{
  display:block;
  margin-top:3px;
  color:var(--text2);
  font-size:12px;
  line-height:1.25;
}

.member-presence-status{
  flex:0 0 auto;
  padding:5px 8px;
  border-radius:999px;
  background:#dcebdc;
  color:#35663b;
  font-size:11px;
  font-weight:800;
}

.regularize-item .member-presence-status{
  background:#efd7d7;
  color:#7f3232;
}

.member-detail-empty,
.member-detail-loading,
.member-detail-error{
  padding:14px;
  border-radius:12px;
  background:#f4efe8;
  color:var(--text2);
  font-size:14px;
}

.member-detail-error{
  background:#f7e5e5;
  color:#7f3232;
}
@media(max-width:700px){

  .member-detail-modal{
    width:calc(100vw - 20px);
    max-height:82dvh;
  }

  .member-detail-top h3{font-size:20px}

  .member-presence-item{padding:9px}

  .member-presence-main strong{font-size:14px}

}



/* V1.21 : détail carte plus lisible */
.member-presence-main strong{
  font-size:13px !important;
  font-weight:700;
  text-transform:none;
}

.member-presence-main span{
  margin-top:4px !important;
  font-size:15px !important;
  font-weight:800;
  color:var(--ink) !important;
}

.member-presence-status.status-reserved{
  background:#f5e3c4;
  color:#7a5711;
}

.member-presence-status.status-paid{
  background:#efd7d7;
  color:#7f3232;
}

.member-presence-status.status-present{
  background:#dcebdc;
  color:#35663b;
}



/* V1.22 : synthèse carte */
.member-card-meta{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin:4px 0 10px;
  padding:11px 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}

.member-card-meta div{
  min-width:0;
}

.member-card-meta span{
  display:block;
  color:var(--text2);
  font-size:11px;
  line-height:1.2;
}

.member-card-meta strong{
  display:block;
  margin-top:3px;
  font-size:13px;
  line-height:1.2;
}

.member-detail-heading-count{
  justify-content:flex-start;
}

.member-detail-heading-count strong{
  font-size:18px;
}

.member-last-card-title{
  margin-bottom:8px;
}

.member-last-card-title strong{
  font-size:18px;
}
@media(max-width:420px){

  .member-card-meta{
    gap:5px;
  }

  .member-card-meta span{font-size:10px}

  .member-card-meta strong{font-size:12px}

}



/* V1.30 : retour visuel immédiat pendant les écritures de données */
.busy-card{
  min-width:180px;
}

.busy-hourglass{
  font-size:34px !important;
}



/* V2.11 — authentification */
.auth-locked .app{filter:blur(3px);pointer-events:none;user-select:none}

.login-overlay{position:fixed;inset:0;z-index:10000;background:rgba(38,35,31,.58);display:none;align-items:center;justify-content:center;padding:22px}

.login-overlay.show{display:flex}

.login-card{width:min(440px,100%);background:#fffdfa;border-radius:24px;padding:30px;box-shadow:0 20px 60px rgba(0,0,0,.25)}

.login-card h2{font-size:30px;margin:0 0 8px;font-weight:900}

.login-card p{margin:0 0 22px;color:#6f675f;font-size:16px}

.login-card input{width:100%;height:58px;border:1px solid #ded3c7;border-radius:15px;padding:0 16px;font:inherit;font-size:19px;background:#fff}

.login-card input:focus{outline:3px solid rgba(74,111,154,.18);border-color:#7895b5}

.login-error{min-height:24px;color:#a23d3d;font-weight:750;margin:10px 2px 4px}

.login-card button{width:100%;height:58px;border:0;border-radius:15px;background:#26231f;color:#fff;font-size:19px;font-weight:850;cursor:pointer}

.login-card button:disabled{opacity:.55}

.login-lock{font-size:35px;margin-bottom:8px}



/* V2.12 — écran de connexion BackOffice */
.login-card h2{
  font-size:28px;
  line-height:1.08;
}

.login-card p{
  font-size:17px;
  font-weight:650;
  color:#4f4943;
}

.login-password-wrap{
  position:relative;
  width:100%;
}

.login-password-wrap input{
  width:100%;
  padding-right:62px;
  letter-spacing:.06em;
}

.login-eye{
  position:absolute;
  top:50%;
  right:10px;
  transform:translateY(-50%);
  width:42px !important;
  height:42px !important;
  border:0 !important;
  border-radius:10px !important;
  padding:0 !important;
  background:transparent !important;
  color:#5e5750 !important;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}

.login-eye:hover{
  background:#f2eee9 !important;
}

.login-eye svg{
  width:25px;
  height:25px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.login-eye .eye-closed{display:none}

.login-eye.is-visible .eye-open{display:none}

.login-eye.is-visible .eye-closed{display:block}
@media(max-width:480px){

  .login-card{padding:24px 20px}

  .login-card h2{font-size:24px}

  .login-card p{font-size:16px}

}

.delete-blocked-modal .modal-actions{justify-content:center}

.delete-blocked-modal .modal-actions button{min-width:120px}
