.map{position:relative;width:100%;max-width:100%;--vgx-map-bezel: 6px;min-height:300px;height:clamp(300px,46vh,420px);overflow:hidden;border:var(--vgx-map-bezel) solid var(--vg-surface-2);border-radius:var(--vg-radius-lg);background:var(--vg-surface-2);box-shadow:var(--vg-shadow-hairline, 0 0 0 1px rgba(27, 58, 87, .08));touch-action:pan-y;isolation:isolate}@media(min-width:48rem){.map{--vgx-map-bezel: 8px}}.app-section--map .map{margin-inline:calc(-1 * var(--vg-space-4, 1rem));margin-bottom:calc(-1 * var(--vg-space-4, 1rem))}@media(min-width:68rem){.app-section--map #viagiora-map.map.map{--vgx-map-rail-chrome: calc(6.5rem + var(--app-nav-h, 64px) + env(safe-area-inset-bottom, 0px));height:calc(100vh - var(--vgx-map-rail-chrome));height:calc(100dvh - var(--vgx-map-rail-chrome));min-height:24rem;max-height:none}}.map.map--ready{background:var(--vg-surface)}.map__canvas{width:100%;max-width:100%;height:100%;min-height:inherit;background:var(--vg-surface-2);border-radius:inherit;touch-action:pan-y}.map__fallback{position:absolute;inset:0;z-index:400;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--vg-space-3);margin:0;padding:var(--vg-space-5);text-align:center;font-weight:600;color:var(--vg-text);background:var(--vg-surface-2)}.map__fallback:before{content:"";width:2rem;height:2rem;border-radius:var(--vg-radius-pill);border:3px solid var(--vg-border-strong);border-top-color:var(--vg-primary);animation:vg-map-spin .9s linear infinite}@keyframes vg-map-spin{to{transform:rotate(360deg)}}.map--ready .map__fallback{display:none}.map--ready .map__notice,.map__notice{display:flex;z-index:500;color:var(--vg-danger-ink);background:var(--vg-danger-bg);border:2px solid var(--vg-danger-border);border-radius:inherit}.map__notice:before{content:"⚠";animation:none;width:auto;height:auto;border:0;font-size:1.8rem;line-height:1;color:var(--vg-danger-ink)}.map__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--vg-space-2);margin-bottom:var(--vg-space-3)}.map-legend{display:flex;flex-wrap:wrap;gap:var(--vg-space-2) var(--vg-space-4);align-items:center;margin:0 0 var(--vg-space-3);padding:var(--vg-space-3) var(--vg-space-4);list-style:none;border:1px solid var(--vg-border);border-radius:var(--vg-radius);background:var(--vg-surface);box-shadow:var(--vg-shadow-1);font-size:.9rem}.map-legend__title{flex:0 0 100%;margin:0 0 var(--vg-space-1);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--vg-text-muted)}.map-legend__item{display:inline-flex;align-items:center;gap:var(--vg-space-2);font-weight:600;color:var(--vg-text)}.map-legend__symbol{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;flex:0 0 auto;border:2px solid var(--vg-cream, #faf6ef);box-shadow:0 0 0 1px var(--vg-border-strong);color:var(--vg-cream, #faf6ef);font-size:.85rem;font-weight:700;line-height:1}.map-legend__item--path .map-legend__symbol{background:var(--vg-navy-600, #163149);border-radius:var(--vg-radius-pill)}.map-legend__item--edge .map-legend__symbol{background:var(--vg-navy-500, #1b3a57);border-radius:var(--vg-radius)}.map-legend__item--node .map-legend__symbol{background:var(--vg-navy-800, #0d1f2e);border-radius:.3rem;transform:rotate(45deg)}.map-legend__item--node .map-legend__symbol>*{transform:rotate(-45deg)}.map-legend__label{flex:0 1 auto}.map .leaflet-control-attribution{background:#ffffffeb;color:var(--vg-text-muted);font-size:.72rem;line-height:1.4;padding:2px 6px;border-top-left-radius:var(--vg-radius)}.map .leaflet-control-attribution a{color:var(--vg-primary);text-decoration:underline}.map .leaflet-control-attribution a:hover{color:var(--vg-primary-strong)}.map .leaflet-bar{border:none;border-radius:var(--vg-radius);box-shadow:var(--vg-shadow-2);overflow:hidden}.map .leaflet-bar a,.map .leaflet-control-zoom a{display:flex;align-items:center;justify-content:center;width:var(--vg-touch);height:var(--vg-touch);line-height:1;font-size:1.4rem;font-weight:700;color:var(--vg-text);background:var(--vg-surface);border:1px solid var(--vg-border);transition:background var(--vg-transition),color var(--vg-transition)}.map .leaflet-bar a:first-child{border-top-left-radius:var(--vg-radius);border-top-right-radius:var(--vg-radius)}.map .leaflet-bar a:last-child{border-bottom-left-radius:var(--vg-radius);border-bottom-right-radius:var(--vg-radius)}.map .leaflet-bar a:hover{background:var(--vg-surface-2);color:var(--vg-primary)}.map .leaflet-bar a.leaflet-disabled{color:var(--vg-text-muted);background:var(--vg-surface-2);cursor:not-allowed}.map .leaflet-bar a:focus,.map .leaflet-control-zoom a:focus,.map .leaflet-control a:focus,.map .leaflet-marker-icon:focus,.map .leaflet-interactive:focus,.map .leaflet-bar a:focus-visible,.map .leaflet-control-zoom a:focus-visible,.map .leaflet-control a:focus-visible,.map .leaflet-marker-icon:focus-visible,.map .leaflet-interactive:focus-visible{outline:3px solid var(--vg-focus);outline-offset:2px;z-index:1000}.map-marker{display:flex;align-items:center;justify-content:center;width:var(--vg-touch);height:var(--vg-touch);box-sizing:border-box;color:var(--vg-text-inverse);background:transparent;border:none;cursor:pointer}.map-marker:focus,.map-marker:focus-visible{outline:3px solid var(--vg-focus);outline-offset:2px;border-radius:var(--vg-radius-pill)}.map-marker__disc{position:relative;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--vg-radius-pill);background:var(--vg-navy-600, #163149);border:3px solid var(--vg-cream, #faf6ef);box-shadow:var(--vg-shadow-2);font-size:.95rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--vg-cream, #faf6ef);line-height:1;transition:transform var(--vg-transition)}.map-marker:hover .map-marker__disc{transform:scale(1.08)}.map-marker__label{position:absolute;bottom:-.4rem;left:50%;transform:translate(-50%,100%);padding:.1em .5em;border-radius:var(--vg-radius);background:#1a1a17d9;color:var(--vg-text-inverse);font-size:.72rem;font-weight:700;white-space:nowrap;pointer-events:none}.map-marker--path .map-marker__disc{background:var(--vg-navy-600, #163149);border-radius:var(--vg-radius-pill)}.map-marker--edge .map-marker__disc{background:var(--vg-navy-500, #1b3a57);border-radius:var(--vg-radius)}.map-marker--edge .map-marker__disc:after{content:"⚑";position:absolute;top:-.55rem;right:-.35rem;font-size:.85rem;color:var(--vg-accent-ink)}.map-marker--node .map-marker__disc{background:var(--vg-navy-800, #0d1f2e);border-radius:.35rem;transform:rotate(45deg)}.map-marker--node:hover .map-marker__disc{transform:rotate(45deg) scale(1.08)}.map-marker--node .map-marker__disc>*{transform:rotate(-45deg)}.map-marker--done .map-marker__disc{background:var(--vg-accent);color:var(--vg-on-accent)}.map-marker--done .map-marker__disc:before{content:"✓";font-size:1.1rem}.map-marker--locked .map-marker__disc{background:var(--vg-surface-2);color:var(--vg-text-muted);border-color:var(--vg-border-strong)}.map-marker--locked .map-marker__disc:before{content:"🔒";font-size:1rem}.map-marker--current .map-marker__disc{outline:3px solid var(--vg-accent);outline-offset:2px}.map-marker--current:after{content:"";position:absolute;inset:4px;border-radius:var(--vg-radius-pill);border:2px solid var(--vg-accent);animation:vg-marker-pulse 1.8s ease-out infinite}@keyframes vg-marker-pulse{0%{transform:scale(.85);opacity:.9}to{transform:scale(1.6);opacity:0}}.map .leaflet-popup-content-wrapper{background:var(--vg-surface);color:var(--vg-text);border:1px solid var(--vg-border);border-radius:var(--vg-radius-lg);box-shadow:var(--vg-shadow-2)}.map .leaflet-popup-content{margin:var(--vg-space-3) var(--vg-space-4);line-height:var(--vg-line);font-size:.95rem}.map .leaflet-popup-tip{background:var(--vg-surface);border:1px solid var(--vg-border)}.map-popup__title{display:block;margin:0 0 var(--vg-space-1);font-size:1rem;font-weight:700;color:var(--vg-text)}.map-popup__meta{margin:0 0 var(--vg-space-2);color:var(--vg-text-muted);font-size:.85rem}.map-popup__theme{margin:0 0 var(--vg-space-2);color:var(--vg-text);font-size:.9rem;font-style:italic}.map-popup__action{display:inline-flex;align-items:center;justify-content:center;min-height:var(--vg-touch);padding:var(--vg-space-2) var(--vg-space-4);border-radius:var(--vg-radius);background:var(--vg-primary);color:var(--vg-text-inverse);font-weight:600;text-decoration:none}.map-popup__action:hover{background:var(--vg-primary-strong);color:var(--vg-text-inverse)}.map .leaflet-popup-close-button{width:var(--vg-touch);height:var(--vg-touch);padding:0;font-size:1.4rem;line-height:var(--vg-touch);color:var(--vg-text-muted)}.map .leaflet-popup-close-button:hover{color:var(--vg-text);background:var(--vg-surface-2)}.map .leaflet-popup-close-button:focus,.map .leaflet-popup-close-button:focus-visible{outline:3px solid var(--vg-focus);outline-offset:-3px}.map-route-line{stroke:var(--vg-primary);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;fill:none}.map .leaflet-interactive.map-route-line:focus,.map .leaflet-interactive.map-route-line:focus-visible{outline:3px solid var(--vg-focus);outline-offset:2px}.map-route-line--done{stroke:var(--vg-success)}.map-route-line--todo{stroke:var(--vg-primary);stroke-dasharray:2 8}.map-switch{display:inline-flex;border:2px solid var(--vg-border-strong);border-radius:var(--vg-radius-pill);overflow:hidden;background:var(--vg-surface)}.map-switch__btn{display:inline-flex;align-items:center;gap:var(--vg-space-1);min-height:var(--vg-touch);padding:var(--vg-space-2) var(--vg-space-4);border:none;background:transparent;color:var(--vg-text);font:inherit;font-weight:600;cursor:pointer}.map-switch__btn[aria-pressed=true]{background:var(--vg-primary);color:var(--vg-text-inverse)}.map-switch__btn[aria-pressed=true]:before{content:"✓ ";font-weight:700}.map-switch__btn:focus,.map-switch__btn:focus-visible{outline:3px solid var(--vg-focus);outline-offset:-3px}@media(max-width:30rem){.map__toolbar{flex-direction:column;align-items:stretch}.map-switch{width:100%}.map-switch__btn{flex:1 1 0;justify-content:center}.map-legend{gap:var(--vg-space-2)}}@media(prefers-reduced-motion:reduce){.map-marker--current:after{animation:none;inset:2px;opacity:1}.map__fallback:before{animation:none;border-top-color:var(--vg-border-strong)}.map-marker:hover .map-marker__disc,.map-marker--node:hover .map-marker__disc{transform:none}.map-marker--node:hover .map-marker__disc{transform:rotate(45deg)}.map-marker__disc{transition:none}}@media(prefers-contrast:more){.map{border-color:var(--vg-border-strong)}.map-marker__disc{border-width:3px;border-color:var(--vg-cream, #faf6ef)}.map .leaflet-bar a,.map-legend{border-color:var(--vg-border-strong)}.map-route-line{stroke-width:5}}@media(forced-colors:active){.map{border:2px solid CanvasText;background:Canvas;box-shadow:none}.map-marker__disc,.map .leaflet-bar a,.map-switch,.map-legend,.map-legend__symbol,.map .leaflet-popup-content-wrapper,.map__notice{border:2px solid ButtonText;forced-color-adjust:none}.map-marker--current .map-marker__disc{outline:3px solid Highlight}.map-marker:focus,.map-marker:focus-visible,.map .leaflet-bar a:focus-visible,.map-switch__btn:focus-visible,.map .leaflet-popup-close-button:focus-visible{outline:3px solid Highlight}.map-marker__disc:before,.map-marker__disc:after,.map__notice:before,.map-switch__btn[aria-pressed=true]:before{forced-color-adjust:auto}}.map-locate__btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;font-size:1.25rem;border:0;background:var(--vg-surface, #fff);color:var(--vg-text, #1c2530);cursor:pointer}.map-locate__btn:hover{background:var(--vg-surface-2, #f4efe5)}.map-locate__btn:disabled{opacity:.6;cursor:progress}.map-locate__btn:focus-visible{outline:3px solid var(--vg-focus, #0a4ea3);outline-offset:-3px}.map-user-marker{display:flex;align-items:center;justify-content:center;width:28px;height:28px;font-size:1.35rem;line-height:1;color:var(--vg-focus, #0a4ea3);text-shadow:0 0 3px var(--vg-surface, #fff),0 0 6px var(--vg-surface, #fff)}@media(forced-colors:active){.map-locate__btn{border:2px solid ButtonText}.map-user-marker{color:Highlight;forced-color-adjust:none}}
