/* 6.2 map view only. These selectors never restyle the approved world plaques. */
#game-world .map62-layer{position:absolute;inset:0;overflow:hidden;z-index:10;pointer-events:none;isolation:isolate;}
#game-world .map62-layer[hidden]{display:none!important;}
#game-world .map62-space{position:absolute;left:0;top:0;transform-origin:0 0;pointer-events:none;}
#game-world .map62-roads{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;}
#game-world .map62-roads path{fill:none;stroke:#fff;stroke-width:8px;stroke-linecap:round;stroke-dasharray:1 19;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 1px #233b45a0);}
#game-world .map62-card{position:absolute;transform:translate(-50%,-50%);box-sizing:border-box;overflow:hidden;border:3px solid #715034;border-radius:10px;
 background-color:#896044;background-image:url('../../assets/game/panel_wood_tile.webp');background-size:100% 100%;background-blend-mode:multiply;
 box-shadow:inset 0 0 0 1px #e2b77d55,inset 0 -4px 5px #35241955,0 4px 7px #142b3766;color:#fff4dc;pointer-events:none;}
#game-world .map62-card::before{content:'';position:absolute;left:-1px;right:-1px;top:-1px;height:12px;background:var(--map62-wood) center/100% 100%;box-shadow:0 1px 2px #29180788;pointer-events:none;}
#game-world .map62-card[data-region="volcano"]{--map62-wood:url('../../assets/signage61/wood-volcano.webp');}
#game-world .map62-card[data-region="midway"]{--map62-wood:url('../../assets/signage61/wood-midway.webp');}
#game-world .map62-card[data-region="meadow"]{--map62-wood:url('../../assets/signage61/wood-meadow.webp');}
#game-world .map62-card[data-region="reef"]{--map62-wood:url('../../assets/signage61/wood-reef.webp');}
#game-world .map62-card[data-region="cavern"]{--map62-wood:url('../../assets/signage61/wood-cavern.webp');}
#game-world .map62-layer button{pointer-events:none;color:#fff4dc;box-sizing:border-box;touch-action:none;}
#game-world .map62-layer.map62-interactive button{pointer-events:auto;}
#game-world.input-blocked .map62-layer button{pointer-events:none;}
#game-world .map62-heading{width:100%;height:70px;text-align:left;padding:17px 12px 0;border:0;background:none;text-shadow:0 1px 2px #211508;}
#game-world .map62-heading strong{display:flex;gap:6px;align-items:center;color:white;white-space:nowrap;font:700 21px/24px Georgia,serif;}
#game-world .map62-type{width:20px;height:22px;flex:0 0 20px;filter:none;}
#game-world .map62-owner{display:flex;gap:4px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;font:600 17px/23px 'Trebuchet MS',sans-serif;}
#game-world .map62-owner .coin-icon,#game-world .map62-vault .coin-icon{width:18px;height:18px;vertical-align:-3px;flex:0 0 18px;}
#game-world .map62-owner-dot{display:inline-block;width:9px;height:9px;border:1px solid #fff4dc;background:var(--owner);border-radius:50%;flex:0 0 9px;}
#game-world .map62-residents{height:68px;display:flex;align-items:center;justify-content:center;gap:18px;padding:0 8px;position:relative;}
#game-world .map62-creature{width:102px;height:65px;flex:0 0 102px;position:relative;background:none;border:0;padding:0;text-align:center;}
#game-world .map62-body{width:52px;height:51px;position:absolute;left:25px;top:0;object-fit:contain;filter:drop-shadow(0 1px 1px #1f160ea0);}
#game-world .map62-power{position:absolute;left:68px;top:20px;min-width:19px;height:19px;padding:0 3px;border-radius:50%;border:1px solid #f8e5c3;background:var(--owner);color:#fff;font:700 14px/18px 'Trebuchet MS',sans-serif;}
#game-world .map62-name{position:absolute;left:0;right:0;bottom:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:700 14px/16px 'Trebuchet MS',sans-serif;text-shadow:0 1px 2px #211508;}
#game-world .map62-creature.evolved .map62-name::after{content:' ★';color:#ffda78;}
/* 6.88: the defence structure on a map card, every device (the one PC change of the stage). It was a 27 x 34 box
   (a square art drawn 27 px) loose on the wood at the right of the creature row, easy to miss. Now a badge in the
   card's top right corner: the art drawn 56 px (twice its size) on a cream plate with a dark rim and a shadow
   (plate against the wood 5.0:1 by the base colour #896044, more against the darker tile, the rim on the plate 11.3:1,
   the art on the plate 3.3:1 where it was 1.5:1 on the wood), inside the 70 px heading band, so it never reaches the
   creature row. Still a child of the creature row (the markup is unchanged), so it is placed by a negative top:
   the row starts 70 px below the card's top. On a card that carries one the heading leaves the badge's column
   free (padding-right 68: the badge's 64 plus its 3 px inset, 1 px clear) and its name line, otherwise a nowrap
   flex row, becomes a block with an ellipsis at 18 px (21 elsewhere), the largest face at which the longest name,
   "Thunder Coaster", still fits the 184 px left of the badge (measured 181 px in the probe; 191 at 19 px), so no
   name runs under the badge and only a name longer than every island's would take the ellipsis; the owner line
   already has its ellipsis. The card is transform-scaled by --map67-node-scale, so the badge scales with
   it. pointer-events stay none: the heading button underneath answers the tap (help mode reads the badge's
   title through its own hit test, help671/targets.mjs). */
#game-world .map62-structure{position:absolute;right:3px;top:-67px;width:64px;height:64px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:2px;border:2px solid #4a2e18;border-radius:14px;background:#fff4dc;box-shadow:0 0 0 3px #fff4dc80,0 2px 5px #0a0604cc;pointer-events:none;}
#game-world .map62-structure img{width:56px;height:56px;object-fit:contain;filter:drop-shadow(0 1px 1px #00000066);}
#game-world .map62-card:has(.map62-structure) .map62-heading{padding-right:68px;}
#game-world .map62-card:has(.map62-structure) .map62-heading strong{display:block;overflow:hidden;text-overflow:ellipsis;font-size:18px;}
#game-world .map62-card:has(.map62-structure) .map62-heading .map62-type{display:inline-block;vertical-align:-4px;margin-right:6px;}
#game-world .map62-vault{display:flex;align-items:center;justify-content:center;}
#game-world .map62-vault::before{display:none;}
#game-world .map62-vault-button{padding:8px 3px;width:100%;height:100%;text-align:center;text-shadow:0 1px 2px #211508;}
#game-world .map62-vault-button strong{display:block;color:white;font:700 22px/28px Georgia,serif;}
#game-world .map62-vault-button span{display:inline;font:600 18px/24px 'Trebuchet MS',sans-serif;}
#game-world .map62-vault-button>span{display:block;}
#game-world .map62-vault-button small{font:600 15px/20px 'Trebuchet MS',sans-serif;white-space:nowrap;}
#game-world .map62-guardian{position:absolute;transform:translate(-50%,-50%);width:60px;height:70px;border:4px solid white;border-radius:10px;
 background:#354550c9;box-shadow:0 3px 6px #20313d99;padding:2px;overflow:visible;}
#game-world .map62-guard-art{position:absolute;left:2px;top:2px;width:48px;height:55px;object-fit:contain;}
#game-world .map62-prize{position:absolute;right:-12px;bottom:-10px;width:31px;height:35px;object-fit:contain;filter:drop-shadow(0 1px 2px #172a37);}
#game-world .map62-guard-power{position:absolute;bottom:0;left:2px;color:white;font:700 17px/21px 'Trebuchet MS',sans-serif;text-shadow:0 1px 2px #142c35;}
#game-world .map62-card.map62-target,#game-world .map62-creature.map62-target{outline:4px solid #f9dd75;outline-offset:2px;}
#game-world .map62-guardian.map62-target{box-shadow:0 0 0 3px #f9dd75,0 3px 6px #20313d99;}
#game-world .map62-focused{filter:brightness(1.15);}
#game-world .map62-layer button:focus-visible{outline:4px solid #fff3b8;outline-offset:-3px;}

/* 6.3: only Jackpot / Bank Vault map connections use yellow dots. */
#game-world .map62-roads path.map63-vault-link{stroke:#ffd447;}

/* 6.7: uniform zoom-linked node growth keeps art, labels and icons proportional.
   Route centres already use the same interpolated points as their island cards.
   Dot diameter and spacing grow together; full-zoom values match 6.6 exactly. */
#game-world .map62-card,#game-world .map62-guardian{transform:translate(-50%,-50%) scale(var(--map67-node-scale,1));transform-origin:50% 50%;}
#game-world .map62-roads path{stroke-width:var(--map67-dot-width,8px);stroke-dasharray:var(--map67-dot-dash,1) var(--map67-dot-gap,19);}
