/* The map library owns marker transforms. Relief and motion live on inner artwork. */
.zv-ground-symbol{position:relative;width:50px;height:62px;pointer-events:none;isolation:isolate}.zv-object{display:block;width:100%;height:100%;transform:scale(var(--zv-object-scale,.8));transform-origin:50% 100%;filter:drop-shadow(0 3px 3px #0008);transition:transform .18s ease-out}.zv-object svg{display:block;width:100%;height:100%;overflow:visible}.zv-signal{position:absolute;left:25%;right:25%;bottom:6%;height:10%;border:1px solid #d4ff77;border-radius:50%;box-shadow:0 0 12px #c1ff7966;opacity:.6;animation:zv-beacon 3s ease-in-out infinite;animation-delay:var(--zv-delay,0s);pointer-events:none}.zv-close .zv-ground-symbol .zv-object{animation:zv-breathe 3.8s ease-in-out infinite;animation-delay:var(--zv-delay,0s)}
.sv-game .sv-chest{width:58px;height:66px;filter:none;isolation:isolate}.sv-chest .zv-safe-art{filter:drop-shadow(0 0 5px #e6c76b55)}.zv-close .sv-chest:not(.sv-collected) .zv-safe-art{animation:zv-safe 3.5s ease-in-out infinite}.sv-game .sv-collected{opacity:.45}.sv-game .sv-collected .zv-safe-art{animation:none}.sv-game .sv-chest b{right:1px;top:3px;z-index:2;border:1px solid #fff1b5;box-shadow:0 2px 6px #0008}.sv-chest::after{content:'';position:absolute;left:10%;right:10%;bottom:-5px;height:9px;border:1px solid #eacb71aa;border-radius:50%;box-shadow:0 0 12px #f4c96766;z-index:-1}
.sv-monster .sv-creature{filter:drop-shadow(0 1px 2px #0009)}.sv-monster.sv-running:not(.sv-werewolf) .sv-stride{animation:zv-limp .68s ease-in-out infinite;animation-delay:var(--sv-phase,0s)}.sv-werewolf.sv-running .sv-stride{animation:zv-gallop .38s ease-in-out infinite}.sv-player::before,.z-person::before{content:'';position:absolute;bottom:-3px;left:12%;right:12%;height:10px;background:#0a1019a6;border:1px solid #cda4ff88;border-radius:50%;box-shadow:0 0 10px #ab7aee66;z-index:-1}.z-person.z-zombie::before{border-color:#c2fc7c;box-shadow:0 0 12px #adff6966}.sv-player.sv-player-infected::before{border-color:#bcff72}.sv-player.sv-player-infected .gp-avatar{filter:sepia(.6) hue-rotate(38deg)}
.sv-game .sv-hud,#zombieTestDialog .z-header,.sv-game .sv-bottom,#zombieTestDialog .z-card{background:linear-gradient(135deg,#292037e8,#111922e8);border-color:#be94e05c;box-shadow:0 8px 30px #050a164f,inset 0 1px #ffffff0d;backdrop-filter:blur(14px)}.sv-game .sv-hud{gap:9px}.sv-game .sv-heading b{font-weight:800;letter-spacing:-.35px}.sv-game .sv-count{padding:2px 9px;border-left:1px solid #d5b0ef44;font-size:23px}.sv-game .sv-count::after{content:'COFFRES';display:block;font:700 7px/1.3 system-ui;letter-spacing:1px;color:#d8c7e3;text-align:center}.sv-game .sv-vitals{display:flex;gap:12px;padding:7px 12px;border:1px solid #b599ce55;border-radius:12px;background:#101b24e8;color:#d9f9b0;font:750 11px system-ui;position:absolute;top:calc(96px + env(safe-area-inset-top));left:12px;z-index:2;pointer-events:none}.sv-vitals span+span{color:#d7b6f4}.sv-mission-time{font-variant-numeric:tabular-nums}.sv-game .sv-controls button{min-height:44px}.sv-game .sv-controls button:first-child{border-color:#c99aee;background:#553276}.sv-game .sv-bottom{padding:12px}.sv-game .gp-danger-label{top:calc(137px + env(safe-area-inset-top))}.sv-game .gp-reaction{top:calc(170px + env(safe-area-inset-top))}.zv-infection{position:absolute;inset:0;z-index:10;pointer-events:none;background:repeating-linear-gradient(123deg,transparent 0 24%,#daffc200 24%,#dcffae99 24.4%,transparent 25% 29%),radial-gradient(ellipse,transparent 15%,#7dbd3988 75%,#27431ed9);animation:zv-infect 1.4s ease-out both}.zv-infection::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 25% 90%,#a9df6d88,transparent 50%),radial-gradient(ellipse at 80% 15%,#86cf5566,transparent 50%);animation:zv-smoke 1.4s ease-out both}
@keyframes zv-beacon{50%{opacity:.9;box-shadow:0 0 17px #c9ff8a99}}@keyframes zv-breathe{50%{filter:drop-shadow(0 2px 5px #c1ff7666)}}@keyframes zv-safe{50%{translate:0 -3px;filter:drop-shadow(0 0 9px #ffe1a38a)}}@keyframes zv-limp{0%,100%{translate:0 0;rotate:-2deg}35%{translate:0 -3px;rotate:2deg}70%{translate:0 -1px;rotate:0deg}}@keyframes zv-gallop{0%,100%{translate:0 0;rotate:-2deg}50%{translate:0 -4px;rotate:2deg}}@keyframes zv-infect{0%{opacity:0}18%,40%{opacity:1}100%{opacity:0}}@keyframes zv-smoke{to{translate:0 -10%;scale:1.2;opacity:0}}
@media(min-width:700px){.sv-game .sv-vitals{top:113px;left:25px}.sv-game .sv-hud{max-width:490px}.sv-game .gp-danger-label{top:153px}.sv-game .gp-reaction{top:190px}.sv-game .sv-bottom{max-width:430px}}
@media(max-width:380px){.sv-game .sv-hud{gap:6px;padding:7px}.sv-game .sv-heading b{font-size:14px}.sv-game .sv-hud button{padding:9px 11px}.sv-game .sv-count{font-size:20px;padding-inline:6px}}
@media(prefers-reduced-motion:reduce){.zv-signal,.zv-close .zv-ground-symbol .zv-object,.zv-close .sv-chest:not(.sv-collected) .zv-safe-art,.sv-monster.sv-running:not(.sv-werewolf) .sv-stride,.sv-werewolf.sv-running .sv-stride,.zv-infection,.zv-infection::after{animation:none}.zv-object{transition:none}}

.sv-game .sv-perspective{position:absolute;z-index:2;right:10px;top:185px;width:44px;min-height:44px;padding:0;background:#241c32ef;border:1px solid #c9a1e0;color:#f4e8ff;font:800 12px system-ui;box-shadow:0 3px 12px #0006}.sv-game .sv-perspective[aria-pressed=true]{color:#d4ff91;border-color:#c4ef85}
/* Compact game chrome, scoped away from the main family map and lobby. */
.sv-dialog.sv-game{--sv-top:calc(8px + env(safe-area-inset-top));font-size:14px}
.sv-dialog.sv-game .sv-hud{position:absolute;inset:var(--sv-top) 8px auto 8px;min-height:54px;height:auto;max-width:440px;padding:6px 8px;gap:8px;border-radius:16px;box-sizing:border-box;pointer-events:auto}
.sv-dialog.sv-game .sv-hud button{width:38px;height:38px;min-width:38px;min-height:38px;padding:0;font-size:18px;border-radius:11px}
.sv-dialog.sv-game .sv-heading b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}.sv-dialog.sv-game .sv-heading small{font-size:8px;letter-spacing:1.5px}
.sv-dialog.sv-game .sv-count{font-size:23px;line-height:1;padding:3px 8px}.sv-dialog.sv-game .sv-count::after{font-size:7px;margin-top:4px}
.sv-dialog.sv-game .sv-vitals{top:calc(var(--sv-top) + 62px);left:8px;padding:6px 10px;gap:10px;font-size:11px;border-radius:10px}
.sv-dialog.sv-game .gp-danger-label{top:calc(var(--sv-top) + 98px);font-size:11px;padding:5px 10px;max-width:calc(100vw - 110px);border-radius:12px}
.sv-dialog.sv-game .gp-reaction{top:calc(var(--sv-top) + 134px);font-size:12px}
.sv-dialog.sv-game .sv-bottom{left:8px;right:8px;bottom:calc(12px + env(safe-area-inset-bottom));padding:9px 11px;border-radius:16px;max-width:430px;max-height:30dvh;overflow:auto;box-sizing:border-box}
.sv-dialog.sv-game .sv-bottom .sv-status{font-size:11px;line-height:1.4;margin:0 0 7px}.sv-dialog.sv-game .sv-controls{gap:6px}.sv-dialog.sv-game .sv-controls button{min-height:40px;padding:7px 11px;font-size:12px;border-radius:11px}
.sv-dialog.sv-game.sv-waiting .sv-bottom{max-height:65dvh}
.sv-dialog.sv-game .sv-player>small{top:auto;bottom:-25px;max-width:90px;overflow:hidden;text-overflow:ellipsis;padding:2px 6px;font:700 10px/15px system-ui;background:#291e36dd;border:1px solid #c7a0e055;border-radius:7px}
.sv-dialog.sv-game .sv-chest{width:70px;height:80px}.sv-dialog.sv-game .sv-chest::after{inset:auto 10% -5px;height:12px;animation:none}
.sv-dialog.sv-game .maplibregl-ctrl-top-right{top:calc(var(--sv-top) + 104px);right:8px}
.sv-dialog.sv-game .maplibregl-ctrl-group{border:1px solid #b898cd88;border-radius:12px;overflow:hidden;background:#241c32f0;box-shadow:0 3px 12px #0006}
.sv-dialog.sv-game .maplibregl-ctrl-group button{width:40px;height:40px;min-height:40px;padding:0;border:0;border-radius:0;background:transparent;color:#fff;position:relative;font:700 25px/40px system-ui}
.sv-dialog.sv-game .maplibregl-ctrl-group button+button{border-top:1px solid #b898cd44}.sv-dialog.sv-game .maplibregl-ctrl-icon{display:none}
.sv-dialog.sv-game .maplibregl-ctrl-zoom-in::after{content:'+'}.sv-dialog.sv-game .maplibregl-ctrl-zoom-out::after{content:'−'}
.sv-dialog.sv-game .sv-perspective{top:calc(var(--sv-top) + 198px);right:8px;width:42px;min-height:42px;font-size:12px}
.sv-dialog.sv-game .maplibregl-ctrl-bottom-right,.sv-dialog.sv-game .maplibregl-ctrl-bottom-left{bottom:0}
@media(min-width:700px){.sv-dialog.sv-game .sv-hud{left:20px;top:20px}.sv-dialog.sv-game .sv-vitals{left:20px;top:82px}.sv-dialog.sv-game .sv-bottom{left:20px;bottom:24px}.sv-dialog.sv-game .gp-danger-label{top:119px}}

@media(max-width:699px){.sv-dialog.sv-game{--sv-top:max(26px,env(safe-area-inset-top))}.sv-dialog.sv-game .sv-bottom{bottom:max(26px,calc(12px + env(safe-area-inset-bottom)))}}
