.zombie-dialog{width:min(1100px,96vw);max-width:96vw;max-height:96dvh;overflow:auto;border:1px solid var(--orange);border-radius:0;background:#000;color:#fff;font-family:Arial,Helvetica,sans-serif}
.zombie-dialog[open]{display:flex;flex-direction:column}
.game-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 26px;border-bottom:1px solid #ff6f0050;flex:none}
.game-header h2{font:clamp(30px,4vw,46px)/1 Spooky,Arial,sans-serif;color:var(--orange);margin:0;text-transform:uppercase}
.game-header p{font:20px/1.1 Spooky,Arial,sans-serif;color:var(--purple);margin-top:7px}
.game-hud{display:flex;align-items:center;gap:32px;padding:14px 26px;flex:none;background:#000;border-bottom:1px solid #ff6f0050}
.game-stat{display:flex;flex-direction:column;gap:4px;min-width:84px;color:var(--purple)}
.game-stat>span{font:18px/1 Spooky,Arial,sans-serif;text-transform:uppercase}
.game-stat strong{font:clamp(38px,4.5vw,56px)/.95 Spooky,Arial,sans-serif;color:var(--orange);font-variant-numeric:tabular-nums}
.game-stat:nth-child(2) strong{color:var(--purple)}
.game-power{flex:1;min-width:0;font-size:14px}.game-power>span:first-child{font:20px/1 Spooky,Arial,sans-serif;color:var(--purple);text-transform:uppercase}
.game-power strong{font:clamp(21px,2.4vw,28px)/1.1 Spooky,Arial,sans-serif;color:var(--orange);display:block;margin:4px 0 7px}
.game-power progress{display:block;width:100%;height:5px;accent-color:var(--orange);border:0;border-radius:0;overflow:hidden;background:#3b253f}
.game-power progress::-webkit-progress-bar{background:#3b253f}.game-power progress::-webkit-progress-value{background:var(--orange)}
#game-progress-label{display:block;font-size:12px;line-height:1.3;color:#d4b9e8;margin-top:5px}
.game-hud button,.game-footer button,.game-overlay button{border:1px solid var(--orange);border-radius:0;min-height:44px;padding:10px 18px;font:22px/1 Spooky,Arial,sans-serif;background:#000;color:var(--orange)}
.game-hud button:hover,.game-footer button:hover{background:var(--orange);color:#000}.game-hud button:disabled{opacity:.4;cursor:default}
.game-stage{display:flex;align-items:center;justify-content:center;background:#000;min-height:0}
.zombie-board{position:relative;isolation:isolate;width:min(100%,calc((96dvh - 290px)*1.17837));aspect-ratio:2266/1923;overflow:hidden;cursor:crosshair;touch-action:manipulation;user-select:none}
.game-map-image{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.zombie-targets{position:absolute;inset:0;pointer-events:none}
.zombie-target{position:absolute;display:block;pointer-events:auto;transform:translate(-50%,-99.7331%);width:clamp(44px,7%,64px);aspect-ratio:387.333/599.333;min-height:44px;padding:0;border:0;background:transparent;cursor:crosshair;border-radius:0;touch-action:manipulation}
.zombie-target:focus-visible{outline:2px solid var(--purple);outline-offset:3px;background:#0008}
.zombie-sprite{position:relative;display:block;width:100%;height:100%;transform:scaleX(var(--z-facing,1)) rotate(var(--z-lean,0deg));transform-origin:50% 100%;filter:drop-shadow(1px 1px 0 #000) drop-shadow(-1px -1px 0 #000)}
.zombie-sprite>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;transform-origin:var(--limb-pivot-x,50%) var(--limb-pivot-y,50%)}
.slow-spell .zombie-sprite{filter:drop-shadow(0 0 3px var(--purple)) drop-shadow(1px 1px 0 #000)}
.game-overlay{position:absolute;inset:0;z-index:150;background:#000d;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;cursor:default}
.game-overlay strong{font:clamp(38px,6vw,76px)/1 Spooky,Arial,sans-serif;color:var(--orange)}
.game-overlay p{font-size:16px;line-height:1.5;max-width:360px;margin-top:15px;white-space:pre-line;color:var(--purple)}
.game-overlay button{background:var(--orange);color:#000;border-color:var(--orange);margin-top:22px;min-width:145px}
.game-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 26px;flex:none;border-top:1px solid #ff6f0050}
.game-footer p{font-size:14px;line-height:1.4;color:var(--purple);max-width:570px}.game-footer button{white-space:nowrap}
.game-shot{position:absolute;pointer-events:none;z-index:110;transform:translate(-50%,-70%);width:46px;height:46px;border:2px solid var(--orange);border-radius:50%;animation:game-hit .65s ease-out forwards}
.game-shot.hit{border-color:var(--orange);box-shadow:0 0 0 5px #ff6f0030}.game-shot.blast{width:110px;height:110px;border-color:var(--purple)}
.game-shot>span{position:absolute;left:50%;top:-26px;transform:translateX(-50%);color:var(--orange);font:36px/1 Spooky,Arial,sans-serif;text-shadow:2px 2px 0 #000,-1px -1px 0 #000}
.game-shot.miss{width:18px;height:18px;opacity:.7}
@keyframes game-hit{from{opacity:1;scale:.6}to{opacity:0;scale:1.6;translate:0 -22px}}
.game-toast{position:absolute;z-index:140;left:50%;top:14px;transform:translateX(-50%);width:max-content;max-width:90%;text-align:center;padding:10px 18px;border:1px solid var(--purple);background:#000f;border-radius:0;color:var(--purple);font:28px/1.1 Spooky,Arial,sans-serif;pointer-events:none}
.game-paused .zombie-targets{opacity:.25}
.zombie-dialog .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.game-overlay[hidden],.game-toast[hidden]{display:none}
.image-toolbar{flex-wrap:wrap}.image-toolbar>div{flex-shrink:0}
.image-toolbar .map-hunt-start{width:auto;min-height:44px;padding:10px 20px;font:23px/1 Spooky,Arial,sans-serif;background:var(--orange);color:#000;white-space:nowrap}
.image-toolbar .map-hunt-start:hover{background:var(--purple)}
@media(max-width:600px){.zombie-dialog{width:100vw;max-width:100vw;max-height:100dvh}.game-header{padding:12px}.game-header h2{font-size:32px}.game-header p{font-size:18px}.game-hud{padding:12px;gap:14px;flex-wrap:wrap}.game-stat{min-width:52px}.game-stat>span{font-size:16px}.game-stat strong{font-size:38px}.game-power{min-width:120px}.game-power>span:first-child{font-size:17px}.game-power strong{font-size:23px}.game-hud button{padding:8px 12px;font-size:19px}.game-footer{padding:10px 12px;gap:10px;align-items:flex-start}.game-footer p{font-size:12px}.game-footer button{font-size:18px;padding:7px 10px}.zombie-board{width:min(100%,calc((100dvh - 275px)*1.17837))}.game-overlay{padding:15px}.game-overlay p{font-size:14px}.game-toast{font-size:23px}.image-toolbar .map-hunt-start{order:3;width:100%;font-size:23px}.image-toolbar>p{flex:1;min-width:100px}}
@media(prefers-reduced-motion:reduce){.game-shot{animation:none;opacity:.8}.zombie-dialog[open]{animation:none}}
.game-effects{position:absolute;inset:0;z-index:180;pointer-events:none;overflow:visible}
.game-collected-points{position:absolute;display:block;transform:translate(-50%,-50%);font:clamp(24px,3vw,36px)/1 Spooky,Arial,sans-serif;white-space:nowrap;color:var(--orange);text-shadow:2px 2px #000,-1px -1px #000;pointer-events:none}
.zombie-target.game-caught{pointer-events:none;transform-origin:50% 100%}
.game-shot>i{position:absolute;left:50%;top:50%;width:4px;height:12px;background:var(--orange);transform:rotate(var(--spark-angle)) translateY(-30px);transform-origin:50% 0}
.game-shot.blast>i{background:var(--purple);transform:rotate(var(--spark-angle)) translateY(-58px)}
.game-achievement{display:flex;flex-direction:column;align-items:center;gap:8px;flex-shrink:0;margin-bottom:12px;color:var(--purple)}
.game-achievement img{display:block;width:clamp(40px,9dvh,76px);height:clamp(40px,9dvh,76px);object-fit:contain}
.game-achievement span{font:clamp(22px,3vw,32px)/1.12 Spooky,Arial,sans-serif;max-width:330px;text-wrap:balance}
.game-achievement[hidden]{display:none}
.game-overlay.is-result{overflow:auto;justify-content:flex-start;justify-content:safe center;gap:0}
.game-overlay.is-result>strong{font-size:clamp(30px,5vw,58px);flex-shrink:0}
.game-overlay.is-result>p{margin-top:10px;flex-shrink:0}
.game-overlay.is-result>button{margin-top:14px;flex-shrink:0}
@media(prefers-reduced-motion:reduce){.game-shot>i{display:none}.game-caught{display:none}.game-collected-points{transform:translate(-50%,-50%)} }
.game-map-foreground{position:absolute;display:block;pointer-events:none;user-select:none;object-fit:fill}
.game-overlay{z-index:3000}.game-toast{z-index:2800}.game-shot{z-index:2200}.game-effects{z-index:4000}
.zombie-target:disabled{pointer-events:none}
.game-stat:first-child{min-width:136px}.game-stat>span{white-space:nowrap}#game-streak{font:14px/1 Spooky,Arial,sans-serif;color:var(--orange);margin-left:7px;text-transform:none}
.zombie-kind{position:absolute;left:50%;bottom:102%;transform:translateX(-50%);padding:2px 5px;background:#000d;border:1px solid var(--purple);color:var(--purple);font:15px/1 Spooky,Arial,sans-serif;white-space:nowrap;pointer-events:none}
.game-toast{white-space:pre-line}
.is-final-ten #game-time{color:var(--orange);animation:final-time-beat 1s ease-out infinite}
.is-final-ten .zombie-board:after{content:'';position:absolute;inset:0;z-index:2100;pointer-events:none;border:2px solid #ff6f0060}
@keyframes final-time-beat{0%,100%{scale:1}20%{scale:1.055}55%{scale:1}}
@media(prefers-reduced-motion:reduce){.is-final-ten #game-time{animation:none}}

.zombie-dialog[open]{animation:none}
.game-entering .game-stage{visibility:hidden}.game-entering .game-hud{opacity:0;pointer-events:none}
.map-handoff{position:fixed;z-index:5000;overflow:hidden;pointer-events:none;background:#000}
.map-handoff img{position:absolute;display:block;max-width:none;max-height:none;object-fit:fill;pointer-events:none}

/* The original page is untouched; game controls sit beside the full map. */
.zombie-dialog{width:min(1300px,96vw)}
.zombie-dialog[open]{display:grid;grid-template-columns:240px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto}
.game-header,.game-footer{grid-column:1/-1}
.game-header{padding:15px 22px}.game-header h2{font-size:40px}.game-header p{font-size:19px}
.game-hud{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:16px;border-right:1px solid #ff6f0050;border-bottom:0;justify-content:center}
.game-totals{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:12px}
.game-stat,.game-stat:first-child{min-width:0}.game-stat strong{font-size:40px;line-height:1.08}.game-stat>span{font-size:17px}
#game-streak{min-height:17px;margin:0;font:14px/1.25 Arial,Helvetica,sans-serif;color:var(--orange)}
.game-wave,.game-mission{display:flex;flex-direction:column;gap:5px}
.game-wave>span,.game-mission>span:first-child{font:17px/1.15 Spooky,Arial,sans-serif;color:var(--purple);text-transform:uppercase}
.game-wave>strong,.game-mission>strong{font:23px/1.13 Spooky,Arial,sans-serif;color:var(--orange)}
.game-mission{border-block:1px solid #ff6f0050;padding-block:8px}
#game-mission-progress{font:13px/1.3 Arial,Helvetica,sans-serif;color:var(--purple)}
.game-power{flex:none}.game-power>span:first-child{font-size:20px}.game-power progress{height:7px;margin-top:9px}
.game-power button{width:100%;font-size:22px;margin-top:10px;padding-inline:8px}
#game-active-power{font:13px/1.4 Arial,Helvetica,sans-serif;min-height:20px;color:var(--purple);margin:0}
.game-hud #game-pause{font-size:21px;min-height:40px;padding:8px}
.game-hud .is-charged{background:var(--orange);color:#000;box-shadow:0 0 22px #ff6f0038}
.zombie-board{width:min(100%,calc((96dvh - 185px)*1.17837))}
.game-stage{min-width:0}
.game-footer{padding:12px 22px}.game-footer p{font-size:13px}
.zombie-target{min-height:0}
.zombie-kind{font-size:16px;line-height:1.15;padding:3px 5px;border-color:var(--orange);color:var(--orange)}
.zombie-kind:empty{display:none}
.zombie-target[data-kind="runner"] .zombie-kind{border-color:var(--purple);color:var(--purple)}
.game-pickup{position:absolute;pointer-events:auto;width:44px;height:48px;padding:0;border:0;background:transparent;transform:translate(-50%,-100%);cursor:pointer;animation:pickup-arrive .35s ease-out both}
.game-pickup img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 4px #000)}
.game-pickup span{position:absolute;left:50%;top:100%;transform:translateX(-50%);font:17px/1.15 Spooky,Arial,sans-serif;color:var(--orange);background:#000e;border:1px solid var(--orange);padding:3px 6px;white-space:nowrap;pointer-events:none}
.game-pickup[data-power="freeze"] span{color:var(--purple);border-color:var(--purple)}
.game-pickup:hover img{filter:drop-shadow(0 0 7px var(--orange));scale:1.12}
.game-pickup:focus-visible{outline:2px solid var(--purple);outline-offset:4px}
.game-ready-guide{max-width:440px}.game-ready-guide[hidden]{display:none}
.game-legend{display:flex;justify-content:center;align-items:flex-end;gap:28px;margin:20px 0 12px}
.game-legend>div{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--orange)}
.game-legend img{object-fit:contain;margin-bottom:5px;height:auto;width:40px}
.game-legend>div:nth-child(2) img{width:35px}.game-legend>div:nth-child(3) img{width:48px}
.game-legend span{font:22px/1.15 Spooky,Arial,sans-serif}
.game-legend small{font:12px/1.3 Arial,Helvetica,sans-serif;color:var(--purple);white-space:nowrap}
.game-ready-guide p{font-size:14px;line-height:1.45;max-width:none;margin-top:12px}
.game-overlay.is-ready{overflow:auto;justify-content:safe center;padding:20px}
.game-overlay.is-ready>strong{font-size:clamp(32px,4vw,52px)}
.game-overlay.is-ready>p{font-size:15px;max-width:440px;margin-top:10px}
.game-overlay.is-ready>button{font-size:24px;margin-top:18px;flex-shrink:0}
.game-overlay.is-result>p{max-width:440px}
@keyframes pickup-arrive{from{opacity:0;translate:0 -12px}to{opacity:1;translate:0 0}}
@media(max-width:700px){
  .zombie-dialog[open]{display:flex}.game-hud{display:grid;grid-template-columns:1fr 1fr;gap:10px;border-right:0;padding:12px}
  .game-totals{grid-column:1/-1}.game-stat strong{font-size:34px}.game-mission{padding-block:8px}.game-wave>strong,.game-mission>strong{font-size:21px}
  .game-stage{flex:none}.zombie-board{width:100%}.game-header h2{font-size:32px}.game-legend{gap:14px}
  .game-overlay.is-ready{justify-content:flex-start}.game-overlay.is-ready>strong{font-size:32px}.game-legend img{max-height:55px}
}
@media(prefers-reduced-motion:reduce){.game-pickup{animation:none}.game-pickup:hover img{scale:1}}
