/* Phone and tablet layout, shared by every account. */
.app-workspace,.view-root,.grid>*,.stack,.card,.form-grid>* { min-width:0; }
input,select,textarea { max-width:100%; }
.table-wrap,.station-line-scroll,.route-map-viewport { overscroll-behavior-inline:contain; }
@media(max-width:1100px) {
 .global-search,.top-profile .profile-meta { display:none; }
 .topbar { gap:12px; }
 .topbar-left { min-width:0; }
 .topbar-actions { flex-shrink:0; }

 .grid-3 { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .grid-3>.tracking-card { grid-column:1 / -1!important; }
 .driver-navigation:not(.is-driving) .driver-navigation-layout { grid-template-columns:minmax(0,1fr); }
 .page-head,.card-header,.driver-navigation-heading { flex-wrap:wrap;gap:12px; }
 .driver-route-selector { flex-wrap:wrap; }
 .driver-route-select-control { min-width:0;max-width:100%; }
}
@media(max-width:760px) {
 .grid-2,.grid-3,.grid-4,.grid-5 { grid-template-columns:minmax(0,1fr); }
 .grid>* { grid-column:auto!important; }
 .topbar-left { min-width:0; }
 .topbar-left h2 { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:42vw; }
 .topbar-actions { flex-shrink:0;gap:6px; }
 .topbar select { max-width:100px; }
 .view-root { padding-bottom:calc(24px + env(safe-area-inset-bottom)); }
 .page-actions,.form-actions,.entity-actions,.journey-start-actions { flex-wrap:wrap;gap:8px; }
 .page-actions .btn,.form-actions .btn,.journey-start-actions .btn { flex:1 1 140px;white-space:normal; }
 .card-header { align-items:flex-start; }
 .card-header>div,.entity-main,.timeline-copy { min-width:0; }
 .entity-main h4,.card-header h4,.family-journey-identity h3 { overflow-wrap:anywhere; }
 .driver-route-selector { display:flex;flex-direction:column;align-items:stretch; }
 .driver-route-select-control { width:100%; }
 .driver-route-select-control select { width:100%; }
 .operations-filter { display:flex;flex-wrap:wrap; }
 .operations-filter>label { flex:1 1 180px;min-width:0; }
 .message-filters { grid-template-columns:minmax(0,1fr); }
 .modal,.modal.wide { max-height:94dvh; }
 .modal-body { max-height:calc(94dvh - 132px);overscroll-behavior:contain;padding-bottom:max(20px,env(safe-area-inset-bottom)); }
 .chat-shell { height:calc(100dvh - 110px);min-height:360px; }
 .driver-navigation:not(.is-driving) .driver-turn { padding:16px;gap:12px; }
 .driver-navigation:not(.is-driving) .driver-turn strong { font-size:22px; }
 .driver-navigation:not(.is-driving) .driver-turn p { font-size:14px; }
 .driver-trip-strip strong { font-size:22px; }
 .leaflet-popup-content { max-width:calc(100vw - 85px); }
}
@media(pointer:coarse) {
 .btn,.btn-sm,.icon-btn,.notification-button,.menu-button { min-height:44px; }
 .icon-btn,.notification-button,.menu-button { min-width:44px; }
 input:not([type=checkbox]):not([type=radio]),select,textarea { font-size:16px;min-height:44px; }
 button,a,input,select,textarea { touch-action:manipulation; }
 .sidebar-nav button { min-height:46px; }
}

/* Compact parent journey summary; keep touch inputs at a readable 16px. */
.parent-journey-compact .v28-child-selector { padding:14px 16px;gap:14px;margin-bottom:12px; }
.parent-journey-compact .v28-child-selector h4 { font-size:16px;margin:3px 0; }
.parent-journey-compact .v28-child-selector p { font-size:12px; }
.parent-journey-compact .eyebrow { font-size:10px; }
.parent-journey-compact .family-journey-context { padding:16px;margin:12px 0 16px; }
.parent-journey-compact .family-journey-identity h3 { font-size:18px; }
.parent-journey-compact .family-journey-identity p { font-size:12px; }
.parent-journey-compact .family-journey-facts { margin-top:14px;gap:12px; }
.parent-journey-compact .family-journey-facts strong { font-size:13px; }
.parent-journey-compact .family-journey-facts small,.parent-journey-compact .family-route-choice small { font-size:11px; }
.parent-journey-compact .family-route-choice { margin-top:14px;gap:6px;font-size:12px; }
.parent-journey-compact .family-journey-actions { margin-top:12px; }
.parent-journey-compact .page-head h3 { font-size:20px; }
.parent-journey-compact .page-head p,.parent-journey-compact .card-header p { font-size:12px; }
.parent-journey-compact .card-header { padding:14px 16px; }
.parent-journey-compact .card-header h4 { font-size:15px; }
.parent-journey-compact .btn { font-size:12px; }
.parent-journey-compact .station-line-widget { padding:16px; }
.parent-journey-compact .station-line-heading { gap:12px;margin-bottom:12px; }
.parent-journey-compact .station-line-heading h4 { font-size:14px; }
.parent-journey-compact .station-line-heading p { font-size:11px; }
.parent-journey-compact .station-line-chips>span { font-size:10px;min-height:28px;padding:6px 9px; }
.parent-journey-compact .station-line-node strong { font-size:11px; }
.parent-journey-compact .station-line-node small { font-size:10px; }
.parent-journey-compact .station-line-metrics strong { font-size:17px; }
.parent-journey-compact .station-line-metrics span,.parent-journey-compact .station-line-status { font-size:10px; }
.parent-journey-compact .station-line-eta strong { font-size:20px; }
@media(pointer:fine) { .parent-journey-compact .v28-child-picker input,.parent-journey-compact .v28-child-picker select,.parent-journey-compact .family-route-choice select { font-size:13px; } }

/* Compact driving UI: preserve map area and touch hit targets. */
.driver-navigation .driver-navigation-heading { gap:10px;margin-bottom:10px; }
.driver-navigation .driver-navigation-heading h3 { font-size:18px;margin:3px 0; }
.driver-navigation .driver-navigation-heading .eyebrow { font-size:10px; }
.driver-navigation .driver-navigation-heading>div>span:last-child { font-size:12px; }
.driver-navigation .driver-navigation-heading .badge { font-size:10px;padding:5px 8px; }
.driver-navigation.driver-navigation .driver-turn { min-height:70px;padding:12px 16px;gap:12px; }
.driver-navigation.driver-navigation .driver-turn strong { font-size:19px;line-height:1.3; }
.driver-navigation.driver-navigation .driver-turn p { font-size:12px;margin-top:4px; }
.driver-navigation.driver-navigation .driver-turn-arrow { font-size:34px;min-width:34px; }
.driver-navigation.driver-navigation .driver-speed { width:52px;height:52px;border-width:3px; }
.driver-navigation .driver-speed strong { font-size:19px; }
.driver-navigation .driver-speed span { font-size:9px;margin-top:2px; }
.driver-navigation .driver-map-controls { gap:8px; }
.driver-navigation [data-driver-recenter] { font-size:12px;padding:8px 12px;min-height:40px; }
.driver-navigation .driver-trip-strip { padding:12px 8px;gap:8px; }
.driver-navigation .driver-trip-strip strong { font-size:19px; }
.driver-navigation .driver-trip-strip small { font-size:12px; }
.driver-navigation .driver-trip-strip span,.driver-navigation .driver-estimate-note { font-size:10px; }
.driver-navigation .st-map-toolbar .st-map-navigation { font-size:10px;padding-inline:9px;gap:5px; }
.driver-navigation .st-map-navigation .icon { width:15px;height:15px; }
.driver-navigation .st-map-fullscreen-button span { font-size:22px; }
.driver-navigation .st-map-v28 .leaflet-control-zoom a { font-size:19px; }
.driver-navigation .leaflet-control-scale-line { font-size:9px; }
.driver-navigation .gps-map-status strong { font-size:10px; }
.driver-navigation .osm-map-legend { max-width:calc(100% - 24px);gap:5px;font-size:8px; }
@media(pointer:coarse) { .driver-navigation [data-driver-recenter] { min-height:44px; } }

.driver-navigation [data-driver-recenter] { display:grid;place-items:center;width:38px;height:38px;min-height:38px;padding:8px;flex:0 0 auto;border-radius:12px; }
.driver-navigation [data-driver-recenter] svg { width:21px;height:21px; }
@media(pointer:coarse) { .driver-navigation [data-driver-recenter] { width:44px;height:44px;min-height:44px; } }

/* Fullscreen must win over the normal mobile map height rules. */
body .st-map-v28.st-map-fullscreen,
body .driver-navigation .st-map-v28.st-map-fullscreen {
 position:fixed!important;inset:0!important;width:100vw!important;
 height:100vh!important;height:100dvh!important;min-height:0!important;max-height:none!important;
}
body .driver-navigation.is-driving [data-osm-route-map] {
 height:100vh!important;height:100dvh!important;min-height:0!important;max-height:none!important;
}

/* Keep fullscreen driving overlays compact so the road remains visible. */
.driver-navigation.is-driving .driver-turn { top:max(10px,env(safe-area-inset-top));inset-inline-start:10px;width:min(330px,55vw);padding:9px 12px;min-height:54px;gap:8px;border-radius:12px; }
.driver-navigation.is-driving .driver-turn strong { font-size:16px; }
.driver-navigation.is-driving .driver-turn p { font-size:11px;margin-top:3px; }
.driver-navigation.is-driving .driver-turn-arrow { font-size:27px;min-width:27px; }
.driver-navigation.is-driving .driver-navigation-stops { inset-inline-end:10px;bottom:88px;width:min(240px,36vw); }
.driver-navigation.is-driving .journey-control-card { padding:8px;border-radius:12px; }
.driver-navigation.is-driving .next-stop-card { padding:7px;margin:0 0 6px; }
.driver-navigation.is-driving .next-stop-card>span { font-size:9px; }
.driver-navigation.is-driving .next-stop-card strong { font-size:12px;line-height:1.3; }
.driver-navigation.is-driving .journey-control-card .page-actions { gap:5px; }
.driver-navigation.is-driving .journey-control-card .btn { font-size:10px;padding:5px 8px;min-height:36px;line-height:1.25; }
.driver-navigation.is-driving .journey-control-card .btn .icon { width:14px;height:14px; }
.driver-navigation.is-driving .driver-trip-strip { bottom:max(10px,env(safe-area-inset-bottom));inset-inline-start:10px;width:min(290px,48vw);padding:9px 7px;gap:5px;border-radius:12px; }
.driver-navigation.is-driving .driver-trip-strip strong { font-size:16px; }
.driver-navigation.is-driving .driver-trip-strip small { font-size:10px; }
.driver-navigation.is-driving .driver-trip-strip span { font-size:9px; }
.driver-navigation.is-driving .driver-speed { width:44px;height:44px;border-width:2px; }
.driver-navigation.is-driving .driver-speed strong { font-size:16px; }
.driver-navigation.is-driving .driver-speed span { font-size:8px; }
.driver-navigation.is-driving .driver-exit { padding:7px 10px;font-size:10px;min-height:36px; }
@media(orientation:portrait) {
 .driver-navigation.is-driving .driver-turn { top:58px;width:calc(100% - 20px); }
 .driver-navigation.is-driving .driver-navigation-stops { bottom:155px;width:calc(100% - 20px); }
 .driver-navigation.is-driving .journey-control-card { display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:7px; }
 .driver-navigation.is-driving .next-stop-card { margin:0; }
 .driver-navigation.is-driving .driver-trip-strip { width:calc(100% - 20px); }
 .driver-navigation.is-driving .driver-map-controls { bottom:95px;inset-inline-start:10px; }
}
@media(pointer:coarse) {
 .driver-navigation.is-driving .journey-control-card .btn,.driver-navigation.is-driving .driver-exit { min-height:44px; }
}

/* Mobile driving: narrow right-hand stop and journey panels. */
@media(max-width:760px) and (orientation:portrait) {
 .driver-navigation.is-driving .driver-navigation-stops { width:164px;max-width:46vw;inset-inline-start:auto;inset-inline-end:8px;bottom:156px; }
 .driver-navigation.is-driving .journey-control-card { display:flex;flex-direction:column;align-items:stretch;gap:5px;padding:7px; }
 .driver-navigation.is-driving .next-stop-card { padding:5px;margin:0; }
 .driver-navigation.is-driving .next-stop-card strong { font-size:11px; }
 .driver-navigation.is-driving .journey-control-card .page-actions { flex-direction:column;gap:4px; }
 .driver-navigation.is-driving .journey-control-card .btn { flex:0 0 auto;width:100%;padding:5px;font-size:9px; }
 .driver-navigation.is-driving .driver-trip-strip { inset-inline-start:auto;inset-inline-end:8px;bottom:max(10px,env(safe-area-inset-bottom));width:164px;max-width:46vw;grid-template-columns:1fr;gap:5px;padding:8px; }
 .driver-navigation.is-driving .driver-trip-strip>div { gap:1px; }
 .driver-navigation.is-driving .driver-trip-strip strong { font-size:13px; }
 .driver-navigation.is-driving .driver-trip-strip span { font-size:9px;line-height:1.3; }
 .driver-navigation.is-driving .driver-trip-strip>div+div { padding-top:4px;border-top:1px solid #e8edf2; }
 .driver-navigation.is-driving .driver-map-controls { bottom:max(18px,env(safe-area-inset-bottom)); }
}

/* Mobile trip summary stays in a single row along the bottom. */
@media(max-width:760px) and (orientation:portrait) {
 .driver-navigation.is-driving .driver-trip-strip { inset-inline-start:8px;inset-inline-end:8px;width:auto;max-width:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:9px 6px; }
 .driver-navigation.is-driving .driver-trip-strip>div+div { padding-top:0;border-top:0; }
 .driver-navigation.is-driving .driver-trip-strip strong { font-size:13px; }
 .driver-navigation.is-driving .driver-trip-strip span { font-size:9px; }
 .driver-navigation.is-driving .driver-map-controls { bottom:92px; }
 .driver-navigation.is-driving .driver-navigation-stops { bottom:92px; }
}

/* Perspective driving view: tilt only the map, leaving guidance and buttons upright. */
.driver-navigation.is-driving .driver-navigation-map { perspective:1000px;overflow:hidden; }
.driver-navigation.is-driving .osm-route-map-shell {
 transform:rotateX(28deg) scale(1.6);
 transform-origin:50% 55%;
 backface-visibility:hidden;
}
@media(orientation:landscape) {
 .driver-navigation.is-driving .osm-route-map-shell { transform:rotateX(25deg) scale(1.5); }
}

.driver-map-attribution { display:none; }
.driver-navigation.is-driving .driver-map-attribution { display:block;position:absolute;bottom:0;right:0;z-index:800;padding:1px 5px;font-size:9px;background:#fffffff0; }
.driver-navigation.is-driving .vehicle-marker-pro { transform:scale(.45); }

.station-line-driver { display:flex;align-items:center;gap:7px; }
.station-line-driver .icon { width:19px;height:19px;flex-shrink:0; }
.station-line-parent .station-line-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
.station-line-widget .station-line-node { width:118px; }
.station-line-node strong { white-space:normal;overflow-wrap:anywhere;line-height:1.25;max-height:30px; }
.station-line-widget .station-line-canvas { height:202px; }
.station-line-widget .station-line-node.is-school .station-line-dot { width:30px;height:30px;margin-top:-6px;margin-bottom:3px;border:0;border-radius:8px;background:#fff;color:#172235;display:grid;place-items:center; }
.station-line-node.is-school .station-line-dot .icon { width:23px;height:23px; }
.station-line-node.is-absent strong { color:#f5bb76; }
.pickup-wait { display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 9px;margin:6px 0;border-radius:8px;background:#edf4fc;color:#23445f;font-size:11px; }
.pickup-wait strong { font-variant-numeric:tabular-nums;font-size:14px;white-space:nowrap; }
.pickup-wait.is-overdue { color:#a12323;background:#fff0ec; }
.driver-navigation.is-driving .pickup-wait { font-size:9px;padding:5px;margin:2px 0; }
.driver-navigation.is-driving .pickup-wait strong { font-size:12px; }

.parent-sound-banner { position:fixed;z-index:25000;inset-inline:16px;bottom:max(16px,env(safe-area-inset-bottom));margin-inline:auto;max-width:560px;padding:16px;background:#fff;border:2px solid #da3143;border-radius:16px;box-shadow:0 8px 35px #15223540; }
.parent-sound-banner strong { font-size:16px; }
.parent-sound-banner p { margin:6px 0 12px;font-size:13px; }
.parent-sound-banner small { display:block;margin-bottom:10px;color:#9b2330; }
.parent-sound-banner .btn { min-height:44px; }

/* Touch and mouse route ordering. Only the grip consumes touch scrolling. */
.planner-drag-panel { margin: 14px 0; }
.planner-drag-panel > p { font-size: 12px; color: #586779; margin-bottom: 10px; }
.planner-drag-columns { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.planner-drag-columns h4 { font-size: 13px; margin: 0 0 8px; }
.planner-drag-list { max-height: 320px; overflow-y: auto; overscroll-behavior: contain; padding: 4px; min-height: 50px; border: 1px solid #dce4ec; border-radius: 10px; }
.planner-drag-card { display: flex; align-items: center; gap: 7px; background: white; border: 1px solid #dce4ec; border-radius: 8px; margin-bottom: 5px; padding: 4px; font-size: 12px; }
.planner-drag-card > span { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.planner-drag-card > b { color: #16825d; min-width: 18px; text-align: center; }
.planner-drag-card button { flex-shrink: 0; width: 34px; height: 36px; border: 0; border-radius: 6px; background: #eff4f8; color: #253c50; }
.planner-drag-card button:disabled { opacity: .3; }
.planner-drag-card .planner-drag-handle { touch-action: none; cursor: grab; font-size: 24px; user-select: none; }
.planner-drag-card.is-dragging { border-color: #16825d; background: #eaf9f2; box-shadow: 0 3px 10px #142b3526; }
.planner-drag-card.is-dragging .planner-drag-handle { cursor: grabbing; }
@media(max-width: 700px) { .planner-drag-columns { grid-template-columns: 1fr; } .planner-drag-card button { width: 44px; height: 44px; } }

/* Compact, consistent stop spacing for both short and long routes. */
.station-line-widget .station-line-track{width:var(--station-min-width);min-width:var(--station-min-width);margin-inline:auto}
.station-line-widget .station-line-lane{inset-inline:76px}

/* Compact operational station line for drivers, schools and administrators. */
.auth-showcase.station-line-staff{padding:14px 16px;border-radius:16px}
.station-line-staff .station-line-heading{gap:12px;margin-bottom:10px}
.station-line-staff .station-line-heading h4{font-size:14px}
.station-line-staff .station-line-heading p{font-size:11px;margin-top:3px}
.station-line-staff .station-line-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}
.station-line-staff .station-line-metrics strong{font-size:18px}
.station-line-staff .station-line-metrics span{font-size:11px;margin-top:3px}
.station-line-staff .station-line-footnote{margin-top:8px;gap:8px}
.station-line-staff .station-line-scroll-actions{font-size:10px}

/* All roles: closer stops on phones, with room for two-line names. */
@media(max-width:600px){
  .station-line-widget .station-line-track{width:var(--station-mobile-width);min-width:var(--station-mobile-width)}
  .station-line-widget .station-line-lane{inset-inline:56px}
  .station-line-widget .station-line-node{width:88px}
  .station-line-widget .station-line-node strong{font-size:11px;line-height:1.3;max-height:30px}
  .station-line-widget .station-line-node small{font-size:10px}
}

#historyFilterForm .form-grid{grid-template-columns: minmax(180px,2fr) repeat(2,minmax(140px,1fr)) minmax(150px,1fr)}
.history-ride-selector .input-wrap{min-width:0;flex:1}.history-ride-selector select{max-width:100%;width:100%;text-overflow:ellipsis}
@media(max-width:1050px){#historyFilterForm .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:540px){#historyFilterForm .form-grid{grid-template-columns:minmax(0,1fr)}.history-ride-selector{flex-wrap:wrap}.history-ride-selector .input-wrap{flex-basis:100%}}
