:root{
  --ff-bg:#f3f6f8;--ff-surface:#fff;--ff-surface-2:#f8fafb;--ff-text:#17212b;--ff-muted:#697782;
  --ff-line:#e4eaee;--ff-red:#c83232;--ff-red-dark:#992424;--ff-blue:#2563eb;--ff-green:#188754;
  --ff-orange:#e07820;--ff-purple:#7c3aed;--ff-shadow:0 12px 35px rgba(30,48,62,.09);
  --ff-radius:18px;--ff-radius-lg:26px;
}
html,body{background:var(--ff-bg);color:var(--ff-text)}
body{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.glass{background:rgba(255,255,255,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(228,234,238,.95);box-shadow:var(--ff-shadow)}
.card,.panel,.kpi,.carditem,.ranking-card,.campaign-card{background:var(--ff-surface);border:1px solid var(--ff-line);box-shadow:var(--ff-shadow)}
button{background:var(--ff-red);border:1px solid transparent;box-shadow:none;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}
button:hover{background:var(--ff-red-dark);box-shadow:0 8px 18px rgba(200,50,50,.18)}
button:active{transform:translateY(1px)}
button.secondary{background:#edf2f5!important;color:#31414d!important;border-color:#dde5ea!important}
button.secondary:hover{background:#e3eaee!important}
input,select,textarea{border:1px solid #dce4e9;background:#fff;color:var(--ff-text);outline:none;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{border-color:#8fb2e8;box-shadow:0 0 0 4px rgba(37,99,235,.10)}
h1{font-size:clamp(26px,3vw,38px);letter-spacing:-.035em;margin:0 0 18px}
h2{font-size:19px;letter-spacing:-.015em}.panel h2{margin-top:0}
.sidebar{background:#fff;border-color:var(--ff-line);box-shadow:0 16px 45px rgba(24,40,52,.12)}
.sidebar .brand{padding:8px 8px 18px;border-bottom:1px solid var(--ff-line);margin-bottom:8px}
.sidebar button{border-radius:12px;padding:10px 12px;color:#394955;font-weight:650}
.sidebar button:hover{background:#f5f7f9;color:var(--ff-red);box-shadow:none}
.sidebar button.active{background:var(--ff-red);color:#fff}
.topbar,.mobilebar{border-color:var(--ff-line)}
.kpi{border-radius:20px;padding:18px;position:relative;overflow:hidden}
.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--ff-blue)}
.kpi:nth-child(2):before{background:var(--ff-green)}.kpi:nth-child(3):before{background:var(--ff-orange)}.kpi:nth-child(4):before{background:var(--ff-purple)}
.kpi small{color:var(--ff-muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:10px}
.kpi strong{font-size:30px;letter-spacing:-.04em}
.ranking-card{border-radius:22px;background:linear-gradient(145deg,#fff,#fafcfd)}
.ranking-card:first-child{border-top:4px solid #d9a823}.ranking-card:nth-child(2){border-top:4px solid var(--ff-blue)}.ranking-card:nth-child(3){border-top:4px solid var(--ff-green)}
.toolbar{align-items:center}.toolbar>*{min-height:44px}
.tablewrap{border-radius:18px}table{background:#fff}th{background:#f6f8fa;color:#52616d;font-size:11px;text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0}tr:hover td{background:#fafcfd}
.badge,.status-pill{font-weight:750}
.status-collecte,.status-open{background:#dcf4e7!important;color:#14623d!important}.status-refuse,.status-locked{background:#fbe2e2!important;color:#8b2525!important}.status-absent,.status-a_repasser{background:#fff0d9!important;color:#8a541b!important}
#map,#sectorMap{background:#dce7ed}.leaflet-popup-content-wrapper{border-radius:18px;box-shadow:0 16px 40px rgba(18,34,45,.18)}
.maptools{border-radius:16px}.terrain-status{background:rgba(255,255,255,.96);font-weight:650}
.nearby-item{border:1px solid var(--ff-line);margin:7px 0}.nearby-item:hover{border-color:#c6d4dd;background:#f9fbfc;box-shadow:none}
.modal{background:rgba(15,27,36,.42)}.modalbox{background:#fff;border-color:var(--ff-line);box-shadow:0 25px 70px rgba(15,27,36,.25)}
.rich-editor{background:#fff;border-color:#dce4e9;line-height:1.55}
.diagnostic-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.diagnostic-card{border:1px solid var(--ff-line);border-radius:18px;padding:16px;background:#fff}.diagnostic-card.ok{border-left:5px solid var(--ff-green)}.diagnostic-card.warn{border-left:5px solid var(--ff-orange)}.diagnostic-card.error{border-left:5px solid var(--ff-red)}
.centered{background:radial-gradient(circle at 20% 10%,rgba(255,255,255,.95),transparent 32%),linear-gradient(145deg,#e6eef3,#f6eaea)}
#login .card{border-top:5px solid var(--ff-red)}#login .logo{filter:drop-shadow(0 8px 15px rgba(200,50,50,.15))}
@media(max-width:767px){
  .mobilebar{background:#fff}.bottomnav{background:rgba(255,255,255,.97);border:1px solid var(--ff-line);box-shadow:0 -8px 30px rgba(25,41,53,.10)}
  .bottomnav button{color:#66747f}.bottomnav button.active{background:#fceaea;color:var(--ff-red)}
  .page:not(#mapPage){background:var(--ff-bg)}.panel{border-radius:18px;padding:14px}.kpi{padding:15px}.kpi strong{font-size:25px}
  .modalbox{background:#fff}.nearby-drawer{background:#fff}.maptools{background:rgba(255,255,255,.97)}
}
