/* CabMe map (v3 – Pack E) */
.cm-map{position:relative;overflow:hidden;background:#E8EEEC;cursor:grab;user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent}
.cm-map:active{cursor:grabbing}
.cm-rot{position:absolute;inset:0}
.cm-tiles{position:absolute;left:0;top:0;will-change:transform}
.cm-tiles img{position:absolute;left:0;top:0;width:256px;height:256px;max-width:none;pointer-events:none;opacity:0;transition:opacity .25s}
.cm-tiles img.in{opacity:1}
.cm-tiles.cm-old img{transition:none}
.cm-svg{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.cm-pins{position:absolute;inset:0;pointer-events:none}
.cm-pin{position:absolute;left:0;top:0;width:0;height:0}
.cm-pin.anim{transition:transform 1s linear}
.cm-pin.drag{pointer-events:auto;cursor:move}
.cm-pin::before{content:'';position:absolute;left:-9px;top:-9px;width:18px;height:18px;border-radius:50%;background:#00707A;border:3px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.cm-pin.pickup::before{background:#00707A}
.cm-pin.dropoff::before{background:#0F1B1F;border-radius:4px}
.cm-pin.car::before{left:-15px;top:-15px;width:30px;height:30px;background:#FFC72C;border:3px solid #0F1B1F}
.cm-pin.car::after{content:'🚕';position:absolute;left:-9px;top:-11px;font-size:16px}
.cm-pin.busy::before{background:#E89B0C}
.cm-pin.wait::before{background:#C0392B;border-radius:4px}
.cm-pin.rank::before{left:-12px;top:-12px;width:24px;height:24px;border-radius:7px;background:#0F1B1F;border:2px solid #FFC72C}
.cm-pin.rank::after{content:'R';position:absolute;left:-12px;top:-12px;width:24px;line-height:24px;text-align:center;color:#FFC72C;font:800 12px Inter,sans-serif}
.cm-pin.home::before{background:#7FD3D9;border-color:#0F1B1F}
.cm-pin.vertex::before{left:-8px;top:-8px;width:16px;height:16px;background:#fff;border:4px solid #00707A}
.cm-pin.vertex.first::before{background:#FFC72C}
.cm-pin.arrow::before{display:none}
.cm-pin.arrow::after{content:'';position:absolute;left:-19px;top:-19px;width:38px;height:38px;transform:rotate(var(--rot,0deg));transition:transform .6s ease;
  background:no-repeat center/38px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 38 38'%3E%3Ccircle cx='19' cy='19' r='17' fill='%2300707A' fill-opacity='.25'/%3E%3Cpath d='M19 5l9 23-9-5-9 5z' fill='%23FFFFFF' stroke='%230F1B1F' stroke-width='2.5' stroke-linejoin='round'/%3E%3C/svg%3E")}
.cm-pin.arrow.stale::after{filter:grayscale(1);opacity:.6}
.cm-pin.pulse::before{display:block;left:-14px;top:-14px;width:28px;height:28px;background:transparent;border:0;animation:cm-pulse 1.6s infinite}
@keyframes cm-pulse{0%{box-shadow:0 0 0 0 rgba(192,57,43,.7)}100%{box-shadow:0 0 0 22px rgba(192,57,43,0)}}
.cm-pin span{position:absolute;left:14px;top:-12px;background:#0F1B1F;color:#fff;font:600 11px Inter,sans-serif;padding:3px 6px;border-radius:6px;white-space:nowrap}
.cm-line{fill:none;stroke:#00707A;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}
.cm-line.approach{stroke:#7FD3D9;stroke-dasharray:2 10;stroke-width:6}
.cm-line.trail{stroke:#E89B0C;stroke-width:4;opacity:.85}
.cm-line.est{stroke-dasharray:10 8}
.cm-line.area{stroke-width:3;fill:rgba(0,112,122,.12)}
.cm-line.area.test{stroke:#C99400;fill:rgba(255,199,44,.16);stroke-dasharray:8 6}
.cm-line.area.off,.cm-line.area.coming{stroke:#8FA3A7;fill:rgba(143,163,167,.10)}
.cm-line.area.editing{stroke:#E85A28}
.cm-zone{fill:rgba(0,112,122,.12);stroke:rgba(0,112,122,.5);stroke-width:1.5}
.cm-zone.area{stroke-width:3}
.cm-zone.area.test{fill:rgba(255,199,44,.16);stroke:#C99400;stroke-dasharray:8 6}
.cm-zone.busy1{fill:rgba(255,199,44,.16);stroke:rgba(255,199,44,.55)}
.cm-zone.busy2{fill:rgba(255,150,40,.26);stroke:rgba(255,150,40,.75)}
.cm-zone.busy3{fill:rgba(255,80,40,.34);stroke:rgba(255,90,50,.9)}
.cm-zoom{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:4px;z-index:2}
.cm-zoom button{width:34px;height:34px;border-radius:8px;border:0;background:#fff;font:700 18px Inter,sans-serif;box-shadow:0 1px 4px rgba(0,0,0,.25);cursor:pointer}
.cm-attr{position:absolute;right:0;bottom:0;background:rgba(255,255,255,.8);font:11px Inter,sans-serif;padding:2px 6px;color:#33474B;z-index:2}
/* night style */
.cm-dark{background:#0E1A1D}
.cm-dark .cm-line{stroke:#7FD3D9}
.cm-dark .cm-line.approach{stroke:#FFC72C}
.cm-dark .cm-attr{background:rgba(15,27,31,.75);color:#9FB3B6}
/* only for map services without a night style (e.g. plain OpenStreetMap) */
.cm-invert .cm-tiles img{filter:invert(1) hue-rotate(180deg) brightness(.85) contrast(.9) saturate(.5)}
