/* GPS360 instruments; original attribution: ../licenses/car-dashboard-MIT.txt. */
.route-panel{--route-dashboard-width:min(560px,calc(100vw - 20px));--route-dashboard-height:calc(var(--route-dashboard-width) * .2820512821);--route-dashboard-rise:15px;--route-dashboard-lift:calc(var(--route-dashboard-width) * -.0256410256 - var(--route-dashboard-rise))}
.route-panel.has-route-dashboard .route-footer{--route-dashboard-main-bottom:.0891025641;--route-dashboard-pedal-bottom:.0948717949;--route-dashboard-bottom:max(0px,calc(var(--route-dashboard-width) * var(--route-dashboard-main-bottom) - var(--route-dashboard-rise)),calc(var(--route-dashboard-width) * var(--route-dashboard-pedal-bottom) - var(--route-dashboard-rise)));position:relative;overflow:visible;z-index:2;padding-top:var(--route-dashboard-bottom)}
.route-panel.has-route-dashboard .route-body{padding-bottom:calc(var(--route-dashboard-height)/2 + 65px)}
.route-footer .route-time{margin:0}
.route-panel .route-footer{box-shadow:0 -4px 14px rgba(32,52,71,.22)}
.route-dashboard{position:absolute;top:var(--route-dashboard-origin,0px);left:50%;transform:translate(-50%,-50%);clip-path:inset(-70px -32px calc(50% - var(--route-dashboard-bottom) - 2px));width:var(--route-dashboard-width);max-width:calc(100% - 20px);aspect-ratio:39/11;pointer-events:none;background:none;border:0;box-shadow:none}
/* The midpoint is the footer edge: housing and gauges unfold together from it. */
.route-dashboard-moving{position:absolute;inset:0;transform:scaleY(1);transform-origin:50% 50%;transition:transform 200ms cubic-bezier(.22,1,.36,1)}
.route-dashboard.is-concealed .route-dashboard-moving{transform:scaleY(0);transition-duration:var(--route-dashboard-hide-duration,140ms);transition-timing-function:ease-in}
.route-dashboard-frame{clip-path:inset(-70px -32px 50%)}
.route-dashboard-svg{display:block;width:100%;height:auto;overflow:visible}
.route-dashboard-main{position:absolute;left:0;top:var(--route-dashboard-lift)}
.route-dashboard-pedals{position:absolute;left:0;top:var(--route-dashboard-lift)}
.route-dashboard-svg text{font-family:Montserrat,Arial,sans-serif;font-style:normal;font-variant-numeric:tabular-nums;fill:#333333;paint-order:stroke fill;stroke:#fff;stroke-opacity:.85;stroke-width:2px;stroke-linejoin:round}
.route-dashboard-svg .route-hud-label{font-size:16px;font-weight:700;letter-spacing:1px;fill:#2c82d8}
.route-dashboard-svg .route-hud-unit{font-size:14px;font-weight:500;fill:#577487}
.route-dashboard-svg .route-hud-speed-value,.route-dashboard-svg .route-hud-rpm-value{font-size:36px;font-weight:600;letter-spacing:-1px}
.route-dashboard-svg .route-hud-rpm-value.has-five-digits{font-size:31px;letter-spacing:-1px}
.route-dashboard-svg .route-hud-gear-value{font-size:16px;font-weight:700;fill:#2c82d8;stroke:none}
.route-dashboard-svg .route-hud-missing-value{font-size:21px;font-weight:500;fill:#8ca7b8}
.route-dashboard-svg .route-hud-scale{font-size:12px;font-weight:500;fill:#577487;stroke-width:2px}
.route-dashboard-svg .route-hud-rpm-scale{font-size:14px}
.route-dashboard-svg .route-hud-pedal-value{font-size:22px;font-weight:600}
.route-dashboard-svg .route-hud-pedal-label{font-size:16px;font-weight:700;fill:#2c82d8}
.route-dashboard-svg .route-hud-pedal-unit{font-size:11px;font-weight:500;fill:#577487}
.route-dashboard-svg .route-hud-progress{filter:drop-shadow(0 0 2px #42b7ee66)}
.route-dashboard-svg .is-alert .route-hud-progress{filter:drop-shadow(0 0 2px #ec859b66)}
.route-dashboard-svg .is-alert .route-hud-pedal-value{fill:#ae4857;stroke:none}
.route-dashboard-svg .is-missing .route-hud-speed-value,.route-dashboard-svg .is-missing .route-hud-pedal-value{fill:#8ca7b8}
.route-dashboard-svg .route-center-instrument.is-missing .route-hud-rings{opacity:.4}
.route-map-actions .route-map-link{box-sizing:border-box;height:40px!important;min-height:40px!important;max-height:40px!important;padding-top:0;padding-bottom:0;flex-shrink:0}
/* Keep 20px clear on either side of the mobile instrument housing. */
@media(max-width:699px){
  .route-panel{--route-dashboard-width:min(560px,calc(100vw - 40px))}
}
@media(max-width:400px){
  .route-dashboard-svg .route-hud-label,.route-dashboard-svg .route-hud-pedal-label{font-size:20px;letter-spacing:0}
  .route-dashboard-svg .route-hud-unit{font-size:18px}
  .route-dashboard-svg .route-hud-pedal-unit{font-size:14px}
  .route-dashboard-svg .route-hud-scale{font-size:16px}
  .route-dashboard-svg .route-hud-speed-scale{font-size:14px}
  .route-dashboard-svg .route-hud-pedal-value{font-size:24px}
}
/* Fixed text shapes retain their width and wrapped rows across all sequences. */
.route-footer .route-facts{max-height:none;overflow:visible;align-items:stretch}
/* Visible badges hug the current text; transparent reserves keep playback stable. */
.route-footer .route-facts .route-fact-slot{--route-fact-gap:6px;display:inline-grid;grid-template-columns:minmax(0,1fr);align-items:center;width:max-content;max-width:100%;min-width:0;box-sizing:border-box;white-space:nowrap;font-variant-numeric:tabular-nums;padding:0;background:transparent}
.route-footer .route-facts .route-fact-slot[data-metric="temp"]{--route-fact-gap:4px}
.route-footer .route-facts .route-fact-slot[data-metric="gps_quality"]{white-space:normal;overflow-wrap:anywhere}
.route-footer .route-facts .route-fact-slot>.route-fact-chip{grid-area:1/1;justify-self:start;display:inline-flex;align-items:center;gap:var(--route-fact-gap);padding:6px 7px 6px 8px;background:#eaf4fd;color:#333333;max-width:100%;box-sizing:border-box}
.route-fact-chip>.route-fact-icon{flex:none}
.route-fact-chip>.route-fact-value{min-width:0;font:inherit;padding:0;margin:0}
.route-footer .route-facts .route-fact-slot>.route-fact-reserve{grid-area:1/1;min-width:0;font:inherit;padding:6px 7px 6px calc(28px + var(--route-fact-gap));margin:0}
.route-fact-slot>.route-fact-reserve{visibility:hidden;pointer-events:none;user-select:none}
.route-fact-slot.is-missing{opacity:1}
.route-footer .route-facts .route-fact-slot.is-unavailable{visibility:hidden;pointer-events:none}
@media print{
  /* Override the shared print stylesheet's static footer so the gauges remain
     attached above this exact sequence rather than to the printed page. */
  .route-panel.has-route-dashboard .route-footer{--route-dashboard-origin:calc(var(--route-dashboard-height)/2 + 40px);position:relative!important;display:flex!important;flex-direction:column;margin-top:10px;border-top:0!important;padding-top:calc(var(--route-dashboard-origin) + var(--route-dashboard-bottom))!important;break-inside:avoid;page-break-inside:avoid}
  .route-panel.has-route-dashboard .route-footer::before{content:'';position:absolute;top:var(--route-dashboard-origin);left:0;right:0;border-top:1px solid #dce5ee}
  .route-footer.hidden{display:none!important}
  .route-dashboard .route-dashboard-moving{transform:scaleY(1)!important;transition:none!important}
  .route-dashboard{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .route-footer::after{display:none}
}
.route-dashboard-svg .route-hud-progress{transition:stroke-dasharray 180ms ease-out,stroke 180ms ease-out}
.route-dashboard-svg .route-hud-pedal-face{transition:fill 180ms ease-out}
.route-chart-cursor,.route-value-popup{transition:transform 120ms linear}
.route-chart-dot{transition:cx 120ms linear,cy 120ms linear}
@media(prefers-reduced-motion:reduce){
  .route-dashboard-moving,.route-dashboard.is-concealed .route-dashboard-moving,.route-dashboard-svg .route-hud-progress,.route-dashboard-svg .route-hud-pedal-face,.route-chart-cursor,.route-value-popup,.route-chart-dot{transition:none}
}

.route-fact-icon{grid-area:1/1;display:block;width:20px;height:20px;object-fit:contain}
/* Keep the return action beside the sequence, with a stable reserved footprint. */
.route-time-row{display:block}
.route-footer .route-time-row .route-time{display:flex;flex-wrap:wrap;align-items:center;gap:0 5px;line-height:20px}
.route-time-date,.route-sequence-actions{white-space:nowrap}
.route-sequence-actions{display:inline-flex;align-items:center;gap:8px}
.route-time-row .route-event-jump{display:inline-flex;gap:4px;align-items:center;justify-content:center;flex:none;height:20px;min-height:0;padding:0 6px;margin:0;border:1px solid #efb8b8;border-radius:5px;background:#fff1f1;color:#a13d3d;font:600 11px/1 Montserrat,Arial,sans-serif;white-space:nowrap;cursor:pointer;animation:route-alarm-return 3s ease-in-out infinite;transition:background-color 150ms ease-out,border-color 150ms ease-out}
.route-time-row .route-event-jump>svg{flex:none;width:12px;height:12px}
.route-time-row .route-event-jump.is-at-anchor{visibility:hidden;pointer-events:none;animation:none}
.route-time-row .route-event-jump:hover,.route-time-row .route-event-jump:focus-visible{animation:none;background:#ffc9c9;border-color:#d78080;color:#842d2d}
.route-time-row .route-event-jump:focus-visible{outline:2px solid #a13d3d;outline-offset:2px}
@keyframes route-alarm-return{0%,100%{background-color:#fff1f1;border-color:#efb8b8}50%{background-color:#ffd8d8;border-color:#e69595}}
@media(prefers-reduced-motion:reduce){.route-time-row .route-event-jump{animation:none;transition:none}}
@media print{.route-event-jump{display:none!important}}
