/* ═══════════════════════════════════════════════════════════════════
   INGURU — Liquid Glass Design System
   ═══════════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Shrikhand&family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,600;12..96,800&family=Figtree:wght@400;500;600;700&display=swap');

:root {
  --p:     #e63012; --s: #ffffff;
  --p-a10: rgba(230,48,18,0.10); --p-a18: rgba(230,48,18,0.18);
  --p-a35: rgba(230,48,18,0.35); --p-a60: rgba(230,48,18,0.60);

  --bg:  #07080f; --ink: #f0f1f6;
  --ink-2: #9499b0; --ink-3: #50566d;
  --green: #22c87a; --amber: #f5a623; --red-soft: #ff6b55;

  --glass-bg:      rgba(255,255,255,0.06);
  --glass-border:  rgba(255,255,255,0.12);
  --glass-shine:   rgba(255,255,255,0.07);
  --glass-blur:    blur(28px) saturate(190%);
  --glass-blur-sm: blur(16px) saturate(160%);

  --r-sm:12px; --r-md:20px; --r-lg:28px; --r-xl:36px;
  --header-h: 58px;
  --safe-top:  env(safe-area-inset-top,    0px);
  --safe-bot:  env(safe-area-inset-bottom, 0px);
  --safe-left: env(safe-area-inset-left,   0px);
  --safe-right:env(safe-area-inset-right,  0px);

  --spring: cubic-bezier(0.34,1.42,0.64,1);
  --ease:   cubic-bezier(0.4,0,0.2,1);
  --t-fast:0.18s; --t-med:0.30s;

  --font-logo:   'Shrikhand',system-ui,sans-serif;
  --font-display:'Bricolage Grotesque',system-ui,sans-serif;
  --font-body:   'Figtree',system-ui,sans-serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;overflow:hidden;}
body{font-family:var(--font-body);background:var(--bg);color:var(--ink);
  -webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;
  touch-action:manipulation;font-size:16px;}
#app{display:flex;flex-direction:column;height:100dvh;height:100vh;position:relative;}

/* ═══ HEADER ══════════════════════════════════════════════════════ */
#header{
  position:fixed;inset:0 0 auto 0;
  height:calc(var(--header-h) + var(--safe-top));
  padding-top:var(--safe-top);
  padding-left:max(14px,var(--safe-left));
  padding-right:max(14px,var(--safe-right));
  z-index:1000;display:flex;align-items:center;justify-content:space-between;
  background:rgba(7,8,15,0.60);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--glass-border);
  box-shadow:0 1px 0 var(--glass-shine),0 8px 40px rgba(0,0,0,0.4);
}
#header::after{content:'';position:absolute;bottom:-1px;left:18%;right:18%;height:1px;
  background:linear-gradient(90deg,transparent,var(--p-a35),transparent);}

.header-left{display:flex;align-items:center;gap:10px;min-width:0;flex:1;}
.header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;}

.logo{
  font-family:var(--font-logo);
  font-size:1.55rem;
  font-weight:400; /* Shrikhand n'a qu'un seul poids */
  letter-spacing:0.01em;
  flex-shrink:0;
  color:var(--p);
  /* Contour couleur secondaire — technique paint-order pour contour propre */
  -webkit-text-stroke:3.5px var(--s);
  paint-order:stroke fill;
  text-shadow:
    0 2px 8px rgba(0,0,0,0.35),
    0 0 0 3.5px var(--s);
  transition:color var(--t-med),
             -webkit-text-stroke-color var(--t-med);
}

#feria-btn{
  display:flex;align-items:center;gap:6px;
  padding:7px 12px 7px 10px;border-radius:30px;
  cursor:pointer;border:1px solid var(--glass-border);
  background:var(--glass-bg);
  backdrop-filter:var(--glass-blur-sm);-webkit-backdrop-filter:var(--glass-blur-sm);
  color:var(--ink);font-family:var(--font-body);
  font-size:0.85rem;font-weight:600;min-height:44px;
  transition:border-color var(--t-fast),background var(--t-fast);
  min-width:0;overflow:hidden;
}
#feria-btn.open{border-color:var(--p-a35);background:var(--p-a10);}
.feria-btn-emoji{font-size:1.1rem;flex-shrink:0;}
.feria-btn-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px;}
.feria-btn-arrow{color:var(--ink-3);font-size:0.7rem;flex-shrink:0;transition:transform var(--t-fast) var(--spring);}
#feria-btn.open .feria-btn-arrow{transform:rotate(180deg);}

.icon-btn{
  width:42px;height:42px;display:flex;align-items:center;justify-content:center;
  border-radius:50%;cursor:pointer;border:1px solid var(--glass-border);
  background:var(--glass-bg);
  backdrop-filter:var(--glass-blur-sm);-webkit-backdrop-filter:var(--glass-blur-sm);
  color:var(--ink);font-size:1.1rem;
  transition:all var(--t-fast) var(--spring);touch-action:manipulation;
}
.icon-btn:active{transform:scale(0.88);background:var(--p-a18);}

.lang-wrapper{position:relative;}
.lang-menu{
  position:absolute;top:calc(100% + 10px);right:0;
  background:rgba(10,11,22,0.96);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);border-radius:var(--r-md);
  overflow:hidden;z-index:2000;
  box-shadow:0 16px 48px rgba(0,0,0,0.65);min-width:160px;
  transform:scale(0.9) translateY(-8px);opacity:0;pointer-events:none;
  transition:transform var(--t-fast) var(--spring),opacity var(--t-fast) var(--ease);
  transform-origin:top right;
}
.lang-menu:not(.hidden){transform:scale(1) translateY(0);opacity:1;pointer-events:auto;}
.lang-menu.hidden{transform:scale(0.9) translateY(-8px);opacity:0;pointer-events:none;}
.lang-menu button{
  display:flex;align-items:center;gap:10px;
  width:100%;padding:13px 16px;background:none;border:none;
  color:var(--ink);text-align:left;cursor:pointer;
  font-family:var(--font-body);font-size:0.95rem;font-weight:500;min-height:48px;
  transition:background var(--t-fast);
}
.lang-menu button:not(:last-child){border-bottom:1px solid var(--glass-border);}
.lang-menu button:active{background:var(--glass-shine);}
.lang-menu button.lang-active{color:var(--p);font-weight:700;}
.lang-menu button.lang-active::after{content:'✓';margin-left:auto;font-size:0.85rem;opacity:0.85;}

/* ═══ FESTIVAL PICKER — style Apple ═══════════════════════════════ */
#feria-panel{
  position:fixed;
  top:calc(var(--header-h) + var(--safe-top));
  left:0;right:0;z-index:950;
  padding:16px 0 24px;
  max-height:70vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:rgba(7,8,15,0.93);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--glass-border);
  box-shadow:0 24px 80px rgba(0,0,0,0.75);
  transform-origin:top center;
  transform:scaleY(0.82) translateY(-16px);
  opacity:0;pointer-events:none;
  transition:transform var(--t-med) var(--spring),opacity var(--t-med) var(--ease);
}
#feria-panel.open{transform:scaleY(1) translateY(0);opacity:1;pointer-events:auto;}

/* Section (grande / intermédiaire / petite) */
.fp-section{margin-bottom:20px;}
.fp-section:last-child{margin-bottom:0;}

.fp-section-title{
  font-size:0.75rem;font-weight:800;letter-spacing:0.1em;
  text-transform:uppercase;color:var(--ink-3);
  padding:0 18px;margin-bottom:10px;
}

/* Scroll horizontal */
.fp-scroll{
  display:flex;gap:10px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  padding:4px 18px 8px;
  scrollbar-width:none;
  scroll-snap-type:x mandatory;
}
.fp-scroll::-webkit-scrollbar{display:none;}

/* Carte feria — base */
.fp-card{
  flex-shrink:0;
  padding:13px 13px 12px;
  border-radius:18px;
  cursor:pointer;border:1px solid var(--glass-border);
  background:var(--card-gradient,var(--glass-bg));
  display:flex;flex-direction:column;align-items:flex-start;
  text-align:left;
  scroll-snap-align:start;
  transition:transform var(--t-fast) var(--spring),border-color var(--t-fast);
  touch-action:manipulation;font-family:var(--font-body);
  position:relative;overflow:hidden;
}
.fp-card::after{
  content:'';position:absolute;top:0;left:0;right:0;height:45%;
  background:linear-gradient(180deg,rgba(255,255,255,0.10) 0%,transparent 100%);
  pointer-events:none;
}
.fp-card > *{ position:relative; z-index:1; }
.fp-card:active{transform:scale(0.93);}
.fp-card-active{border-color:var(--card-p,var(--p)) !important;box-shadow:0 0 0 1px var(--card-p,var(--p-a35));}

/* Hiérarchie visuelle par catégorie */
/* Grande : carré 145px, textes généreux */
.fp-card[data-cat="large"]  { width:145px; }
/* Intermédiaire : quasi-carré 118px */
.fp-card[data-cat="medium"] { width:118px; }
/* Petite : rectangle plat 96px */
.fp-card[data-cat="small"]  { width:96px; padding:10px 10px 9px; border-radius:14px; }

/* Textes */
.fp-card-town{
  font-family:var(--font-display);font-weight:800;line-height:1.1;
  color:var(--ink);margin-bottom:3px;
}
.fp-card[data-cat="large"]  .fp-card-town { font-size:1.08rem; }
.fp-card[data-cat="medium"] .fp-card-town { font-size:0.95rem; }
.fp-card[data-cat="small"]  .fp-card-town { font-size:0.84rem; }

.fp-card-dates{color:var(--ink-3);font-weight:600;margin-bottom:5px;}
.fp-card[data-cat="large"]  .fp-card-dates { font-size:0.74rem; }
.fp-card[data-cat="medium"] .fp-card-dates { font-size:0.69rem; }
.fp-card[data-cat="small"]  .fp-card-dates { font-size:0.63rem; }

.fp-card-dist{color:var(--ink-2);font-weight:500;margin-bottom:4px;}
.fp-card[data-cat="large"]  .fp-card-dist { font-size:0.72rem; }
.fp-card[data-cat="medium"] .fp-card-dist { font-size:0.66rem; }
.fp-card[data-cat="small"]  .fp-card-dist { font-size:0.62rem; }

.fp-badge{display:inline-flex;padding:2px 8px;border-radius:20px;font-weight:700;}
.fp-card[data-cat="large"]  .fp-badge { font-size:0.70rem; }
.fp-card[data-cat="medium"] .fp-badge { font-size:0.65rem; }
.fp-card[data-cat="small"]  .fp-badge { font-size:0.60rem; padding:2px 6px; }

.fp-badge-active  {background:rgba(230,48,18,0.2);color:var(--card-p,var(--p));border:1px solid rgba(230,48,18,0.35);}
.fp-badge-live    {background:rgba(220,38,38,0.2);color:#f87171;border:1px solid rgba(220,38,38,0.4);}
.fp-badge-available{background:rgba(16,185,129,0.15);color:#34d399;border:1px solid rgba(16,185,129,0.3);font-variant-numeric:tabular-nums;letter-spacing:0.02em;}
.fp-badge-upcoming{background:rgba(245,166,35,0.12);color:var(--amber);border:1px solid rgba(245,166,35,0.25);}
.fp-badge-done    {background:rgba(255,255,255,0.04);color:var(--ink-3);border:1px solid var(--glass-border);}

.fp-card-disabled{opacity:0.45;cursor:default;pointer-events:none;}
.fp-card-disabled:hover{transform:none;}

/* ═══ MAP ══════════════════════════════════════════════════════════ */
#map{flex:1;margin-top:calc(var(--header-h) + var(--safe-top));z-index:1;will-change:transform;}

/* Attribution discrète */
.leaflet-control-attribution{
  font-size:8px !important;
  background:rgba(7,8,15,0.55) !important;color:var(--ink-3) !important;
  backdrop-filter:blur(4px);border-radius:6px 0 0 0 !important;
  padding:2px 6px !important;border:none !important;
}
.leaflet-control-attribution a{color:#4a7abf !important;}

/* Zoom en bas à gauche — calé sur le viewport comme le FAB */
.leaflet-bottom.leaflet-left{
  bottom:calc(var(--safe-bot) + 22px) !important;
  left:max(14px,var(--safe-left)) !important;
}
.leaflet-control-zoom{
  border:none !important;border-radius:var(--r-sm) !important;overflow:hidden;
  box-shadow:0 4px 20px rgba(0,0,0,0.4) !important;
  margin:0 !important;
}
.leaflet-control-zoom-in,
.leaflet-control-zoom-out{
  background:rgba(13,15,26,0.90) !important;backdrop-filter:blur(12px) !important;
  color:var(--ink) !important;border:none !important;
  border-bottom:1px solid var(--glass-border) !important;
  width:40px !important;height:40px !important;line-height:40px !important;
  font-size:1.15rem !important;transition:background var(--t-fast) !important;
}
.leaflet-control-zoom-in:hover,.leaflet-control-zoom-out:hover{background:var(--p-a18) !important;}

/* ═══ FAB STACK ════════════════════════════════════════════════════ */
.fab-stack{
  position:fixed;
  right:max(18px,var(--safe-right));
  bottom:calc(var(--safe-bot) + 22px);
  z-index:1200;
  display:flex;flex-direction:column;align-items:center;gap:12px;
}

.fab{
  width:54px;height:54px;border-radius:50%;
  border:1px solid var(--glass-border);
  background:rgba(10,12,22,0.88);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  color:var(--ink);font-size:1.35rem;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;touch-action:manipulation;
  box-shadow:0 6px 28px rgba(0,0,0,0.55),0 1px 0 rgba(255,255,255,0.08) inset;
  transition:transform var(--t-fast) var(--spring),background var(--t-fast),opacity var(--t-fast);
}
.fab:active{transform:scale(0.88);background:var(--p-a18);}
.fab.hidden{opacity:0;pointer-events:none;transform:scale(0.7);}

.fab-locate.active{background:var(--p-a18);border-color:var(--p-a35);animation:fab-pulse 2s ease infinite;}
@keyframes fab-pulse{
  0%  {box-shadow:0 0 0 0   var(--p-a35),0 6px 28px rgba(0,0,0,0.55);}
  60% {box-shadow:0 0 0 12px rgba(230,48,18,0),0 6px 28px rgba(0,0,0,0.55);}
  100%{box-shadow:0 0 0 0   rgba(230,48,18,0),0 6px 28px rgba(0,0,0,0.55);}
}

/* ═══ MARKERS ══════════════════════════════════════════════════════ */
.inguru-marker{cursor:pointer;}
.marker-bubble{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:8px 14px 9px;border-radius:30px;
  font-family:var(--font-body);text-align:center;position:relative;
  transition:transform 0.15s var(--spring);
  pointer-events:auto;touch-action:manipulation;user-select:none;
}
.marker-bubble::before{
  content:'';position:absolute;top:0;left:10%;right:10%;height:45%;
  background:rgba(255,255,255,0.18);border-radius:30px 30px 60% 60%;pointer-events:none;
}
.inguru-marker:active .marker-bubble{transform:scale(0.93);}
.mb-line1{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:800;line-height:1.2;color:#fff;}
.mb-line2{font-size:11px;font-weight:600;opacity:0.85;line-height:1.2;color:#fff;}
.marker-tail{width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;margin:0 auto;}

.m-now .marker-bubble {background:var(--p);box-shadow:0 4px 20px var(--p-a60),0 0 0 1.5px rgba(255,255,255,0.22),inset 0 1px 0 rgba(255,255,255,0.2);}
.m-now .marker-tail   {border-top:9px solid var(--p);}
.m-soon .marker-bubble{background:linear-gradient(135deg,#c07a00,#f5a623);box-shadow:0 4px 14px rgba(245,166,35,0.5),0 0 0 1.5px rgba(255,255,255,0.18),inset 0 1px 0 rgba(255,255,255,0.2);}
.m-soon .marker-tail  {border-top:9px solid #f5a623;}
.m-later .marker-bubble{background:linear-gradient(135deg,#1e3a6e,#2563eb);box-shadow:0 4px 14px rgba(37,99,235,0.45),0 0 0 1.5px rgba(255,255,255,0.15),inset 0 1px 0 rgba(255,255,255,0.15);}
.m-later .marker-tail {border-top:9px solid #2563eb;}

.marker-live-dot{
  display:inline-block;width:9px;height:9px;border-radius:50%;
  background:#fff;margin-right:4px;flex-shrink:0;
  animation:live-pulse 1.6s ease-out infinite;
}
@keyframes live-pulse{
  0%  {box-shadow:0 0 0 0   rgba(255,255,255,0.8);}
  60% {box-shadow:0 0 0 8px rgba(255,255,255,0);}
  100%{box-shadow:0 0 0 0   rgba(255,255,255,0);}
}

.service-marker-icon{
  width:36px;height:36px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:17px;line-height:1;
  border:2.5px solid rgba(255,255,255,0.9);
  box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 1px rgba(0,0,0,0.06);
  cursor:default;pointer-events:none;
}

.user-location-wrapper{
  position:relative;
  width:60px;height:70px;
  transform-origin:30px 60px;
  will-change:transform;
}
.user-cone{
  position:absolute;
  left:8px;top:4px;
  width:44px;height:56px;
  background:radial-gradient(ellipse at 50% 100%,rgba(59,130,246,0.55),rgba(59,130,246,0.08) 65%,transparent 100%);
  clip-path:polygon(50% 100%,5% 0%,95% 0%);
}
.user-dot{
  position:absolute;
  left:21px;top:51px;
  width:18px;height:18px;
  background:radial-gradient(circle at 35% 35%,#60a5fa,#1d4ed8);
  border:2.5px solid white;border-radius:50%;
  box-shadow:0 0 0 6px rgba(59,130,246,0.22),0 3px 10px rgba(59,130,246,0.5);
}

/* ═══ POPUP ═══════════════════════════════════════════════════════ */
/* Variables locales popup (injectées par JS selon la feria) */
.ev-popup{
  --popup-p: var(--p); --popup-s: var(--s);
  --popup-p-a18: var(--p-a18); --popup-p-a35: var(--p-a35); --popup-p-a60: var(--p-a60);
  position:fixed;z-index:1600;
  transition:opacity var(--t-med) var(--ease),transform var(--t-med) var(--spring);
  transform-origin:bottom center;
}
.ev-popup.hidden {opacity:0;transform:scale(0.88) translateY(8px);pointer-events:none;}
.ev-popup.visible{opacity:1;transform:scale(1) translateY(0);}

.ev-popup-inner{
  position:relative;
  background:rgba(8,9,18,0.87);
  backdrop-filter:blur(32px) saturate(210%);-webkit-backdrop-filter:blur(32px) saturate(210%);
  border:1px solid rgba(255,255,255,0.13);border-radius:22px;
  box-shadow:0 2px 0 rgba(255,255,255,0.09) inset,0 -1px 0 rgba(0,0,0,0.4) inset,
             0 28px 70px rgba(0,0,0,0.75),0 4px 16px rgba(0,0,0,0.5);
  overflow:hidden;
}
.ev-popup-inner::before{
  content:'';position:absolute;inset:0;border-radius:22px;
  background:linear-gradient(160deg,rgba(255,255,255,0.07) 0%,transparent 45%);
  pointer-events:none;z-index:0;
}

.ev-popup-arrow{
  position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);
  width:0;height:0;
  border-left:11px solid transparent;border-right:11px solid transparent;
  border-top:11px solid rgba(8,9,18,0.90);
  filter:drop-shadow(0 3px 4px rgba(0,0,0,0.35));
}
.ev-popup.arrow-up .ev-popup-arrow{
  bottom:auto;top:-10px;border-top:none;border-bottom:11px solid rgba(8,9,18,0.90);
}

/* Bouton fermer — toujours à droite */
.ev-popup-close{
  position:absolute;
  top:12px; right:12px;       /* même valeur → coins équilibrés */
  width:30px;height:30px;border-radius:50%;
  background:rgba(255,255,255,0.10);border:1px solid rgba(255,255,255,0.14);
  color:var(--ink-2);font-size:0.78rem;
  cursor:pointer;z-index:10;
  display:flex;align-items:center;justify-content:center;
  transition:background var(--t-fast),color var(--t-fast);
}
.ev-popup-close:hover{background:rgba(255,255,255,0.18);color:var(--ink);}
.ev-popup-close:active{transform:scale(0.88);}

.ev-popup-content{
  position:relative;z-index:1;
  padding:12px 18px 0;
  overflow:hidden;
  display:flex;flex-direction:column;
}
.popup-body-scroll{flex:1;overflow-y:auto;min-height:0;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.15) transparent;padding-bottom:14px;}
.popup-body-scroll::-webkit-scrollbar{width:3px;}
.popup-body-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:2px;}
.popup-btn-wrap{flex-shrink:0;padding:10px 0 20px;}

/* ── Mobile < 640px : moitié basse ─────────────────────────────── */
@media (max-width:639px){
  .ev-popup{
    position:fixed !important;bottom:0 !important;left:0 !important;right:0 !important;
    top:auto !important;width:100% !important;
    max-height:50vh !important;
    transform-origin:bottom center !important;
  }
  .ev-popup.hidden {transform:translateY(105%) !important;opacity:1 !important;}
  .ev-popup.visible{transform:translateY(0)     !important;opacity:1 !important;}
  .ev-popup-inner{border-radius:22px 22px 0 0 !important;border-bottom:none !important;
    max-height:50vh;display:flex;flex-direction:column;
    padding-bottom:max(8px,var(--safe-bot));}
  .ev-popup-content{flex:1;overflow:hidden;}
  .popup-venue{margin-top:25px !important;}
  .ev-popup-arrow{display:none !important;}
  .ev-popup-close{width:36px !important;height:36px !important;font-size:1rem !important;
    top:12px !important;right:12px !important;
    background:rgba(255,255,255,0.13) !important;border-color:rgba(255,255,255,0.2) !important;
    color:var(--ink) !important;}
}

/* ── Desktop ≥ 640px : centré ───────────────────────────────────── */
@media (min-width:640px){
  .ev-popup{
    top:50% !important;left:50% !important;bottom:auto !important;
    transform:translate(-50%,-50%) scale(0.9) !important;
    width:clamp(320px,35vw,480px) !important;
    max-width:calc(100vw - 32px) !important;
    pointer-events:none;
  }
  .ev-popup.hidden {opacity:0 !important;transform:translate(-50%,-50%) scale(0.88) !important;}
  .ev-popup.visible{opacity:1 !important;transform:translate(-50%,-50%) scale(1) !important;pointer-events:auto;}
  .ev-popup-inner{max-height:78vh;display:flex;flex-direction:column;}
  .ev-popup-content{flex:1;overflow:hidden;}
  .ev-popup-arrow{display:none;}
}

/* ── Éléments internes popup ───────────────────────────────────── */
.popup-venue{font-size:0.7rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--popup-p);margin-top:25px;margin-bottom:5px;}
.popup-title{font-family:var(--font-display);font-size:1.15rem;font-weight:800;line-height:1.22;letter-spacing:-0.02em;color:var(--ink);margin-bottom:10px;padding-right:36px;}
.popup-date-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:20px;font-size:0.78rem;font-weight:600;background:var(--popup-p-a18);color:var(--ink-2);border:1px solid var(--popup-p-a35);margin-bottom:10px;}
.popup-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px;font-size:0.88rem;color:var(--ink-2);}
.popup-desc{font-size:0.88rem;line-height:1.6;color:#b8bcce;margin-bottom:10px;}
.popup-payment{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:13px;}
.ppill{display:inline-flex;align-items:center;padding:5px 12px;border-radius:20px;font-size:0.8rem;font-weight:700;line-height:1;text-decoration:none;white-space:nowrap;}
.ppill-paid{background:var(--popup-p);color:var(--popup-s);}
.ppill-ticket{background:var(--popup-p-a35);color:var(--popup-p);border:1px solid var(--popup-p-a60);}
.ppill-ticketing{background:var(--popup-p-a35);color:var(--popup-p);border:1px solid var(--popup-p-a60);gap:5px;}
.ppill-ticketing-onsite{background:var(--popup-p-a18);color:var(--popup-p);border:1px solid var(--popup-p-a35);}
.popup-streaming{display:flex;align-items:center;gap:8px;margin-bottom:13px;}
.stream-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;flex-shrink:0;transform:translateZ(0);transition:opacity 0.15s;}
.stream-btn:hover{opacity:0.8;}
.stream-btn:active{transform:translateZ(0) scale(0.88);}
.popup-dist{display:flex;align-items:center;gap:10px;padding:10px 13px;background:rgba(255,255,255,0.045);border:1px solid rgba(255,255,255,0.08);border-radius:14px;margin-bottom:13px;font-size:0.87rem;}
.popup-dist-icon{font-size:1.2rem;flex-shrink:0;}
.popup-dist-main{font-weight:700;color:var(--ink);font-size:0.9rem;}
.popup-dist-sub{font-size:0.74rem;color:var(--ink-3);}
.popup-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:13px;}
.popup-divider{height:1px;background:rgba(255,255,255,0.07);margin:12px 0;}

.popup-btn-row{display:flex;gap:9px;align-items:center;}

.popup-nav-round{
  width:52px;height:52px;border-radius:50%;flex-shrink:0;
  background:var(--popup-p);color:var(--popup-s);
  border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  position:relative;overflow:hidden;
  box-shadow:0 4px 20px var(--popup-p-a60);
  touch-action:manipulation;
  transition:transform 0.15s var(--spring);
}
.popup-nav-round::before{content:'';position:absolute;top:0;left:0;right:0;height:45%;background:rgba(255,255,255,0.15);pointer-events:none;}
.popup-nav-round:active{transform:scale(0.90);}

.popup-share-btn{
  flex:1;display:flex;align-items:center;justify-content:center;gap:7px;
  padding:14px;border:1px solid var(--glass-border);border-radius:14px;
  background:rgba(255,255,255,0.07);color:var(--ink);
  font-family:var(--font-body);font-size:0.95rem;font-weight:700;
  cursor:pointer;position:relative;overflow:hidden;
  touch-action:manipulation;min-height:48px;
  transition:background 0.15s,transform 0.15s var(--spring);
}
.popup-share-btn::before{content:'';position:absolute;top:0;left:0;right:0;height:45%;background:rgba(255,255,255,0.07);pointer-events:none;}
.popup-share-btn:active{transform:scale(0.95);background:rgba(255,255,255,0.11);}

/* Badges */
.badge{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border-radius:20px;font-size:0.82rem;font-weight:700;}
.badge-now {background:var(--popup-p);color:var(--popup-s);box-shadow:0 2px 12px var(--popup-p-a60);}
.badge-next{background:rgba(245,166,35,0.15);color:var(--amber);border:1px solid rgba(245,166,35,0.3);}
.badge-done{background:rgba(255,255,255,0.05);color:var(--ink-3);border:1px solid var(--glass-border);}
.tag      {padding:5px 12px;border-radius:20px;font-size:0.8rem;font-weight:600;background:rgba(255,255,255,0.05);color:var(--ink-3);border:1px solid var(--glass-border);}
.tag-free {background:rgba(34,200,122,0.12);color:var(--green);border-color:rgba(34,200,122,0.28);}
.countdown        {color:var(--amber);font-weight:700;}
.countdown-running{color:var(--red-soft);font-weight:700;}
.schedule-label{font-size:0.68rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-3);margin:4px 0 10px;}
.schedule-scroll{overflow-y:visible;}
.schedule-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:2px;}
.schedule-day{font-size:0.68rem;font-weight:700;letter-spacing:0.06em;text-transform:capitalize;color:var(--popup-p);opacity:0.85;padding:8px 11px 4px;margin-top:4px;}
.schedule-item {display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border-radius:var(--r-sm);margin-bottom:4px;border:1px solid transparent;font-size:0.88rem;}
.schedule-item.is-active{background:var(--popup-p-a18);border-color:var(--popup-p-a35);}
.schedule-item.is-done  {opacity:0.42;}
.schedule-time {color:var(--ink-3);font-size:0.8rem;font-weight:600;white-space:nowrap;flex-shrink:0;padding-top:1px;}
.schedule-title{color:var(--ink);line-height:1.35;}

/* ═══ LOADING / ERROR ═════════════════════════════════════════════ */
.loading{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:9999;flex-direction:column;}
.loading.hidden{display:none;}
.loading-logo{
  font-family:var(--font-logo);
  font-size:3.2rem;font-weight:400;
  letter-spacing:0.01em;margin-bottom:28px;
  color:var(--p);
  -webkit-text-stroke:5px var(--s);
  paint-order:stroke fill;
  text-shadow:0 3px 16px rgba(0,0,0,0.4),0 0 0 5px var(--s);
  animation:pulse-logo 2s ease infinite;
}
@keyframes pulse-logo{0%,100%{opacity:1;}50%{opacity:0.5;}}
.loading-inner{text-align:center;}
.spinner{width:36px;height:36px;border:2.5px solid rgba(255,255,255,0.08);border-top-color:var(--p);border-radius:50%;animation:spin 0.7s linear infinite;margin:0 auto 14px;}
@keyframes spin{to{transform:rotate(360deg);}}
#loading-text{color:var(--ink-3);font-size:0.9rem;font-weight:500;}

.error-screen{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:9998;padding:24px;}
.error-screen.hidden{display:none;}
.error-icon{font-size:2.8rem;}
#error-text{color:var(--ink-2);text-align:center;max-width:300px;font-size:0.95rem;line-height:1.55;}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:14px 20px;border:none;border-radius:var(--r-md);font-family:var(--font-body);font-size:0.92rem;font-weight:700;cursor:pointer;transition:transform var(--t-fast) var(--spring);touch-action:manipulation;min-height:48px;position:relative;overflow:hidden;}
.btn::before{content:'';position:absolute;top:0;left:0;right:0;height:45%;background:rgba(255,255,255,0.12);pointer-events:none;}
.btn:active{transform:scale(0.94);}
.btn-primary{background:var(--p);color:var(--s);box-shadow:0 4px 20px var(--p-a60);}

/* ═══ SCRIM ═══════════════════════════════════════════════════════ */
#scrim{position:fixed;inset:0;z-index:900;background:rgba(0,0,0,0.45);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity var(--t-med) var(--ease);}
#scrim.visible{opacity:1;pointer-events:auto;}

/* ═══ TOAST ═══════════════════════════════════════════════════════ */
.inguru-toast{
  position:fixed;bottom:90px;left:50%;
  transform:translateX(-50%) translateY(12px);
  background:rgba(30,35,55,0.96);backdrop-filter:blur(16px);
  border:1px solid var(--glass-border);color:var(--ink);
  font-size:0.88rem;font-weight:500;
  padding:11px 22px;border-radius:30px;
  box-shadow:0 8px 32px rgba(0,0,0,0.5);
  opacity:0;pointer-events:none;
  transition:opacity 0.2s,transform 0.2s;
  z-index:9000;max-width:80vw;text-align:center;
}
.inguru-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ═══ RESPONSIVE ══════════════════════════════════════════════════ */
@media (max-height:500px){:root{--header-h:48px;}}

/* ═══ MAP DARK MODE — CSS filter sur les tuiles ════════════════════ */
/* Appliqué par JS sur .leaflet-tile-pane, repris ici pour les nouvelles tuiles */
body.map-dark .leaflet-tile-pane {
  filter: invert(100%) hue-rotate(180deg) brightness(0.85) contrast(0.9) saturate(0.8) !important;
}
/* Les marqueurs et contrôles ne doivent pas être invertis */
body.map-dark .leaflet-marker-pane,
body.map-dark .leaflet-shadow-pane,
body.map-dark .leaflet-overlay-pane,
body.map-dark .leaflet-control-container {
  filter: none !important;
}

.fp-empty{
  padding:32px 18px;
  text-align:center;
  font-size:0.88rem;
  color:var(--ink-3);
  line-height:1.5;
}

/* ═══ FESTIVAL SEARCH ═════════════════════════════════════════════ */
.fp-search-wrap {
  padding: 0 18px 14px;
  position: relative;
  display: flex;
  align-items: center;
}
.fp-search {
  width: 100%;
  padding: 10px 14px 10px 38px;
  border-radius: 30px;
  border: 1px solid var(--glass-border);
  background: rgba(255,255,255,0.07);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 0.9rem;
  outline: none;
  transition: border-color var(--t-fast), background var(--t-fast);
}
.fp-search::placeholder { color: var(--ink-3); }
.fp-search:focus {
  border-color: var(--p-a35);
  background: rgba(255,255,255,0.10);
}
.fp-search-icon {
  position: absolute;
  left: 30px;
  top: 0; bottom: 14px;
  margin: auto 0;
  height: 1em;
  display: flex; align-items: center;
  font-size: 0.9rem; color: var(--ink-3); pointer-events: none;
}

/* ── Écran aucun événement disponible ─────────────────────────── */
#no-events {
  display: none;
  position: fixed;
  inset: 0;
  background: var(--bg);
  z-index: 9000;
  align-items: center;
  justify-content: center;
}
#no-events.visible {
  display: flex;
}
.no-events-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  padding: 40px 24px;
  text-align: center;
}
#no-events-msg {
  font-family: var(--font-body);
  font-size: 1.1rem;
  color: var(--ink-2);
  max-width: 260px;
  line-height: 1.5;
  margin: 0;
}
.no-events-rooster {
  position: relative;
  display: inline-flex;
  align-items: flex-end;
  font-size: 5rem;
  user-select: none;
}
.rooster-emoji {
  display: inline-block;
  animation: rooster-nod 3s ease-in-out infinite;
  transform-origin: bottom center;
}
.rooster-z {
  position: absolute;
  font-family: var(--font-body);
  font-weight: 800;
  color: var(--ink-3);
  opacity: 0;
  animation: rooster-z-float 3s ease-in-out infinite;
}
.rooster-z.z1 { font-size: 1.1rem; bottom: 70%; left: 68%; animation-delay: 0s;    }
.rooster-z.z2 { font-size: 1.5rem; bottom: 90%; left: 78%; animation-delay: 0.8s;  }
.rooster-z.z3 { font-size: 2rem;   bottom: 110%; left: 82%; animation-delay: 1.6s; }

@keyframes rooster-nod {
  0%, 100% { transform: rotate(0deg);   }
  20%       { transform: rotate(-6deg);  }
  40%       { transform: rotate(3deg);   }
  60%       { transform: rotate(-4deg);  }
  80%       { transform: rotate(2deg);   }
}
@keyframes rooster-z-float {
  0%   { opacity: 0;   transform: translateY(0)     scale(0.7); }
  20%  { opacity: 0.9; transform: translateY(-6px)  scale(1);   }
  80%  { opacity: 0.5; transform: translateY(-18px) scale(1.1); }
  100% { opacity: 0;   transform: translateY(-26px) scale(0.8); }
}
