/* ops-vehicle-live.css — 後台分頁「🚌 車輛即時動態」（A1-1）
 * 記號：cyc-ride-ui182-eta4-20260927（ETA；前版 cyc-ride-ui158-b5-stop-schedule-20260912）
 * 🔴 外部檔，禁止內嵌樣式（裁示第十一-精確版）。
 * 🔴 座位圖規則自司機端 driver-layout.css 逐字複製，scope 已改為 .ovl-seatmap，
 *   版面與定案圖相同（三欄＋走道、車門列在單-2／單-3 之間、四色圖例）。
 */

/* ── 卡片 ── */
.ovl-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}
.ovl-card{border:1px solid #cfd8dc;border-radius:12px;background:#fff;padding:12px 12px 14px}
.ovl-card-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:8px;font-size:15px}
.ovl-plate{font-weight:800}
.ovl-card-head b,.ovl-meta b{display:inline-block;margin-right:6px;color:#607d8b;font-weight:700;font-size:12px}
.ovl-gps{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;border:1px solid #cfd8dc}
.ovl-gps-on{background:#e8f5e9;border-color:#2e7d32;color:#1b5e20}
.ovl-gps-off{background:#fff8e1;border-color:#ef6c00;color:#e65100}
.ovl-gps-none{background:#eceff1;border-color:#b0bec5;color:#607d8b}
.ovl-speed{margin-left:auto;font-weight:700;color:#37474f}
.ovl-meta{display:flex;gap:14px;flex-wrap:wrap;margin:4px 0;font-size:14px;color:#263238}
.ovl-msg{padding:24px;text-align:center;color:#607d8b}
.ovl-msg-err{color:#c62828}
.ovl-seat-msg{padding:14px;text-align:center;color:#78909c;font-size:13px}

/* ── 站序圖（無標題；目前站高亮、下一站標箭頭；中途站 ETA 空值「—」）── */
.ovl-stops{display:flex;gap:6px;overflow-x:auto;list-style:none;margin:10px 0;padding:0 0 4px}
.ovl-stop{flex:0 0 auto;min-width:72px;padding:6px 8px;border:1px solid #cfd8dc;border-radius:8px;background:#fafbfc;text-align:center}
.ovl-stop.is-current{background:#c8e6c9;border-color:#2e7d32;font-weight:800}
.ovl-stop.is-next{border-color:#1565c0}
.ovl-stop-arrow{color:#1565c0;margin-right:2px}
.ovl-stop-name{display:block;font-size:13px;color:#263238}
.ovl-stop-eta{display:block;font-size:11px;color:#78909c;margin-top:2px}

/* ── 座位圖標題與圖例 ── */
.ovl-seat-head{font-size:13px;font-weight:800;color:#37474f;margin:8px 0 4px}
.ovl-seat-legend{display:flex;gap:10px;font-size:11px;color:#607d8b;margin-bottom:6px}
.ovl-seat-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:-2px}
.ovl-seat-legend .lg-on{background:#c8e6c9;border:1px solid #2e7d32}
.ovl-seat-legend .lg-pass{background:#bbdefb;border:1px solid #1565c0}
.ovl-seat-legend .lg-fail{background:#ffcdd2;border:1px solid #c62828}
.ovl-seat-legend .lg-empty{background:#eceff1;border:1px solid #cfd8dc}

/* ── 座位圖（自司機端版面規則複製，scope 已改為 .ovl-seatmap）── */
.ovl-seatmap{margin:0 10px;border:2px solid #b0bec5;border-radius:14px 14px 8px 8px;padding:6px 8px 8px;background:#fafbfc}
.ovl-seatmap .front{display:flex;justify-content:space-between;align-items:center;margin:0 2px 5px;font-size:11px;color:#777}
.ovl-seatmap .front .drv{width:52px;height:24px;border-radius:6px;background:#37474f;color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px}
.ovl-seatmap .front .front-pad{width:52px}
.ovl-seatmap .rows{display:flex;flex-direction:column;gap:4px}
.ovl-seatmap .row{display:grid;grid-template-columns:1fr 1fr 18px 1fr;gap:5px;align-items:center}
.ovl-seatmap .seat{height:30px;border-radius:7px;display:flex;align-items:center;justify-content:center;gap:4px;font-size:13px;font-weight:700;border:2px solid transparent}
.ovl-seatmap .seat small{font-size:10px;font-weight:500;opacity:.85}
.ovl-seatmap .seat.empty{background:#eceff1;color:#78909c;border-color:#cfd8dc}
.ovl-seatmap .seat.on{background:#c8e6c9;color:#1b5e20;border-color:#2e7d32}
.ovl-seatmap .seat.pass{background:#bbdefb;color:#0b3d91;border-color:#1565c0}
.ovl-seatmap .seat.fail{background:#ffcdd2;color:#b71c1c;border-color:#c62828}
.ovl-seatmap .seat.latest{outline:3px solid #2e7d32;outline-offset:1px}
.ovl-seatmap .seat.fail.latest{outline-color:#c62828}
.ovl-seatmap .seat.none{visibility:hidden}
.ovl-seatmap .aisle{font-size:9px;color:#b0bec5;text-align:center}
.ovl-seatmap .doorrow{margin:-1px 0}
.ovl-seatmap .doorrow .door{height:16px;border-radius:5px;border:2px dashed #90a4ae;display:flex;align-items:center;justify-content:center;font-size:10px;color:#607d8b;background:#fff}
.ovl-seatmap .seat,
.ovl-seatmap .seat.empty{padding:0;margin:0;line-height:1;font-weight:700;min-height:0}

/* ══════════ B5：站點表定分鐘 ══════════ */
.ovl-sched{display:block;margin-top:18px}
.ovl-sched-title{font-size:15px;font-weight:800;margin:0 0 10px}
.ovl-sched-card{border:1px solid #cfd8dc;border-radius:8px;padding:10px 12px;margin:0 0 12px;background:#fff}
.ovl-sched-grp{font-size:14px;font-weight:800;margin:0 0 8px}
.ovl-sched-card table{width:100%;border-collapse:collapse}
.ovl-sched-card th,.ovl-sched-card td{padding:6px 8px;border-bottom:1px solid #eceff1;text-align:left;font-size:13px}
.ovl-sched-card th{color:#546e7a;font-weight:700;white-space:nowrap}
.ovl-sched-min{width:110px}
.ovl-sched-min:disabled{background:#f5f5f5;color:#90a4ae}
.ovl-sched-foot{display:flex;align-items:center;gap:10px;margin-top:8px}
.ovl-sched-msg{font-size:13px}
.ovl-sched-msg.is-ok{color:#2e7d32}
.ovl-sched-msg.is-bad{color:#c62828}

/* ── ETA（§一百〇四續二～續四）：卡片上方一行＋垂直站點清單 ── */
.ovl-eta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 0;font-size:14px;color:#263238}
.ovl-eta-line{font-weight:700;min-width:0;overflow-wrap:anywhere}
.ovl-eta-state{font-weight:800;color:#455a64}
.ovl-eta-warn{flex-basis:100%;color:#b26a00;font-size:13px}
.ovl-gmap{display:inline-block;padding:4px 10px;border:1px solid #1565c0;border-radius:8px;color:#1565c0;background:#fff;text-decoration:none;font-size:13px;white-space:nowrap}
.ovl-gmap:hover{background:#e3f2fd}
.ovl-vstops{list-style:none;margin:10px 0;padding:0;border-left:3px solid #cfd8dc}
.ovl-vstop{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:6px 8px 6px 12px;font-size:13px}
.ovl-vstop-name{color:#263238;min-width:0;overflow-wrap:anywhere}
.ovl-vstop-sched{color:#78909c;font-size:12px;white-space:nowrap}
.ovl-vstop-eta{color:#37474f;font-size:12px;white-space:nowrap}
.ovl-vstop.is-passed{opacity:.45}
.ovl-vstop.is-prev,.ovl-vstop.is-next{background:#e3f2fd;font-weight:800}
.ovl-vseg{padding:2px 8px 4px 12px;background:#e3f2fd}
.ovl-vseg-bar{display:block;width:100%;height:10px;accent-color:#1565c0}
