:root{
  --primary:#6C4DFF;--primary-700:#5636e8;--ink:#17171c;--muted:#777382;--line:#eceaf2;
  --surface:#fff;--soft:#f7f5ff;--danger:#e11919;--radius:18px;--shadow:0 12px 35px rgba(31,20,79,.10);
  --container:1180px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:#fff}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.container{width:min(var(--container),calc(100% - 48px));margin:auto}.desktop-only{display:block}.mobile-only{display:none}.hidden{display:none!important}.dynamic-missing{color:var(--danger)!important;font-weight:800}.skeleton{background:linear-gradient(90deg,#eee 25%,#f7f7f7 37%,#eee 63%);background-size:400% 100%;animation:shimmer 1.3s infinite}@keyframes shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
.header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.header-inner{height:76px;display:flex;align-items:center;gap:34px}.brand{display:flex;align-items:center;font-size:28px;font-weight:850;letter-spacing:-1.1px}.brand-pin{width:27px;height:34px;margin-right:9px;background:var(--primary);border-radius:16px 16px 18px 18px;clip-path:polygon(50% 100%,3% 43%,8% 16%,28% 0,72% 0,92% 16%,97% 43%)}.brand span{color:var(--primary)}.main-nav{display:flex;gap:32px;margin-left:auto}.main-nav a{font-size:15px}.main-nav a.active{font-weight:750}.header-actions{display:flex;align-items:center;gap:20px}.cta{border:0;border-radius:12px;padding:15px 22px;background:linear-gradient(135deg,#7658ff,#5d38ea);color:#fff;font-weight:750;box-shadow:0 9px 22px rgba(108,77,255,.24)}.icon-btn{border:0;background:transparent;font-size:23px;position:relative}.badge{position:absolute;right:-6px;top:-6px;min-width:18px;height:18px;border-radius:99px;background:#ff5c6c;color:#fff;font-size:10px;display:grid;place-items:center}.avatar{width:39px;height:39px;border-radius:50%;background:#202027;color:#fff;display:grid;place-items:center;font-weight:800}
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.hero-grid{min-height:500px;display:grid;grid-template-columns:44% 56%}.hero-copy{padding:58px 28px 34px max(0px,calc((100vw - var(--container))/2));position:relative;z-index:3;background:linear-gradient(90deg,#fff 76%,rgba(255,255,255,.94) 91%,rgba(255,255,255,0))}.eyebrow{color:var(--primary);font-weight:760;margin:0 0 14px}.hero h1{font-size:46px;line-height:1.07;letter-spacing:-2px;margin:0 0 18px;max-width:460px}.hero h1 span{color:var(--primary)}.hero-sub{font-size:18px;line-height:1.55;color:#514d5a;max-width:420px}.search-row{display:grid;grid-template-columns:1fr 1fr 58px;gap:10px;margin-top:22px;max-width:610px}.field,.search-button{height:58px;border:1px solid #e4e1eb;border-radius:12px;background:#fff}.field{display:flex;align-items:center;gap:11px;padding:0 16px}.field input,.field select{border:0;outline:0;width:100%;background:transparent}.search-button{background:var(--primary);color:#fff;border:0;font-size:22px}.chips{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}.chip{padding:9px 13px;border:1px solid #e5e2ec;border-radius:10px;background:#fff}.chip.active{background:var(--soft);border-color:#cfc5ff;color:var(--primary)}.categories{display:flex;gap:22px;margin-top:42px;overflow:auto;padding-bottom:8px}.category{min-width:58px;text-align:center;border:0;background:transparent;color:#28252e}.category-icon{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;margin:0 auto 8px;background:#f7f5ff;border:1px solid #ece8ff;font-size:20px}.category span{font-size:12px}.hero-map-wrap{position:relative;min-height:500px;background:#eef1ec}.hero-map{position:absolute;inset:0;background:url('../images/map-fallback.jpg') center/cover no-repeat;isolation:isolate}.hero-map:before{content:"";position:absolute;inset:0;z-index:450;background:linear-gradient(90deg,rgba(255,255,255,.72) 0%,rgba(255,255,255,.24) 30%,rgba(255,255,255,.04) 62%),rgba(248,246,240,.12);pointer-events:none}.hero-map:after{content:"";position:absolute;inset:0;z-index:451;background-image:linear-gradient(rgba(108,77,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(108,77,255,.035) 1px,transparent 1px);background-size:42px 42px;pointer-events:none}.hero-map .leaflet-pane{filter:saturate(.42) sepia(.08) brightness(1.08) contrast(.91)}.hero-map .leaflet-marker-pane{filter:none}.hero-map .leaflet-control-attribution{font-size:8px;background:rgba(255,255,255,.72);color:#76717f}.hero-map .leaflet-control-attribution a{color:#6c4dff}.leaflet-goaround-icon{background:transparent!important;border:0!important}.map-marker{--marker-color:#6C4DFF;width:39px;height:47px;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);display:grid;place-items:center;background:var(--marker-color);color:#fff;border:3px solid #fff;box-shadow:0 8px 18px rgba(24,18,49,.22)}.map-marker b{transform:rotate(45deg);font-size:17px;line-height:1}.user-dot{display:block;width:20px;height:20px;border:4px solid #fff;border-radius:50%;background:#2378ff;box-shadow:0 0 0 5px rgba(35,120,255,.18),0 5px 15px rgba(35,120,255,.28)}.map-card{position:absolute;right:22px;bottom:24px;z-index:4;background:#fff;border-radius:14px;padding:10px;display:grid;grid-template-columns:124px 1fr;gap:13px;width:320px;box-shadow:var(--shadow)}.map-card img{width:124px;height:88px;object-fit:cover;border-radius:10px}.map-card h3{margin:7px 0 5px;font-size:16px}.map-card p{margin:4px 0;color:var(--muted);font-size:13px}.map-label{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);z-index:3;font-size:32px;font-weight:850;text-shadow:0 2px 10px #fff;background:rgba(255,255,255,.6);padding:3px 10px;border-radius:8px;pointer-events:none}
.section{padding:34px 0}.section-head{display:flex;align-items:baseline;gap:24px;margin-bottom:19px}.section-head h2{font-size:22px;margin:0}.section-head p{color:var(--muted);margin:0}.section-head a{margin-left:auto;color:var(--primary);font-size:13px;font-weight:750}.rail{display:grid;grid-auto-flow:column;grid-auto-columns:220px;gap:15px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 15px}.event-card{scroll-snap-align:start;border:1px solid #e8e6ee;border-radius:12px;overflow:hidden;background:#fff;min-height:255px}.event-image{height:130px;position:relative;background:#eee}.event-image img{width:100%;height:100%;object-fit:cover}.event-tag{position:absolute;left:9px;bottom:9px;background:#fff;border-radius:5px;padding:4px 7px;font-size:10px;font-weight:800}.favorite{position:absolute;right:8px;top:8px;border:0;background:rgba(0,0,0,.25);color:#fff;width:30px;height:30px;border-radius:50%}.event-body{padding:12px}.event-body h3{font-size:15px;line-height:1.28;margin:0 0 6px;min-height:38px}.event-place{font-size:12px;color:#615d68;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-meta{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:11px;color:#615d68}.pill{background:#f4f1ff;color:var(--primary);padding:5px 8px;border-radius:999px}.empty{border:1px dashed #dcd7ea;border-radius:14px;padding:30px;text-align:center;color:var(--muted);grid-column:1/-1}.compact-rail{grid-auto-columns:250px}.compact-card{display:grid;grid-template-columns:86px 1fr;border:1px solid #e8e6ee;border-radius:11px;overflow:hidden;min-height:95px}.compact-card img{width:86px;height:100%;object-fit:cover}.compact-card .event-body{padding:10px}.compact-card .event-body h3{min-height:auto;margin-bottom:5px}
.lower-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:22px;padding:18px 0 38px}.contribute{min-height:250px;border-radius:18px;background:linear-gradient(135deg,#f4efff,#fff);display:flex;align-items:center;padding:30px;overflow:hidden}.phone-art{width:160px;height:190px;position:relative;margin-right:35px}.phone{width:92px;height:170px;border:8px solid #242128;border-radius:24px;transform:rotate(8deg);margin:5px auto;background:#fff}.plus-orb{position:absolute;left:15px;bottom:0;width:65px;height:65px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-size:40px}.contribute h2{font-size:28px;margin:0}.contribute h2 span{color:var(--primary)}.contribute p{color:var(--muted);line-height:1.5}.cities-head{display:flex;align-items:center;margin-bottom:18px}.cities-head a{margin-left:auto;color:var(--primary);font-size:13px}.city-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.city-card{border:1px solid #e7e4ec;border-radius:12px;overflow:hidden;background:#fff}.city-card img{height:140px;width:100%;object-fit:cover}.city-card .body{padding:10px 12px}.city-card strong{color:var(--primary)}.city-card small{display:block;color:var(--muted);margin-top:5px}.stats{margin:0 auto 45px;width:min(var(--container),calc(100% - 36px));background:#faf9fd;border-radius:18px;padding:23px 28px;display:grid;grid-template-columns:repeat(4,1fr) 1.3fr;gap:20px;align-items:center}.stat{display:flex;gap:12px}.stat-icon{width:42px;height:42px;border-radius:12px;background:#f0ebff;color:var(--primary);display:grid;place-items:center;font-size:20px}.stat strong{display:block;font-size:18px}.stat small{color:var(--muted)}.notify{border-left:1px solid #e3dfeb;padding-left:25px;display:flex;align-items:center;justify-content:space-between}.notify button{border:0;background:var(--primary);color:#fff;border-radius:10px;padding:12px 18px}
.geo-modal{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;background:rgba(31,28,41,.48);backdrop-filter:blur(5px)}.geo-modal.open{display:flex}.geo-dialog{width:min(480px,calc(100% - 28px));background:#fff;border-radius:26px;padding:34px;text-align:center;box-shadow:var(--shadow)}.geo-dialog h2{font-size:28px;margin:15px 0 12px}.geo-dialog p{color:var(--muted);line-height:1.5}.geo-actions{display:grid;gap:10px;margin-top:20px}.geo-actions button{height:52px;border-radius:12px;border:1px solid #ddd7ed;background:#fff;font-weight:750}.geo-actions .primary{background:var(--primary);border-color:var(--primary);color:#fff}
@media(max-width:900px){.main-nav,.header-actions .cta{display:none}.hero-grid{grid-template-columns:1fr}.hero-copy{padding:36px 24px 20px}.hero-map-wrap{min-height:330px}.hero h1{font-size:40px}.lower-grid{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.notify{grid-column:1/-1;border-left:0;border-top:1px solid #e3dfeb;padding:18px 0 0}.city-grid{grid-template-columns:repeat(3,minmax(190px,1fr));overflow-x:auto}.container{width:min(100% - 28px,var(--container))}}
@media(max-width:600px){.desktop-only{display:none}.mobile-only{display:block}.header-inner{height:64px}.brand{font-size:23px}.brand-pin{width:22px;height:28px}.hero-copy{padding:26px 18px 18px}.hero h1{font-size:36px}.hero-sub{font-size:16px}.search-row{grid-template-columns:1fr 55px}.search-row .field:nth-child(2){grid-column:1/2}.categories{margin-top:25px;gap:13px}.hero-map-wrap{min-height:285px}.map-label{font-size:24px}.map-card{left:14px;right:14px;bottom:14px;width:auto;grid-template-columns:100px 1fr}.map-card img{width:100px;height:76px}.section{padding:26px 0}.section-head{display:grid;grid-template-columns:1fr auto;gap:5px}.section-head p{grid-column:1/-1;font-size:13px}.rail{grid-auto-columns:82%}.compact-rail{grid-auto-columns:86%}.lower-grid{padding-top:6px}.contribute{padding:22px}.phone-art{display:none}.city-grid{grid-template-columns:80% 80% 80%}.stats{grid-template-columns:1fr 1fr;padding:20px}.stat strong{font-size:16px}.notify{grid-column:1/-1}.cta-mobile{position:fixed;bottom:18px;right:18px;z-index:40;width:56px;height:56px;border-radius:50%;border:0;background:var(--primary);color:#fff;font-size:28px;box-shadow:var(--shadow)}}

/* ===== Correctifs de mise en page V2.1 ===== */
body{overflow-x:hidden}
.hero-grid{width:100%;max-width:none}
.hero-map.leaflet-ready{background:#eef1ec}
.hero-map.leaflet-ready::before{background:linear-gradient(90deg,rgba(255,255,255,.55) 0%,rgba(255,255,255,.18) 28%,rgba(255,255,255,0) 58%)}
.hero-map .leaflet-container,.hero-map.leaflet-container{width:100%!important;height:100%!important;background:#eef1ec}
.hero-map .leaflet-tile-container{will-change:transform}
.hero-map-wrap{overflow:hidden}
.hero-copy{min-width:0}
.categories,.rail,.city-grid{scrollbar-width:none}
.categories::-webkit-scrollbar,.rail::-webkit-scrollbar,.city-grid::-webkit-scrollbar{display:none}

@media (min-width:901px){
  .hero-grid{min-height:535px;grid-template-columns:minmax(520px,42%) minmax(0,58%)}
  .hero-copy{padding-top:48px;padding-right:36px;padding-bottom:28px}
  .hero-map-wrap{min-width:0;min-height:535px}
  .hero-map{width:100%;height:100%}
}

@media (max-width:600px){
  :root{--container:100%}
  .container{width:100%;padding-left:14px;padding-right:14px}
  .header{position:relative}
  .header-inner{height:50px;padding:0 12px;gap:10px}
  .brand{font-size:17px;letter-spacing:-.55px;white-space:nowrap}
  .brand-pin{width:16px;height:21px;margin-right:5px}
  .main-nav,.header-actions .cta{display:none}
  .header-actions{display:flex;margin-left:auto;gap:8px}
  .icon-btn{font-size:20px;padding:5px}
  .avatar{width:34px;height:34px;font-size:11px}
  .badge{top:-2px;right:-2px;font-size:8px;min-width:16px;height:16px}

  .hero{overflow:visible}
  .hero-grid{display:flex;flex-direction:column;min-height:0}
  .hero-copy{order:1;width:100%;padding:20px 14px 14px;background:#fff}
  .eyebrow{font-size:13px;margin-bottom:10px}
  .hero h1{font-size:29px;line-height:1.02;letter-spacing:-1.3px;margin-bottom:14px;max-width:310px}
  .hero-sub{font-size:13px;line-height:1.55;margin:0 0 16px;max-width:350px}

  .search-row{display:grid;grid-template-columns:1fr;gap:8px;width:100%;max-width:none;margin-top:0}
  .field,.search-button{height:45px;border-radius:10px}
  .field{padding:0 13px;font-size:13px;min-width:0}
  .field input{min-width:0;font-size:13px}
  .search-row .field:nth-child(2){grid-column:auto}
  .search-button{display:none}

  .chips{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:7px;margin:10px -14px 0;padding:0 14px 2px;scrollbar-width:none}
  .chips::-webkit-scrollbar{display:none}
  .chip{flex:0 0 auto;padding:8px 11px;border-radius:9px;font-size:12px;white-space:nowrap}
  #filters-button{display:none}

  .categories{display:flex;gap:10px;margin:17px -14px 0;padding:0 14px 8px;overflow-x:auto}
  .category{flex:0 0 58px;min-width:58px;padding:0}
  .category-icon{width:38px;height:38px;margin-bottom:6px;font-size:15px}
  .category span{font-size:9px;white-space:nowrap}

  .hero-map-wrap{order:2;width:100%;min-height:245px;height:245px;margin-top:0;background:#eef1ec}
  .hero-map{position:absolute;inset:0;width:100%;height:100%;background-position:center;background-size:cover}
  .hero-map::before{z-index:450;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.02) 35%,rgba(255,255,255,.16))}
  .hero-map::after{opacity:.35;background-size:34px 34px}
  .hero-map .leaflet-control-container{display:none}
  .map-label{left:auto;right:18px;top:39%;transform:none;font-size:21px;padding:2px 7px;background:rgba(255,255,255,.72)}
  .map-card{left:12px;right:12px;bottom:10px;width:auto;min-height:76px;padding:8px;grid-template-columns:76px minmax(0,1fr);gap:10px;border-radius:11px}
  .map-card img{width:76px;height:60px;border-radius:7px}
  .map-card h3{font-size:12px;line-height:1.25;margin:2px 0 4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .map-card p{font-size:11px;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  .section{padding:22px 0}
  .section-head{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;row-gap:3px;margin-bottom:13px;align-items:end}
  .section-head h2{font-size:18px;line-height:1.15;min-width:0}
  .section-head a{grid-column:2;grid-row:1;color:var(--primary);font-size:10px;white-space:nowrap}
  .section-head p{grid-column:1/-1;grid-row:2;font-size:10px;line-height:1.35}
  .rail{grid-auto-columns:73vw;gap:10px;margin:0 -14px;padding:2px 14px 12px}
  .event-card{min-height:0;border-radius:10px}
  .event-image{height:112px}
  .event-body{padding:9px}
  .event-body h3{font-size:13px;min-height:33px;margin-bottom:5px}
  .event-place{font-size:10px}
  .event-meta{font-size:9px;gap:5px;margin-top:9px;flex-wrap:wrap}
  .pill{padding:4px 6px}
  .favorite{width:27px;height:27px}
  .compact-rail{grid-auto-columns:79vw}
  .compact-card{grid-template-columns:78px minmax(0,1fr);min-height:86px}
  .compact-card img{width:78px;height:86px}
  .empty{padding:24px 14px;font-size:12px;line-height:1.45}

  .lower-grid{display:flex;flex-direction:column;gap:28px;padding:12px 14px 28px}
  .contribute{order:1;min-height:0;padding:23px 18px;border-radius:15px}
  .phone-art{display:none}
  .contribute h2{font-size:22px;line-height:1.1}
  .contribute p{font-size:12px;line-height:1.45;margin:15px 0}
  .contribute .cta{padding:13px 17px;border-radius:9px;font-size:12px}
  .lower-grid>section{order:2;min-width:0}
  .cities-head{margin-bottom:13px}
  .cities-head h2{font-size:18px;margin:0}
  .cities-head a{font-size:10px;white-space:nowrap}
  .city-grid{display:flex;overflow-x:auto;gap:10px;margin-right:-14px;padding-right:14px}
  .city-card{flex:0 0 72vw;border-radius:10px}
  .city-card img{height:130px}
  .city-card .body{padding:9px}
  .city-card strong{font-size:12px}
  .city-card small{font-size:10px}

  .stats{width:calc(100% - 28px);margin:0 14px 72px;padding:18px 14px;grid-template-columns:1fr 1fr;gap:17px 10px;border-radius:15px}
  .stat{gap:8px;align-items:flex-start;min-width:0}
  .stat-icon{width:34px;height:34px;flex:0 0 34px;border-radius:10px;font-size:15px}
  .stat strong{font-size:14px}
  .stat small{display:block;font-size:9px;line-height:1.35}
  .notify{grid-column:1/-1;padding:14px 0 0;gap:8px}
  .notify strong{font-size:12px}.notify small{font-size:9px}
  .notify button{padding:10px 13px;font-size:11px;white-space:nowrap}
  .cta-mobile{display:grid;place-items:center;width:50px;height:50px;right:14px;bottom:14px;font-size:24px}

  .geo-dialog{padding:25px 18px;border-radius:20px}
  .geo-dialog h2{font-size:22px}
  .geo-dialog p{font-size:13px}
}

/* Geolocation consent — desktop modal / mobile bottom sheet */
.geo-modal{
  position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;
  padding:22px;background:rgba(16,18,26,.64);backdrop-filter:blur(3px)
}
.geo-modal.open{display:flex}
.geo-dialog{
  position:relative;width:min(646px,calc(100vw - 44px));max-height:calc(100vh - 44px);overflow:auto;
  background:#fff;border-radius:28px;padding:34px 54px 26px;text-align:center;
  box-shadow:0 28px 90px rgba(25,20,55,.28)
}
.geo-handle{display:none}
.geo-close{
  position:absolute;top:20px;right:22px;width:40px;height:40px;border:0;background:transparent;
  color:#202331;font-size:34px;line-height:1;cursor:pointer;border-radius:50%
}
.geo-close:hover{background:#f5f3fa}
.geo-visual{position:relative;width:168px;height:136px;margin:0 auto 8px}
.geo-pin{
  position:absolute;z-index:3;left:59px;top:14px;width:58px;height:72px;border-radius:50% 50% 50% 0;
  transform:rotate(-45deg);background:linear-gradient(145deg,#7b4dff,#5425ee);
  box-shadow:0 12px 24px rgba(91,48,242,.25)
}
.geo-pin-hole{position:absolute;width:27px;height:27px;left:15px;top:15px;border-radius:50%;background:#fff}
.geo-map-shape{position:absolute;bottom:17px;height:41px;background:#e8e0ff;border:3px solid #fff;transform:skewX(-18deg);border-radius:10px}
.geo-map-shape-1{left:24px;width:60px;transform:skewX(-18deg) rotate(8deg)}
.geo-map-shape-2{left:70px;width:68px;transform:skewX(-8deg) rotate(-2deg)}
.geo-map-shape-3{right:17px;width:49px;transform:skewX(18deg) rotate(-7deg)}
.geo-confetti{position:absolute;color:#bd79ff;font-size:18px;font-weight:900}.geo-confetti-a{left:24px;top:35px}.geo-confetti-b{right:25px;top:48px;color:#ff5e9e}.geo-confetti-c{left:43px;top:76px;color:#dfc6ff}
.geo-dialog h2{font-size:30px;line-height:1.22;letter-spacing:-.7px;margin:4px 0 8px;color:#11131a}
.geo-subtitle{margin:0 0 24px;color:#555a6c;font-size:20px}
.geo-benefits{
  display:grid;gap:16px;padding:22px 24px;margin:0 auto 26px;border-radius:23px;text-align:left;
  background:linear-gradient(125deg,#f5f0ff 0%,#fbf9ff 48%,#f4efff 100%)
}
.geo-benefit{display:grid;grid-template-columns:50px 1fr;gap:14px;align-items:center}
.geo-benefit-icon{
  display:grid;place-items:center;width:50px;height:50px;border-radius:50%;background:#eee7ff;color:#6237f5;
  font-size:25px;font-weight:900
}
.geo-arrow-icon{transform:rotate(-30deg)}
.geo-benefit strong{display:block;color:#151722;font-size:16px;line-height:1.25;margin-bottom:3px}
.geo-benefit span{display:block;color:#575b6d;font-size:15px;line-height:1.35}
.geo-actions{display:grid;grid-template-columns:170px 1fr;gap:16px;margin:0}
.geo-actions button{height:56px;border-radius:11px;border:1px solid #dddbe5;background:#fff;color:#161820;font-size:16px;font-weight:800;cursor:pointer;box-shadow:0 4px 12px rgba(29,26,47,.06)}
.geo-actions .primary{border-color:#6533f3;background:linear-gradient(100deg,#7540ff,#5d26ed);color:#fff;box-shadow:0 12px 26px rgba(96,46,239,.22)}
.geo-actions .primary span{display:inline-block;margin-right:8px;transform:rotate(-30deg)}
.geo-note{margin:17px 0 0;color:#4f5567;font-size:13px}.geo-note span{margin-right:7px}

@media (max-width:700px){
  .geo-modal{align-items:flex-end;padding:0;background:rgba(20,21,27,.62)}
  .geo-dialog{
    width:100%;max-height:93vh;border-radius:30px 30px 0 0;padding:30px 25px 28px;
    box-shadow:0 -24px 70px rgba(20,18,40,.25)
  }
  .geo-handle{display:block;width:74px;height:7px;margin:-12px auto 19px;border-radius:999px;background:#dddde6}
  .geo-close{top:24px;right:22px;width:46px;height:46px;background:#f8f8fb;box-shadow:0 4px 15px rgba(20,20,35,.08);font-size:31px}
  .geo-visual{width:160px;height:133px;margin-bottom:7px}
  .geo-dialog h2{font-size:27px;line-height:1.28;letter-spacing:-.55px;margin-top:3px}
  .geo-subtitle{font-size:19px;margin-bottom:22px}
  .geo-benefits{gap:18px;padding:24px 20px;margin-bottom:25px;border-radius:24px}
  .geo-benefit{grid-template-columns:53px 1fr;gap:14px}
  .geo-benefit-icon{width:53px;height:53px}
  .geo-benefit strong{font-size:17px}.geo-benefit span{font-size:15px}
  .geo-actions{display:flex;flex-direction:column-reverse;gap:12px}
  .geo-actions button{width:100%;height:58px;font-size:18px}
  .geo-note{font-size:14px;line-height:1.35;margin:18px auto 0;max-width:330px}
}

@media (max-width:390px){
  .geo-dialog{padding-left:18px;padding-right:18px}
  .geo-dialog h2{font-size:23px}.geo-subtitle{font-size:17px}
  .geo-benefits{padding:18px 15px}.geo-benefit{grid-template-columns:46px 1fr}.geo-benefit-icon{width:46px;height:46px}
  .geo-benefit strong{font-size:15px}.geo-benefit span{font-size:13px}
}

/* Leaflet rendering hardening — the map must always fill the Hero pane. */
.hero-map-wrap {
  contain: layout paint;
}
#hero-map.hero-map,
#hero-map.leaflet-container {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 100% !important;
  min-height: 100% !important;
  overflow: hidden !important;
}
#hero-map .leaflet-map-pane,
#hero-map .leaflet-tile-pane,
#hero-map .leaflet-overlay-pane,
#hero-map .leaflet-shadow-pane,
#hero-map .leaflet-marker-pane,
#hero-map .leaflet-tooltip-pane,
#hero-map .leaflet-popup-pane {
  position: absolute;
  inset: 0 auto auto 0;
}
#hero-map .leaflet-tile,
#hero-map .leaflet-marker-icon,
#hero-map .leaflet-marker-shadow {
  position: absolute;
  max-width: none !important;
  max-height: none !important;
}
#hero-map .leaflet-tile-container {
  position: absolute;
  left: 0;
  top: 0;
}
#hero-map.leaflet-ready {
  background-image: none !important;
}
#hero-map.leaflet-unavailable,
#hero-map.leaflet-tile-error {
  background-image: url('../images/map-fallback.jpg');
  background-position: center;
  background-size: cover;
}

/* ===== V3.1 — marqueurs stables et catégories conformes ===== */
.leaflet-goaround-icon{
  width:48px!important;
  height:58px!important;
  margin:0!important;
  background:transparent!important;
  border:0!important;
  overflow:visible!important;
}
.map-marker{
  --marker-color:#6C4DFF;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  width:46px!important;
  height:46px!important;
  min-width:46px;
  min-height:46px;
  border-radius:50%!important;
  transform:none!important;
  background:var(--marker-color);
  color:#fff;
  border:3px solid rgba(255,255,255,.95);
  box-shadow:0 7px 18px rgba(24,18,49,.24);
  line-height:1;
}
.map-marker::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:-8px;
  width:15px;
  height:15px;
  background:var(--marker-color);
  border-right:3px solid rgba(255,255,255,.95);
  border-bottom:3px solid rgba(255,255,255,.95);
  transform:translateX(-50%) rotate(45deg);
  border-radius:0 0 4px 0;
  z-index:-1;
}
.map-marker b{
  display:block;
  transform:none!important;
  font-size:21px!important;
  line-height:1!important;
  font-weight:700;
  text-align:center;
}

@media (min-width:901px){
  .categories{
    display:grid;
    grid-template-columns:repeat(9,minmax(58px,1fr));
    gap:12px;
    width:100%;
    max-width:610px;
    margin-top:34px;
    padding:0 0 8px;
    overflow:visible;
  }
  .category{
    min-width:0;
    width:100%;
    padding:0;
  }
  .category-icon{
    width:54px;
    height:54px;
    margin:0 auto 9px;
    font-size:24px;
    border-width:1px;
  }
  .category span:last-child{
    display:block;
    font-size:12px;
    line-height:1.2;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .category-more .category-icon{
    color:#1e1b27;
    background:#f5f4f8;
    border-color:#e7e4ed;
    letter-spacing:1px;
    font-size:18px;
  }
}

@media (max-width:600px){
  .categories{
    gap:14px;
    padding-bottom:10px;
    scroll-snap-type:x proximity;
  }
  .category{
    flex:0 0 66px;
    min-width:66px;
    scroll-snap-align:start;
  }
  .category-icon{
    width:46px;
    height:46px;
    font-size:20px;
  }
  .category span:last-child{
    font-size:10px;
  }
  .map-marker{
    width:40px!important;
    height:40px!important;
    min-width:40px;
    min-height:40px;
  }
  .map-marker b{font-size:18px!important}
  .leaflet-goaround-icon{width:42px!important;height:52px!important}
}

/* ===== V3.2 — composition Hero conforme à la maquette ===== */
/* La carte se fond progressivement dans le panneau blanc de gauche. */
.hero-map-wrap::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:38%;
  z-index:700;
  pointer-events:none;
  background:linear-gradient(90deg,
    #fff 0%,
    rgba(255,255,255,.98) 18%,
    rgba(255,255,255,.88) 38%,
    rgba(255,255,255,.58) 62%,
    rgba(255,255,255,.18) 84%,
    rgba(255,255,255,0) 100%);
}
.hero-map::before{
  background:linear-gradient(90deg,
    rgba(255,255,255,.28) 0%,
    rgba(255,255,255,.10) 32%,
    rgba(255,255,255,0) 62%),
    rgba(248,246,240,.08)!important;
}
.map-label{
  left:55%;
  top:58%;
  transform:translate(-50%,-50%);
  z-index:650;
  padding:2px 10px;
  font-size:34px;
  background:rgba(255,255,255,.58);
  white-space:nowrap;
}
#hero-map .leaflet-marker-pane{z-index:680!important}
#hero-map .leaflet-shadow-pane{z-index:670!important}

@media(max-width:900px){
  .hero-map-wrap::before{display:none}
  .map-label{left:50%;right:auto;top:61%;transform:translate(-50%,-50%);font-size:25px}
}


/* ===== V3.3 — catégories lisibles, sélection et bouton Plus fonctionnel ===== */
.category{
  position:relative;
  cursor:pointer;
  border-radius:14px;
  transition:transform .18s ease, background-color .18s ease, box-shadow .18s ease, color .18s ease;
}
.category:hover{transform:translateY(-2px)}
.category-icon{
  width:62px!important;
  height:62px!important;
  font-size:29px!important;
  border:2px solid rgba(108,77,255,.10);
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease, background-color .18s ease;
}
.category.active{color:var(--primary);font-weight:750}
.category.active .category-icon{
  background:var(--primary)!important;
  color:#fff!important;
  border-color:var(--primary)!important;
  box-shadow:0 8px 20px rgba(108,77,255,.28),0 0 0 4px rgba(108,77,255,.10);
  transform:scale(1.06);
}
.category.active::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:-7px;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--primary);
  transform:translateX(-50%);
}
.category-more.active .category-icon{background:#ece8ff!important;color:var(--primary)!important;border-color:#cfc5ff!important}
.categories-panel{
  position:absolute;
  left:max(18px,calc((100vw - var(--container))/2));
  top:calc(100% - 18px);
  z-index:20;
  display:grid;
  grid-template-columns:repeat(4,minmax(82px,1fr));
  gap:14px;
  width:min(520px,calc(100vw - 36px));
  padding:18px;
  background:#fff;
  border:1px solid #ebe7f2;
  border-radius:18px;
  box-shadow:0 18px 50px rgba(25,18,51,.16);
}
.categories-panel[hidden]{display:none!important}
.categories-panel .category{padding:8px 4px}
.categories-panel .category-icon{width:54px!important;height:54px!important;font-size:24px!important}
.categories-panel .category span:last-child{font-size:12px;white-space:normal;line-height:1.2}
@media(min-width:901px){
  .categories{grid-template-columns:repeat(9,minmax(64px,1fr));max-width:650px}
  .category span:last-child{font-size:13px!important}
}
@media(max-width:600px){
  .category{flex-basis:74px;min-width:74px}
  .category-icon{width:54px!important;height:54px!important;font-size:25px!important}
  .category span:last-child{font-size:11px!important}
  .categories-panel{
    position:fixed;
    left:12px;
    right:12px;
    bottom:18px;
    top:auto;
    width:auto;
    max-height:58vh;
    overflow:auto;
    grid-template-columns:repeat(3,1fr);
    padding:18px 12px calc(18px + env(safe-area-inset-bottom));
    border-radius:22px;
    z-index:90;
  }
}

/* V3.4 — badges temporels et niveaux de prix */
.event-date-tag{
  left:9px;
  bottom:9px;
  background:rgba(255,255,255,.94);
  color:#24212b;
  border:1px solid rgba(255,255,255,.72);
  box-shadow:0 3px 10px rgba(20,15,45,.12);
  letter-spacing:.02em;
  text-transform:uppercase;
}
.price-level{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:28px;
  min-height:24px;
  padding:4px 8px;
  border-radius:999px;
  background:#f5f4f7;
  color:#625e69;
  font-weight:700;
  white-space:nowrap;
}
.event-card{
  min-height:242px;
}
.event-image{
  height:138px;
}
.event-card .event-body{
  padding:11px 12px 12px;
}
.event-card .event-meta{
  margin-top:10px;
}
@media(max-width:600px){
  .event-card{min-height:0}
  .event-image{height:118px}
  .event-date-tag{font-size:8px;padding:3px 6px;left:7px;bottom:7px}
  .price-level{min-width:24px;min-height:20px;padding:3px 6px;font-size:9px}
}

/* V3.6 — stats/footer aligned with the validated desktop mockup */
.stats{
  width:min(var(--container),calc(100% - 36px));
  min-height:112px;
  margin:0 auto 45px;
  padding:22px 28px;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr)) minmax(300px,1.35fr);
  gap:22px;
  align-items:center;
  background:#faf9fd;
  border-radius:18px;
}
.stat{
  min-width:0;
  display:grid;
  grid-template-columns:48px minmax(0,1fr);
  align-items:center;
  gap:14px;
}
.stat-icon{
  width:48px;
  height:48px;
  flex:0 0 48px;
  border-radius:14px;
  background:#f0ebff;
  color:var(--primary);
  display:grid;
  place-items:center;
}
.stat-icon svg{
  width:25px;
  height:25px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.stat-copy{min-width:0;line-height:1.15}
.stat strong{
  display:block;
  margin:0 0 6px;
  font-size:20px;
  line-height:1;
  font-weight:800;
  color:#111018;
}
.stat small{
  display:block;
  color:#6f6b79;
  font-size:13px;
  line-height:1.28;
}
.notify{
  min-height:68px;
  padding-left:28px;
  border-left:1px solid #e3dfeb;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:20px;
}
.notify-copy{min-width:0}
.notify-copy strong{
  display:block;
  margin:0 0 7px;
  font-size:16px;
  line-height:1.15;
  color:#111018;
}
.notify-copy small{
  display:block;
  font-size:13px;
  color:#777281;
  line-height:1.25;
}
.notify button{
  height:48px;
  padding:0 18px;
  border:0;
  border-radius:12px;
  background:var(--primary);
  color:#fff;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  font:inherit;
  font-weight:700;
  box-shadow:0 10px 24px rgba(108,77,255,.2);
}
.notify button svg{
  width:18px;
  height:18px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
@media(max-width:1100px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 28px}
  .notify{grid-column:1/-1;border-left:0;border-top:1px solid #e3dfeb;padding:20px 0 0}
}
@media(max-width:600px){
  .stats{width:calc(100% - 28px);margin:0 14px 72px;padding:20px 16px;grid-template-columns:1fr 1fr;gap:20px 12px;border-radius:15px}
  .stat{grid-template-columns:42px minmax(0,1fr);gap:10px}
  .stat-icon{width:42px;height:42px;border-radius:12px}
  .stat-icon svg{width:22px;height:22px}
  .stat strong{font-size:17px;margin-bottom:5px}
  .stat small{font-size:11.5px;line-height:1.25}
  .notify{grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding-top:18px}
  .notify-copy strong{font-size:14px}
  .notify-copy small{font-size:11.5px}
  .notify button{height:44px;padding:0 15px;border-radius:11px}
}

/* V3.7 — pictogrammes officiels et fiables */
.category-icon svg{width:29px;height:29px;display:block}
.category.active .category-icon svg{width:31px;height:31px}
.categories-panel .category-icon svg{width:30px;height:30px}
@media(max-width:760px){.category-icon svg{width:25px;height:25px}.category.active .category-icon svg{width:27px;height:27px}}


/* ===== V3.13 — filtres desktop, catégorie Autre et carrousels pilotables ===== */
.hero{overflow:visible}
.filters-wrap{position:relative;max-width:610px}
.filters-panel{
  position:absolute;left:0;top:calc(100% + 10px);z-index:760;width:min(590px,calc(100vw - 40px));
  padding:18px;background:#fff;border:1px solid #e7e3ef;border-radius:18px;box-shadow:0 20px 60px rgba(27,20,58,.18)
}
.filters-panel[hidden]{display:none!important}
.filters-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}
.filters-panel-head strong{display:block;font-size:17px;line-height:1.2}
.filters-panel-head span{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.filters-panel-head button{width:34px;height:34px;border:0;border-radius:50%;background:#f5f3f8;color:#24212b;font-size:24px;line-height:1}
.filters-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.filters-grid label{display:grid;gap:7px;color:#55515f;font-size:12px;font-weight:700}
.filters-grid input,.filters-grid select{width:100%;height:43px;padding:0 12px;border:1px solid #dfdbe7;border-radius:10px;background:#fff;color:#1c1921;outline:0}
.filters-grid input:focus,.filters-grid select:focus{border-color:#9d8aff;box-shadow:0 0 0 3px rgba(108,77,255,.11)}
.filter-check{display:flex;align-items:center;gap:10px;margin-top:15px;color:#37333e;font-size:13px}
.filter-check input{width:17px;height:17px;accent-color:var(--primary)}
.filters-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:17px;padding-top:15px;border-top:1px solid #efedf3}
.filters-actions button{height:42px;padding:0 16px;border-radius:10px;font-weight:750}
#filters-reset{border:1px solid #dfdbe7;background:#fff;color:#37333e}
.filters-apply{border:0;background:var(--primary);color:#fff;box-shadow:0 8px 18px rgba(108,77,255,.2)}
#filters-button.active{background:var(--soft);border-color:#cfc5ff;color:var(--primary);font-weight:750}

.rail-shell{position:relative;min-width:0}
.rail{scroll-behavior:smooth;cursor:grab;overscroll-behavior-inline:contain;touch-action:pan-y pinch-zoom}
.rail.dragging{cursor:grabbing;scroll-behavior:auto;scroll-snap-type:none;user-select:none}
.rail-nav{
  position:absolute;top:50%;z-index:8;width:42px;height:42px;border:1px solid #e4e0eb;border-radius:50%;
  display:grid;place-items:center;transform:translateY(-50%);background:rgba(255,255,255,.96);color:#342e43;
  font-size:31px;line-height:1;box-shadow:0 8px 24px rgba(29,21,58,.16);opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease
}
.rail-shell.has-overflow .rail-nav{opacity:1;pointer-events:auto}
.rail-prev{left:8px}.rail-next{right:8px}
.rail-nav:hover:not(:disabled){transform:translateY(-50%) scale(1.06);color:var(--primary)}
.rail-nav:disabled{opacity:0!important;pointer-events:none!important}

@media(max-width:900px){
  .filters-panel{position:fixed;left:14px;right:14px;top:auto;bottom:14px;width:auto;max-height:calc(100vh - 28px);overflow:auto;z-index:950}
  .rail-nav{display:none}
  .rail{cursor:auto;touch-action:pan-x pan-y}
}
@media(max-width:600px){
  .filters-panel{display:none!important}
  .filters-grid{grid-template-columns:1fr}
}
