/* v66: FFXIVMap — in-game style FF14 map (zoom, pan, layers). Anything placed on the map is counter-scaled with --fm-inv,
   so icons, labels and pins keep their size while the map zooms. */
.ffxiv-map{position:relative;display:grid;gap:8px;--fm-gold:#d9c28a;--fm-gold2:#f6e9bd;--fm-ink:#06111b}
.fm-frame{position:relative;width:100%;aspect-ratio:1/1;border-radius:14px;overflow:hidden;border:1px solid #c9b27899;outline:1px solid #00000080;outline-offset:-3px;background:radial-gradient(circle,#1d2f45,#0a1422);box-shadow:inset 0 0 0 3px #0b1626,inset 0 0 0 4px #c9b27840,0 12px 30px #0009;user-select:none;-webkit-user-select:none;cursor:grab;touch-action:pan-y}
.ffxiv-map.is-editable .fm-frame{cursor:crosshair}.ffxiv-map.is-panning .fm-frame{cursor:grabbing}
.fm-frame:focus-visible{outline:2px solid #9ccfd9;outline-offset:2px}
.fm-stage{position:absolute;inset:0;transform-origin:0 0;--fm-inv:1}
.fm-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;-webkit-user-drag:none}
.fm-marks,.fm-layer{position:absolute;inset:0}
.ffxiv-map:not(.is-ready) .fm-marks,.ffxiv-map:not(.is-ready) .fm-layer{visibility:hidden}
.fm-status{margin:0;color:#9eb3c7;font-size:12.5px}.fm-status:empty{display:none}

/* in-game markers */
.fm-mk{position:absolute;width:0;height:0;z-index:1}
.fm-mk-in{position:absolute;left:0;top:0;transform-origin:0 0;transform:scale(var(--fm-inv))}
.fm-mk-icon,.fm-mk-dot{position:absolute;left:-13px;top:-13px;width:26px;height:26px;pointer-events:none;filter:drop-shadow(0 1px 2px #000c)}
.fm-mk-dot{left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:#f6e9bd;box-shadow:0 0 0 2px #3b2c10}
.fm-mk.is-aeth .fm-mk-icon{left:-15px;top:-15px;width:30px;height:30px}
.fm-mk.is-shard .fm-mk-icon{left:-11px;top:-11px;width:22px;height:22px}
.fm-mk-name{position:absolute;top:-.75em;left:15px;white-space:nowrap;font:600 11.5px/1.5 system-ui,"Noto Sans TC",sans-serif;color:#fff8e6;letter-spacing:.02em;pointer-events:none;
 text-shadow:0 0 2px #2b1d07,0 0 2px #2b1d07,1px 1px 0 #2b1d07,-1px -1px 0 #2b1d07,1px -1px 0 #2b1d07,-1px 1px 0 #2b1d07}
.fm-mk.o1 .fm-mk-name{left:auto;right:15px}
.fm-mk.o3 .fm-mk-name{left:0;top:auto;bottom:14px;transform:translateX(-50%)}
.fm-mk.o4 .fm-mk-name{left:0;top:14px;transform:translateX(-50%)}
.fm-mk.is-text .fm-mk-name{left:0;top:0;transform:translate(-50%,-50%);font:600 13.5px/1.3 Georgia,"Noto Serif TC",serif;color:#f3e6c2;letter-spacing:.06em}
.fm-mk.is-aeth .fm-mk-name{color:#d8f6ff;text-shadow:0 0 2px #06283a,0 0 2px #06283a,1px 1px 0 #06283a,-1px -1px 0 #06283a,1px -1px 0 #06283a,-1px 1px 0 #06283a}
/* small labels only once there is room for them, like the game hides them when zoomed out */
.ffxiv-map:not(.is-near) .fm-mk:not(.is-text):not(.is-aeth) .fm-mk-name,.ffxiv-map:not(.is-near) .fm-mk.is-shard .fm-mk-name{display:none}
/* layers */
.ffxiv-map.hide-names .fm-mk-name,.ffxiv-map.hide-names .fm-mk.is-text{display:none}
.ffxiv-map.hide-icons .fm-mk.is-icons:not(.is-text){display:none}
.ffxiv-map.hide-aeth .fm-mk.is-aeth{display:none}
.ffxiv-map.hide-links .fm-mk.is-links{display:none}
.ffxiv-map.hide-places .fm-pin.is-place:not(.is-active){display:none}

/* pins (counter-scaled around their tip) */
.fm-pin{position:absolute;z-index:3;width:0;height:0;padding:0;border:0;background:none;cursor:pointer}
.fm-pin-in{position:absolute;left:-15px;top:-30px;width:30px;height:30px;transform-origin:15px 30px;transform:scale(var(--fm-inv))}
.fm-gem{position:absolute;left:50%;top:0;width:22px;height:22px;margin-left:-11px;transform:rotate(45deg);border-radius:4px 50% 50% 50%;background:linear-gradient(135deg,#a4f3ff,#3ba7c4 55%,#1d5d77);border:2px solid #f6e9bd;box-shadow:0 4px 10px #000a,0 0 12px #7df9ff88}
.fm-gem::after{content:'';position:absolute;left:5px;top:5px;width:6px;height:6px;border-radius:50%;background:#ffffffd9}
.fm-pin.is-self .fm-gem,.fm-pin.is-active .fm-gem{background:linear-gradient(135deg,#fff1c8,#e5cf93 55%,#a07b35);border-color:#fff}
.fm-pin.is-active{z-index:5}.fm-pin.is-active .fm-gem{transform:rotate(45deg) scale(1.25)}
.fm-pin-label{position:absolute;left:50%;top:32px;transform:translateX(-50%);white-space:nowrap;padding:2px 8px;border-radius:999px;background:#06111be6;border:1px solid #ffffff2b;color:#f3e6c2;font-size:11.5px;pointer-events:none;opacity:0;transition:opacity .15s}
.fm-pin:hover .fm-pin-label,.fm-pin:focus-visible .fm-pin-label,.fm-pin.is-self .fm-pin-label{opacity:1}
.ffxiv-map.is-editable .fm-pin.is-self{cursor:grab}
/* highlight marker (chosen aetheryte) */
.fm-marker{position:absolute;z-index:2;width:0;height:0;pointer-events:none}
.fm-marker-in{position:absolute;left:0;top:0;transform-origin:0 0;transform:scale(var(--fm-inv))}
.fm-marker-in::before{content:'';position:absolute;left:-19px;top:-19px;width:38px;height:38px;border-radius:50%;border:2px solid #7df9ff;box-shadow:0 0 12px #7df9ffaa,inset 0 0 8px #7df9ff66;animation:fm-ring 2.4s ease-in-out infinite}
.fm-marker-label{position:absolute;left:22px;top:-.8em;padding:1px 7px;border-radius:999px;background:#0b1626e6;border:1px solid #7df9ff66;color:#d8f6ff;font-size:11px;white-space:nowrap}
@keyframes fm-ring{50%{transform:scale(1.15);opacity:.6}}

/* popup — outside the zoomed stage */
.fm-overlay{position:absolute;inset:0;pointer-events:none;z-index:6}
.fm-pop{position:absolute;pointer-events:auto;width:min(240px,70%);transform:translate(14px,-100%);padding:10px;border:1px solid #c9b27888;border-radius:14px;background:#0b1626f2;box-shadow:0 14px 30px #000b;color:#e7edf5}
.fm-pop.to-left{transform:translate(calc(-100% - 14px),-100%)}
.fm-pop.to-down{transform:translate(14px,30px)}.fm-pop.to-left.to-down{transform:translate(calc(-100% - 14px),30px)}
.fm-pop img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:10px;display:block;margin-bottom:6px}
.fm-pop strong{display:block;font-size:14px;margin-bottom:2px}
.fm-pop .cp-loc{font-size:12px}.fm-pop .cp-btn{min-height:32px;margin-top:6px;font-size:12px}

/* HUD */
.fm-hud{position:absolute;inset:0;z-index:7;pointer-events:none}
.fm-title{position:absolute;left:10px;top:10px;max-width:calc(100% - 70px);padding:5px 12px;border-radius:999px;background:linear-gradient(90deg,#0b1626ee,#0b162699);border:1px solid #c9b27855;color:var(--fm-gold2);font:600 12.5px/1.4 Georgia,"Noto Serif TC",serif;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-title:empty{display:none}
.fm-tools{position:absolute;right:10px;top:10px;display:grid;gap:6px;justify-items:center;pointer-events:auto}
.fm-tool{width:36px;height:36px;display:grid;place-items:center;padding:0;border-radius:10px;border:1px solid #c9b27877;background:linear-gradient(180deg,#1b2a3dee,#0b1626ee);color:var(--fm-gold2);font:600 18px/1 system-ui,sans-serif;cursor:pointer;box-shadow:0 4px 10px #0007}
.fm-tool:hover:not(:disabled){border-color:var(--fm-gold2);color:#fff}.fm-tool:disabled{opacity:.35;cursor:default}
.fm-tool.is-reset,.fm-tool.is-layers,.fm-tool.is-full{font-size:16px}
.fm-tool[aria-expanded="true"]{background:linear-gradient(180deg,#4a4a35,#202d37);border-color:var(--fm-gold2)}
.fm-zoomtext{padding:1px 6px;border-radius:999px;background:#0b1626cc;color:#c4d4e2;font:11px/1.6 system-ui,sans-serif;font-variant-numeric:tabular-nums}
.fm-panel{position:absolute;right:54px;top:10px;display:grid;gap:2px;min-width:150px;padding:8px 10px;border-radius:12px;border:1px solid #c9b27877;background:#0b1626f2;box-shadow:0 12px 26px #000a;pointer-events:auto}
.fm-panel[hidden]{display:none}
.fm-check{display:flex;align-items:center;gap:8px;min-height:32px;color:#e7edf5;font-size:13px;cursor:pointer;white-space:nowrap}
.fm-check input{width:16px;height:16px;accent-color:#e5cf93}
.fm-cursor{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);padding:3px 12px;border-radius:999px;background:#0b1626d9;border:1px solid #c9b27855;color:var(--fm-gold2);font:600 12px/1.5 system-ui,sans-serif;font-variant-numeric:tabular-nums;white-space:pre}
.fm-cursor[hidden]{display:none}
/* full screen */
.ffxiv-map:fullscreen{display:grid;place-items:center;align-content:center;padding:12px;background:#050a12;overflow:auto}
.ffxiv-map:fullscreen .fm-frame{width:min(100vw - 24px,100vh - 90px);height:auto}
.ffxiv-map:-webkit-full-screen{display:grid;place-items:center;background:#050a12}
/* editor X/Y inputs */
.fm-coords{display:flex;gap:8px;flex-wrap:wrap}
.fm-coords label{display:flex;align-items:center;gap:6px;color:#9eb3c7;font-size:13px}
.fm-coords input{font:inherit;width:96px;min-height:40px;padding:0 10px;border:1px solid #456070;border-radius:10px;background:#0b1626;color:#e7edf5;font-variant-numeric:tabular-nums}
@media (max-width:600px){.fm-tool{width:34px;height:34px}.fm-title{font-size:11.5px;max-width:calc(100% - 64px)}.fm-pop{width:min(200px,80%)}.fm-mk.is-text .fm-mk-name{font-size:12px}}
@media (prefers-reduced-motion:reduce){.fm-marker-in::before{animation:none}}
/* site-wide button styles must not touch the zero-size pin anchor */
.ffxiv-map .fm-pin{width:0!important;height:0!important;min-width:0!important;min-height:0!important;padding:0!important;margin:0!important;border:0!important;background:none!important;box-shadow:none!important;outline-offset:14px}
