/* Galway Pulse v27 · punctuality uses schedule predictions, not GPS corridor speed. */
.bus-punctuality{display:none;background:linear-gradient(125deg,#f7fbf9,#eff7f4);border:1px solid #c9ded8;
  border-radius:20px;padding:19px 21px;margin:14px 0 20px;color:#183843;box-shadow:0 12px 30px #0b3e3610}
.bus-punctuality-totals[hidden]{display:none!important}
body[data-map-mode="bus"] #busPunctuality{display:block}
.bus-punctuality-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}
.bus-punctuality-kicker{font-size:10px;text-transform:uppercase;letter-spacing:1.1px;font-weight:900;color:#377d75}
.bus-punctuality h3{font-size:21px;letter-spacing:-.6px;margin:5px 0}
.bus-punctuality-heading p{font-size:12px;line-height:1.5;margin:5px 0 0;color:#526b74}
.bus-punctuality-actions{display:flex;align-items:flex-end;flex-direction:column;gap:9px;flex:none}
.bus-punctuality-state{display:inline-flex;align-items:center;border-radius:99px;background:#e8e8ea;color:#576974;
  font-size:11px;font-weight:800;padding:7px 11px;white-space:nowrap}
.bus-punctuality-state[data-status="live"]{background:#d4f2e5;color:#076c50}
.bus-punctuality-refresh{border:1px solid #afcfc9;background:white;color:#205b56;border-radius:9px;
  padding:7px 11px;font-size:11px;font-family:inherit;font-weight:800;cursor:pointer}
.bus-punctuality-refresh:disabled{opacity:.5;cursor:wait}
.bus-punctuality-totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:17px}
.bus-punctuality-total{padding:10px 12px;border-radius:10px;background:#fff;font-size:11px;font-weight:800;
  display:flex;gap:9px;align-items:center;border-left:4px solid #bbc6ce}
.bus-punctuality-total b{font-size:21px;font-variant-numeric:tabular-nums}
.bus-punctuality-total.on-time{border-left-color:#18a477}.bus-punctuality-total.slightly-late{border-left-color:#eca638}
.bus-punctuality-total.late{border-left-color:#ed5d50}.bus-punctuality-total.unknown{border-left-color:#96a4ad}
.bus-punctuality-toolbar{display:flex;align-items:center;gap:9px;margin:14px 0 10px;font-size:11px;font-weight:800;color:#55727a}
.bus-punctuality-toolbar select{border:1px solid #c5d8d5;border-radius:8px;padding:7px 9px;background:#fff;color:#174852;font-weight:800}
.bus-punctuality-regional{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:11px;font-weight:700;color:#496b73}
.bus-punctuality-regional input{accent-color:#238a76;width:15px;height:15px}
.bus-punctuality-toolbar span{margin-left:auto;font-weight:600}
.bus-punctuality-list{display:grid;gap:7px}
.bus-punctuality-empty{border:1px dashed #aac5c3;background:#ffffffc9;border-radius:12px;padding:20px;
  font-size:12px;color:#5d747a;display:grid;gap:8px;line-height:1.6}
.bus-punctuality-empty strong{font-size:14px;color:#34575e}
.bus-punctuality-trip{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid #d9e4e2;
  border-radius:10px;padding:10px 12px}
.bus-punctuality-route{background:#205760;color:#fff;font-weight:900;font-size:15px;letter-spacing:.2px;
  border-radius:8px;padding:9px;min-width:48px;text-align:center}
.bus-punctuality-trip-main{min-width:110px;flex:1;display:grid;gap:3px;font-size:12px}
.bus-punctuality-trip-main span{font-size:11px;color:#6b8186}
.bus-gps-evidence{display:grid;gap:2px;margin-top:5px;padding-left:8px;border-left:2px solid #8baabb;line-height:1.4}
.bus-gps-evidence span{color:#3b6075;font-weight:750;font-size:10px}
.bus-gps-evidence small{font-size:10px;color:#6b8186;overflow-wrap:anywhere}
.bus-punctuality-gps-note{font-size:11px;line-height:1.5;color:#526b74;margin:12px 0 0}
:root[data-theme="dark"] .bus-gps-evidence span{color:#c0d9e9}
:root[data-theme="dark"] .bus-gps-evidence small,:root[data-theme="dark"] .bus-punctuality-gps-note{color:#b0c8c8}
.bus-punctuality-times{display:flex;gap:14px;font-size:10px;color:#607881}
.bus-punctuality-times span{display:grid;gap:3px}.bus-punctuality-times b{font-size:14px;color:#284d57;font-variant-numeric:tabular-nums}
.bus-punctuality-badge{min-width:98px;display:grid;text-align:center;border-radius:9px;padding:8px;
  background:#eef1f3;color:#65747c;font-size:11px}
.bus-punctuality-badge strong{font-size:11px}.bus-punctuality-badge small{font-size:10px;margin-top:3px}
.bus-punctuality-badge.on-time{background:#d8f5e7;color:#087451}
.bus-punctuality-badge.slightly-late,.bus-punctuality-badge.early{background:#fff0d2;color:#926118}
.bus-punctuality-badge.late{background:#ffe0df;color:#bc322c}
.bus-punctuality-footnote{display:flex;align-items:center;flex-wrap:wrap;gap:6px 13px;font-size:10px;
  color:#4f6b70;margin:13px 0 4px}
.bus-punctuality-dot{width:8px;height:8px;display:inline-block;border-radius:50%;margin-right:-9px;background:#95a5ae}
.bus-punctuality-dot--on-time{background:#18a477}.bus-punctuality-dot--slightly-late{background:#eca638}
.bus-punctuality-dot--late{background:#ed5d50}
.bus-punctuality-attribution{font-size:10px;line-height:1.4;color:#698188;margin:7px 0 0}
.community-pilot{margin:32px 0 12px;background:#e9f3f0;border:1px solid #bdd8d0;padding:22px;border-radius:16px}
.community-pilot h3{font-size:19px;margin:7px 0}.community-pilot p{max-width:750px;font-size:13px;line-height:1.6;color:#456168}
.community-pilot summary{cursor:pointer;font-weight:800;color:#1c796f;font-size:12px}
:root[data-theme="dark"] .bus-punctuality{background:linear-gradient(130deg,#18313a,#172a35);color:#e6f2ef;border-color:#3a555b}
:root[data-theme="dark"] .bus-punctuality-heading p,:root[data-theme="dark"] .bus-punctuality-footnote,
:root[data-theme="dark"] .bus-punctuality-attribution{color:#b0c8c8}
:root[data-theme="dark"] .bus-punctuality-total,:root[data-theme="dark"] .bus-punctuality-trip,
:root[data-theme="dark"] .bus-punctuality-empty{background:#213d46;color:#d9e9e6;border-color:#375763}
:root[data-theme="dark"] .bus-punctuality-trip-main span,:root[data-theme="dark"] .bus-punctuality-toolbar{color:#aac6ca}
:root[data-theme="dark"] .bus-punctuality-regional{color:#b7d0d0}
:root[data-theme="dark"] .bus-punctuality-times b,:root[data-theme="dark"] .bus-punctuality-empty strong{color:#e5f3f2}
:root[data-theme="dark"] .bus-punctuality-refresh,:root[data-theme="dark"] .bus-punctuality-toolbar select{background:#203e47;color:#e5f3f0;border-color:#426067}
:root[data-theme="dark"] .community-pilot{background:#19333a;border-color:#385962}
:root[data-theme="dark"] .community-pilot p{color:#b2cacb}
@media(max-width:750px){.bus-punctuality-heading{flex-wrap:wrap}.bus-punctuality-actions{flex-direction:row;align-items:center;width:100%}
  .bus-punctuality-trip{flex-wrap:wrap}.bus-punctuality-times{margin-left:auto}.bus-punctuality-totals{grid-template-columns:repeat(2,1fr)}}
@media(max-width:430px){.bus-punctuality{padding:15px}.bus-punctuality-toolbar{flex-wrap:wrap}
  .bus-punctuality-toolbar span{width:100%;margin-left:0}.bus-punctuality-trip-main{min-width:calc(100% - 75px)}
  .bus-punctuality-times{margin-left:0}.bus-punctuality-badge{margin-left:auto}}
