/* V3: theme colours and a readable type scale for the standalone pages. */
body{background:var(--paper);color:var(--ink);font-size:1rem;line-height:1.6}
.topbar{background:var(--header);color:var(--header-ink);border-bottom:1px solid var(--line)}
.topbar .light,.brand small,.private-label{color:var(--header-muted)}.brand-mark,.btn.primary{color:#18221b}.gold{color:var(--accent)}
.btn,.icon-btn{background:var(--control);color:var(--ink)}.btn:hover,.trip-item:hover{background:var(--hover)}.btn.primary{background:var(--gold);border-color:var(--gold)}.btn.primary:hover{background:#f7d78e}.btn.dark{background:var(--strong);border-color:var(--input-line);color:var(--strong-ink)}
.card{box-shadow:0 8px 28px var(--shadow)}.trip-item{background:var(--white)}.trip-item.selected{background:var(--selected);border-color:var(--selected-border)}
.trip-item-time,.private-note,.note-card p,.privacy-note,.footer,.chip,.link-preview{color:var(--muted)}.chip,.date-strip,.gps-line{background:var(--soft)}
.status-badge{color:var(--accent);background:var(--gold-soft)}.status-badge.completed,.status-badge.onboard,.live-pill.live,.gps-line.good{background:var(--green-soft);color:var(--green)}.status-badge.cancelled,.notice.error,.inline-error{background:var(--red-soft);color:var(--red)}.live-pill{background:var(--soft);color:var(--muted)}.gps-line.bad{background:var(--warning-soft);color:var(--warning)}
.notice{border-color:var(--selected-border);background:var(--gold-soft);color:var(--accent)}.tracking-notice,.no-coordinates{color:var(--accent)}.large-symbol,.note-icon{color:var(--accent)}
.driver-avatar{background:var(--gold-soft);color:var(--accent)}.map-pin.dest{background:#304c3c;color:#fff}.map{background:var(--map)}.progress-step{color:var(--muted)}.progress-step:before,.progress-step:after{background:var(--line)}.route-point:first-child:after{border-color:var(--input-line)}.progress-step.active:before{background:var(--gold)}
input,select,textarea{background:var(--input);border-color:var(--input-line);color:var(--ink)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}input:focus,select:focus,textarea:focus{border-color:var(--selected-border)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline-color:var(--accent)}
dialog{background:var(--white);box-shadow:0 25px 110px #0006}dialog::backdrop{background:#101811aa}.address-results button{color:var(--ink)}
#toast{background:var(--strong);border:1px solid var(--input-line);color:var(--strong-ink)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--white);color:var(--ink)}.leaflet-bar a,.leaflet-bar a:hover{background:var(--control);color:var(--ink);border-color:var(--input-line)}.leaflet-control-attribution{background:var(--white)!important;color:var(--muted)}.map .leaflet-control-attribution a{color:var(--ink)}
.map-service-notice{position:absolute;z-index:800;top:12px;left:55px;right:12px;background:var(--white);border:1px solid var(--input-line);border-radius:9px;color:var(--ink);font-size:.875rem;line-height:1.5;padding:10px 12px;pointer-events:none}
.bdst-mapbox-logo{display:block;line-height:0;margin-bottom:2.8rem!important}.bdst-mapbox-logo img{display:block;width:88px;height:23px}.leaflet-bottom.leaflet-right{max-width:100%}.leaflet-control-attribution{font-size:.7rem!important;line-height:1.4!important;padding:3px 6px;max-width:100%}
.voucher-panel{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:19px;padding:22px 24px;border-left:3px solid var(--gold)}.voucher-panel h2{margin:6px 0 8px}.voucher-panel .btn{flex-shrink:0}.voucher-panel p{max-width:540px}
.voucher-fields{min-width:0;margin:0;border:1px solid var(--selected-border);border-radius:13px;padding:18px;background:var(--gold-soft)}.voucher-fields legend{padding:0 8px;font-weight:700;color:var(--accent)}.voucher-fields>.small-text:last-child{margin-top:16px}.voucher-fields>.text-link{color:var(--accent);margin:9px 0}.voucher-fields .form-grid{gap:18px}
/* Every meaningful label, action, address and supporting text scales with the setting. */
h1,.passenger-hero h1{font-size:2.25rem;line-height:1.17;letter-spacing:-.04em}.dashboard-intro h1{font-size:2rem}
h2,.reservations h2,.journey-card h2,.track-heading h2,.map-heading h2,.voucher-panel h2{font-size:1.2rem;line-height:1.35}h3{font-size:1rem}
.detail-title h2,.dialog-heading h2{font-size:1.55rem}.driver-ident h2{font-size:1.125rem}
.brand{font-size:1.5rem}.brand small{font-size:.625rem;letter-spacing:.13em}.brand-mark{font-size:35px}.brand-mark span{font-size:23px}
.btn,.contact-buttons .btn,.track-actions .btn,.share-row .btn{font-size:1rem;min-height:48px;line-height:1.4;padding:12px 16px}.btn.small,.detail-edit .btn{font-size:.875rem;min-height:44px;padding:10px 13px}.icon-btn{font-size:1.5rem;min-width:44px;min-height:44px}
.text-link,.pagination button,.tracking-meta button,.secondary-actions,.topbar .text-link{font-size:.875rem;line-height:1.5;min-height:40px;display:inline-flex;align-items:center}.text-link{color:inherit}
input,select,textarea,.reservations input,.filter-row select,.eta-form input{font-size:1rem;line-height:1.5;padding:12px;min-height:48px}input[type=datetime-local]{width:100%;min-width:0;min-height:48px}
.form-grid label,.voucher-fields legend,.eta-form label{font-size:1rem;line-height:1.5}.form-grid label small,.small-text,small{font-size:.875rem;line-height:1.55}
.eyebrow,.detail-title .eyebrow,.date-strip .eyebrow,.dashboard-intro .eyebrow,.passenger-hero .eyebrow{font-size:.75rem;line-height:1.5;letter-spacing:.11em}
.private-label,.count,.status-badge,.trip-item .status-badge,.live-pill{font-size:.8125rem;line-height:1.4}.live-pill,.status-badge{white-space:normal}
.passenger-hero p:not(.eyebrow),.dashboard-intro .muted,.trip-item-head strong,.detail-journey p,.route-point p,.note-card p,.vehicle-name,.map-message{font-size:1rem;line-height:1.6}
.trip-item-head{flex-wrap:wrap;align-items:flex-start}.trip-item-time,.trip-item-address,.journey-chips .chip,.detail-chips .chip,.chip,.pagination,.private-note,.gps-line,.inline-error,.notice.compact,.notice,.eta-form .muted,.address-results button,.address-results p,.map-picker-details{font-size:.875rem;line-height:1.6}
.trip-item-address{white-space:normal;overflow-wrap:anywhere}.trip-item-head strong{overflow-wrap:anywhere}.link-preview{font-size:.75rem}
.route-point small,.driver-ident p,.price-row,.tracking-meta,.coord-state,.no-coordinates,.tracking-notice,.progress-step,.privacy-note,.footnote,.footer,#toast{font-size:.8125rem;line-height:1.6}
.date-strip strong{font-size:1rem}.date-strip>strong{font-size:1.65rem;letter-spacing:-.04em}.price-row strong{font-size:1.125rem}.plate{font-size:.875rem}.driver-avatar{font-size:1.2rem}
.empty,.loading-state,.map-error{font-size:1rem}.section-heading{gap:16px}.route-dot{margin-top:9px}.contact-buttons{flex-wrap:wrap}.contact-buttons .btn{flex:1 1 120px}
.share-row,.track-actions,.detail-edit{flex-wrap:wrap}.detail-edit{flex-shrink:1}.driver-grid{grid-template-columns:340px minmax(0,1fr)}.detail-title{flex-wrap:wrap}.map-heading,.track-heading{flex-wrap:wrap}.track-actions .btn{min-width:180px}.eta-form input{width:94px}
.voucher-panel{flex-wrap:wrap}.voucher-panel>div{flex:1 1 290px;min-width:0}.voucher-panel .btn{white-space:normal}.map-heading .live-pill{max-width:100%}.progress-steps{padding-left:0;padding-right:0}.progress-step{overflow-wrap:anywhere}
@media(max-width:1100px){.driver-grid{grid-template-columns:290px minmax(0,1fr)}.passenger-grid{grid-template-columns:minmax(0,1.2fr) minmax(310px,1fr)}.dashboard-intro{flex-wrap:wrap}.topbar{flex-wrap:wrap}}
@media(max-width:900px){.passenger-grid{display:flex;flex-direction:column}.passenger-left,.passenger-right{width:100%}.passenger-map{height:340px}}
@media(max-width:760px){.driver-grid{display:flex;flex-direction:column}.reservations,.trip-detail{width:100%}.trip-list{max-height:390px}.dashboard{padding:25px 18px;margin:0}.dashboard-intro{display:block}.dashboard-intro>.btn{width:100%;margin-top:18px}.dashboard-intro h1{font-size:1.8rem}.passenger-hero h1{font-size:1.85rem}.voucher-panel{align-items:stretch;flex-direction:column;gap:15px;padding:20px}.voucher-panel>div{flex:auto}.voucher-panel .btn{width:100%}.voucher-fields{padding:15px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.topbar{gap:14px}.brand{font-size:1.35rem}.topbar-right{margin-left:auto}.passenger-map{height:330px}.detail-journey{grid-template-columns:1fr;gap:15px}.map-heading{flex-wrap:wrap}.contact-buttons .btn{font-size:1rem}.tracking-meta{align-items:flex-start;flex-wrap:wrap}.driver-map{height:300px}.filter-row select{font-size:.875rem}.dialog-heading h2{font-size:1.4rem}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}.share-row .btn{flex:1 1 90px}}
@media(max-width:390px){.date-strip{flex-wrap:wrap}.private-label{font-size:.75rem}.track-actions .btn{flex-basis:100%}.detail-edit{width:100%}.detail-edit .btn{flex:1}.topbar .brand{max-width:100%}.brand-logo{max-width:180px}.passenger-main,.dashboard{padding-left:14px;padding-right:14px}}
/* Native form controls must shrink inside the grid at the largest text size. */
.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid>*{min-width:0;max-width:100%}.form-grid input,.form-grid select,.form-grid textarea{width:100%;min-width:0}.form-grid label{min-width:0}.voucher-fields legend{max-width:100%;overflow-wrap:anywhere}.picker-toolbar{flex-wrap:wrap}
@media(max-width:760px){.form-grid{grid-template-columns:minmax(0,1fr)}}

/* Review invitation: follows the selected palette and text size. */
.review-card{display:flex;align-items:center;gap:1.5rem;margin-top:1.5rem;border-color:var(--accent);padding:1.5rem}
.review-card>div{flex:1;min-width:0}.review-card h2{font-size:1.35rem;margin:.4rem 0}.review-card p{line-height:1.65;margin:.6rem 0}
.review-card .btn{flex-shrink:0;white-space:normal;text-align:center}
#review-dialog{width:calc(100% - 2rem);max-width:32rem;max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);padding:0;overflow:auto;border:1px solid var(--line);border-radius:22px;color:var(--ink);background:var(--white)}
#review-dialog::backdrop{background:rgba(0,0,0,.58);backdrop-filter:blur(4px)}
.review-dialog-body{padding:1.6rem}.review-dialog-body .dialog-heading{padding:0;margin:0 0 1rem;border:0;gap:1rem;align-items:center}
.review-dialog-body .dialog-heading .eyebrow{margin:0;line-height:1.6}.review-dialog-body .icon-btn{flex-shrink:0;min-width:44px;min-height:44px}
.review-symbol{display:grid;place-items:center;width:3.5rem;height:3.5rem;background:var(--gold);color:#18261d;border-radius:1rem;font-size:2rem;margin-bottom:1.2rem}
#review-title{font-size:1.7rem;line-height:1.25;margin:0 0 1rem;overflow-wrap:anywhere}
#review-message{font-size:1rem;line-height:1.65;margin:0 0 1.5rem}
#review-link{display:flex;width:100%;min-height:52px;white-space:normal;text-align:center}
#review-new-tab{font-size:.8125rem;line-height:1.6;margin:1rem 0}
#review-later{display:block;width:100%;padding:.6rem;min-height:44px;text-align:center;font-size:.9375rem}
@media(max-width:900px){.review-card{align-items:stretch;flex-direction:column;gap:.5rem}.review-card .btn{width:100%}}
@media(max-width:400px){.review-dialog-body{padding:1.2rem}#review-title{font-size:1.5rem}}
.private-label span[data-i18n]{display:inline;font-size:inherit;color:inherit}
@media(max-width:480px){.progress-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}.progress-step{display:flex;align-items:center;gap:10px;text-align:left;overflow-wrap:normal}.progress-step:before{margin:0;flex-shrink:0}.progress-step:after{display:none}}

.logout-form{margin:0;display:inline-flex}.logout-form .text-link,#install-help{background:none;border:0;padding:0;cursor:pointer;color:var(--header-muted)}.topbar-right{flex-wrap:wrap}#session-notice a{font-weight:700;text-decoration:underline}#install-dialog{width:calc(100% - 2rem);max-width:36rem;line-height:1.65;color:var(--ink)}#install-dialog h3{margin:22px 0 8px}#install-dialog ol{padding-left:1.35rem}#install-dialog li{margin:10px 0}#install-dialog p{margin:12px 0}#install-native{margin:16px 0}#install-dialog .dialog-heading{gap:18px}#install-dialog .icon-btn{flex-shrink:0}.logout-form input[type=hidden]{display:none}
