/* 已确认的“纵向长卷 + 柔和过渡”，与普通页面卡片样式隔离。 */
body[data-page=songs] .map-viewport{background:linear-gradient(rgba(65,88,106,0.28235),rgba(65,88,106,0.28235)),url('../assets/backgrounds/map-side-sky.webp') center/cover no-repeat;background:linear-gradient(#41586a48,#41586a48),url('../assets/backgrounds/map-side-sky.webp') center/cover no-repeat}
body[data-page=songs] .journey-map{position:relative;min-height:0;width:100%;margin-left:auto;margin-right:auto;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden;isolation:isolate}
.map-terrain,.map-trail{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}
.map-terrain{z-index:0;-webkit-mask-image:linear-gradient(90deg,transparent,rgba(0,0,0,.15) 3%,rgba(0,0,0,.65) 9%,#000 16%,#000 84%,rgba(0,0,0,.65) 91%,rgba(0,0,0,.15) 97%,transparent);mask-image:linear-gradient(90deg,transparent,rgba(0,0,0,.15) 3%,rgba(0,0,0,.65) 9%,#000 16%,#000 84%,rgba(0,0,0,.65) 91%,rgba(0,0,0,.15) 97%,transparent)}
.map-trail{z-index:1;overflow:visible}.map-trail path{fill:none;stroke-linecap:round}.map-road-shadow{stroke:rgba(34,61,57,0.26667);stroke:#223d3944;stroke-width:16}.map-road{stroke:#f7e5b9;stroke-opacity:.57;stroke-width:10}.map-road-mark{stroke:#fff4d3;stroke-opacity:.72;stroke-width:1;stroke-dasharray:1 12}
body[data-page=songs] .journey-map .map-region{position:relative;z-index:2;display:block;height:var(--map-pitch,140px);min-height:0;padding:0;background:transparent}
.journey-map .region-number{display:none}
body[data-page=songs] .journey-map .region-node{position:absolute;left:30%;top:4%;right:auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;width:158px;height:calc(var(--map-pitch,140px) * .92);min-height:0;padding:4px 0;gap:7px;transform:translateX(-50%);color:#fff5dc;background:transparent;border:0;box-shadow:none;text-align:center;cursor:pointer}
body[data-page=songs] .journey-map .map-region:nth-of-type(even) .region-node{left:70%}
body[data-page=songs] .journey-map .region-node:hover{transform:translate(-50%,-4px)}
body[data-page=songs] .journey-map .region-node:focus-visible{outline:2px solid #f6db93;outline-offset:3px;border-radius:8px}
body[data-page=songs] .journey-map .region-node::after{z-index:-1;top:6px;left:50%;width:72px;height:72px;transform:translateX(-50%) rotate(45deg);background:rgba(29,64,85,0.9098);background:#1d4055e8;border:1px solid #e2c57c;box-shadow:inset 0 0 0 5px rgba(255,255,255,0.03922),0 4px 12px rgba(20,43,61,0.46667);box-shadow:inset 0 0 0 5px #ffffff0a,0 4px 12px #142b3d77}
body[data-page=songs] .journey-map .region-node.selected::after{background:#415b61;border-color:#ffe2a4;box-shadow:0 0 16px rgba(255,224,167,0.56471),inset 0 0 0 5px rgba(255,255,255,0.08627);box-shadow:0 0 16px #ffe0a790,inset 0 0 0 5px #ffffff16}
body[data-page=songs] .journey-map .region-emblem{flex:0 0 82px;width:82px;height:82px;padding:8px;background:transparent;border:0}
body[data-page=songs] .journey-map .region-emblem img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 2px rgba(19,34,42,0.53333));filter:drop-shadow(0 2px 2px #13222a88)}
body[data-page=songs] .journey-map .region-node-copy,body[data-page=songs] .journey-map .zone-underground .region-node-copy,body[data-page=songs] .journey-map .zone-stars .region-node-copy{display:flex;flex-direction:column;align-items:center;width:auto;min-width:0;padding:0;gap:3px;color:#fff5dc;background:transparent;border:0;border-radius:0;box-shadow:none}
body[data-page=songs] .journey-map .region-node strong{display:block;white-space:nowrap;font-size:22px;line-height:1.13;color:#fff5dc;text-shadow:0 2px 4px #142938,0 0 9px #142938,0 0 3px #142938}
body[data-page=songs] .journey-map .region-node strong::before{content:'✦';margin-right:6px;color:#ffe5a0;font-size:.7em;vertical-align:middle}
body[data-page=songs] .journey-map .region-node small{white-space:nowrap;color:#f8ecd4;opacity:1;font-size:10px;letter-spacing:.03em;text-shadow:0 2px 4px #142938,0 0 8px #142938}
@media(max-width:680px){.map-terrain{-webkit-mask-image:none;mask-image:none}.map-road-shadow{stroke-width:11}.map-road{stroke-width:7}body[data-page=songs] .journey-map .region-node{width:144px;gap:5px}body[data-page=songs] .journey-map .region-node::after{width:66px;height:66px}body[data-page=songs] .journey-map .region-emblem{flex-basis:76px;width:76px;height:76px}body[data-page=songs] .journey-map .region-node strong{font-size:19px}body[data-page=songs] .journey-map .region-node small{font-size:9px}}
