/* ================================================================
   Vandeto Map v2.0.0 — Core CSS
   ================================================================ */
.vdm-nb-wrap *,.vdm-nb-wrap *::before,.vdm-nb-wrap *::after{box-sizing:border-box;}
.vdm-nb-wrap{position:relative;width:100%;font-family:inherit;}

/* ── GPS screen ─────────────────────────────────────────────── */
.vdm-geo-screen{display:flex;align-items:center;justify-content:center;padding:40px 20px;min-height:360px;background:linear-gradient(135deg,#fff5f5 0%,#fff 60%);border:1px solid #fde8e8;border-radius:16px;}
.vdm-geo-card{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:420px;gap:14px;}
.vdm-geo-rings{position:relative;width:120px;height:120px;display:flex;align-items:center;justify-content:center;margin-bottom:8px;}
.vdm-geo-ring{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,23,0,.15);animation:vdm-ring-pulse 2.4s ease-in-out infinite;}
.vdm-geo-ring--2{inset:12px;border-color:rgba(255,23,0,.22);animation-delay:.4s;}
.vdm-geo-ring--1{inset:24px;border-color:rgba(255,23,0,.3);animation-delay:.8s;}
@keyframes vdm-ring-pulse{0%,100%{transform:scale(1);opacity:1;}50%{transform:scale(1.06);opacity:.5;}}
.vdm-geo-pin{position:relative;z-index:1;width:48px;height:48px;filter:drop-shadow(0 4px 12px rgba(255,23,0,.35));animation:vdm-pin-bob 2s ease-in-out infinite;}
.vdm-geo-pin svg{width:48px;height:68px;}
@keyframes vdm-pin-bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}
.vdm-geo-title{font-size:20px;font-weight:700;color:#11151c;margin:0;line-height:1.25;}
.vdm-geo-desc{font-size:14px;color:#666;margin:0;line-height:1.55;}
.vdm-geo-msg-wrap{width:100%;display:none;}
.vdm-geo-msg{font-size:13px;padding:10px 14px;border-radius:8px;margin:0;text-align:center;line-height:1.45;}
.vdm-geo-msg[data-type="error"]{background:#fff0ef;color:#a32d2d;border:1px solid #ffd0d0;}
.vdm-geo-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:14px 28px;background:#ff1700;color:#fff;font-size:15px;font-weight:700;border:none;border-radius:50px;cursor:pointer;width:100%;max-width:320px;box-shadow:0 4px 20px rgba(255,23,0,.35);transition:background .18s,box-shadow .18s;-webkit-tap-highlight-color:transparent;}
.vdm-geo-btn svg{width:20px;height:20px;flex-shrink:0;}
.vdm-geo-btn:hover{background:#d41300;box-shadow:0 6px 26px rgba(255,23,0,.42);}
.vdm-geo-btn:active{opacity:.88;}
.vdm-geo-btn:disabled{opacity:.65;cursor:wait;}
.vdm-btn-spin{display:inline-block;width:18px;height:18px;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:vdm-spin .65s linear infinite;flex-shrink:0;}
.vdm-geo-hint{display:flex;align-items:center;gap:6px;font-size:12px;color:#aaa;margin:0;}
.vdm-geo-hint svg{width:13px;height:13px;flex-shrink:0;}

/* ── Résultats ──────────────────────────────────────────────── */
.vdm-nb-results{display:none;}
.vdm-nb-map{width:100%;border-radius:14px;overflow:hidden;position:relative;background:#f0ede8;border:1px solid #e2e4e7;}
.vdm-nb-status{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:800;background:rgba(255,255,255,.92);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid #e9e9e9;border-radius:50px;padding:8px 16px;display:none;align-items:center;gap:8px;font-size:13px;color:#555;box-shadow:0 4px 16px rgba(0,0,0,.1);white-space:nowrap;}
.vdm-nb-spinner{width:16px;height:16px;border:2px solid rgba(255,23,0,.2);border-top-color:#ff1700;border-radius:50%;animation:vdm-spin .65s linear infinite;flex-shrink:0;}
.vdm-nb-counter{display:none;align-items:center;gap:6px;margin:12px 0 0;padding:8px 14px;background:#fff;border:1px solid #e9e9e9;border-radius:50px;width:fit-content;font-size:13px;color:#555;box-shadow:0 2px 8px rgba(0,0,0,.06);}
.vdm-nb-counter-dot{width:8px;height:8px;background:#1D9E75;border-radius:50%;box-shadow:0 0 0 3px rgba(29,158,117,.2);animation:vdm-pulse-dot 2s ease infinite;}
@keyframes vdm-pulse-dot{0%,100%{box-shadow:0 0 0 3px rgba(29,158,117,.2);}50%{box-shadow:0 0 0 6px rgba(29,158,117,.05);}}
.vdm-nb-counter-num{font-weight:700;color:#11151c;font-size:15px;}
.vdm-nb-counter-sep{color:#ddd;}

/* ── Header grille ──────────────────────────────────────────── */
.vdm-nb-grid-header{display:none;align-items:center;margin:24px 0 0;}
.vdm-nb-grid-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:#11151c;margin:0;}
.vdm-nb-grid-title svg{width:18px;height:18px;color:#ff1700;}

/* ── Filtre catégories ──────────────────────────────────────── */
.vdm-nb-cat-filter{display:none;flex-direction:row;align-items:center;gap:8px;margin:14px 0 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;-webkit-mask-image:linear-gradient(to right,transparent 0,black 10px,black calc(100% - 10px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,black 10px,black calc(100% - 10px),transparent 100%);}
.vdm-nb-cat-filter::-webkit-scrollbar{display:none;}
.vdm-nb-cat-filter::before,.vdm-nb-cat-filter::after{content:'';display:block;min-width:2px;flex-shrink:0;}
.vdm-cat-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:50px;border:1.5px solid #e2e4e7;background:#fff;color:#555;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;scroll-snap-align:start;transition:border-color .15s,background .15s,color .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent;line-height:1;}
.vdm-cat-pill:hover{border-color:#ff1700;color:#ff1700;background:#fff5f5;}
.vdm-cat-pill.is-active{border-color:#ff1700;background:#ff1700;color:#fff;box-shadow:0 3px 12px rgba(255,23,0,.28);}
.vdm-cat-pill-label{font-weight:600;}
.vdm-cat-pill-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 5px;border-radius:50px;background:rgba(0,0,0,.08);font-size:11px;font-weight:700;color:inherit;line-height:1;}
.vdm-cat-pill.is-active .vdm-cat-pill-count{background:rgba(255,255,255,.22);}

/* ── Grille ─────────────────────────────────────────────────── */
.vdm-nb-grid{display:grid;grid-template-columns:repeat(var(--cols-d,3),1fr);gap:16px;}

/* ── Card ───────────────────────────────────────────────────── */
.vdm-card{display:flex;flex-direction:column;background:#fff;border:1px solid #e9e9e9;border-radius:12px;overflow:hidden;text-decoration:none;color:inherit;transition:box-shadow .2s,border-color .2s;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.vdm-card:hover{box-shadow:0 6px 24px rgba(0,0,0,.1);border-color:#d9d9d9;text-decoration:none;}
.vdm-card.is-active{border-color:#ff1700;box-shadow:0 0 0 2px rgba(255,23,0,.15),0 6px 24px rgba(255,23,0,.12);}
.vdm-card-media{position:relative;width:100%;padding-top:64%;overflow:hidden;background:#f4f4f4;}
.vdm-card-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.vdm-card-noimg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#ccc;}
.vdm-card-noimg svg{width:36px;height:36px;}
.vdm-card-badge{position:absolute;top:8px;left:8px;font-size:10px;font-weight:700;padding:3px 8px;background:linear-gradient(135deg,#ffc220,#ffaa00);color:#11151c;border-radius:20px;letter-spacing:.03em;}
.vdm-card-cat{position:absolute;bottom:8px;left:8px;font-size:10px;font-weight:600;padding:3px 8px;background:rgba(17,21,28,.65);color:#fff;border-radius:20px;backdrop-filter:blur(4px);}
.vdm-card-body{padding:12px 13px 14px;display:flex;flex-direction:column;gap:5px;flex:1;}
.vdm-card-title{font-size:13px;font-weight:600;color:#11151c;margin:0;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.vdm-card-price{font-size:15px;font-weight:800;color:#ff1700;letter-spacing:-.02em;}
.vdm-card-loc{display:flex;align-items:center;gap:4px;font-size:11px;color:#999;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.vdm-card-loc svg{width:11px;height:11px;flex-shrink:0;color:#ff1700;}
.vdm-card-cta{margin-top:auto;padding-top:8px;font-size:12px;font-weight:600;color:#ff1700;}

/* ── Vide ───────────────────────────────────────────────────── */
.vdm-nb-empty{display:none;flex-direction:column;align-items:center;gap:10px;padding:40px 20px;text-align:center;color:#aaa;}
.vdm-nb-empty svg{width:80px;height:80px;}
.vdm-nb-empty p{font-size:14px;color:#666;margin:0;}

/* ── Popups Leaflet ─────────────────────────────────────────── */
.vdm-nb-map .leaflet-popup-content-wrapper{border-radius:14px !important;overflow:hidden;padding:0 !important;box-shadow:0 8px 32px rgba(0,0,0,.14) !important;animation:vdm-pop-in .22s cubic-bezier(.175,.885,.32,1.275);}
@keyframes vdm-pop-in{from{opacity:0;transform:scale(.85) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}
.vdm-nb-map .leaflet-popup-content{margin:0 !important;font-size:13px;}
.vdm-nb-map .leaflet-popup-close-button{width:26px !important;height:26px !important;font-size:16px !important;color:#fff !important;background:rgba(0,0,0,.35) !important;border-radius:50% !important;top:8px !important;right:8px !important;display:flex !important;align-items:center !important;justify-content:center !important;line-height:1 !important;z-index:5 !important;}
.vdm-pop-img-wrap{overflow:hidden;max-height:130px;}
.vdm-pop-img{width:100%;height:130px;object-fit:cover;display:block;}
.vdm-pop-body{padding:11px 13px 13px;}
.vdm-pop-badge{display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;background:linear-gradient(135deg,#ffc220,#ffaa00);color:#11151c;margin-bottom:6px;}
.vdm-pop-title{display:block;font-size:13px;font-weight:600;color:#11151c;text-decoration:none;margin-bottom:4px;line-height:1.35;}
.vdm-pop-title:hover{color:#ff1700;}
.vdm-pop-price{font-size:16px;font-weight:800;color:#ff1700;margin-bottom:4px;}
.vdm-pop-loc{display:flex;align-items:center;gap:4px;font-size:11px;color:#999;margin-bottom:6px;}
.vdm-pop-loc svg{width:11px;height:11px;flex-shrink:0;color:#ff1700;}
.vdm-pop-modules{margin-bottom:6px;}
.vdm-pop-actions{display:flex;gap:6px;}
.vdm-pop-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;padding:8px 10px;border-radius:8px;font-size:12px;font-weight:600;text-decoration:none;transition:all .15s;}
.vdm-pop-btn--p{background:#ff1700;color:#fff;}
.vdm-pop-btn--p:hover{background:#d41300;color:#fff;text-decoration:none;}
.vdm-pop-btn--g{background:#f4f4f4;color:#444;}
.vdm-pop-btn--g:hover{background:#eaeaea;text-decoration:none;}

/* ── Marqueurs ──────────────────────────────────────────────── */
.vdm-me{background:none !important;border:none !important;}
.vdm-me-dot{width:18px;height:18px;background:#1D9E75;border-radius:50%;border:3px solid #fff;box-shadow:0 2px 8px rgba(29,158,117,.5),0 0 0 5px rgba(29,158,117,.15);animation:vdm-me-pulse 2s ease infinite;}
@keyframes vdm-me-pulse{0%,100%{box-shadow:0 2px 8px rgba(29,158,117,.5),0 0 0 5px rgba(29,158,117,.15);}50%{box-shadow:0 2px 8px rgba(29,158,117,.5),0 0 0 10px rgba(29,158,117,.04);}}
.vdm-me-pop{font-size:12px;font-weight:600;color:#1D9E75;padding:2px 4px;}
.vdm-marker{background:none !important;border:none !important;}
.vdm-pin{position:relative;}
.vdm-pin svg{filter:drop-shadow(0 3px 6px rgba(0,0,0,.28));transform-origin:bottom center;transition:transform .2s cubic-bezier(.175,.885,.32,1.275);}
.vdm-marker:hover .vdm-pin svg{transform:scale(1.2);}
.vdm-clust{background:none !important;border:none !important;}
.vdm-clust-inner{border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700;box-shadow:0 3px 12px rgba(0,0,0,.2),0 0 0 4px rgba(255,255,255,.18);transition:transform .2s ease;cursor:pointer;}
.vdm-clust-inner:hover{transform:scale(1.12);}

/* ── Leaflet overrides ──────────────────────────────────────── */
.vdm-nb-map .leaflet-container{font-family:inherit;background:#f0ede8;}
.vdm-nb-map .leaflet-control-zoom{border:none !important;box-shadow:0 2px 10px rgba(0,0,0,.12) !important;border-radius:10px !important;overflow:hidden;}
.vdm-nb-map .leaflet-control-zoom-in,.vdm-nb-map .leaflet-control-zoom-out{width:36px !important;height:36px !important;line-height:36px !important;font-size:16px !important;color:#444 !important;background:#fff !important;border:none !important;transition:background .15s !important;}
.vdm-nb-map .leaflet-control-zoom-in:hover,.vdm-nb-map .leaflet-control-zoom-out:hover{background:#f4f4f4 !important;color:#ff1700 !important;}

@keyframes vdm-spin{to{transform:rotate(360deg);}}

/* ── Responsive ─────────────────────────────────────────────── */
@media(max-width:900px){.vdm-nb-grid{grid-template-columns:repeat(var(--cols-t,2),1fr);}}
@media(max-width:600px){
  .vdm-nb-grid{grid-template-columns:repeat(var(--cols-m,1),1fr);gap:12px;}
  .vdm-geo-screen{padding:30px 14px;min-height:300px;border-radius:12px;}
  .vdm-geo-title{font-size:18px;}
  .vdm-geo-btn{font-size:14px;padding:13px 22px;}
  .vdm-geo-rings{width:96px;height:96px;}
  .vdm-geo-pin svg{width:38px;height:54px;}
  .vdm-nb-map{border-radius:10px;}
  .vdm-card-body{padding:10px 11px 12px;}
  .vdm-card-title{font-size:12px;}
  .vdm-pop-img,.vdm-pop-img-wrap{height:100px;max-height:100px;}
  .vdm-cat-pill{font-size:12px;padding:6px 12px;}
}
@media(max-width:380px){.vdm-nb-grid{gap:10px;}}
