/*
 * Passenger websites - the parts SHARED by both frontends (BMS + agency): public/site/assets/css/bms-site-core.css
 * (_docs/PLAN_2026-10-16_websites-one-frontend-all-agencies.md, 5; approved design _design-backup/site-design).
 *
 * Part 1: the parts of the panels' public/admin/assets/css/bms-ui.css that the website uses (tokens, buttons, fields,
 *         chips, cards, alerts, the seat-map drawing of bms-seatmap.js), copied so the public site never loads the
 *         whole admin stylesheet. Same values: change them in bms-ui.css and copy again (scratchpad make_css.py recipe
 *         in the handoff), or the website and the panels drift apart.
 * Part 2: the website layout of the approved design (site-core.css of the previews), unchanged.
 * Part 3: what Phase 1 adds (real switches as links, honeypot, the seat sheet's points list, "Booking opens" box ...).
 * Nothing here is a brand colour of its own: every colour is a --bms-* token; the agency frontend re-points those tokens
 * to the agency's four colours (bms-site-agency.css). Class names start with st- (site). Phone = max-width 767px.
 */

/* ================================================================== part 1: from bms-ui.css */
:root {
  /* brand and text */
  --bms-navy: #273C4F;          /* headings, body text, sidebar text, dark buttons */
  --bms-red: #EB464C;           /* brand red: primary buttons, icons, dots, focus, selected borders */
  --bms-red-700: #C8323A;       /* hover / pressed, error text */
  --bms-red-50: #FDECEC;        /* selected chip, active menu fill */
  --bms-red-200: #F3B9BC;       /* soft red border */
  /* surfaces and lines */
  --bms-page: #F4F6F9;          /* page background behind cards */
  --bms-card: #FFFFFF;
  --bms-line: #E6E9EE;          /* card edges, table row lines */
  --bms-line-strong: #D5DBE2;   /* field and button outlines */
  --bms-muted: #5F6B7A;         /* captions, hints, secondary text */
  --bms-subtle: #8A94A3;        /* placeholders, icons only */
  /* status */
  --bms-green: #1E8E5A; --bms-green-bg: #DDF0E6; --bms-green-text: #1E5B3F; --bms-green-line: #A9D6BC;
  --bms-grey-bg: #ECEEF1; --bms-grey-text: #5B6775;
  --bms-amber: #C98400; --bms-amber-bg: #FFF1D6; --bms-amber-text: #7A5200; --bms-amber-line: #F0D18A;
  --bms-error-bg: #FDECEC; --bms-error-text: #8E1F25; --bms-error-line: #F3B9BC;
  --bms-blue: #2F6FD4; --bms-blue-bg: #E4EEFB; --bms-blue-text: #1F4E99; --bms-blue-line: #B9D0F2;
  --bms-violet: #7B4FD1; --bms-violet-bg: #ECE6FA;
  /* type */
  --bms-font: 'IBM Plex Sans', 'Segoe UI', sans-serif;
  --bms-num: 'Roboto', 'Segoe UI', sans-serif;   /* times, amounts, counts only */
  /* shape */
  --bms-r-sm: 8px;    /* tags, small icon tiles, row icon buttons */
  --bms-r: 10px;      /* buttons, fields, selects */
  --bms-r-card: 14px; /* cards, tables, tiles */
  --bms-r-lg: 18px;   /* modals, big panels */
  --bms-h-sm: 32px; --bms-h: 40px; --bms-h-lg: 48px;
  --bms-shadow-pop: 0 8px 24px rgba(39, 60, 79, .12);
  --bms-shadow-modal: 0 24px 64px rgba(39, 60, 79, .28);
  --bms-ring: 0 0 0 3px rgba(235, 70, 76, .15);
}

/* Number fields never show spinner arrows (all panels). Select arrows stay. */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
input[type="number"] { -moz-appearance: textfield; appearance: textfield; }

/* ------------------------------------------------------------------ page */
.bms-ui { font-family: var(--bms-font); color: var(--bms-navy); font-size: 14px; }
.bms-ui *, .bms-ui *::before, .bms-ui *::after { box-sizing: border-box; }
.bms-ui h1, .bms-ui h2, .bms-ui h3, .bms-ui h4, .bms-ui h5, .bms-ui h6 { font-family: var(--bms-font); color: var(--bms-navy); }
.bms-ui a { color: var(--bms-red); text-decoration: none; }
.bms-ui a:hover { color: var(--bms-red-700); }
.bms-ui code { font-family: ui-monospace, Consolas, monospace; color: var(--bms-muted); background: none; }
.bms-ui .bms-num { font-family: var(--bms-num); font-variant-numeric: tabular-nums; }
.bms-ui .bms-muted { color: var(--bms-muted); }
.bms-ui [hidden] { display: none !important; }
.bms-ui :focus-visible { outline: 2px solid var(--bms-red); outline-offset: 2px; }

/* ------------------------------------------------------------------ cards */
.bms-ui .bms-card { background: var(--bms-card); border: 1px solid var(--bms-line); border-radius: var(--bms-r-card); margin-bottom: 20px; }
.bms-ui .bms-card-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 22px; border-bottom: 1px solid var(--bms-line); }
.bms-ui .bms-card-title { margin: 0; font-size: 16px; font-weight: 600; }
.bms-ui .bms-card-body { padding: 20px 22px; }
.bms-ui .bms-card-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 22px; border-top: 1px solid var(--bms-line); }
.bms-ui .bms-ico-tile { flex: none; width: 36px; height: 36px; border-radius: var(--bms-r); display: inline-flex; align-items: center; justify-content: center; background: var(--bms-red-50); color: var(--bms-red); }
.bms-ui .bms-section-label { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--bms-muted); }

/* ------------------------------------------------------------------ buttons */
.bms-ui .bms-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: var(--bms-h); padding: 0 18px; border-radius: var(--bms-r);
  border: 1px solid transparent; font: 600 14px/1 var(--bms-font); white-space: nowrap; cursor: pointer; text-decoration: none; transition: background .15s, border-color .15s, color .15s; }
.bms-ui .bms-btn:disabled, .bms-ui .bms-btn.is-disabled { opacity: .5; cursor: not-allowed; pointer-events: none; }
.bms-ui .bms-btn-primary { background: var(--bms-red); color: #fff; }
.bms-ui .bms-btn-primary:hover { background: var(--bms-red-700); color: #fff; }
.bms-ui .bms-btn-secondary { background: #fff; color: var(--bms-navy); border-color: var(--bms-line-strong); }
.bms-ui .bms-btn-secondary:hover { border-color: var(--bms-navy); color: var(--bms-navy); }
.bms-ui .bms-btn-dark { background: var(--bms-navy); color: #fff; }
.bms-ui .bms-btn-dark:hover { background: #1B2B3A; color: #fff; }
.bms-ui .bms-btn-ghost { background: transparent; color: var(--bms-navy); padding: 0 12px; }
.bms-ui .bms-btn-ghost:hover { background: var(--bms-page); color: var(--bms-navy); }
.bms-ui .bms-btn-danger { background: #fff; color: var(--bms-red-700); border-color: var(--bms-red-200); }
.bms-ui .bms-btn-danger:hover { background: var(--bms-red-50); color: var(--bms-red-700); }
.bms-ui .bms-btn-danger-fill { background: var(--bms-red-700); color: #fff; }
.bms-ui .bms-btn-danger-fill:hover { background: #A82A31; color: #fff; }
.bms-ui .bms-btn-sm { height: var(--bms-h-sm); padding: 0 14px; font-size: 13px; }
.bms-ui .bms-btn-lg { height: var(--bms-h-lg); padding: 0 24px; font-size: 15px; }
.bms-ui .bms-icon-btn { width: var(--bms-h); height: var(--bms-h); padding: 0; flex: none; display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--bms-r); border: 1px solid var(--bms-line-strong); background: #fff; color: var(--bms-navy); cursor: pointer; }
.bms-ui .bms-icon-btn:hover { border-color: var(--bms-navy); }

/* ------------------------------------------------------------------ fields */
.bms-ui .bms-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.bms-ui .bms-label { margin: 0; font-size: 13px; font-weight: 600; color: var(--bms-navy); }
.bms-ui .bms-label .req { color: var(--bms-red-700); }
.bms-ui .bms-input, .bms-ui .bms-select, .bms-ui .bms-textarea {
  width: 100%; height: var(--bms-h); padding: 0 12px; border: 1px solid var(--bms-line-strong); border-radius: var(--bms-r); background: #fff;
  font: 500 14px var(--bms-font); color: var(--bms-navy); outline: none; transition: border-color .15s, box-shadow .15s; }
.bms-ui .bms-textarea { height: auto; min-height: 96px; padding: 10px 12px; line-height: 1.5; resize: vertical; }
.bms-ui .bms-select { appearance: auto; padding-right: 8px; cursor: pointer; }
.bms-ui .bms-input::placeholder, .bms-ui .bms-textarea::placeholder { color: var(--bms-subtle); font-weight: 400; }
.bms-ui .bms-input:focus, .bms-ui .bms-select:focus, .bms-ui .bms-textarea:focus { border-color: var(--bms-red); box-shadow: var(--bms-ring); }
.bms-ui .bms-input:disabled, .bms-ui .bms-input[readonly], .bms-ui .bms-select:disabled { background: var(--bms-page); color: var(--bms-muted); border-color: var(--bms-line); }
.bms-ui .bms-input.is-invalid, .bms-ui .bms-select.is-invalid, .bms-ui .bms-textarea.is-invalid,
.bms-ui .bms-inputs.is-invalid { border-color: var(--bms-red-700); }
.bms-ui .bms-input-sm, .bms-ui .bms-select.bms-input-sm { height: var(--bms-h-sm); font-size: 13px; padding: 0 10px; }
.bms-ui .bms-number { font-family: var(--bms-num); }
/* Field with a fixed part inside it (currency, unit, icon) */
.bms-ui .bms-inputs { display: flex; align-items: center; height: var(--bms-h); border: 1px solid var(--bms-line-strong); border-radius: var(--bms-r); background: #fff; overflow: hidden; transition: border-color .15s, box-shadow .15s; }
.bms-ui .bms-inputs:focus-within { border-color: var(--bms-red); box-shadow: var(--bms-ring); }
.bms-ui .bms-inputs input, .bms-ui .bms-inputs select { flex: 1; min-width: 0; height: 100%; border: 0; outline: none; background: transparent; padding: 0 12px; font: 500 14px var(--bms-font); color: var(--bms-navy); }
.bms-ui .bms-addon { flex: none; height: 100%; display: inline-flex; align-items: center; padding: 0 12px; background: var(--bms-page); color: var(--bms-muted); font: 500 14px var(--bms-num); border-right: 1px solid var(--bms-line); }
.bms-ui .bms-addon.end { border-right: 0; border-left: 1px solid var(--bms-line); }
.bms-ui .bms-inputs .bms-in-icon { flex: none; margin-left: 12px; color: var(--bms-subtle); display: inline-flex; }
.bms-ui .bms-hint { font-size: 12px; color: var(--bms-muted); }
.bms-ui .bms-error { font-size: 12px; font-weight: 500; color: var(--bms-red-700); }
.bms-ui .bms-error:empty { display: none; }
.bms-ui .bms-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 18px 20px; }
.bms-ui .bms-color { width: 44px; height: var(--bms-h); padding: 3px; border: 1px solid var(--bms-line-strong); border-radius: var(--bms-r); background: #fff; cursor: pointer; flex: none; }
/* Search field */
.bms-ui .bms-search { position: relative; flex: 1 1 260px; max-width: 420px; }
.bms-ui .bms-search .bms-input { padding-left: 38px; }
.bms-ui .bms-search > svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--bms-subtle); pointer-events: none; }

/* Toggle switch (Active / Inactive) */
.bms-ui .bms-switch { position: relative; display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font-size: 14px; font-weight: 500; margin: 0; }
.bms-ui .bms-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.bms-ui .bms-switch .track { position: relative; width: 44px; height: 24px; border-radius: 999px; background: #C9D0D8; transition: background .15s; flex: none; }
.bms-ui .bms-switch .track::after { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .15s; }
.bms-ui .bms-switch input:checked + .track { background: var(--bms-green); }
.bms-ui .bms-switch input:checked + .track::after { transform: translateX(20px); }
.bms-ui .bms-switch input:focus-visible + .track { box-shadow: var(--bms-ring); }

/* ------------------------------------------------------------------ chips, pills, segments */
.bms-ui .bms-chip { display: inline-flex; align-items: center; gap: 7px; height: 26px; padding: 0 11px; border-radius: 999px; font-size: 12px; font-weight: 600; white-space: nowrap; background: var(--bms-grey-bg); color: var(--bms-grey-text); }
.bms-ui .bms-chip::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: .75; }
.bms-ui .bms-chip.no-dot::before { display: none; }
.bms-ui .bms-chip.is-active { background: var(--bms-green-bg); color: var(--bms-green-text); }
.bms-ui .bms-chip.is-active::before { background: var(--bms-green); opacity: 1; }
.bms-ui .bms-chip.is-inactive::before { background: var(--bms-subtle); opacity: 1; }
.bms-ui .bms-chip.is-warn { background: var(--bms-amber-bg); color: var(--bms-amber-text); }
.bms-ui .bms-chip.is-warn::before { background: var(--bms-amber); opacity: 1; }
.bms-ui .bms-chip.is-danger { background: var(--bms-error-bg); color: var(--bms-error-text); }
.bms-ui .bms-chip.is-info { background: var(--bms-blue-bg); color: var(--bms-blue-text); }
.bms-ui .bms-chip.is-plain { background: #fff; color: var(--bms-navy); border: 1px solid var(--bms-line); }
.bms-ui .bms-pill { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 14px; border-radius: 999px; font-size: 13px; font-weight: 600;
  background: #fff; color: var(--bms-navy); border: 1px solid var(--bms-line-strong); cursor: pointer; white-space: nowrap; text-decoration: none; }
.bms-ui .bms-pill:hover { border-color: var(--bms-red); color: var(--bms-red-700); }
.bms-ui .bms-pill.is-on { background: var(--bms-red-50); color: var(--bms-red-700); border-color: var(--bms-red); }
.bms-ui .bms-pill b { font-weight: 500; color: var(--bms-muted); }
.bms-ui .bms-count { display: inline-flex; align-items: center; gap: 4px; height: 32px; padding: 0 14px; border-radius: 999px; background: var(--bms-page); color: var(--bms-navy); font-size: 12px; white-space: nowrap; }
.bms-ui .bms-count.is-warn { background: var(--bms-amber-bg); color: var(--bms-amber-text); }
.bms-ui .bms-seg { display: inline-flex; border: 1px solid var(--bms-line-strong); border-radius: var(--bms-r); overflow: hidden; height: var(--bms-h); flex: none; }
.bms-ui .bms-seg input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.bms-ui .bms-seg label { display: inline-flex; align-items: center; margin: 0; padding: 0 16px; font-size: 13px; font-weight: 600; cursor: pointer; background: #fff; color: var(--bms-navy); white-space: nowrap; user-select: none; }
.bms-ui .bms-seg label + input + label, .bms-ui .bms-seg label + label { border-left: 1px solid var(--bms-line-strong); }
.bms-ui .bms-seg input:checked + label { background: var(--bms-navy); color: #fff; }
.bms-ui .bms-seg input:focus-visible + label { box-shadow: inset 0 0 0 2px var(--bms-red); }

/* ------------------------------------------------------------------ messages, empty state */
.bms-ui .bms-alert { display: flex; gap: 12px; padding: 14px 16px; border-radius: 12px; font-size: 14px; line-height: 1.45; border: 1px solid; margin-bottom: 16px; }
.bms-ui .bms-alert > svg { flex: none; margin-top: 1px; }
.bms-ui .bms-alert.is-success { background: var(--bms-green-bg); color: var(--bms-green-text); border-color: var(--bms-green-line); }
.bms-ui .bms-alert.is-error { background: var(--bms-error-bg); color: var(--bms-error-text); border-color: var(--bms-error-line); }
.bms-ui .bms-alert.is-warn { background: var(--bms-amber-bg); color: var(--bms-amber-text); border-color: var(--bms-amber-line); }
.bms-ui .bms-alert.is-info { background: var(--bms-blue-bg); color: var(--bms-blue-text); border-color: var(--bms-blue-line); }
.bms-ui .bms-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 48px 24px; text-align: center; color: var(--bms-muted); }
.bms-ui .bms-empty .ttl { font-size: 16px; font-weight: 600; color: var(--bms-navy); }

/* ------------------------------------------------------------------ seat maps (public/admin/assets/js/bms-seatmap.js) */
.sm-decks { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start; }
.sm-decks.is-thumb { gap: 8px; flex-wrap: nowrap; justify-content: center; }
.sm-deck { background: #fff; border: 1px solid var(--bms-line); border-radius: var(--bms-r-card); padding: 12px 14px 14px; }
.sm-deck.is-thumb { border: 2px solid #C3CAD3; border-radius: 12px; padding: 6px 8px; }
.sm-deck-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; font: 600 13px var(--bms-font); color: var(--bms-navy); }
.sm-deck-head .bms-num { font-weight: 500; color: var(--bms-muted); font-size: 12px; }
.sm-grid { display: grid; position: relative; }
.sm-cell { position: relative; display: block; min-width: 0; }
.sm-cell.is-seat { cursor: default; }
.sm-cell[role="button"] { cursor: pointer; }
.sm-cell[draggable="true"] { cursor: grab; }
.sm-cell.is-dim { opacity: .3; }
.sm-cell.is-over { outline: 2px solid var(--bms-red); outline-offset: 1px; border-radius: 9px; }
.sm-cell.is-empty { border-radius: 9px; border: 1.6px dashed #C3CAD3; background: transparent; }
.sm-cell.is-empty.is-space { border-color: transparent; }
.sm-cell.is-empty.is-sel { border-color: var(--bms-red); background: var(--bms-red-50); }
.sm-cell:focus-visible { outline: 2px solid var(--bms-red); outline-offset: 2px; border-radius: 9px; }
.sm-cell .sm-seat { display: block; transform: rotate(90deg); }
.sm-cell .sm-lb { position: absolute; left: 0; width: 100%; text-align: center; font-family: var(--bms-num); font-weight: 700; line-height: 1; pointer-events: none; }
.sm-cell .sm-berth { position: absolute; top: 0; bottom: 0; border-radius: 7px; border: 1.6px solid; }
.sm-cell .sm-pillow { position: absolute; border-radius: 3px; background: #000; opacity: .3; }
.sm-lat { border: 1px dashed #E6E9EE; border-radius: 6px; pointer-events: none; }
.sm-head { display: flex; align-items: center; justify-content: center; font: 600 11px var(--bms-num); color: var(--bms-subtle); }
.sm-steer { display: flex; align-items: center; justify-content: center; color: #4A5868; }
/* price under a seat (Book Ticket, BmsSeatMap opts.price); a sleeper berth leaves room for it */
.sm-cell .sm-price { position: absolute; left: -6px; right: -6px; bottom: 0; text-align: center; font-family: var(--bms-num); font-weight: 600; line-height: 1; color: var(--bms-muted); white-space: nowrap; pointer-events: none; }
.sm-cell.is-berth:has(.sm-price) .sm-berth { bottom: 13px; }
.sm-decks.is-thumb .sm-lb { display: none; }

/* ------------------------------------------------------------------ shared icon set (App\Support\BmsIcons) */
:where(svg.bi) { vertical-align: -0.15em; flex: none; }

@media (max-width: 575px) {
  .bms-ui .bms-card-head, .bms-ui .bms-card-body, .bms-ui .bms-card-foot { padding-left: 16px; padding-right: 16px; }
  .bms-ui .bms-head { align-items: flex-start; }
}

/* ================================================================== part 2: the approved design (site-core.css) */
:root {
  --bms-font: 'IBM Plex Sans', 'Noto Sans Devanagari', 'Nirmala UI', 'Segoe UI', system-ui, sans-serif;
  --st-max: 1200px;
  --st-head: 64px;
  --st-bar: 72px;            /* phone bottom navigation / sticky action bar height */
  --st-r-xl: 22px;
}
html { scroll-behavior: smooth; }
body.site { margin: 0; background: var(--bms-page); color: var(--bms-navy); font: 400 15px/1.5 var(--bms-font); -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; }
.site *, .site *::before, .site *::after { box-sizing: border-box; }
.site img, .site svg { max-width: 100%; }
.site h1, .site h2, .site h3, .site h4 { margin: 0; line-height: 1.2; }
.site p { margin: 0; }
.site a { color: var(--bms-red); }
.site a.st-plain, .site .st-plain a { color: inherit; text-decoration: none; }
.site .n { font-family: var(--bms-num); font-variant-numeric: tabular-nums; }
.st-wrap { width: min(var(--st-max), 100% - 32px); margin-inline: auto; }
.st-muted { color: var(--bms-muted); }
.st-small { font-size: 13px; }
.st-xs { font-size: 12px; }
.st-strong { font-weight: 600; }
.st-center { text-align: center; }
.st-row { display: flex; align-items: center; gap: 10px; }
.st-between { justify-content: space-between; }
.st-wrapflex { flex-wrap: wrap; }
.st-grow { flex: 1 1 auto; min-width: 0; }
.st-gap-s { gap: 6px; } .st-gap-l { gap: 20px; }
.st-mt { margin-top: 16px; } .st-mt-l { margin-top: 28px; } .st-mb { margin-bottom: 16px; }
.st-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.st-only-phone { display: none !important; }
@media (max-width: 767px) {
  .st-only-desktop { display: none !important; }
  .st-only-phone { display: revert !important; }
  .st-only-phone.st-row, .st-only-phone.st-flex { display: flex !important; }
}
.site :focus-visible { outline: 2px solid var(--bms-red); outline-offset: 2px; }
/* the bms-ui link rule paints every link red (specificity 0,1,1; 0,2,1 on hover). Link-like cards, chips and tabs keep the colour they ask for: */
.site a.st-user, .site a.st-iconlink, .site a.st-day, .site a.st-day-arrow, .site a.st-trip, .site a.st-routechip, .site a.bms-route, .site a.bms-agency, .site a.ag-dep, .site a.ag-logo, .site a.st-bk,
.site a.st-user:hover, .site a.st-iconlink:hover, .site a.st-day:hover, .site a.st-day-arrow:hover, .site a.st-trip:hover, .site a.bms-route:hover, .site a.bms-agency:hover, .site a.ag-logo:hover, .site a.st-bk:hover { color: var(--bms-navy); }
.site a.st-routechip:hover, .site a.ag-dep:hover { color: var(--bms-red-700); }
.site a.st-upnext, .site a.st-upnext:hover, .site a.bms-store, .site a.bms-store:hover { color: #fff; }
.st-fld input:focus-visible, .st-phone input:focus-visible, .bms-inputs input:focus-visible, .st-otp:focus-visible, .bms-search input:focus-visible { outline: 0; }
.site button { font-family: inherit; }
.site .bms-btn { min-height: 44px; }
.site .bms-btn-lg { min-height: 52px; font-size: 16px; }
.site .bms-btn-block { width: 100%; }
.site .bms-btn svg { flex: none; }

/* ------------------------------------------------------------------ header (frontends decorate it) */
.st-header { position: sticky; top: 0; z-index: 40; background: #fff; border-bottom: 1px solid var(--bms-line); }
.st-header-in { display: flex; align-items: center; gap: 18px; min-height: var(--st-head); }
.st-brand { display: inline-flex; align-items: center; flex: none; }
.st-nav { display: flex; align-items: center; gap: 2px; margin-left: 8px; flex: 1 1 auto; }
.st-nav a { display: inline-flex; align-items: center; height: 38px; padding: 0 12px; border-radius: 999px; color: var(--bms-navy); font-weight: 500; font-size: 14px; text-decoration: none; white-space: nowrap; }
.st-nav a:hover { background: var(--bms-page); color: var(--bms-navy); }
.st-nav a.is-on { background: var(--bms-red-50); color: var(--bms-red-700); font-weight: 600; }
.st-tools { display: flex; align-items: center; gap: 10px; flex: none; }
.st-mini-seg { display: inline-flex; border: 1px solid var(--bms-line-strong); border-radius: 999px; overflow: hidden; height: 32px; }
.st-mini-seg button { border: 0; background: #fff; color: var(--bms-muted); padding: 0 11px; font: 600 12px var(--bms-font); cursor: pointer; }
.st-mini-seg button.is-on { background: var(--bms-navy); color: #fff; }
.st-burger { display: none; width: 44px; height: 44px; border: 1px solid var(--bms-line-strong); border-radius: 12px; background: #fff; color: var(--bms-navy); align-items: center; justify-content: center; cursor: pointer; }
.st-iconlink { display: none; width: 44px; height: 44px; border-radius: 12px; border: 1px solid var(--bms-line-strong); background: #fff; color: var(--bms-navy); align-items: center; justify-content: center; text-decoration: none; position: relative; }
.st-user { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 12px 0 5px; border: 1px solid var(--bms-line-strong); border-radius: 999px; background: #fff; color: var(--bms-navy); font-weight: 600; font-size: 14px; text-decoration: none; }
.st-user:hover { border-color: var(--bms-navy); color: var(--bms-navy); }
.st-avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--bms-red-50); color: var(--bms-red-700); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; flex: none; }
.st-menu { display: none; border-top: 1px solid var(--bms-line); background: #fff; padding: 8px 16px 16px; }
.st-menu.is-open { display: block; }
.st-menu a { display: flex; align-items: center; gap: 10px; min-height: 48px; color: var(--bms-navy); text-decoration: none; font-weight: 500; border-bottom: 1px solid var(--bms-line); }
.st-menu .st-menu-tools { display: flex; gap: 10px; padding-top: 12px; align-items: center; justify-content: space-between; }
@media (max-width: 991px) {
  .st-nav { display: none; }
  .st-tools .st-mini-seg, .st-tools .st-user { display: none; }
  .st-burger, .st-iconlink { display: inline-flex; }
  .st-tools { margin-left: auto; }
  .st-header-in { gap: 10px; min-height: 58px; }
}

/* bottom navigation on the phone (not on pages that have their own sticky action bar) */
.st-bottomnav { display: none; }
@media (max-width: 767px) {
  .st-bottomnav { position: fixed; z-index: 45; left: 0; right: 0; bottom: 0; height: 62px; display: grid; grid-template-columns: repeat(4, 1fr); background: #fff; border-top: 1px solid var(--bms-line); padding-bottom: env(safe-area-inset-bottom); }
  .st-bottomnav a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; color: var(--bms-muted); font-size: 11px; font-weight: 600; text-decoration: none; }
  .st-bottomnav a.is-on { color: var(--bms-red-700); }
  body.has-bottomnav { padding-bottom: 66px; }
}

/* ------------------------------------------------------------------ footer skeleton */
.st-footer { margin-top: 56px; background: var(--bms-navy); color: #C9D3DE; font-size: 14px; }
.st-footer a { color: #E9EEF3; text-decoration: none; }
.st-footer a:hover { color: #fff; text-decoration: underline; }
.st-footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 32px; padding: 44px 0 28px; }
.st-footer .st-foot-h { color: #fff; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 12px; font-weight: 600; }
.st-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.st-footer .st-foot-bottom { display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; padding: 16px 0 22px; border-top: 1px solid rgba(255,255,255,.14); font-size: 13px; color: #9FB0C1; }
.st-social { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.st-social a { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; border-radius: 999px; border: 1px solid rgba(255,255,255,.22); font-size: 13px; }
@media (max-width: 767px) {
  .st-footer { margin-top: 40px; }
  .st-footer-grid { grid-template-columns: 1fr 1fr; gap: 24px 16px; padding-top: 32px; }
  .st-footer-grid > :first-child { grid-column: 1 / -1; }
}

/* ------------------------------------------------------------------ search box (ONE component, both home pages) */
.st-search { position: relative; background: #fff; border-radius: var(--st-r-xl); box-shadow: 0 18px 48px rgba(16, 24, 40, .16); padding: 18px; }
.st-search-main { display: grid; grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr) minmax(180px, .72fr) auto; gap: 10px; align-items: stretch; }
.st-fld { position: relative; display: block; border: 1px solid var(--bms-line-strong); border-radius: 14px; background: #fff; padding: 9px 12px 7px 46px; min-height: 60px; cursor: text; transition: border-color .15s, box-shadow .15s; }
.st-fld:focus-within, .st-fld.is-open { border-color: var(--bms-red); box-shadow: var(--bms-ring); }
.st-fld > .bi { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--bms-red); }
.st-fld small { display: block; font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--bms-muted); }
.st-fld input, .st-fld .st-fld-val { display: block; width: 100%; border: 0; outline: 0; background: transparent; padding: 0; margin-top: 1px; font: 600 17px/1.3 var(--bms-font); color: var(--bms-navy); text-overflow: ellipsis; }
.st-fld input::placeholder { color: var(--bms-subtle); font-weight: 500; }
.st-fld .st-fld-val { cursor: pointer; text-align: left; border: 0; }
.st-fld .st-fld-sub { display: block; font-size: 12px; color: var(--bms-muted); font-weight: 500; margin-top: -1px; }
.st-swap { align-self: center; justify-self: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--bms-line-strong); background: #fff; color: var(--bms-navy); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: transform .25s, border-color .15s; z-index: 2; }
.st-swap:hover { border-color: var(--bms-red); color: var(--bms-red); }
.st-swap.is-spun { transform: rotate(180deg); }
.st-search .bms-btn-go { height: auto; min-height: 60px; padding: 0 28px; font-size: 16px; border-radius: 14px; }
.st-search-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-top: 14px; }
.st-chiprow { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.st-chiprow.is-scroll { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: -16px; padding-inline: 16px; }
.st-chiprow.is-scroll::-webkit-scrollbar { display: none; }
.st-chiprow .bms-pill, .st-chiprow .st-chip2 { flex: none; }
.site .bms-pill { height: 38px; padding: 0 16px; font-size: 14px; }
.st-recent { margin-left: auto; display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; font-size: 13px; color: var(--bms-muted); }
.st-recent a { display: inline-flex; align-items: center; gap: 5px; color: var(--bms-navy); font-weight: 600; text-decoration: none; padding: 6px 0; }
.st-recent a:hover { color: var(--bms-red-700); }
.st-recent .bi { color: var(--bms-subtle); }
.st-pop { margin-top: 14px; }
.st-pop-title { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--bms-muted); margin-bottom: 8px; }
.st-routechip { display: inline-flex; align-items: center; gap: 8px; height: 42px; padding: 0 14px; border-radius: 12px; border: 1px solid var(--bms-line); background: #fff; color: var(--bms-navy); font-weight: 600; font-size: 14px; text-decoration: none; white-space: nowrap; }
.st-routechip:hover { border-color: var(--bms-red); color: var(--bms-red-700); }
.st-routechip small { font: 500 12px var(--bms-num); color: var(--bms-muted); }
.st-routechip .bi { color: var(--bms-subtle); }

/* suggestions under a stop field: Recent + Popular on focus, matches while typing */
.st-sug { position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 6px); background: #fff; border: 1px solid var(--bms-line); border-radius: 16px; box-shadow: var(--bms-shadow-pop); padding: 8px; max-height: 380px; overflow-y: auto; min-width: 280px; }
.st-sug[hidden] { display: none; }
.st-sug h5 { margin: 8px 8px 4px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--bms-muted); }
.st-sug button { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 48px; padding: 6px 10px; border: 0; border-radius: 10px; background: transparent; text-align: left; cursor: pointer; font: 500 15px var(--bms-font); color: var(--bms-navy); }
.st-sug button:hover, .st-sug button:focus-visible, .st-sug button.is-hot { background: var(--bms-page); outline: 0; }
.st-sug button .bi { color: var(--bms-subtle); flex: none; }
.st-sug button small { display: block; color: var(--bms-muted); font-size: 12px; font-weight: 400; }
.st-sug .st-empty { padding: 14px 10px; color: var(--bms-muted); font-size: 14px; }
.st-fldwrap { position: relative; min-width: 0; }

/* date picker popover (the BS / AD calendar, same look as BmsCal) */
.st-cal { position: absolute; z-index: 35; top: calc(100% + 6px); right: 0; width: 320px; max-width: calc(100vw - 32px); background: #fff; border: 1px solid var(--bms-line); border-radius: 16px; box-shadow: var(--bms-shadow-pop); padding: 14px; }
.st-cal[hidden] { display: none; }
.st-cal .cal-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; font-weight: 600; }
.st-cal .cal-top button { width: 36px; height: 36px; border: 1px solid var(--bms-line-strong); background: #fff; border-radius: 10px; cursor: pointer; color: var(--bms-navy); display: inline-flex; align-items: center; justify-content: center; }
.st-cal .cal-top span small { display: block; font-weight: 400; font-size: 12px; color: var(--bms-muted); text-align: center; }
.st-cal .dp-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.st-cal .dp-wd { text-align: center; font-size: 11px; font-weight: 600; color: var(--bms-subtle); padding: 4px 0; }
.st-cal .dp-day { position: relative; height: 40px; border: 0; border-radius: 10px; background: transparent; font: 600 14px var(--bms-num); color: var(--bms-navy); cursor: pointer; }
.st-cal .dp-day:hover { background: var(--bms-page); }
.st-cal .dp-day.is-today { box-shadow: inset 0 0 0 1px var(--bms-line-strong); }
.st-cal .dp-day.is-on { background: var(--bms-red); color: #fff; }
.st-cal .dp-day:disabled { opacity: .3; cursor: not-allowed; }
.st-cal .dp-day .dp-ad { position: absolute; right: 4px; bottom: 2px; font-size: 9px; font-weight: 400; line-height: 1; color: var(--bms-subtle); }
.st-cal .dp-day.is-on .dp-ad { color: rgba(255,255,255,.85); }
.st-cal .dp-sel { margin-top: 8px; font-size: 12px; color: var(--bms-muted); text-align: center; }

@media (max-width: 991px) {
  .st-search-main { grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr); }
  .st-search-main .st-fld-date { grid-column: 1 / 3; }
  .st-search-main .bms-btn-go { grid-column: 3; }
}
@media (max-width: 767px) {
  .st-search { padding: 14px; border-radius: 20px; }
  .st-search-main { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .st-search-main .st-fldwrap:nth-of-type(2) { margin-top: 0; }
  .st-swap { position: absolute; right: 22px; top: 62px; width: 40px; height: 40px; background: #fff; box-shadow: 0 2px 8px rgba(39,60,79,.14); }
  .st-search-main .st-fld-date { grid-column: auto; }
  .st-search-main .bms-btn-go { grid-column: auto; min-height: 54px; width: 100%; }
  .st-fld { min-height: 58px; }
  .st-fld input, .st-fld .st-fld-val { font-size: 16px; }
  .st-recent { margin-left: 0; width: 100%; }
  .st-sug { position: absolute; left: 0; right: 0; min-width: 0; max-height: 300px; }
  .st-cal { left: 0; right: 0; width: auto; }
}

/* Track box on the home pages */
.st-trackbar { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 16px; background: #fff; border: 1px solid var(--bms-line); border-radius: 16px; padding: 14px 18px; margin-top: 18px; }
.st-trackbar .grow { flex: 1 1 220px; min-width: 0; }
.st-trackbar .grow b { display: block; font-size: 15px; }
.st-trackbar .bms-field { flex: 0 1 280px; }
.st-trackbar .bms-input { height: 46px; font-size: 16px; }
.st-trackbar .bms-btn { min-height: 46px; }
@media (max-width: 767px) { .st-trackbar { padding: 14px; } .st-trackbar .bms-field { flex: 1 1 160px; } }

/* ------------------------------------------------------------------ section blocks (company pages) */
.st-section { padding: 48px 0 0; }
.st-section-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 8px 20px; margin-bottom: 20px; }
.st-section-head h2 { font-size: 26px; font-weight: 700; }
.st-section-head p { color: var(--bms-muted); margin-top: 4px; }
.st-section-head a.st-more { font-weight: 600; font-size: 14px; text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
.st-cards { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.st-cards.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.st-cards.c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.st-cards.c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.st-tile { background: #fff; border: 1px solid var(--bms-line); border-radius: var(--bms-r-card); padding: 20px; }
.st-tile .bms-ico-tile { width: 44px; height: 44px; border-radius: 12px; margin-bottom: 14px; }
.st-tile h3 { font-size: 17px; font-weight: 600; margin-bottom: 6px; }
.st-tile p { color: var(--bms-muted); font-size: 14px; }
.st-pagehead { padding: 36px 0 8px; }
.st-pagehead .st-crumb { font-size: 13px; color: var(--bms-muted); margin-bottom: 8px; display: flex; gap: 6px; flex-wrap: wrap; }
.st-pagehead .st-crumb a { color: var(--bms-muted); text-decoration: none; }
.st-pagehead h1 { font-size: 32px; font-weight: 700; }
.st-pagehead p { color: var(--bms-muted); margin-top: 8px; max-width: 70ch; font-size: 16px; }
.st-prose { max-width: 72ch; font-size: 16px; line-height: 1.7; }
.st-prose p + p { margin-top: 14px; }
.st-prose h3 { font-size: 20px; margin: 24px 0 8px; }
.st-prose ul { padding-left: 20px; }
.st-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.st-stat { text-align: center; padding: 22px 12px; background: #fff; border: 1px solid var(--bms-line); border-radius: var(--bms-r-card); }
.st-stat b { display: block; font: 700 34px/1.1 var(--bms-num); color: var(--bms-red); }
.st-stat span { display: block; margin-top: 6px; font-size: 14px; color: var(--bms-muted); }
.st-faq details { background: #fff; border: 1px solid var(--bms-line); border-radius: 12px; padding: 0 16px; }
.st-faq details + details { margin-top: 10px; }
.st-faq summary { cursor: pointer; list-style: none; min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 12px; font-weight: 600; }
.st-faq summary::-webkit-details-marker { display: none; }
.st-faq summary::after { content: ''; width: 10px; height: 10px; border-right: 2px solid var(--bms-muted); border-bottom: 2px solid var(--bms-muted); transform: rotate(45deg); transition: transform .2s; margin-right: 4px; }
.st-faq details[open] summary::after { transform: rotate(-135deg); }
.st-faq details p { padding: 0 0 16px; color: var(--bms-muted); }
.st-form { display: grid; gap: 16px; }
.st-form .two { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.st-form .bms-input, .st-form .bms-select { height: 48px; font-size: 16px; }
.st-form .bms-textarea { font-size: 16px; }
.st-contact-line { display: flex; gap: 14px; align-items: flex-start; padding: 14px 0; border-bottom: 1px solid var(--bms-line); }
.st-contact-line:last-child { border-bottom: 0; }
.st-contact-line b { display: block; font-size: 13px; color: var(--bms-muted); font-weight: 600; }
.st-contact-line a { color: var(--bms-navy); font-weight: 600; text-decoration: none; }
.st-split { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.st-map { position: relative; height: 280px; border-radius: var(--bms-r-card); border: 1px solid var(--bms-line); overflow: hidden; background: #E9EEF3; }
.st-map svg { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; }
.st-map .st-map-btn { position: absolute; left: 14px; bottom: 14px; }
@media (max-width: 991px) {
  .st-cards.c4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .st-cards.c3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .st-split { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .st-section { padding-top: 36px; }
  .st-section-head h2 { font-size: 22px; }
  .st-pagehead { padding-top: 24px; }
  .st-pagehead h1 { font-size: 26px; }
  .st-cards.c3, .st-cards.c2, .st-cards.c4 { grid-template-columns: minmax(0, 1fr); }
  .st-cards.c4.keep2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .st-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .st-form .two { grid-template-columns: 1fr; }
}

/* ------------------------------------------------------------------ results: date strip, filters, trip cards */
.st-resultbar { background: #fff; border-bottom: 1px solid var(--bms-line); }
.st-resultbar .st-wrap { display: flex; align-items: center; gap: 14px; padding: 12px 0; flex-wrap: wrap; }
.st-sumroute { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 18px; }
.st-sumroute .bi { color: var(--bms-subtle); }
.st-sumroute small { font-weight: 500; font-size: 13px; color: var(--bms-muted); margin-left: 6px; }
.st-datestrip { display: flex; align-items: stretch; gap: 8px; overflow-x: auto; scrollbar-width: none; padding: 2px 0; }
.st-datestrip::-webkit-scrollbar { display: none; }
.st-dstrip-wrap { background: #fff; border-bottom: 1px solid var(--bms-line); position: sticky; top: var(--st-head); z-index: 20; }
.st-day { flex: 1 0 84px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; min-height: 64px; border: 1px solid var(--bms-line); border-radius: 12px; background: #fff; color: var(--bms-navy); text-decoration: none; padding: 6px 8px; }
.st-day:hover { border-color: var(--bms-red); color: var(--bms-navy); }
.st-day b { font-size: 13px; font-weight: 600; letter-spacing: .01em; }
.st-day .dd { font: 600 14px var(--bms-num); }
.st-day .dd small { font-size: 11px; color: var(--bms-muted); font-weight: 500; }
.st-day small { font-size: 11px; color: var(--bms-muted); }
.st-day em { font: 600 12px var(--bms-num); font-style: normal; color: var(--bms-green-text); }
.st-day.is-on { border-color: var(--bms-red); background: var(--bms-red-50); }
.st-day.is-on b { color: var(--bms-red-700); }
.st-day-arrow { flex: none; width: 40px; border: 1px solid var(--bms-line); background: #fff; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; color: var(--bms-navy); text-decoration: none; }
.st-resgrid > *, .st-seats-grid > *, .st-book-grid > *, .st-cancel-grid > *, .st-prof-grid > *, .st-doc-grid > *, .st-track-grid > *, .st-split > *, .ag-contact > *, .ag-story > * { min-width: 0; }
.st-resgrid { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 24px; align-items: start; padding-top: 20px; }
.st-resgrid.no-side { grid-template-columns: 1fr; }
.st-filters { position: sticky; top: calc(var(--st-head) + 90px); padding: 0; }
.st-filters .f-sec { padding: 16px 18px; border-bottom: 1px solid var(--bms-line); }
.st-filters .f-sec:last-child { border-bottom: 0; }
.st-filters .f-h { font-size: 13px; font-weight: 600; margin-bottom: 10px; display: flex; justify-content: space-between; align-items: center; }
.st-filters .f-h a { font-weight: 500; font-size: 12px; }
.st-check { display: flex; align-items: center; gap: 10px; min-height: 36px; font-size: 14px; cursor: pointer; margin: 0; }
.st-check input { width: 18px; height: 18px; accent-color: var(--bms-red); flex: none; }
.st-check .cnt { margin-left: auto; color: var(--bms-muted); font: 500 12px var(--bms-num); }
.st-fchips { display: flex; flex-wrap: wrap; gap: 8px; }
.st-fchips .bms-pill { height: 34px; padding: 0 12px; font-size: 13px; }
.st-listhead { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.st-listhead b { font-size: 16px; }
.st-sortrow { display: flex; gap: 8px; align-items: center; overflow-x: auto; scrollbar-width: none; }
.st-sortrow::-webkit-scrollbar { display: none; }
.st-trips { display: grid; gap: 12px; }
.st-trip { display: block; position: relative; background: #fff; border: 1px solid var(--bms-line); border-radius: 16px; padding: 16px 18px 14px; color: var(--bms-navy); text-decoration: none; transition: border-color .15s, box-shadow .15s, transform .15s; }
a.st-trip:hover { border-color: var(--bms-red); box-shadow: 0 6px 22px rgba(39,60,79,.10); color: var(--bms-navy); }
a.st-trip:active { transform: scale(.995); }
.st-trip.is-off { opacity: .62; background: var(--bms-page); pointer-events: none; }
.st-trip-top { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.st-agtile { width: 34px; height: 34px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; color: #fff; font-size: 14px; flex: none; }
.st-trip-top .who { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.st-trip-top .who b { font-size: 15px; font-weight: 600; }
.st-trip-top .who small { color: var(--bms-muted); font-size: 12px; }
.st-rate { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 8px; border-radius: 8px; background: var(--bms-green-bg); color: var(--bms-green-text); font: 600 12px var(--bms-num); }
.st-rate .bi { color: var(--bms-green); }
.st-trip-top .tags { margin-left: auto; display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.st-tag { display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px; border-radius: 7px; background: var(--bms-page); color: var(--bms-navy); font-size: 12px; font-weight: 600; white-space: nowrap; }
.st-tag.is-blue { background: var(--bms-blue-bg); color: var(--bms-blue-text); }
.st-tag.is-green { background: var(--bms-green-bg); color: var(--bms-green-text); }
.st-tag.is-amber { background: var(--bms-amber-bg); color: var(--bms-amber-text); }
.st-tag.is-red { background: var(--bms-red-50); color: var(--bms-red-700); }
.st-trip-mid { display: grid; grid-template-columns: auto minmax(60px, 1fr) auto auto; gap: 8px 16px; align-items: center; }
.st-time { font: 700 24px/1.1 var(--bms-num); letter-spacing: -.01em; }
.st-time small { display: inline; font: 600 12px var(--bms-num); color: var(--bms-muted); margin-left: 3px; }
.st-stopname { font-size: 13px; color: var(--bms-muted); margin-top: 2px; }
.st-dur { text-align: center; font-size: 12px; color: var(--bms-muted); font-weight: 600; }
.st-dur .line { position: relative; height: 2px; background: var(--bms-line-strong); margin: 6px 0; border-radius: 2px; }
.st-dur .line::before, .st-dur .line::after { content: ''; position: absolute; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: #fff; border: 2px solid var(--bms-subtle); }
.st-dur .line::before { left: 0; } .st-dur .line::after { right: 0; background: var(--bms-subtle); }
.st-pricebox { text-align: right; padding-left: 16px; border-left: 1px dashed var(--bms-line-strong); }
.st-pricebox small { display: block; font-size: 12px; color: var(--bms-muted); }
.st-price { font: 700 24px/1.1 var(--bms-num); }
.st-price s { font: 500 13px var(--bms-num); color: var(--bms-subtle); margin-right: 6px; }
.st-trip-bot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--bms-line); font-size: 13px; color: var(--bms-muted); }
.st-left { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; color: var(--bms-green-text); }
.st-left::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--bms-green); }
.st-left.is-low { color: var(--bms-amber-text); } .st-left.is-low::before { background: var(--bms-amber); }
.st-left.is-out { color: var(--bms-red-700); } .st-left.is-out::before { background: var(--bms-red); }
.st-amen { display: inline-flex; gap: 10px; color: var(--bms-subtle); }
.st-go { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; color: var(--bms-red-700); font-weight: 600; }
.st-agbox { display: none; }
.st-agbox.is-open { display: block; }
@media (max-width: 991px) {
  .st-resgrid { grid-template-columns: 1fr; }
  .st-filters-side { display: none; }
}
@media (min-width: 992px) { .st-filters-inline { display: none; } }
@media (max-width: 767px) {
  .st-trip { padding: 14px 14px 12px; border-radius: 16px; }
  .st-trip-mid { grid-template-columns: auto minmax(40px, 1fr) auto; }
  .st-trip-mid .st-pricebox { grid-column: 1 / -1; text-align: left; border-left: 0; padding-left: 0; display: flex; align-items: baseline; gap: 8px; border-top: 0; margin-top: 2px; }
  .st-time { font-size: 21px; }
  .st-sumroute { font-size: 16px; }
  .st-day { flex-basis: 74px; min-height: 62px; }
  .st-go { display: none; }
}

/* ------------------------------------------------------------------ seats page + the phone bottom sheet */
.st-seats-grid { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 24px; align-items: start; padding-top: 22px; }
.st-tripbar { padding: 16px 20px; display: grid; gap: 12px; }
.st-tripbar .route { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; font-size: 20px; font-weight: 700; }
.st-tripbar .route .bi { color: var(--bms-subtle); }
.st-facts { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: 14px; color: var(--bms-muted); }
.st-facts span { display: inline-flex; align-items: center; gap: 6px; }
.st-facts span b { color: var(--bms-navy); font-weight: 600; }
.st-points { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.st-point { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--bms-line); border-radius: 12px; background: #fff; text-align: left; font: inherit; color: inherit; cursor: pointer; min-height: 56px; }
.st-point:hover { border-color: var(--bms-line-strong); background: var(--bms-page); }
.st-point .bi { color: var(--bms-red); flex: none; }
.st-point small { display: block; font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--bms-muted); }
.st-point b { display: block; font-size: 14px; font-weight: 600; }
.st-point .chg { margin-left: auto; font-size: 12px; font-weight: 600; color: var(--bms-red-700); }
.st-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 12.5px; color: var(--bms-muted); margin-bottom: 14px; }
.st-legend span { display: inline-flex; align-items: center; gap: 6px; }
.st-legend span > svg, .st-legend span > i { display: block; }
.st-seatcard { padding: 18px 20px 20px; }
.st-seatcard .sm-decks { justify-content: center; }
.st-seatcard .sm-cell.is-mine { outline: 2px solid var(--bms-navy); outline-offset: 3px; border-radius: 10px; }
.st-deck-tabs { display: none; }
.st-point .chev, .st-point .pt-time-p { display: none; }
.st-pbox { position: sticky; top: calc(var(--st-head) + 16px); padding: 0; overflow: hidden; }
.st-pbox .p-head { padding: 16px 18px; border-bottom: 1px solid var(--bms-line); display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.st-pbox .p-head b { font-size: 16px; }
.st-hold { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; border-radius: 999px; background: var(--bms-amber-bg); color: var(--bms-amber-text); font: 600 12px var(--bms-num); white-space: nowrap; }
.st-pbox .p-body { padding: 14px 18px; }
.st-seatlist { display: flex; flex-wrap: wrap; gap: 6px; min-height: 30px; }
.st-seatchip { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px 0 12px; border-radius: 999px; background: var(--bms-red-50); color: var(--bms-red-700); font: 700 13px var(--bms-num); border: 0; cursor: pointer; }
.st-seatchip .bi { opacity: .7; }
.st-lines { display: grid; gap: 8px; margin-top: 12px; font-size: 14px; }
.st-lines > div, .st-lines #lineFare > div { display: flex; justify-content: space-between; gap: 10px; }
.st-lines .n { white-space: nowrap; }
.st-lines .minus { color: var(--bms-green-text); }
.st-lines .tot { padding-top: 10px; margin-top: 2px; border-top: 1px solid var(--bms-line); font-size: 17px; font-weight: 700; }
.st-lines .tot .n { font-size: 20px; }
.st-pbox .p-foot { padding: 14px 18px 18px; border-top: 1px solid var(--bms-line); }
.st-empty-hint { color: var(--bms-muted); font-size: 14px; padding: 6px 0; }
.st-behind, .st-scrim, .st-grab { display: none; }
.st-inline-login { display: none; }
.st-pbox.is-login .p-normal { display: none; }
.st-pbox.is-login .st-inline-login { display: block; }
@media (max-width: 991px) {
  .st-seats-grid { grid-template-columns: 1fr; }
  .st-pbox { position: static; }
}
@media (max-width: 767px) {
  body.page-seats { overflow-x: hidden; }
  .page-seats .st-header { position: sticky; }
  .st-behind { display: block; filter: none; }
  .st-scrim { display: block; position: fixed; inset: 0; z-index: 48; background: rgba(16, 24, 40, .45); }
  .st-seats-grid { position: fixed; z-index: 50; left: 0; right: 0; bottom: 0; top: auto; width: 100%; max-height: 92vh; max-height: 92dvh; display: flex; flex-direction: column; align-items: stretch; gap: 0; padding: 0; margin: 0; background: #fff; border-radius: 24px 24px 0 0; box-shadow: 0 -16px 48px rgba(16,24,40,.28); overflow-y: auto; overscroll-behavior: contain; }
  .st-grab { display: block; position: sticky; top: 0; z-index: 3; flex: none; height: 36px; background: #fff; text-align: center; }
  .st-grab::before { content: ''; display: inline-block; width: 44px; height: 5px; border-radius: 5px; background: var(--bms-line-strong); margin-top: 15px; }
  .st-grab a { position: absolute; right: 8px; top: 0; width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; color: var(--bms-navy); background: var(--bms-page); text-decoration: none; }
  .st-seats-main { padding: 0 14px; display: block; }
  .st-seats-main .bms-card { border: 0; border-radius: 0; margin-bottom: 8px; background: transparent; }
  .st-tripbar { padding: 0 0 8px; gap: 8px; }
  .st-tripbar .route { font-size: 17px; }
  .st-facts { font-size: 13px; gap: 4px 14px; }
  .st-points { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
  .st-point { min-height: 46px; padding: 5px 10px; gap: 8px; border-radius: 10px; min-width: 0; }
  .st-point > svg { width: 20px; height: 20px; }
  .st-point .chg, .st-point .chev, .st-point .pt-time-d { display: none; }
  .st-point .pt-time-p { display: inline; }
  .st-point small { font-size: 10px; }
  .st-point > span:nth-child(2) { min-width: 0; flex: 1; }
  .st-point b { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .st-legend { flex-wrap: nowrap; overflow-x: auto; gap: 14px; margin-bottom: 10px; scrollbar-width: none; }
  .st-legend::-webkit-scrollbar { display: none; }
  .st-legend span { flex: none; }
  .st-seatcard { padding: 4px 0 8px; }
  .st-deck-tabs { display: flex; gap: 8px; justify-content: center; margin-bottom: 10px; }
  .st-deck-tabs button { flex: 1; height: 36px; border: 1px solid var(--bms-line-strong); border-radius: 12px; background: #fff; font: 600 14px var(--bms-font); color: var(--bms-navy); cursor: pointer; }
  .st-deck-tabs button.is-on { background: var(--bms-navy); color: #fff; border-color: var(--bms-navy); }
  .st-seatcard .sm-deck { border-width: 1px; }
  .st-pbox { position: sticky; bottom: 0; z-index: 4; overflow: visible; border: 0; border-top: 1px solid var(--bms-line); border-radius: 0; background: #fff; margin: 0; box-shadow: 0 -6px 18px rgba(16,24,40,.08); }
  .st-pbox .p-head { padding: 10px 14px; border-bottom: 0; }
  .st-pbox .p-body { padding: 0 14px 8px; }
  .st-pbox .p-body .st-lines, .st-pbox .p-body .st-lines-hide { display: none; }
  .st-pbox .p-foot { padding: 4px 14px calc(12px + env(safe-area-inset-bottom)); border-top: 0; }
}

/* ------------------------------------------------------------------ details & pay (ONE page) */
.st-book-grid { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 24px; align-items: start; padding-top: 22px; }
.st-steps { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--bms-muted); margin-bottom: 14px; flex-wrap: wrap; }
.st-steps b { color: var(--bms-navy); font-weight: 600; }
.st-steps .dot { width: 22px; height: 22px; border-radius: 50%; background: var(--bms-green-bg); color: var(--bms-green-text); display: inline-flex; align-items: center; justify-content: center; font: 700 11px var(--bms-num); }
.st-steps .dot.is-now { background: var(--bms-red); color: #fff; }
.st-steps .sep { width: 18px; height: 1px; background: var(--bms-line-strong); }
.st-minitrip { display: flex; flex-wrap: wrap; gap: 10px 22px; align-items: center; padding: 14px 18px; }
.st-minitrip .route { font-weight: 700; font-size: 17px; display: flex; align-items: center; gap: 8px; }
.st-minitrip .route .bi { color: var(--bms-subtle); }
.st-pcard { padding: 0; margin-bottom: 14px; }
.st-pcard-head { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--bms-line); flex-wrap: wrap; }
.st-seatno { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; height: 32px; padding: 0 10px; border-radius: 9px; background: var(--bms-red-50); color: var(--bms-red-700); font: 700 14px var(--bms-num); }
.st-pcard-head .ttl { font-weight: 600; font-size: 15px; }
.st-pcard-head .quick { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; position: relative; }
.st-pcard-body { padding: 16px 18px 18px; display: grid; gap: 14px; }
.st-pcard-body .row2 { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 14px; }
.st-seg3 { display: flex; border: 1px solid var(--bms-line-strong); border-radius: var(--bms-r); overflow: hidden; height: 48px; }
.st-seg3 label { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; margin: 0; font-size: 14px; font-weight: 600; cursor: pointer; background: #fff; color: var(--bms-navy); }
.st-seg3 label + label { border-left: 1px solid var(--bms-line-strong); }
.st-seg3 input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.st-seg3 input:checked + label, .st-seg3 label:has(input:checked) { background: var(--bms-navy); color: #fff; }
.st-seg3.is-invalid { border-color: var(--bms-red-700); }
.st-lady { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 10px; background: #FFE9F5; color: #8A2F61; font-size: 13px; }
.st-more { border-top: 1px dashed var(--bms-line-strong); padding-top: 12px; }
.st-more summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--bms-muted); list-style: none; display: inline-flex; align-items: center; gap: 6px; min-height: 32px; }
.st-more summary::-webkit-details-marker { display: none; }
.st-more[open] summary .bi { transform: rotate(180deg); }
.st-more .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 10px; }
.st-pass-list { position: absolute; z-index: 30; right: 0; top: calc(100% + 6px); background: #fff; border: 1px solid var(--bms-line); border-radius: 14px; box-shadow: var(--bms-shadow-pop); padding: 6px; min-width: 250px; }
.st-pass-list[hidden] { display: none; }
.st-pass-list button { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px; border: 0; background: transparent; border-radius: 10px; padding: 6px 10px; text-align: left; cursor: pointer; font: 500 14px var(--bms-font); color: var(--bms-navy); }
.st-pass-list button:hover { background: var(--bms-page); }
.st-pass-list small { display: block; color: var(--bms-muted); font-size: 12px; }
.st-fieldgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.st-verified { display: inline-flex; align-items: center; gap: 4px; color: var(--bms-green-text); font-size: 12px; font-weight: 600; }
.st-couponrow { display: flex; align-items: center; gap: 12px; padding: 14px 18px; cursor: pointer; width: 100%; text-align: left; background: #fff; border: 0; font: inherit; color: inherit; }
.st-couponrow .bi { color: var(--bms-red); }
.st-coupon-body { padding: 0 18px 16px; display: none; }
.st-coupon-body.is-open { display: flex; gap: 10px; }
.st-coupon-body .bms-input { height: 46px; text-transform: uppercase; }
.st-payrow { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 1px solid var(--bms-line); border-radius: 14px; background: #fff; }
.st-payrow + .st-payrow { margin-top: 10px; }
.st-payrow.is-on { border-color: var(--bms-red); background: var(--bms-red-50); }
.st-payrow .ico { width: 42px; height: 42px; border-radius: 12px; background: var(--bms-page); display: inline-flex; align-items: center; justify-content: center; flex: none; color: var(--bms-navy); }
.st-payrow.is-on .ico { background: #fff; color: var(--bms-red); }
.st-payrow .grow { flex: 1; min-width: 0; }
.st-payrow b { display: block; font-size: 15px; font-weight: 600; }
.st-payrow small { color: var(--bms-muted); font-size: 12.5px; }
.st-payrow .amt { font: 700 16px var(--bms-num); white-space: nowrap; }
.st-radio { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--bms-line-strong); flex: none; position: relative; background: #fff; }
.st-payrow.is-on .st-radio { border-color: var(--bms-red); }
.st-payrow.is-on .st-radio::after { content: ''; position: absolute; inset: 4px; border-radius: 50%; background: var(--bms-red); }
.st-sumcard { position: sticky; top: calc(var(--st-head) + 16px); padding: 0; overflow: hidden; }
.st-sumcard .s-head { padding: 16px 18px; border-bottom: 1px solid var(--bms-line); font-weight: 700; display: flex; justify-content: space-between; align-items: center; }
.st-sumcard .s-body { padding: 14px 18px 4px; }
.st-sumcard .s-foot { padding: 14px 18px 18px; }
.st-secure { display: flex; align-items: center; gap: 8px; justify-content: center; margin-top: 10px; font-size: 12px; color: var(--bms-muted); }
.st-stickybar { display: none; }
@media (max-width: 991px) {
  .st-book-grid { grid-template-columns: 1fr; }
  .st-sumcard { position: static; }
}
@media (max-width: 767px) {
  .st-book-grid { padding-top: 14px; padding-bottom: 96px; }
  .st-pcard-body .row2, .st-fieldgrid, .st-more .grid2 { grid-template-columns: 1fr; }
  .st-sumcard .s-foot { display: none; }
  body.page-book, body.page-cancel { padding-bottom: 78px; }
  .st-stickybar { display: flex; position: fixed; z-index: 46; left: 0; right: 0; bottom: 0; align-items: center; gap: 12px; padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid var(--bms-line); box-shadow: 0 -6px 18px rgba(16,24,40,.08); }
  .st-stickybar .tot { display: flex; flex-direction: column; line-height: 1.2; flex: none; }
  .st-stickybar .tot small { font-size: 12px; color: var(--bms-muted); }
  .st-stickybar .tot b { font: 700 20px var(--bms-num); }
  .st-stickybar .bms-btn { flex: 1; min-height: 52px; font-size: 16px; }
  .st-pass-list { left: 0; right: auto; }
  .st-pcard-head .quick { margin-left: 0; width: 100%; }
}

/* ------------------------------------------------------------------ result pages (eSewa return) and small centred pages */
.st-center-card { width: min(560px, 100% - 32px); margin: 36px auto 0; }
.st-bigicon { width: 72px; height: 72px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 16px; }
.st-bigicon.ok { background: var(--bms-green-bg); color: var(--bms-green); }
.st-bigicon.warn { background: var(--bms-amber-bg); color: var(--bms-amber); }
.st-bigicon.bad { background: var(--bms-error-bg); color: var(--bms-red-700); }
.st-bigicon.info { background: var(--bms-blue-bg); color: var(--bms-blue); }
.st-checklist { display: grid; gap: 12px; margin: 22px 0; text-align: left; }
.st-checklist > div { display: flex; align-items: center; gap: 12px; font-weight: 500; }
.st-checklist .tick { width: 26px; height: 26px; border-radius: 50%; background: var(--bms-green-bg); color: var(--bms-green); display: inline-flex; align-items: center; justify-content: center; flex: none; }
.st-checklist .tick.is-wait { background: var(--bms-page); color: var(--bms-subtle); }
.st-checklist .tick.is-bad { background: var(--bms-error-bg); color: var(--bms-red-700); }
.st-spin { animation: st-spin 1s linear infinite; }
@keyframes st-spin { to { transform: rotate(360deg); } }
.st-refund { display: flex; align-items: center; gap: 14px; padding: 16px; border-radius: 14px; background: var(--bms-green-bg); border: 1px solid var(--bms-green-line); color: var(--bms-green-text); text-align: left; margin: 18px 0; }
.st-refund b { display: block; font: 700 22px var(--bms-num); }
.st-return { display: flex; align-items: center; gap: 14px; padding: 16px 18px; flex-wrap: wrap; }
.st-return .grow { flex: 1; min-width: 200px; }

/* ------------------------------------------------------------------ ticket (boarding pass) */
.st-pass { display: grid; grid-template-columns: minmax(0, 1fr) 230px; background: #fff; border: 1px solid var(--bms-line); border-radius: 20px; position: relative; box-shadow: 0 10px 34px rgba(39,60,79,.08); }
.st-pass-main { padding: 0 0 8px; min-width: 0; }
.st-pass-brand { display: flex; align-items: center; gap: 12px; padding: 16px 22px; background: var(--bms-navy); color: #fff; border-radius: 20px 0 0 0; }
.st-pass-brand b { font-size: 17px; font-weight: 700; }
.st-pass-brand small { display: block; font-size: 12px; opacity: .75; }
.st-pass-brand .st-chip-w { margin-left: auto; background: var(--bms-green-bg); color: var(--bms-green-text); }
.st-pass-route { display: grid; grid-template-columns: 1fr auto 1fr; gap: 14px; align-items: center; padding: 20px 22px 8px; }
.st-pass-route .city { font-size: 24px; font-weight: 700; }
.st-pass-route .t { font: 700 20px var(--bms-num); margin-top: 4px; }
.st-pass-route .sub { font-size: 13px; color: var(--bms-muted); margin-top: 2px; }
.st-pass-route .mid { text-align: center; color: var(--bms-subtle); font-size: 12px; font-weight: 600; }
.st-pass-route .mid .bi { display: block; margin: 0 auto 4px; }
.st-pass-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px 18px; padding: 16px 22px; border-top: 1px dashed var(--bms-line-strong); margin-top: 12px; }
.st-pass-facts small { display: block; font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--bms-muted); }
.st-pass-facts b { display: block; font-size: 15px; font-weight: 600; margin-top: 2px; }
.st-pass-facts .dt-2 { display: block; text-transform: none; letter-spacing: 0; font-size: 12px; font-weight: 500; color: var(--bms-muted); margin-top: 1px; }
.st-pass-pax { padding: 4px 22px 14px; }
.st-pass-pax table { width: 100%; border-collapse: collapse; font-size: 14px; }
.st-pass-pax th { text-align: left; font-size: 11px; color: var(--bms-muted); text-transform: uppercase; letter-spacing: .05em; padding: 8px 0; border-bottom: 1px solid var(--bms-line); font-weight: 600; }
.st-pass-pax td { padding: 10px 0; border-bottom: 1px solid var(--bms-line); }
.st-pass-pax tr:last-child td { border-bottom: 0; }
.st-pass-stub { position: relative; border-left: 2px dashed var(--bms-line-strong); padding: 22px 18px; display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; }
.st-pass-stub::before, .st-pass-stub::after { content: ''; position: absolute; left: -12px; width: 22px; height: 22px; border-radius: 50%; background: var(--bms-page); border: 1px solid var(--bms-line); }
.st-pass-stub::before { top: -12px; border-top-color: transparent; clip-path: inset(50% 0 0 0); }
.st-pass-stub::after { bottom: -12px; border-bottom-color: transparent; clip-path: inset(0 0 50% 0); }
.st-pass-stub .lab { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--bms-muted); }
.st-pass-stub .no { font: 700 30px/1 var(--bms-num); letter-spacing: .04em; color: var(--bms-navy); }
.st-qr { width: 148px; height: 148px; padding: 8px; background: #fff; border: 1px solid var(--bms-line); border-radius: 12px; }
.st-qr svg { width: 100%; height: 100%; display: block; }
.st-pass-actions { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
.st-pass-actions .bms-btn { height: 52px; flex-direction: column; gap: 4px; font-size: 13px; padding: 0 8px; border-radius: 14px; }
.st-pass-actions .bms-btn.wa { background: #1FAF54; color: #fff; }
.st-pass-actions .bms-btn.wa:hover { background: #178F44; color: #fff; }
@media (max-width: 767px) {
  .st-pass { grid-template-columns: 1fr; }
  .st-pass-brand { border-radius: 20px 20px 0 0; }
  .st-pass-stub { border-left: 0; border-top: 2px dashed var(--bms-line-strong); display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: 'no qr' 'hint hint'; align-items: center; gap: 8px 16px; text-align: left; padding: 18px 20px; }
  .st-pass-stub > :nth-child(1) { grid-area: no; } .st-pass-stub > :nth-child(2) { grid-area: qr; } .st-pass-stub > :nth-child(3) { grid-area: hint; text-align: center; }
  .st-pass-stub .no { font-size: 27px; letter-spacing: .02em; }
  .st-pass-stub::before, .st-pass-stub::after { top: -12px; bottom: auto; left: auto; clip-path: none; border: 1px solid var(--bms-line); }
  .st-pass-stub::before { left: -12px; border-color: transparent var(--bms-line) transparent transparent; }
  .st-pass-stub::after { right: -12px; border-color: transparent transparent transparent var(--bms-line); }
  .st-qr { width: 112px; height: 112px; flex: none; }
  .st-pass-route { grid-template-columns: 1fr 1fr; }
  .st-pass-route .mid { display: none; }
  .st-pass-route > div:last-child { text-align: right; }
  .st-pass-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .st-pass-actions .bms-btn { flex-direction: row; gap: 8px; font-size: 14px; }
}

/* ------------------------------------------------------------------ my bookings */
.st-tabs { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.st-tabs::-webkit-scrollbar { display: none; }
.st-bk { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 16px; align-items: center; background: #fff; border: 1px solid var(--bms-line); border-radius: 16px; padding: 16px 18px; color: var(--bms-navy); text-decoration: none; transition: border-color .15s, box-shadow .15s; }
a.st-bk:hover { border-color: var(--bms-red); box-shadow: 0 6px 22px rgba(39,60,79,.10); color: var(--bms-navy); }
.st-bk + .st-bk { margin-top: 12px; }
.st-bk .r1 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 18px; font-weight: 700; }
.st-bk .r1 .bi { color: var(--bms-subtle); }
.st-bk .r2 { display: flex; flex-wrap: wrap; gap: 4px 18px; font-size: 13.5px; color: var(--bms-muted); margin-top: 6px; }
.st-bk .r2 span { display: inline-flex; align-items: center; gap: 6px; }
.st-bk .r2 b { color: var(--bms-navy); font-weight: 600; }
.st-bk .side { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; }
.st-bk .acts { display: flex; gap: 8px; }
.st-soon { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--bms-amber-text); background: var(--bms-amber-bg); padding: 3px 10px; border-radius: 999px; }
.st-hint { display: flex; gap: 10px; align-items: center; padding: 10px 14px; border-radius: 12px; background: var(--bms-blue-bg); color: var(--bms-blue-text); font-size: 13px; margin-bottom: 14px; }
@media (max-width: 767px) {
  .st-bk { grid-template-columns: 1fr; padding: 14px; }
  .st-bk .side { flex-direction: row; align-items: center; justify-content: space-between; }
  .st-bk .r1 { font-size: 16px; }
}

/* ------------------------------------------------------------------ cancel */
.st-cancel-grid { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 24px; align-items: start; padding-top: 22px; }
.st-cpax { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--bms-line); border-radius: 14px; background: #fff; cursor: pointer; margin: 0; }
.st-cpax + .st-cpax { margin-top: 10px; }
.st-cpax input { width: 22px; height: 22px; accent-color: var(--bms-red-700); flex: none; }
.st-cpax:has(input:checked) { border-color: var(--bms-red-700); background: var(--bms-red-50); }
.st-cpax .grow { flex: 1; min-width: 0; }
.st-cpax b { display: block; }
.st-cpax small { color: var(--bms-muted); }
.st-rules { width: 100%; border-collapse: collapse; font-size: 14px; }
.st-rules th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--bms-muted); padding: 10px 14px; background: var(--bms-page); }
.st-rules td { padding: 11px 14px; border-top: 1px solid var(--bms-line); }
.st-rules tr.is-now td { background: var(--bms-green-bg); color: var(--bms-green-text); font-weight: 600; }
.st-refundbox { position: sticky; top: calc(var(--st-head) + 16px); }
.st-refundbox .big { font: 700 34px/1.1 var(--bms-num); color: var(--bms-green-text); }
@media (max-width: 991px) { .st-cancel-grid { grid-template-columns: 1fr; } .st-refundbox { position: static; } }
@media (max-width: 767px) { .st-cancel-grid { padding-bottom: 12px; } .st-refundbox .st-cancel-desktop { display: none; } }

/* ------------------------------------------------------------------ login (OTP) */
.st-login { width: min(440px, 100% - 32px); margin: 40px auto 0; padding: 28px 26px 24px; }
.st-login h1, .st-login h2 { font-size: 24px; font-weight: 700; }
.st-login .lead { color: var(--bms-muted); margin: 6px 0 20px; }
.st-phone { display: flex; align-items: center; height: 56px; border: 1px solid var(--bms-line-strong); border-radius: 14px; overflow: hidden; background: #fff; }
.st-phone:focus-within { border-color: var(--bms-red); box-shadow: var(--bms-ring); }
.st-phone .cc { height: 100%; display: inline-flex; align-items: center; padding: 0 14px; background: var(--bms-page); border-right: 1px solid var(--bms-line); font: 600 16px var(--bms-num); color: var(--bms-navy); }
.st-phone input { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; padding: 0 14px; font: 600 20px var(--bms-num); letter-spacing: .04em; color: var(--bms-navy); background: transparent; }
.st-phone.is-invalid { border-color: var(--bms-red-700); }
.st-otp { width: 100%; height: 60px; border: 1px solid var(--bms-line-strong); border-radius: 14px; text-align: center; font: 700 28px var(--bms-num); letter-spacing: .5em; text-indent: .5em; color: var(--bms-navy); outline: 0; background: #fff; }
.st-otp:focus { border-color: var(--bms-red); box-shadow: var(--bms-ring); }
.st-otp.is-ok { border-color: var(--bms-green); background: var(--bms-green-bg); }
.st-or { display: flex; align-items: center; gap: 12px; margin: 18px 0; color: var(--bms-subtle); font-size: 12px; text-transform: uppercase; letter-spacing: .06em; }
.st-or::before, .st-or::after { content: ''; flex: 1; height: 1px; background: var(--bms-line); }
.st-social-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.st-step { display: none; }
.st-step.is-on { display: block; }
.st-login form .bms-btn { margin-top: 12px; }
.st-keep { display: flex; align-items: center; gap: 10px; margin-top: 14px; font-size: 14px; color: var(--bms-muted); }
.st-keep input { accent-color: var(--bms-red); width: 18px; height: 18px; }
.st-timer { font: 600 13px var(--bms-num); color: var(--bms-muted); }

/* ------------------------------------------------------------------ profile */
.st-prof-grid { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 24px; align-items: start; padding-top: 22px; }
.st-prof-side { position: sticky; top: calc(var(--st-head) + 16px); }
.st-bigavatar { width: 76px; height: 76px; border-radius: 50%; background: var(--bms-red-50); color: var(--bms-red-700); display: inline-flex; align-items: center; justify-content: center; font: 700 28px var(--bms-font); }
.st-sidelinks { display: grid; gap: 2px; margin-top: 16px; }
.st-sidelinks a { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px; border-radius: 10px; color: var(--bms-navy); font-weight: 500; text-decoration: none; }
.st-sidelinks a:hover { background: var(--bms-page); color: var(--bms-navy); }
.st-sidelinks a.is-on { background: var(--bms-red-50); color: var(--bms-red-700); font-weight: 600; }
.st-wallet { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 18px 20px; border-radius: var(--bms-r-card); background: linear-gradient(135deg, var(--bms-navy), #3a556f); color: #fff; }
.st-wallet small { display: block; font-size: 12px; opacity: .8; }
.st-wallet b { font: 700 28px var(--bms-num); }
.st-wallet .grow { flex: 1; min-width: 160px; }
.st-paxrow { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--bms-line); }
.st-paxrow:last-child { border-bottom: 0; }
.st-paxrow .grow { flex: 1; min-width: 0; }
.st-paxrow b { display: block; }
.st-paxrow small { color: var(--bms-muted); }
@media (max-width: 991px) { .st-prof-grid { grid-template-columns: 1fr; } .st-prof-side { position: static; } }

/* ------------------------------------------------------------------ policies (documents) */
.st-doc-grid { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 28px; align-items: start; padding-top: 22px; }
.st-toc { position: sticky; top: calc(var(--st-head) + 16px); display: grid; gap: 2px; }
.st-toc a { display: flex; align-items: center; min-height: 42px; padding: 0 14px; border-radius: 10px; color: var(--bms-navy); text-decoration: none; font-weight: 500; }
.st-toc a:hover { background: #fff; color: var(--bms-navy); }
.st-toc a.is-on { background: #fff; border: 1px solid var(--bms-line); font-weight: 600; box-shadow: inset 3px 0 0 var(--bms-red); }
.st-doc { padding: 28px 32px; }
.st-doc h2 { font-size: 24px; margin-bottom: 4px; }
.st-doc h3 { font-size: 17px; margin: 24px 0 8px; }
.st-doc p, .st-doc li { color: #3C4C5C; line-height: 1.7; }
.st-doc ul { padding-left: 20px; margin: 8px 0; }
@media (max-width: 991px) { .st-doc-grid { grid-template-columns: 1fr; } .st-toc { position: static; display: flex; overflow-x: auto; } .st-toc a { white-space: nowrap; } }
@media (max-width: 767px) { .st-doc { padding: 20px 18px; } }

/* ------------------------------------------------------------------ track bus */
.st-track-grid { display: grid; grid-template-columns: 380px minmax(0, 1fr); gap: 24px; align-items: start; padding-top: 22px; }
.st-trackmap { position: relative; aspect-ratio: 800 / 560; border-radius: var(--bms-r-card); overflow: hidden; border: 1px solid var(--bms-line); background: #E6ECE9; }
.st-trackmap svg.bg { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; }
.st-buspin { position: absolute; transform: translate(-50%, -100%); display: flex; flex-direction: column; align-items: center; }
.st-buspin .lab { background: var(--bms-navy); color: #fff; font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 999px; white-space: nowrap; margin-bottom: 4px; box-shadow: 0 4px 12px rgba(16,24,40,.25); }
.st-buspin .pin { width: 44px; height: 44px; border-radius: 50%; background: var(--bms-red); color: #fff; display: inline-flex; align-items: center; justify-content: center; border: 3px solid #fff; box-shadow: 0 6px 16px rgba(16,24,40,.3); position: relative; }
.st-buspin .pin::after { content: ''; position: absolute; inset: -9px; border-radius: 50%; border: 2px solid var(--bms-red); opacity: .5; animation: st-pulse 1.8s ease-out infinite; }
@keyframes st-pulse { from { transform: scale(.7); opacity: .6; } to { transform: scale(1.35); opacity: 0; } }
.st-timeline { list-style: none; margin: 0; padding: 0; }
.st-timeline li { position: relative; display: flex; gap: 14px; padding: 0 0 22px 0; }
.st-timeline li::before { content: ''; position: absolute; left: 10px; top: 22px; bottom: 0; width: 2px; background: var(--bms-line-strong); }
.st-timeline li:last-child::before { display: none; }
.st-timeline .dot { flex: none; width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--bms-line-strong); background: #fff; display: inline-flex; align-items: center; justify-content: center; z-index: 1; }
.st-timeline li.is-done .dot { background: var(--bms-green); border-color: var(--bms-green); color: #fff; }
.st-timeline li.is-done::before { background: var(--bms-green); }
.st-timeline li.is-next .dot { border-color: var(--bms-red); box-shadow: var(--bms-ring); }
.st-timeline li .nm { font-weight: 600; }
.st-timeline li small { display: block; color: var(--bms-muted); font-size: 12.5px; }
.st-timeline li .tm { margin-left: auto; font: 600 14px var(--bms-num); white-space: nowrap; }
.st-eta { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
.st-eta .big { font: 700 34px/1 var(--bms-num); }
@media (max-width: 991px) { .st-track-grid { grid-template-columns: 1fr; } .st-trackmap { order: -1; } }
@media (max-width: 767px) { .st-trackmap svg text { font-size: 24px; stroke-width: 6px; } .st-trackmap .opt { display: none; } .st-buspin .lab { font-size: 10.5px; padding: 3px 8px; } .st-buspin .pin { width: 34px; height: 34px; } .st-buspin .pin svg { width: 18px; height: 18px; } }

/* ------------------------------------------------------------------ error pages */
.st-errpage { min-height: 70vh; display: flex; align-items: center; justify-content: center; padding: 40px 16px; text-align: center; }
.st-errcard { width: min(520px, 100%); background: #fff; border: 1px solid var(--bms-line); border-radius: 20px; padding: 40px 28px; }
.st-errcard h1 { font-size: 26px; margin-bottom: 8px; }
.st-errcard p { color: var(--bms-muted); }

/* ------------------------------------------------------------------ toast + lightbox */
.st-toast { position: fixed; left: 50%; bottom: 84px; transform: translate(-50%, 20px); z-index: 90; background: var(--bms-navy); color: #fff; padding: 12px 18px; border-radius: 12px; font-size: 14px; font-weight: 500; opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; max-width: calc(100vw - 32px); box-shadow: 0 12px 32px rgba(16,24,40,.3); }
.st-toast.is-on { opacity: 1; transform: translate(-50%, 0); }
.st-lightbox { position: fixed; inset: 0; z-index: 100; background: rgba(10, 16, 24, .92); display: none; flex-direction: column; align-items: center; justify-content: center; padding: 20px; }
.st-lightbox.is-on { display: flex; }
.st-lightbox .stage { width: min(960px, 100%); max-height: 72vh; display: flex; align-items: center; justify-content: center; }
.st-lightbox .stage svg, .st-lightbox .stage img { width: 100%; height: auto; max-height: 72vh; border-radius: 14px; }
.st-lightbox .cap { color: #fff; margin-top: 14px; text-align: center; }
.st-lightbox .cap small { display: block; color: #AEBBC8; margin-top: 2px; }
.st-lightbox button { position: absolute; width: 48px; height: 48px; border-radius: 50%; border: 0; background: rgba(255,255,255,.14); color: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.st-lightbox button:hover { background: rgba(255,255,255,.28); }
.st-lightbox .x { top: 16px; right: 16px; } .st-lightbox .pv { left: 16px; top: 50%; } .st-lightbox .nx { right: 16px; top: 50%; }
.st-chip-w { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 11px; border-radius: 999px; font-size: 12px; font-weight: 600; background: var(--bms-grey-bg); color: var(--bms-grey-text); }

/* ------------------------------------------------------------------ blocks used on both frontends (moved from the BMS file) */
/* book again (logged in) */
.st-again { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.st-again a { display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid var(--bms-line); border-left: 4px solid var(--bms-red); border-radius: 14px; padding: 14px 16px; text-decoration: none; color: var(--bms-navy); min-height: 68px; }
.st-again a:hover { box-shadow: 0 6px 22px rgba(39,60,79,.10); color: var(--bms-navy); }
.st-again b { display: block; font-size: 15px; }
.st-again small { color: var(--bms-muted); font-size: 12.5px; }
.st-again .go { margin-left: auto; color: var(--bms-red-700); font-weight: 600; font-size: 13px; display: inline-flex; align-items: center; gap: 4px; }
.st-upnext { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 16px 20px; border-radius: 16px; background: var(--bms-navy); color: #fff; text-decoration: none; margin-bottom: 16px; }
.st-upnext:hover { color: #fff; }
.st-upnext .grow { flex: 1; min-width: 200px; }
.st-upnext small { display: block; color: #AEBBC8; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; font-weight: 600; }
.st-upnext b { font-size: 18px; }
.st-upnext .bms-btn { background: #fff; color: var(--bms-navy); }

.st-steps3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; counter-reset: s; }
.st-steps3 .st-tile { position: relative; padding-top: 52px; }
.st-steps3 .st-tile::before { counter-increment: s; content: counter(s); position: absolute; left: 20px; top: 16px; width: 28px; height: 28px; border-radius: 50%; background: var(--bms-red); color: #fff; font: 700 14px var(--bms-num); display: inline-flex; align-items: center; justify-content: center; }
.st-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; justify-content: space-between; padding: 28px 32px; border-radius: 20px; background: var(--bms-red-50); border: 1px solid var(--bms-red-200); }
.st-cta h3 { font-size: 22px; }
.st-cta p { color: var(--bms-muted); margin-top: 4px; }
@media (max-width: 991px) { .st-again, .st-steps3 { grid-template-columns: 1fr; } }
@media (max-width: 767px) { .st-cta { padding: 20px; } .st-upnext .grow { min-width: 0; } }
/* clickable whole card with other links inside: the heading link covers the card, inner links sit above it */
.st-stretch { position: relative; }
.st-stretch .st-main-link::after { content: ''; position: absolute; inset: 0; z-index: 0; border-radius: inherit; }
.st-stretch .ag-dep, .st-stretch .bms-btn { position: relative; z-index: 1; }
/* the date button covers the whole date field, so the tap target is the whole box */
.st-fld-date .st-fld-val::after { content: ''; position: absolute; inset: 0; }
/* links in lists get a real tap height (they were text-height) */
.st-footer ul { gap: 0; }
.st-footer li a, .st-contact-line a { display: inline-flex; align-items: center; min-height: 32px; }
@media (max-width: 767px) { .st-footer li a { min-height: 38px; } }

/* ------------------------------------------------------------------ small and short phones
   Checked on 320, 340, 360, 375, 390 and 412 px wide, 568 to 915 px high (Chromium, Firefox, WebKit).
   360 px is the commonest Android width; 320-340 px happens when people enlarge the system text or display size. */
@media (max-width: 374px) {
  .st-header-in, .st-tools { gap: 8px; }
}
@media (max-width: 359px) {
  .st-tools .st-iconlink { display: none; }   /* "My bookings" is also in the bottom bar and in the menu */
}
/* iPhone Safari zooms the whole page when a field with text under 16 px gets focus: phone fields are 16 px */
@media (max-width: 767px) {
  .bms-ui.site .bms-input, .bms-ui.site .bms-select, .bms-ui.site .bms-textarea, .bms-ui.site .bms-input-sm,
  .bms-ui.site .bms-inputs input, .bms-ui.site .bms-inputs select { font-size: 16px; }
}
/* short phones (the browser's own bars take about 100 px): the bottom box of the seat sheet is one row high so the seat map gets the room */
@media (max-width: 767px) and (max-height: 759px) {
  .st-tripbar { gap: 4px; padding-bottom: 4px; }
  .st-pbox:not(.is-login) { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .st-pbox:not(.is-login) .p-head { grid-column: 2; grid-row: 1; padding: 8px 14px 0 4px; }
  .st-pbox:not(.is-login) .p-head b { display: none; }
  .st-pbox:not(.is-login) .p-body { grid-column: 1; grid-row: 1; padding: 8px 4px 0 14px; min-width: 0; }
  .st-pbox:not(.is-login) .p-foot { grid-column: 1 / -1; grid-row: 2; padding-top: 6px; }
  .st-pbox .p-foot .bms-btn { min-height: 48px; }
}


/* ================================================================== part 3: Phase 1 additions */
.st-skip { position: absolute; left: 12px; top: -60px; z-index: 100; padding: 10px 16px; border-radius: 10px; background: var(--bms-navy); color: #fff !important; font-weight: 600; text-decoration: none; }
.st-skip:focus { top: 10px; }
/* the header's two switches are links (they work without the page's script) */
.st-mini-seg a { display: inline-flex; align-items: center; border: 0; background: #fff; color: var(--bms-muted); padding: 0 11px; font: 600 12px var(--bms-font); cursor: pointer; text-decoration: none; }
.site .st-mini-seg a:hover { color: var(--bms-navy); }
.site .st-mini-seg a.is-on, .site .st-mini-seg a.is-on:hover { background: var(--bms-navy); color: #fff; }
.st-mini-seg a[lang="ne"] { font-family: 'Noto Sans Devanagari', var(--bms-font); font-size: 13px; }
.st-previewnote { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 8px 16px; background: var(--bms-amber-bg); color: var(--bms-amber-text); font-size: 13px; font-weight: 600; text-align: center; }
.st-footlogo { display: inline-block; background: #fff; border-radius: 10px; padding: 8px 12px; }
.st-footlogo img { height: 34px; width: auto; display: block; }
.st-foottext { margin-top: 14px !important; max-width: 36ch; }
.st-rate-n { font-weight: 500; opacity: .8; }
.st-upper { text-transform: uppercase; letter-spacing: .04em; }
.st-h2s { margin: 0 0 8px; font-size: 22px; }
.st-contactcard { padding: 8px 22px; }
.st-formcard { padding: 22px; margin: 0 !important; }
.st-formcard h2 { font-size: 20px; margin-bottom: 14px; }
.st-errbox { padding: 34px 28px 28px; text-align: center; }
.st-errbox h1 { font-size: 24px; margin-top: 4px; }
.st-errbox .st-muted { margin-top: 6px; }
.st-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.st-soonline { margin-top: 18px !important; color: #D6DFE8; }
/* results: filters as links that look like the design's check boxes */
.site a.st-checklink { color: var(--bms-navy); text-decoration: none; }
.st-checklink .box { width: 18px; height: 18px; flex: none; border: 1.5px solid var(--bms-line-strong); border-radius: 5px; background: #fff; display: inline-flex; align-items: center; justify-content: center; color: #fff; }
.st-checklink.is-on .box { background: var(--bms-red); border-color: var(--bms-red); }
.st-checklink:hover .box { border-color: var(--bms-red); }
.st-pricego { flex: none; width: 40px; padding: 0; min-height: 40px !important; }
.st-filters .bms-addon { padding: 0 9px; }
/* the date strip shows two weeks: each day keeps its date on one line */
.st-day .dd { white-space: nowrap; }
@media (min-width: 768px) { .st-datestrip .st-day { flex: 1 0 118px; } }
.st-filters form.st-row { gap: 8px; }
.st-filters .bms-inputs input { width: 100%; }
.site a.bms-pill { text-decoration: none; }
/* seats: boarding / dropping points open a list in the page (never a pop-up) */
.st-pointdd { position: relative; min-width: 0; }
.st-pointdd > summary { list-style: none; }
.st-pointdd > summary::-webkit-details-marker { display: none; }
.st-pointdd[open] > summary { border-color: var(--bms-red); box-shadow: var(--bms-ring); }
.st-pointdd[open] .chev .bi { transform: rotate(180deg); }
.st-pointlist { margin-top: 6px; border: 1px solid var(--bms-line); border-radius: 12px; background: #fff; padding: 6px; max-height: 280px; overflow-y: auto; box-shadow: var(--bms-shadow-pop); }
.st-pointlist a { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 6px 10px; border-radius: 9px; color: var(--bms-navy); text-decoration: none; font-weight: 500; font-size: 14px; }
.st-pointlist a .n { color: var(--bms-muted); font-size: 13px; min-width: 42px; }
.st-pointlist a:hover { background: var(--bms-page); color: var(--bms-navy); }
.st-pointlist a.is-on { background: var(--bms-red-50); color: var(--bms-red-700); font-weight: 600; }
.st-points.is-loading, .st-seatcard.is-loading { opacity: .6; pointer-events: none; }
.st-seats-back { padding-top: 16px; }
.st-seats-back a { display: inline-flex; align-items: center; gap: 4px; }
/* the price box's foot in Phase 1: the total and "Booking opens in Phase 2" (no button that does nothing) */
.st-cont { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.st-cont-tot small { display: block; font-size: 12px; color: var(--bms-muted); }
.st-cont-tot b { font: 700 22px var(--bms-num); }
.st-soon { display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 16px; border-radius: var(--bms-r); border: 1.5px dashed var(--bms-line-strong); background: var(--bms-page); color: var(--bms-muted); font-size: 14px; font-weight: 600; }
.st-seatchip .bi { pointer-events: none; }
.st-seatcard .sm-cell.is-blocked { cursor: not-allowed; }
@media (max-width: 767px) {
  .st-pbox .p-foot .st-cont { flex-wrap: nowrap; }
  .st-soon { min-height: 44px; padding: 0 12px; font-size: 13px; }
  .st-pointlist { position: absolute; left: 0; right: 0; z-index: 6; }
}
/* the results page's seat sheet on a phone (opened over the results) */
.st-sheet-open { overflow: hidden; }
#sheetHost .st-seats-grid { animation: st-up .22s ease-out; }
@keyframes st-up { from { transform: translateY(40px); opacity: .4; } to { transform: none; opacity: 1; } }
@media (min-width: 768px) { #sheetHost { display: none; } }
@media (prefers-reduced-motion: reduce) { #sheetHost .st-seats-grid { animation: none; } html { scroll-behavior: auto; } }
