/* PULSE MAP V2.0.1 PERFORMANCE HOTFIX
   Zero per-cell helper DOM. Pseudo-elements only. */
:root{
  --pulse-map-text:#dce9eb;
  --pulse-map-muted:#789096;
}

.pulse-map-toolbar{
  display:flex;align-items:center;justify-content:space-between;gap:6px;
  margin:6px 0;padding:5px;border:1px solid rgba(108,153,166,.12);
  border-radius:10px;background:rgba(7,17,24,.96)
}
.pulse-map-mode{display:flex;gap:3px}
.pulse-map-mode button,.pulse-map-fx{
  min-height:28px;padding:0 8px;border-radius:7px;
  border:1px solid rgba(111,160,172,.12);
  background:rgba(16,33,43,.88);color:#829aa0;
  font:800 6px/1 system-ui,sans-serif
}
.pulse-map-mode button.selected{color:#c5eee3;border-color:rgba(96,210,183,.25);background:rgba(44,117,105,.24)}

.pulse-map-v2-root{position:relative;isolation:isolate;overflow:hidden}
.pulse-map-v2-root .map-world-cell[data-pulse-map-sector]{
  --pa:38,49,54;--pb:18,27,31;--pc:95,137,137;
  position:relative!important;
  border-radius:10px!important;
  border:1px solid rgba(var(--pc),.16)!important;
  background:linear-gradient(145deg,rgb(var(--pa)),rgb(var(--pb)))!important;
  box-shadow:none!important;
  transform:none!important;
  transition:none!important;
  contain:layout paint style;
}
.pulse-map-v2-root .map-world-cell[data-pulse-map-sector]::before{
  content:"";
  position:absolute;inset:0;pointer-events:none;z-index:1;border-radius:inherit;
  background:
    linear-gradient(125deg,transparent 0 58%,rgba(var(--pc),.045) 58% 61%,transparent 61%),
    radial-gradient(circle at 24% 28%,rgba(var(--pc),.07),transparent 34%);
}
.pulse-map-v2-root .map-world-cell[data-pulse-map-sector]::after{
  content:attr(data-pulse-glyph);
  position:absolute;right:5px;top:4px;z-index:3;pointer-events:none;
  color:rgba(var(--pc),.8);font:900 11px/1 system-ui,sans-serif;
  opacity:0;
}
.pulse-map-v2-root .map-world-cell[data-pulse-poi="1"]::after{opacity:1}

/* Biomes: low-cost flat gradients */
.pulse-map-v2-root .map-world-cell[data-pulse-biome="marsh"],
.pulse-map-v2-root .map-world-cell[data-pulse-biome="flooded"]{--pa:24,47,51;--pb:12,27,33;--pc:75,171,168}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="ash"]{--pa:45,42,40;--pb:24,24,25;--pc:151,132,114}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="red_wastes"]{--pa:58,36,31;--pb:29,20,21;--pc:187,107,82}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="anomaly"],
.pulse-map-v2-root .map-world-cell[data-pulse-biome="anomaly_forest"]{--pa:30,45,42;--pb:16,24,29;--pc:125,99,194}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="ruins"]{--pa:34,44,48;--pb:17,26,31;--pc:113,150,159}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="black_crater"]{--pa:31,27,42;--pb:13,11,18;--pc:144,88,203}

/* Fog without extra DOM */
.pulse-map-v2-root .map-world-cell[data-pulse-status="hidden"]::before,
.pulse-map-v2-root .map-world-cell[data-pulse-status="locked"]::before,
.pulse-map-v2-root .map-world-cell.unrevealed::before{
  background:rgba(5,10,14,.62);
}
.pulse-map-v2-root .map-world-cell[data-pulse-status="hidden"],
.pulse-map-v2-root .map-world-cell[data-pulse-status="locked"],
.pulse-map-v2-root .map-world-cell.unrevealed{
  filter:saturate(.45) brightness(.72);
}

/* Risk indication = border only */
.pulse-map-v2-root .map-world-cell[data-pulse-risk="3"]{border-color:rgba(190,113,84,.26)!important}
.pulse-map-v2-root .map-world-cell[data-pulse-risk="4"]{border-color:rgba(151,88,205,.38)!important}

/* Selection only — no hover animation over hundreds of cells */
.pulse-map-v2-root .map-world-cell.pulse-selected{
  outline:2px solid rgba(112,224,199,.72)!important;
  outline-offset:-2px;
  filter:brightness(1.08);
}

/* Analysis mode uses native title + compact labels through ::after for POI only.
   Avoid hundreds of extra text nodes. */
.pulse-map-v2-root[data-pulse-mode="analysis"] .map-world-cell[data-pulse-map-sector]{
  border-color:rgba(var(--pc),.30)!important
}
.pulse-map-v2-root[data-pulse-mode="history"] .map-world-cell:not([data-pulse-status="cleared"]):not([data-pulse-poi="1"]){
  filter:saturate(.45) brightness(.72)
}

/* Straight route: no dash animation/filter */
.pulse-route-layer{
  position:absolute;inset:0;width:100%;height:100%;z-index:8;pointer-events:none;opacity:0
}
.pulse-route-layer.visible{opacity:1}
.pulse-route-main{fill:none;stroke:rgba(91,211,187,.72);stroke-width:1.5;stroke-linecap:round}
.pulse-route-start{fill:#829996}.pulse-route-end{fill:#84dfc5}

.pulse-route-card{
  display:grid;grid-template-columns:1fr auto;gap:1px 8px;
  margin-top:6px;padding:7px 9px;border-radius:9px;
  border:1px solid rgba(104,157,167,.12);background:rgba(8,18,25,.95)
}
.pulse-route-card span{grid-column:1/3;color:#62c9b6;font:900 5px/1 system-ui,sans-serif}
.pulse-route-card b{color:#d8e6e8;font:800 6.5px/1.2 system-ui,sans-serif}
.pulse-route-card small{color:#748b90;font:600 5px/1.2 system-ui,sans-serif;text-align:right}

/* Performance is the default. Balanced only restores a little depth. */
:root[data-pulse-map-fx="balanced"] .pulse-map-v2-root .map-world-cell[data-pulse-map-sector]{
  box-shadow:inset 0 0 8px rgba(0,0,0,.16)!important;
}
:root[data-pulse-map-fx="performance"] .pulse-map-v2-root .map-world-cell[data-pulse-map-sector]::before{
  opacity:.72
}

@media(max-width:420px){
  .pulse-map-toolbar{padding:4px}
  .pulse-map-mode button,.pulse-map-fx{min-height:26px;padding:0 6px;font-size:5.2px}
  .pulse-map-v2-root .map-world-cell[data-pulse-map-sector]{border-radius:8px!important}
}
@media(prefers-reduced-motion:reduce){
  .pulse-map-v2-root *{animation:none!important;transition:none!important}
}


/* PULSE MAP V3: low-cost organic sector silhouettes, no clip-path. */
.pulse-map-v2-root .map-world-cell[data-pulse-shape="0"]{border-radius:11px 7px 10px 6px!important}
.pulse-map-v2-root .map-world-cell[data-pulse-shape="1"]{border-radius:7px 11px 6px 10px!important}
.pulse-map-v2-root .map-world-cell[data-pulse-shape="2"]{border-radius:10px 6px 8px 12px!important}
.pulse-map-v2-root .map-world-cell[data-pulse-shape="3"]{border-radius:6px 10px 12px 8px!important}
.pulse-map-v2-root .map-world-cell[data-pulse-map-sector]::before{
  background:
    linear-gradient(118deg,transparent 0 55%,rgba(var(--pc),.055) 56% 58%,transparent 59%),
    radial-gradient(circle at 22% 25%,rgba(var(--pc),.09),transparent 31%),
    radial-gradient(circle at 78% 74%,rgba(0,0,0,.10),transparent 35%)!important;
}
.pulse-map-v2-root .map-world-cell[data-pulse-poi="1"]{
  border-color:rgba(var(--pc),.42)!important;
  box-shadow:inset 0 0 0 1px rgba(var(--pc),.08)!important;
}

/* === PULSE MAP VISUAL PACK V1 === */
/* lightweight visual layer over Clean V3; no geometry / no logic changes */

.map-world-grid{
  border-radius:18px;
  box-shadow:
    inset 0 0 0 1px rgba(85,215,220,.08),
    0 18px 36px rgba(0,0,0,.24);
}

.map-world-cell{
  border-color:rgba(255,255,255,.06)!important;
  box-shadow:
    inset 0 1px rgba(255,255,255,.03),
    inset 0 -4px 8px rgba(0,0,0,.16)!important;
}

.map-world-cell:not(.fog){
  background-image:
    linear-gradient(145deg,rgba(255,255,255,.018),rgba(255,255,255,0)),
    radial-gradient(circle at 30% 28%,rgba(255,255,255,.03) 0 10%,transparent 11%),
    linear-gradient(145deg,#142028,#0f1820)!important;
}

.map-world-cell.fog{
  opacity:.72!important;
  border-color:rgba(150,170,180,.06)!important;
}

.map-world-cell.revealed{
  border-color:rgba(76,220,255,.18)!important;
  box-shadow:
    inset 0 0 0 1px rgba(49,217,255,.06),
    inset 0 1px rgba(255,255,255,.04),
    0 0 0 1px rgba(49,217,255,.04)!important;
}

.map-world-cell.cleared{
  border-color:rgba(123,232,184,.20)!important;
  box-shadow:
    inset 0 0 0 1px rgba(120,235,182,.06),
    inset 0 1px rgba(255,255,255,.05)!important;
}

/* terrain differentiation */
.map-world-cell.terrain-forest:not(.fog){
  background-image:
    radial-gradient(circle at 24% 28%,rgba(113,217,160,.09) 0 8%,transparent 9%),
    radial-gradient(circle at 72% 70%,rgba(61,139,105,.10) 0 9%,transparent 10%),
    linear-gradient(145deg,#1a332b,#12231d)!important;
}

.map-world-cell.terrain-meadow:not(.fog){
  background-image:
    radial-gradient(circle at 30% 30%,rgba(211,220,109,.10) 0 7%,transparent 8%),
    radial-gradient(circle at 74% 66%,rgba(124,178,98,.08) 0 8%,transparent 9%),
    linear-gradient(145deg,#3c4d30,#233122)!important;
}

.map-world-cell.terrain-rock:not(.fog){
  background-image:
    linear-gradient(28deg,transparent 0 38%,rgba(255,255,255,.05) 39% 43%,transparent 44%),
    linear-gradient(122deg,transparent 0 55%,rgba(0,0,0,.14) 56% 62%,transparent 63%),
    linear-gradient(145deg,#50575f,#2a3037)!important;
}

.map-world-cell.terrain-ruins:not(.fog){
  background-image:
    linear-gradient(90deg,transparent 0 46%,rgba(255,214,155,.05) 47% 53%,transparent 54%),
    linear-gradient(145deg,#62463e,#31242b)!important;
}

/* biome tint */
.map-world-cell.biome-core:not(.fog){
  box-shadow:
    inset 0 0 0 1px rgba(94,191,255,.10),
    inset 0 0 18px rgba(67,135,255,.05)!important;
}

.map-world-cell.biome-marsh:not(.fog){
  box-shadow:
    inset 0 0 0 1px rgba(120,232,205,.08),
    inset 0 0 18px rgba(72,170,145,.05)!important;
}

.map-world-cell.biome-black_crater:not(.fog){
  box-shadow:
    inset 0 0 0 1px rgba(226,103,140,.11),
    inset 0 0 20px rgba(145,48,82,.07)!important;
}

.map-world-cell.biome-red_wastes:not(.fog){
  box-shadow:
    inset 0 0 0 1px rgba(255,138,88,.11),
    inset 0 0 18px rgba(188,74,51,.06)!important;
}

.map-world-cell.biome-flooded:not(.fog){
  box-shadow:
    inset 0 0 0 1px rgba(84,196,255,.11),
    inset 0 0 18px rgba(58,112,196,.05)!important;
}

.map-world-cell.biome-anomaly_forest:not(.fog){
  box-shadow:
    inset 0 0 0 1px rgba(197,104,255,.10),
    inset 0 0 18px rgba(116,52,173,.06)!important;
}

/* content emphasis */
.map-world-cell > span{
  text-shadow:0 1px 8px rgba(0,0,0,.45);
}

.map-world-cell > span b{
  filter:drop-shadow(0 0 8px rgba(255,255,255,.10));
}

.map-world-cell.has-building > span b,
.map-world-cell.has-poi > span b,
.map-world-cell.has-discovery > span b{
  filter:drop-shadow(0 0 10px rgba(80,220,255,.18));
}

.map-world-cell.has-building.revealed{
  border-color:rgba(255,214,120,.22)!important;
}

.map-world-cell.has-poi.revealed{
  border-color:rgba(196,128,255,.22)!important;
}

.map-world-cell.has-discovery.revealed{
  border-color:rgba(120,255,211,.22)!important;
}

.map-world-cell.has-poi.revealed::after,
.map-world-cell.has-discovery.revealed::after{
  content:"";
  position:absolute;
  inset:-3px;
  border-radius:10px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);
  pointer-events:none;
}

.map-world-cell .map-building-level{
  color:#ffd38b!important;
  font-weight:900;
  text-shadow:0 0 10px rgba(255,194,92,.22);
}

.map-world-cell.job-active i{
  background:radial-gradient(circle,#7fe8ff 0 45%,rgba(127,232,255,.2) 46% 100%);
  box-shadow:0 0 10px rgba(73,217,255,.34);
  border-radius:50%;
}

.map-world-cell > span small{
  color:#94b5c1!important;
  text-shadow:none;
}

/* objective + route readability */
.map-objective,
.map-route-step{
  box-shadow:
    0 0 0 1px rgba(97,235,255,.16),
    0 0 12px rgba(73,217,255,.16)!important;
}

.map-route-step > span::after{
  box-shadow:0 0 6px rgba(96,225,246,.26)!important;
}

/* minimap */
.map-minimap{
  border:1px solid rgba(90,205,220,.10);
  box-shadow:0 12px 28px rgba(0,0,0,.22);
}

.map-mini-cell{
  border-color:rgba(255,255,255,.03)!important;
}

.map-mini-cell.objective{
  box-shadow:inset 0 0 0 1px rgba(96,225,246,.35)!important;
}

.map-mini-cell.building{
  box-shadow:inset 0 0 0 1px rgba(255,204,120,.28)!important;
}

#mapMiniViewport{
  border:1px solid rgba(108,234,255,.38)!important;
  box-shadow:0 0 0 1px rgba(108,234,255,.08),0 0 14px rgba(108,234,255,.18)!important;
}

/* hud + controls */
.map-viewport-hud{
  background:linear-gradient(90deg,rgba(4,16,23,.92),rgba(7,18,25,.62))!important;
  border-left:2px solid rgba(76,220,255,.38)!important;
  box-shadow:0 10px 24px rgba(0,0,0,.18);
}

.map-viewport-controls button,
.map-viewport-controls b{
  border-color:rgba(120,219,255,.15)!important;
  box-shadow:0 8px 20px rgba(0,0,0,.18);
}

.map-viewport-controls b{
  color:#91eaff!important;
}

/* legends + chips */
.map-biome-legend span,
.map-legend span{
  border-color:rgba(255,255,255,.06)!important;
  background:rgba(8,18,26,.78)!important;
  box-shadow:0 6px 16px rgba(0,0,0,.16);
}

/* bottom console / tabs above map */
.map-bottom-console,
.map-segmented button,
.map-segmented .active{
  box-shadow:0 8px 20px rgba(0,0,0,.16);
}

/* keep decorative layers calm */
.map-fog-overlay{opacity:.72!important}
.map-contours{opacity:.08!important}
.map-depth-lines{opacity:.16!important}
.map-ambient-light{opacity:.58!important}
.map-drift-notes{opacity:.18!important}

/* === /PULSE MAP VISUAL PACK V1 === */


/* === PULSE MAP VISUAL PACK V2 — biome identity === */
.pulse-map-v2-root .map-world-cell[data-pulse-biome="core"]{
  --pa:25,41,51;--pb:10,22,29;--pc:84,207,220;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="green"]{
  --pa:28,52,39;--pb:14,31,24;--pc:99,184,126;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="frost"]{
  --pa:35,52,63;--pb:15,29,39;--pc:128,202,231;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="ash"]{
  --pa:56,45,38;--pb:27,24,23;--pc:198,139,94;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="marsh"]{
  --pa:24,54,49;--pb:12,30,30;--pc:80,191,160;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="ruins"]{
  --pa:47,43,57;--pb:23,23,31;--pc:151,129,189;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="anomaly"]{
  --pa:45,35,60;--pb:21,17,31;--pc:184,104,221;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="flooded"]{
  --pa:22,48,63;--pb:11,26,39;--pc:78,177,219;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="red_wastes"]{
  --pa:64,39,31;--pb:32,20,20;--pc:221,119,77;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="anomaly_forest"]{
  --pa:39,46,38;--pb:19,26,23;--pc:170,98,205;
}
.pulse-map-v2-root .map-world-cell[data-pulse-biome="black_crater"]{
  --pa:38,27,48;--pb:15,11,21;--pc:208,87,157;
}

/* Frontier should read immediately without animation. */
.pulse-map-v2-root .map-world-cell[data-pulse-status="revealed"]{
  border-color:rgba(83,222,238,.34)!important;
  box-shadow:inset 0 0 0 1px rgba(83,222,238,.07)!important;
}
.pulse-map-v2-root .map-world-cell[data-pulse-status="cleared"]{
  border-color:rgba(117,211,166,.16)!important;
}

/* Landmarks remain legible even in PERF. */
.pulse-map-v2-root .map-world-cell[data-pulse-poi="1"]{
  border-color:rgba(var(--pc),.58)!important;
  box-shadow:
    inset 0 0 0 1px rgba(var(--pc),.13),
    inset 0 0 14px rgba(var(--pc),.045)!important;
}
.pulse-map-v2-root .map-world-cell[data-pulse-poi="1"]::after{
  opacity:1!important;
  text-shadow:0 1px 6px rgba(0,0,0,.9);
}

/* Risk stays readable without glow/animation. */
.pulse-map-v2-root .map-world-cell[data-pulse-risk="3"]{
  border-bottom-color:rgba(224,146,79,.48)!important;
}
.pulse-map-v2-root .map-world-cell[data-pulse-risk="4"]{
  border-bottom-color:rgba(217,82,123,.58)!important;
}

/* Analysis emphasizes biome identity; History dims untouched territory. */
.pulse-map-v2-root[data-pulse-mode="analysis"] .map-world-cell[data-pulse-map-sector]{
  filter:saturate(1.16) brightness(1.04);
}
.pulse-map-v2-root[data-pulse-mode="history"] .map-world-cell[data-pulse-status="cleared"]{
  filter:saturate(1.06) brightness(1.05);
}
.pulse-map-v2-root[data-pulse-mode="history"] .map-world-cell[data-pulse-status="fog"]{
  opacity:.46!important;
}
/* === /PULSE MAP VISUAL PACK V2 === */
