/* =========================================================
   Aperçus : fidélité, parrainage, ventes flash, drops,
   carte des points de retrait, plusieurs boutiques
   ========================================================= */
.dstage .btn{margin-top:12px}
.av{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;flex:none;font-style:normal;font-weight:800;font-size:13px;color:#fff;background:hsl(var(--h) 60% 42%);box-shadow:0 0 0 2px #0b0a08,0 0 0 3px hsl(var(--h) 70% 60%)}
.stockbar{height:8px;border-radius:9px;background:#ffffff12;overflow:hidden;margin-top:8px}
.stockbar i{display:block;height:100%;background:linear-gradient(90deg,#ff5470,#f5b400);box-shadow:0 0 10px #ff5470;transition:width .6s cubic-bezier(.2,.8,.2,1)}
.qr-mini{display:grid;grid-template-columns:repeat(11,1fr);width:84px;height:84px;padding:6px;background:#fff;border-radius:10px;flex:none}
.qr-mini i{background:#fff}.qr-mini i.k{background:#111}
.new{animation:in .45s cubic-bezier(.2,1.4,.4,1) both}
.blink{animation:blinkR .5s}
@keyframes blinkR{50%{color:#ff5470;transform:scale(1.3)}}
.dstage:has(.mc-wrap),.dstage:has(.orbit),.dstage:has(.radar),.dstage:has(.fr){display:flex;flex-direction:column;align-items:center;justify-content:center}

/* ---------- fidélité : tampons ---------- */
.stamp-card{width:min(310px,100%);padding:16px;border-radius:20px;background:linear-gradient(150deg,#2a1f00,#0b0a08 70%);border:1.5px solid #f5b40077;box-shadow:0 14px 40px #000a;cursor:pointer;transition:.3s}
.stamp-card.full{box-shadow:0 0 50px #f5b40077}
.sc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.sc-top b{font-family:"Russo One";font-weight:400;letter-spacing:2px;color:var(--gold2)}
.sc-top span{font-weight:800}.sc-top em{font-style:normal;color:var(--gold2);font-size:20px}
.stamps{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}
.stamps i{aspect-ratio:1;border-radius:50%;border:2px dashed #f5b40055;display:grid;place-items:center;font-style:normal;font-size:20px}
.stamps i.on{border:2px solid var(--gold);background:radial-gradient(circle,#f5b40033,transparent)}
.stamps i.last{border-color:#62d0ff88}
.stamps i.stampin{animation:stampIn .45s cubic-bezier(.2,1.6,.4,1)}
@keyframes stampIn{0%{transform:scale(2.4) rotate(-30deg);opacity:0}}
.sc-bot{font-size:12.5px;text-align:center;margin-top:14px;color:#cfc9ba}
.sc-bot b{color:var(--gold2)}

/* ---------- fidélité : niveaux ---------- */
.lvp{position:relative;width:100%}
.lvp-h{display:flex;gap:14px;align-items:center;margin-bottom:22px}
.badge-lv{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;font-family:"Russo One";font-size:28px;color:#1a1200;box-shadow:0 8px 24px #000a,inset 0 1px 0 #fff8;transition:.5s;flex:none}
.lvp-h small{font-size:11px;color:var(--mute);letter-spacing:1px;text-transform:uppercase}
.lvp-h b{display:block;font-family:"Russo One";font-weight:400;font-size:24px;transition:color .5s}
.lvp-h span{font-size:13px;color:#cfc9ba}.lvp-h em{font-style:normal;font-weight:800;color:var(--txt)}
.lvp-bar{position:relative;height:10px;border-radius:9px;background:#ffffff12;margin:0 14px 32px}
.lvp-bar>i{display:block;height:100%;border-radius:9px;background:var(--goldgrad);box-shadow:0 0 12px var(--gold);transition:width .8s cubic-bezier(.2,.8,.2,1)}
.lvp-bar span{position:absolute;top:-4px;transform:translateX(-50%);text-align:center}
.lvp-bar span b{display:block;width:18px;height:18px;margin:0 auto;border-radius:50%;background:var(--c);border:3px solid #0b0a08}
.lvp-bar span small{font-size:10px;font-weight:800;color:var(--mute)}
.lvp-next{font-size:13px;text-align:center;color:#cfc9ba}
.lvp-perks{list-style:none;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}
.lvp-perks li{font-size:11.5px;padding:5px 9px;border-radius:99px;background:#ffffff0c;border:1px solid var(--line2)}
.lvup{position:absolute;inset:-16px;display:grid;place-items:center;background:#000c;opacity:0;pointer-events:none;border-radius:22px}
.lvup>div{text-align:center;transform:scale(.3)}
.lvup small{font-size:12px;letter-spacing:4px;color:var(--mute);font-weight:800}
.lvup b{display:block;font-family:"Russo One";font-weight:400;font-size:46px;text-shadow:0 0 30px currentColor}
.lvup.on{animation:lvup 2.2s both}
.lvup.on>div{animation:lvpop .7s cubic-bezier(.2,1.6,.4,1) forwards}
@keyframes lvup{0%,100%{opacity:0}10%,85%{opacity:1}}
@keyframes lvpop{to{transform:scale(1)}}

/* ---------- fidélité : carte membre 3D ---------- */
.mc-wrap{perspective:900px;width:min(310px,100%)}
.mcard{position:relative;aspect-ratio:1.58;transform-style:preserve-3d;transform:rotateX(var(--tx,0deg)) rotateY(calc(var(--ty,0deg) + var(--fl,0deg)));transition:transform .7s cubic-bezier(.3,1.3,.5,1);cursor:pointer}
.mcard.flip{--fl:180deg}
.mc-f,.mc-b{position:absolute;inset:0;border-radius:18px;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;padding:16px;box-shadow:0 20px 50px #000c}
.mc-f{background:var(--mg);color:#140f02;display:flex;flex-direction:column;justify-content:space-between}
.mc-row{display:flex;justify-content:space-between;font-weight:800;font-size:12px;letter-spacing:1.5px}
.mc-pts small{font-size:10px;letter-spacing:2px;font-weight:800;opacity:.7}
.mc-pts b{display:block;font-family:"Russo One";font-weight:400;font-size:32px}
.mc-shine{position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,#ffffffaa 50%,transparent 65%);transform:translateX(-120%)}
.mcard.sweep .mc-shine{animation:mshine 1s ease-out}
@keyframes mshine{to{transform:translateX(120%)}}
.mc-b{transform:rotateY(180deg);background:#0f0f14;border:1px solid var(--mc);display:flex;gap:12px;align-items:center}
.mc-b b{font-size:13px;color:var(--mc)}
.mc-b ul{list-style:none;font-size:11.5px;line-height:1.6;color:#cfc9ba;margin-top:4px}
.mc-lvls{display:flex;gap:6px;justify-content:center;margin-top:16px}
.mc-lvls button{padding:7px 11px;border-radius:99px;font-size:12px;font-weight:800;border:1.5px solid var(--c);color:var(--c)}
.mc-lvls button.on{background:var(--c);color:#111}

/* ---------- fidélité : cashback ---------- */
.wallet{width:100%}
.wl-card{position:relative;padding:18px;border-radius:20px;background:linear-gradient(135deg,#0a3d24,#06140d);border:1px solid #3ddc8455;overflow:hidden}
.wl-card small{font-size:11px;letter-spacing:2px;font-weight:800;color:#8ff0bb}
.wl-card b{display:block;font-family:"Russo One";font-weight:400;font-size:36px;color:#3ddc84;text-shadow:0 0 20px #3ddc8466}
.wl-card span{font-size:12px;color:#bff5d4}
.wl-coin{position:absolute;right:14px;top:14px;font-size:40px;font-style:normal;animation:emBounce 2s ease-in-out infinite}
.wl-card.bump{animation:pop .5s}
.wl-hist{margin-top:10px;display:grid;gap:6px;max-height:96px;overflow:hidden}
.wl-hist div{display:flex;justify-content:space-between;font-size:12.5px;padding:8px 10px;border-radius:10px;background:var(--card)}
.wl-hist b{color:#3ddc84}.wl-hist .used b{color:#ff8a9c}
.wl-btns .btn{margin-top:8px}
.fly-coin{position:fixed;z-index:400;font-size:24px;font-style:normal;pointer-events:none;transition:all .7s cubic-bezier(.5,-.4,.6,1)}

/* ---------- fidélité : chemin de récompenses ---------- */
.bpass{width:100%}
.bp-h{display:flex;justify-content:space-between;margin-bottom:10px}
.bp-h b{font-family:"Russo One";font-weight:400}.bp-h span{font-weight:800;color:var(--gold2)}
.bp-track{position:relative;height:150px;overflow-x:auto;scrollbar-width:none;touch-action:pan-x}
.bp-track::-webkit-scrollbar{display:none}
.bp-line{position:absolute;left:0;top:44px;width:710px;height:6px;border-radius:9px;background:#ffffff14}
.bp-line i{position:absolute;left:0;top:0;bottom:0;border-radius:9px;background:var(--goldgrad);box-shadow:0 0 12px var(--gold);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.bp-node{position:absolute;top:20px;width:72px;margin-left:-36px;text-align:center;opacity:.45;filter:grayscale(1);transition:.4s}
.bp-node span{display:grid;place-items:center;width:52px;height:52px;margin:0 auto;border-radius:16px;font-size:26px;background:#15130e;border:2px solid #ffffff22}
.bp-node small{display:block;font-size:11px;font-weight:800;margin-top:6px}
.bp-node em{font-style:normal;font-size:10px;color:var(--mute)}
.bp-node.un{opacity:1;filter:none}
.bp-node.un span{border-color:var(--gold);box-shadow:0 0 18px #f5b40055}
.bp-node.pop span{animation:pop .6s cubic-bezier(.2,1.8,.4,1)}
.bp-me{position:absolute;top:104px;margin-left:-15px;font-size:28px;transition:left .6s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 4px 8px #000)}

/* ---------- parrainage ---------- */
.ref{width:100%}
.ref-h small{font-size:11px;letter-spacing:2px;color:var(--mute);font-weight:800}
.ref-link{display:flex;gap:8px;align-items:center;padding:8px 8px 8px 12px;border-radius:12px;background:#0006;border:1px dashed #2aabee66;font-family:ui-monospace,monospace;font-size:12px;margin-top:4px}
.ref-link span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ref-link button{padding:7px 12px;border-radius:9px;background:var(--blue);color:#fff;font-family:Manrope;font-weight:800;font-size:12px}
.ref-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.ref-stats div{text-align:center;padding:10px;border-radius:14px;background:var(--card);border:1px solid var(--line2)}
.ref-stats b{font-family:"Russo One";font-weight:400;font-size:24px;display:block}
.ref-stats small{font-size:11px;color:var(--mute)}
.ref-list{display:grid;gap:6px;max-height:84px;overflow:hidden}
.ref-list p{font-size:12px;color:var(--mute);text-align:center}
.ref-row{display:flex;align-items:center;gap:10px;font-size:13px;padding:6px 10px;border-radius:12px;background:var(--card)}
.ref-row span{flex:1}.ref-row b{color:#3ddc84}
.ref-rule{font-size:11.5px;text-align:center;margin-top:8px;color:#cfc9ba}.ref-rule b{color:var(--gold2)}
.goal{text-align:center;width:100%}
.goal .ring{position:relative;width:140px;height:140px;margin:0 auto}
.goal .ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.goal .ring circle{fill:none;stroke-width:10;stroke:#ffffff12}
.goal .ring #gr{stroke:var(--gold);stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 0 6px var(--gold))}
.goal .ring>div{position:absolute;inset:0;display:grid;place-content:center}
.goal .ring b{font-family:"Russo One";font-weight:400;font-size:30px}
.goal .ring small{font-size:11px;color:var(--mute)}
.goal.done .ring{animation:pop .6s}
.slots{display:flex;justify-content:center;gap:12px;margin:14px 0 8px}
.slot-av{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;border:2px dashed #ffffff33;color:var(--mute);font-weight:800}
.slot-av.on{border:none;animation:pop .5s cubic-bezier(.2,1.8,.4,1)}
.slot-av .av{width:46px;height:46px;font-size:18px}
.goal-t{font-size:13px}
.gcard-wrap{width:100%;display:flex;flex-direction:column;align-items:center}
.gcard{width:min(300px,100%);padding:16px;border-radius:18px;background:linear-gradient(140deg,#2a1f00,#0b0a08 60%,#06243a);border:1.5px solid #f5b40088;box-shadow:0 16px 40px #000a}
.gcard.send{animation:send .9s cubic-bezier(.5,-.3,.7,1)}
@keyframes send{40%{transform:scale(.95) rotate(-4deg)}100%{transform:translate(160px,-260px) scale(.2) rotate(30deg);opacity:0}}
.gc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.gc-top b{font-size:12.5px;letter-spacing:1px}.gc-top span{font-family:"Russo One";color:var(--gold2);font-size:20px}
.gc-mid{display:flex;gap:12px;align-items:center}
.gc-mid small{font-size:10px;letter-spacing:2px;color:var(--mute);font-weight:800}
.gc-mid b{display:block;font-family:"Russo One";font-weight:400;font-size:22px;color:var(--gold2)}
.gc-mid em{font-style:normal;font-size:11px;color:#cfc9ba}
.share-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%;margin-top:16px}
.share-row button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:14px;background:var(--card);border:1px solid var(--line2);font-size:11px;font-weight:700}
.share-row span{font-size:22px}
.orbit{position:relative;width:280px;height:280px;max-width:100%}
.o-ring{position:absolute;left:50%;top:50%;border-radius:50%;border:1px dashed #f5b40044;transform:translate(-50%,-50%)}
.o-ring.r1{width:164px;height:164px}.o-ring.r2{width:236px;height:236px}
.o-me{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:50%;display:grid;place-items:center;font-size:30px;background:radial-gradient(circle,#f5b40055,#2a1f00);border:2px solid var(--gold);box-shadow:0 0 30px #f5b40066}
.o-me small{position:absolute;bottom:-18px;font-size:10px;font-weight:800}
.o-sat{position:absolute;inset:0;animation:rot 30s linear infinite}
.sat{position:absolute;left:50%;top:50%;transform:rotate(var(--a)) translateY(calc(var(--r) * -1))}
.sat span{display:block;margin:-15px;transform:rotate(calc(var(--a) * -1));animation:pop .5s cubic-bezier(.2,1.8,.4,1)}
.o-earn{position:absolute;right:0;bottom:0;text-align:right}
.o-earn small{font-size:10px;letter-spacing:2px;color:var(--mute);font-weight:800}
.o-earn b{display:block;font-family:"Russo One";font-weight:400;font-size:24px}
.ldb{width:100%}
.ldb-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.ldb-h b{font-size:14px}.ldb-h span{font-size:11px;color:var(--gold2);font-weight:800}
.ldb-list{display:grid;gap:5px}
.ldb-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:12px;background:var(--card);font-size:13px;transition:.4s}
.ldb-row em{font-style:normal;width:22px;text-align:center;font-weight:800}
.ldb-row span{flex:1}
.ldb-row b{font-size:12px;color:var(--mute)}
.ldb-row.me{background:linear-gradient(90deg,#f5b40033,#f5b4000a);border:1px solid var(--gold)}
.ldb-row.me b{color:var(--gold2)}
.ldb-row.up{animation:upRow .6s cubic-bezier(.2,1.6,.4,1)}
@keyframes upRow{0%{transform:translateY(40px) scale(.95)}}

/* ---------- ventes flash ---------- */
.fl1,.deal,.drop-price,.alert,.drop1,.myst,.queue,.raffle,.geo{width:100%;text-align:center}
.fl-tag,.dr-tag{display:inline-block;padding:5px 12px;border-radius:99px;background:#ff5470;color:#fff;font-weight:800;font-size:12px;letter-spacing:1px;box-shadow:0 0 18px #ff5470}
.flip-clock{display:flex;justify-content:center;gap:4px;margin:14px 0}
.flip-clock span{width:34px;height:48px;border-radius:8px;display:grid;place-items:center;font-family:"Russo One";font-size:28px;background:linear-gradient(#1d1d24 50%,#141419 50%);box-shadow:inset 0 -1px 0 #000,0 6px 14px #000a;color:#fff}
.flip-clock u{text-decoration:none;font-family:"Russo One";font-size:26px;color:#ff5470;align-self:center}
.fl-prod{display:flex;align-items:center;gap:12px;text-align:left;padding:10px;border-radius:14px;background:var(--card)}
.fl-em{font-size:34px}
.fl-prod p{font-size:13px}.fl-prod s{color:var(--mute)}.fl-prod em{font-style:normal;font-weight:800;color:var(--gold2);font-size:17px}
.fl-prod i{font-style:normal;font-size:11px;font-weight:800;padding:2px 6px;border-radius:6px;background:#ff5470;color:#fff}
.st-txt{font-size:13px;margin-top:6px}.st-txt b{color:#ff5470;display:inline-block}
.dl-ring{position:relative;width:150px;height:150px;margin:0 auto 10px}
.dl-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.dl-ring circle{fill:none;stroke-width:8;stroke:#ffffff12}
.dl-ring #dr{stroke:#ff5470;stroke-linecap:round;transition:stroke-dashoffset 1s linear;filter:drop-shadow(0 0 6px #ff5470)}
.dl-ring>div{position:absolute;inset:0;display:grid;place-content:center}
.dl-ring small{font-size:10px;letter-spacing:2px;color:var(--mute);font-weight:800}
.dl-ring b{font-family:"Russo One";font-weight:400;font-size:30px}
.dl-n{font-family:"Russo One";font-weight:400;font-size:20px}
.dl-p s{color:var(--mute);margin-right:8px}.dl-p em{font-style:normal;font-family:"Russo One";font-size:26px}
.dl-v{font-size:12.5px;color:#cfc9ba}.dl-v b{color:#ff8a9c}
.drop-price small{font-size:10.5px;letter-spacing:2px;color:var(--mute);font-weight:800}
.drop-price>b{display:block;font-family:"Russo One";font-weight:400;font-size:44px;color:#3ddc84;text-shadow:0 0 20px #3ddc8466}
.drop-price>b.hit{animation:hitDown .5s}
@keyframes hitDown{30%{transform:translateY(8px) scale(.92);color:#fff}}
.dp-graph{display:flex;align-items:flex-end;gap:4px;height:70px;margin:8px 0;padding:0 10px}
.dp-graph i{flex:1;border-radius:4px 4px 0 0;background:linear-gradient(#3ddc84,#3ddc8433);transition:height .4s}
.drop-price p{font-size:12.5px;color:#cfc9ba}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}
.fg{position:relative;padding:12px 10px;border-radius:16px;background:var(--card);border:1px solid var(--line2);text-align:center;overflow:hidden;cursor:pointer}
.fg-e{font-size:30px}
.fg b{display:block;font-size:13px}
.fg em{font-style:normal;font-weight:800;font-size:12px;color:#ff5470}
.fg-t{display:block;font-family:"Russo One";font-size:16px;margin-top:4px}
.fg-s{font-size:10.5px;color:var(--mute)}
.soldout{position:absolute;left:50%;top:50%;font-style:normal;font-family:"Russo One";font-size:22px;color:#ff5470;border:3px solid #ff5470;padding:4px 10px;border-radius:8px;transform:translate(-50%,-50%) rotate(-18deg) scale(2);opacity:0;transition:.4s cubic-bezier(.2,1.6,.4,1);background:#0b0a08cc}
.fg.out{filter:grayscale(.6)}
.fg.out .soldout{opacity:1;transform:translate(-50%,-50%) rotate(-18deg) scale(1)}
.alert{position:relative;padding:22px 16px;border-radius:20px;background:#2a0006;border:2px solid #ff2b4a;overflow:hidden;animation:alarm 1s infinite}
@keyframes alarm{50%{box-shadow:0 0 40px #ff2b4a,inset 0 0 40px #ff2b4a55}}
.siren{position:absolute;inset:-50%;background:conic-gradient(from 0deg,transparent 0 80%,#ff2b4a55 90%,transparent);animation:rot 1.2s linear infinite;pointer-events:none}
.al-t{position:relative;display:block;font-family:"Russo One";font-weight:400;font-size:26px;color:#fff;animation:alShake .5s infinite}
@keyframes alShake{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}}
.alert p{position:relative;font-size:13px;color:#ffc2cc}
.al-price{position:relative;font-family:"Russo One";font-size:44px;margin:10px 0;color:#fff;filter:blur(6px);transition:.5s}
.al-price s{font-size:20px;color:#ff8a9c}
.alert.open .al-price{filter:none;color:var(--gold2)}
.slider{position:relative;height:54px;border-radius:99px;background:#0008;border:1px solid #ff2b4a88;display:grid;place-items:center;font-size:12.5px;font-weight:800;color:#ffc2cc;overflow:hidden;touch-action:none}
.sl-knob{position:absolute;left:4px;top:4px;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--goldgrad);color:#1a1200;font-size:20px;z-index:2;cursor:grab;touch-action:none}

/* ---------- drops ---------- */
.dr-name{display:block;font-family:"Russo One";font-weight:400;font-size:28px;margin:12px 0 6px}
.dr-cd{font-family:"Russo One";font-size:38px;letter-spacing:2px;color:var(--gold2);text-shadow:0 0 20px #f5b40066}
.drop1.live .dr-cd{color:#3ddc84;text-shadow:0 0 24px #3ddc84;animation:pop .6s}
.btn.ok{background:#3ddc8422;color:#3ddc84;border:1px solid #3ddc84;box-shadow:none;animation:none}
.dr-pos{font-size:12px;color:var(--mute);margin-top:8px}
.my-img{width:150px;height:150px;margin:0 auto 12px;border-radius:24px;display:grid;place-items:center;font-size:80px;background:radial-gradient(circle,#7b2bff,#140629);filter:blur(24px) brightness(.4);transition:filter 1s}
.myst>b{font-family:"Russo One";font-weight:400;font-size:22px;letter-spacing:4px}
.myst.on>b{letter-spacing:1px;color:var(--gold2)}
.myst p{font-size:12.5px;color:var(--mute);margin-top:6px}
.queue small{font-size:11px;letter-spacing:3px;color:var(--mute);font-weight:800}
.queue>b{display:block;font-family:"Russo One";font-weight:400;font-size:46px;margin:6px 0}
.queue.go>b{font-size:28px;color:#3ddc84}
.q-people{display:flex;justify-content:center;gap:2px;font-size:20px;margin:6px 0}
.q-people i{font-style:normal;animation:walk 1s ease-in-out infinite}
@keyframes walk{50%{transform:translateY(-3px)}}
.queue p{font-size:12.5px;color:#cfc9ba;margin-top:6px}
.rf-t{display:block;font-family:"Russo One";font-weight:400;font-size:18px;color:var(--gold2)}
.rf-reel{height:80px;margin:14px 0;border-radius:16px;background:#0b0a08;border:2px solid var(--line);display:grid;place-items:center;font-family:"Russo One";font-size:30px}
.rf-reel.win{border-color:#3ddc84;box-shadow:0 0 30px #3ddc8466;color:#3ddc84}
.rf-reel.lose{border-color:#ff5470;color:#ff8a9c}
.cal{display:grid;gap:8px;width:100%}
.cal-it{display:flex;align-items:center;gap:12px;padding:10px;border-radius:14px;background:var(--card);border:1px solid var(--line2)}
.cal-it.next{border-color:var(--gold);background:linear-gradient(90deg,#f5b4001a,transparent)}
.cal-d{width:48px;text-align:center;flex:none}
.cal-d b{display:block;font-family:"Russo One";font-weight:400;font-size:22px}
.cal-d small{font-size:10px;font-weight:800;color:var(--mute)}
.cal-i{flex:1}.cal-i b{display:block;font-size:14px}.cal-i small{font-size:11.5px;color:var(--mute)}.cal-i em{font-style:normal;color:var(--gold2);font-weight:800}
.bell{width:40px;height:40px;border-radius:12px;font-size:18px;background:#ffffff0c;filter:grayscale(1);opacity:.6}
.bell.on{filter:none;opacity:1;background:#f5b40022;box-shadow:0 0 14px #f5b40055}
.bell.ring{animation:bellRing .6s}
@keyframes bellRing{20%{transform:rotate(-20deg)}40%{transform:rotate(16deg)}60%{transform:rotate(-10deg)}80%{transform:rotate(6deg)}}

/* ---------- carte des points de retrait ---------- */
.map{position:relative;width:100%;height:300px;border-radius:18px;overflow:hidden;background:#0d1117}
.mbg{position:absolute;inset:0;width:100%;height:100%}
.mbg line{stroke:#ffffff10;stroke-width:.6}
.mbg .river{fill:none;stroke:#1d4f7a;stroke-width:5}
.mbg .avenue{fill:none;stroke:#ffffff22;stroke-width:1.6}
.pin{position:absolute;font-size:28px;transform:translate(-50%,-100%);animation:pinDrop .6s cubic-bezier(.2,1.6,.4,1) both;filter:drop-shadow(0 4px 4px #000a);transition:.3s;z-index:2}
@keyframes pinDrop{from{transform:translate(-50%,-260%);opacity:0}}
.pin.sel{transform:translate(-50%,-100%) scale(1.4);filter:drop-shadow(0 0 10px #ff5470)}
.me-dot{position:absolute;width:16px;height:16px;margin:-8px;border-radius:50%;background:var(--blue);border:3px solid #fff;animation:meP 1.8s infinite}
@keyframes meP{0%{box-shadow:0 0 0 0 #2aabee88}70%,100%{box-shadow:0 0 0 18px #2aabee00}}
.map-card{position:absolute;left:10px;right:10px;bottom:10px;padding:12px;border-radius:14px;background:#0b0a08ee;border:1px solid var(--line);text-align:left;transform:translateY(130%);transition:.45s cubic-bezier(.2,1.3,.4,1);z-index:3;display:grid;gap:2px}
.map-card.on{transform:none}
.map-card b{font-size:14px}.map-card small{font-size:12px;color:#cfc9ba}
.map-card em,.pl-it em{font-style:normal;font-size:11px;font-weight:800;justify-self:start;padding:2px 8px;border-radius:99px}
.op{background:#3ddc8422;color:#3ddc84}.cl{background:#ff547022;color:#ff8a9c}
.map-card .go{margin-top:6px;padding:9px;border-radius:10px;background:var(--blue);color:#fff;font-weight:800;font-size:13px}
.plist{width:100%;display:grid;gap:6px}
.pl-map{position:relative;height:90px;border-radius:14px;overflow:hidden;background:#0d1117;margin-bottom:4px}
.pl-map i{position:absolute;width:10px;height:10px;margin:-5px;border-radius:50%;background:#ff5470;box-shadow:0 0 8px #ff5470}
.pl-it{display:flex;gap:10px;align-items:center;text-align:left;padding:8px 10px;border-radius:12px;background:var(--card);border:1px solid var(--line2);animation:in .4s both}
.pl-it.sel{border-color:var(--gold);background:#f5b40012}
.pl-n{width:24px;height:24px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:12px;font-weight:800;background:#ffffff14}
.pl-it>div{display:grid;gap:1px}.pl-it b{font-size:13px}.pl-it small{font-size:11px;color:var(--mute)}
.radar{position:relative;width:260px;height:260px;max-width:100%;border-radius:50%;background:radial-gradient(circle,#052b16,#020a06);border:2px solid #3ddc8466;overflow:hidden}
.rr{position:absolute;left:50%;top:50%;width:calc(var(--s) * 33%);height:calc(var(--s) * 33%);transform:translate(-50%,-50%);border-radius:50%;border:1px solid #3ddc8433}
.sweep{position:absolute;inset:0;background:conic-gradient(from 0deg,#3ddc8466,transparent 25%);border-radius:50%;opacity:.3}
.radar.scan .sweep{opacity:1;animation:rot 1.4s linear infinite}
.blip{position:absolute;width:10px;height:10px;margin:-5px;border-radius:50%;background:#3ddc84;opacity:0;transform:scale(0);transition:.4s cubic-bezier(.2,1.8,.4,1)}
.blip.on{opacity:1;transform:none;box-shadow:0 0 12px #3ddc84}
.blip.best{background:var(--gold2);box-shadow:0 0 0 6px #f5b40044,0 0 20px var(--gold);transform:scale(1.6)}
.r-me{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:22px}
.city3d{position:relative;width:100%;height:300px;perspective:700px;overflow:hidden;border-radius:18px;background:radial-gradient(circle at 50% 0%,#1a1040,#05040c)}
.plane{position:absolute;left:5%;right:5%;top:8%;height:90%;transform:rotateX(55deg) rotateZ(-20deg);transform-style:preserve-3d;background:#0b0b18;border-radius:12px;box-shadow:0 0 60px #7b2bff44}
.bld{position:absolute;width:12px;height:12px;background:#24244a;transform-style:preserve-3d;box-shadow:0 0 0 1px #3a3a7a}
.bld:after{content:"";position:absolute;inset:0;background:#2e2e60;transform:translateZ(var(--h));box-shadow:0 0 6px #7b2bff55}
.pin3{position:absolute;width:20px;height:20px;margin:-10px;transform-style:preserve-3d}
.pin3 span{position:absolute;left:50%;bottom:50%;width:4px;height:40px;margin-left:-2px;background:linear-gradient(transparent,#ff2bd0);transform-origin:bottom;transform:rotateX(-90deg);box-shadow:0 0 12px #ff2bd0}
.pin3:before{content:"";position:absolute;inset:0;border-radius:50%;background:#ff2bd0;box-shadow:0 0 14px #ff2bd0}
.pin3.sel:before{background:var(--gold2);box-shadow:0 0 20px var(--gold)}
.cc{width:100%;text-align:left}
.cc-step{margin-bottom:12px}
.cc-step small{font-size:10.5px;font-weight:800;letter-spacing:2px;color:var(--mute)}
.cc-pts,.cc-slots{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cc-pts button,.cc-slots button{padding:8px 11px;border-radius:10px;font-size:12px;font-weight:800;background:var(--card);border:1px solid var(--line2)}
.cc-pts button.on,.cc-slots button.on{background:var(--goldgrad);color:#1a1200;border-color:transparent}
.cc-slots button:disabled{opacity:.3;text-decoration:line-through}
.cc-ticket{display:flex;gap:12px;align-items:center;padding:12px;border-radius:14px;background:#0b0a08;border:1.5px dashed var(--gold);opacity:0;transform:scale(.8)}
.cc-ticket.on{opacity:1;transform:none;transition:.5s cubic-bezier(.2,1.6,.4,1)}
.cc-ticket small{font-size:10px;letter-spacing:2px;color:#3ddc84;font-weight:800}
.cc-ticket b{display:block;font-size:15px}.cc-ticket span{font-size:12px;color:#cfc9ba}

/* ---------- plusieurs boutiques ---------- */
.cities{width:100%;display:grid;gap:7px}
.cities>small{font-size:11px;letter-spacing:3px;color:var(--mute);font-weight:800;text-align:center}
.city{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;border:1px solid var(--c);text-align:left;animation:in .4s both}
.city span{font-size:24px}.city b{flex:1;font-size:15px}.city em{font-style:normal;color:var(--c);font-weight:800}
.shop-v,.ss-page{width:100%;padding:14px;border-radius:18px;border:1px solid var(--c)}
.shop-v{animation:in .4s}
.sv-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sv-h span{font-size:26px}.sv-h b{flex:1;font-family:"Russo One";font-weight:400;font-size:18px;color:var(--c)}
.sv-h button{font-size:12px;font-weight:800;color:var(--c);padding:6px 10px;border-radius:9px;border:1px solid var(--c)}
.mps{display:grid;gap:6px}
.mp{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:12px;background:#0006;border:1px solid #ffffff14}
.mp b{font-size:13px}.mp small{font-size:11.5px;color:var(--c);font-weight:800}
.mp.out{opacity:.45}.mp.out small{color:#ff8a9c}
.sw-app{width:100%;padding:14px;border-radius:18px;border:1px solid var(--c);transition:background .5s,border-color .5s}
.sw-app.swap .mps{animation:in .4s}
.sw-pill{display:inline-flex;gap:6px;align-items:center;padding:8px 14px;border-radius:99px;background:#0008;border:1px solid var(--c);font-size:13px;margin-bottom:12px;cursor:pointer}
.sw-pill b{color:var(--c)}
.sw-row{display:flex;justify-content:center;gap:8px;margin-top:12px}
.sw-row button{width:42px;height:42px;border-radius:12px;font-size:20px;background:#0006;border:1.5px solid #ffffff22}
.sw-row button.on{border-color:var(--c);box-shadow:0 0 14px var(--c)}
.fr{position:relative;width:260px;height:270px;max-width:100%}
.fr svg{width:100%;height:100%}
.fr path{fill:#15161f;stroke:#f5b40066;stroke-width:.8}
.fr-dot{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:2px}
.fr-dot i{width:14px;height:14px;border-radius:50%;background:var(--c);transition:.3s}
.fr-dot span{font-size:10px;font-weight:800;padding:1px 5px;border-radius:6px;background:#000a}
.fr-dot.sel i{transform:scale(1.5);box-shadow:0 0 16px var(--c)}
.fr .map-card{bottom:-6px}
.swipe-shops{width:100%}
.ss-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;touch-action:pan-x}
.ss-track::-webkit-scrollbar{display:none}
.ss-page{flex:0 0 100%;scroll-snap-align:center}
.ss-dots{display:flex;justify-content:center;gap:6px;margin-top:10px}
.ss-dots i{width:7px;height:7px;border-radius:9px;background:#ffffff33;transition:.3s}
.ss-dots i.on{width:22px;background:var(--gold)}
.geo-scan{position:relative;width:120px;height:120px;margin:0 auto 14px;display:grid;place-items:center;font-size:40px}
.geo-scan i{position:absolute;inset:0;border-radius:50%;border:2px solid var(--blue);opacity:0;animation:wave 2s infinite}
.geo-scan i:nth-child(2){animation-delay:.6s}.geo-scan i:nth-child(3){animation-delay:1.2s}
.geo.ok .geo-scan i{border-color:#3ddc84}
.geo>b{display:block;font-family:"Russo One";font-weight:400;font-size:20px}
.geo>small{display:block;font-size:12.5px;color:#cfc9ba;margin-top:4px}
/* carte membre : hauteur fixe pour que les boutons de niveau restent en dessous */
.mc-wrap{height:196px;flex:none}
.mcard{width:100%;height:196px;aspect-ratio:auto}
