/* Smart Routing (docs/routing.md). Loaded on Dispatch, My Day and routing.php only while the module is on. */
.rt-tiles .stat b { white-space: nowrap; }
.rt-was { color: var(--muted); font-weight: 500; text-decoration: line-through; margin-right: 6px; font-size: .8em; }
table.rt { width: 100%; border-collapse: collapse; }
table.rt th, table.rt td { text-align: left; padding: var(--t-pad, 8px 10px); border-bottom: 1px solid var(--t-line, var(--line)); vertical-align: middle; }
table.rt th { font-size: .75rem; color: var(--muted); font-weight: 650; text-transform: uppercase; letter-spacing: .03em; }
table.rt .num { text-align: right; white-space: nowrap; }
table.rt tr:last-child td { border-bottom: 0; }
.rt-sub { display: block; color: var(--muted); font-size: .75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 420px; }
.rt-dot { flex: none; display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 7px; vertical-align: 0; }
.rt-mini { display: inline-block; width: 21px; height: 22px; vertical-align: bottom; } /* svg bars: no inline style */
.rt-mini rect { fill: var(--line); }
.rt-mini rect.a { fill: var(--grass); }
.rt-h { margin: 16px 0 8px; font-size: .9rem; }
.rt-wind { display: grid; grid-template-columns: repeat(11, minmax(0, 1fr)); gap: 4px; text-align: center; font-size: .72rem; color: var(--muted); }
.rt-wind b { display: block; padding: 6px 0; border-radius: 8px; background: rgba(92, 219, 58, .22); color: var(--ink); font-size: .85rem; }
.rt-wind b.w { background: rgba(240, 138, 36, .28); }
.rt-wind b.x { background: rgba(226, 59, 47, .25); }
.rt-wind em { display: block; font-style: normal; min-height: 1.2em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-preview .row { margin-top: 14px; }
.rt-preview .hint { margin: 8px 0 0; }
#rt-panel:empty { display: none; }
/* .rt-strip (one line: bold label, muted text that ends in "…", buttons) is shared: assets/style.css. */
.rt-warn { color: var(--red); }
.rt-done { display: flex; align-items: center; gap: 10px; }
.rt-done span { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* lock on Dispatch rows */
.rt-lock { background: none; border: 0; padding: 2px; color: var(--line); cursor: pointer; line-height: 0; vertical-align: middle; }
.rt-lock svg { width: 15px; height: 15px; }
.rt-lock.on { color: var(--navy); }
.rt-eta-col { white-space: nowrap; color: var(--muted); font-size: .8rem; }
.rt-late { color: var(--red); font-weight: 650; }
/* My Day: ETA under the stop number, wind as a tiny chip on the number; the row keeps its three lines */
.field-job .rt-num { display: grid; justify-items: center; gap: 2px; position: relative; width: 28px; }
.field-job .rt-num small.rt-eta { display: block; font-size: .62rem; line-height: 1; color: var(--muted); font-weight: 650; white-space: nowrap; letter-spacing: -.02em; }
.field-job .rt-num .rt-wx { position: absolute; top: -5px; right: -6px; width: 15px; height: 15px; border-radius: 50%; background: var(--orange); color: #fff; display: grid; place-items: center; box-shadow: 0 0 0 2px #fff; }
.field-job .rt-num .rt-wx.x { background: var(--red); }
.field-job .rt-num .rt-wx svg { width: 9px; height: 9px; display: block; }
/* every text line in a stop row stays one line (long names and products end in …) */
.field-job > div { min-width: 0; }
.field-job > div > strong, .field-job > div > em, .field-job > div > small, .field-job small.rt-line { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.field-job.rt-moved { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(30, 144, 255, .25); }
/* one-line Route updated note (field-toast ok + field-alert) */
.rt-note { min-width: 0; }
.rt-note .rt-see { flex: none; white-space: nowrap; padding: 4px 10px; font-size: .8rem; background: rgba(255, 255, 255, .7); border: 0; border-radius: 8px; font-weight: 650; color: var(--ink); }
/* savings and rounds pages */
.rt-bars { display: flex; align-items: flex-end; gap: 6px; height: 140px; padding-top: 8px; }
.rt-bars div { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 4px; min-width: 0; font-size: .7rem; color: var(--muted); height: 100%; }
.rt-bars i { width: 100%; max-width: 38px; background: var(--grass); border-radius: 6px 6px 2px 2px; min-height: 2px; }
.rt-bars span { white-space: nowrap; }
.rt-spark { width: 90px; height: 22px; vertical-align: middle; }
.rt-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.rt-tabs a { background: #fff; border: 1px solid var(--line); border-radius: 999px; padding: 6px 12px; color: var(--ink); font-weight: 600; }
.rt-tabs a.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.rt-days { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.rt-day { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; min-width: 0; }
.rt-day b { display: block; }
.rt-day span { display: block; color: var(--muted); font-size: .8rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-best { display: grid; gap: 8px; }
.rt-best div { display: flex; gap: 10px; align-items: center; min-width: 0; }
.rt-best span:not(.rt-dot) { flex: 1; min-width: 0; color: var(--muted); font-size: .85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 800px) {
  .rt-dk { display: none; }
  table.rt th, table.rt td { padding: 8px 6px; }
  .rt-sub { max-width: 130px; }
  table.rt .rt-was { display: none; }
  table.rt { font-size: .85rem; }
  .rt-wind { gap: 2px; font-size: .62rem; }
  .rt-wind b { font-size: .75rem; padding: 5px 0; }
}
/* One line (Oct 17, 2026, rules check): the first column (Team or Service) takes the room that is left and ends in "…". */
table.rt td:first-child { max-width: 0; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
table.rt td:first-child > b { white-space: nowrap; }
