:root{
  --ink:#0b0820; --bg:#14102b; --panel:#211a4a; --panel2:#2b2360; --line:#4a3f94; --txt:#f4f1ff; --mut:#aaa3d8;
  --red:#e8433c; --green:#46c957; --blue:#4cd8e8; --yellow:#f7d23e; --orange:#ff9a3d; --mg:#f06bb4;
  --fd:"Fredoka","Nunito",system-ui,sans-serif; --fb:"Nunito",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);font:16px/1.4 var(--fb);overscroll-behavior:none}
body{padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
#app{max-width:520px;margin:0 auto;padding:14px;min-height:100%;display:flex;flex-direction:column;gap:12px}
h1{font-size:26px;margin:4px 0}h2{font-size:20px;margin:2px 0}h3{font-size:16px;margin:0 0 6px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.muted{color:var(--mut);font-size:14px}.center{text-align:center}.row{display:flex;gap:8px;align-items:center}.grow{flex:1}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px}
.btn{appearance:none;border:1px solid var(--line);background:var(--panel2);color:var(--txt);font:inherit;font-weight:600;border-radius:12px;padding:14px 16px;width:100%;touch-action:manipulation}
.btn:active{filter:brightness(1.25)}.btn[disabled]{opacity:.4}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.danger{background:var(--red);border-color:var(--red);color:#fff}
.btn.good{background:var(--green);border-color:var(--green);color:#04210b}
.btn.small{padding:8px 12px;width:auto;font-size:14px}
input[type=text],input[type=tel],input[type=number]{width:100%;font:inherit;font-size:20px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel2);color:var(--txt)}
.bar{height:12px;background:var(--panel2);border-radius:8px;overflow:hidden;border:1px solid var(--line)}
.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--green));transition:width .4s}
.bar.dim>i{background:var(--mut)}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;background:var(--panel2);border:1px solid var(--line);font-size:12px;color:var(--mut)}
.tasklist{display:flex;flex-direction:column;gap:6px}
.task{display:flex;gap:10px;align-items:center;padding:9px 11px;border-radius:10px;background:var(--panel2);border:1px solid var(--line)}
.task.done{opacity:.55}.task .ic{font-size:20px;width:26px;text-align:center}.task .nm{font-weight:600}.task .zn{font-size:12px;color:var(--mut)}
.task .ck{margin-left:auto;font-size:18px;color:var(--green)}
nav.dock{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:auto;padding-top:8px}
nav.dock .btn{padding:12px 6px;font-size:14px;display:flex;flex-direction:column;gap:2px;align-items:center}
nav.dock .btn b{font-size:22px}
.banner{border-radius:12px;padding:12px 14px;font-weight:700}
.banner.red{background:#3a1216;border:1px solid var(--red);color:#ffb4b7;animation:pulse 1s infinite alternate}
.banner.orange{background:#38200f;border:1px solid var(--orange);color:#ffcc9f}
@keyframes pulse{from{background:#3a1216}to{background:#58161c}}
.big{font-size:44px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums}
.ring{width:190px;height:190px;border-radius:50%;margin:8px auto;display:flex;align-items:center;justify-content:center;font-size:42px;font-weight:800;font-variant-numeric:tabular-nums;background:conic-gradient(var(--blue) var(--deg,0deg),var(--panel2) 0)}
.ring>span{background:var(--bg);width:160px;height:160px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.ring.ready{background:var(--green)}
.zonecard{margin-bottom:8px}.zonecard .e{display:flex;justify-content:space-between;gap:8px;font-size:14px;padding:3px 0;border-top:1px dashed var(--line)}
.zonecard .e:first-of-type{border-top:0}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:8px}.opts.one{grid-template-columns:1fr}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel2);border:1px solid var(--line);padding:6px 10px;border-radius:10px;margin:2px}
.seq{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:10px 0}.seq .n{min-width:48px;padding:10px;text-align:center;font-size:24px;font-weight:700;border-radius:10px;background:var(--panel2);border:1px solid var(--line)}
.sudo{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;max-width:280px;margin:10px auto}
.sudo button{aspect-ratio:1;font-size:26px;font-weight:700;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--txt)}
.sudo button.g{background:#222b44;color:var(--mut)}.sudo button:nth-child(4n+2),.sudo button:nth-child(4n+3){}
.sudo button:nth-child(4n+2){margin-right:6px}.sudo button:nth-child(n+5):nth-child(-n+8),.sudo button:nth-child(n+13){}
.pads{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:280px;margin:12px auto}
.pad{aspect-ratio:1;border-radius:18px;border:0;opacity:.45;touch-action:manipulation}.pad.on{opacity:1;filter:brightness(1.4)}
.tiles{display:flex;gap:6px;justify-content:center;margin:10px 0}.tiles span{width:38px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--panel2);border:1px solid var(--line);font-weight:800;font-size:22px}
.swipe-track{position:relative;height:84px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;margin:18px 0;overflow:hidden}
.swipe-card{position:absolute;left:4px;top:8px;width:96px;height:66px;border-radius:10px;background:linear-gradient(135deg,#7aa6ff,#4c5fd6);display:flex;align-items:center;justify-content:center;font-size:34px;touch-action:none;user-select:none}
.wires{width:100%;max-width:340px;display:block;margin:0 auto;touch-action:manipulation}
.manifold{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.manifold button{aspect-ratio:1;font-size:24px;font-weight:800;border-radius:12px;border:1px solid var(--line);background:var(--panel2);color:var(--txt)}.manifold button.ok{background:var(--green);color:#04210b}.manifold button.bad{background:var(--red)}
.ast-area{position:relative;width:100%;max-width:340px;aspect-ratio:1;margin:0 auto;background:radial-gradient(circle at 50% 50%,#10172b,#070a12);border:1px solid var(--line);border-radius:14px;overflow:hidden;touch-action:manipulation}
.ast{position:absolute;width:50px;height:50px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#c9b79c,#6b5a45);border:2px solid #3b2f22;touch-action:manipulation}
.hexarea{position:relative;width:300px;height:280px;margin:0 auto}.hex{position:absolute;width:62px;height:62px;border-radius:50%;border:3px solid var(--line);background:#e8ecf6;touch-action:manipulation}.hex.red{background:var(--red);border-color:#ffb4b7}
.align{display:flex;gap:40px;justify-content:center;margin:14px 0}
.eng{position:relative;width:70px;height:240px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;touch-action:none}
.eng .tgt{position:absolute;left:-8px;right:-8px;height:4px;background:var(--yellow);transform:translateY(-2px)}
.eng .hd{position:absolute;left:6px;right:6px;height:34px;margin-top:-17px;border-radius:10px;background:var(--blue);border:2px solid #fff;touch-action:none}
.eng.ok .hd{background:var(--green)}
.gauge{position:relative;height:46px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;margin:14px 0;overflow:hidden}
.gauge .zone{position:absolute;top:0;bottom:0;background:rgba(63,185,80,.55)}.gauge .needle{position:absolute;top:0;bottom:0;width:6px;margin-left:-3px;background:#fff}
#overlay{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;padding:24px;text-align:center}
#overlay.show{display:flex}#overlay .box{max-width:420px}#overlay h1{font-size:34px;line-height:1.15}#overlay p{font-size:18px}
#overlay.red{background:#a4151c;animation:flash .5s infinite alternate}#overlay.green{background:#12633a}#overlay.blue{background:#173b82}#overlay.gold{background:#7a5b06}
@keyframes flash{from{background:#a4151c}to{background:#e5484d}}
#toast{position:fixed;left:0;right:0;bottom:14px;display:flex;flex-direction:column;align-items:center;gap:6px;z-index:60;pointer-events:none;padding:0 14px}
#toast div{background:#222b44;border:1px solid var(--line);padding:10px 14px;border-radius:12px;max-width:420px;box-shadow:0 6px 20px #0008}
#toast div.err{border-color:var(--red)}#toast div.ok{border-color:var(--green)}#toast div.warn{border-color:var(--orange)}
.role{padding:26px 14px;border-radius:16px;text-align:center}.role.crew{background:#12306a}.role.imp{background:#6d1218}.role h1{font-size:34px}
.result{text-align:center;padding:20px 8px}.result .ico{font-size:72px}
.hist{max-height:320px;overflow:auto;font-size:14px}.hist div{padding:4px 0;border-top:1px dashed var(--line)}.hist b{color:var(--mut);font-variant-numeric:tabular-nums;margin-right:6px}
.cam{width:100%;border-radius:12px;background:#000;min-height:120px;display:block}

/* ===== Habillage GweGames : cartoon vectoriel plat, contours épais, ombres pleines ===== */
h1,h2,h3,.btn,.pill,.big,.ring,.nm{font-family:var(--fd)}
h1{font-weight:700;letter-spacing:.01em}h2{font-weight:600}
h3{text-transform:none;letter-spacing:.02em;color:var(--blue);font-size:18px;font-weight:600}
#app::before{content:"";display:block;height:14px;margin:0 -2px 2px;border-radius:8px;opacity:.95;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='60' height='14' viewBox='0 0 60 14'><path d='M0 7 Q15 -2 30 7 T60 7' fill='none' stroke='%23f06bb4' stroke-width='3.5' stroke-linecap='round'/><path d='M0 7 Q15 16 30 7 T60 7' fill='none' stroke='%234cd8e8' stroke-width='3.5' stroke-linecap='round'/></svg>") repeat-x center/60px 14px}
.card{border:3px solid var(--line);border-radius:20px;box-shadow:0 5px 0 var(--ink)}
.btn{border:3px solid var(--line);border-radius:16px;box-shadow:0 4px 0 var(--ink);font-weight:600;transition:transform .06s}
.btn:active{filter:none;transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}
.btn.primary{background:var(--blue);border-color:#2fa6b6;color:var(--ink)}
.btn.danger{background:var(--red);border-color:#a82a25;color:#fff}
.btn.good{background:var(--green);border-color:#2f9a3f;color:var(--ink)}
input[type=text],input[type=tel],input[type=number]{border:3px solid var(--line);border-radius:14px}
.bar{height:16px;border:3px solid var(--ink);border-radius:10px;background:var(--ink)}
.bar>i{background:linear-gradient(90deg,var(--mg),var(--blue));border-radius:6px}
.pill{border:2px solid var(--line);font-size:13px;color:var(--txt)}
.task{border:3px solid var(--line);border-radius:14px;background:var(--panel2);box-shadow:0 3px 0 var(--ink)}
.task .ic{font-size:24px;width:34px;height:34px;line-height:34px;border-radius:50%;background:var(--ink)}
.task .nm{font-size:17px}
.task.done{opacity:1;background:#14502f;border-color:var(--green);box-shadow:0 3px 0 var(--ink),0 0 0 2px #46c95733 inset}
.task.done .ic{background:var(--green)}
.task.part{background:#5a3305;border-color:#ff9a1f}.task.part .ic{background:#ff9a1f}.task.part .nm{color:#ffe2b8}.task.part .zn{color:#ffc27a}.ck.part{color:#ffb347;font-weight:700;font-size:12px}.ck.x2{color:#ffb347;font-weight:700;font-size:13px}
.task.done .nm{color:#d6ffe0}.task.done .zn{color:#9fe0b2}
.task .ck{background:var(--green);color:var(--ink);font:700 13px var(--fd);padding:3px 10px;border-radius:99px}
.pinbtn{appearance:none;border:2px solid var(--line);background:var(--ink);border-radius:12px;font-size:18px;padding:6px 9px;touch-action:manipulation}
nav.dock{grid-template-columns:repeat(5,1fr);gap:6px}
nav.dock .btn{padding:10px 2px;font-size:12px}nav.dock .btn b{font-size:20px}
.banner{border-width:3px;border-radius:16px;font-family:var(--fd)}
.ring>span{background:var(--bg)}
.role{border:3px solid var(--ink);box-shadow:0 5px 0 var(--ink);border-radius:20px}
#toast div{background:var(--panel);border:3px solid var(--line);box-shadow:0 4px 0 var(--ink)}
#sos{display:none;position:fixed;left:0;right:0;bottom:0;z-index:40;gap:8px;grid-template-columns:1fr 1.25fr;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--ink);border-top:3px solid var(--line)}
#sos.show{display:grid}
#sos .btn{padding:12px 6px;font-size:15px}
#sos .sos-body{background:var(--yellow);border-color:#c9a21a;color:var(--ink)}
body.hassos #app{padding-bottom:96px}body.hassos #toast{bottom:92px}
.plan{display:block;width:100%;height:auto;aspect-ratio:1;border-radius:14px;touch-action:none}
.plan-bg{fill:#1a1540}.plan-room{fill:#2f2670;stroke:#8a7bf0;stroke-width:.6}
.plan-room.hall{fill:#4b3fa8;stroke:#b3a8ff}
.plan-room.outside{fill:#173f33;stroke:#58d99a;stroke-dasharray:2 1.2}
.plan-name{fill:#f4f1ff;font:600 3.4px var(--fd)}.plan-name.small{font-size:2.6px;fill:#d9d3ff}
.plan-door rect{fill:#f7d23e;stroke:#0b0820;stroke-width:.35}
.plan-pin circle{fill:var(--yellow);stroke:var(--ink);stroke-width:.8}.plan-pin.done circle{fill:var(--green)}
.plan-ic{font-size:3.6px;fill:var(--ink)}
.plan-pin.focus circle{animation:pinpulse .8s infinite alternate;transform-box:fill-box;transform-origin:center}
.plan-pin.sab circle{fill:#e8433c}.plan-pin.sab.alert circle{animation:pinpulse .5s infinite alternate;transform-box:fill-box;transform-origin:center}
.task.mand{border:2px solid var(--yellow);box-shadow:0 0 0 2px #0b0820,0 0 14px rgba(247,210,62,.45)}.task.mand .nm::before{content:'⭐ ';}
@keyframes pinpulse{from{transform:scale(1)}to{transform:scale(1.6)}}
@media (prefers-reduced-motion:reduce){.plan-pin.focus circle,.plan-pin.sab.alert circle,.banner.red,#overlay.red{animation:none}}

/* ===== Scènes de tâches numériques : décor illustré ===== */
.scene{position:relative;border-radius:20px;border:3px solid var(--ink);padding:0 0 12px;overflow:hidden;
  background:radial-gradient(circle at 20% 0%,#3a2f80 0,#241c58 55%,#1a1540 100%);box-shadow:0 5px 0 var(--ink)}
.scene .plate{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--ink);font:600 15px var(--fd);color:var(--yellow)}
.scene .plate span{flex:1;text-align:center}
.led{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);display:inline-block}
.led.b{background:var(--yellow);box-shadow:0 0 8px var(--yellow)}.led.c{background:var(--red);box-shadow:0 0 8px var(--red)}
.scenebody{padding:12px 12px 0;display:flex;flex-direction:column;gap:10px}
.scene::before,.scene::after{content:"";position:absolute;width:11px;height:11px;border-radius:50%;background:#6a5fc0;border:2px solid var(--ink);top:44px;z-index:2}
.scene::before{left:6px}.scene::after{right:6px}
.theme-admin .scenebody{background:repeating-linear-gradient(135deg,#ffffff06 0 10px,transparent 10px 20px)}
.theme-elec{background:radial-gradient(circle at 80% 0%,#5a3a7a,#241c58 60%)}
.theme-engine{background:radial-gradient(circle at 50% 0%,#3d5a9a,#221a52 65%)}
.theme-weapons{background:radial-gradient(circle at 50% 0%,#7a2f56,#221a52 65%)}
.theme-shield{background:radial-gradient(circle at 50% 0%,#2f7a8a,#221a52 65%)}
.theme-lab{background:radial-gradient(circle at 50% 0%,#2f7a56,#221a52 65%)}
.theme-reactor{background:radial-gradient(circle at 50% 0%,#8a6a2f,#221a52 65%)}
.theme-med{background:radial-gradient(circle at 50% 0%,#2f6a7a,#221a52 65%)}
.stage{border-radius:14px;overflow:hidden;touch-action:none;line-height:0}
.scenesvg{display:block;width:100%;height:auto;max-height:62vh;user-select:none;-webkit-user-select:none}
.scenemsg{text-align:center;color:var(--txt);font:600 15px var(--fd);min-height:22px}
.bigaction{font-size:20px;padding:18px 14px}
.holdzone{display:flex;align-items:center;justify-content:center;min-height:70px;border:3px dashed var(--blue);border-radius:18px;color:var(--blue);font:600 18px var(--fd);user-select:none;-webkit-user-select:none;touch-action:none}
/* ===== Icônes et illustrations de l'interface ===== */
.artbox{display:inline-flex;line-height:0}.artbox svg{display:block;width:100%;height:100%}
.ico{width:26px;height:26px}
nav.dock .btn .ico{width:30px;height:30px}
#sos .ico{width:24px;height:24px;margin-right:6px}#sos .btn{display:flex;align-items:center;justify-content:center;gap:2px}
.bannerbox{display:block;width:100%;margin-bottom:4px}.bannerbox svg{width:100%;height:auto}
.hero{display:flex;align-items:center;gap:14px}.hero .botbox{width:84px;height:84px;flex:none}
.hero h1{margin:0}
.botbox.big{width:120px;height:120px;margin:0 auto}
.tablebox{display:block;width:100%;max-width:240px;margin:0 auto}
.rk{position:relative;overflow:visible}
.rk>i{border-radius:6px}
.rk .rocket{position:absolute;top:-13px;width:30px;height:30px;transform:translateX(-50%) rotate(90deg);transition:left .4s;z-index:1}
.rk .goal{position:absolute;right:-6px;top:-12px;width:30px;height:30px}
.rkwrap{padding:12px 14px 4px 4px}
.cap{display:flex;justify-content:space-between;color:var(--mut);font-size:13px;margin-top:6px}
#overlay .bigart{width:110px;height:110px;margin:0 auto 10px}
.task .ic.art{padding:5px}
.zonebadge{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle;border:2px solid var(--ink)}
.bigicon{width:80px;height:80px;margin:0 auto 6px;display:block}
#overlay .bigart{display:block}

/* ===== Habillage des mini-jeux existants ===== */
.swipe-track{background:linear-gradient(#3a2f80,#2a2262);border:3px solid var(--ink);box-shadow:inset 0 4px 0 #ffffff14}
.swipe-track .slot{position:absolute;left:8px;right:8px;top:50%;height:10px;margin-top:-5px;border-radius:5px;background:var(--ink)}
.swipe-track .led{position:absolute;right:12px;top:8px;width:12px;height:12px;border-radius:50%;background:var(--red);box-shadow:0 0 8px var(--red)}
.swipe-card{background:none!important;border-radius:0}.swipe-card svg{display:block;filter:drop-shadow(0 3px 0 var(--ink))}
.wires{filter:none}
.manifold{padding:14px;border-radius:16px;background:repeating-linear-gradient(0deg,#3a2f80 0 14px,#2a2262 14px 20px);border:3px solid var(--ink)}
.manifold button{border-radius:50%!important;border:4px solid var(--ink)!important;background:radial-gradient(circle at 35% 30%,#8a7bf0,#4a3f94 70%)!important;color:var(--txt);font-family:var(--fd);box-shadow:0 4px 0 var(--ink)}
.manifold button.ok{background:radial-gradient(circle at 35% 30%,#8af0a0,#2f9a3f 70%)!important;color:var(--ink)}
.manifold button.bad{background:radial-gradient(circle at 35% 30%,#ff9a9a,#a82a25 70%)!important}
.ast-area{border:3px solid var(--ink)!important;background:radial-gradient(circle at 12% 88%,#f06bb4 0 9%,transparent 9.5%),radial-gradient(circle at 50% 50%,#1a1540,#0b0820)!important}
.ast{background:radial-gradient(circle at 30% 28%,#ffffff55 0 12%,transparent 13%),radial-gradient(circle at 66% 62%,#0b082055 0 14%,transparent 15%),radial-gradient(circle at 38% 70%,#0b082044 0 9%,transparent 10%),#b89b78!important;border:3px solid var(--ink)!important;border-radius:46% 54% 50% 50%/55% 45% 55% 45%!important}
.eng{background:repeating-linear-gradient(0deg,#4a3f94 0 10px,#3a2f80 10px 14px)!important;border:3px solid var(--ink)!important;border-radius:16px 16px 40px 40px!important}
.eng .tgt{background:var(--yellow)!important;height:6px!important;border:2px solid var(--ink)}
.eng .hd{background:radial-gradient(circle at 35% 30%,#8af0ff,#3d9fb0)!important;border:3px solid var(--ink)!important}
.eng.ok .hd{background:radial-gradient(circle at 35% 30%,#8af0a0,#2f9a3f)!important}
.hexarea{filter:drop-shadow(0 4px 0 var(--ink))}
.hex{border:0!important;background:var(--ink)!important;clip-path:polygon(25% 4%,75% 4%,100% 50%,75% 96%,25% 96%,0 50%);width:68px!important;height:68px!important}
.hex::after{content:"";position:absolute;inset:6px;clip-path:polygon(25% 4%,75% 4%,100% 50%,75% 96%,25% 96%,0 50%);background:linear-gradient(135deg,#8af0ff,#3d9fb0)}
.hex.red::after{background:linear-gradient(135deg,#ff8a8a,#e8433c)}
.gauge{border:3px solid var(--ink)!important;background:repeating-linear-gradient(90deg,#3a2f80 0 10px,#2a2262 10px 12px)!important}
.gauge .needle{background:var(--yellow)!important;border:2px solid var(--ink)}
.theme-logic .scenebody{background:repeating-linear-gradient(0deg,#ffffff07 0 2px,transparent 2px 4px);box-shadow:inset 0 0 40px #4cd8e822}
.seq .n,.tiles span{border:3px solid var(--ink);background:var(--panel2);font-family:var(--fd)}

/* ===== Couleurs des joueurs, lecteur de QR code ===== */
.cdot{display:inline-block;width:16px;height:16px;border-radius:50%;border:2.5px solid var(--ink);box-shadow:0 0 0 1.5px #ffffff55;flex:none;margin-right:6px;vertical-align:middle}
.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;max-width:320px;margin:0 auto}
.sw{appearance:none;aspect-ratio:1;border-radius:50%;border:4px solid var(--ink);background:var(--c);box-shadow:0 0 0 2px #ffffff40,0 3px 0 var(--ink);touch-action:manipulation;font:700 18px var(--fd);color:var(--ink);padding:0}
.sw.on{box-shadow:0 0 0 4px var(--yellow),0 3px 0 var(--ink);transform:scale(1.1)}
.sw.taken{opacity:.25;box-shadow:none}
.botbox.mini{width:34px;height:34px;flex:none}
#sos{grid-template-columns:1fr .8fr 1.2fr}
#sos .btn{font-size:14px;padding:12px 4px}#sos .ico{width:22px;height:22px;margin-right:4px}
#sos .sos-scan{background:var(--blue);border-color:#2fa6b6;color:var(--ink)}
#scanner{display:none;position:fixed;inset:0;z-index:70;background:var(--ink);flex-direction:column;gap:12px;padding:calc(12px + env(safe-area-inset-top)) 14px calc(14px + env(safe-area-inset-bottom))}
#scanner.show{display:flex}
.scanhead{display:flex;align-items:center;justify-content:space-between;font:600 20px var(--fd)}
.scanview{position:relative;flex:1;min-height:0;border-radius:22px;overflow:hidden;border:3px solid var(--line);background:#000}
.scanview video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.reticle{position:absolute;left:50%;top:50%;width:62%;aspect-ratio:1;transform:translate(-50%,-50%);border:4px solid var(--blue);border-radius:22px;box-shadow:0 0 0 999px #0b082088;pointer-events:none}
.scanmsg{text-align:center;font:600 16px var(--fd);min-height:24px}
#sos .btn{display:flex;align-items:center;justify-content:center;gap:6px;line-height:1.15;text-align:center}
#sos .btn svg{flex:none}

.roundbadge{margin-left:auto;margin-right:8px;background:var(--yellow);color:var(--ink);border-radius:999px;padding:0 10px;font:600 12px var(--fd)}
.roundbadge:empty{display:none}
.holdzone.big{min-height:140px;display:grid;place-items:center;text-align:center;font-size:18px}
.instrnote{font-size:15px}

/* manches Shields à 3 couleurs, échec Swipe */
.hex.green::after{background:linear-gradient(135deg,#9bf59b,#2fa84a)!important}
.hex.blue::after{background:linear-gradient(135deg,#8ab4ff,#3a5bd6)!important}
.hex.red::after{background:linear-gradient(135deg,#ff8a8a,#e8433c)!important}
.swipe-track.bad{box-shadow:inset 0 0 0 4px var(--red)!important}

.pads.big{max-width:340px;gap:14px}
.pad{opacity:.75!important;border:4px solid var(--ink)!important}
.pad.on{opacity:1!important;transform:scale(1.06);filter:brightness(1.5)}
.hex.yellow::after{background:linear-gradient(135deg,#ffe98a,#e0b400)!important}

.votecard{text-align:left;display:block;padding:8px 10px;cursor:default}.vname{display:flex;align-items:center;gap:8px;font-weight:800}.vheads{display:flex;flex-wrap:wrap;gap:2px;margin-top:2px}.vheads .botbox.mini{width:30px;height:30px}.pop{animation:popin .35s ease-out}@keyframes popin{from{transform:scale(0) rotate(-20deg)}70%{transform:scale(1.25)}to{transform:scale(1)}}

/* ---- scène d'éjection ---- */
.ej-scene{position:relative;width:100%;max-width:760px;margin:0 auto;aspect-ratio:16/9;border-radius:18px;overflow:hidden;border:3px solid var(--ink);background:radial-gradient(circle at 80% 30%,#2a2170,#0b0820 70%)}
.ej-stars{position:absolute;inset:0;background-image:radial-gradient(2px 2px at 12% 20%,#fff,transparent),radial-gradient(2px 2px at 40% 70%,#fff,transparent),radial-gradient(1.5px 1.5px at 66% 35%,#fff,transparent),radial-gradient(2px 2px at 88% 78%,#fff,transparent),radial-gradient(1.5px 1.5px at 25% 88%,#fff,transparent),radial-gradient(2px 2px at 92% 12%,#fff,transparent)}
.ej-ship{position:absolute;left:-4%;top:12%;width:48%;height:76%;background:linear-gradient(90deg,#4a3f94,#6a5cc8);border:3px solid var(--ink);border-radius:0 40px 40px 0}
.ej-door{position:absolute;right:-3px;top:30%;width:14%;height:40%;background:#0b0820;border:3px solid var(--ink)}
.ej-scene .botbox{position:absolute;width:15%;aspect-ratio:1}
.ej-v{left:42%;top:38%;animation:ej-v 4.5s ease-in forwards}
.ej-p1{left:22%;top:20%;animation:ej-p 4.5s ease-in-out forwards}
.ej-p2{left:22%;top:56%;animation:ej-p 4.5s ease-in-out forwards;animation-delay:.1s}
@keyframes ej-v{0%,30%{transform:translate(0,0) rotate(0)}38%{transform:translate(0,0) rotate(-10deg)}100%{transform:translate(430%,-80%) scale(.12) rotate(1000deg);opacity:0}}
@keyframes ej-p{0%{transform:translate(-160%,0)}25%{transform:translate(0,0)}38%{transform:translate(110%,12%)}100%{transform:translate(110%,12%)}}
.ej-cap{position:absolute;left:0;right:0;bottom:6px;text-align:center;font-weight:800;font-size:clamp(14px,3.4vw,22px);color:#fff;text-shadow:0 2px 0 var(--ink)}
.verdict h2{font-size:clamp(20px,5vw,40px)}
/* ---- fin de partie ---- */
.endfx{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;overflow:hidden;animation:efin .6s ease-out}
.endfx.win{background:radial-gradient(circle at 50% 40%,#5a2fb0,#150f38 75%)}
.endfx.lose{background:radial-gradient(circle at 50% 40%,#3a1118,#08060f 80%)}
.endfx.fade{opacity:0;transition:opacity 1.1s}
.ef-box{position:relative;z-index:2;text-align:center;padding:20px;animation:efpop .8s cubic-bezier(.2,1.6,.4,1)}
.ef-box h1{font-size:clamp(34px,10vw,90px);margin:8px 0;text-shadow:0 4px 0 var(--ink)}
.ef-box .bigicon{width:clamp(90px,24vw,200px);height:clamp(90px,24vw,200px)}
.ef-p{position:absolute;top:-60px;animation:effall linear infinite}
.endfx.lose .ef-p{opacity:.5}
@keyframes effall{to{transform:translateY(115vh) rotate(540deg)}}
@keyframes efin{from{opacity:0}}
@keyframes efpop{from{transform:scale(.2);opacity:0}}
/* ---- écran Cafétéria ---- */
.cafe .timer-xl{font-size:clamp(90px,26vw,300px);font-weight:800;line-height:1;font-variant-numeric:tabular-nums;font-family:Fredoka,sans-serif}
.cafe .votecard{font-size:clamp(18px,3vw,34px)}.cafe .vheads .botbox.mini{width:clamp(34px,5vw,60px);height:clamp(34px,5vw,60px)}
.cafe .tablebox{width:min(420px,60vw);display:block;margin:0 auto}
.cafe .verdict h2{font-size:clamp(28px,6vw,64px)}

#fsbtn{position:fixed;top:calc(8px + env(safe-area-inset-top));right:8px;z-index:45;width:36px;height:36px;border-radius:10px;border:2px solid var(--line);background:#14102bcc;color:var(--txt);font-size:18px;line-height:1;padding:0;opacity:.75}
@media (min-width:900px){#fsbtn{display:none!important}}
