.map-viewer{position:relative;width:100%;height:100%;min-height:320px;overflow:hidden;border-radius:inherit;background:#e8f4f4;touch-action:none}
.map-viewer:has(.map-image-plane){display:flex;align-items:center;justify-content:center}
.map-viewer canvas{display:block;width:100%;height:100%;touch-action:none}
html .map-viewer:fullscreen{width:100vw;height:100vh;min-height:0;overflow:visible;border-radius:0}
.map-image-plane{position:relative;z-index:1;margin:auto;cursor:crosshair;touch-action:none;transform-origin:center center}
.map-image-plane>img{display:block;width:100%;height:100%;user-select:none}
.map-viewer--blur-outside{background:#edf7f4}
.map-viewer--blur-outside>.map-image-ambient{position:absolute;z-index:0;inset:-40px;width:calc(100% + 80px);height:calc(100% + 80px);max-width:none;object-fit:cover;filter:blur(44px) saturate(.72);opacity:.3;pointer-events:none;user-select:none;transform:scale(1.08)}
.map-viewer--blur-outside>canvas{position:relative;z-index:1}
.map-viewer--blur-outside .map-image-plane>img:not(.map-image-blur){position:relative;z-index:1;clip-path:polygon(15% 2%,25% 1%,42% 2%,44% 7%,53% 8%,60% 12%,69% 8%,77% 12%,87% 16%,92% 27%,95% 43%,95% 59%,90% 70%,89% 78%,81% 88%,72% 95%,58% 98%,43% 98%,29% 96%,19% 91%,13% 82%,11% 69%,7% 57%,7% 40%,10% 28%,14% 16%)}
.map-viewer--blur-outside .map-image-plane>img:not(.map-image-blur){-webkit-clip-path:polygon(15% 2%,25% 1%,42% 2%,44% 7%,53% 8%,60% 12%,69% 8%,77% 12%,87% 16%,92% 27%,95% 43%,95% 59%,90% 70%,89% 78%,81% 88%,72% 95%,58% 98%,43% 98%,29% 96%,19% 91%,13% 82%,11% 69%,7% 57%,7% 40%,10% 28%,14% 16%)}
.map-image-plane .map-marker-layer{position:absolute;inset:0}
.map-marker-layer{position:absolute;inset:0;pointer-events:none;z-index:2}
.map-label-layer{position:absolute;inset:0;pointer-events:none;z-index:1}
.map-model-label-layer,.map-point-label-layer{position:absolute;inset:0;pointer-events:none}
.map-label-layer[hidden],.map-point-label[hidden],.map-model-label[hidden],.map-model-toolbar[hidden],.map-compass[hidden]{display:none}
.map-model-label{position:absolute;transform:translate(-50%,-50%);color:#354a43;font:700 clamp(8.8px,.624vw,11.2px)/1.1 "PingFang SC","Microsoft YaHei",sans-serif;white-space:nowrap;text-shadow:-1px -1px 2px #fffdf0,1px -1px 2px #fffdf0,-1px 1px 2px #fffdf0,1px 1px 2px #fffdf0,0 2px 4px #fffdf0}
.map-model-label--center{color:#d84b43;font-size:clamp(10.4px,.8vw,13.6px);text-shadow:-1px -1px 2px #fff9db,1px -1px 2px #fff9db,-1px 1px 2px #fff9db,1px 1px 2px #fff9db,0 2px 5px #fff9db}
.map-model-label--river{color:#2e94b8;font-size:clamp(9.6px,.68vw,12px);text-shadow:-1px -1px 2px #eefaff,1px -1px 2px #eefaff,-1px 1px 2px #eefaff,1px 1px 2px #eefaff}
.map-model-label--surrounding{color:#9eafa6;font-weight:600;font-size:clamp(8px,.56vw,9.6px);letter-spacing:.14em;text-shadow:0 0 3px #f5f8f3}
.map-point-label{position:absolute;transform:translate(-50%,calc(-100% - 16px));color:#fff;font-size:clamp(11px,1vw,16px);font-weight:750;white-space:nowrap;text-shadow:-1px -1px 2px #344b40,1px -1px 2px #344b40,-1px 1px 2px #344b40,1px 1px 2px #344b40,0 2px 5px #344b40}
.star-art{display:block;width:100%;height:100%;overflow:visible}
.star-art__base{fill:#53695d;opacity:.2;transform:translateY(2px)}
.star-art__body{fill:#fff8e9;stroke:var(--star-color,#e8af5d);stroke-width:3.2;stroke-linejoin:round;paint-order:stroke fill}
.star-art__shine,.star-art__sparkle{fill:none;stroke:#fffef2;stroke-width:3;stroke-linecap:round;opacity:0}
.star-art__sparkle{stroke-width:2.5}
.map-marker{position:absolute;transform:translate(-50%,-50%);width:clamp(40px,3.3vw,54px);height:clamp(40px,3.3vw,54px);min-height:0;padding:0;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;box-shadow:none;cursor:pointer;pointer-events:auto;transition:transform .2s ease}
.map-marker::before{content:"";position:absolute;inset:20%;border-radius:50%;background:#fffdf5;filter:blur(9px);opacity:.75;pointer-events:none}
.map-marker .star-art{position:relative;width:80%;height:80%;filter:drop-shadow(0 3px 3px #53635255);transition:filter .2s ease}
.map-marker:hover,.map-marker.is-selected{transform:translate(-50%,-50%) scale(1.14)}
.map-marker.is-selected::before{background:#fff5c6;filter:blur(12px)}
.map-marker.is-unlocked .star-art__body{fill:var(--star-color);stroke:#fff9d8;stroke-width:2.6}
.map-marker.is-unlocked .star-art__shine,.map-marker.is-unlocked .star-art__sparkle{opacity:1}
.map-marker.is-unlocked .star-art{filter:drop-shadow(0 0 8px var(--star-color)) drop-shadow(0 4px 3px #63583b66);animation:map-star-pulse 2s ease-in-out infinite;transform-origin:center}
.map-marker.is-unlocked:nth-child(4n + 2) .star-art{animation-delay:-.5s}
.map-marker.is-unlocked:nth-child(4n + 3) .star-art{animation-delay:-1s}
.map-marker.is-unlocked:nth-child(4n + 4) .star-art{animation-delay:-1.5s}
@keyframes map-star-pulse{0%,100%{transform:scale(.88);opacity:.82}50%{transform:scale(1.12);opacity:1}}
.map-marker.is-locked .star-art__body{fill:#d7ded8;stroke:#8d9c94;stroke-width:3}
.map-marker.is-locked .star-art__base{fill:#66756d;opacity:.14}
.map-marker.is-locked .star-art{filter:drop-shadow(0 2px 2px #54635a55)}
.map-marker.is-find-target{width:36px;height:36px;border:3px solid #fff;background:#4b8f7f;box-shadow:0 3px 10px #254d4577;color:#fff}
.map-marker.is-find-target::before{display:none}
.map-find-icon{position:relative;font-size:28px;font-weight:700;line-height:1}
@media (prefers-reduced-motion:reduce){.map-marker.is-unlocked .star-art{animation:none;transform:none;opacity:1}}
.map-model-status{position:absolute;inset:0;display:grid;place-items:center;background:#e8f4f4;color:#497c70;font-weight:600;z-index:3}
.map-empty{display:grid;place-items:center;color:#618979}
.map-zoom-controls{position:absolute;right:14px;bottom:14px;z-index:3;display:flex;gap:7px}
.map-zoom-controls button{width:40px;height:40px;padding:0;border:2px solid #fff;border-radius:13px;background:#fffffff0;color:#477d64;box-shadow:0 4px 12px #385c4a33;font-size:24px;font-weight:700;line-height:1}
.map-model-toolbar{position:absolute;z-index:4;top:12px;right:12px;display:flex;align-items:center;gap:2px;padding:5px;border:1px solid #d4e5df;border-radius:13px;background:#fffffff0;box-shadow:0 5px 16px #385c4a28}
.map-model-toolbar button{display:grid;place-items:center;width:38px;height:38px;padding:0;border:0;border-radius:9px;background:transparent;color:#426d60;font-size:25px;line-height:1;cursor:pointer}
.map-model-toolbar button:hover,.map-model-toolbar button:focus-visible{background:#e5f0eb}
.map-model-toolbar button:disabled{color:#a9bcb3;background:transparent;cursor:not-allowed}
.map-model-toolbar .map-label-toggle{margin-left:5px;border-left:1px solid #c9dcd3;border-radius:0 9px 9px 0;font-family:Georgia,serif;font-size:22px}
.map-model-toolbar .map-label-toggle[aria-pressed="true"]{color:#1a7665;background:#e5f0eb}
.map-compass{position:absolute;z-index:4;right:12px;bottom:12px;display:grid;place-items:center;width:52px;height:62px;padding:5px;border:1px solid #d4e5df;border-radius:11px;background:#fffffff0;color:#477d64;box-shadow:0 5px 16px #385c4a28;font:700 15px Georgia,serif;cursor:pointer}
.map-compass-needle{display:block;font-size:26px;line-height:1;transform:rotate(var(--bearing,0rad));transition:transform .12s}
@media (max-width:600px){.map-model-toolbar{top:7px;right:7px;gap:0;padding:3px}.map-model-toolbar button{width:29px;height:32px;font-size:20px}.map-model-toolbar .map-label-toggle{font-size:18px}.map-compass{right:7px;bottom:7px;width:40px;height:49px;font-size:12px}.map-compass-needle{font-size:20px}}
.map-marker.is-route-point .route-point-icon{max-width:80%;max-height:80%;background:transparent;border:0;border-radius:0;color:#47775c;filter:drop-shadow(0 2px 2px #fff);padding:4px;box-sizing:border-box}

.map-marker.is-route-point::before{display:none}
