:root{--ink:#111e2c;--yellow:#ffcf32;--paper:#fff;--muted:#617080;--line:#dce3e9;--blue:#206493;--green:#167157;--danger:#a32e27;--shadow:0 10px 40px #111e2c18;font-family:"Segoe UI",Arial,sans-serif;color:var(--ink);font-synthesis:none;background:#ecf0ed}
*{box-sizing:border-box}body{margin:0;line-height:1.5}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:#205e87;text-underline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #287dd1;outline-offset:3px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.18;letter-spacing:-.035em}h2{font-size:1.05rem}h3{font-size:.95rem}p,label,button,a,dd{overflow-wrap:anywhere}fieldset{border:0;padding:0;margin:17px 0}legend,label{font-size:.8125rem;font-weight:650}legend{margin-bottom:8px}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}.skip-link{position:fixed;top:-100px;left:16px;z-index:3000;background:var(--yellow);padding:12px}.skip-link:focus{top:12px}.app-header{height:65px;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;gap:16px}.brand{font-size:1.15rem;letter-spacing:-.04em;color:var(--ink);font-weight:800;text-decoration:none;white-space:nowrap;display:flex;align-items:center}.brand>span{font-weight:450}.brand small{font-size:.6rem;letter-spacing:.13em;margin-left:18px;padding-left:18px;border-left:1px solid #cbd5df;color:var(--muted)}.app-header nav{display:flex;align-items:center;gap:16px;font-size:.8rem}.app-header nav>a{color:var(--ink);text-decoration:none}.alpha-banner{background:var(--ink);color:#ffda66;font-size:.69rem;letter-spacing:.03em;text-align:center;padding:7px 16px;min-height:30px}.alpha-banner span{color:#e0e5eb}.app-main{position:relative;height:calc(100vh - 95px);height:calc(100dvh - 95px);min-height:430px}.map-stage,#alpha-map{position:absolute;inset:0}.map-stage{overflow:hidden}#alpha-map{background:#e2e8e0;z-index:0}.map-topline{position:absolute;top:18px;left:438px;right:24px;display:flex;justify-content:space-between;gap:12px;pointer-events:none;z-index:450}.map-label,.map-count{background:#ffffffed;border:1px solid #fff;border-radius:8px;padding:8px 12px;font-size:.68rem;box-shadow:0 2px 10px #111e2c0d}.map-label{font-weight:750;letter-spacing:.1em;display:flex;align-items:center;gap:8px}.map-count{color:#425461;max-width:70%}.status-dot{display:inline-block;flex:0 0 7px;width:7px;height:7px;background:#6c7984;border-radius:50%}.map-label .status-dot{background:var(--green)}.map-tools{position:absolute;right:24px;top:82px;display:grid;gap:8px;z-index:450}.map-button{border:1px solid #d5ddd9;background:#fff;border-radius:9px;height:45px;width:45px;color:var(--ink);font-size:1.55rem;box-shadow:0 2px 8px #111e2c12}.map-button:hover{background:#fff7d6}.map-legend{position:absolute;bottom:28px;left:438px;display:flex;flex-wrap:wrap;gap:14px;font-size:.66rem;background:#fffffff0;padding:10px 13px;border:1px solid white;border-radius:8px;pointer-events:none;z-index:450}.map-legend span{display:flex;align-items:center;gap:6px}.map-legend i{width:17px;border-top:4px solid var(--blue);border-radius:2px}.map-legend .legend-detour{border-top:3px dashed #b2730b}.map-legend .legend-shared{border-color:var(--green)}.map-hint{position:absolute;left:50%;top:78px;transform:translateX(-50%);max-width:min(410px,calc(100% - 100px));z-index:500;background:var(--ink);color:white;border-radius:10px;padding:11px 16px;box-shadow:var(--shadow);font-size:.8125rem}.join-panel,.control-sheet{position:absolute;left:24px;top:18px;bottom:18px;width:390px;max-height:calc(100% - 36px);background:var(--paper);border:1px solid #d9e0e3;border-radius:18px;box-shadow:var(--shadow);z-index:600}.join-panel{padding:30px;overflow:auto}.eyebrow{font-size:.625rem;letter-spacing:.13em;color:var(--muted);font-weight:750;margin-bottom:8px}.join-panel h1{font-size:2rem;margin-bottom:18px}.join-panel>p:not(.eyebrow){font-size:.875rem;color:var(--muted);margin-bottom:18px}.join-panel form>label:not(.check){display:block;margin:17px 0 7px}.join-panel>.field-help{margin-top:17px;font-size:.75rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:47px;padding:12px 16px;border:1px solid transparent;border-radius:9px;background:var(--yellow);color:var(--ink);font-size:.875rem;line-height:1.35;font-weight:750;text-decoration:none}.button:hover:not(:disabled){background:#ffda60}.button.full{width:100%;justify-content:space-between}.button.full:not(:has(span)){justify-content:center}.button.secondary{background:#edf3f7;border-color:#ccd7e1;color:#214b67}.button.secondary:hover:not(:disabled){background:#e0ebf2}.button.danger{color:var(--danger);background:white;border-color:#e0b7b3}.button.small{font-size:.75rem;min-height:43px;padding:9px 12px}.button-row{display:flex;flex-wrap:wrap;gap:8px}.text-button{min-height:40px;padding:8px 0;background:none;border:0;color:#235c82;font-size:.75rem;font-weight:650}.text-button[aria-pressed=true]{color:#7f5200;text-decoration:underline}.text-button:hover{text-decoration:underline}.full{width:100%}input:not([type=checkbox]):not([type=radio]),select{width:100%;min-height:46px;padding:11px 12px;border:1px solid #c3ced8;background:#f6f8fa;border-radius:8px;color:var(--ink);font-size:1rem;min-width:0}input::placeholder{color:#6b7783}.check{display:flex;align-items:flex-start;gap:9px;font-size:.75rem;line-height:1.65;font-weight:400;margin:16px 0}.check input{width:17px;height:17px;flex:0 0 17px;margin:3px 0 0;accent-color:var(--blue)}.field-help{font-size:.72rem;color:var(--muted);line-height:1.65;margin-top:8px}.notice{border:1px solid #c8d8e5;background:#edf4f9;padding:12px 14px;border-radius:9px;font-size:.8rem;margin:16px 0}.notice.error{background:#fff1ed;color:#7d3028;border-color:#e8bcb0}.notice.success{background:#eaf7ef;color:#17624c;border-color:#b9dccb}.notice.compact{margin:0 20px 12px;padding:9px 11px;font-size:.74rem}.privacy-details{border:1px solid #e0e7ed;background:#f5f8fa;border-radius:8px;padding:10px 12px;font-size:.73rem;margin:14px 0}.privacy-details summary{cursor:pointer;font-weight:650;color:#38546b;min-height:24px}.privacy-details p{margin-top:10px;color:var(--muted);line-height:1.7}.control-sheet{display:flex;flex-direction:column;overflow:hidden}.sheet-handle{display:none}.sheet-heading{padding:22px 22px 19px;display:flex;align-items:center;justify-content:space-between;gap:8px}.sheet-heading h1{font-size:1.5rem}.sheet-heading .eyebrow{margin-bottom:5px}.free-badge{font-size:.57rem;white-space:nowrap;border:1px solid #c3dacd;color:#286145;background:#f2f8f3;padding:5px 6px;border-radius:5px;font-weight:700}.sheet-content{overflow:auto;overscroll-behavior:contain;padding:0 22px 20px;scrollbar-width:thin}.route-inputs{border:1px solid #ccd6df;border-radius:10px;overflow:hidden;background:#f7f9fb}.route-inputs>label{display:flex;align-items:center;gap:8px;padding:0 9px}.route-inputs>label~label{border-top:1px solid #e0e6ec}.route-inputs input{border:0!important;background:transparent!important;padding:13px 2px!important;border-radius:0!important;font-size:.875rem!important}.point-letter{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px;background:var(--ink);color:white;font-size:.62rem;font-weight:800}.point-letter.destination{background:var(--yellow);color:var(--ink)}.input-action{background:none;border:0;color:var(--blue);font-size:.72rem;min-width:34px;min-height:45px;padding:4px;font-weight:700}.map-picks{gap:16px}.map-picks .text-button{font-size:.69rem}.search-results:empty{display:none}.search-results{padding:0 9px;background:white}.search-results>button{display:block;width:100%;background:white;border:0;border-top:1px solid #e0e6ec;color:var(--ink);text-align:left;padding:11px 4px;font-size:.75rem;min-height:44px}.search-results>button:hover{background:#f2f6f9}.search-results p{font-size:.75rem;padding:10px}.role-options{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.role-options label{border:1px solid #cad4de;background:#f8fafb;min-height:48px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:8px 5px;cursor:pointer;font-size:.68rem;font-weight:600;text-align:center;gap:4px}.role-options input{margin:0;accent-color:var(--ink);width:12px;flex:0 0 12px}.role-options label:has(input:checked){background:#fff4cb;border-color:#d3ad34}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{display:block;margin-bottom:6px;font-size:.73rem}.form-grid select{font-size:.8125rem}.tracking-card{background:#f4f7f9;border:1px solid #dbe4e9;border-radius:11px;padding:13px;margin:16px 0}.tracking-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.73rem}.gps-status{display:flex;align-items:center;gap:6px}.gps-status[data-state=live] .status-dot{background:#1c8863;box-shadow:0 0 0 3px #ddede5}.gps-status[data-state=weak] .status-dot,.gps-status[data-state=stale] .status-dot,.gps-status[data-state=acquiring] .status-dot,.gps-status[data-state=retrying] .status-dot{background:#b78012}.gps-status[data-state=offline] .status-dot,.gps-status[data-state=error] .status-dot,.gps-status[data-state=denied] .status-dot{background:#b03c30}.tracking-card>.button{margin-top:12px;font-size:.77rem}.tracking-card>.button[aria-pressed=true]{background:#e5f3eb;border-color:#aed0bc;color:#1d6044}.tracking-card>.field-help{font-size:.67rem}.muted{color:var(--muted)}.occupancy{display:flex;align-items:center;justify-content:space-between;background:#f5f7f9;border-radius:9px;padding:11px 12px;margin:12px 0;font-size:.75rem}.seats{display:flex;gap:4px}.seat{width:17px;height:21px;display:inline-block;border:1.5px solid #99a9b6;border-radius:5px 5px 3px 3px;background:white}.seat.filled{background:var(--ink);border-color:var(--ink)}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.metrics>div{padding-bottom:9px;border-bottom:1px solid var(--line)}.metrics dt{font-size:.67rem;color:var(--muted)}.metrics dd{font-size:1.05rem;font-weight:750;margin:4px 0 0;letter-spacing:-.025em}.metrics .saving{color:var(--green)}.detail-block{margin-top:16px;font-size:.75rem;border-top:1px solid var(--line);padding-top:13px}.detail-block summary{cursor:pointer;font-weight:650;min-height:32px}.detail-block ol{padding-left:20px;margin:10px 0}.detail-block li{padding:5px 0;color:#50616f}.preview-card{margin-top:20px;border:1px solid #dfcc93;background:#fffaf0;border-radius:11px;padding:15px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.preview-card>.button{margin-top:14px}.preview-label{font-size:.65rem;color:#8b6412;background:#fff0c3;border-radius:5px;padding:4px 7px;display:inline-block;margin:7px 0}.preview-card .metrics dd{font-size:1.1rem}.affected-list{margin:12px 0;padding:0;list-style:none;font-size:.75rem}.affected-list li{padding:8px 0;border-top:1px solid #e6dfc9}.offer-section,.nearby-section{border-top:1px solid var(--line);padding-top:18px;margin-top:20px}.count-badge{background:var(--ink);color:white;border-radius:5px;min-width:18px;display:inline-block;padding:3px 5px;font-size:.6rem;text-align:center;vertical-align:middle;margin-left:3px}.offer-card{border:1px solid #d6e0e6;border-radius:10px;padding:13px;margin-top:12px;background:#fff}.offer-card h3{margin:5px 0}.offer-card .metrics{margin:12px 0;gap:8px}.offer-card .metrics dd{font-size:.88rem}.offer-card .button-row{margin-top:10px}.offer-card .button-row>.button{flex:1}.offer-card>.field-help{font-size:.69rem}.consent-list{list-style:none;padding:0;margin:12px 0;font-size:.71rem}.consent-list li{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid #edf0f2}.consent-list span{color:var(--muted)}.empty-state{border:1px dashed #cbd6df;border-radius:9px;padding:16px 12px;color:var(--muted);font-size:.75rem;margin:12px 0}.nearby-item{width:100%;display:flex;align-items:center;gap:11px;border:1px solid #dbe3e9;border-radius:10px;background:white;text-align:left;padding:11px;margin-top:9px;min-height:60px;color:var(--ink)}.nearby-item:hover{background:#f7fafc;border-color:#a9c2d4}.nearby-item.selected{border-color:#b99322;background:#fff9e7}.entity-symbol{min-width:37px;height:37px;border-radius:10px;background:#eaf1f6;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:800}.nearby-item[data-type=vehicle] .entity-symbol{background:var(--yellow)}.nearby-item>div:nth-child(2){flex:1;min-width:0}.nearby-item strong{font-size:.76rem;display:block}.nearby-item small{font-size:.65rem;color:var(--muted);display:block;margin-top:3px}.nearby-arrow{color:#4e6475;font-size:1.3rem}.simulation-panel{margin-top:20px;border:1px dashed #c2af88;background:#fdfaf3;border-radius:9px;padding:12px;font-size:.73rem}.simulation-panel summary{cursor:pointer;min-height:28px;font-weight:650;color:#745420}.simulation-panel .button-row{margin-top:12px}.sheet-footer{font-size:.67rem;color:var(--muted);border-top:1px solid var(--line);padding-top:15px;margin-top:20px}.noscript{position:relative;margin:20px;padding:20px;background:white;z-index:1000}.leaflet-control-attribution{font-size:9px!important}.leaflet-container a{color:#205d85}.leaflet-control-zoom{display:none}.alpha-point{border:3px solid white;border-radius:50%;background:var(--ink);color:#fff;box-shadow:0 3px 12px #111e2c38;font-size:.69rem;font-weight:750;display:flex;align-items:center;justify-content:center}.alpha-point.destination{background:var(--yellow);color:var(--ink)}.alpha-point.live{background:var(--blue);border-width:4px;box-shadow:0 0 0 6px #20649324}.entity-marker{border:2px solid white;border-radius:11px;background:#e9f0f7;color:#193b57;box-shadow:0 3px 10px #10273530;font-size:.7rem;font-weight:800;display:flex;align-items:center;justify-content:center;white-space:nowrap}.entity-marker.vehicle{background:var(--yellow);color:var(--ink)}.entity-marker.group{background:#d8efe4;color:#165239}.entity-marker.stale{opacity:.55}.entity-marker.simulation{border-style:dashed;border-color:#825c12}.entity-tooltip{font-family:inherit;font-size:.7rem;padding:7px 10px;border:1px solid #d4dfe6}.route-detour{animation:route-flow 1.1s linear infinite}.map-stale-label{font-size:.65rem;color:#75511c;background:#fff7e1;border:1px solid #d8c293}.privacy-ring{pointer-events:none}@keyframes route-flow{to{stroke-dashoffset:-28}}
@media(max-width:1050px){.app-header{padding:0 20px}.join-panel,.control-sheet{left:16px;width:350px}.map-topline,.map-legend{left:385px}.sheet-heading{padding-inline:18px}.sheet-content{padding-inline:18px}.sheet-heading h1{font-size:1.35rem}.map-topline{right:16px}.map-tools{right:16px}}
@media(max-width:700px){.app-header{height:55px;padding:0 16px}.brand{font-size:1.03rem}.brand small{font-size:.5rem;margin-left:10px;padding-left:10px}.app-header nav{gap:12px;font-size:.73rem}.app-header nav .text-button{font-size:.7rem}.alpha-banner{min-height:28px;font-size:.58rem;padding:6px 8px}.app-main{height:calc(100vh - 83px);height:calc(100dvh - 83px);min-height:420px}.map-topline{left:14px;right:14px;top:13px}.map-label,.map-count{padding:7px 9px;font-size:.61rem}.map-count{max-width:68%}.map-tools{right:14px;top:63px;gap:7px}.map-button{width:42px;height:42px}.map-legend{left:14px;bottom:auto;top:62px;max-width:calc(100% - 88px);gap:7px 10px;font-size:.56rem;padding:8px 10px}.map-legend i{width:14px}.map-hint{left:14px;top:108px;transform:none;max-width:calc(100% - 84px);font-size:.74rem;padding:10px 12px}.join-panel{inset:105px 12px 12px;width:auto;max-height:calc(100% - 117px);padding:23px;border-radius:17px}.join-panel h1{font-size:1.8rem}.join-panel>p:not(.eyebrow){font-size:.8rem}.control-sheet{left:0;right:0;bottom:0;top:auto;width:auto;height:54%;min-height:240px;max-height:calc(100% - 100px);border-radius:22px 22px 0 0;box-shadow:0 -7px 30px #111e2c1c;transition:height .2s ease;padding-bottom:env(safe-area-inset-bottom)}.control-sheet.expanded{height:78%}.control-sheet.collapsed{height:115px;min-height:115px}.control-sheet.collapsed .sheet-content,.control-sheet.collapsed>.notice{display:none}.control-sheet.collapsed .sheet-heading{padding-top:1px}.sheet-handle{display:flex;align-items:center;justify-content:center;min-height:24px;flex:0 0 24px;border:0;background:none;width:100%;padding:0}.sheet-handle>span:first-child{width:36px;height:4px;background:#bcc9d3;border-radius:4px}.sheet-heading{padding:3px 20px 15px}.sheet-heading h1{font-size:1.35rem}.sheet-heading .eyebrow{font-size:.58rem;margin-bottom:4px}.free-badge{font-size:.6rem;padding:5px 8px}.sheet-content{padding:0 20px 22px}.sheet-content:focus-within{scroll-padding-bottom:20px}.map-picks{gap:20px}.map-picks .text-button{font-size:.73rem}.role-options label{font-size:.72rem}.field-help{font-size:.73rem}.leaflet-control-attribution{max-width:230px;line-height:1.3!important}.leaflet-bottom{bottom:54%!important;transition:bottom .2s ease}.app-main:has(.control-sheet.collapsed) .leaflet-bottom{bottom:116px!important}.app-main:has(.control-sheet.expanded) .leaflet-bottom{bottom:78%!important}.app-main:has(.control-sheet[hidden]) .leaflet-bottom{bottom:auto!important;top:88px!important}.map-stage:has(+.join-panel:not([hidden])) .map-topline .map-count{display:none}.notice.compact{font-size:.7rem;margin-bottom:10px}.section-heading h2{font-size:.98rem}.tracking-card .field-help{font-size:.68rem}}
@media(max-width:360px){.brand small{display:none}.sheet-heading,.sheet-content{padding-left:15px;padding-right:15px}.role-options label{font-size:.65rem}.map-picks{gap:13px}.free-badge{font-size:.55rem}.map-legend{font-size:.52rem;gap:7px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.route-inputs>.route-row{display:flex;align-items:center;gap:8px;padding:0 9px}.route-inputs>.route-row~.route-row{border-top:1px solid #e0e6ec}.gps-meter{padding:13px;border:1px solid #dbe4e9;border-radius:10px;margin:14px 0;background:#fafcfd}.gps-meter .metrics{margin:9px 0}.gps-meter .metrics dd{font-size:.88rem}.gps-meter .field-help{font-size:.68rem}.gps-status[data-state=rejected] .status-dot{background:#b03c30}
.alpha-banner{height:30px;min-height:30px;padding:0 16px;display:flex;align-items:center;justify-content:center;gap:4px}@media(max-width:700px){.alpha-banner{height:28px;min-height:28px;padding-inline:8px}}
