/* Shared geometry and fluid type for public and role pages. */
:root{
 --bst-text:clamp(1rem,.9643rem + .1786vw,1.125rem);
 --bst-label:clamp(.9375rem,.9196rem + .0893vw,1rem);
 --bst-caption:clamp(.875rem,.8393rem + .1786vw,1rem);
 --bst-title:clamp(1.375rem,1.125rem + 1.25vw,2.25rem);
 --bst-heading:clamp(1.1875rem,1.0089rem + .8929vw,1.8125rem);
 --bst-subheading:clamp(1.0625rem,.9732rem + .4464vw,1.375rem);
 --bst-gutter:clamp(12px,2.2223vw,32px);
 --bst-panel-space:clamp(16px,2vw,28px);
}
body{font-family:Arial,Helvetica,sans-serif;font-size:var(--bst-text);line-height:1.5;min-height:100dvh}
html{width:100%;overflow-x:visible;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{width:100%;min-width:0;overflow-x:visible}
html.portal-checking main{visibility:hidden}
body .shell,body .dashboard-shell,body .page-shell,body .syndicate-dashboard-page,body .passenger-flow-shell{width:100%;max-width:1200px;margin-inline:auto;padding:clamp(16px,2vw,28px) var(--bst-gutter) 48px;min-width:0}
body.bst-internal-page .shell{padding-top:clamp(16px,2vw,28px)}
body .passenger-flow-shell{max-width:1000px}body .contact-shell{max-width:800px}
body .panel,body.bst-internal-page .panel{width:100%;padding:var(--bst-panel-space);border:1px solid #dbe6d3;border-radius:18px;min-width:0}
body .auth-panel{max-width:480px;margin-inline:auto}
body .dash-head,body .page-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
body .dash-head>div,body .page-header>div{min-width:0}
body .dash-head h1,body .dash-head h2,body h1,body h2,body h3{overflow-wrap:anywhere}
body .dash-head>a,body .dash-head>button{width:auto;min-width:0}
body a.primary,body a.secondary,body a.back,body a.danger{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-height:44px;line-height:1.4}
body button,body input,body select,body textarea{font:inherit;min-width:0;max-width:100%;box-sizing:border-box}body input,body select,body textarea{font-size:16px}
body button{min-height:44px;white-space:normal;overflow-wrap:anywhere}body label{min-width:0}
body form{min-width:0}body input:not([type=checkbox]):not([type=radio]),body select,body textarea{width:100%}
body input[type=checkbox],body input[type=radio]{width:20px;min-height:20px;flex:0 0 20px}
body .inline-actions,body .trip-page-nav,body .page-nav{display:flex;flex-wrap:wrap;gap:10px}
body .inline-actions>*,body .trip-page-nav>*{width:auto;min-width:0;max-width:100%}
body .driver-action-grid,body .admin-quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(165px,100%),1fr))!important;gap:12px}
body .driver-action-grid>*,body .admin-quick-actions>*{width:100%;min-width:0}
body .driver-admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))!important}
body .connected-data-results,body .data-table-wrap,body .blacklist-scroll,body .station-scroll-list{max-width:100%;min-width:0;overflow:auto}
body table{border-collapse:collapse;width:100%}body th,body td{text-align:start;padding:10px;vertical-align:top}body td{overflow-wrap:anywhere}
body .connected-data-results table,body .data-table-wrap table{min-width:600px}
body .message:empty{display:none}body [hidden]{display:none!important}
body .admin-compact-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:900px;gap:16px}
body .admin-compact-form>button,body .admin-compact-form>.message,body .admin-compact-form>.regulation-box{grid-column:1/-1}
body .admin-compact-form label:has(textarea){grid-column:1/-1}
body .passenger-flow-shell .traveler-field{grid-template-columns:repeat(2,minmax(0,1fr))}
body .traveler-field h3{grid-column:1/-1}
body .trip-search-form{display:grid;grid-template-columns:minmax(0,2fr) minmax(160px,1fr) auto;gap:12px;align-items:end;max-width:none}
body .trip-search-results,body .trip-ticket-list{display:grid;gap:10px;margin:18px 0}
body .trip-choice{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;text-align:start;padding:16px;border:1px solid #dbe6d3;border-radius:12px;background:#f8fbf5;color:#173500}
body .trip-choice strong{grid-column:1/-1}body .trip-choice span{overflow-wrap:anywhere}
body .trip-search-pagination,body .trip-ticket-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
body .trip-search-pagination button,body .trip-ticket-heading button{width:auto}
body .trip-ticket-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid #dbe6d3;border-radius:12px}
body .trip-ticket-row>div{display:grid;gap:5px;min-width:0;overflow-wrap:anywhere}
body .ticket-state{padding:5px 9px;border-radius:8px;background:#eef3e9;font-size:14px;white-space:nowrap}
body .ticket-state.checked_in{color:#245c18;background:#e0f2d1}body .ticket-state.invalid{color:#9b2525;background:#ffe9e9}
body .scan-alternatives{margin:16px 0}body .scan-alternatives summary{cursor:pointer;padding:12px 0;font-weight:650}body .scan-alternatives label{margin:12px 0 6px}
body #offlineControlPanel #offlineStartCamera{min-height:52px;font-size:18px}body #offlineControlPanel video{display:block;width:100%;max-height:420px;object-fit:contain;background:#152010;margin:14px 0;border-radius:12px}body #offlineControlPanel video.hidden{display:none}
@media(min-width:901px){body .driver-scroll-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}body .driver-scroll-list>.dashboard-card{margin:0}body .passenger-results-page .passenger-results-shell{max-width:1200px}}
@media(max-width:760px){body .shell,body .page-shell,body .dashboard-shell,body .syndicate-dashboard-page,body .passenger-flow-shell{padding:12px 12px 32px}body .panel{padding:16px;border-radius:14px}body .driver-action-grid,body .admin-quick-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}body .admin-compact-form{grid-template-columns:1fr!important}body .driver-admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}body .trip-search-form{grid-template-columns:1fr}body .trip-choice{grid-template-columns:1fr}body .trip-ticket-row{align-items:flex-start;flex-wrap:wrap}body .passenger-flow-shell .traveler-field{grid-template-columns:1fr}body .passenger-offer-detail dl,body .passenger-flow-shell .passenger-offer-detail dl{grid-template-columns:1fr}body .passenger-flow-shell .page-nav .back{width:auto;background:transparent;padding:0}body .public-search-form{grid-template-columns:repeat(2,minmax(0,1fr))!important}body .public-search-form>button,body .public-search-actions{grid-column:1/-1}body .public-search-form label{grid-column:auto;grid-row:auto}body .document-upload label{min-width:0;flex-basis:100%}body .passenger-tickets-heading{flex-wrap:wrap}body .bst-audio-action{max-width:100%}}
@media(max-width:359px){body .driver-action-grid,body .admin-quick-actions,body .public-search-form{grid-template-columns:1fr!important}}
@media print{body .shell,body .passenger-flow-shell{max-width:none;padding:0}.trip-search-form,.trip-search-pagination,#tripScannerControls{display:none!important}}
@media(max-width:760px){
 body .connected-data-results table,body .data-table-wrap table,body .blacklist-scroll table,body .table-wrap table{display:block;min-width:0;width:100%}
 body .connected-data-results thead,body .data-table-wrap thead,body .blacklist-scroll thead,body .table-wrap thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 body .connected-data-results tbody,body .data-table-wrap tbody,body .blacklist-scroll tbody,body .table-wrap tbody{display:grid;gap:12px}
 body .connected-data-results tbody tr,body .data-table-wrap tbody tr,body .blacklist-scroll tbody tr,body .table-wrap tbody tr{display:block;padding:10px;border:1px solid #dbe6d3;border-radius:10px;background:#fff}
 body .connected-data-results td,body .data-table-wrap td,body .blacklist-scroll td,body .table-wrap td{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:10px;padding:8px 2px;border:0;min-width:0;white-space:normal}
 body td[data-label]::before{content:attr(data-label);font-weight:600;color:#405c35;font-size:13px}
 body td[data-label=""]{display:block}
 body .blacklist-tools label{min-width:0;flex:1 1 180px}
}

body .track-tabs{display:flex;gap:10px;flex-wrap:wrap}body .track-tabs>button{width:auto;flex:1 1 100px}
body.bst-internal-page header.dash-head>div:first-child{display:block}
body.bst-internal-page header.dash-head{justify-content:space-between}
body.bst-internal-page header.dash-head .eyebrow{display:none}
body.bst-internal-page .hero .hero-brand{display:block!important}
body.bst-internal-page .hero .hero-brand h1{font-size:var(--bst-title);line-height:1.2;white-space:normal;margin:0 0 18px}

body .table-wrap{max-width:100%;min-width:0;overflow:auto}
@media(min-width:761px) and (max-width:1000px){body .table-wrap table{min-width:0;table-layout:fixed}body .table-wrap th,body .table-wrap td{overflow-wrap:anywhere}}
body select,body textarea{padding:11px 12px;border:1px solid #cbdac1;border-radius:10px;background:#fff;color:#173500;min-height:46px}
body textarea{min-height:100px;resize:vertical}
body .admin-compact-form label:has(input[type=checkbox]){display:flex;align-items:flex-start;gap:10px;grid-column:1/-1}
body .admin-compact-form label:has(input[type=checkbox]) input{margin-top:2px}
body .driver-toolbar button{width:auto}

/* Text scales with the viewport; fields stay at least 16px to avoid phone zoom. */
body .shell h1,body .page-shell h1,body .syndicate-dashboard-page h1,
body .passenger-flow-shell h1,body.bst-internal-page .dash-head h1{font-size:var(--bst-title);line-height:1.2;text-wrap:balance}
body .shell h2,body .page-shell h2,body .syndicate-dashboard-page h2,
body .passenger-flow-shell h2,body.bst-internal-page .dash-head h2{font-size:var(--bst-heading);line-height:1.3}
body .shell h3,body .page-shell h3,body .syndicate-dashboard-page h3,
body .passenger-flow-shell h3{font-size:var(--bst-subheading);line-height:1.35}
body .shell label,body .page-shell label,body .syndicate-dashboard-page label,
body .passenger-flow-shell label{font-size:var(--bst-label);line-height:1.45;font-weight:600}
body :is(.shell,.page-shell,.dashboard-shell,.syndicate-dashboard-page,.passenger-flow-shell) :is(input,select,textarea){font-size:max(16px,var(--bst-text));line-height:1.4;font-weight:400}
body .muted,body .passenger-ticket-meta,body .passenger-results-topbar .muted{font-size:var(--bst-caption);line-height:1.5}
body .panel th,body .panel td{font-size:var(--bst-label);line-height:1.45}
body .passenger-flow-shell .page-nav .back{font-size:var(--bst-label)}
body .dashboard-card,body .passenger-flow-shell .passenger-offer-detail{padding:var(--bst-panel-space)}
body .dash-head,body .page-header{gap:clamp(12px,1.4vw,20px)}
body .composition-row input:not([type=checkbox]):not([type=radio]){width:82px;flex:0 0 82px}
body .composition-row>span{min-width:0;flex:1}
@media(max-width:760px){
 body .shell,body .page-shell,body .dashboard-shell,body .syndicate-dashboard-page,body .passenger-flow-shell{padding-inline:var(--bst-gutter)}
 body .passenger-results-topbar,body .passenger-results-list{padding-inline:var(--bst-panel-space)}
}
@media(max-width:600px){body .public-search-form{grid-template-columns:1fr!important}}

/* Shared type also covers standalone administration and control pages. */
body :is(.manage-shell,.auth-shell,.admin-data-shell,.blacklist-page,.control-shell) h1{font-size:var(--bst-title);line-height:1.25}
body :is(.manage-shell,.auth-shell,.admin-data-shell,.control-shell) h2{font-size:var(--bst-heading);line-height:1.3}
body :is(.manage-shell,.auth-shell,.admin-data-shell,.control-shell) h3{font-size:var(--bst-subheading);line-height:1.35}
body :is(.manage-shell,.auth-shell,.admin-data-shell,.control-shell) label{font-size:var(--bst-label)}
body :is(.manage-shell,.auth-shell,.admin-data-shell,.control-shell) :is(input,select,textarea){font-size:max(16px,var(--bst-text));line-height:1.4}
body :is(p,li,label,dt,dd,summary,.message){overflow-wrap:anywhere}
body :is(.panel,.dashboard-card,.admin-data-card,.trip-choice,.trip-ticket-row,.page-nav,.dash-head)>*{min-width:0}
body :is(button,a.primary,a.secondary,a.back,a.danger){max-width:100%;height:auto;overflow-wrap:anywhere}
body .ticket-state{white-space:normal;max-width:100%}
body .passenger-results-route{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}
body .passenger-results-topbar .muted{white-space:normal}
body .passenger-result-row{min-width:0}
body .passenger-result-row>*{min-width:0;overflow-wrap:anywhere}
body .trip-stream-row{grid-template-columns:minmax(0,2fr) repeat(2,minmax(0,1fr)) minmax(0,auto)}
body .trip-stream-row>*,body .station-row>*,body .driver-admin-stats>div{min-width:0;overflow-wrap:anywhere}
body .trip-stream-row .inline-actions{display:flex;flex-wrap:wrap}
body .driver-admin-stats span{font-size:var(--bst-label);overflow-wrap:anywhere}
@media(max-width:760px){body .trip-stream-row{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Let tall forms and large text grow instead of shrinking beneath the calendar. */
body.passenger-results-page{height:auto;min-height:100dvh;overflow:visible}
body.passenger-results-page .passenger-results-shell{height:auto;min-height:100dvh}
body .passenger-results-workspace{height:auto;min-height:0}
body .passenger-results-topbar,body.passenger-results-page .public-search-form{flex:0 0 auto}
body.passenger-results-page .public-search-form label{font-size:var(--bst-label);text-transform:none;letter-spacing:normal}
body .passenger-results-list{min-height:0;overflow:visible}
body .passenger-results-pagination{flex-wrap:wrap}
body .passenger-date-month-row{grid-template-columns:44px minmax(0,1fr) 44px;gap:6px}
body .passenger-date-month-row strong{overflow-wrap:anywhere}
body .passenger-date-arrow{width:44px;min-height:44px}
body .passenger-date-days{width:100%;min-width:0;max-width:780px;grid-template-columns:repeat(7,minmax(max(44px,2.75rem),1fr));overflow-x:auto}
body .passenger-date-day{min-width:0}
body .passenger-date-day span,body .passenger-date-day small{font-size:var(--bst-caption);overflow-wrap:anywhere}
body .passenger-date-day strong{font-size:var(--bst-subheading)}
body .passenger-result-vehicle strong{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}
body .dash-head #driverLogout{white-space:normal;min-width:0}
body .passenger-result-select{white-space:normal;overflow-wrap:anywhere;min-width:0}
body .passenger-result-row strong{font-size:var(--bst-text)}
body .passenger-result-price strong,body .passenger-result-seats strong{font-size:var(--bst-subheading)}
body .passenger-result-row span{font-size:var(--bst-caption)}
body .bst-audio-action>.bst-audio-help{flex-basis:44px;width:44px;min-width:44px;max-width:44px;height:44px;min-height:44px}
