

:root{
  /* Palette et thèmes */
  --primary:#3b82f6;
  --primary-dark:#2563eb;
  --secondary:#06b6d4;
  --success:#10b981;
  --warning:#f59e0b;
  --danger:#ef4444;
  --info:#8b5cf6;
  --dark:#0f172a;
  --gray-dark:#475569;
  --gray:#64748b;
  --gray-light:#94a3b8;
  --light:#f1f5f9;
  --white:#fff;

  /* Rayons & ombres */
  --radius-sm:8px;
  --radius:12px;
  --radius-lg:16px;
  --radius-xl:20px;
  --shadow:0 1px 3px rgb(0 0 0 / .1);
  --shadow-md:0 4px 6px -1px rgb(0 0 0 /.1);
  --shadow-lg:0 10px 15px -3px rgb(0 0 0 /.1);

  /* Layout */
  --topbar-h:70px;
  --page-pad:24px;
  --panel-body-h:520px;
  --panel-body-h-mob:360px;

  /* Animations */
  --transition: all .3s cubic-bezier(.4,0,.2,1);
}

.maintenance-banner{
  position:fixed;
  top:var(--topbar-h);
  left:0;
  right:0;
  z-index:999;
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:8px 16px;
  background:#1b84ff;
  color:#fff;
  font-weight:800;
  box-shadow:0 8px 18px rgba(27,132,255,.22);
}
.maintenance-banner i{font-size:15px;}

.page-admin .admin-shell,
.page-maintenance .maintenance-shell{
  max-width:1600px;
  margin:0 auto;
  padding:0 var(--page-pad);
}
.page-admin .admin-hero,
.page-maintenance .maintenance-hero{
  background:#fff;
  border-radius:var(--radius-xl);
  box-shadow:var(--shadow-md);
  padding:32px 36px;
  margin-bottom:20px;
}
.page-admin .admin-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:20px;
}
.page-admin .admin-toast-stack{
  position:fixed;
  top:calc(var(--topbar-h) + 20px);
  left:50%;
  right:auto;
  transform:translateX(-50%);
  display:flex;
  flex-direction:column;
  gap:12px;
  width:min(420px, calc(100vw - 48px));
  z-index:1200;
  pointer-events:none;
  align-items:stretch;
}
.page-admin .admin-toast{
  pointer-events:auto;
  display:flex;
  align-items:center;
  gap:12px;
  width:100%;
  box-sizing:border-box;
  padding:14px 16px;
  border-radius:16px;
  box-shadow:0 18px 40px rgba(15,23,42,.16);
  background:#fff;
  border:1px solid rgba(148,163,184,.18);
  animation:adminToastIn .24s ease-out both;
}
.page-admin .admin-toast--success{border-color:rgba(16,185,129,.28);background:linear-gradient(135deg,rgba(16,185,129,.08),#fff 38%);}
.page-admin .admin-toast--danger{border-color:rgba(239,68,68,.28);background:linear-gradient(135deg,rgba(239,68,68,.08),#fff 38%);}
.page-admin .admin-toast--warning{border-color:rgba(245,158,11,.28);background:linear-gradient(135deg,rgba(245,158,11,.1),#fff 38%);}
.page-admin .admin-toast--info{border-color:rgba(59,130,246,.28);background:linear-gradient(135deg,rgba(59,130,246,.08),#fff 38%);}
.page-admin .admin-toast__icon{
  width:38px;
  height:38px;
  border-radius:12px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  align-self:center;
  background:rgba(59,130,246,.12);
  color:var(--primary);
}
.page-admin .admin-toast--success .admin-toast__icon{background:rgba(16,185,129,.12);color:#059669;}
.page-admin .admin-toast--danger .admin-toast__icon{background:rgba(239,68,68,.12);color:#dc2626;}
.page-admin .admin-toast--warning .admin-toast__icon{background:rgba(245,158,11,.15);color:#b45309;}
.page-admin .admin-toast__body{
  flex:1;
  padding-top:0;
  color:var(--dark);
  font-weight:700;
  line-height:1.45;
}
.page-admin .admin-toast__close{
  border:none;
  background:transparent;
  color:var(--gray);
  width:30px;
  height:30px;
  border-radius:999px;
  display:grid;
  place-items:center;
  cursor:pointer;
  flex:0 0 auto;
  align-self:center;
  transition:var(--transition);
}
.page-admin .admin-toast__close:hover{
  background:rgba(148,163,184,.12);
  color:var(--dark);
}
.page-admin .admin-toast.is-hiding{
  animation:adminToastOut .22s ease-in both;
}
@keyframes adminToastIn{
  from{opacity:0;transform:translateY(-10px) scale(.98)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes adminToastOut{
  from{opacity:1;transform:translateY(0) scale(1)}
  to{opacity:0;transform:translateY(-8px) scale(.98)}
}
.page-admin .maintenance-card{
  overflow:hidden;
  padding:0;
}
.page-admin .maintenance-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  margin:18px 18px 0;
  padding:22px 22px 18px;
  background:linear-gradient(135deg,rgba(59,130,246,.14),rgba(8,145,178,.08));
  border:1px solid rgba(59,130,246,.12);
  border-radius:18px;
  box-shadow:0 12px 24px rgba(59,130,246,.08);
}
.page-admin .maintenance-heading{
  flex:1;
  min-width:0;
}
.page-admin .maintenance-heading h2{
  margin:0;
}
.page-admin .maintenance-sub{
  margin-top:6px;
  max-width:72ch;
}
.page-admin .maintenance-panel{
  padding:18px 22px 22px;
}
.page-admin .card,
.page-maintenance .card{
  background:#fff;
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
  padding:20px 22px;
}
.page-admin .table-wrap{
  overflow:auto;
}
.page-admin .admin-table{
  width:100%;
  border-collapse:collapse;
  min-width:1100px;
}
.page-admin .admin-table th,
.page-admin .admin-table td{
  padding:12px 10px;
  border-bottom:1px solid var(--light);
  text-align:left;
  vertical-align:top;
  font-size:14px;
}
.page-admin .admin-table th:last-child,
.page-admin .admin-table td:last-child{
  text-align:center;
}
.page-admin .admin-table th{
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--gray);
}
.page-admin .admin-table tbody tr:hover{background:#fafafa;}
.page-admin .admin-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:10px;
}
.page-admin .admin-action-form{
  display:inline-flex;
  flex:0 0 auto;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:auto;
  padding:10px 12px;
  background:#f8fafc;
  border:1px solid rgba(148,163,184,.2);
  border-radius:14px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.page-admin .admin-action-form .btn{
  min-width:112px;
  justify-content:center;
  margin-left:0;
  white-space:nowrap;
}
.page-admin .admin-select{
  min-width:0;
  width:150px;
  padding:10px 12px;
}
.page-admin .admin-action-form--delete{
  background:#fff;
}
.page-admin .maintenance-form{
  display:flex;
  flex-direction:column;
  gap:16px;
}
.page-admin .maintenance-toggle{
  width:100%;
  justify-content:flex-start;
  padding:14px 16px;
  border-radius:16px;
  background:#f8fafc;
}
.page-admin .maintenance-actions{
  display:flex;
  justify-content:flex-end;
  align-items:center;
}
.page-admin .maintenance-save-btn{
  min-width:160px;
}
.page-admin .maintenance-status{
  font-weight:800;
}
.page-maintenance .maintenance-card{
  max-width:1080px;
  margin:0 auto;
  text-align:left;
  overflow:hidden;
  border-top:6px solid #1b84ff;
}
.page-maintenance .maintenance-card .icon{
  margin:0;
}
.page-maintenance .maintenance-card h1{
  margin:0;
  font:900 36px/1.08 'Montserrat',system-ui;
}
.page-maintenance .maintenance-card .muted{
  color:var(--gray-dark);
}
.page-maintenance .maintenance-card .btn{
  justify-content:center;
}
.support-history{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.support-item{
  border:1px solid var(--light);
  border-radius:14px;
  padding:14px 15px;
  background:linear-gradient(180deg,rgba(255,255,255,.98) 0%, rgba(248,250,252,.92) 100%);
}
.support-item__head{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:flex-start;
}
.support-item__subject{
  font-weight:800;
  color:var(--dark);
  font-size:14px;
}
.support-item__meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
  margin-top:6px;
  font-size:12px;
  color:var(--gray);
}
.support-item__message,
.support-item__reply{
  margin-top:10px;
  padding:12px;
  border-radius:12px;
  white-space:pre-line;
  line-height:1.6;
}
.support-item__message{
  background:#f8fafc;
  color:var(--dark);
}
.support-item__reply{
  background:rgba(59,130,246,.08);
  color:#1e40af;
}
.support-item__reply-title{
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  margin-bottom:6px;
  color:#1d4ed8;
}
.support-admin-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.support-admin-form .form-group{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-bottom:12px;
}
.support-admin-form .form-label{
  font-size:13px;
  font-weight:700;
  color:var(--gray-dark);
}
.support-admin-form textarea,
.support-admin-form select{
  width:100%;
}
.support-admin-form textarea{
  min-height:120px;
  resize:vertical;
}
.support-admin-card + .support-admin-card{
  margin-top:14px;
}
.support-admin-meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  margin-top:8px;
}
.support-admin-actions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}
.page-admin .support-summary-table{
  width:100%;
  min-width:980px;
  border-collapse:collapse;
}
.page-admin .support-summary-table th,
.page-admin .support-summary-table td{
  padding:12px 10px;
  border-bottom:1px solid var(--light);
  text-align:left;
  vertical-align:top;
  font-size:14px;
}
.page-admin .support-summary-table th:last-child,
.page-admin .support-summary-table td:last-child{
  text-align:center;
}
.page-admin .support-summary-table th{
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--gray);
}
.page-admin .support-summary-table tbody tr:hover{background:#fafafa;}
.page-admin .support-open-btn{
  min-width:112px;
  justify-content:center;
}
.support-modal.br-modal{
  position:fixed;
  inset:0;
  display:none;
  z-index:2147483646;
}
.support-modal.br-modal.open{
  display:block;
}
.support-modal .br-modal__dialog{
  position:relative;
  margin:7vh auto 0;
  max-width:980px;
  width:min(980px, calc(100vw - 32px));
  background:#fff;
  border-radius:20px;
  box-shadow:0 30px 60px rgba(0,0,0,.25);
  overflow:hidden;
  z-index:1;
}
.support-modal .br-modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,.58);
  backdrop-filter:blur(2px);
}
.support-modal .br-modal__header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:16px 20px;
  border-bottom:1px solid #eef2f7;
  position:relative;
  z-index:1;
}
.support-modal .br-modal__close{
  border:none;
  background:transparent;
  color:var(--gray);
  width:32px;
  height:32px;
  border-radius:999px;
  display:grid;
  place-items:center;
  cursor:pointer;
  flex:0 0 auto;
  font-size:24px;
  line-height:1;
}
.support-modal .br-modal__close:hover{
  background:rgba(148,163,184,.12);
  color:var(--dark);
}
.support-modal .br-modal__body{
  padding:18px 20px;
}
.support-modal .br-modal__footer{
  display:flex;
  gap:10px;
  justify-content:flex-end;
  padding:14px 20px 18px;
  border-top:1px solid #eef2f7;
}
.support-modal__body{
  display:flex;
  flex-direction:column;
  gap:16px;
}
.support-modal__meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.support-modal__details{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
.support-modal__detail{
  padding:12px 14px;
  border:1px solid var(--light);
  border-radius:14px;
  background:linear-gradient(180deg,rgba(248,250,252,.96) 0%, rgba(255,255,255,.96) 100%);
}
.support-modal__detail span,
.support-modal__label{
  display:block;
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:var(--gray);
  margin-bottom:6px;
}
.support-modal__detail strong{
  color:var(--dark);
  font-size:14px;
}
.support-modal__section{
  display:flex;
  flex-direction:column;
  gap:12px;
}
.support-modal__message{
  padding:14px 16px;
  border-radius:14px;
  border:1px solid var(--light);
  background:#f8fafc;
  color:var(--dark);
  line-height:1.65;
  white-space:pre-line;
  min-height:140px;
}
.support-modal .form-group{
  display:flex;
  flex-direction:column;
  gap:6px;
}
.support-modal .form-label{
  font-size:13px;
  font-weight:700;
  color:var(--gray-dark);
}
.support-modal textarea{
  min-height:140px;
  resize:vertical;
}
@media (max-width: 900px){
  .support-admin-grid{
    grid-template-columns:1fr;
  }
  .support-modal__details{
    grid-template-columns:1fr;
  }
}
.page-maintenance .maintenance-card .icon img{
  width:100%;
  height:100%;
}
@media (max-width: 980px){
  .page-admin .admin-toast-stack{
    top:calc(var(--topbar-h) + 12px);
    left:50%;
    right:auto;
    transform:translateX(-50%);
    width:min(360px, calc(100vw - 24px));
  }
  .page-admin .maintenance-top{
    flex-direction:column;
    margin:14px 14px 0;
  }
  .page-admin .maintenance-actions{
    justify-content:stretch;
  }
  .page-admin .maintenance-save-btn{
    width:100%;
  }
  .page-admin .admin-actions{
    justify-content:flex-start;
  }
}

#btn-analyze.is-loading [data-role="analyze-icon"],
#btn-analyze[aria-busy="true"] [data-role="analyze-icon"]{
  display:none;
}
#btn-analyze.is-loading [data-role="analyze-loader"],
#btn-analyze[aria-busy="true"] [data-role="analyze-loader"]{
  display:inline-block;
}
#btn-analyze.is-loading [data-role="analyze-label"],
#btn-analyze[aria-busy="true"] [data-role="analyze-label"]{
  font-weight:900;
}
*{box-sizing:border-box;}

body{
  font-family:-apple-system,BlinkMacSystemFont,'Inter','Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  background:linear-gradient(135deg,#f8fafc 0%,#e2e8f0 100%);
  min-height:100vh;
  color:var(--dark);
  padding-top:var(--topbar-h);
}
.maintenance-active{
  --maintenance-banner-h:38px;
  padding-top:calc(var(--topbar-h) + var(--maintenance-banner-h));
}
.page-maintenance{
  display:flex;
  flex-direction:column;
  min-height:100vh;
}
.page-maintenance main{
  flex:1;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:32px var(--page-pad) 48px;
}

/* ===============================
   Top navigation globale
   =============================== */

.top-navigation{
  position:fixed;
  top:0;left:0;right:0;
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(10px);
  box-shadow:var(--shadow-md);
  z-index:1000;
  border-bottom:1px solid rgba(0,0,0,.05);
}

/* Empêche les z-index internes des cartes (Leaflet panes/controls jusqu'à 1000,
   MapLibre canvas/controls) de passer au-dessus du header `.top-navigation`.
   On crée un stacking context local autour de chaque conteneur de carte. */
.leaflet-container,
.maplibregl-map,
.mapboxgl-map{
  position:relative;
  z-index:0;
  isolation:isolate;
}
.nav-container{
  max-width:1600px;
  margin:0 auto;
  padding:0 30px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  height:var(--topbar-h);
}
.nav-brand{display:flex;align-items:center;gap:15px;}
.nav-logo{height:40px;display:inline-flex;align-items:center;}
.nav-logo img{height:100%;display:block;}
.nav-title{
  font:700 20px/1 'Montserrat',system-ui;
  color:var(--dark);
  display:flex;
  align-items:baseline;
  gap:10px;
}
.nav-subtitle{
  font-weight:600;
  font-size:14px;
  color:var(--gray);
}
.nav-actions{display:flex;align-items:center;gap:10px;}
.nav-item{
  padding:10px 20px;
  border-radius:8px;
  background:transparent;
  border:none;
  color:var(--gray);
  font-weight:700;
  cursor:pointer;
  transition:var(--transition);
  display:flex;
  align-items:center;
  gap:8px;
}
.nav-item:hover{
  background:rgba(255,255,255,.5);
  color:var(--primary);
}
.user-dd{position:relative;}
.user-menu{
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  background:#fff;
  border:1px solid var(--light);
  border-radius:12px;
  box-shadow:var(--shadow-lg);
  width:min(280px,92vw);
  padding:8px;
  display:none;
  z-index:1100;
}
.user-dd.open .user-menu{display:block;}
.user-menu a.dd-item,
.user-menu a.dd-item:hover,
.user-menu a.dd-item:focus,
.user-menu a.dd-item:focus-visible,
.user-menu a.dd-item:active{
  text-decoration:none;
}
.user-toggle{position:relative;}
.user-toggle .caret{font-size:12px;opacity:.7;}
.user-status-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 9px;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
}
.user-status-badge--trial{background:rgba(245,158,11,.14);color:#92400e;}
.user-status-badge--subscription{background:rgba(59,130,246,.14);color:#1d4ed8;}
.user-status-badge--admin{background:rgba(16,185,129,.14);color:#166534;}
.user-dd--trial .nav-item{
  color:#92400e;
  background:rgba(245,158,11,.10);
}
.user-dd--trial .nav-item:hover{
  color:#78350f;
  background:rgba(245,158,11,.18);
}
.user-dd--trial .nav-item > i:first-child{color:#d97706;}
.user-menu__trial-action{
  color:#b45309 !important;
  background:rgba(245,158,11,.12) !important;
}
.user-menu__trial-action:hover{
  color:#92400e !important;
  background:rgba(245,158,11,.20) !important;
}
.user-menu__trial-action > i:first-child{color:#d97706 !important;}
.user-dd--admin .nav-item{
  color:#166534;
  background:rgba(16,185,129,.10);
}
.user-dd--admin .nav-item:hover{
  color:#14532d;
  background:rgba(16,185,129,.18);
}
.user-dd--admin .nav-item > i:first-child{color:#166534;}
.user-dd--admin .user-status-icon{color:#16a34a;}
.user-dd--subscription .nav-item{
  color:#1d4ed8;
  background:rgba(59,130,246,.10);
}
.user-dd--subscription .nav-item:hover{
  color:#1e40af;
  background:rgba(59,130,246,.18);
}
.user-dd--subscription .nav-item > i:first-child{color:#1d4ed8;}
.user-status-icon{color:#f59e0b;}
.user-dd--subscription .user-menu{
  border-color:rgba(37,99,235,.88);
  box-shadow:0 0 0 2px rgba(59,130,246,.20), 0 0 0 6px rgba(59,130,246,.08), var(--shadow-lg);
}
.user-dd--trial .user-menu{
  border-color:rgba(245,158,11,.82);
  box-shadow:0 0 0 2px rgba(245,158,11,.18), 0 0 0 6px rgba(245,158,11,.08), var(--shadow-lg);
}
.user-dd--admin .user-menu{
  border-color:rgba(16,185,129,.82);
  box-shadow:0 0 0 2px rgba(16,185,129,.18), 0 0 0 6px rgba(16,185,129,.08), var(--shadow-lg);
}
.user-menu__summary{
  margin-top:8px;
  padding:12px 12px 10px;
  border-top:1px solid var(--light);
  border-radius:12px;
  background:linear-gradient(180deg,rgba(248,250,252,.95) 0%, rgba(241,245,249,.85) 100%);
}
.user-menu__summary--admin{
  background:linear-gradient(180deg,rgba(236,253,245,.95) 0%, rgba(220,252,231,.82) 100%);
  border-top-color:rgba(16,185,129,.18);
}
.user-menu__summary--trial{
  background:linear-gradient(180deg,rgba(255,247,237,.98) 0%, rgba(254,243,199,.78) 100%);
  border-top-color:rgba(245,158,11,.22);
}
.user-menu__summary--subscription{
  background:linear-gradient(180deg,rgba(239,246,255,.98) 0%, rgba(219,234,254,.90) 100%);
  border-top-color:rgba(59,130,246,.28);
}
.user-menu__summary-title{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:6px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:var(--gray);
}
.user-menu__summary--admin .user-menu__summary-title,
.user-menu__summary--admin .user-menu__summary-line,
.user-menu__summary--admin .user-menu__summary-meta,
.user-menu__summary--admin .user-menu__summary strong,
.user-menu__summary--admin .user-menu__dot{
  color:#166534;
}
.user-menu__summary--trial .user-menu__summary-title,
.user-menu__summary--trial .user-menu__summary-line,
.user-menu__summary--trial .user-menu__summary-meta,
.user-menu__summary--trial .user-menu__summary strong,
.user-menu__summary--trial .user-menu__dot{
  color:#b45309;
}
.user-menu__summary--subscription .user-menu__summary-title,
.user-menu__summary--subscription .user-menu__summary-line,
.user-menu__summary--subscription .user-menu__summary-meta,
.user-menu__summary--subscription .user-menu__summary strong,
.user-menu__summary--subscription .user-menu__dot{
  color:#1d4ed8;
}
.user-menu__summary-line,
.user-menu__summary-meta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:6px;
  font-size:12px;
  font-weight:700;
  color:var(--gray-dark);
}
.user-menu__summary-meta{
  margin-top:5px;
  color:var(--gray);
}
.user-menu__summary strong{color:var(--dark);}
.user-menu__dot{color:var(--gray);font-size:10px;line-height:1;}
.user-menu__remaining-value{color:var(--dark);}
.dd-item{
  width:100%;
  border:none;
  padding:12px;
  border-radius:10px;
  display:flex;
  align-items:center;
  gap:10px;
  font-weight:700;
  font-size:14px;
  background:var(--light);
  color:var(--dark);
  cursor:pointer;
  transition:var(--transition);
}
.dd-item + .dd-item{margin-top:6px;}
.dd-item:hover{
  background:#fff;
  box-shadow:var(--shadow);
}
.user-menu__subscribe{
  color:#1d4ed8;
}
.user-menu__subscribe:hover{
  color:#1e40af;
}
.user-menu__subscribe > i:first-child{
  color:#1d4ed8;
}
.user-menu__logout{
  color:#dc2626;
}
.user-menu__logout:hover{
  color:#b91c1c;
}
.user-menu__logout > i:first-child{
  color:#dc2626;
}

/* Infobulle flottante pour les items du header en mode icône */
.br-nav-tooltip{
  position:fixed;
  z-index:2000;
  background:rgba(15,23,42,.92);
  color:#fff;
  font-size:12px;
  font-weight:600;
  line-height:1;
  padding:6px 9px;
  border-radius:6px;
  white-space:nowrap;
  pointer-events:none;
  box-shadow:0 4px 12px rgba(15,23,42,.18);
  transform:translateX(-50%);
  opacity:0;
  transition:opacity .08s ease;
}
.br-nav-tooltip.is-visible{ opacity:1; }

/* ===============================
   Boutons
   =============================== */

.btn{
  padding:10px 16px;
  border:none;
  border-radius:10px;
  font-weight:700;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:8px;
  transition:var(--transition);
}
.btn:not(:disabled),
.btn:not(:disabled) *{
  cursor:pointer;
}
.btn:not(:disabled):hover{
  transform:translateY(-1px);
  box-shadow:0 10px 22px rgba(15,23,42,.10);
}
.btn:not(:disabled):active{
  transform:translateY(0);
  box-shadow:0 6px 14px rgba(15,23,42,.08);
}
.btn-primary{
  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);
  color:#fff;
}
.btn-primary:hover{filter:brightness(1.02);}
.btn-secondary{
  background:var(--light);
  color:var(--gray-dark);
}
.btn-secondary:hover{background:#dde3ea;}
.btn:disabled{opacity:.6;cursor:not-allowed;}


/* === Spinner pour les boutons en chargement === */
@keyframes spin360{to{transform:rotate(360deg);}}
.btn.is-loading > i{
  display:inline-block;
  animation:spin360 .9s linear infinite;
  will-change:transform;
}
.btn.is-loading{
  pointer-events:auto;
  opacity:.9;
}

#btn-scan.is-ready:not(:disabled){
  cursor:pointer;
  animation:scanCtaPulse 2.8s ease-in-out infinite;
  border-color:rgba(148,163,184,.55);
  box-shadow:0 14px 28px rgba(100,116,139,.16);
}
#btn-scan.is-ready:not(:disabled):hover{
  animation:none;
  box-shadow:0 18px 32px rgba(100,116,139,.22);
  filter:saturate(1.06);
}
#btn-scan.is-loading,
#btn-scan[aria-busy="true"]{
  cursor:wait;
  background:linear-gradient(180deg,#f1f5f9 0%,#e2e8f0 100%);
  border-color:#cbd5e1;
  color:#334155;
  opacity:1;
  box-shadow:0 10px 20px rgba(15,23,42,.10);
}
#btn-scan.is-loading *,
#btn-scan[aria-busy="true"] *{
  cursor:wait;
}
#btn-scan.is-loading:hover,
#btn-scan[aria-busy="true"]:hover{
  transform:none;
  box-shadow:0 10px 20px rgba(15,23,42,.10);
}

#btn-scan.is-loading [data-role="scan-icon"],
#btn-scan[aria-busy="true"] [data-role="scan-icon"]{
  display:none;
}
#btn-scan.is-loading [data-role="scan-loader"],
#btn-scan[aria-busy="true"] [data-role="scan-loader"]{
  display:inline-block;
}

#btn-scan.is-loading [data-role="scan-label"],
#btn-scan[aria-busy="true"] [data-role="scan-label"]{
  font-weight:900;
}

@keyframes scanCtaPulse{
  0%, 72%, 100%{
    box-shadow:0 14px 28px rgba(100,116,139,.16);
    transform:none;
  }
  78%{
    box-shadow:0 0 0 4px rgba(148,163,184,.15), 0 18px 32px rgba(100,116,139,.24);
    transform:translateY(-1px);
  }
}

/* ===============================
   Grille de cartes (Mes recherches)
   =============================== */

.main-container{
  max-width:1600px;
  margin:0 auto;
  padding:30px;
}

.section-header{
  background:#fff;
  border-radius:20px;
  padding:24px 28px;
  margin-bottom:24px;
  box-shadow:var(--shadow);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.section-title{display:flex;align-items:center;gap:16px;}
.section-title .icon{
  width:54px;
  height:54px;
  border-radius:16px;
  background:linear-gradient(135deg,var(--primary) 0%, var(--primary-dark) 100%);
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-size:24px;
  box-shadow:var(--shadow-lg);
}
.section-title h2{
  font:800 26px/1.1 'Montserrat',system-ui;
  margin:0;
}

/* Cards génériques */
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:18px;
}

/* Disposition des cartes Mes recherches (override de .grid) */
.page-mysearches .grid.grid-cols-1{
  grid-template-columns:repeat(1, minmax(0,1fr));
}
.page-mysearches .grid.grid-cols-2{
  grid-template-columns:repeat(2, minmax(0,1fr));
}
.page-mysearches .grid.grid-cols-4{
  grid-template-columns:repeat(4, minmax(0,1fr));
}
.page-mysearches .grid.grid-cols-6{
  grid-template-columns:repeat(6, minmax(0,1fr));
}

/* Sur mobile : 1 colonne forcée */
@media (max-width: 768px){
  .page-mysearches .grid.grid-cols-1,
  .page-mysearches .grid.grid-cols-2,
  .page-mysearches .grid.grid-cols-4,
  .page-mysearches .grid.grid-cols-6{
    grid-template-columns:repeat(1, minmax(0,1fr));
  }
}

.card{
  background:#fff;
  border-radius:16px;
  box-shadow:var(--shadow);
  padding:18px;
  display:flex;
  flex-direction:column;
  gap:12px;
  position:relative;
}
.card:hover{
  transform:translateY(-2px);
  box-shadow:var(--shadow-lg);
}
.card-empty .title{
  font-weight:900;
  font-size:18px;
  margin-bottom:4px;
}
.meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  color:var(--gray);
  font-weight:700;
  font-size:12px;
}
.title{
  font:800 16px/1.2 'Montserrat',system-ui;
  color:var(--dark);
}
.sub{
  color:var(--gray);
  font-weight:600;
}
.row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}

/* Progress bar générique */
.progress{
  height:8px;
  background:var(--light);
  border-radius:999px;
  overflow:visible;
  position:relative;
}
.progress > span{
  display:block;
  height:100%;
  background:linear-gradient(90deg,var(--primary) 0%,var(--secondary) 100%);
  width:0;
  transition:width .6s ease;
}
.progress-loader{
  position:absolute;
  top:50%;
  right:8px;
  transform:translateY(-50%);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  border-radius:999px;
  background:rgba(255,255,255,.95);
  color:var(--primary);
  box-shadow:0 6px 14px rgba(15,23,42,.12);
  pointer-events:none;
}

/* Badges */
.badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  font-weight:800;
  font-size:12px;
}
.badge-success{background:rgba(16,185,129,.1);color:#166534;}
.badge-warning{background:rgba(245,158,11,.12);color:#92400e;}
.badge-danger{background:rgba(239,68,68,.12);color:#991b1b;}
.badge-info{background:rgba(59,130,246,.12);color:var(--primary);}
.badge-primary{background:rgba(59,130,246,.12);color:#1d4ed8;}
.badge-light{background:#f8fafc;color:var(--gray-dark);}
.right{margin-left:auto;}

/* Skeleton */
.ghost{
  background:linear-gradient(90deg,#f5f7fb 25%, #eef2f7 50%, #f5f7fb 75%);
  background-size:200% 100%;
  animation:shimmer 1.2s infinite;
}
@keyframes shimmer{
  0%{background-position:200% 0;}
  100%{background-position:-200% 0;}
}

/* Petits plus visuels */
.muted{color:var(--gray);}
.pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-weight:800;
  font-size:11px;
  padding:4px 8px;
  border-radius:999px;
}
.pill-fusion{background:rgba(99,102,241,.12);color:#3730a3;}

/* Apparition des cartes après refresh */
@keyframes fadeUp{
  from{opacity:0;transform:translateY(6px);}
  to{opacity:1;transform:translateY(0);}
}
.card.appear{
  animation:fadeUp .22s ease-out both;
}

/* Masquage universel via [hidden] */
[hidden]{display:none !important;}


/* ==========================================================
   PAGE "RECHERCHE GROUPÉE" (group/index.html.twig)
   ========================================================== */

.page-group .main{
  max-width:1600px;
  margin:18px auto;
  padding:0 var(--page-pad);
}

.grid-two{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:18px;
  align-items:flex-start;
  min-width:0;
}
.grid-two > *{
  min-width:0;
  min-height:0;
}
@media (max-width:1100px){
  .grid-two{
    grid-template-columns:1fr;
  }
}

/* Panels partagés (group + fusion) */
.panel{
  background:#fff;
  border:1px solid rgba(0,0,0,.06);
  border-radius:16px;
  box-shadow:var(--shadow);
  padding:18px;
  display:flex;
  flex-direction:column;
  min-height:0;
}

/* Panel analyses (ligne suivante) */
.panel-analyses{margin-top:18px;}

/* Colonne gauche : configuration */
.form-col{display:flex;flex-direction:column;gap:14px;}
.zone-group{
  border:1px solid var(--light);
  border-radius:14px;
  padding:12px;
  background:#fff;
  box-shadow:0 2px 10px rgba(15,23,42,.04);
}
.form-label{
  font-size:12px;
  font-weight:800;
  color:#0f172a;
  margin-bottom:8px;
  display:block;
}
.input-wrap{display:flex;align-items:center;gap:8px;}

.form-input{
  flex:1;
  padding:12px 14px;
  border:2px solid var(--light);
  border-radius:12px;
  font-weight:600;
  outline:none;
}
.form-input:focus{
  border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(59,130,246,.15);
}
.form-input.has-action{padding-right:176px;}

.input-action{
  width:42px;
  height:42px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:10px;
  background:#f8fafc;
  border:1px solid var(--light);
  color:#334155;
  cursor:pointer;
  transition:var(--transition);
}
.input-action:hover{filter:brightness(.98);}
.input-action.danger{color:#991b1b;}

/* Rayon */
.radius-row{
  margin-top:10px;
  display:flex;
  align-items:center;
  gap:10px;
}
.radius-row label{
  font-size:12px;
  font-weight:800;
  color:#334155;
}
.radius-range{
  flex:1;
  accent-color:var(--primary);
}
.radius-input{
  display:flex;
  align-items:center;
  gap:6px;
}
.radius-input input{
  width:100px;
  padding:10px;
  border:1px solid var(--light);
  border-radius:10px;
  font-weight:700;
}
.radius-input span{
  font-size:12px;
  font-weight:800;
  color:#64748b;
}
.radius-warning{
  margin-top:8px;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(245,158,11,.25);
  background:rgba(255,247,237,.96);
  color:#9a3412;
  font-size:12px;
  font-weight:700;
  line-height:1.45;
}
.zone-group.is-trial-radius-warning{
  border-color:rgba(245,158,11,.72);
  box-shadow:0 0 0 3px rgba(245,158,11,.10), 0 2px 10px rgba(15,23,42,.04);
}
.zone-group.is-trial-radius-ok{
  border-color:rgba(59,130,246,.72);
  box-shadow:0 0 0 3px rgba(59,130,246,.10), 0 2px 10px rgba(15,23,42,.04);
}
.zone-group.is-trial-radius-warning .radius-row label,
.zone-group.is-trial-radius-warning .radius-input span{
  color:#c2410c;
}
.zone-group.is-trial-radius-ok .radius-row label,
.zone-group.is-trial-radius-ok .radius-input span{
  color:#1d4ed8;
}
.radius-range.is-trial-radius-warning{
  accent-color:#f97316;
}
.radius-range.is-trial-radius-ok{
  accent-color:#3b82f6;
}
.radius-input input.is-trial-radius-warning{
  border-color:rgba(249,115,22,.7);
  background:rgba(255,247,237,.94);
  box-shadow:0 0 0 3px rgba(249,115,22,.10);
}
.radius-input input.is-trial-radius-ok{
  border-color:rgba(59,130,246,.7);
  background:rgba(239,246,255,.94);
  box-shadow:0 0 0 3px rgba(59,130,246,.10);
}
.zone-group.is-admin-radius-extended{
  position:relative;
  border-color:rgba(22,163,74,.72);
  box-shadow:0 0 0 3px rgba(22,163,74,.10), 0 2px 10px rgba(15,23,42,.04);
}
.admin-mode-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-bottom:8px;
  padding:4px 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  letter-spacing:.02em;
  text-transform:uppercase;
  color:#15803d;
  background:rgba(22,163,74,.12);
  border:1px solid rgba(22,163,74,.4);
  width:fit-content;
}
.admin-mode-badge i{ font-size:11px; }
.zone-group.is-admin-radius-extended .radius-row label,
.zone-group.is-admin-radius-extended .radius-input span{
  color:#15803d;
}
.radius-range.is-admin-radius-extended{
  accent-color:#16a34a;
}
.radius-input input.is-admin-radius-extended{
  border-color:rgba(22,163,74,.7);
  background:rgba(240,253,244,.94);
  box-shadow:0 0 0 3px rgba(22,163,74,.10);
}

.group-toast{
  position:fixed;
  top:calc(var(--topbar-h) + 20px);
  right:16px;
  left:auto;
  transform:none;
  z-index:99999;
  display:flex;
  align-items:flex-start;
  gap:12px;
  min-width:min(420px, calc(100vw - 32px));
  max-width:min(420px, calc(100vw - 32px));
  padding:14px 16px;
  border:1px solid rgba(245,158,11,.28);
  border-radius:16px;
  background:linear-gradient(135deg, rgba(255,247,237,.98), #fff 42%);
  box-shadow:0 18px 40px rgba(15,23,42,.16);
}
.group-toast--warning{color:#9a3412;}
.group-toast__icon{
  width:40px;
  height:40px;
  flex:0 0 40px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:rgba(245,158,11,.14);
  color:#b45309;
}
.group-toast__body{flex:1;min-width:0;}
.group-toast__title{
  font-size:13px;
  font-weight:900;
  margin-bottom:3px;
}
.group-toast__message{
  font-size:13px;
  font-weight:600;
  line-height:1.45;
}
.group-toast__close{
  border:none;
  background:transparent;
  color:#94a3b8;
  width:32px;
  height:32px;
  border-radius:999px;
  display:grid;
  place-items:center;
  cursor:pointer;
  transition:var(--transition);
}
.group-toast__close:hover{
  background:rgba(148,163,184,.12);
  color:#0f172a;
}
.group-toast.is-hiding{
  animation:groupToastOut .22s ease-in both;
}
@keyframes groupToastOut{
  from{opacity:1;transform:translateY(0) scale(1)}
  to{opacity:0;transform:translateY(-10px) scale(.98)}
}

.row-actions{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:10px;
  flex-wrap:wrap;
}
.row-actions .btn-add-zone{
  margin-left:auto;
  display:inline-flex;
  align-items:center;
  gap:10px;
  border:1px dashed rgba(22,163,74,.55);
  color:#15803d;
  background:rgba(240,253,244,.6);
}
.row-actions .btn-add-zone:hover{
  background:rgba(220,252,231,.9);
  border-style:solid;
}
.btn-add-zone .admin-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:2px 8px;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#fff;
  background:#16a34a;
}
.btn-add-zone .admin-pill i{ font-size:10px; }
.zone-group.is-admin-extra-zone{
  position:relative;
  border-color:rgba(22,163,74,.55);
  background:rgba(240,253,244,.45);
  box-shadow:0 0 0 2px rgba(22,163,74,.08), 0 2px 10px rgba(15,23,42,.04);
}

/* Toggle "forcer le rafraîchissement" (partagé group/fusion) */
.toggle-refresh{
  display:inline-flex;
  align-items:center;
  gap:10px;
  cursor:pointer;
  user-select:none;
  background:#f8fafc;
  padding:8px 10px;
  border-radius:10px;
  border:1px solid var(--light);
}
.toggle-refresh input{display:none;}
.toggle-refresh .toggle-ui{
  width:44px;
  height:26px;
  border-radius:999px;
  background:var(--light);
  border:1px solid #e5e7eb;
  position:relative;
  box-shadow:0 1px 2px rgba(0,0,0,.04);
  transition:var(--transition);
}
.toggle-refresh .toggle-ui::after{
  content:"";
  position:absolute;
  top:2px;
  left:2px;
  width:22px;
  height:22px;
  border-radius:999px;
  background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.1);
  transition:var(--transition);
}
.toggle-refresh input:checked + .toggle-ui{
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  border-color:transparent;
}
.toggle-refresh input:checked + .toggle-ui::after{
  transform:translateX(18px);
}
.toggle-refresh .toggle-text{
  font-weight:700;
  color:#334155;
}

/* Cartes + carte Google (group) */
.map-wrap{
  margin-top:12px;
  position:relative;
}
#groupMap{
  width:100%;
  height:clamp(260px, 55vh, var(--panel-body-h));
  border:1px solid var(--light);
  border-radius:16px;
  box-shadow:var(--shadow);
}
.manual-hint{
  position:absolute;
  left:12px;
  top:12px;
  padding:10px 12px;
  border-radius:10px;
  background:#fff;
  border:1px solid var(--light);
  box-shadow:0 10px 20px rgba(15,23,42,.08);
  font-weight:700;
  color:#0f172a;
}
.manual-hint .small{
  margin-left:6px;
  color:#64748b;
  font-weight:600;
  font-size:12px;
}

.cta-split{
  margin-top:12px;
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.cta-split .btn{flex:1 1 220px;}
.btn-leading-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.15em;
  height:1.15em;
  flex:0 0 1.15em;
}
.btn-leading-icon > i{line-height:1;}
#btn-analyze.is-ready:not(:disabled){
  cursor:pointer;
  animation:analyzeCtaPulse 2.8s ease-in-out infinite;
  box-shadow:0 14px 30px rgba(37,99,235,.22);
  border-color:rgba(59,130,246,.35);
}
#btn-analyze.is-ready:not(:disabled):hover{
  animation:none;
  transform:translateY(-1px);
  box-shadow:0 18px 34px rgba(37,99,235,.34);
  filter:saturate(1.08);
}
#btn-analyze.is-ready:not(:disabled):active{
  transform:translateY(0);
  box-shadow:0 10px 22px rgba(37,99,235,.2);
}
#btn-analyze.is-loading,
#btn-analyze[aria-busy="true"]{
  cursor:wait;
  background:linear-gradient(180deg, #e2e8f0 0%, #cbd5e1 100%);
  border-color:#94a3b8;
  color:#334155;
  box-shadow:0 10px 20px rgba(15,23,42,.12);
  filter:saturate(.8);
  opacity:1;
}
#btn-analyze.is-loading *,
#btn-analyze[aria-busy="true"] *{
  cursor:wait;
}
#btn-analyze.is-loading:hover,
#btn-analyze[aria-busy="true"]:hover{
  transform:none;
  box-shadow:0 10px 20px rgba(15,23,42,.12);
}
#btn-analyze.is-trial-radius-warning,
#btn-analyze.is-trial-radius-warning:not(:disabled){
  cursor:pointer;
  border-color:rgba(245,158,11,.72);
  background:linear-gradient(180deg, rgba(255,247,237,.98) 0%, rgba(255,237,213,.98) 100%);
  box-shadow:0 14px 30px rgba(245,158,11,.18);
  color:#9a3412;
}
#btn-analyze.is-trial-radius-warning:hover,
#btn-analyze.is-trial-radius-warning:not(:disabled):hover{
  transform:translateY(-1px);
  box-shadow:0 18px 34px rgba(245,158,11,.26);
}
#btn-analyze.is-trial-radius-warning *,
#btn-analyze.is-trial-radius-warning:not(:disabled) *{
  cursor:pointer;
}

@keyframes analyzeCtaPulse{
  0%, 72%, 100%{
    box-shadow:0 14px 30px rgba(37,99,235,.22);
    transform:none;
  }
  78%{
    box-shadow:0 0 0 4px rgba(59,130,246,.14), 0 16px 34px rgba(37,99,235,.3);
    transform:translateY(-1px);
  }
}

/* Colonne droite Parcelles (group) */
.cards-col{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
}
.cards-col.scroll{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  padding:6px 6px 6px 6px;
  -webkit-overflow-scrolling:touch;
}

.parcel-card{
  padding:10px 12px;
  transition:var(--transition);
  cursor:pointer;
}
.parcel-card.is-selected,
.page-group .card.is-selected{
  border-color:rgba(245,158,11,.95);
  background:linear-gradient(180deg, rgba(255,247,205,.92) 0%, rgba(255,251,235,.98) 100%);
  box-shadow:0 0 0 4px rgba(245,158,11,.34), 0 10px 24px rgba(245,158,11,.18), var(--shadow-lg);
  transform:none;
}
.page-group .card.parcel-focus-flash{
  animation:parcelFocusFlash 1.2s ease-in-out 0s 2;
}
@keyframes parcelFocusFlash{
  0%, 100%{
    box-shadow:0 0 0 4px rgba(245,158,11,.26), 0 10px 24px rgba(245,158,11,.14), var(--shadow-lg);
  }
  50%{
    box-shadow:0 0 0 7px rgba(245,158,11,.55), 0 14px 30px rgba(245,158,11,.24), var(--shadow-lg);
  }
}
.parcel-card .row.between{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:8px;
}
.parcel-card .parcel-id{
  font-weight:800;
  min-width:0;
  flex:1 1 auto;
}
.parcel-card .coords{
  font-size:12px;
  color:#334155;
  font-weight:700;
  display:flex;
  align-items:center;
  gap:6px;
}
.parcel-actions{
  margin-left:auto;
  display:flex;
  align-items:center;
  justify-content:flex-end;
}
.parcel-open-loader{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:8px 14px;
  border-radius:999px;
  background:rgba(245,158,11,.12);
  border:1px dashed rgba(245,158,11,.28);
  color:#b45309;
  font-weight:800;
  white-space:nowrap;
}
.parcel-open-btn{
  width:auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:8px 14px;
  font-weight:800;
  white-space:nowrap;
  flex:0 0 auto;
  max-width:100%;
  box-shadow:0 8px 18px rgba(37,99,235,.16);
}
.parcel-card.is-selected .parcel-open-btn,
.page-group .card.is-selected .parcel-open-btn{
  box-shadow:0 10px 20px rgba(245,158,11,.22);
}

.analysis-view-tab[data-target="analysis-view-map"]:not(.active){
  animation:analysisMapTabPulse 6s ease-in-out infinite;
}
.analysis-view-tab[data-target="analysis-view-map"]:not(.active):hover{
  animation:none;
}

@keyframes analysisMapTabPulse{
  0%, 72%, 100%{
    box-shadow:none;
    transform:none;
  }
  78%{
    box-shadow:0 0 0 3px rgba(59,130,246,.12), 0 10px 22px rgba(37,99,235,.12);
    transform:translateY(-1px);
  }
  84%{
    box-shadow:0 0 0 4px rgba(59,130,246,.18), 0 12px 24px rgba(37,99,235,.16);
    transform:translateY(-1px);
  }
}

@media (prefers-reduced-motion: reduce){
  #btn-analyze.is-ready:not(:disabled),
  .analysis-view-tab[data-target="analysis-view-map"]:not(.active){
    animation:none !important;
  }
}
.page-group .analysis-error{
  margin-top:6px;
  padding:10px 12px;
  border-radius:12px;
  background:rgba(245,158,11,.08);
  border:1px solid rgba(245,158,11,.18);
  color:#92400e;
  font-size:13px;
  line-height:1.45;
  font-weight:700;
}

/* Autocomplete Google (group + fusion) */
.ga-autocomplete-wrap{position:relative;}
.ga-menu{
  position:absolute;
  top:calc(100% + 6px);
  left:0;
  right:0;
  /* Au-dessus de Leaflet (panes jusqu'à 700) et des modales Bootstrap. */
  z-index:10000;
  background:#fff;
  border:1px solid var(--light);
  border-radius:12px;
  box-shadow:0 20px 40px rgba(15,23,42,.12);
  max-height:320px;
  overflow:auto;
  padding:6px 0;
  display:none;
}
.ga-item{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:10px 12px;
  cursor:pointer;
  border-bottom:1px solid #f1f5f9;
}
.ga-item:last-child{border-bottom:none;}
.ga-item:hover,
.ga-item.ga-active{background:#f8fafc;}
.ga-icon{
  flex:0 0 26px;
  height:26px;
  border-radius:8px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:linear-gradient(135deg,#3b82f6,#06b6d4);
  color:#fff;
  font-size:12px;
  box-shadow:0 4px 10px -6px rgba(59,130,246,.6);
}
.ga-text{flex:1 1 auto;min-width:0;}
.ga-title{
  font-weight:600;
  color:#0f172a;
  line-height:1.2;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ga-sub{
  font-size:12px;
  color:#64748b;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ga-empty,
.ga-loading{
  padding:12px;
  color:#64748b;
  font-size:14px;
}
.ga-loading{font-style:italic;}

@media (max-width:1100px){
  #groupMap{
    height:var(--panel-body-h-mob);
  }
  .cards-col.scroll{
    max-height:var(--panel-body-h-mob);
  }
}

.page-fusion .main{
  max-width:1600px;
  margin:22px auto;
  padding:0 var(--page-pad);
}
.page-fusion .main.main-fusion{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:20px;
}
.page-fusion #parcels-list{
  margin-bottom:14px;
}
.page-fusion #parcels-list .parcel-group{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.page-fusion .add-row{
  margin-top:14px;
  margin-bottom:14px;
}
@media (max-width:1100px){
  .page-fusion .main.main-fusion{
    grid-template-columns:1fr;
  }
}

/* Titres des panels fusion */
.panel h2{
  font:800 22px/1.2 'Montserrat',system-ui;
  margin:0 0 10px;
}

/* Formulaire fusion */
.form-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}
.form-group{
  display:flex;
  flex-direction:column;
  gap:8px;
  position:relative;
}

/* Carte fusion */
.page-fusion .map-wrap{
  position:relative;
  height:min(72vh,720px);
  border-radius:20px;
  overflow:hidden;
  border:1px solid var(--light);
  margin-top:14px;
}
#fusionMap{
  position:absolute;
  inset:0;
}

/* Cards fusion (colonne droite) */
.big-card{
  background:#fff;
  border-radius:16px;
  box-shadow:var(--shadow-lg);
  padding:16px;
  border:1px solid rgba(0,0,0,.05);
}
.big-card .meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  color:var(--gray);
  font-weight:700;
  font-size:12px;
  margin-bottom:8px;
}
.big-card .title{
  font:800 18px/1.2 'Montserrat',system-ui;
  margin-bottom:6px;
}
.big-card .sub{
  color:var(--gray);
  font-weight:600;
  margin-bottom:10px;
}
.big-card .progress{
  height:10px;
  margin:8px 0 10px;
}
.big-card .progress > span{width:0;}

.cta-fusion{
  margin-top:8px;
  display:flex;
  justify-content:center;
}
.fusion-result{
  margin-top:16px;
  text-align:center;
}
.fusion-error{
  margin-top:6px;
  margin-bottom:10px;
  padding:10px 12px;
  border-radius:12px;
  background:rgba(245,158,11,.08);
  border:1px solid rgba(245,158,11,.18);
  color:#92400e;
  font-size:13px;
  line-height:1.45;
  font-weight:700;
}

#btn-fusion.is-ready:not(:disabled){
  cursor:pointer;
  animation:fusionCtaPulse 2.8s ease-in-out infinite;
  box-shadow:0 14px 30px rgba(37,99,235,.22);
}
#btn-fusion.is-ready:not(:disabled):hover{
  animation:none;
  transform:translateY(-1px);
  box-shadow:0 18px 34px rgba(37,99,235,.30);
}
#btn-fusion.is-loading,
#btn-fusion[aria-busy="true"]{
  cursor:wait;
  background:linear-gradient(180deg, #e2e8f0 0%, #cbd5e1 100%);
  border-color:#94a3b8;
  color:#334155;
  box-shadow:0 10px 20px rgba(15,23,42,.12);
  opacity:1;
}
#btn-fusion.is-loading *,
#btn-fusion[aria-busy="true"] *{
  cursor:wait;
}
#btn-fusion.is-loading:hover,
#btn-fusion[aria-busy="true"]:hover{
  transform:none;
  box-shadow:0 10px 20px rgba(15,23,42,.12);
}

#btn-fusion.is-loading [data-role="fusion-icon"],
#btn-fusion[aria-busy="true"] [data-role="fusion-icon"]{
  display:none;
}
#btn-fusion.is-loading [data-role="fusion-loader"],
#btn-fusion[aria-busy="true"] [data-role="fusion-loader"]{
  display:inline-block;
}

.fusion-open.is-ready,
#fusion-open.is-ready{
  animation:fusionResultPulse 2.8s ease-in-out infinite;
  box-shadow:0 14px 30px rgba(37,99,235,.22);
}
.fusion-open.is-ready:hover,
#fusion-open.is-ready:hover{
  animation:none;
  transform:translateY(-1px);
  box-shadow:0 18px 34px rgba(37,99,235,.30);
}

@keyframes fusionCtaPulse{
  0%, 72%, 100%{
    box-shadow:0 14px 30px rgba(37,99,235,.22);
    transform:none;
  }
  78%{
    box-shadow:0 0 0 4px rgba(59,130,246,.16), 0 16px 34px rgba(37,99,235,.30);
    transform:translateY(-1px);
  }
}

@keyframes fusionResultPulse{
  0%, 72%, 100%{
    box-shadow:0 14px 30px rgba(37,99,235,.22);
    transform:none;
  }
  78%{
    box-shadow:0 0 0 4px rgba(59,130,246,.14), 0 16px 34px rgba(37,99,235,.28);
    transform:translateY(-1px);
  }
}

/* Boutons icône intégrés (fusion) */
.page-fusion .input-action{
  position:absolute;
  right:4px;
  bottom:4px;
  width:36px;
  height:36px;
  border-radius:10px;
  border:1px solid #e5e7eb;
  background:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:var(--shadow);
  cursor:pointer;
}
.page-fusion .input-action:hover{
  box-shadow:0 6px 18px rgba(0,0,0,.12);
  transform:translateY(-1px);
}
.page-fusion .input-action i{
  font-size:14px;
  color:#0f172a;
}

/* Icon button dans les cards fusion */
.icon-btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  border:1px solid #e5e7eb;
  background:#fff;
  border-radius:10px;
  padding:6px 10px;
  font-weight:700;
  cursor:pointer;
  transition:var(--transition);
}
.icon-btn:hover{
  box-shadow:0 4px 12px rgba(0,0,0,.08);
  transform:translateY(-1px);
}
.icon-btn:disabled{opacity:.5;pointer-events:none;}
.icon-danger{color:#b91c1c;border-color:#fecaca;background:#fff5f5;}
.icon-danger:hover{background:#fee2e2;}
.section-actions{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}

/* ===============================
   Barre de recherche globale
   =============================== */

.search-wrapper{
  display:flex;
  align-items:center;
  gap:8px;
  padding:8px 12px;
  border-radius:999px;
  background:#f8fafc;
  border:1px solid var(--light);
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  min-width:260px;
}
.search-wrapper i{
  color:var(--gray);
  font-size:14px;
}
.search-input{
  flex:1 1 auto;
  width:100%;
  border:none;
  outline:none;
  background:transparent;
  font-size:14px;
  font-weight:600;
  color:var(--dark);
  min-width:0;
}
.search-input::placeholder{
  color:var(--gray-light);
}

.card-empty{
  text-align:left;
}
.card-empty .title{
  font-weight:900;
  font-size:18px;
  margin-bottom:4px;
}
.card-empty .sub{
  font-weight:600;
}

@media (max-width: 800px){
  .section-header{
    flex-direction:column;
    align-items:flex-start;
  }
  .section-actions{
    width:100%;
    justify-content:space-between;
  }
  .search-wrapper{
    flex:1 1 auto;
  }
}


.page-mysearches .search-row{
  max-width:1600px;
  margin:0 auto 12px;
  padding:0 30px;
}
.page-mysearches .search-wrapper{
  width:100%;
  border-radius:16px;
  padding:14px 18px;
  min-width:0;
  background:#ffffff;
  box-shadow:var(--shadow-md);
}
.page-mysearches .search-wrapper i{
  font-size:16px;
}
.page-mysearches .search-input{
  font-size:15px;
  font-weight:600;
}

/* ===============================
   Global analysis banner
   =============================== */

.global-analysis{
  margin-top:10px;
  margin-bottom:12px;
  padding:12px 14px;
  border-radius:14px;
  background:#f8fafc;
  border:1px dashed var(--light);
  box-shadow:0 1px 3px rgba(15,23,42,.06);
}
.global-analysis-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
  flex-wrap:wrap;
}
.global-analysis-title{
  display:flex;
  align-items:center;
  gap:8px;
  font-weight:800;
  font-size:14px;
  color:#0f172a;
}
.global-analysis-title i{
  font-size:15px;
  color:var(--primary);
}
.global-analysis-right{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.global-analysis-text{
  font-size:13px;
  font-weight:600;
  color:#64748b;
}
.global-analysis-percent{
  font-size:13px;
  font-weight:800;
  color:#0f172a;
  padding:4px 10px;
  border-radius:999px;
  background:#e0f2fe;
  border:1px solid #bfdbfe;
}
.global-analysis .progress{
  height:10px;
}

/* Pastilles de stats globales */
.global-analysis-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 10px;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
  margin-left:4px;
  white-space:nowrap;
}
.global-analysis-pill-neutral{
  background:rgba(148,163,184,.16);
  color:#0f172a;
}
.global-analysis-pill-success{
  background:rgba(16,185,129,.16);
  color:#166534;
}
.global-analysis-pill-warning{
  background:rgba(245,158,11,.14);
  color:#92400e;
}
.global-analysis-pill-danger{
  background:rgba(239,68,68,.16);
  color:#991b1b;
}
.global-analysis-pill-info{
  background:rgba(59,130,246,.16);
  color:#1d4ed8;
}
.global-analysis-percent{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 10px;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
  background:rgba(59,130,246,.16);
  color:#1d4ed8;
}

/* ===============================
   Lignes de métriques dans les cards
   =============================== */

.metrics-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:4px;
}
.metric-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 10px;
  border-radius:999px;
  background:#f8fafc;
  color:#0f172a;
  font-weight:700;
  font-size:12px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.metric-pill i{
  font-size:12px;
}
.metric-pill:empty{
  display:none;
}


.page-fusion .parcel-group .ga-autocomplete-wrap{
  display:block;
  position:relative;
}
.page-fusion .parcel-group .form-input{
  width:100%;
  box-sizing:border-box;
  padding-right:56px;
}
.page-group aside.panel{
  max-height:calc(75dvh - var(--topbar-h) - (2 * var(--page-pad)) - 18px);
  display:flex;
  flex-direction:column;
  min-height:0;
}



.options-row{
  max-width:1600px;
  margin:0 auto 20px;
  padding:14px 18px;
  border-radius:20px;
  background:#ffffff;
  box-shadow:var(--shadow-md);
  display:flex;
  flex-direction:column;
  gap:12px;
}

/* Ligne "Champs affichés" + chips */
.options-main{
  display:flex;
  align-items:flex-start;
  gap:10px;
  flex-wrap:wrap;
}

.options-label{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(255,255,255,.9);
  box-shadow:var(--shadow);
  font-weight:700;
  color:var(--gray-dark);
  font-size:13px;
}
.options-label i{
  color:var(--primary);
}

.options-list{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  flex:1 1 auto;
}

/* Ligne "Disposition" */
.layout-row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin-top:6px;
}
.layout-label{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:11px;
  font-weight:700;
  color:var(--gray-dark);
}
.layout-label i{
  color:var(--primary);
}
.layout-toggle{
  display:inline-flex;
  flex-wrap:wrap;
  gap:6px;
}
.layout-btn{
  border-radius:999px;
  border:1px solid var(--light);
  background:#f8fafc;
  padding:4px 10px;
  font-size:11px;
  font-weight:700;
  color:var(--gray-dark);
  cursor:pointer;
  transition:var(--transition);
}
.layout-btn:hover{
  background:#eef2ff;
  border-color:rgba(129,140,248,.6);
}
.layout-btn.active{
  background:rgba(59,130,246,.1);
  border-color:var(--primary);
  color:var(--primary-dark);
}

/* Chips / pills de champs */
.opt-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 11px;
  border-radius:999px;
  background:#f8fafc;
  border:1px solid var(--light);
  cursor:pointer;
  font-size:13px;
  font-weight:600;
  color:var(--gray-dark);
  transition:var(--transition);
}
.opt-chip input{display:none;}
.opt-chip::before{
  content:"";
  width:10px;
  height:10px;
  border-radius:999px;
  border:2px solid var(--gray-light);
  background:#fff;
  box-shadow:0 0 0 1px rgba(148,163,184,.2);
}
.opt-chip.active{
  background:rgba(59,130,246,.06);
  border-color:var(--primary);
  color:var(--primary-dark);
}
.opt-chip.active::before{
  border-color:var(--primary);
  background:var(--primary);
}

/* Bloc tri + filtres (pleine largeur) */
.options-extra{
  width:100%;
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-left:0;
  padding-top:6px;
  border-top:1px dashed var(--light);
}

/* Tri */
.sort-controls{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.sort-select{
  display:flex;
  flex-direction:column;
  gap:3px;
  font-size:11px;
  font-weight:600;
  color:var(--gray-dark);
}
.sort-select span{
  font-size:11px;
  font-weight:700;
  color:var(--gray);
}
.sort-select select{
  border-radius:999px;
  border:1px solid var(--light);
  background:#f8fafc;
  padding:4px 10px;
  font-size:12px;
  font-weight:700;
  color:var(--dark);
  outline:none;
  min-width:140px;
  cursor:pointer;
  transition:var(--transition);
}
.sort-select select:focus{
  border-color:var(--primary);
  box-shadow:0 0 0 2px rgba(59,130,246,.18);
}

/* Filtres (checkbox + sliders) */
.filter-controls{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.filter-badges{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.filter-check{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 10px;
  border-radius:999px;
  background:#f8fafc;
  border:1px solid var(--light);
  font-size:12px;
  font-weight:600;
  color:var(--gray-dark);
}
.filter-check input[type="checkbox"]{
  width:14px;
  height:14px;
  accent-color:var(--primary);
  cursor:pointer;
}

/* Sliders : cartes sur toute la largeur */
.filter-sliders{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:8px;
  width:100%;
}
.filter-range{
  padding:6px 8px;
  border-radius:12px;
  background:#f8fafc;
  border:1px solid var(--light);
}
.filter-range-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  font-size:11px;
  font-weight:600;
  color:var(--gray-dark);
  margin-bottom:4px;
}
.filter-range-value{
  font-size:11px;
  font-weight:800;
  color:#0f172a;
}
.filter-range-unit{
  margin-top:2px;
  font-size:11px;
  font-weight:600;
  color:var(--gray);
}
.filter-range input[type="range"]{
  width:100%;
  accent-color:var(--primary);
}

/* Responsive : options sur mobile */
@media (max-width: 800px){
  .options-row{
    padding:12px 14px;
  }
  .options-extra{
    width:100%;
  }
}
.filter-range-value{
  display:flex;
  align-items:center;
  gap:4px;
}
.filter-range-sliders{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.filter-range-row{
  display:flex;
  align-items:center;
  gap:6px;
}
.filter-range-row-label{
  font-size:10px;
  font-weight:600;
  color:var(--gray);
  width:32px;
  flex:0 0 auto;
}
/* Bouton d'ouverture / fermeture du bloc tri + filtres */
.options-toggle-btn{
  margin-top:8px;
  width:100%;
  border-radius:999px;
  border:1px solid var(--light);
  background:#f8fafc;
  padding:6px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  font-size:12px;
  font-weight:600;
  color:var(--gray-dark);
  cursor:pointer;
  transition:var(--transition);
}
.options-toggle-btn:hover{
  background:#eef2ff;
  border-color:rgba(129,140,248,.6);
}
.options-toggle-btn .options-toggle-label{
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.options-toggle-btn .options-toggle-label i{
  color:var(--primary);
}
.options-toggle-chevron{
  font-size:12px;
  color:var(--gray);
  transition:transform .2s ease;
}

/* État ouvert : chevron inversé */
.options-toggle-btn.open .options-toggle-chevron{
  transform:rotate(180deg);
}

/* Layout spécifique des boutons en 6×6 (Mes recherches) */
.page-mysearches .grid.grid-cols-6 .card .row:last-child {
  flex-direction: column;      
  align-items: stretch;        
  gap: 6px;
}

.page-mysearches .grid.grid-cols-6 .card .row:last-child .btn {
  width: 100%;
  justify-content: center;   
}


.page-group #analysis-board .card .meta{
  display:none;              
}

.page-group #analysis-board .card .progress{
  display:none;                
}

.page-group #analysis-board .card{
  padding:12px 14px;          
  gap:8px;                  
}

.page-group #analysis-board .card .title{
  font-size:14px;           
}

.page-group #analysis-board .card .row{
  margin-top:2px;             
}
.page-group .search-row{
  margin:12px 0;
}

.page-group .search-wrapper{
  width:100%;
  border-radius:16px;
  padding:14px 18px;
  min-width:0;
  background:#ffffff;
  box-shadow:var(--shadow-md);
}

.page-group .search-wrapper i{
  font-size:16px;
}

.page-group .search-input{
  font-size:15px;
  font-weight:600;
}
/* ==========================
   Analyses — onglets Liste/Carte
   ========================== */
.analysis-view-tabs{
  display:flex;
  gap:8px;
  background: var(--light);
  padding: 6px;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  border: 1px solid rgba(0,0,0,0.04);
  margin: 14px 0 12px;
}

.analysis-view-tab{
  border:none;
  background: transparent;
  color: var(--gray);
  font-weight: 800;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  cursor:pointer;
  transition: var(--transition);
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-size: 13px;
}

.analysis-view-tab:hover{
  background: rgba(255,255,255,0.65);
  color: var(--primary);
}

.analysis-view-tab.active{
  background:#fff;
  color: var(--primary);
  box-shadow: var(--shadow-sm);
}

.analysis-view{ display:none; }
.analysis-view.active{ display:block; }

/* ==========================
   Analyses — Carte
   ========================== */
.analysis-map-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: 10px 0 12px;
}

.analysis-map-toolbar .am-left{
  display:flex;
  align-items:center;
  gap: 10px;
  flex-wrap: wrap;
}

.analysis-map-toolbar .am-right{
  display:flex;
  align-items:center;
  gap: 10px;
  flex-wrap: wrap;
}

.am-select{
  display:flex;
  align-items:center;
  gap:10px;
  background:#fff;
  border:1px solid var(--light);
  border-radius: 12px;
  padding: 10px 12px;
  box-shadow: var(--shadow-sm);
}

.am-select span{
  font-size:12px;
  font-weight:900;
  color: var(--gray-dark);
  letter-spacing:.2px;
  text-transform: uppercase;
}

.am-select select{
  border:none;
  outline:none;
  font-weight:800;
  color: var(--dark);
  background: transparent;
  min-width: 220px;
}

.am-toggle{
  display:flex;
  align-items:center;
  gap:10px;
  background:#fff;
  border:1px solid var(--light);
  border-radius: 12px;
  padding: 10px 12px;
  box-shadow: var(--shadow-sm);
  font-weight:800;
  color: var(--dark);
}

.analysis-map-card{
  position:relative;
  border-radius: var(--radius-xl);
  overflow:hidden;
  border: 1px solid var(--light);
  box-shadow: var(--shadow);
  background:#e5e7eb;
}

.analysis-big-map{
  height: clamp(420px, 62vh, 680px);
  width: 100%;
}

/* Légende overlay */
.analysis-map-legend{
  position:absolute;
  left: 14px;
  bottom: 14px;
  background: rgba(255,255,255,.96);
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 18px 40px rgba(0,0,0,.12);
  border-radius: 14px;
  padding: 12px 12px;
  width: min(340px, 92%);
  z-index: 2;
}

.analysis-map-legend .ttl{
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--gray-dark);
  margin-bottom: 8px;
  display:flex;
  align-items:center;
  gap:8px;
}

.analysis-map-legend .row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding: 8px 10px;
  border-radius: 12px;
  border: 1px solid var(--light);
  background:#fff;
  box-shadow: var(--shadow-sm);
  margin-bottom: 6px;
}

.analysis-map-legend .sw{
  width: 16px;
  height: 16px;
  border-radius: 6px;
  border: 1px solid rgba(0,0,0,.08);
  box-shadow: var(--shadow-sm);
  flex: 0 0 16px;
}

.analysis-map-legend .lbl{
  font-weight: 800;
  color: var(--dark);
  font-size: 12px;
  line-height: 1.2;
}

.analysis-map-legend .rng{
  font-weight: 800;
  color: var(--gray);
  font-size: 12px;
}

/* ==========================
   Étiquettes (OverlayView)
   ========================== */
.br-am-label{
  position:absolute;
  transform: translate(-50%, -50%);
  padding: 5px 8px;
  border-radius: 999px;
  background: rgba(255,255,255,0.96);
  border: 1px solid rgba(0,0,0,.10);
  border-left: 4px solid var(--sw, var(--primary));
  box-shadow: 0 10px 24px rgba(0,0,0,.10);
  font: 800 12px/1 system-ui, -apple-system, Segoe UI, Roboto, Arial;
  color: #0f172a;
  white-space: nowrap;
  user-select:none;
  cursor:pointer;
}

.br-am-label small{
  font-weight: 900;
  opacity: .8;
}

/* responsive */
@media (max-width: 768px){
  .am-select select{ min-width: 180px; }
  .analysis-map-legend{ left: 10px; right: 10px; width:auto; }
}
#analysisMapLegend .legend-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
#analysisMapLegend .legend-toggle{
  border:1px solid rgba(148,163,184,.35);
  background: rgba(15,23,42,.06);
  color: inherit;
  border-radius: 10px;
  padding: 6px 10px;
  cursor:pointer;
}
#analysisMapLegend.is-collapsed{
  max-height: none;
}

/* ============================
   Pagination des analyses
   ============================ */
.is-paged-out { display: none !important; }

#analysis-board.is-page-change > .card:not(.is-paged-out){
  animation: brPageIn 260ms ease-out both;
}

@keyframes brPageIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.br-pagination{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 18px;
  padding: 12px 14px;
  background: rgba(248, 250, 252, .7);
  border: 1px solid rgba(148, 163, 184, .25);
  border-radius: 14px;
  backdrop-filter: blur(4px);
}

.br-pagination[hidden]{ display: none; }

.br-pagination .pg-info{
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--gray, #64748b);
}

.br-pagination .pg-range{
  font-variant-numeric: tabular-nums;
}

.br-pagination .pg-nav{
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #fff;
  padding: 4px;
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
  border: 1px solid rgba(148, 163, 184, .2);
}

.br-pagination .pg-btn{
  min-width: 34px;
  height: 34px;
  padding: 0 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: none;
  background: transparent;
  color: var(--dark, #0f172a);
  border-radius: 8px;
  font-weight: 600;
  font-size: 13px;
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease, transform 160ms ease;
  font-variant-numeric: tabular-nums;
}

.br-pagination .pg-btn:hover:not(:disabled):not(.is-active){
  background: rgba(59, 130, 246, .1);
  color: var(--primary, #2563eb);
}

.br-pagination .pg-btn:active:not(:disabled){
  transform: scale(.96);
}

.br-pagination .pg-btn.is-active{
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  color: #fff;
  box-shadow: 0 4px 10px rgba(37, 99, 235, .25);
}

.br-pagination .pg-btn:disabled{
  opacity: .4;
  cursor: not-allowed;
}

.br-pagination .pg-ellipsis{
  min-width: 24px;
  text-align: center;
  color: var(--gray, #94a3b8);
  font-weight: 700;
  user-select: none;
}

@media (max-width: 640px){
  .br-pagination{
    justify-content: center;
  }
  .br-pagination .pg-info{
    width: 100%;
    justify-content: center;
  }
}

/* ==========================================================
   BLOC "BIEN FOND" (dashboard) — refonte tuiles "bf-tile"
   ========================================================== */
#construction-details-grid{
  display:grid;
  grid-template-columns:repeat(12, minmax(0, 1fr));
  gap:12px;
}
#construction-details-grid .bf-tile{
  grid-column:span 3;
}
#construction-details-grid .bf-tile--wide{
  grid-column:span 6;
}
@media (max-width:1100px){
  #construction-details-grid .bf-tile{ grid-column:span 6; }
  #construction-details-grid .bf-tile--wide{ grid-column:span 12; }
}
@media (max-width:640px){
  #construction-details-grid .bf-tile,
  #construction-details-grid .bf-tile--wide{ grid-column:span 12; }
}

.bf-tile{
  position:relative;
  background:#fff;
  border:1px solid #e5ecf5;
  border-radius:14px;
  padding:14px 16px 16px;
  display:flex;
  flex-direction:column;
  gap:10px;
  min-height:92px;
  transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease;
  overflow:hidden;
}
.bf-tile::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:3px;
  background:var(--primary);
  opacity:0;
  transition:opacity .18s ease;
}
.bf-tile:hover{
  border-color:rgba(59,130,246,.35);
  box-shadow:0 10px 24px rgba(15,23,42,.06);
  transform:translateY(-1px);
}
.bf-tile:hover::before{ opacity:1; }

.bf-tile__head{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.bf-tile__icon{
  flex:0 0 auto;
  width:30px;
  height:30px;
  border-radius:10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:rgba(59,130,246,.10);
  color:var(--primary);
  font-size:13px;
}
.bf-tile__label{
  font-size:11px;
  font-weight:800;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:#64748b;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.bf-tile__value{
  font-size:19px;
  font-weight:800;
  color:var(--dark);
  line-height:1.3;
  word-break:break-word;
  overflow-wrap:anywhere;
}
.bf-tile__value--empty{
  color:#cbd5e1;
  font-weight:700;
  letter-spacing:.08em;
}

/* Multi-valeurs (fusion) → puces qui wrap sur plusieurs lignes */
.bf-tile__value--chips{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  font-size:14px;
  font-weight:600;
}
.bf-chip{
  display:inline-flex;
  align-items:center;
  background:rgba(59,130,246,.10);
  color:var(--primary-dark, #2563eb);
  font-weight:700;
  font-size:12.5px;
  line-height:1.2;
  padding:5px 10px;
  border-radius:999px;
  border:1px solid rgba(59,130,246,.22);
  white-space:nowrap;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Lien Extrait / Guichet */
.bf-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 14px;
  border-radius:10px;
  background:var(--primary);
  color:#fff !important;
  font-weight:700;
  font-size:13px;
  text-decoration:none;
  transition:background .18s ease, box-shadow .18s ease, transform .18s ease;
  align-self:flex-start;
}
.bf-link:hover{
  background:var(--primary-dark, #2563eb);
  box-shadow:0 8px 16px rgba(59,130,246,.22);
  transform:translateY(-1px);
}
.bf-link--disabled{
  background:#eef2f7;
  color:#94a3b8 !important;
  cursor:not-allowed;
  pointer-events:none;
}

/* ------------------------------------------------------------------
   Supprime tout soulignement par défaut sur les liens et boutons
   (y compris au hover/focus/visited). Les rares endroits qui veulent
   un vrai soulignement (ex. lien "Créer un compte" sur /login) peuvent
   le réactiver explicitement via `text-decoration: underline;`.
   ------------------------------------------------------------------ */
a,
a:link,
a:visited,
a:hover,
a:focus,
a:active,
button,
button:hover,
button:focus,
button:active,
.btn,
.btn:hover,
.btn:focus,
.btn:active,
.modal a,
.modal a:hover,
.modal a:focus,
.modal button,
.modal button:hover,
.modal button:focus {
  text-decoration: none !important;
}
