
@keyframes tacdMapPulse {
  0%,100% { transform:scale(1); opacity:1; }
  50% { transform:scale(1.18); opacity:.82; }
}
@keyframes tacdFriendPulse {
  0%,100% { box-shadow:0 0 8px #39e6ff,0 0 20px rgba(57,230,255,.45); }
  50% { box-shadow:0 0 12px #39e6ff,0 0 32px rgba(57,230,255,.75); }
}
.tacd-map-page{--map-blue:#39b9ff;--map-cyan:#45e6ff;--map-green:#5be282;--map-gold:#efc75e;--map-orange:#ff9b42}
.tacd-map-lead{margin-top:12px;color:#8fa3b7}
.tacd-map-card{margin-top:26px;border:1px solid rgba(77,166,255,.28);border-radius:16px;overflow:hidden;background:#041015;box-shadow:0 22px 70px rgba(0,0,0,.35)}
.tacd-map-toolbar{padding:14px 16px;border-bottom:1px solid rgba(77,166,255,.18);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:linear-gradient(180deg,rgba(10,30,37,.98),rgba(4,16,21,.98))}
.tacd-map-kicker{color:#79bdff;font-size:11px;font-weight:950;letter-spacing:.14em}.tacd-map-online-status{margin-top:3px;color:#71879a;font-size:10px;font-weight:900;letter-spacing:.08em}
.tacd-map-layer-buttons{display:flex;gap:6px;flex-wrap:wrap}.tacd-map-layer{border:1px solid #29414d;background:#08141a;color:#78909c;padding:7px 9px;border-radius:7px;font-size:9px;font-weight:950;letter-spacing:.05em;cursor:pointer}.tacd-map-layer.active{border-color:#4da6ff;color:#e8f5ff;background:rgba(77,166,255,.13)}
.tacd-map-legend{display:flex;gap:14px;flex-wrap:wrap;padding:8px 16px;background:#061118;border-bottom:1px solid rgba(77,166,255,.12);font-size:9px;font-weight:900;color:#8198a6}.legend-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:-1px}.legend-dot.me{background:#ff334d}.legend-dot.friend{background:#39e6ff}.legend-dot.water{background:#35aaff}.legend-dot.area{background:#66dc78}.legend-dot.structure{background:#ff9b42}
.tacd-live-map-shell{position:relative;width:100%;background:#02070b;overflow:hidden;isolation:isolate}.tacd-live-map-shell>img{display:block;width:100%;height:auto;position:relative;z-index:1;filter:saturate(1.14) contrast(1.05) brightness(1.02)}.tacd-map-colorwash{position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(180deg,rgba(15,47,58,.015),rgba(0,0,0,.02))}
.tacd-map-overlay-layer{position:absolute;inset:0;z-index:4;pointer-events:none}.player-layer{z-index:10}.tacd-map-poi{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;cursor:help}.tacd-map-poi-dot{display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:950;text-shadow:0 1px 3px #000;box-shadow:0 2px 10px rgba(0,0,0,.55)}.tacd-map-poi.water .tacd-map-poi-dot{width:14px;height:14px;background:rgba(32,158,255,.85);border:2px solid #b8ecff;color:white;font-size:8px;box-shadow:0 0 9px rgba(53,170,255,.85)}.tacd-map-poi.area .tacd-map-poi-dot{width:11px;height:11px;background:#54cf73;border:2px solid #d5ffe0}.tacd-map-poi.structure .tacd-map-poi-dot{width:15px;height:15px;border-radius:4px;background:#d97824;border:2px solid #ffd0a6;font-size:8px;color:#fff}.tacd-map-poi-tooltip,.tacd-player-tooltip{position:absolute;left:50%;bottom:25px;transform:translateX(-50%);display:none;min-width:max-content;max-width:220px;padding:7px 9px;border-radius:7px;background:rgba(2,11,16,.96);border:1px solid rgba(117,190,255,.5);color:#e6f3fb;font-size:10px;font-weight:850;line-height:1.35;white-space:nowrap;box-shadow:0 8px 28px rgba(0,0,0,.55);z-index:100}.tacd-map-poi:hover .tacd-map-poi-tooltip,.tacd-map-player:hover .tacd-player-tooltip{display:block}.tacd-map-poi-tooltip small,.tacd-player-tooltip small{display:block;color:#7e9baa;font-size:8px;font-weight:800;margin-top:2px}
.tacd-map-water-halo{position:absolute;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(47,174,255,.24),rgba(32,130,230,.08) 60%,transparent 72%);border:1px solid rgba(69,198,255,.2);pointer-events:none}
.tacd-map-player{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;z-index:30}.tacd-map-player-dot{width:22px;height:22px;border-radius:50%;border:4px solid #fff;animation:tacdMapPulse 1.5s ease-in-out infinite}.tacd-map-player.me .tacd-map-player-dot{background:#ff334d;box-shadow:0 0 8px #ff334d,0 0 20px rgba(255,51,77,.95),0 0 35px rgba(255,51,77,.55)}.tacd-map-player.friend .tacd-map-player-dot{width:18px;height:18px;border-width:3px;background:#39e6ff;border-color:#eaffff;animation:tacdFriendPulse 1.7s ease-in-out infinite}
.tacd-map-bottom{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:11px 16px;background:#061118;border-top:1px solid rgba(77,166,255,.12)}#live-map-status{color:#7890a0;font-size:11px}.tacd-map-source{color:#506772;font-size:8px}
@media(max-width:720px){.tacd-map-toolbar{align-items:flex-start}.tacd-map-layer-buttons{width:100%}.tacd-map-layer{flex:1;min-width:92px}.tacd-map-legend{gap:8px}.tacd-map-poi-dot{transform:scale(.85)}}

/* TΛÇĐ fancy notifications */
.tacd-toast-stack{position:fixed;right:18px;top:88px;z-index:20000;width:min(380px,calc(100vw - 28px));display:flex;flex-direction:column;gap:10px;pointer-events:none}
.tacd-toast{position:relative;pointer-events:auto;padding:12px 14px;border:1px solid rgba(77,166,255,.28);border-radius:12px;background:linear-gradient(180deg,rgba(12,24,35,.98),rgba(6,14,22,.98));box-shadow:0 18px 55px rgba(0,0,0,.45),inset 0 0 0 1px rgba(255,255,255,.025);transform:translateX(26px);opacity:0;transition:opacity .18s ease,transform .18s ease;overflow:hidden;cursor:pointer}
.tacd-toast.show{transform:translateX(0);opacity:1}.tacd-toast.success{border-color:rgba(63,224,136,.35)}.tacd-toast.error{border-color:rgba(255,89,109,.42)}.tacd-toast.warn{border-color:rgba(255,199,73,.38)}
.tacd-toast-title{color:#dbeaf7;font-size:11px;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.tacd-toast-message{margin-top:4px;color:#92a8ba;font-size:11px;line-height:1.45}.tacd-toast-progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:rgba(77,166,255,.85);transform-origin:left center}
.tacd-modal-backdrop{position:fixed;inset:0;z-index:19950;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(0,0,0,.72);backdrop-filter:blur(5px)}.tacd-modal-backdrop.open{display:flex}
.tacd-modal{position:relative;width:min(470px,calc(100vw - 30px));padding:30px 28px 26px;text-align:center;border:1px solid rgba(77,166,255,.5);border-radius:18px;background:radial-gradient(circle at top,rgba(77,166,255,.13),transparent 48%),rgba(7,12,19,.99);box-shadow:0 20px 70px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.025);overflow:hidden}
.tacd-modal-head{padding:0;border:0}.tacd-modal-head::before{content:"↯";display:block;margin-bottom:8px;color:#eef6ff;font-size:34px;line-height:1}.tacd-modal-kicker{color:#4da6ff;font-size:9px;font-weight:950;letter-spacing:.16em;text-transform:uppercase}.tacd-modal-title{margin-top:9px;color:#eef6ff;font-size:22px;font-weight:950;letter-spacing:.08em}.tacd-modal-body{padding:0;margin:12px 0 20px;color:#9fb2c3;font-size:14px;line-height:1.5}.tacd-modal-actions{display:flex;justify-content:center;gap:10px;padding:0}.tacd-modal-actions:empty{display:none}
.tacd-modal-btn{flex:1;min-width:0;padding:12px;border:1px solid rgba(77,166,255,.55);border-radius:10px;background:rgba(77,166,255,.1);color:#eef6ff;font-size:11px;font-weight:950;letter-spacing:.06em;cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease}.tacd-modal-btn:hover{border-color:rgba(77,166,255,.82);background:rgba(77,166,255,.17);transform:translateY(-1px)}.tacd-modal-btn.primary{background:rgba(77,166,255,.13);color:#fff}.tacd-modal-btn.danger{border-color:rgba(255,89,109,.48);background:rgba(255,89,109,.08);color:#ff9aa5}

/* Live Map v2: compact POIs over the true-color Gateway basemap */
.tacd-map-poi.area .tacd-map-poi-dot{width:10px;height:10px;background:#79df76;border-color:#efffe9;box-shadow:0 0 7px rgba(91,226,130,.55)}
.tacd-map-poi.structure .tacd-map-poi-dot{width:14px;height:14px;background:#e78930;border-color:#ffe1be}
.tacd-map-poi.water .tacd-map-poi-dot{width:13px;height:13px;background:#129fec;border-color:#d3f5ff;box-shadow:0 0 8px rgba(18,159,236,.8)}


/* Live Map v2.1 — controlled zoom + pan */
.tacd-live-map-shell{touch-action:none;cursor:default}
.tacd-live-map-shell.is-zoomed{cursor:grab}
.tacd-live-map-shell.is-dragging{cursor:grabbing}
.tacd-map-zoom-content{
  position:relative;
  width:100%;
  transform-origin:50% 50%;
  transition:transform .14s ease-out;
  will-change:transform;
}
.tacd-live-map-shell.is-dragging .tacd-map-zoom-content{transition:none}
.tacd-map-zoom-content>#tacd-live-map-image{display:block;width:100%;height:auto;position:relative;z-index:1}
.tacd-map-zoom-content>.tacd-map-colorwash,
.tacd-map-zoom-content>.tacd-map-overlay-layer{position:absolute;inset:0}
.tacd-map-zoom-controls{
  position:absolute;
  top:12px;
  right:12px;
  z-index:250;
  display:flex;
  gap:5px;
  padding:5px;
  border:1px solid rgba(81,176,255,.35);
  border-radius:9px;
  background:rgba(3,13,19,.9);
  box-shadow:0 8px 24px rgba(0,0,0,.35);
  backdrop-filter:blur(7px);
}
.tacd-map-zoom-controls button{
  min-width:34px;
  height:32px;
  border:1px solid #315365;
  border-radius:6px;
  background:#0a1a22;
  color:#dff5ff;
  font-size:18px;
  line-height:1;
  font-weight:950;
  cursor:pointer;
}
.tacd-map-zoom-controls button:hover{border-color:#52b9ef;background:#103040}
.tacd-map-zoom-controls button.reset{width:auto;padding:0 9px;font-size:8px;letter-spacing:.08em}
.tacd-map-zoom-badge{
  position:absolute;
  right:13px;
  top:58px;
  z-index:250;
  padding:4px 7px;
  border-radius:5px;
  background:rgba(3,13,19,.86);
  color:#7fcfff;
  border:1px solid rgba(81,176,255,.22);
  font-size:8px;
  font-weight:950;
  letter-spacing:.06em;
  pointer-events:none;
}


/* Live Map v2.2 — natural click/hold drag */
.tacd-live-map-shell,
.tacd-map-zoom-content{
  user-select:none;
  -webkit-user-select:none;
}
.tacd-live-map-shell.is-zoomed{cursor:grab}
.tacd-live-map-shell.is-zoomed *{cursor:inherit}
.tacd-live-map-shell.is-zoomed .tacd-map-zoom-controls,
.tacd-live-map-shell.is-zoomed .tacd-map-zoom-controls *{cursor:pointer}
.tacd-live-map-shell.is-dragging,
.tacd-live-map-shell.is-dragging *{cursor:grabbing!important}


/* Live Map v2.2.1 — friend marker matches player marker colors, keeps friend size */
.tacd-map-player.friend .tacd-map-player-dot{
  width:18px;
  height:18px;
  border-width:3px;
  background:#ff334d;
  border-color:#fff;
  box-shadow:0 0 8px #ff334d,0 0 18px rgba(255,51,77,.78);
}


/* Live Map v2.2.2 — FRIEND legend matches friend map markers */
.tacd-map-legend-item:nth-child(2) .tacd-map-legend-dot,
.tacd-map-legend span:nth-child(2) i,
.tacd-map-legend span:nth-child(2)::before{
  background:#ff334d !important;
  border-color:#fff !important;
  box-shadow:0 0 5px rgba(255,51,77,.85) !important;
}
