/* ===== Ça Votive ! — design éditorial, responsive (mobile → bureau) ===== */
@font-face{font-family:"Fraunces";font-weight:400;font-style:normal;font-display:swap;src:url("fonts/fraunces-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Fraunces";font-weight:600;font-style:normal;font-display:swap;src:url("fonts/fraunces-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Figtree";font-weight:400;font-style:normal;font-display:swap;src:url("fonts/figtree-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Figtree";font-weight:500;font-style:normal;font-display:swap;src:url("fonts/figtree-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Figtree";font-weight:600;font-style:normal;font-display:swap;src:url("fonts/figtree-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Figtree";font-weight:700;font-style:normal;font-display:swap;src:url("fonts/figtree-latin-700-normal.woff2") format("woff2")}

:root{
  --bg:#f6f6f7;--s:#fff;--ink:#1c1d21;--ink2:#5d606b;--mut:#9ea1ab;--line:#ececf0;--dark:#26272b;
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;
  --safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);
  --barre:64px;--gap:20px;
  --g-rue:linear-gradient(140deg,#ffa573 0%,#e9526e 100%);
  --g-arenes:linear-gradient(140deg,#f7c862 0%,#e0813a 100%);
  --g-tradition:linear-gradient(140deg,#c58bf2 0%,#7c5ae0 100%);
  --g-musique:linear-gradient(140deg,#ff9bbd 0%,#e0508f 100%);
  --g-convivialite:linear-gradient(140deg,#7ed8a8 0%,#2f9b78 100%);
  --g-autre:linear-gradient(140deg,#b9bdcc 0%,#7f869c 100%);
  --g-jeunes:linear-gradient(140deg,#8fd0ff 0%,#4a6cf0 100%);
}
.cat-rue{--g:var(--g-rue);--bt:#e5ebfd;--tt:#3a50b4}
.cat-arenes{--g:var(--g-arenes);--bt:#ffeec8;--tt:#946400}
.cat-tradition{--g:var(--g-tradition);--bt:#f2e4fb;--tt:#7a3fb0}
.cat-musique{--g:var(--g-musique);--bt:#fde3ec;--tt:#b0305f}
.cat-convivialite{--g:var(--g-convivialite);--bt:#dcf3e6;--tt:#2c7a52}
.cat-autre{--g:var(--g-autre);--bt:#ececf1;--tt:#555a66}
.cat-jeunes{--g:var(--g-jeunes);--bt:#dfeeff;--tt:#2c55b8}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.45 var(--sans);user-select:none;-webkit-user-select:none;
  -webkit-touch-callout:none;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;text-rendering:optimizeLegibility}
input{user-select:text;-webkit-user-select:text}
.selectable{user-select:text;-webkit-user-select:text}
button{font:inherit;color:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}
a{color:inherit}
[hidden]{display:none!important}
svg.ic{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
:focus-visible{outline:3px solid #6b7cff;outline-offset:2px}

/* ---------- barre supérieure ---------- */
.bar{position:fixed;z-index:50;top:0;left:0;right:0;padding-top:var(--safe-t);background:rgba(246,246,247,.88);
  -webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px)}
.bar .in{max-width:1160px;margin:0 auto;height:var(--barre);padding:0 var(--gap);display:flex;align-items:center;gap:10px}
.marque{display:flex;flex-direction:row;align-items:center;gap:11px;border:0;background:none;padding:0;text-align:left;margin-right:auto;min-height:44px}
.marque .logo-mark{height:38px;width:auto;display:block;flex:none}
.marque .txt{display:flex;flex-direction:column;align-items:flex-start;justify-content:center}
.marque b{font:600 23px/1 var(--serif);letter-spacing:-.025em}
.marque small{font:700 9.5px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--mut);margin-top:5px}
.ibtn{width:44px;height:44px;border-radius:50%;border:0;background:transparent;display:grid;place-items:center;color:var(--ink);position:relative;transition:background .15s,transform .1s}
.ibtn:active{background:rgba(0,0,0,.07);transform:scale(.92)}
.ibtn.on{background:var(--dark);color:#fff}
.nav,.sf{display:none}
.nav button{border:0;background:none;padding:10px 18px;border-radius:999px;font:600 15px var(--sans);color:var(--ink2);min-height:44px}
.nav button.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(20,22,40,.07)}
.nav .pt{position:absolute;margin:-8px 0 0 4px;width:7px;height:7px;border-radius:50%;background:#e9526e}
.sf{align-items:center;gap:10px;height:44px;width:290px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:0 16px;color:var(--mut);font:500 15px var(--sans);text-align:left}
.sf svg{width:19px;height:19px}

/* ---------- barre d'onglets (mobile) ---------- */
.tabbar{position:fixed;z-index:50;left:0;right:0;bottom:0;display:flex;justify-content:space-around;padding:4px 8px calc(var(--safe-b) + 4px);
  background:rgba(255,255,255,.94);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.tabbar button{flex:1;min-height:54px;border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--mut);font:600 10.5px var(--sans);position:relative}
.tabbar button svg{width:24px;height:24px}
.tabbar button.on{color:var(--ink)}
.tabbar button.on svg{stroke-width:2.4}
.tabbar button:active{transform:scale(.94)}
.tabbar .pt{position:absolute;top:8px;left:calc(50% + 6px);width:8px;height:8px;border-radius:50%;background:#e9526e;border:2px solid #fff}

/* ---------- colonne principale ---------- */
main{max-width:1160px;margin:0 auto;outline:none;padding:calc(var(--safe-t) + var(--barre) + 10px) var(--gap) calc(var(--safe-b) + 92px)}
.h-hero{font:400 clamp(35px,7.4vw,66px)/1.03 var(--serif);letter-spacing:-.03em;margin:14px 0 12px;max-width:17ch}
.lead{color:var(--ink2);font:500 16.5px/1.5 var(--sans);margin:0 0 22px;max-width:50ch}
.stit{font:600 24px/1.2 var(--serif);letter-spacing:-.015em;margin:38px 0 14px;display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.stit small{font:600 13px var(--sans);color:var(--mut);letter-spacing:0}
.vide{background:#fff;border-radius:28px;padding:34px 22px;text-align:center;color:var(--ink2)}
.vide .emoji{font-size:38px;line-height:1}
.vide b{display:block;font:600 21px var(--serif);color:var(--ink);margin:12px 0 6px}
.filtres{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:6px;align-items:center}

/* ---------- contrôles ---------- */
.seg{display:inline-flex;background:#fff;border-radius:999px;padding:4px;gap:2px;max-width:100%;overflow-x:auto;scrollbar-width:none;box-shadow:inset 0 0 0 1px var(--line)}
.seg::-webkit-scrollbar{display:none}
.seg button{border:0;background:none;padding:0 17px;min-height:40px;border-radius:999px;font:600 14px var(--sans);color:var(--ink2);white-space:nowrap;transition:background .15s,color .15s}
.seg button:active{transform:scale(.96)}
.seg button.on{background:var(--dark);color:#fff}
.datepill{display:inline-flex;align-items:center;gap:6px;padding:0 6px 0 14px;border-radius:999px;min-height:40px;color:var(--ink2);cursor:pointer}
.datepill input{border:0;background:transparent;font:600 14px var(--sans);color:inherit;min-height:40px;padding:0 6px;outline:none;max-width:140px}
.datepill.on{background:var(--dark);color:#fff}
.datepill.on input{color-scheme:dark}
.item .jr{margin-top:6px;font:600 13px/1.35 var(--sans);color:var(--tt)}
.pin.calme,.pin.passee.calme{background:#fff;color:var(--ink);border-color:var(--dark)}
.cats{display:flex;gap:14px;overflow-x:auto;margin:0 calc(-1*var(--gap));padding:4px var(--gap) 8px;scrollbar-width:none;scroll-padding:0 var(--gap);-webkit-overflow-scrolling:touch}
.cats::-webkit-scrollbar,.stories::-webkit-scrollbar{display:none}
.cat{flex:none;width:76px;border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;gap:8px;font:600 12px/1.2 var(--sans);color:var(--mut);text-align:center}
.cat .sq{width:68px;height:68px;border-radius:22px;background:#fff;display:grid;place-items:center;color:var(--ink);box-shadow:0 1px 2px rgba(20,22,40,.05);transition:transform .12s,background .15s,color .15s}
.cat .sq svg{width:26px;height:26px;stroke-width:1.8}
.cat:active .sq{transform:scale(.93)}
.cat.on .sq{background:var(--dark);color:#fff}
.cat.on{color:var(--ink)}
.cats.grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));margin:0;padding:0;overflow:visible;row-gap:14px}
.btn{display:flex;align-items:center;justify-content:center;gap:9px;min-height:50px;padding:0 24px;border:0;border-radius:999px;background:var(--dark);color:#fff;font:600 15px var(--sans);text-decoration:none;transition:transform .1s}
.btn:active{transform:scale(.98)}
.btn svg{width:19px;height:19px}
.btn.sec{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.btn.fav-on svg{fill:currentColor}
.tag{display:inline-block;padding:4px 10px;border-radius:8px;background:var(--bt);color:var(--tt);font:700 10.5px/1.25 var(--sans);letter-spacing:.09em;text-transform:uppercase;white-space:nowrap}

/* ---------- affiche (vignette sans photo) ---------- */
.poster,.story,.dhero,.une{--motif:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200' fill='none' stroke='white' stroke-opacity='.34' stroke-width='1.6'%3E%3Ccircle cx='100' cy='100' r='26'/%3E%3Ccircle cx='100' cy='100' r='50'/%3E%3Ccircle cx='100' cy='100' r='74'/%3E%3Ccircle cx='100' cy='100' r='98'/%3E%3C/svg%3E")}
.poster{position:relative;overflow:hidden;border-radius:24px;background:var(--g);color:#fff;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none}
.poster::before,.story::before,.dhero::before,.une::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--motif) right -34% bottom -44%/125% no-repeat}
.poster.sm{width:96px;height:96px}
.poster .nu{font:400 38px/1 var(--serif);letter-spacing:-.04em}
.poster .mo{font:700 10.5px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;opacity:.92;margin-top:6px}

.hero-grid{display:block}
.une{position:relative;overflow:hidden;isolation:isolate;border:0;border-radius:36px;min-height:350px;padding:26px 28px 28px;gap:24px;color:#fff;text-align:left;display:flex;flex-direction:column;justify-content:space-between;
  background:var(--g);transition:transform .2s,box-shadow .2s;box-shadow:0 18px 46px rgba(20,22,40,.14)}
.une::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 40%,rgba(12,14,24,.5))}
.une:active{transform:scale(.985)}
@media(hover:hover){.une:hover{transform:translateY(-3px);box-shadow:0 24px 56px rgba(20,22,40,.2)}}
.une .et{align-self:flex-start;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.92);color:var(--ink);font:700 11px var(--sans);letter-spacing:.12em;text-transform:uppercase}
.une .nu{font:400 76px/.9 var(--serif);letter-spacing:-.05em}
.une .mo{font:700 12.5px var(--sans);letter-spacing:.2em;text-transform:uppercase;opacity:.92;margin-top:8px}
.une .tt{font:400 28px/1.12 var(--serif);letter-spacing:-.02em;margin-top:18px}
.une .cc{display:flex;align-items:center;gap:8px;font:600 14.5px var(--sans);margin-top:8px;opacity:.95}
.une .cc svg{width:17px;height:17px}

/* ---------- liste de fêtes ---------- */
.liste{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
.item{display:grid;grid-template-columns:minmax(0,1fr) 96px;gap:14px;align-items:stretch;background:#fff;border-radius:28px;padding:14px;border:0;width:100%;text-align:left;color:var(--ink);
  cursor:pointer;transition:transform .15s,box-shadow .2s;box-shadow:0 1px 2px rgba(20,22,40,.04)}
.item:active{transform:scale(.985)}
.item.surligne{box-shadow:0 0 0 2px var(--dark)}
.item .tx{display:flex;flex-direction:column;min-width:0}
.item .tt{font:600 17px/1.28 var(--sans);letter-spacing:-.012em;overflow-wrap:anywhere}
.item .cm{display:flex;align-items:center;gap:6px;margin-top:6px;color:var(--ink2);font:500 13.5px var(--sans)}
.item .cm svg{width:15px;height:15px;color:var(--mut)}
.item .meta{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:12px;flex-wrap:wrap}
.item .dt{color:var(--mut);font:500 12.5px var(--sans)}
.item .bm{margin-left:auto;margin-right:-8px;margin-bottom:-6px;color:var(--mut)}
.item .bm.on{color:var(--ink)}
.item .bm.on svg{fill:currentColor}
.item .poster{width:96px;height:100%;min-height:96px}

/* ---------- rendez-vous (cartes verticales) ---------- */
.stories{display:flex;gap:12px;overflow-x:auto;margin:0 calc(-1*var(--gap));padding:2px var(--gap) 12px;scroll-snap-type:x proximity;scroll-padding:0 var(--gap);scrollbar-width:none;-webkit-overflow-scrolling:touch}
.story{flex:none;width:160px;height:232px;border-radius:30px;position:relative;overflow:hidden;border:0;padding:14px;text-align:left;color:#fff;display:flex;flex-direction:column;justify-content:space-between;
  background:var(--g);isolation:isolate;scroll-snap-align:start;transition:transform .15s}
.story::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 38%,rgba(12,14,24,.56))}
.story:active{transform:scale(.97)}
.story .ib{width:38px;height:38px;border-radius:13px;background:rgba(255,255,255,.93);color:var(--ink);display:grid;place-items:center}
.story .ib svg{width:20px;height:20px;stroke-width:1.9}
.story .hh{font:600 13px var(--sans);opacity:.92}
.story .tt{font:600 15.5px/1.25 var(--sans);margin-top:4px}
.story .cc{font:500 12.5px var(--sans);opacity:.86;margin-top:3px}

/* ---------- détail d'une fête ---------- */
body[data-vue="detail"] .bar{display:none}
.det{display:block}
.dhero{position:relative;overflow:hidden;isolation:isolate;background:var(--g);color:#fff;margin:calc(-1*(var(--safe-t) + var(--barre) + 10px)) calc(-1*var(--gap)) 0;
  padding:calc(var(--safe-t) + 14px) var(--gap) 58px;min-height:290px;display:flex;flex-direction:column;justify-content:space-between}
.dhero .top{display:flex;justify-content:space-between}
.dhero .rond{width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.94);color:var(--ink);display:grid;place-items:center;transition:transform .1s}
.dhero .rond:active{transform:scale(.9)}
.dhero .nu{font:400 clamp(72px,22vw,120px)/.9 var(--serif);letter-spacing:-.05em}
.dhero .mo{font:700 13px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;opacity:.92;margin-top:10px}
.dsheet{position:relative;background:#fff;border-radius:30px 30px 0 0;margin:-34px calc(-1*var(--gap)) 0;padding:24px var(--gap) 10px}
.trow{display:flex;gap:14px;align-items:flex-start;justify-content:space-between}
.dsheet h1{font:400 clamp(29px,6vw,42px)/1.1 var(--serif);letter-spacing:-.025em;margin:0;overflow-wrap:anywhere}
.auteur{display:flex;align-items:center;gap:12px;margin-top:18px}
.avatar{width:46px;height:46px;border-radius:15px;background:var(--bt);color:var(--tt);display:grid;place-items:center;font:600 17px var(--serif);flex:none}
.auteur b{display:block;font:600 15px var(--sans)}
.auteur span{color:var(--mut);font:500 13px var(--sans)}
.utabs{display:flex;gap:26px;border-bottom:1px solid var(--line);margin:22px 0 0}
.utabs button{border:0;background:none;padding:12px 0;font:600 15px var(--sans);color:var(--mut);border-bottom:2px solid transparent;margin-bottom:-1px;min-height:46px}
.utabs button.on{color:var(--ink);border-bottom-color:var(--dark)}
.corps{background:#fff;margin:0 calc(-1*var(--gap));padding:4px var(--gap) 28px;border-radius:0 0 30px 30px}
.jour{font:600 20px/1.2 var(--serif);letter-spacing:-.01em;margin:26px 0 4px}
.jour::first-letter{text-transform:uppercase}
.ev{display:grid;grid-template-columns:62px minmax(0,1fr) 44px;gap:12px;padding:16px 0;border-top:1px solid var(--line);align-items:start}
.ev:first-of-type{border-top:0}
.ev .h{font:400 22px/1.1 var(--serif);letter-spacing:-.02em}
.ev .h small{display:block;font:500 12px var(--sans);color:var(--mut);margin-top:4px;letter-spacing:0}
.ev .t{font:600 16.5px/1.3 var(--sans);margin:7px 0 3px;display:block;overflow-wrap:anywhere}
.ev .l{display:flex;align-items:center;gap:6px;font:500 13.5px var(--sans);color:var(--ink2);margin-top:2px}
.ev .l svg{width:15px;height:15px;color:var(--mut)}
.ev a.l{text-decoration:none;min-height:24px}
.ev a.l:hover{text-decoration:underline}
.ev a.l.defaut{color:var(--mut);font-style:italic}
.ev .desc{font:400 14px/1.45 var(--sans);color:var(--ink2);margin-top:6px}
.ev .ibtn{border:1px solid var(--line)}
.liens{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.lk{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 14px;border-radius:999px;background:var(--bg);border:1px solid var(--line);color:var(--ink);font:600 13.5px var(--sans);text-decoration:none;transition:transform .1s}
.lk:active{transform:scale(.97)}
.lk svg{width:16px;height:16px;color:var(--mut)}
.ev .liens{margin-top:10px;gap:6px}
.ev .lk{min-height:32px;padding:0 11px;font-size:12.5px}
.ev .lk svg{width:14px;height:14px}
.acard{background:#fff;border-radius:30px;padding:16px;display:flex;flex-direction:column;gap:12px}
.minimap{height:230px;border-radius:22px;overflow:hidden;background:#e9eaf0;position:relative;z-index:0}
.ligne{display:flex;gap:12px;align-items:flex-start;font:500 14.5px/1.4 var(--sans);padding:2px 4px}
.ligne svg{color:var(--mut);margin-top:1px}
.ligne small{display:block;color:var(--mut);font-weight:500;margin-top:2px}
.ligne a{font-weight:600}

/* ---------- carte ---------- */
.split{position:fixed;z-index:1;left:0;right:0;bottom:0;top:calc(var(--safe-t) + var(--barre));display:grid;grid-template-columns:minmax(0,1fr)}
.split .panel{display:none}
.mapcol{position:relative;min-height:0}
#carte{position:absolute;inset:0;background:#e9eaf0}
.carte-chips{position:absolute;z-index:500;left:12px;right:12px;top:12px;display:flex;gap:8px;flex-wrap:wrap;pointer-events:none}
.carte-chips .seg{flex:none;pointer-events:auto;max-width:100%}
.carte-chips .seg{box-shadow:0 8px 24px rgba(20,22,40,.14)}
.leaflet-bottom{bottom:calc(var(--safe-b) + 60px)!important}
.leaflet-container{font-family:var(--sans)}
.pin{width:38px;height:38px;border-radius:50%;background:var(--dark);color:#fff;border:3px solid #fff;display:grid;place-items:center;font:700 14px var(--sans);box-shadow:0 8px 20px rgba(20,22,40,.35);transition:transform .15s}
.pin.passee{background:#8b8f9c}
.pin.on{transform:scale(1.22);background:#e9526e}
.fiche-bas{position:fixed;z-index:45;left:12px;right:12px;bottom:calc(var(--safe-b) + 66px);display:flex;flex-direction:column;gap:8px}
.fiche-bas .item{box-shadow:0 14px 36px rgba(20,22,40,.22)}

/* ---------- recherche ---------- */
.sbar{display:flex;align-items:center;gap:12px;border-bottom:2px solid var(--ink);padding:6px 0 10px;margin:8px 0 14px}
.sbar svg{width:26px;height:26px}
.sbar input{flex:1;border:0;background:none;font:400 clamp(26px,5vw,38px)/1.2 var(--serif);letter-spacing:-.02em;color:var(--ink);outline:none;min-width:0;padding:0}
.sbar input::placeholder{color:var(--mut)}
.fchips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.fchip{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 8px 0 14px;border-radius:999px;border:0;background:#e5ebfd;color:#3a50b4;font:600 14px var(--sans)}
.fchip svg{width:16px;height:16px}
.lib{font:600 13px var(--sans);color:var(--mut);margin:22px 0 10px}

/* ---------- divers ---------- */
.toast{position:fixed;z-index:80;left:50%;bottom:calc(var(--safe-b) + 84px);transform:translate(-50%,16px);background:var(--dark);color:#fff;padding:12px 20px;border-radius:999px;
  font:600 14px var(--sans);opacity:0;pointer-events:none;transition:.25s;max-width:min(92%,440px);text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}
.sk{border-radius:28px;height:128px;background:linear-gradient(100deg,#fff 30%,#f0f0f4 50%,#fff 70%) 0 0/300% 100%;animation:sk 1.3s infinite linear}
@keyframes sk{to{background-position:-300% 0}}
.fin{text-align:center;color:var(--mut);font:500 13px var(--sans);margin:30px 0 0}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* ===================== tablette ===================== */
@media (min-width:640px){
  :root{--gap:28px}
  .liste{grid-template-columns:repeat(2,minmax(0,1fr))}
  .story{width:178px;height:250px}
}
/* ===================== ordinateur ===================== */
@media (min-width:900px){
  :root{--gap:32px;--barre:72px}
  .bar .in{gap:26px}
  .marque{margin-right:0}
  .nav{display:flex;gap:4px;margin-right:auto}
  .sf{display:flex}
  .ibtn.mobile{display:none}
  .tabbar{display:none}
  main{padding-bottom:72px}
  .toast{bottom:28px}
  .h-hero{margin-top:26px}
  .split{grid-template-columns:460px minmax(0,1fr)}
  .split .panel{display:block;overflow-y:auto;padding:16px 16px 40px;background:var(--bg);scrollbar-width:thin}
  .split .panel .liste{grid-template-columns:minmax(0,1fr)}
  .fiche-bas{display:none}
  .leaflet-bottom{bottom:0!important}
  body[data-vue="detail"] .bar{display:block}
  .dhero{margin:0;border-radius:34px;min-height:270px;padding:24px 28px 30px}
  .dsheet{margin:14px 0 0;border-radius:30px;padding:30px}
  .corps{margin:14px 0 0;border-radius:30px;padding:6px 30px 30px}
  .utabs{display:none}
}
@media (min-width:1024px){
  .hero-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:56px;align-items:center;margin-bottom:6px}
  .det{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:34px;align-items:start}
  .daside{position:sticky;top:calc(var(--safe-t) + var(--barre) + 18px)}
  .story{width:200px;height:268px}
  .item{padding:16px}
  .item .tt{font-size:18px}
}
@media (min-width:1280px){ .liste{gap:14px} }

/* dates passées : grisées et signalées partout */
.item.passee{opacity:.66}
.poster.passee{filter:grayscale(1)}
.tag.fini{background:#8b8f9c;color:#fff;border-color:#8b8f9c}
.ev.fini{opacity:.55}
.ev .h .fin-tag{display:block;font:700 10.5px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-top:4px}
.jour.passes{margin-top:26px;color:var(--mut)}

/* course ciblée (arrivée depuis la recherche ou l'accueil) */
.ev{scroll-margin-top:84px}
.ev.cible{background:rgba(233,82,110,.09);box-shadow:inset 3px 0 0 #e9526e;padding-left:12px;border-radius:12px}
.ev.cible.fini{opacity:.9}

/* ---------- menu (burger) ---------- */
.menu-voile{position:fixed;inset:0;z-index:60;background:rgba(20,22,40,.2)}
.menu{position:fixed;z-index:61;top:calc(var(--safe-t) + var(--barre) - 2px);right:max(var(--gap),calc((100vw - 1160px)/2 + var(--gap)));width:min(300px,calc(100vw - 2*var(--gap)));
  background:#fff;border-radius:20px;padding:8px;box-shadow:0 2px 6px rgba(20,22,40,.08),0 18px 44px rgba(20,22,40,.2);animation:menuIn .16s ease-out}
@keyframes menuIn{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}
.menu-item{display:flex;align-items:center;gap:13px;width:100%;min-height:56px;border:0;background:none;border-radius:14px;padding:6px 10px;text-align:left;transition:background .12s}
.menu-item:active,.menu-item:hover{background:var(--bg)}
.menu-item .sq{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--g-tradition);color:#fff;flex:none}
.menu-item .tx{display:flex;flex-direction:column;gap:2px}.menu-item b{font:600 16px var(--sans)}.menu-item small{font:500 13px var(--sans);color:var(--ink2)}

/* ---------- lexique de la bouvine ---------- */
.lx{max-width:1160px;margin:0 auto;padding:6px var(--gap) 40px}
.lx-tete{padding:18px 0 6px}.lx-tete h1{font:600 clamp(32px,6vw,52px)/1.04 var(--serif);letter-spacing:-.03em;margin:0 0 10px}
.lx-tete .lead{font:500 clamp(16px,2.2vw,18px)/1.5 var(--sans);color:var(--ink2);max-width:640px;margin:0}
.lx-barre{position:sticky;top:calc(var(--safe-t) + var(--barre));z-index:20;margin:14px calc(var(--gap) * -1) 0;padding:10px var(--gap) 8px;background:rgba(246,246,247,.9);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line)}
.lx-recherche{display:flex;align-items:center;gap:10px;height:48px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:0 18px;color:var(--mut)}
.lx-recherche input{all:unset;flex:1;min-width:0;font:500 16px var(--sans);color:var(--ink);user-select:text;-webkit-user-select:text}
.lx-chips{display:flex;gap:8px;overflow-x:auto;padding:10px 0 2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.lx-chips::-webkit-scrollbar{display:none}
.lx-chip{flex:none;border:1px solid var(--line);background:#fff;color:var(--ink2);border-radius:999px;padding:0 16px;min-height:44px;font:600 14.5px var(--sans);transition:transform .12s}
.lx-chip b{font-weight:700;color:var(--mut);margin-left:5px}.lx-chip:active{transform:scale(.96)}.lx-chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.lx-chip.on b{color:inherit;opacity:.65}
.lx-groupe{margin-top:30px}.lx-groupe h2{font:600 26px/1.1 var(--serif);letter-spacing:-.02em;margin:0 0 16px;scroll-margin-top:150px}.lx-groupe h2 small{font:700 13px var(--sans);color:var(--mut);letter-spacing:0;margin-left:7px}
.lx-grille{display:grid;gap:18px;grid-template-columns:1fr}
@media (min-width:640px){.lx-grille{grid-template-columns:repeat(2,1fr)}}@media (min-width:980px){.lx-grille{grid-template-columns:repeat(3,1fr)}}
.lx-carte{background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 1px 2px rgba(20,22,40,.06),0 10px 28px rgba(20,22,40,.06);display:flex;flex-direction:column;scroll-margin-top:calc(var(--barre) + var(--safe-t) + 130px)}
.lx-carte.flash{animation:lxflash 1.8s ease}@keyframes lxflash{0%,60%{outline:3px solid #e9526e;outline-offset:3px}100%{outline:3px solid transparent;outline-offset:3px}}
.lx-visuel{aspect-ratio:300/170;background:var(--g);overflow:hidden}.lx-visuel svg{width:100%;height:100%;display:block}
.lx-w{fill:#fff}.lx-k{fill:rgba(40,20,50,.55)}.lx-r{fill:#e8344a}.lx-y{fill:#ffd34e}.lx-l{fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round}.lx-sol{fill:rgba(0,0,0,.13)}
.lx-corps{padding:16px 18px 18px;display:flex;flex-direction:column;gap:7px;flex:1}
.lx-tags{display:flex;flex-wrap:wrap;gap:6px}.lx-tag{font:700 10.5px/1 var(--sans);letter-spacing:.07em;text-transform:uppercase;background:var(--bt);color:var(--tt);border-radius:999px;padding:6px 10px}.lx-tag.site{background:rgba(120,125,140,.14);color:var(--ink2)}
.lx-terme{font:600 25px/1.1 var(--serif);letter-spacing:-.02em;margin:4px 0 0}.lx-var{font:600 12.5px var(--sans);color:var(--mut)}.lx-court{margin:2px 0 0;font:500 15.5px/1.45 var(--sans)}
.lx-corps details{margin-top:4px}.lx-corps summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;font:700 13.5px var(--sans);color:var(--tt)}
.lx-corps summary::-webkit-details-marker{display:none}.lx-corps summary::after{content:"＋";font-size:15px}.lx-corps details[open] summary::after{content:"－"}
.lx-detail{margin:0 0 4px;color:var(--ink2);font:500 14.5px/1.55 var(--sans)}
.lx-voir{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:auto;padding-top:8px}.lx-voir span{font:700 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-right:2px}
.lx-vo{border:0;color:var(--ink2);background:var(--bg);border-radius:999px;padding:0 12px;min-height:34px;font:600 13px var(--sans)}.lx-vo:active{transform:scale(.96)}
.lx-pied{margin-top:40px;color:var(--ink2);font:500 14px/1.6 var(--sans)}.lx-pied h2{font:600 20px var(--serif);color:var(--ink);margin:0 0 6px}.lx-pied ul{padding-left:20px;margin:8px 0}

/* ---------- menu : liens légaux ---------- */
.menu-pied{display:flex;flex-wrap:wrap;gap:4px 14px;padding:10px 12px 6px;margin-top:6px;border-top:1px solid var(--line)}
.menu-pied a{font:600 12.5px var(--sans);color:var(--ink2);text-decoration:none;min-height:32px;display:inline-flex;align-items:center}
.menu-pied a:active{color:var(--ink)}

/* ---------- compte ---------- */
.cpt{max-width:560px;margin:0 auto;padding:8px var(--gap) 40px}
.cpt-h1{font:600 clamp(30px,6vw,42px)/1.05 var(--serif);letter-spacing:-.03em;margin:14px 0 14px}
.cpt-h2{font:600 20px var(--serif);letter-spacing:-.015em;margin:0 0 8px}
.cpt-onglets{display:flex;background:#fff;border-radius:999px;padding:4px;box-shadow:inset 0 0 0 1px var(--line);margin-bottom:16px}
.cpt-onglets button{flex:1;border:0;background:none;min-height:44px;border-radius:999px;font:600 15px var(--sans);color:var(--ink2)}
.cpt-onglets button.on{background:var(--dark);color:#fff}
.cpt-aide{margin:0 0 14px;color:var(--ink2);font:500 15px/1.5 var(--sans)}
.cpt-petit{margin:10px 0 0;color:var(--mut);font:500 12.5px/1.5 var(--sans)}.cpt-petit a,.cpt-case a,.cpt-aide a{color:inherit;text-decoration:underline}
.cpt-form{display:flex;flex-direction:column;gap:14px}
.cpt-champ{display:flex;flex-direction:column;gap:6px;position:relative}.cpt-champ label{font:600 13.5px var(--sans);color:var(--ink)}
.cpt-in{width:100%;min-height:50px;border:1px solid var(--line);border-radius:14px;background:#fff;padding:0 16px;font:500 16px var(--sans);color:var(--ink);user-select:text;-webkit-user-select:text;appearance:none;-webkit-appearance:none}
.cpt-in:focus{outline:3px solid #6b7cff;outline-offset:1px;border-color:transparent}
.cpt-champ.avec-voir .cpt-in{padding-right:96px}.cpt-voir{position:absolute;right:6px;bottom:3px;min-height:44px;border:0;background:none;font:700 13px var(--sans);color:var(--ink2);padding:0 12px}
.cpt-case{display:flex;gap:12px;align-items:flex-start;font:500 14.5px/1.45 var(--sans);color:var(--ink2);min-height:44px;padding:2px 0}
.cpt-case input{width:22px;height:22px;margin:1px 0 0;accent-color:var(--dark);flex:none}
.cpt-ts{min-height:0}
.cpt-ok{width:100%}.cpt-ok:disabled,.cpt-google:disabled{opacity:.5}
.cpt-lien{border:0;background:none;color:var(--ink2);font:600 14px var(--sans);text-decoration:underline;min-height:44px;align-self:flex-start;padding:0}.cpt-lien.rouge{color:#c0292f}
.cpt-google{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;min-height:50px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font:600 15px var(--sans)}
.cpt-google .g{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#4285f4,#34a853 40%,#fbbc05 70%,#ea4335);color:#fff;font:800 14px var(--sans)}
.cpt-ou{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--mut);font:600 12.5px var(--sans);text-transform:uppercase;letter-spacing:.08em}.cpt-ou::before,.cpt-ou::after{content:"";flex:1;height:1px;background:var(--line)}
.cpt-msg{border-radius:14px;padding:12px 14px;margin:0 0 14px;font:600 14.5px/1.4 var(--sans)}.cpt-msg.err{background:#fde8e8;color:#a3171d}.cpt-msg.ok{background:#e4f5ec;color:#1f6e49}
.cpt-envoye{background:#fff;border-radius:28px;padding:28px 22px;text-align:center;color:var(--ink2)}.cpt-envoye .emoji{font-size:40px}.cpt-envoye p{margin:10px 0}.cpt-envoye .btn{margin-top:14px}
.cpt-id{display:flex;gap:14px;align-items:center;background:#fff;border-radius:24px;padding:16px 18px;margin-bottom:14px}.cpt-id>div{display:flex;flex-direction:column;min-width:0}.cpt-id b{font:600 20px var(--serif)}.cpt-id small{color:var(--ink2);font:500 13.5px var(--sans);overflow:hidden;text-overflow:ellipsis}
.cpt-avatar{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--g-tradition);color:#fff;font:600 24px var(--serif);flex:none}
.cpt-bloc{background:#fff;border-radius:24px;padding:18px;margin-bottom:14px}.cpt-bloc .btn{display:inline-flex;width:auto}
.cpt-ligne{display:flex;flex-wrap:wrap;gap:10px}
.cpt-inter{display:flex;align-items:center;gap:14px;min-height:60px;padding:6px 0;border-bottom:1px solid var(--line);cursor:pointer}.cpt-inter:last-of-type{border-bottom:0}
.cpt-inter .tx{flex:1;display:flex;flex-direction:column;gap:2px}.cpt-inter b{font:600 15.5px var(--sans)}.cpt-inter small{color:var(--ink2);font:500 13px/1.35 var(--sans)}
.cpt-inter input{position:absolute;opacity:0;width:1px;height:1px}
.cpt-inter .cur{width:50px;height:30px;border-radius:999px;background:#d5d7df;position:relative;flex:none;transition:background .15s}.cpt-inter .cur::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.cpt-inter input:checked+.cur{background:#2f9b78}.cpt-inter input:checked+.cur::after{transform:translateX(20px)}.cpt-inter input:focus-visible+.cur{outline:3px solid #6b7cff;outline-offset:2px}
.cpt-inter.off{opacity:.45;cursor:default}
.cpt-danger{margin-top:14px;border-radius:18px;padding:14px;background:#fde8e8;color:#7a1217}.cpt-danger p{margin:0 0 12px;font:500 14.5px/1.45 var(--sans)}.cpt-rouge{background:#c0292f!important;color:#fff}

.cpt-petit.centre{text-align:center;margin:8px 0 0}
