/* One full-width map, followed by the area choices and their hotel results. */
#areas .area-layout{display:flex;flex-direction:column;align-items:stretch;gap:32px}
.geo-map.area-map{width:100%;max-width:none;aspect-ratio:auto;padding:0;border-radius:24px}
html[data-hero-theme="halloween"] .geo-map.area-map{padding:0}
.geo-scene{position:relative;width:100%;aspect-ratio:600/560;max-height:400px;isolation:isolate;overflow:hidden}
.geo-map[data-map-layout="wide"] .geo-scene{aspect-ratio:1200/400;min-height:280px}
.geo-scene .geo-geography{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.geo-land{stroke:#fff;stroke-width:1.5;stroke-linejoin:round;fill-rule:evenodd}
.geo-land[data-land-area]{cursor:pointer;transition:filter .15s}
.geo-land[data-land-area]:hover,.geo-land.is-active{filter:brightness(.96) saturate(1.2)}
.geo-shore{fill:none;stroke:#94abc3;stroke-width:1.1;stroke-linejoin:round;pointer-events:none}
.geo-map .area-map-title{z-index:2;pointer-events:none}
.geo-map.area-map .geo-area{--pin-gap:8px;--pin-label-y:0px;z-index:3;min-width:44px;min-height:48px;gap:0;transform:translate(-50%,-50%);overflow:visible}
.geo-map.area-map .geo-area .pin-dot{position:absolute;left:var(--pin-x,50%);top:var(--pin-y,50%);transform:translate(-50%,-50%);margin:0;pointer-events:auto}
.geo-map .pin-label{color:var(--map-ink);font-family:var(--font-body);font-weight:500;text-shadow:0 1px 3px #fff,0 -1px 3px #fff}
.geo-map .pin-label b{font-size:20px}
.geo-map .pin-label small{font-size:13px}
.geo-map .pin-label small{color:#596c83}
html[data-hero-theme="halloween"] .geo-map .pin-label small{color:#74617d}
.geo-map-header{position:absolute;inset:24px auto auto 24px;z-index:2;pointer-events:none}
.geo-map .geo-map-header .area-map-title{position:static;margin-bottom:12px}
.geo-map-legend{display:flex;flex-wrap:wrap;align-items:center;gap:16px;color:var(--map-ink);font-family:var(--font-body);font-size:12px;font-weight:500;line-height:1.5}
.geo-map-legend span{display:inline-flex;align-items:center;gap:6px}
.geo-map-legend i{display:block;width:12px;height:12px;flex:none;border:2px solid #fff;border-radius:50%;background:var(--map-dot);box-shadow:0 1px 3px #0002}
.geo-map-legend .geo-map-legend__photo{width:18px;height:18px;border:2px solid #fff;background:var(--map-accent) url('../img/places/place-kabira.jpg') center/cover}
.geo-spot-lines{pointer-events:none}
.geo-spot-line{stroke:#aab6c5;stroke-width:1.25;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}
.geo-spot-point{fill:#7c91aa;stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke}
.geo-map .geo-spot{position:absolute;z-index:4;display:flex;flex-direction:column;align-items:center;gap:5px;min-width:44px;min-height:44px;padding:4px;border:0;border-radius:12px;background:none;color:#42536c;font-family:var(--font-body);cursor:pointer;transform:translate(-50%,-50%)}
.geo-spot img{width:50px;height:50px;aspect-ratio:1;object-fit:cover;flex:none;border:3px solid #fff;border-radius:50%;box-shadow:0 2px 8px #263a5426;transition:box-shadow .18s}
.geo-spot span{font-size:12px;line-height:1.4;font-weight:500;white-space:nowrap;text-shadow:0 1px 3px #fff,0 -1px 3px #fff}
.geo-spot:hover img,.geo-spot.is-selected img{box-shadow:0 0 0 3px var(--map-accent),0 2px 8px #263a5426}
.geo-spot:focus-visible{outline:3px solid var(--map-accent);outline-offset:2px}
html[data-hero-theme="halloween"] .geo-spot{color:#66516f}
.geo-spot-info{position:relative;display:grid;grid-template-columns:120px minmax(0,1fr);gap:20px;margin:0 24px 16px;padding:20px 56px 20px 20px;border:1px solid var(--map-border);border-radius:16px;background:#fff;color:#283c56}
.geo-spot-info[hidden]{display:none}
.geo-spot-info__photo{width:120px;height:100px;object-fit:cover;border-radius:12px}
.geo-spot-info h3{margin:0 0 5px;color:var(--map-ink);font-size:20px;line-height:1.5}
.geo-spot-info p{margin:0;font-size:14px;line-height:1.7}
.geo-spot-info__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin-top:12px}
.geo-spot-info__nearby{padding:10px 16px;border:0;border-radius:9px;background:var(--map-accent);color:#fff;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.geo-spot-info__guide{color:var(--map-ink);font-size:13px;text-decoration:underline;text-underline-offset:3px}
.geo-spot-info__close{position:absolute;right:8px;top:8px;display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:#f3f5f8;color:var(--map-ink);cursor:pointer}
.geo-spot-info :is(button,a):focus-visible{outline:3px solid var(--map-accent);outline-offset:3px}
.geo-map-note{margin:0;padding:8px 14px 12px;font-size:11px;line-height:1.5;color:#64748b}
html[data-hero-theme="halloween"] .geo-map-note{color:#74617d}
@media(max-width:767px){#areas .area-layout{gap:28px}.geo-map-header{inset:18px auto auto 18px}.geo-map-legend{gap:12px;font-size:11px}.geo-spot img{width:40px;height:40px}}
@media(max-width:560px){.geo-map.area-map{border-radius:20px}.geo-map.area-map .geo-area{--pin-gap:6px;min-height:44px}.geo-map-note{padding:6px 12px 10px}.geo-map .geo-map-header .area-map-title{margin-bottom:7px}.geo-map .geo-spot{gap:3px;padding:1px}.geo-spot img{width:34px;height:34px;border-width:2px}.geo-spot span{font-size:11px}.geo-spot-info{grid-template-columns:64px minmax(0,1fr);gap:12px;margin:0 12px 8px;padding:14px 12px}.geo-spot-info__photo{width:64px;height:64px;border-radius:9px}.geo-spot-info h3{font-size:16px;padding-right:24px}.geo-spot-info p{font-size:12px}.geo-spot-info__actions{gap:10px;margin-top:10px}.geo-spot-info__nearby{padding:10px 12px;font-size:12px}.geo-spot-info__guide{font-size:12px}.geo-spot-info__close{width:32px;height:32px;right:4px;top:4px}}
@media(max-width:560px){
 .geo-map .pin-label b{font-size:16px}
 .geo-map .pin-label small{font-size:11px}
 .geo-map.area-map .geo-area[data-area="chubu"]{--pin-label-y:-4px}
 .geo-map.area-map .geo-area[data-area="nanbu"]{--pin-label-y:4px}
 .geo-map.area-map .geo-area[data-area="ishigaki"]{--pin-label-y:14px}
}
@media(max-width:360px){
 .geo-scene{min-height:270px}
 .geo-map-legend{gap:6px;font-size:10px}
 .geo-map-legend span{gap:5px}
 .geo-map-legend i{width:10px;height:10px}
 .geo-map-legend .geo-map-legend__photo{width:14px;height:14px}
}
@media(prefers-reduced-motion:reduce){.geo-map *{transition:none!important}}
