/* GPS387 v0.9.2 informational road planning, integrated enterprise visual tokens */
.route-modal-shade{position:fixed;inset:0;z-index:170;background:#07152ab3;display:grid;place-items:center;padding:18px}
.route-dialog{width:min(1130px,98vw);height:min(92dvh,950px);overflow-y:auto;background:var(--paper);border-radius:13px;border:1px solid var(--border);box-shadow:0 20px 85px #07152a88;color:var(--ink2)}
.route-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;padding:17px 20px;border-bottom:1px solid var(--border)}
.route-head h2{margin:7px 0;font-size:18px;color:var(--ink);font-weight:650;letter-spacing:-.5px}
.route-head p{font-size:10.5px;color:var(--muted);margin:0;line-height:1.7}
.route-warning{margin:14px 18px;display:flex;align-items:start;gap:10px;padding:13px 15px;border:1px solid #d19b604b;border-radius:8px;color:#95601b;background:#fff5e6;line-height:1.7;font-size:10.5px}
.route-warning svg{height:19px;width:19px;flex-shrink:0}
[data-theme=dark] .route-warning{background:#45341e;color:#efca92}
.route-warning strong{font-weight:550}
.route-grid{display:grid;grid-template-columns:minmax(265px,.7fr) minmax(330px,1.3fr);gap:13px;padding:0 18px}
.route-stops,.route-map-holder{border:1px solid var(--border);border-radius:9px;min-width:0;overflow:hidden}
.route-stops{padding:14px;display:flex;flex-direction:column;gap:12px}
.route-stops h3{font-size:12px;font-weight:600;margin:0;color:var(--ink)}
.route-stops p{font-size:10px;color:var(--muted);line-height:1.8;margin:0}
.route-stop-list{display:grid;gap:5px;max-height:250px;overflow:auto}
.route-stop-button{border:1px solid var(--border);padding:9px;border-radius:7px;display:flex;align-items:center;gap:9px;text-align:left;cursor:pointer;color:var(--ink2);background:var(--paper);width:100%}
.route-stop-button.selected{border-color:var(--primary);background:var(--primary-light)}
.route-stop-button>span:nth-child(2){display:grid;gap:4px;flex:1;min-width:0}
.route-stop-button strong{font-size:10.5px;color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.route-stop-button small{font-size:9px;color:var(--muted)}
.route-stop-button svg{height:16px;width:16px;color:var(--primary)}
.route-number{height:26px;width:26px;display:grid;place-items:center;border-radius:50%;background:var(--primary-light);color:var(--primary);font-size:11px;font-weight:650;flex-shrink:0}
.route-coords{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.route-coords label{display:grid;gap:6px;font-size:10px;color:var(--muted)}
.route-coords input{min-width:0;width:100%;border:1px solid var(--border);border-radius:7px;background:var(--paper-soft);color:var(--ink);padding:9px;font-size:11px}
.route-coords input:focus{outline-color:var(--primary)}
.route-stops #routeSave{align-self:start}
.route-map{height:445px;width:100%;background:var(--paper-soft)}
.route-map-holder>.route-hint{padding:10px 12px;margin:0}
.route-map-types{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:9px 12px;background:var(--paper);border-top:1px solid var(--border);font-size:11px;color:var(--ink2)}
.route-map-types.hidden{display:none!important}
.route-map-types label{display:inline-flex;align-items:center;gap:7px}
.route-map-types select{font:inherit;border:1px solid var(--border);border-radius:5px;background:var(--paper-soft);color:var(--ink);padding:6px}
.route-map-types input{accent-color:var(--primary)}
.route-hint{font-size:10px;color:var(--muted);line-height:1.8;margin:7px 0}
.route-bottom{padding:15px 18px}
.route-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.route-metrics>div{padding:13px;background:var(--paper-soft);border:1px solid var(--border);border-radius:8px;display:grid;gap:6px}
.route-metrics span{font-size:10px;color:var(--muted)}
.route-metrics strong{font-size:18px;font-weight:650;color:var(--ink)}
.route-arrivals{display:grid;gap:6px;margin:12px 0}
.route-arrivals>div{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 10px;border:1px solid var(--border);border-radius:6px}
.route-arrivals span{font-size:10px;color:var(--muted)}
.route-arrivals strong{font-size:11px;font-weight:650;color:var(--ink2)}
.route-buttons{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:12px}
.route-buttons button{white-space:normal;height:auto;min-height:37px;padding:8px 13px}
.route-error{font-size:10.5px;min-height:15px;margin:11px 0 3px;color:var(--primary);line-height:1.7}
.route-error.bad{color:#b64646}
.route-live-eta{padding:12px;border:1px solid var(--primary);border-radius:9px;margin-top:13px}
.route-live-eta h4{font-size:11px;display:flex;align-items:center;gap:9px;margin:0 0 12px}
.route-live-eta h4 svg{height:16px;width:16px;color:var(--primary)}
.route-marker{width:29px;height:29px;border-radius:50%;border:2px solid white;background:#2b69db;color:#fff;font-size:11px;font-weight:700;box-shadow:0 2px 8px #0d2b5666;cursor:pointer}
.route-marker.selected{background:#f09e39;color:#17243b;transform:scale(1.08)}
.dispatch-route-entry{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid var(--border);padding:11px 20px}
.dispatch-route-entry>small{color:var(--muted);font-size:9px}
@media(max-width:850px){.route-grid{grid-template-columns:1fr}.route-map{height:360px}.route-dialog{height:95dvh}}
@media(max-width:450px){.route-modal-shade{padding:5px}.route-head,.route-bottom{padding:13px}.route-warning{margin:10px}.route-grid{padding:0 10px}.route-coords{grid-template-columns:1fr 1fr}.route-map{height:280px}.route-head h2{font-size:15px}.route-warning{font-size:9.5px}}

/* Google Places is a separate document widget for EEA compatibility; Google results only on Google Maps. */
.route-address-label{font-size:10px;font-weight:600;color:var(--ink2);display:block}
.route-places{display:block;min-height:0}
.route-places gmp-place-autocomplete{width:100%;display:block;min-width:0;max-width:100%;font-size:12px}
.route-places:empty{display:none}
.route-places:empty+.route-hint{display:none}
.route-places:not(:has(gmp-place-autocomplete)){display:none}
#routePlaceLabel:has(+.route-places:empty){display:none}
#routePlaceSelection:empty{display:none}
/* GPS387 v0.9.2C — optional human-supplied operational ETA scenario. */
.route-operational-panel{margin:14px 18px 0;padding:11px 13px;border:1px solid var(--border);border-radius:9px;color:var(--ink2);background:var(--paper)}
.route-operational-panel summary{display:flex;gap:9px;align-items:center;cursor:pointer;font-size:11px;font-weight:650}
.route-operational-panel summary svg{width:14px;height:14px}
.route-operational-panel p{font-size:10px;line-height:1.6;color:var(--muted)}
.route-operational-fields{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.route-operational-fields label{display:grid;gap:6px;font-size:10px;color:var(--muted)}
.route-operational-fields input{min-width:0;width:100%;padding:9px;border-radius:6px;border:1px solid var(--border);background:var(--paper-soft);color:var(--ink)}
.route-forecast{border-top:1px solid var(--border);margin-top:12px;padding-top:13px}
.route-forecast>strong{display:block;font-size:11px;margin-bottom:10px}
@media(max-width:700px){.route-operational-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.9.18A: planned-station editor and reversible snapshots */
.route-structure-editor,.route-history-panel{border:1px solid var(--border);border-radius:8px;padding:10px;display:grid;gap:9px;background:var(--paper-soft)}
.route-structure-editor.hidden,.route-history-panel.hidden{display:none}
.route-structure-editor>label,.route-history-panel>label{font-size:11px;color:var(--muted);display:grid;gap:5px}
.route-structure-editor input,.route-history-panel select{width:100%;min-width:0;padding:9px;border-radius:7px;border:1px solid var(--border);background:var(--paper);color:var(--ink);font-size:12px}
.route-structure-buttons{display:flex;gap:5px;flex-wrap:wrap}
.route-structure-buttons button,.route-history-panel button{font-size:11px;min-height:32px}
.route-structure-buttons button:disabled,.route-history-panel button:disabled{opacity:.45;cursor:not-allowed}
