/* A full-height map shell: only the diorama scrolls; its destination button stays in reach. */
#app #overlay.tower-map-overlay{display:block;padding:0;background:#101e24;overflow:hidden;backdrop-filter:none;-webkit-backdrop-filter:none;color:#ebdfc3}
.tower-map-panel{width:100%;height:100%;max-width:560px;min-height:0;margin:0 auto;box-sizing:border-box;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding: max(4px,env(safe-area-inset-top)) 0 max(8px,env(safe-area-inset-bottom));background:radial-gradient(ellipse at 30% 0,#34453d88,transparent 65%)}
.map-head{position:relative;z-index:2;padding:0 14px 3px;box-shadow:0 8px 18px #101e2466}
.map-top{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px}.map-top .quiet{width:auto;margin:0;padding:9px 4px;min-height:40px;font-size:10px;color:#c5d0be}.map-top .kicker{font-size:9px;letter-spacing:1.2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.map-chapter{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px;margin:0}.map-chapter button{border:1px solid #9a96705e;background:#23332f;color:#e6d4ad;border-radius:50%;width:44px;height:44px;padding:0;font:26px Georgia}.map-chapter button:disabled{opacity:.25}
.map-heading{text-align:center;padding:0;margin:0}.map-heading h2{font:23px/1.15 Georgia;margin:0 0 5px;color:#eadbb9}.map-heading p{font:9px/1.5 Georgia;letter-spacing:1px;color:#adbdad;margin:0}
.map-viewport{position:relative;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#7a866a #132429;outline-offset:-3px;background:#15262b}
.map-scene{position:relative;isolation:isolate;width:100%;max-width:480px;aspect-ratio:420/1200;margin:0 auto;touch-action:pan-y}.map-scene canvas{display:block;width:100%;height:100%;touch-action:pan-y}
.map-floor{position:absolute;transform:translate(-50%,-50%);width:46px;height:46px;padding:0;border-radius:50%;border:1px solid #84948e;background:#172b2df0;color:#b2beb4;box-shadow:0 3px 12px #081315aa;font:19px Georgia;touch-action:pan-y}
.map-floor.unlocked{border-color:#c4b17c;background:#344e40;color:#f1dfae}.map-floor.current{border:2px solid #f5d79b;background:#756138;color:#fff4dc;box-shadow:0 0 22px #cda76588}.map-floor.selected{outline:2px solid #efdaad;outline-offset:4px}.map-floor.boss{border-radius:12px}.map-floor.locked{background:#16252be8;color:#8b9c96;border-color:#5e6e69}.map-floor.locked:not(.selected){opacity:.8}
.map-floor small{position:absolute;left:50%;top:50px;transform:translateX(-50%);font:8px Georgia;letter-spacing:.6px;white-space:nowrap;color:#b2bfad;text-shadow:0 1px 4px #000}.map-floor.current small{color:#ffe1a4;font-weight:700}.map-floor.boss small{color:#d4c492}
.map-scroll-hint{position:absolute;bottom:38px;text-align:center;width:100%;font:10px Georgia;letter-spacing:2px;color:#99b0a6;pointer-events:none}
.map-selected{position:relative;z-index:2;min-width:0;max-height:44dvh;overflow-y:auto;border-top:1px solid #b9a87888;padding:13px 18px 5px;background:linear-gradient(115deg,#293c34,#17282c);box-shadow:0 -10px 25px #08111444;box-sizing:border-box;text-align:center}
.map-selected-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.map-selected .kicker{font-size:9px;letter-spacing:1.1px;color:#d8c48f}.map-section-count{font:10px Georgia;color:#94aa9c;white-space:nowrap}.map-selected h3{font:23px/1.15 Georgia;margin:6px 0;color:#efe1be}.map-selected .map-message{font:12px/1.45 Georgia;color:#c2cbbd;margin:5px auto 9px;max-width:380px}.map-selected .map-recovery{font:11px/1.3 Georgia;color:#d9c699;margin:0 0 6px}
.map-actions{display:grid;gap:5px}.map-actions .primary,.map-actions .secondary{margin:0;min-height:48px;padding:13px 8px;font-size:11px;letter-spacing:1.4px}.map-actions .quiet{margin:0;padding:9px;min-height:36px;font-size:10px}
.map-records{display:flex;justify-content:center;gap:22px;padding:3px 0 7px}.map-records span{font:13px Georgia;color:#ead6a9}.map-records small{font:8px Georgia;letter-spacing:.7px;color:#a8b8ad}.map-footnote{font:8px/1.4 Georgia;letter-spacing:.8px;color:#a2b1a1;margin:7px 0 2px}.map-error{color:#ffc49b!important;font:12px/1.5 Georgia;margin:8px 0}
.map-button{display:block;width:100%;max-width:390px;min-height:48px!important;margin:12px auto!important;padding:11px 10px!important;text-align:center;border-color:#bfa67477!important;background:linear-gradient(120deg,#3c4b36,#22342e)!important}.map-button span{display:block;font:12px Georgia;letter-spacing:1.4px;color:#ead6a6}.map-button small{display:block;font:8px/1.5 Georgia;letter-spacing:.8px;color:#b9c5af;margin-top:5px}
@media(max-width:350px){.map-heading h2{font-size:20px}.map-head{padding-left:10px;padding-right:10px}.map-selected{padding:10px 12px 4px}.map-selected h3{font-size:21px}.map-selected .map-message{font-size:11px}.map-top .kicker{font-size:8px}}
@media(max-height:680px){.map-head{padding-bottom:1px}.map-top{min-height:34px}.map-top .quiet{min-height:34px;padding:7px 4px}.map-heading h2{font-size:21px;margin-bottom:3px}.map-selected{padding-top:9px;max-height:45dvh}.map-selected h3{font-size:21px}.map-selected .map-message{font-size:11px;margin-bottom:7px}.map-footnote{margin-top:5px}.map-scroll-hint{bottom:60px}}

.map-rule-note{font:10px/1.35 Georgia;color:#a7b9ae;margin:5px 0 3px;text-align:center}
