/* Single stable, lightweight map puppet: deliberately no PNG / 3D swap. */
.leaflet-marker-icon .tree-stickman{position:relative;width:48px;height:48px;cursor:pointer;isolation:isolate;}
.tree-stickman .tc-character{display:block;width:48px;height:48px;overflow:visible;filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 1.5px rgba(255,255,255,.82)) drop-shadow(0 1px 1px rgba(0,0,0,.6));}
.tree-stickman.current-player .tc-character{filter:drop-shadow(0 0 1px white) drop-shadow(0 0 2px #b5ffb5);}
.tree-stickman .tc-body{transform-box:view-box;transform-origin:16px 29px;}
.tree-stickman .tc-torso,.tree-stickman .tc-head{fill:#101010;stroke:#101010;stroke-width:.65;stroke-linejoin:round;}
.tree-stickman .tc-leg,.tree-stickman .tc-arm{fill:none;stroke:#101010;stroke-width:3.6;stroke-linecap:round;stroke-linejoin:round;transform-box:view-box;}
.tree-stickman .tc-left-leg{transform-origin:14px 29px}.tree-stickman .tc-right-leg{transform-origin:18px 29px}
.tree-stickman .tc-left-arm{transform-origin:12.2px 19px}.tree-stickman .tc-right-arm{transform-origin:19.8px 19px}
.tree-stick-tooltip{pointer-events:none;position:absolute;bottom:47px;left:50%;transform:translate(-50%,4px);opacity:0;transition:opacity .14s,transform .14s;background:rgba(15,18,22,.97);color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:9px;padding:5px 9px 5px 5px;white-space:nowrap;display:flex;align-items:center;gap:7px;z-index:5000;font:600 12px/1.3 sans-serif;box-shadow:0 3px 12px #0009}
.tree-stick-tooltip img{width:27px;height:27px;object-fit:cover;border-radius:6px}
.tree-stickman:hover .tree-stick-tooltip,.tree-stickman:focus-within .tree-stick-tooltip{opacity:1;transform:translate(-50%,0)}
@media(prefers-reduced-motion:reduce){.tree-stick-tooltip{transition:none}}


/* Avatar stays inside the existing single head, rather than creating a second head. */
.tree-stickman .tc-avatar{pointer-events:none;clip-path:circle(49% at 50% 50%)}
.tree-stickman .tc-bike{pointer-events:none}
.tree-stickman .tc-bike-frame{stroke:#dfe5e8;stroke-width:1.9;stroke-linejoin:round;stroke-linecap:round;fill:none}
.tree-stickman .tc-bike-wheel{fill:#161a1d;stroke:#e8eef2;stroke-width:1.7}
.tree-stickman .tc-bike-hub{fill:#e8eef2;stroke:none}
.tree-stickman .tc-bike-seat{fill:#dfe5e8;stroke:#dfe5e8;stroke-width:.4}
.tree-stickman .tc-bike-body{fill:#6f767c;stroke:#dfe5e8;stroke-width:.8;stroke-linejoin:round}
.tree-stickman .tc-is-riding .tc-body{transform-origin:16px 29px}

/* Cumulative activity art. One DOM/SVG marker, no per-player WebGL. */
.tree-stickman .tc-character{width:48px;height:48px}
.tree-stickman .tc-car-body{fill:#f5a623;stroke:#17191d;stroke-width:1.5;stroke-linejoin:round}
.tree-stickman .tc-car-window{fill:#48c9dd;stroke:#222;stroke-width:1.2}
.tree-stickman .tc-car-door{stroke:#cf7d00;stroke-width:1.1;fill:none}
.tree-stickman .tc-car-light{fill:#fff0a9;stroke:#333;stroke-width:.6}
.tree-stickman .tc-car-tire{fill:#15191e;stroke:#e9e9e9;stroke-width:1.3}
.tree-stickman .tc-car-rim{fill:#b4b6b8;stroke:#555;stroke-width:.8}
.tree-stickman .tc-sign-stick{stroke:#5e4633;stroke-width:2.2;stroke-linecap:round}
.tree-stickman .tc-sign-board{fill:#f6d87b;stroke:#1b1b1b;stroke-width:1.4}
.tree-stickman .tc-sign-label{font:bold 7px Arial,sans-serif;fill:#171717}

/* Activity v2: readable crouch silhouette and clearer car. */
.tree-stickman .tc-crouch-pose{display:none}
.tree-stickman .tc-character.tc-crouching .tc-body{display:none}
.tree-stickman .tc-character.tc-crouching .tc-crouch-pose{display:block}
.tree-stickman .tc-crouch-torso,.tree-stickman .tc-crouch-pose .tc-head{fill:#101010;stroke:#101010;stroke-width:.65;stroke-linejoin:round}
.tree-stickman .tc-crouch-limb{fill:none;stroke-width:3.55;stroke-linecap:round;stroke-linejoin:round}
.tree-stickman .tc-crouch-front{stroke:#111}
.tree-stickman .tc-crouch-back{stroke:#515151}
.tree-stickman .tc-car-shadow{fill:none;stroke:rgba(0,0,0,.28);stroke-width:1.6;stroke-linecap:round}
.tree-stickman .tc-car-body{fill:#f3aa17;stroke:#17191d;stroke-width:1.35;stroke-linejoin:round}
.tree-stickman .tc-car-window{fill:#39c7df;stroke:#1e2429;stroke-width:1.1}
.tree-stickman .tc-car-window-divider{stroke:#d8f4fa;stroke-width:.9;fill:none}
.tree-stickman .tc-car-door{stroke:#c77800;stroke-width:1.05;fill:none}
.tree-stickman .tc-car-bumper{stroke:#d7dadd;stroke-width:1.1;fill:none;stroke-linecap:round}
.tree-stickman .tc-car-light.tc-car-headlight{fill:#fff1aa;stroke:#6f5d12;stroke-width:.55}
.tree-stickman .tc-car-light.tc-car-tail{fill:#ef5952;stroke:#65221d;stroke-width:.55}
.tree-stickman .tc-car-tire{fill:#13171b;stroke:#eceef0;stroke-width:1.15}
.tree-stickman .tc-car-rim{fill:#c5c8cb;stroke:#565a60;stroke-width:.7}

/* Activity v3: icon-like crouch and sketch-style car. */
.tree-stickman .tc-crouch-pose{display:none}
.tree-stickman .tc-character.tc-crouching .tc-body{display:none}
.tree-stickman .tc-character.tc-crouching .tc-crouch-pose{display:block}
.tree-stickman .tc-crouch-torso,.tree-stickman .tc-crouch-pose .tc-head{fill:#101010;stroke:#101010;stroke-width:.65;stroke-linejoin:round}
.tree-stickman .tc-crouch-limb{fill:none;stroke:#101010;stroke-width:4.1;stroke-linecap:round;stroke-linejoin:round}
.tree-stickman .tc-car-shadow{fill:none;stroke:rgba(0,0,0,.22);stroke-width:1.25;stroke-linecap:round}
.tree-stickman .tc-car-body{fill:#ffffff;stroke:#111;stroke-width:1.35;stroke-linejoin:round}
.tree-stickman .tc-car-window{fill:none;stroke:#111;stroke-width:1.25;stroke-linejoin:round}
.tree-stickman .tc-car-window-divider{fill:none;stroke:#111;stroke-width:1.0}
.tree-stickman .tc-car-door{fill:none;stroke:#111;stroke-width:1.0}
.tree-stickman .tc-car-bumper{fill:none;stroke:#111;stroke-width:1.0;stroke-linecap:round}
.tree-stickman .tc-car-light.tc-car-headlight,.tree-stickman .tc-car-light.tc-car-tail{fill:none;stroke:#111;stroke-width:1.05}
.tree-stickman .tc-car-tire{fill:#0f1113;stroke:#0f1113;stroke-width:1.0}
.tree-stickman .tc-car-rim{fill:#fff;stroke:#fff;stroke-width:.7}
.tree-stickman .tc-driver-head{fill:#fff;stroke:#111;stroke-width:.95}
.tree-stickman .tc-driver-body{fill:none;stroke:#111;stroke-width:1.05;stroke-linecap:round;stroke-linejoin:round}
.tree-stickman .tc-driver-face-bg{fill:#fff;stroke:none}
.tree-stickman .tc-car-avatar{clip-path:circle(49% at 50% 50%)}

/* Crouch-walk v4: a low, forward-leaning silhouette and independently animated steps. */
.tree-stickman .tc-crouch-pose{display:none}
.tree-stickman .tc-character.tc-crouching .tc-crouch-pose{display:block}
.tree-stickman .tc-character.tc-crouching .tc-body{display:none}
.tree-stickman .tc-crouch-back-leg,.tree-stickman .tc-crouch-front-leg,.tree-stickman .tc-crouch-arm{fill:none;stroke:#101010;stroke-linecap:round;stroke-linejoin:round}
.tree-stickman .tc-crouch-back-leg{stroke-width:3.35;stroke:#555}
.tree-stickman .tc-crouch-front-leg{stroke-width:3.9}
.tree-stickman .tc-crouch-arm{stroke-width:3.0}
.tree-stickman .tc-crouch-torso{fill:#101010;stroke:#101010;stroke-width:.7;stroke-linejoin:round}

/* Crouch A balanced pose: forward-leaning upper body with short, bent walking steps.
   Existing standing figure is hidden; both forms retain the Steam-avatar head. */
.tree-stickman .tc-character.tc-crouching .tc-crouch-pose {display:block}
.tree-stickman .tc-character.tc-crouching .tc-body {display:none}
.tree-stickman .tc-crouch-back-leg,.tree-stickman .tc-crouch-front-leg{
  fill:none;stroke:#101010;stroke-linecap:round;stroke-linejoin:round;
}
.tree-stickman .tc-crouch-back-leg{stroke-width:3.55;stroke:#373737}
.tree-stickman .tc-crouch-front-leg{stroke-width:3.8}
.tree-stickman .tc-crouch-torso{fill:#101010;stroke:#101010;stroke-width:.75;stroke-linejoin:round}
.tree-stickman .tc-crouch-arm{fill:none;stroke:#101010;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.8}
.tree-stickman .tc-crouch-left-arm{stroke:#474747;stroke-width:2.7}

/* Held-equipment and directional-head extension; no additional render layer. */
.tree-stickman .tc-face-turn{transform-box:fill-box;transform-origin:center center;
  transform:translateX(var(--tc-head-shift,0px)) scaleX(var(--tc-head-width,1));}
.tree-stickman .tc-held-item{pointer-events:none}
.tree-stickman .tc-gear-art{display:none;stroke-linecap:round;stroke-linejoin:round}
.tree-stickman .tc-held-1 .tc-gear-pistol,
.tree-stickman .tc-held-2 .tc-gear-rifle,
.tree-stickman .tc-held-3 .tc-gear-bow,
.tree-stickman .tc-held-4 .tc-gear-blade,
.tree-stickman .tc-held-5 .tc-gear-club,
.tree-stickman .tc-held-6 .tc-gear-pickaxe,
.tree-stickman .tc-held-7 .tc-gear-axe,
.tree-stickman .tc-held-8 .tc-gear-shovel,
.tree-stickman .tc-held-9 .tc-gear-wrench,
.tree-stickman .tc-held-10 .tc-gear-ratchet,
.tree-stickman .tc-held-11 .tc-gear-impactdriver,
.tree-stickman .tc-held-12 .tc-gear-auger,
.tree-stickman .tc-held-13 .tc-gear-chainsaw,
.tree-stickman .tc-held-14 .tc-gear-hammer,
.tree-stickman .tc-held-15 .tc-gear-nailgun,
.tree-stickman .tc-held-16 .tc-gear-paintbrush,
.tree-stickman .tc-held-17 .tc-gear-wiretool,
.tree-stickman .tc-held-18 .tc-gear-flashlight,
.tree-stickman .tc-held-19 .tc-gear-torch,
.tree-stickman .tc-held-20 .tc-gear-blockreplace,
.tree-stickman .tc-held-21 .tc-gear-utility{display:block}
.tree-stickman .tc-gear-outline{fill:#202b36;stroke:#10151a;stroke-width:1.25}
.tree-stickman .tc-gear-gunmetal{fill:#647989;stroke:#27323d;stroke-width:.75}
.tree-stickman .tc-gear-steel{fill:#acbec8;stroke:#43535f;stroke-width:.85}
.tree-stickman .tc-gear-highlight{stroke:#f0f7fb;stroke-width:.9;fill:none;opacity:.93}
.tree-stickman .tc-gear-wood{fill:#9e6236;stroke:#432a20;stroke-width:1.0}
.tree-stickman .tc-gear-woodgrain{fill:none;stroke:#ecc08b;stroke-width:.8}
.tree-stickman .tc-gear-brass{fill:#d5a94c;stroke:#514223;stroke-width:.7}
.tree-stickman .tc-gear-detail{fill:none;stroke:#1d2d37;stroke-width:1}
.tree-stickman .tc-gear-rivet{fill:#dbe6ee;stroke:#28343e;stroke-width:.5}
.tree-stickman .tc-gear-earth{fill:#8f7058;stroke:#3f3026;stroke-width:.9}
.tree-stickman .tc-gear-accent{fill:#d97f2f;stroke:#5f3213;stroke-width:.75}
.tree-stickman .tc-gear-toolgrip{fill:#34383c;stroke:#15191d;stroke-width:.85}
.tree-stickman .tc-character.tc-is-riding .tc-held-item{display:none}

/* Held-tool art is embedded in the existing SVG. Individual symbols, no external assets. */
.tree-stickman .tc-gear-red{fill:#be4234;stroke:#5c2927;stroke-width:.8}
.tree-stickman .tc-gear-yellow{fill:#f5c246;stroke:#76531a;stroke-width:.8}
.tree-stickman .tc-gear-bristle{fill:#65adc5;stroke:#25515b;stroke-width:.7}
.tree-stickman .tc-gear-fire{fill:#f49d23;stroke:#a84310;stroke-width:.7}
.tree-stickman .tc-gear-fire-inner{fill:#ffea74;stroke:none}
.tree-stickman .tc-gear-cable{fill:none;stroke:#be6942;stroke-width:1.15}
.tree-stickman .tc-gear-power{fill:#d58a31;stroke:#2c3239;stroke-width:1}

/* V8: passenger avatars remain selectable; only the actual driver renders the car. */
.tree-stickman .tc-passenger-badge,.tree-stickman .tc-occupant-count{pointer-events:none}
.tree-stickman .tc-passenger-circle{fill:#232629;stroke:#f5e7bb;stroke-width:2}
.tree-stickman .tc-passenger-letter-bg{fill:#e5b85d;stroke:#17191b;stroke-width:1.0}
.tree-stickman .tc-passenger-letter{fill:#17191b;font:bold 9px Arial,sans-serif}
.tree-stickman .tc-occupant-bubble{fill:#242729;stroke:#f5e7bb;stroke-width:1.1}
.tree-stickman .tc-occupant-number{fill:#fff;font:bold 10px Arial,sans-serif}
.tree-map-vehicle-crew{margin:8px 0;padding:8px 10px;background:rgba(18,20,21,.85);border:1px solid #80663c;border-radius:6px}
.tree-map-vehicle-crew>strong{display:block;color:#e6c78c;margin-bottom:5px;font-size:12px}
.tree-map-crew-person{display:flex;gap:12px;justify-content:space-between;align-items:center;font-size:12px;padding:3px 0;border-top:1px solid rgba(255,255,255,.09)}
.tree-map-crew-person span{color:#eee;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree-map-crew-person small{color:#c9bc9f;white-space:nowrap;font-size:11px}

.tree-stickman .tc-character.tc-vehicle-passenger .tc-body{display:none}

/* V9: distinguish actual vehicle classes; consistent high-contrast outlines on
   forest/desert/city/wasteland tiles. SVGs are reused between 30-FPS frames. */
.tree-stickman .tc-v-drawing{stroke:#111619;stroke-linecap:round;stroke-linejoin:round}
.tree-stickman .tc-v-shell{fill:#f4f4f2;stroke:#10151a;stroke-width:1.65;stroke-linejoin:round}
.tree-stickman .tc-v-window{fill:#b9dfe5;stroke:#11161b;stroke-width:1.5;stroke-linejoin:round}
.tree-stickman .tc-v-wheel{fill:#16191c;stroke:#f5f5f4;stroke-width:1.65}
.tree-stickman .tc-v-rim{fill:#f4f5f2;stroke:#16191c;stroke-width:1}
.tree-stickman .tc-v-metal{fill:none;stroke:#10151a;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.tree-stickman .tc-v-dark{fill:#2e363b;stroke:#111;stroke-width:1.1}
.tree-stickman .tc-v-light{fill:none;stroke:#d7ad54;stroke-width:2.0}
/* Custom silhouettes include their own portrait; prevent long pedestrian legs
   crossing the vehicle, but keep the current hand-drawn car style untouched. */
.tree-stickman .tc-character.tc-is-riding:not(.tc-vehicle-car):not(.tc-vehicle-unknown):not(.tc-vehicle-other) .tc-body{display:none}
.tree-stickman .tc-v-driver-avatar{clip-path:circle(49% at 50% 50%)}
