:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#14243a;background:#f4f7fa}*{box-sizing:border-box}body{margin:0;background:#f4f7fa;color:#14243a}a{color:#0b5da8}.topbar{min-height:68px;background:#0b2d4f;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px clamp(18px,4vw,52px);gap:20px}.brand{color:#fff;text-decoration:none;font-size:1.25rem;font-weight:800}.userbar{display:flex;align-items:center;gap:14px}.userbar form{margin:0}.userbar button{border:1px solid rgba(255,255,255,.45);background:transparent;color:#fff;border-radius:10px;padding:8px 12px;cursor:pointer}.shell{width:min(1120px,calc(100% - 30px));margin:34px auto 70px}.page-head{margin-bottom:22px}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:.76rem;font-weight:800;color:#9b7624}h1{font-size:clamp(1.75rem,4vw,2.6rem);margin:.25rem 0 .45rem}h2{margin:0 0 14px}.alert{padding:12px 14px;border-radius:10px;margin:0 0 18px}.alert.error{background:#feecec;color:#8a1f1f}.alert.success{background:#e8f7ee;color:#17653a}.auth-card{width:min(520px,100%);margin:50px auto;background:#fff;border:1px solid #dfe6ee;border-radius:18px;padding:28px;box-shadow:0 14px 35px rgba(16,36,62,.08)}.form-stack{display:grid;gap:15px}.form-stack label{display:grid;gap:7px;font-weight:700}.form-stack input{width:100%;padding:12px;border:1px solid #cbd6e2;border-radius:10px;font:inherit}.primary,.secondary{display:inline-flex;justify-content:center;align-items:center;text-decoration:none;border-radius:10px;padding:11px 15px;font-weight:800;border:0;cursor:pointer}.primary{background:#0b5da8;color:#fff}.primary.inline{width:max-content;margin-top:8px}.secondary{background:#eef3f8;color:#15395c}.secondary-link{text-align:center}.trip-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0 30px}.trip-tabs a{background:#fff;border:1px solid #d9e2eb;border-radius:999px;padding:9px 14px;text-decoration:none;color:#26425e}.trip-section{margin:0 0 38px}.trip-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px}.trip-card,.panel{background:#fff;border:1px solid #dfe6ee;border-radius:16px;padding:20px;box-shadow:0 7px 20px rgba(16,36,62,.05)}.trip-card-head,.trip-detail-head,.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.badge{font-size:.78rem;background:#eaf2fb;color:#174f83;padding:6px 9px;border-radius:999px;font-weight:800}.trip-card h3{font-size:1rem;margin:18px 0 6px}.route-arrow{margin:0 0 18px;color:#62758a}.trip-meta{display:grid;gap:6px;color:#53677c;font-size:.9rem}.empty{padding:18px;border:1px dashed #cbd6e2;border-radius:12px;color:#64788d;background:#fafcfd}.back{display:inline-block;margin-bottom:16px}.trip-detail-head{margin-bottom:22px}.amount{font-size:1.4rem}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}dl{margin:0;display:grid;gap:14px}dl div{display:grid;gap:4px;border-bottom:1px solid #edf1f5;padding-bottom:11px}dt{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:#718397;font-weight:800}dd{margin:0}.route-panel{margin-bottom:18px}.route-map{border:0;width:100%;height:380px;border-radius:12px;margin-top:14px}.messages-placeholder{opacity:.8}@media(max-width:700px){.topbar{align-items:flex-start}.userbar{flex-direction:column;align-items:flex-end}.detail-grid{grid-template-columns:1fr}.trip-detail-head,.panel-head{align-items:flex-start;flex-direction:column}.route-map{height:300px}}


/* v0.4.2.12 — Order/Itinerary-aware My Trips */
.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.section-heading h2{margin:0}.section-heading p{margin:5px 0 0;color:#6b7d90}.booking-stack{display:grid;gap:16px}.booking-card{background:#fff;border:1px solid #dfe6ee;border-radius:18px;box-shadow:0 8px 24px rgba(16,36,62,.055);overflow:hidden}.booking-summary{list-style:none;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:18px 20px;cursor:pointer}.booking-summary::-webkit-details-marker{display:none}.booking-summary-main{display:grid;gap:3px;min-width:0}.booking-kind{font-size:.68rem;font-weight:900;letter-spacing:.09em;color:#9b7624}.booking-summary-main>strong{font-size:1.02rem;color:#12395f;overflow-wrap:anywhere}.booking-subtitle{font-size:.82rem;color:#6b7d90}.booking-summary-total{text-align:right;display:grid;gap:1px}.booking-summary-total strong{font-size:1.35rem;color:#0b6f47}.booking-summary-total span{font-size:.7rem;font-weight:800;color:#728397;text-transform:uppercase}.booking-chevron{font-size:1.35rem;color:#6d8093;transition:transform .18s ease}.booking-card[open] .booking-chevron{transform:rotate(180deg)}.booking-trips{border-top:1px solid #edf1f5;padding:8px 12px 12px;display:grid;gap:8px}.itinerary-trip-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid #e3eaf1;border-radius:13px;background:#fbfdff}.trip-sequence{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#0b2d4f;color:#fff;font-size:.78rem;font-weight:900}.trip-row-main{min-width:0}.trip-row-topline{display:flex;align-items:center;justify-content:space-between;gap:10px}.trip-row-topline>strong{font-size:.76rem;color:#54708b}.itinerary-trip-row h3{font-size:.95rem;margin:5px 0 6px;white-space:normal}.itinerary-trip-row h3 span{color:#8a9bad}.trip-row-meta{display:flex;gap:12px;flex-wrap:wrap;color:#65798c;font-size:.79rem}.trip-view-button{margin:0!important;padding:9px 13px!important}.booking-note{padding:0 20px 16px;color:#687b8f;font-size:.78rem}.itinerary-context{margin-bottom:18px}.itinerary-context-note{color:#718397;font-size:.82rem}.itinerary-mini-list{display:grid;gap:7px;margin-top:14px}.itinerary-mini-trip{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 11px;border:1px solid #e1e8ef;border-radius:12px;text-decoration:none;color:inherit;background:#fbfdff}.itinerary-mini-trip.active{border-color:#6ba4d5;background:#f1f8fe}.mini-sequence{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#dce9f5;color:#143d62;font-weight:900;font-size:.76rem}.itinerary-mini-trip.active .mini-sequence{background:#0b2d4f;color:#fff}.mini-route{display:grid;gap:3px;min-width:0}.mini-route strong{font-size:.83rem}.mini-route small{color:#718397}.trip-stop-list{margin:0;padding-left:19px;display:grid;gap:9px}.trip-stop-list li{padding-left:2px}.trip-stop-list li strong{display:block}.trip-stop-list li span{display:block;margin-top:2px;color:#6d8093;font-size:.82rem}.manage-trip-actions{display:flex;gap:10px;flex-wrap:wrap}.manage-policy{margin:14px 0 0;color:#65798c;font-size:.86rem}

@media(max-width:700px){
    .booking-summary{grid-template-columns:minmax(0,1fr) auto;padding:15px}.booking-summary-total{grid-column:1/2;text-align:left}.booking-chevron{grid-column:2;grid-row:1/3}.itinerary-trip-row{grid-template-columns:34px minmax(0,1fr)}.trip-view-button{grid-column:2;width:100%}.trip-row-topline{align-items:flex-start}.itinerary-mini-trip{grid-template-columns:30px minmax(0,1fr)}.itinerary-mini-trip .badge{grid-column:2;width:max-content}.booking-note{padding:0 15px 14px}
}

/* v0.4.3.0 — Passenger installable PWA */
.topbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px}.pwa-topbar-install{border:1px solid rgba(255,255,255,.55);background:#fff;color:#0b2d4f;border-radius:10px;padding:8px 12px;font:inherit;font-size:.82rem;font-weight:900;cursor:pointer}.pwa-topbar-install[hidden]{display:none!important}.pwa-install-banner{width:min(1080px,calc(100% - 30px));margin:18px auto -10px;background:#fff;border:1px solid #cfe0ee;border-radius:16px;box-shadow:0 10px 30px rgba(16,36,62,.08);padding:14px 16px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px}.pwa-install-banner[hidden]{display:none!important}.pwa-install-icon{width:46px;height:46px;border-radius:13px;background:#23b2cf;color:#0b2d4f;border:5px solid #0b2d4f;display:grid;place-items:center;font-size:.83rem;font-weight:950;line-height:1}.pwa-install-icon.large{width:66px;height:66px;border-radius:18px;border-width:7px;font-size:1.05rem;margin-bottom:15px}.pwa-install-copy{display:grid;gap:3px;min-width:0}.pwa-install-copy strong{color:#12395f;font-size:.95rem}.pwa-install-copy span{color:#61768a;font-size:.82rem;line-height:1.35}.pwa-install-actions{display:flex;align-items:center;gap:8px}.pwa-install-primary,.pwa-install-dismiss,.pwa-ios-done{border:0;border-radius:10px;padding:9px 12px;font:inherit;font-size:.8rem;font-weight:900;cursor:pointer}.pwa-install-primary,.pwa-ios-done{background:#0b5da8;color:#fff}.pwa-install-dismiss{background:#eef3f8;color:#456079}.pwa-ios-dialog{position:fixed;inset:0;z-index:9999;display:grid;place-items:end center}.pwa-ios-dialog[hidden]{display:none!important}.pwa-ios-backdrop{position:absolute;inset:0;background:rgba(5,23,41,.58)}.pwa-ios-sheet{position:relative;width:min(520px,100%);background:#fff;border-radius:24px 24px 0 0;padding:28px 24px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(5,23,41,.22)}.pwa-ios-sheet h2{margin:0 42px 8px 0;color:#12395f}.pwa-ios-sheet p{margin:0 0 17px;color:#61768a;line-height:1.5}.pwa-ios-sheet ol{margin:0 0 20px;padding-left:22px;display:grid;gap:10px;color:#314b63;line-height:1.45}.pwa-ios-close{position:absolute;top:17px;right:18px;width:36px;height:36px;border:0;border-radius:50%;background:#eef3f8;color:#274760;font-size:1.5rem;line-height:1;cursor:pointer}.pwa-ios-done{width:100%;padding:12px 15px}.pwa-dialog-open{overflow:hidden}
@media(max-width:700px){.topbar-actions{align-items:flex-end;flex-direction:column}.pwa-topbar-install{order:2}.pwa-install-banner{grid-template-columns:auto minmax(0,1fr);margin-top:12px}.pwa-install-actions{grid-column:1/-1;width:100%}.pwa-install-primary{flex:1}.pwa-install-dismiss{flex:0 0 auto}}

/* Passenger push notification permission */
.passenger-push-banner {
  margin: 12px auto 0;
  width: min(1040px, calc(100% - 32px));
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid #d9e4ef;
  border-radius: 16px;
  background: #ffffff;
  color: #0b2d4f;
}

.passenger-push-banner[hidden] {
  display: none !important;
}

.passenger-push-icon {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #eaf3fb;
  font-size: 20px;
}

.passenger-push-copy {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.passenger-push-copy strong {
  font-size: 15px;
}

.passenger-push-copy span {
  color: #62778b;
  font-size: 13px;
  line-height: 1.35;
}

.passenger-push-status {
  display: block;
  min-height: 0;
  color: #62778b;
  font-size: 12px;
}

.passenger-push-status.error {
  color: #a12a2a;
}

.passenger-push-status.info {
  color: #49657e;
}

.passenger-push-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.passenger-push-primary,
.passenger-push-dismiss {
  min-height: 38px;
  border-radius: 10px;
  padding: 8px 12px;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.passenger-push-primary {
  border: 1px solid #1767aa;
  background: #1767aa;
  color: #ffffff;
}

.passenger-push-primary:disabled {
  opacity: .65;
  cursor: wait;
}

.passenger-push-dismiss {
  border: 1px solid #d8e2ec;
  background: #ffffff;
  color: #486277;
}

@media (max-width: 720px) {
  .passenger-push-banner {
    width: calc(100% - 24px);
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
  }

  .passenger-push-actions {
    grid-column: 1 / -1;
    padding-left: 56px;
    flex-wrap: wrap;
  }
}
