.osm-layer,.real-map-pins,.real-route{position:absolute;inset:0}
.map{touch-action:none}
.map.maplibregl-map,.map .maplibregl-canvas-container,.map .maplibregl-canvas{width:100%;height:100%}
.map .maplibregl-canvas-container{position:absolute;inset:0}
.raster-fallback{position:absolute;inset:0;z-index:0;overflow:hidden;background:#d9ddcf;pointer-events:none}.raster-surface{position:absolute;left:0;top:0;width:100%;height:100%;transform-origin:0 0;will-change:transform}.raster-fallback img{position:absolute;width:256px;height:256px;max-width:none;display:block}.map .maplibregl-canvas-container{z-index:1;background:transparent}
.map .maplibregl-canvas{cursor:grab}
.map .maplibregl-canvas:active{cursor:grabbing}
.route-overlay{position:absolute;inset:0;z-index:2;pointer-events:none}.route-overlay svg{width:100%;height:100%;overflow:visible}.route-overlay path{fill:none;stroke:#1d5962;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 1px #fff);vector-effect:non-scaling-stroke}
.stops-overlay{position:absolute;inset:0;z-index:3;pointer-events:none}.map-stop{position:absolute;width:22px;height:22px;padding:0;transform:translate(-50%,-50%);border:2px solid #f6f0d9;border-radius:50%;color:#112123;box-shadow:0 1px 3px #182a2c88;font:700 10px 'DM Mono';pointer-events:auto;cursor:pointer}.map-stop-blue{background:#6bb5e9}.map-stop-amber{background:#e7b75e}.map-stop-green{background:#63c59e}.map-stop-purple{background:#b395e6}.map-stop-cluster{width:28px;height:28px;background:#294f50;color:#f1f2e9;border-color:#e7b75e;box-shadow:0 0 0 3px #294f5055,0 1px 4px #182a2c99}
.map-context-menu{position:absolute;z-index:6;min-width:208px;padding:4px;border:1px solid #56706c;border-radius:7px;background:#132427f2;box-shadow:0 8px 20px #08111366}.map-context-menu[hidden],.map-context-menu [hidden]{display:none}.map-context-menu button{border:0;border-radius:4px;padding:9px 11px;background:transparent;color:#f1f2e9;text-align:left;font:500 11px 'Space Grotesk';cursor:pointer}.map-context-menu button:hover{background:#254441}.map-context-menu .context-actions button{width:100%}.context-add-form{padding:4px}.context-add-form input{width:100%;padding:8px;border:1px solid #56706c;border-radius:4px;background:#0c171a;color:#f1f2e9;outline:0;font:11px 'Space Grotesk'}.context-add-form input:focus{border-color:#e7b75e}.context-add-form>div{display:flex;justify-content:flex-end;gap:4px;margin-top:4px}.context-add-form>div button{padding:6px 8px}.context-add-form>div button[type=submit]{background:#e7b75e;color:#192b29}
.map-search{position:absolute;z-index:6;top:24px;left:50%;width:min(390px,calc(100% - 48px));transform:translateX(-50%);color:#f1f2e9}.map-search-row{display:flex;background:#132427f5;border:1px solid #56706c;border-radius:8px;box-shadow:0 8px 20px #08111355;overflow:hidden}.map-search input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#f1f2e9;padding:11px 12px;font:12px 'Space Grotesk'}.map-search input::placeholder{color:#9cadaa}.map-search-row button{width:42px;border:0;border-left:1px solid #345054;background:#e7b75e;color:#192b29;font-size:20px;cursor:pointer}.map-search-results{margin-top:5px;overflow:hidden;border:1px solid #56706c;border-radius:8px;background:#132427f7;box-shadow:0 8px 20px #08111366}.map-search-results[hidden]{display:none}.map-search-result{width:100%;display:grid;grid-template-columns:1fr auto;gap:3px 10px;border:0;border-bottom:1px solid #294144;background:transparent;color:#f1f2e9;text-align:left;padding:10px 12px;cursor:pointer}.map-search-result:last-child{border-bottom:0}.map-search-result:hover{background:#254441}.map-search-result strong{font-size:12px}.map-search-result small{grid-column:1;color:#9cadaa;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-search-result span{grid-column:2;grid-row:1 / span 2;align-self:center;color:#e7b75e;font-size:10px}.map-search-message{padding:12px;color:#9cadaa;font-size:11px}.map-search>small{display:block;margin:5px 4px;color:#536a67;font:9px 'DM Mono'}
.osm-layer{overflow:hidden;background:#d9ddcf}
.osm-layer img{position:absolute;width:256px;height:256px;max-width:none;display:block}
.real-route{z-index:2;pointer-events:none}
.real-route path{fill:none;stroke:#1d5962;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 1px #fff);vector-effect:non-scaling-stroke}
.real-map-pins{z-index:3}
.real-map-pins .map-pin{position:absolute}
.map-loading{position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);padding:10px 14px;background:#132427dd;color:#f1f2e9;border-radius:8px;font:11px 'DM Mono'}
.map-attribution{position:absolute;z-index:4;right:10px;bottom:7px;color:#405450;background:#f3f2e8cc;padding:2px 5px;font:9px sans-serif}
.route-optimize{width:100%;margin-top:4px;padding:9px 12px;border:1px solid #c0923e;border-radius:7px;background:#e7b75e;color:#192b29;font:600 11px 'Space Grotesk';cursor:pointer}.route-optimize:hover{background:#f0c66f}.route-optimize:disabled{opacity:.6;cursor:wait}
.zones-overlay{position:absolute;inset:0;z-index:1;pointer-events:none}.zones-overlay svg{width:100%;height:100%;overflow:visible}.zones-overlay path{pointer-events:auto;cursor:pointer;fill:#e7b75e33;stroke:#a78645;stroke-width:1.5;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.zones-overlay path.zone-exempt{fill:#63c59e26;stroke:#4a9876}.zones-overlay path.zone-unverified{stroke:#c16e63;stroke-dasharray:2 3}.zones-overlay path:focus,.zones-overlay path:hover{fill:#e7b75e66;stroke:#f1d486;outline:0}.zones-overlay path.zone-exempt:focus,.zones-overlay path.zone-exempt:hover{fill:#63c59e55;stroke:#9de2bc}.zones-overlay path.zone-unverified:focus,.zones-overlay path.zone-unverified:hover{stroke:#f0a196}

/* Keep the route controls reachable on short viewports without covering the map. */
.route-panel{
  max-height:calc(100% - 48px);
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  padding-bottom:24px;
}

@media(max-width:720px){
  .route-panel{
    max-height:47%;
    overflow-y:auto;
  }
}

.route-panel-bar{
  position:sticky;
  top:-1px;
  z-index:3;
  display:flex;
  align-items:center;
  gap:8px;
  min-height:32px;
  margin:-23px -22px 16px;
  padding:7px 12px;
  border-bottom:1px solid rgba(41,65,68,.8);
  background:rgba(15,30,32,.98);
  cursor:grab;
  user-select:none;
  touch-action:none;
}
.route-panel-bar:active,.route-panel.is-dragging .route-panel-bar{cursor:grabbing}
.route-panel-grip{color:#688080;font-size:16px;line-height:1}
.route-panel-label{flex:1;color:var(--muted);font:10px 'DM Mono';letter-spacing:.08em;text-transform:uppercase}
.route-panel-minimize{width:24px;height:24px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text);font-size:16px;line-height:1;cursor:pointer}
.route-panel-minimize:hover{border-color:#6d9b78;color:#d9f0e4}
.route-panel.is-dragging{opacity:.96;box-shadow:0 18px 44px #08111399}
.route-panel.minimized{max-height:none;overflow:visible;padding-bottom:14px}
.route-panel.minimized .route-panel-content{display:none}
.route-panel[data-positioned="true"]{right:auto;bottom:auto}
.route-panel::-webkit-scrollbar,.tab-dashboard::-webkit-scrollbar{width:10px}
.route-panel::-webkit-scrollbar-track,.tab-dashboard::-webkit-scrollbar-track{background:#0b191b;border-left:1px solid #294144}
.route-panel::-webkit-scrollbar-thumb,.tab-dashboard::-webkit-scrollbar-thumb{background:#55736f;border:2px solid #0b191b;border-radius:999px}
.route-panel::-webkit-scrollbar-thumb:hover,.tab-dashboard::-webkit-scrollbar-thumb:hover{background:#78a994}
.route-panel,.tab-dashboard{scrollbar-color:#55736f #0b191b;scrollbar-width:thin}

.trip-settings{margin:16px 0 18px;padding:12px 0 2px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.trip-settings .section-title{border:0;padding:0;align-items:center;font-size:11px}
.trip-settings-status{color:var(--green);font:10px 'DM Mono'}
.trip-settings-grid{display:grid;grid-template-columns:1fr 1fr 82px;gap:8px;margin-top:10px}
.trip-settings label{display:grid;gap:5px;color:var(--muted);font-size:10px}
.trip-settings input{width:100%;min-width:0;border:1px solid var(--line);border-radius:6px;background:#0c171a;color:var(--text);padding:7px 6px;font:11px 'DM Mono'}
.trip-settings input:focus{outline:2px solid #6d9b78;outline-offset:1px}
.trip-settings-submit{display:block;margin:8px 0 10px;padding:5px 0;color:var(--amber);font-size:10px}

.map-search{z-index:30;top:18px;width:min(430px,calc(100% - 48px))}
.map-search-row{background:#0c171af5;border-color:#e7b75e;box-shadow:0 8px 20px #08111399}
.map-search input{padding:12px 13px}
@media(max-width:720px){.trip-settings-grid{grid-template-columns:1fr 1fr}.trip-settings label:last-child{grid-column:1 / -1}.map-search{top:12px;width:calc(100% - 24px)}}

@media(max-width:720px){
  .route-panel-bar{margin:-17px -17px 14px}
  .route-panel[data-positioned="true"]{width:calc(100% - 24px)}
}
.stop-row[draggable="true"]{cursor:grab}.stop-row[draggable="true"]:active{cursor:grabbing}.stop-row.dragging{opacity:.45}.stop-row.drop-target{outline:1px dashed #e7b75e;background:#254441}.origin-stop{cursor:default}
