.geo-puzzle{max-width:1500px;margin-inline:auto}
.puzzle-help{margin:14px 0;color:#b9c5d4;font-size:1.05rem}
.puzzle-board{width:100%;min-height:600px;border:1px solid var(--line);border-radius:18px;background:#0a1421;overflow:hidden;touch-action:none;user-select:none}
.puzzle-svg{display:block;width:100%;height:min(72vh,760px);min-height:600px;touch-action:none}
.puzzle-map-bg{fill:#0f1d2d;stroke:#29415d;stroke-width:2}
.puzzle-map-title,.puzzle-tray-title{fill:#dbe7f5;font:700 24px system-ui,sans-serif}
.puzzle-targets path{fill:#17283a;stroke:#5d7189;stroke-width:2;vector-effect:non-scaling-stroke}
.puzzle-piece{cursor:grab;touch-action:none}
.puzzle-piece.dragging{cursor:grabbing;filter:drop-shadow(0 10px 10px rgba(0,0,0,.55))}
.puzzle-hit{fill:none;stroke:transparent;stroke-width:30;vector-effect:non-scaling-stroke;pointer-events:stroke}
.puzzle-shape{fill:#2aa98b;stroke:#dffbf5;stroke-width:2.2;vector-effect:non-scaling-stroke;pointer-events:all}
.puzzle-piece.dragging .puzzle-shape{fill:#43d7b5;stroke:#fff}
.puzzle-piece.placed{cursor:default;pointer-events:none}
.puzzle-piece.placed .puzzle-shape{fill:#257b68;stroke:#8ff4dc}
.puzzle-label{fill:#fff;stroke:#07101a;stroke-width:3;paint-order:stroke;stroke-linejoin:round;text-anchor:middle;font:700 11px system-ui,sans-serif;pointer-events:none}
.puzzle-review{display:none;pointer-events:none}
.geo-puzzle.completed .puzzle-review{display:block}
.puzzle-review-label{fill:#fff;stroke:#07101a;stroke-width:3.5;paint-order:stroke;stroke-linejoin:round;text-anchor:middle;font:700 12px system-ui,sans-serif}
.puzzle-review-line{stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke}
.puzzle-status{min-height:1.5em;margin:14px 0 0;text-align:center;color:var(--warn);font-size:1.15rem;font-weight:700}
.geo-puzzle.completed .puzzle-status{color:var(--accent)}
.puzzle-complete-actions{display:flex;justify-content:center;gap:12px;margin-top:14px}
.puzzle-complete-actions[hidden]{display:none}
@media(max-width:900px){.puzzle-svg{height:680px}.puzzle-board{overflow-x:auto}.puzzle-svg{width:1100px}}
