*{box-sizing:border-box}body{margin:0;font:15px system-ui,sans-serif;color:#243247;background:#171936}button,input,textarea{font:inherit}button,a{touch-action:manipulation}button{border:0;cursor:pointer;border-radius:14px;background:white;color:#22245d;padding:12px;min-height:44px}#map,#markers{position:fixed;inset:0}#map canvas{display:block;touch-action:none}#markers{pointer-events:none}.marker{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;min-height:44px;min-width:44px;padding:8px;background:transparent;border-radius:50%}.marker span{display:grid;place-items:center;background:white;border-radius:9px;box-shadow:0 2px 8px #20324c22;font-weight:750;min-width:30px;height:30px}.marker img{width:23px;height:23px;object-fit:contain}.marker.brand span{background:#ef0755;color:white;font-size:23px}.marker.user span{min-width:20px;width:20px;height:20px;background:#2876ff;border:3px solid white;border-radius:50%;box-shadow:0 0 0 9px #2876ff22}.marker.active span{outline:3px solid #2876ff}header{position:fixed;top:max(14px,env(safe-area-inset-top));left:16px;right:16px;display:flex;gap:8px;background:white;padding:8px;border-radius:22px;box-shadow:0 6px 24px #25375018}header a{padding:3px 12px;text-decoration:none;color:#22245d;font-size:30px}header input{width:100%;min-width:0;border:0;outline:none}header button[aria-pressed=true]{background:#22245d;color:white}#results{position:absolute;top:100%;left:0;right:0;background:white;margin-top:8px;border-radius:16px;padding:8px;max-height:40vh;overflow:auto}#results button{display:block;text-align:left;width:100%}.context{position:fixed;top:95px;left:16px;padding:10px 14px;background:#ffffffed;border-radius:16px}.context small{display:block;margin-top:3px;color:#657389}.controls{position:fixed;right:16px;bottom:100px;display:grid;gap:10px}.controls button{width:48px;height:48px;box-shadow:0 5px 20px #22334a14;font-size:22px}section{position:fixed;bottom:36px;left:16px;width:min(420px,calc(100% - 32px));background:white;padding:20px;border-radius:24px;box-shadow:0 10px 40px #23334a20;max-height:65vh;overflow:auto}section h2{margin:6px 0;font-size:23px}section p{color:#62718a;line-height:1.45}#close,#end{float:right}.primary{background:#22245d;color:white}#editor label{display:block;margin:12px 0}#editor input,#editor textarea{display:block;width:100%;border:1px solid #c5cfdb;border-radius:8px;padding:8px;margin-top:5px}#vertices{min-height:90px;font-size:12px}footer{position:fixed;bottom:max(8px,env(safe-area-inset-bottom));left:16px;right:16px;font-size:11px;color:#e0e5f3;text-shadow:0 1px 3px #171936;pointer-events:none} [hidden]{display:none!important}@media(max-width:600px){body:has(section:not([hidden])) .controls{bottom:min(70vh,480px)}}

#markers{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);pointer-events:none}#markers button{pointer-events:auto}#map{overflow:hidden}#map canvas{width:100%;height:100%}

#map canvas{cursor:grab}#map canvas:active{cursor:grabbing}

header .brand{font-size:18px;font-weight:800;display:grid;place-items:center;padding:4px 8px}dialog{border:0;border-radius:22px;padding:24px;width:min(440px,calc(100% - 32px));max-height:85vh;overflow:auto;color:#243247;background:white;box-shadow:0 16px 60px #0005}dialog::backdrop{background:#10122988}.close{float:right}dialog p{line-height:1.5;color:#62718a}.map-menu-links{display:grid;gap:8px;margin:20px 0}.map-menu-links a{padding:12px;color:#22245d;text-decoration:none;background:#f1f3f7;border-radius:12px}.map-menu-links button{text-align:left;background:#f1f3f7}.install-heading{display:flex;align-items:center;gap:12px}.install-steps{padding-left:24px}.install-steps li{margin:18px 0}.install-steps span{display:block;margin-top:6px;line-height:1.5}#install-status{color:#22245d}@media(max-width:450px){header{left:8px;right:8px;gap:2px}header button{padding:8px}header .brand{padding:4px}}

.area-selectors{display:flex;gap:8px;margin-top:10px}.area-selectors select{min-height:40px;max-width:170px;border:1px solid #c5cfdb;border-radius:10px;padding:6px;color:#243247;background:white;font:inherit}.context{max-width:calc(100% - 32px)}@media(max-width:600px){.context{top:88px}.context strong{font-size:14px}.area-selectors select{font-size:13px;max-width:145px}}

.context{text-align:left;min-height:44px}.context strong{display:block}#floor-options{display:grid;gap:8px}#floor-options button{text-align:left;background:#f1f3f7}#floor-options button[aria-current=true]{background:#22245d;color:white}#floor-tray{margin:auto 16px auto auto;width:min(320px,calc(100% - 32px))}button:disabled{opacity:.5;cursor:default}

@media(max-width:600px){#floor-context{display:none}}

/* Passenger chrome: wider search, iOS-safe input sizing and visible keyboard focus. */
header input{font-size:16px;background:transparent;padding:10px 8px;min-height:44px;border-radius:10px}
header input:focus-visible{outline:2px solid #22245d;outline-offset:-2px}
button:focus-visible,a:focus-visible{outline:3px solid #2876ff;outline-offset:3px}
#admin[aria-pressed=true]{background:#22245d;color:white}
@media(max-width:600px){.controls{right:12px;bottom:calc(70px + env(safe-area-inset-bottom))}.controls button{width:44px;height:44px;font-size:20px}}

/* Controls track the actual card height rather than a fixed viewport offset. */
.controls{bottom:calc(48px + env(safe-area-inset-bottom) + var(--sheet-height,0px));transition:bottom .18s ease}body:has(section:not([hidden])) .controls{bottom:calc(48px + env(safe-area-inset-bottom) + var(--sheet-height,0px))}section{bottom:calc(36px + env(safe-area-inset-bottom))}header{align-items:center}header input::-webkit-search-cancel-button{display:none}#search-clear{font-size:25px}#route-endpoints{margin:16px 0;border-radius:14px;background:#f3f5f9;padding:8px}#origin-select{width:100%;text-align:left;background:transparent;border-bottom:1px solid #d9dfe8;border-radius:0;color:#2876ff}#destination-label{padding:12px;font-weight:600}.search-result{display:flex!important;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid #edf0f4;border-radius:0}.result-icon{width:38px;height:38px;flex-shrink:0;border-radius:50%;background:#eef1f8;display:grid;place-items:center;font-size:22px}.search-result strong,.search-result small{display:block}.search-result small{color:#657389;margin-top:5px;font-size:12px}#place-meta p{margin:10px 0}.demo-facts{font-size:13px;background:#f4f6fa;padding:10px;border-radius:10px}#place-actions{display:inline-block;margin:8px}#place-actions button{background:#edf1ff}#origin-search{width:100%;border:1px solid #d9dfe8;border-radius:12px;padding:12px;font-size:16px;margin:14px 0}#origin-results button{display:block;width:100%;text-align:left;border-bottom:1px solid #edf0f4;border-radius:0}@media(max-width:600px){section{width:calc(100% - 24px);left:12px;padding:18px;max-height:48vh}.controls{bottom:calc(48px + env(safe-area-inset-bottom) + var(--sheet-height,0px))}}

#route-floors{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}#route-floors button{background:#eef1f8;min-height:36px;padding:8px 12px}.route-option{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:13px}.route-option input{width:18px;height:18px}body:has(#nav:not([hidden])) #floor-open{display:none}
