/* Clear route context and one-handed map controls. */
.arrival-time .live-eta{gap:.2em}.arrival-time .live-eta-signal{width:24px;height:24px;flex-basis:24px}
.arrival-time b{font-variant-numeric:tabular-nums}.arrival-card.next .arrival-time b{color:#c9f4e2}
.arrival-time b .live-eta,.travel-estimate strong .live-eta,.itinerary-live-heading>b .live-eta{display:inline-flex;align-items:center;font-size:inherit;color:inherit;margin:0}
.arrival-time b .live-eta span,.travel-estimate strong .live-eta span,.itinerary-live-heading>b .live-eta span{display:inline-flex;font-size:inherit;line-height:1;color:inherit;margin:0}
.arrival-time b .live-eta .live-eta-unit,.travel-estimate strong .live-eta .live-eta-unit,.itinerary-live-heading>b .live-eta .live-eta-unit{font-size:.55em}
.travel-estimate strong .live-eta.is-arriving{font-size:18px}.arrival-time b .live-eta.is-arriving{font-size:19px}
.travel-estimate strong .live-eta:not(.is-live){font-size:18px;white-space:normal}.travel-estimate strong .live-eta:not(.is-live) .live-eta-value{display:block;min-width:0;line-height:1.15;overflow-wrap:anywhere}
.forecast-empty{padding:26px 18px;text-align:left}.forecast-empty h2{font-size:21px;line-height:1.2}.forecast-empty p{font-size:13px;line-height:1.6}.forecast-empty>small{display:block;font-size:12px;color:var(--muted);line-height:1.5}.forecast-empty>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.forecast-empty button{min-height:44px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;color:var(--navy);background:var(--paper);font-weight:700}.forecast-empty-icon{display:grid;place-items:center;width:44px;height:44px;background:var(--green-soft);color:var(--teal);border-radius:14px}.forecast-empty-icon svg{width:25px;height:25px}
.itinerary-travel-start{position:relative;top:auto;display:block;padding:17px;margin:10px 0 16px;background:linear-gradient(135deg,var(--paper),var(--green-soft));border:1px solid var(--line);border-radius:20px;overflow:hidden}.itinerary-live-heading{display:flex;align-items:center;gap:10px}.itinerary-live-heading>div{flex:1;min-width:0}.itinerary-live-heading strong{font-size:14px}.itinerary-live-heading small{font-size:11px;line-height:1.5;margin-top:4px}.itinerary-live-icon{display:grid;place-items:center;flex:0 0 42px;height:42px;border:1px solid var(--line);border-radius:14px;background:var(--paper);color:var(--navy)}.itinerary-live-icon svg{width:27px;height:27px}.itinerary-travel-start[data-live=true] .itinerary-live-icon{border-color:var(--teal);box-shadow:0 0 0 4px #12aaa412}.itinerary-live-heading>b{font-size:19px;color:var(--navy);max-width:110px}.itinerary-live-heading>b:empty{display:none}.itinerary-route-meta{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0;font-size:11px;color:var(--muted)}.itinerary-route-meta span{padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}.itinerary-travel-start>button{width:100%;min-height:46px;background:var(--navy);color:white;border-radius:12px}.itinerary-travel-start>p{font-size:12px;line-height:1.5;color:var(--muted)}
.itinerary-stop-row{position:relative}.itinerary-stop-list .itinerary-stop i{border:2px solid var(--line);border-radius:50%;color:var(--navy);background:var(--paper);width:30px;height:30px;position:relative;z-index:1}.itinerary-stop-row:not(:last-child):after{content:"";position:absolute;top:40px;bottom:-12px;left:26px;width:2px;background:var(--line);pointer-events:none}.itinerary-stop.near-vehicle i{background:var(--navy);color:white;border-color:var(--navy);box-shadow:0 0 0 4px #1559c518}.itinerary-stop.near-vehicle small:after{content:" · Ônibus próximo deste trecho";color:var(--teal);font-weight:700}.itinerary-stop.current{border-left:3px solid var(--teal)!important;background:var(--green-soft)!important}.itinerary-note{font-size:11px;line-height:1.6}
.map-back-top{position:absolute;z-index:4;left:14px;top:14px;min-height:44px;display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:13px;background:var(--paper);color:var(--navy);padding:9px 12px;box-shadow:0 3px 12px #102d3f18;font-size:12px;font-weight:700}.map-back-top svg{width:18px;height:18px}.map-panel .map-heading{top:68px}.map-gesture-hint{position:absolute;left:18px;bottom:85px;z-index:3;max-width:240px;padding:6px 9px;border-radius:8px;background:var(--paper);color:var(--muted);font-size:10px;pointer-events:none}.travel-active .map-back-top,.travel-active .map-gesture-hint,.journey-navigation-active .map-back-top,.journey-navigation-active .map-gesture-hint{display:none}
.travel-toolbar>span{display:none}.travel-toolbar{gap:8px}.travel-toolbar #travel-exit{margin-left:auto;color:#fff;background:#9d352e;border:1px solid #f4baad;min-height:44px}.travel-toolbar #travel-recenter{margin-left:0}.travel-play{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:44px;border:1px dashed var(--travel-line);border-radius:12px;margin:9px 0;background:transparent;color:var(--travel-ink);padding:10px 12px;text-align:left;font-size:12px}.travel-play small{color:var(--travel-muted)}.travel-play svg{width:20px;height:20px}
.place-precision{display:block;font-size:11px;line-height:1.5;margin-top:5px;color:var(--teal);font-style:normal}.place-precision.approximate{color:#995612}.night-reading .place-precision.approximate{color:#f3c879}.origin-map-edit{display:block;min-height:44px;width:100%;margin:12px 0 0;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--navy);font-weight:700}
.origin-picking{overflow:hidden}.origin-picking .app-shell{position:fixed;inset:0;z-index:2000;display:block;width:100%;height:100dvh;max-width:none;margin:0;padding:0}.origin-picking .control-panel{display:none}.origin-picking .map-panel{position:absolute;inset:0;width:100%;height:100%;min-height:0;border:0;border-radius:0}.origin-picking #map{height:100%;min-height:100%}.origin-picking .map-panel :is(.map-heading,.map-legend,.map-back-top,.map-gesture-hint,.traffic-button,.recenter-button){display:none}.origin-map-target{display:none;position:absolute;z-index:5;left:50%;top:50%;transform:translate(-50%,-100%);pointer-events:none;color:#1559c5;filter:drop-shadow(0 3px 3px #102d3f55)}.origin-map-target svg{width:42px;height:50px;fill:var(--paper);stroke:currentColor;stroke-width:2.5}.origin-picking .origin-map-target{display:block}.origin-map-picker{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:2100;width:min(430px,calc(100% - 24px));padding:18px;border:1px solid var(--line);border-radius:20px;background:var(--paper);color:var(--ink);box-shadow:0 10px 40px #102d3f30}.origin-map-picker strong{font-size:18px}.origin-map-picker p{font-size:12px;line-height:1.5;color:var(--muted)}.origin-map-picker>div{display:flex;gap:8px}.origin-map-picker button{flex:1;min-height:46px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--navy);font-weight:700}.origin-map-picker button:last-child{background:var(--navy);color:white}
.route-game-dialog{width:min(480px,calc(100vw - 24px));max-height:90dvh;padding:24px;border:1px solid var(--line);border-radius:24px;background:var(--paper);color:var(--ink);overflow:auto}.route-game-dialog::backdrop{background:#092537b8;backdrop-filter:blur(6px)}.route-game-dialog header{display:flex;align-items:flex-start;gap:10px}.route-game-dialog header>div{flex:1}.route-game-dialog header span,.route-game-question small{font-size:10px;font-weight:800;letter-spacing:.07em;color:var(--teal)}.route-game-dialog h2{font:700 26px/1.12 "Bricolage Grotesque",sans-serif;margin:7px 0}.route-game-dialog button{font:inherit;min-height:44px;cursor:pointer}.route-game-dialog header button{width:44px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font-size:24px}.route-game-safety{font-size:11px;line-height:1.5;color:var(--muted)}.route-game-score{display:flex;justify-content:space-between;gap:8px;align-items:center;border-top:1px solid var(--line);padding-top:15px;font-size:13px}.route-game-score span{font-size:11px;color:var(--muted)}.route-game-track{display:flex;justify-content:space-between;margin:20px 0;background:linear-gradient(var(--line),var(--line)) center/100% 3px no-repeat}.route-game-track i{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--paper);font:700 12px "DM Sans",sans-serif;color:var(--muted)}.route-game-track i.done{background:var(--teal);color:#fff}.route-game-track i.current{background:var(--navy);color:#fff;box-shadow:0 0 0 4px #1559c522}.route-game-question h3,.route-game-result h3{font-size:20px;line-height:1.25;margin:8px 0}.route-game-question p,.route-game-result p{font-size:13px;line-height:1.5}.route-game-answers{display:grid;gap:9px}.route-game-answers button{display:flex;align-items:center;gap:12px;text-align:left;width:100%;border:1px solid var(--line);border-radius:13px;padding:12px;background:var(--paper);color:var(--ink);font-size:14px}.route-game-answers button span{flex:0 0 27px;display:grid;place-items:center;height:27px;border-radius:8px;background:var(--green-soft);color:var(--teal)}.route-game-answers button.correct{background:var(--green-soft);border-color:var(--teal);color:var(--ink)}.route-game-feedback{font-size:13px;line-height:1.5;min-height:20px;color:var(--teal)}.route-game-dialog>button{width:100%;border:1px solid var(--line);border-radius:12px;margin-top:8px;padding:12px;background:var(--paper);color:var(--navy)}.route-game-dialog>button.game-primary{background:var(--navy);color:white}.route-game-result>span{font-size:11px;letter-spacing:.07em;color:var(--teal)}
:root[data-theme=dark] .itinerary-travel-start{background:linear-gradient(130deg,var(--paper),var(--green-soft))}:root[data-theme=dark] .travel-active .map-panel canvas{filter:none}
@media(max-width:600px){.itinerary-live-heading>b{font-size:17px}.itinerary-live-heading{gap:8px}.itinerary-live-heading strong{font-size:13px}.itinerary-travel-start{padding:14px}.route-game-dialog{padding:20px}.map-gesture-hint{bottom:79px}.travel-toolbar button{font-size:12px}.travel-toolbar #travel-minimize{padding:0 10px}.travel-toolbar #travel-exit{padding:0 12px}.itinerary-stop-row:not(:last-child):after{left:21px}}

.origin-map-picker{bottom:max(12px,env(safe-area-inset-bottom));max-height:calc(100dvh - 24px);overflow:auto}
.origin-map-picker .origin-map-gps{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;margin:13px 0 10px;border-color:var(--line);background:var(--green-soft);color:var(--navy);font-size:14px}
.origin-map-gps svg{width:20px;height:20px;flex:none;color:var(--teal)}
.origin-map-gps.is-loading svg{display:none}
.origin-map-gps.is-loading:before{content:"";width:17px;height:17px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:origin-gps-spin .8s linear infinite}
.origin-map-gps-status{display:block;margin:0 2px 10px;color:var(--muted);font-size:12px;line-height:1.45}
.origin-map-gps-status:empty{display:none}
.origin-map-picker>.origin-map-actions{display:flex;gap:8px}
.origin-map-picker #use-map-origin{background:var(--navy);color:#fff}
@keyframes origin-gps-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.origin-map-gps.is-loading:before{animation-duration:2s}}

.guide-gps{display:flex;align-items:center;gap:9px;margin:0 0 10px;padding:10px 11px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--muted);font-size:11px;line-height:1.35}
.guide-gps i{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:#d7a50a;box-shadow:0 0 0 4px #d7a50a22}
.guide-gps.live{background:var(--green-soft);color:var(--ink)}
.guide-gps.live i{background:var(--teal);box-shadow:0 0 0 4px #12aaa422}
.guide-gps.error,.guide-gps.stale{background:var(--orange-soft);color:var(--ink)}
.guide-gps.error i,.guide-gps.stale i{background:var(--orange);box-shadow:0 0 0 4px #ff5a3622}
.guide-prompt{margin:0 2px 11px;color:var(--ink);font-size:12px;line-height:1.45;font-weight:700}
.journey-guide .guide-live{font-size:11px;line-height:1.35}
.journey-guide .guide-step b{font-size:12px;line-height:1.3}
.journey-guide .guide-step small{font-size:10px;line-height:1.45}
.journey-guide .guide-step>span:first-child svg{width:18px;height:18px}
.journey-guide .guide-actions button{min-height:48px;font-size:11px}
body.journey-navigation-active .journey-guide{max-height:min(690px,calc(100dvh - 36px))}
@media(max-width:600px){body.journey-navigation-active .journey-guide{max-height:52dvh}.journey-guide .guide-head h2{font-size:19px}.journey-guide .guide-head p{font-size:11px}.journey-guide .guide-step{padding:11px}}
