:root{color-scheme:dark;--bg:#101318;--surface:#1b2029;--line:#2c333e;--text:#f4f6fa;--muted:#aab4c3;--accent:#8fd3ff;--green:#75d49c;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}button,input{font:inherit}button{cursor:pointer;color:inherit;transition:background .15s,border-color .15s}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex="0"]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}h1,h2,p{margin:0}h1,h2{font-weight:600;line-height:1.25}h2{font-size:13px}a,.accent{color:var(--accent)}.eyebrow{font-size:10px;font-weight:600;letter-spacing:1.6px;color:var(--muted)}.secondary{min-height:40px;display:inline-flex;gap:8px;align-items:center;justify-content:center;padding:8px 13px;border:1px solid #465361;border-radius:9px;background:var(--surface)}.secondary:hover{background:#293340}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px;min-height:40px;border:0;border-radius:7px;background:transparent;color:var(--muted);white-space:nowrap}.text-button:hover{background:#8fd3ff12;color:var(--text)}
.login{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 22px;background:radial-gradient(ellipse at 50% 35%,#1d2b3880,transparent 55%),var(--bg)}.login-card{max-width:480px;text-align:center}.brand-icon{margin-bottom:10px}.wordmark{font-size:34px;font-weight:700;letter-spacing:-1px}.wordmark span{color:var(--accent)}.google-button{display:flex;justify-content:center;min-height:44px;margin:32px 0 0}#login-status{color:var(--muted);font-size:13px;max-width:390px;margin:14px auto 0;overflow-wrap:anywhere}#login-retry{margin-top:15px}.noscript{position:fixed;inset:auto 16px 20px;padding:16px;background:var(--surface);text-align:center}
.app{height:100svh;display:flex;flex-direction:column}.topbar{height:72px;flex-shrink:0;display:flex;align-items:center;gap:28px;padding:0 28px;border-bottom:1px solid var(--line)}.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--text);font-size:27px;letter-spacing:-.8px;font-weight:700}.view-label{color:var(--muted);font-size:12px;border-left:1px solid var(--line);padding-left:28px}.account{margin-left:auto;display:flex;gap:22px;align-items:center}.account>span{font-size:13px}.account .text-button{font-size:12px}.workspace{display:grid;grid-template-columns:330px minmax(0,1fr);flex:1;min-height:0}.sidebar{display:flex;flex-direction:column;overflow-y:auto;border-right:1px solid var(--line);padding:30px 22px 0;background:#14181f;scrollbar-width:thin;scrollbar-color:#465361 transparent}.sidebar-head h1{font-size:22px;letter-spacing:-.5px;margin-top:9px}.tabs{display:flex;gap:5px;padding:5px;border-radius:11px;background:#0d1117;margin:26px 0}.tabs button{min-height:43px;flex:1;background:transparent;border:0;border-radius:7px;color:var(--muted);font-size:13px;font-weight:500}.tabs button[aria-selected="true"]{background:#293746;color:var(--accent)}.tabs button:hover{color:var(--text)}.people-section h2{color:var(--muted);font-weight:500;margin-bottom:12px}.people{display:flex;flex-direction:column;gap:7px}.person{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid transparent;border-radius:10px;background:transparent;padding:11px;min-height:65px}.person:hover{background:var(--surface)}.person[aria-pressed="true"]{background:#8fd3ff0c;border-color:#8fd3ff4d}.avatar{flex-shrink:0;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#273442;color:var(--accent);font-size:16px;font-weight:600;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.person-copy{min-width:0;flex:1}.person-name{display:block;font-size:14px;font-weight:600;overflow-wrap:anywhere}.person-age{display:block;color:var(--muted);font-size:11px;margin-top:2px}.you{color:var(--muted);font-size:11px;font-weight:400;margin-left:6px}.person-dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0}.person-dot.stale{background:#798698}.panel{margin-top:26px;padding-top:23px;border-top:1px solid var(--line)}.panel>h2,.section-row h2{color:var(--muted);font-weight:500}.location-detail{margin-top:15px}.location-detail strong{font-weight:500;font-size:16px}.location-detail p{margin-top:8px;color:var(--muted);font-size:12px}.location-detail .coordinates{color:var(--accent);font-variant-numeric:tabular-nums;font-size:14px;letter-spacing:.3px}.hint{font-size:11px;line-height:1.8;color:var(--muted);margin-top:24px}.sidebar-footer{display:flex;align-items:center;gap:8px;margin-top:auto;padding:30px 0 22px;color:var(--muted);font-size:11px}.readonly-dot{width:6px;height:6px;border-radius:50%;border:1px solid var(--muted)}.section-row{display:flex;align-items:center;justify-content:space-between}.count{font-size:11px;color:var(--muted);padding:1px 7px;border-radius:4px;background:var(--surface)}.date-filter{margin:16px 0 20px}.date-filter label{display:block;font-size:11px;color:var(--muted);margin-bottom:6px}.date-filter>div{display:flex;gap:6px;align-items:center}.date-filter input{color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:8px;min-width:0;flex:1;min-height:40px}.date-filter button{font-size:11px}.route-list{display:flex;flex-direction:column;gap:8px;padding-bottom:8px}.empty{color:var(--muted);font-size:12px;padding:8px 0;line-height:1.8}.route-item{width:100%;padding:14px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px}.route-item:hover{border-color:#687f90}.route-item[aria-pressed="true"]{border-color:var(--accent);background:#8fd3ff0d}.route-date{display:block;font-size:12px;font-weight:600}.route-time{display:block;color:var(--muted);font-size:12px;margin-top:4px}.route-stats{display:flex;gap:14px;margin-top:12px;color:var(--accent);font-size:12px}.active-badge{display:inline-block;font-size:10px;font-weight:500;color:var(--green);margin-left:6px}
.map-panel{position:relative;min-width:0;min-height:0;isolation:isolate;background:#141b22}#map{position:absolute;inset:0}.map-heading{position:absolute;top:24px;left:28px;right:28px;display:flex;align-items:center;justify-content:space-between;gap:16px;pointer-events:none}.map-heading>div,.map-heading>button{pointer-events:auto;background:#141a22f2;border:1px solid #3a4550;box-shadow:0 3px 18px #0002}.map-heading>div{padding:13px 18px;border-radius:11px}.map-heading h2{font-size:17px;margin-top:4px}.map-heading .eyebrow{font-size:9px}.map-heading .secondary{color:var(--muted);backdrop-filter:blur(8px)}.map-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#141a22f5;border:1px solid #3a4550;border-radius:13px;padding:18px 24px;max-width:360px;width:calc(100% - 48px);color:var(--muted);text-align:center;font-size:13px;box-shadow:0 4px 28px #0002}.map-footer{position:absolute;bottom:22px;left:28px;right:28px;display:flex;gap:14px;align-items:center;justify-content:space-between;min-height:48px;background:#141a22f2;border:1px solid #3a4550;padding:5px 10px 5px 16px;border-radius:10px;backdrop-filter:blur(8px)}.sync-state{display:flex;align-items:center;gap:9px;min-width:0}.sync-dot{flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--green)}.sync-dot.error{background:#ffb4ab}.sync-state p{font-size:11px;color:var(--muted)}.map-footer button{font-size:11px;flex-shrink:0}.route-summary{position:absolute;bottom:96px;left:28px;display:flex;gap:28px;max-width:calc(100% - 56px);background:#141a22f5;border:1px solid #3a4550;border-radius:11px;padding:17px 22px;box-shadow:0 3px 18px #0002}.route-summary span{display:block;font-size:10px;color:var(--muted);margin-bottom:4px}.route-summary strong{font-size:17px;font-weight:500;white-space:nowrap}.maplibregl-ctrl-top-right{top:110px;right:18px}.maplibregl-ctrl-attrib{font-size:9px!important}.maplibregl-ctrl-group{filter:invert(.88) hue-rotate(180deg)}.map-marker{border:0;background:transparent;padding:0;min-width:44px;min-height:44px;display:grid;place-items:center}.map-marker>span{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--accent);color:#101318;border:3px solid #f4f6fa;box-shadow:0 0 0 7px #8fd3ff25,0 4px 18px #0008;font-size:13px;font-weight:700}.map-marker img{width:100%;height:100%;border-radius:50%;object-fit:cover}.map-marker.selected>span{box-shadow:0 0 0 9px #8fd3ff35,0 4px 18px #0008}.endpoint{width:25px;height:25px;border:3px solid #f4f6fa;border-radius:50%;background:var(--accent);color:#101318;font-size:10px;font-weight:700;display:grid;place-items:center;box-shadow:0 2px 12px #0008}
@media(min-width:1600px){.workspace{grid-template-columns:360px minmax(0,1fr)}.sidebar{padding-left:28px;padding-right:28px}}
@media(max-width:760px){.app{height:auto;min-height:100svh}.topbar{height:62px;padding:0 18px;gap:12px}.brand{font-size:24px}.view-label{display:none}.account{gap:12px}.workspace{display:flex;flex-direction:column}.sidebar{padding:22px 18px 0;border-right:0;overflow:visible;order:1}.sidebar-head{display:none}.tabs{margin:0 0 20px}.people{flex-direction:row;overflow-x:auto;padding:3px 2px 6px}.person{min-width:150px;flex:1;gap:9px;padding:9px}.person-age{font-size:10px}.people-section h2{margin-bottom:8px}.panel{margin-top:16px;padding-top:18px}.sidebar-footer{padding:20px 0}.hint{margin-top:12px}.map-panel{height:52svh;min-height:360px;order:0;border-bottom:1px solid var(--line)}.map-heading{top:16px;left:16px;right:16px}.map-heading>div{padding:10px 13px}.map-heading h2{font-size:15px}.map-heading .secondary{font-size:11px}.maplibregl-ctrl-top-right{top:90px;right:7px}.map-footer{bottom:23px;left:14px;right:14px;padding-left:11px;gap:5px}.map-footer button{padding:6px;font-size:10px}.sync-state p{font-size:10px}.route-summary{left:14px;bottom:94px;gap:20px;padding:12px 15px;max-width:calc(100% - 28px)}.route-summary strong{font-size:15px}.route-list{max-height:400px;overflow-y:auto}}
.map-panel{display:flex;flex-direction:column}.map-canvas{position:relative;flex:1;min-height:0}.map-footer{position:relative;inset:auto;flex-shrink:0;margin:12px 28px 18px}.route-summary{flex-wrap:wrap;bottom:28px}
@media(max-width:760px){.map-panel{height:auto}.map-canvas{flex:none;height:52svh;min-height:400px}.map-footer{inset:auto;margin:10px 14px 14px}.route-summary{bottom:80px}}
@media(pointer:coarse){.secondary,.text-button,.tabs button,.date-filter input{min-height:44px}.date-filter input{font-size:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Match Google's light iframe so its outer canvas stays transparent. */
.google-button iframe{color-scheme:light}
.account{gap:14px}.sidebar{padding-top:24px}.sidebar-head h1{font-size:20px}.tabs{margin:20px 0}.people-section h2{margin-bottom:8px}.person{min-height:56px;padding:8px 10px}.panel{margin-top:18px;padding-top:18px}.person .avatar{position:relative;overflow:visible}.person .avatar img{border-radius:50%}.person.in-route .avatar{box-shadow:0 0 0 3px #58d282}.person-home{position:absolute;right:-5px;bottom:-3px;width:19px;height:19px;border:2px solid var(--bg);border-radius:50%;display:grid;place-items:center;background:#273442;color:var(--accent);font-size:15px;line-height:1}.person-home svg{width:12px;height:12px}.tracking-state{color:var(--green)!important}.live-controls{display:flex;gap:18px;margin-bottom:18px}.live-controls label{display:flex;align-items:center;gap:6px;min-height:30px;font-size:12px;cursor:pointer}.live-controls input{width:17px;height:17px;accent-color:var(--accent)}.refresh-phone{margin-top:16px;font-size:12px}.hint{margin-top:14px}.map-heading>.map-tools{display:flex;gap:8px;align-items:center;padding:0;background:transparent;border:0;box-shadow:none;min-width:0}.map-tools select{min-height:42px;max-width:190px;padding:8px;border:1px solid #465361;border-radius:9px;background:#141a22f2;color:var(--text);font:inherit;font-size:12px}.route-summary{position:static;max-width:none;flex-shrink:0;margin:10px 28px 0;padding:9px 16px;gap:28px;box-shadow:none}.route-summary>div{display:flex;align-items:baseline;gap:9px}.route-summary span{font-size:11px}.route-summary strong{font-size:14px}.route-scroll{max-height:calc(100svh - 440px);min-height:120px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#465361 transparent}.route-columns{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:1.1fr .8fr 1fr 1fr;gap:4px;padding:8px 31px 8px 8px;background:#14181f;color:var(--muted);font-size:10px}.route-list{gap:0}.route-row{display:flex;gap:3px;align-items:center;border-bottom:1px solid var(--line)}.route-item{display:grid;grid-template-columns:1.1fr .8fr 1fr 1fr;gap:4px;align-items:center;padding:12px 7px;border:1px solid transparent;border-radius:6px;background:transparent;min-width:0;flex:1}.route-item>span{min-width:0;overflow-wrap:anywhere;font-size:11px;margin:0;font-weight:400}.route-item .route-date{font-weight:600}.route-item .route-distance{color:var(--accent)}.route-item[aria-pressed="true"]{background:#8fd3ff0d}.route-item:hover{background:var(--surface)}.route-delete{min-width:28px;min-height:40px;border:0;border-radius:6px;background:transparent;color:#ffb4ab;font-size:20px}.route-delete:hover{background:#ffb4ab18}.active-badge{display:block;font-size:9px;margin:2px 0 0}.routes-more{margin-top:10px;width:100%;font-size:12px}
@media(max-width:760px){.topbar{gap:8px}.account{gap:6px}.account>span{display:none}.account .text-button{font-size:11px;padding:7px}.sidebar{padding-top:20px}.map-heading{gap:8px;align-items:flex-start}.map-heading>div:first-child{padding:10px;max-width:38%}.map-tools{flex-wrap:wrap;justify-content:flex-end;max-width:60%}.map-tools select{max-width:100%;min-height:40px;font-size:11px}.map-tools .secondary{font-size:11px;padding:6px 10px}.route-summary{margin:8px 14px 0;padding:8px 12px;gap:10px 20px}.route-summary>div{gap:6px}.route-scroll{max-height:390px}.route-list{max-height:none;overflow:visible}.route-item{min-height:52px}.route-delete{min-width:40px;min-height:44px}.route-columns{padding-right:44px}.live-controls label{min-height:44px}}
/* The bell stays below the nickname; its 44px hit area continues over passive location text. */
.map-people{position:absolute;bottom:8px;right:8px;width:max-content;max-width:calc(100% - 16px);z-index:3;display:flex;gap:0;border:1px solid #465361;border-radius:14px;background:#141a22f2;box-shadow:0 3px 12px #0003;pointer-events:auto}.map-person{position:relative;flex:0 1 auto;display:grid;grid-template-columns:minmax(0,1fr);align-items:center;min-width:0;padding:4px 6px 8px;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--text);pointer-events:auto}.map-person+.map-person{border-left:1px solid #465361}.map-person-select{display:flex;align-items:center;gap:7px;min-width:0;min-height:48px;padding:3px 0;border:0;background:transparent;text-align:left}.map-person .avatar{flex:none;width:28px;height:28px;font-size:12px;border:3px solid var(--person-color);border-radius:50%;overflow:hidden}.map-person .avatar img{width:100%;height:100%;object-fit:cover}.map-person.in-route .avatar{outline:3px solid #58d282;outline-offset:2px}.map-person-heading{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden;white-space:nowrap}.map-person-heading strong{font-size:12px;overflow:hidden;text-overflow:ellipsis}.map-person-status{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.map-person.in-route .map-person-status{color:#58d282}.map-person-fix,.map-person-contact{grid-column:1/-1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.4;pointer-events:none}.map-person-fix{color:var(--accent)}.map-person-contact{color:var(--green)}.map-person-contact.missing{color:var(--muted)}
.map-canvas:has(.map-people:not([hidden])) .loca-speed-legend{bottom:calc(var(--people-panel-height,90px) + 24px)}
.map-person-fix.stale,.map-person-contact.stale{color:#f4b740}
.map-person-heading strong{flex-shrink:0}.map-person-status{flex:0 1 auto}.map-person-heading{gap:4px}.map-person-select{gap:5px}@media(max-width:420px){.map-person-status{font-size:9px}.map-person-heading{gap:3px}}

.map-person-header{display:flex;align-items:center;gap:5px;min-width:0}.map-person-select{justify-content:center;min-width:44px;flex:none}.map-person-nick{position:relative;min-width:0;min-height:48px;padding:0;border:0;border-radius:7px;background:transparent;color:var(--text);text-align:left;overflow:visible;text-overflow:ellipsis}.map-person-nick:hover{background:#8fd3ff15}.map-person-nick strong{min-width:0;flex-shrink:1;font:inherit;font-size:12px;font-weight:600}.map-person-heading{flex:0 1 auto;overflow:visible}.map-person-heading strong{display:block}
.map-person{align-content:start;padding:4px 3px 4px;overflow:hidden;cursor:pointer}.map-person-header{gap:3px}
.person-contact-status{display:inline-flex;flex:none;flex-direction:column;align-items:center;gap:3px;margin-right:6px;vertical-align:middle}.person-contact-dot{display:block;flex:none;width:7px;height:7px;border-radius:50%;background:var(--green)}.person-contact-dot.stale{background:#f4b740}.person-contact-age{color:#f4b740;font-size:10px;font-weight:400;line-height:1.2;white-space:nowrap}.map-person-nick{display:flex;align-items:center;justify-content:flex-start}
/* Extend the name hit area into adjacent blank space, clipped to its own person tile. */
.map-person-nick::before{content:"";position:absolute;top:0;bottom:0;left:0;width:max(44px,100%)}
