body,html{height:100%}#main,body,html{margin:0;padding:0;width:100%}#main{height:100dvh}.custom-icon,.gps-tracker-icon{background:transparent!important;border:none!important}.gps-pulse-ring{animation:gps-ring 2s cubic-bezier(.4,0,.2,1) infinite;background:rgba(21,101,192,.35);border:2px solid rgba(21,101,192,.5);border-radius:50%;height:44px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.8);width:44px;will-change:transform,opacity}@keyframes gps-ring{0%{opacity:.8;transform:translate(-50%,-50%) scale(.7)}to{opacity:0;transform:translate(-50%,-50%) scale(2.5)}}.gps-icon-inner{position:relative;z-index:1}.path-line{transition:opacity .2s ease,stroke-width .2s ease}.path-line:hover{opacity:.95!important;stroke-width:3px!important}.path-primary:hover,.path-primary_link:hover{stroke-width:4px!important}.path-footway:hover,.path-path:hover,.path-pedestrian:hover{stroke-dasharray:2,2!important}.path-cycleway:hover{stroke:#08b52e!important}.leaflet-popup-close-button{align-items:center!important;background:#f3f4f6!important;border-radius:6px!important;color:#9ca3af!important;display:flex!important;font-size:16px!important;font-weight:400!important;height:26px!important;justify-content:center!important;line-height:1!important;padding:0!important;right:6px!important;top:6px!important;transition:all .2s ease!important;width:26px!important}.leaflet-popup-close-button:hover{background:#e5e7eb!important;color:#374151!important}.path-name-marker{background:transparent!important;border:none!important}.path-name-wrapper{left:0;pointer-events:none;position:absolute;top:0;transform:translate(-50%,-50%)}.path-name-text{background:hsla(0,0%,100%,.88);border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.15);color:#3d4a2d;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:11px;font-weight:600;letter-spacing:.2px;padding:2px 8px;text-transform:capitalize;white-space:nowrap}@keyframes highlightFade{0%{background-color:rgba(25,118,210,.12)}to{background-color:transparent}}@keyframes slideInRight{0%{transform:translateX(100%)}to{transform:translateX(0)}}.node-tooltip{background:hsla(0,0%,100%,.95)!important;border:1px solid rgba(148,163,184,.2)!important;border-radius:4px!important;box-shadow:0 2px 4px rgba(0,0,0,.08)!important;padding:0!important}.node-tooltip .leaflet-tooltip-content{margin:0!important;padding:3px 6px!important}.leaflet-interactive.node-marker{transition:fill-opacity .2s ease-in-out}.leaflet-container.leaflet-drag-panning .node-marker{display:none}.node-intersection{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.node-endpoint{filter:drop-shadow(0 .5px 1px rgba(0,0,0,.05))}.node-waypoint{opacity:.6}@media (max-zoom:14){.node-waypoint{display:none}}@media (max-zoom:13){.node-endpoint{display:none}}.nodes-toggle-control{background:#fff;border-radius:4px;bottom:80px;box-shadow:0 2px 6px rgba(0,0,0,.12);padding:6px;position:absolute;right:10px;z-index:1000}.nodes-toggle-btn{align-items:center;background:transparent;border:none;color:#64748b;cursor:pointer;display:flex;font-size:12px;gap:6px;padding:6px 10px;transition:background-color .2s}.nodes-toggle-btn:hover{background-color:#f1f5f9}.nodes-toggle-btn.active{background-color:#eff6ff;color:#3b82f6}.nodes-toggle-btn svg{height:14px;width:14px}.nodes-loading-indicator{align-items:center;background:hsla(0,0%,100%,.95);border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,.1);color:#94a3b8;display:flex;font-size:11px;gap:6px;padding:6px 10px;position:absolute;right:10px;top:70px;z-index:999}.nodes-loading-indicator:before{animation:spin .8s linear infinite;border:2px solid #cbd5e1;border-radius:50%;border-top-color:#3b82f6;content:"";height:12px;width:12px}@keyframes spin{to{transform:rotate(1turn)}}.nodes-counter{background:hsla(0,0%,100%,.9);border-radius:3px;bottom:120px;color:#94a3b8;font-size:10px;padding:4px 8px;pointer-events:none;position:absolute;right:10px;z-index:999}.leaflet-container[data-nodes-count="100"] .node-waypoint,.leaflet-container[data-nodes-count="200"] .node-waypoint,.leaflet-container[data-nodes-count="300"] .node-waypoint{display:none}.node-cluster{background:linear-gradient(135deg,#e2e8f0,#cbd5e1);border:2px solid #fff;color:#475569;font-size:11px;font-weight:600}