.fmap, .amap { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-7); align-items: start; }
@media (max-width: 1024px) { .fmap, .amap { grid-template-columns: minmax(0, 1fr); } }
.fmap:not(.is-ready), .amap:not(.is-ready) { grid-template-columns: minmax(0, 1fr); }
.fmap__stage, .amap__stage { position: relative; display: none; height: calc(var(--space-2) * 78); overflow: hidden; background: linear-gradient(to bottom, var(--m-stage-a) 0%, var(--m-stage-b) 100%); }
@media (max-width: 1024px) { .fmap__stage { height: calc(var(--space-2) * 70); } }
@media (max-width: 768px) { .fmap__stage { height: calc(var(--space-2) * 60); } }
.amap .amap__stage { height: calc(var(--space-2) * 70); }
@media (max-width: 768px) { .amap .amap__stage { height: calc(var(--space-2) * 50); } }
.fmap.is-ready .fmap__stage, .amap.is-ready .amap__stage { display: block; }
.m3-hint { position: absolute; top: var(--space-3); left: var(--space-4); margin: 0; font-size: var(--fs-2); letter-spacing: var(--ls-4); color: var(--c-ink); }
@media (max-width: 768px) { .m3-hint { display: none; } }
.m3-legend { position: absolute; right: var(--space-4); bottom: var(--space-3); left: var(--space-4); display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--space-2) var(--space-4); margin: 0; font-size: var(--fs-2); color: var(--c-ink); }
.m3-key { display: inline-flex; align-items: center; gap: var(--space-2); }
.m3-key::before { content: ""; width: var(--space-3); height: var(--space-3); background: var(--m-tn); }
.m3-key--mn::before { background: var(--m-mn); }
.m3-key--ev::before { background: var(--m-ev); }
.m3-key--bd::before { background: var(--m-e-a); }
.m3-key--pk::before { background: var(--m-park); }
.fmap__tabs { display: none; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: var(--bd) solid var(--c-ink); border-bottom: var(--bd) solid var(--c-line); }
.fmap.is-ready .fmap__tabs { display: grid; }
.fmap__tab { position: relative; padding: var(--space-3) 0; font-family: var(--ff-serif); font-size: var(--fs-5); letter-spacing: var(--ls-3); color: var(--c-ink-sub); cursor: pointer; background: none; border: 0; }
.fmap__tab[aria-selected="true"] { color: var(--c-ink); }
.fmap__tab[aria-selected="true"]::after { content: ""; position: absolute; right: calc(100% / 4); bottom: calc(var(--bd) * -1); left: calc(100% / 4); height: var(--bd-2); background: var(--c-ink); }
.fmap__floor + .fmap__floor { margin-top: var(--space-7); }
.fmap.is-ready .fmap__floor + .fmap__floor { margin-top: 0; }
.fmap__title { margin: var(--space-5) 0 var(--space-4); font-family: var(--ff-serif); font-size: var(--fs-5); font-weight: var(--fw-medium); letter-spacing: var(--ls-5); }
.fmap__title b { margin-right: var(--space-3); font-weight: var(--fw-medium); color: var(--c-ink); }
.fmap__rows { margin: var(--space-4) 0 0; padding: 0; list-style: none; border-top: var(--bd) solid var(--c-line); }
.fmap__row { padding: var(--space-2) var(--space-1); font-size: var(--fs-3); border-bottom: var(--bd) solid var(--c-line); }
@media (max-width: 768px) { .fmap__row { display: flex; flex-wrap: wrap; align-items: center; } .fmap__row > .fmap__row-a, .fmap__row > span.fmap__row-a { flex: 1 1 0; min-width: 0; } }
.fmap__tn { white-space: nowrap; margin-left: var(--space-1); font-size: var(--fs-2); color: var(--c-ink-sub); }
.fmap__row-a { display: flex; align-items: center; gap: var(--space-3); color: inherit; text-decoration: none; }
.fmap__row picture, .fmap__row img { display: block; flex: none; width: var(--space-8); height: var(--space-7); object-fit: cover; }
.fmap__row-n { display: block; padding-left: calc(var(--space-2) + var(--space-3)); text-indent: calc((var(--space-2) + var(--space-3)) * -1); }
.fmap__dot { display: inline-block; width: var(--space-2); height: var(--space-2); margin-right: var(--space-3); background: var(--m-tn); }
.fmap__dot--ht { background: var(--m-ht); }
.fmap__dot--ev { background: var(--m-ev); }
.fmap__row.is-hot { background: var(--c-white); }
.amap__list { margin: 0; padding: 0; list-style: none; border-top: var(--bd) solid var(--c-ink); }
.amap__item { display: grid; grid-template-columns: var(--space-6) minmax(0, 1fr); gap: var(--space-3); align-items: center; padding: var(--space-4) var(--space-1); border-bottom: var(--bd) solid var(--c-line); transition: background var(--t-1); }
@media (max-width: 768px) { .amap__item { grid-template-columns: var(--space-6) minmax(0, 1fr) auto; column-gap: var(--space-2); } .amap__item > .m3d-go { margin-block: calc(var(--space-4) * -1); } }
.amap__item.is-hot { background: var(--c-white); }
.amap__mark { display: grid; place-items: center; width: var(--space-6); height: var(--space-6); font-size: var(--fs-3); font-weight: var(--fw-medium); color: var(--c-white); background: var(--c-ink); }
.amap__mark--pk { background: var(--m-park-f); }
.amap__name { display: block; font-family: var(--ff-serif); font-size: var(--fs-5); letter-spacing: var(--ls-3); }
@media (max-width: 768px) { .amap__name { font-size: var(--fs-4); } }
.m3d { position: absolute; inset: 0; cursor: grab; touch-action: pan-y; user-select: none; }
.m3d.is-drag { cursor: grabbing; }
.m3d.is-point { cursor: pointer; }
.m3d__cv { display: block; width: 100%; height: 100%; }
.m3d__lb { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.m3d-l { position: absolute; top: 0; left: 0; visibility: hidden; will-change: transform; }
.m3d-l__t { position: relative; display: flex; align-items: center; gap: var(--space-2); padding: var(--bd-2) var(--space-2) var(--space-1); font-size: var(--fs-2); line-height: var(--lh-1); letter-spacing: var(--ls-3); white-space: nowrap; color: var(--c-ink); background: var(--m-label); border-left: var(--bd-2) solid var(--m-tn); box-shadow: 0 var(--bd-2) calc(var(--space-3) - var(--bd-2)) var(--m-label-shadow); transform: translateX(-50%); transition: color var(--t-1), background-color var(--t-1); }
.m3d-l__t::before { position: absolute; top: 100%; left: calc(50% + var(--dx, 0px)); width: var(--bd); height: var(--stem, 0px); content: ""; background: var(--c-ink); opacity: var(--op); }
.m3d-l__t::after { position: absolute; top: calc(100% + var(--stem, 0px) - var(--bd-2)); left: calc(50% + var(--dx, 0px) - var(--bd-2)); width: var(--space-1); height: var(--space-1); content: ""; background: var(--c-ink); border-radius: 50%; }
.m3d-l--mn .m3d-l__t { border-left-color: var(--m-mn); }
.m3d-l--ht .m3d-l__t { border-left-color: var(--m-ht); }
.m3d-l--ev .m3d-l__t { border-left-color: var(--m-ev); }
.m3d-l.is-hot .m3d-l__t { color: var(--c-white); background: var(--c-ink); }
.m3d-l--pin .m3d-l__t { padding: var(--bd-2) var(--space-2) var(--bd-2) var(--bd-2); font-size: var(--fs-2); border-left: 0; }
.m3d-l__m { display: grid; place-items: center; min-width: var(--space-4); height: var(--space-4); padding: 0 var(--bd-2); font-size: var(--fs-1); font-style: normal; font-weight: var(--fw-medium); color: var(--c-white); background: var(--c-ink); }
.m3d-l__m--pk { background: var(--m-park-f); }
.m3d-l--sub .m3d-l__t { padding: var(--bd) var(--space-2) var(--bd-2); font-size: var(--fs-1); color: var(--c-ink-sub); background: var(--m-label-soft); border-left: 0; box-shadow: none; }
.m3d-l--sub .m3d-l__t::before, .m3d-l--sub .m3d-l__t::after { display: none; }
.is-3d .m3-hint { z-index: 1; pointer-events: none; }
.is-3d .m3-legend { z-index: 1; right: 0; bottom: 0; left: 0; padding: var(--space-4) var(--space-4) var(--space-3); pointer-events: none; background: linear-gradient(to bottom, transparent 0%, var(--m-stage-b) var(--fade-stop)); }
@media (max-width: 768px) { .m3d-l__t { padding: var(--bd-2) var(--space-2) var(--bd-2); font-size: var(--fs-2); } }
@media (max-width: 768px) { .m3d-l--pin .m3d-l__t { font-size: var(--fs-2); } }

.m3d-hint { margin: var(--space-3) 0 0; font-size: var(--fs-3); color: var(--c-ink-sub); }
