
:root{--green:#A6D514;--green-700:#759c00;--green-soft:#eff8cf;--orange:#FF7F00;--black:#101214;--ink:#1c2228;--muted:#6b747c;--line:#e3e7e9;--panel:#fff;--bg:#f5f7f8;--danger:#d94b35;--warning:#f0a400;--shadow:0 12px 32px rgba(22,29,34,.09);--radius:18px;--radius-sm:12px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{padding-top:76px}button,input,textarea,select{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}.topbar{height:76px;position:fixed;z-index:1200;top:0;left:0;right:0;display:flex;align-items:center;padding:0 28px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--black);min-width:330px}.brand-mark{width:96px;height:50px;display:flex;align-items:center;overflow:hidden}.brand-mark img{width:100%;height:auto;display:block}.brand-copy{display:flex;flex-direction:column;line-height:1.05}.brand-copy strong{font-size:16px;letter-spacing:.01em}.brand-copy span{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-top:5px}.main-nav{display:flex;align-items:center;gap:8px;margin:auto}.main-nav a{color:#525b62;text-decoration:none;font-size:14px;font-weight:700;padding:11px 15px;border-radius:10px;display:flex;gap:8px;align-items:center}.main-nav a:hover{background:#f1f4f3;color:#15191c}.main-nav a.active{color:#1d2508;background:var(--green-soft)}.nav-badge{background:var(--green);color:#1a2204;min-width:20px;height:20px;border-radius:99px;display:inline-flex;align-items:center;justify-content:center;font-size:11px}.top-actions{min-width:330px;display:flex;justify-content:flex-end}.icon-btn{border:1px solid var(--line);background:var(--panel);width:40px;height:40px;border-radius:10px;cursor:pointer;color:var(--ink);display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover{border-color:#cbd1d4;background:#fafbfb}.shell{max-width:1600px;margin:0 auto;padding:28px 30px 40px}.hero-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px}.hero-row.compact{align-items:center}.hero-row h1{font-size:32px;line-height:1.05;margin:4px 0 8px;letter-spacing:-.035em}.eyebrow,.mini-label{font-size:10px;letter-spacing:.18em;font-weight:800;color:var(--green-700);margin:0;text-transform:uppercase}.subtle{margin:0;color:var(--muted);font-size:14px}.hero-actions{display:flex;gap:10px;align-items:center}.btn{appearance:none;border:0;border-radius:11px;padding:11px 16px;font-size:13px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.18s ease}.btn.primary{background:var(--green);color:#182000;box-shadow:0 5px 16px rgba(166,213,20,.28)}.btn.primary:hover{transform:translateY(-1px);filter:brightness(.96)}.btn.ghost{background:#fff;color:#30373d;border:1px solid var(--line)}.btn.outline{background:transparent;color:#273000;border:1px solid #b8d75a}.btn.full{width:100%}.btn.tiny{padding:8px 11px;font-size:12px;border-radius:9px}.text-btn{background:none;border:0;color:var(--green-700);font-weight:800;font-size:12px;cursor:pointer}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.kpi-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}.kpi-card{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:17px 18px;display:flex;align-items:center;gap:14px}.kpi-icon{width:40px;height:40px;border-radius:12px;background:var(--green-soft);display:flex;align-items:center;justify-content:center;font-size:18px}.kpi-card.warn .kpi-icon{background:#fff2dd}.kpi-card.cycle{border-color:#cfe7a0;background:linear-gradient(135deg,#fbfff4,#f4fbe8)}.kpi-card.cycle .kpi-icon{background:#dff1b8;color:#486300}.kpi-card.cycle strong{color:#3e5700}.kpi-card strong{display:block;font-size:24px;letter-spacing:-.03em}.kpi-card span{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em}.overview-workspace{height:calc(100vh - 245px);min-height:590px;display:grid;grid-template-columns:320px minmax(420px,1fr) 360px;overflow:hidden}.location-rail,.detail-panel{min-width:0;background:#fff}.location-rail{border-right:1px solid var(--line);display:flex;flex-direction:column}.rail-search,.route-search{position:relative;margin:16px}.rail-search input,.route-search input{width:100%;height:44px;border:1px solid var(--line);background:#f9faf9;border-radius:11px;padding:0 38px 0 13px;outline:none}.rail-search input:focus,.route-search input:focus{border-color:#b6d35c;box-shadow:0 0 0 3px rgba(166,213,20,.13)}.search-icon,.route-search>span{position:absolute;right:13px;top:50%;transform:translateY(-50%);color:#8c9499}.filter-row{display:flex;gap:6px;flex-wrap:wrap;padding:0 16px 12px}.filter-chip{border:1px solid var(--line);background:white;border-radius:99px;padding:7px 10px;font-size:11px;font-weight:800;color:#5e676d;cursor:pointer}.filter-chip.active{background:#1d2314;border-color:#1d2314;color:white}.rail-meta{display:flex;align-items:center;justify-content:space-between;padding:9px 16px;border-top:1px solid #f0f2f3;border-bottom:1px solid var(--line);font-size:11px;font-weight:800;color:#7b848a}.location-list{overflow:auto;flex:1;padding:8px}.location-item{padding:12px;border-radius:12px;cursor:pointer;border:1px solid transparent;margin-bottom:3px}.location-item:hover{background:#f8faf5;border-color:#eef2e4}.location-item.active{background:var(--green-soft);border-color:#dceca5}.location-item .topline{display:flex;align-items:flex-start;gap:8px;justify-content:space-between}.location-item strong{font-size:13px;line-height:1.25}.location-item small{display:block;color:var(--muted);font-size:11px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.priority-dot{width:9px;height:9px;border-radius:50%;background:#c7ced2;flex:0 0 auto;margin-top:4px}.priority-dot.high{background:var(--orange)}.map-stage{position:relative;min-width:0;background:#e9ece8}.map{height:100%;width:100%;background:radial-gradient(circle at 50% 40%,#f8faf5,#dfe5df)}.map-overlay{position:absolute;left:16px;right:16px;bottom:14px;z-index:500;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border:1px solid rgba(220,225,222,.9);box-shadow:0 7px 20px rgba(0,0,0,.08);border-radius:11px;padding:9px 12px;font-size:10px;font-weight:700;color:#596168;display:flex;gap:8px;align-items:center}.map-note{margin-left:auto;font-weight:500}.dot{display:inline-block;width:8px;height:8px;border-radius:50%}.dot.green{background:var(--green)}.dot.orange{background:var(--orange)}.detail-panel{border-left:1px solid var(--line);overflow:auto}.empty-detail{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:34px;color:var(--muted)}.empty-detail h3{color:var(--ink);margin:10px 0 5px}.empty-detail p{font-size:12px;line-height:1.5}.empty-icon{font-size:28px;background:var(--green-soft);width:58px;height:58px;display:flex;align-items:center;justify-content:center;border-radius:16px}.detail-hero{padding:20px;border-bottom:1px solid var(--line)}.detail-hero .detail-badges{display:flex;gap:7px;margin-bottom:10px}.badge{border-radius:99px;padding:5px 8px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;background:#f1f3f4;color:#5f686e}.badge.green{background:var(--green-soft);color:#5d7d00}.badge.orange{background:#fff0de;color:#a85b00}.detail-hero h2{font-size:19px;line-height:1.2;margin:0 0 8px}.detail-hero p{font-size:12px;color:var(--muted);margin:0;line-height:1.45}.detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.detail-section{padding:14px 20px;border-bottom:1px solid var(--line)}.detail-row{display:grid;grid-template-columns:28px 1fr;gap:9px;padding:9px 0}.detail-row .ico{font-size:14px}.detail-row label{display:block;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.09em;color:#8a9297;margin-bottom:3px}.detail-row .value{font-size:12px;line-height:1.4;color:#252b30}.detail-row a{color:#607e00;font-weight:800;text-decoration:none}.detail-edit{padding:15px 20px 20px}.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.field>span{font-size:10px;font-weight:800;color:#677077;text-transform:uppercase;letter-spacing:.08em}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:9px;padding:9px 10px;background:#fff;outline:none;color:var(--ink)}.field textarea{min-height:74px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#b4d050;box-shadow:0 0 0 3px rgba(166,213,20,.12)}.data-flag{font-size:10px;color:#8b5600;background:#fff6e8;border:1px solid #f6deb6;border-radius:9px;padding:8px 9px;margin-top:7px}.leaflet-control-zoom a{color:#232a2e!important}.custom-marker{width:28px;height:28px;border-radius:50% 50% 50% 8px;background:var(--green);border:3px solid #fff;box-shadow:0 4px 10px rgba(0,0,0,.25);transform:rotate(-45deg);display:flex;align-items:center;justify-content:center}.custom-marker::after{content:"";width:6px;height:6px;border-radius:50%;background:#202500}.custom-marker.attention{background:var(--orange)}.custom-marker span{transform:rotate(45deg)}
/* route */.route-layout{display:grid;grid-template-columns:380px 1fr;gap:18px;align-items:start}.route-sidebar{padding:18px;position:sticky;top:96px;max-height:calc(100vh - 114px);overflow:auto}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-head h2{font-size:18px;margin:4px 0 15px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.input-suffix{position:relative}.input-suffix input{width:100%;padding-right:43px}.input-suffix em{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:10px;color:var(--muted);font-style:normal}.route-search{margin:5px 0 0}.route-search-results{max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:10px;display:none;margin-top:8px}.route-search-results.open{display:block}.route-result{padding:10px;border-bottom:1px solid #eef0f1;cursor:pointer}.route-result:last-child{border:0}.route-result:hover{background:#f8faf5}.route-result strong{display:block;font-size:12px}.route-result small{color:var(--muted);font-size:10px}.selected-header{display:flex;justify-content:space-between;align-items:center;margin:18px 0 8px}.selected-header strong{font-size:12px}.selected-header span{font-size:10px;background:#edf1f2;padding:4px 7px;border-radius:99px}.route-stop-list{display:flex;flex-direction:column;gap:7px}.route-stop{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;border:1px solid var(--line);border-radius:11px;padding:9px;background:#fff}.stop-num{width:25px;height:25px;border-radius:8px;background:var(--green-soft);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:900}.route-stop strong{display:block;font-size:11px;line-height:1.25}.route-stop small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.stop-actions{display:flex;gap:3px}.stop-actions button{border:0;background:#f5f7f7;border-radius:6px;width:24px;height:24px;cursor:pointer;color:#687178}.route-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.route-main{display:flex;flex-direction:column;gap:14px}.route-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.route-kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px}.route-kpi span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:#828a90;font-weight:900}.route-kpi strong{display:block;font-size:22px;margin-top:5px}.route-map{height:500px;overflow:hidden;position:relative}.route-map-actions{position:absolute;z-index:500;right:14px;top:14px;display:flex;gap:7px}.saved-section{padding:18px}.count-pill{font-size:10px;font-weight:800;background:#f0f3f4;border-radius:99px;padding:6px 9px;color:#687178}.saved-routes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.saved-route{border:1px solid var(--line);border-radius:12px;padding:13px;cursor:pointer}.saved-route:hover{border-color:#c4d96e;background:#fbfdf5}.saved-route-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.saved-route h3{font-size:12px;margin:0 0 5px}.saved-route-delete{border:1px solid #e0b9b9;background:#fff;color:#9b3030;border-radius:7px;padding:4px 7px;font-size:9px;font-weight:800;cursor:pointer;flex:0 0 auto}.saved-route-delete:hover{background:#fff4f4;border-color:#cf8787}.saved-route p{font-size:10px;color:var(--muted);margin:0 0 10px}.saved-route .saved-meta{display:flex;justify-content:space-between;font-size:9px;font-weight:800;color:#667076}.route-empty{padding:24px 10px;text-align:center;color:var(--muted);font-size:11px;border:1px dashed #d9dfe1;border-radius:11px}.toast{position:fixed;right:24px;bottom:24px;z-index:2000;background:#1d2326;color:#fff;padding:11px 14px;border-radius:10px;font-size:12px;font-weight:700;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}
/* calendar */.calendar-layout{display:grid;grid-template-columns:1fr 350px;gap:18px}.calendar-card{padding:18px}.calendar-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:18px}.calendar-toolbar>div{min-width:210px}.calendar-toolbar h2{margin:3px 0 0;font-size:21px}.calendar-toolbar .btn{margin-left:auto}.weekday-row,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.weekday-row span{padding:9px 10px;font-size:9px;text-transform:uppercase;letter-spacing:.11em;font-weight:900;color:#8b9398;border-bottom:1px solid var(--line)}.calendar-day{min-height:118px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px;cursor:pointer;position:relative;background:#fff}.calendar-day:nth-child(7n){border-right:0}.calendar-day:hover{background:#fbfdf6}.calendar-day.outside{background:#fafbfb;color:#b7bdc0}.calendar-day.today .day-num{background:var(--green);color:#172000}.calendar-day.selected{box-shadow:inset 0 0 0 2px var(--green)}.day-num{width:27px;height:27px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:900}.calendar-event{margin-top:7px;border-left:3px solid var(--green);background:#f2f8dc;border-radius:6px;padding:6px 7px;font-size:9px;font-weight:800;color:#405800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.done{border-color:#707b80;background:#f0f2f3;color:#586166}.more-events{font-size:9px;color:#7f878c;margin-top:5px}.day-panel{min-height:560px;padding:18px;position:sticky;top:96px}.day-panel h2{font-size:20px;margin:4px 0 5px}.day-panel .day-sub{font-size:11px;color:var(--muted);margin-bottom:18px}.day-route{border:1px solid var(--line);border-radius:13px;padding:13px;margin-bottom:9px}.day-route h3{font-size:12px;margin:0 0 5px}.day-route p{font-size:10px;color:var(--muted);margin:0 0 10px}.day-route-actions{display:flex;gap:6px}.assign-box{border-top:1px solid var(--line);margin-top:18px;padding-top:15px}.assign-box h3{font-size:12px;margin:0 0 10px}.assign-row{display:flex;gap:7px}.assign-row select{min-width:0;flex:1;border:1px solid var(--line);border-radius:9px;padding:8px}.empty-day{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:var(--muted);padding:25px}.empty-day strong{color:var(--ink);margin-top:9px}.empty-day p{font-size:11px;line-height:1.45}.calendar-stop-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.calendar-stop{font-size:10px;border-radius:8px;background:#f7f8f8;padding:7px 8px}.calendar-stop b{margin-right:6px;color:#718c14}
/* dark */body.dark{--ink:#eef2f3;--muted:#9ba6ac;--line:#30383d;--panel:#1b2125;--bg:#13181b;--black:#fff;--green-soft:#263310;--shadow:0 12px 32px rgba(0,0,0,.26)}body.dark .topbar{background:rgba(27,33,37,.95)}body.dark .btn.ghost,body.dark .location-rail,body.dark .detail-panel,body.dark .field input,body.dark .field select,body.dark .field textarea,body.dark .route-stop,body.dark .calendar-day{background:var(--panel)}body.dark .rail-search input,body.dark .route-search input{background:#22292d;color:var(--ink)}body.dark .main-nav a{color:#aab3b7}body.dark .map-overlay{background:rgba(28,34,37,.92)}body.dark .route-kpi,body.dark .filter-chip{background:var(--panel)}body.dark .calendar-day.outside{background:#171c1f}.data-footnote{font-size:10px;color:var(--muted);margin-top:8px}
@media(max-width:1200px){.overview-workspace{grid-template-columns:280px 1fr}.detail-panel{position:fixed;right:16px;top:92px;bottom:16px;width:360px;z-index:1000;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.22);transform:translateX(calc(100% + 30px));transition:.22s}.detail-panel.open{transform:none}.top-actions,.brand{min-width:auto}.brand-copy{display:none}.route-layout{grid-template-columns:340px 1fr}.saved-routes{grid-template-columns:1fr 1fr}}
@media(max-width:800px){body{padding-top:64px}.topbar{height:64px;padding:0 14px}.brand-mark{width:76px}.main-nav a{padding:9px 10px;font-size:12px}.main-nav a span:first-child{display:none}.top-actions{display:none}.shell{padding:18px 12px}.hero-row{align-items:flex-start;flex-direction:column}.kpi-grid{grid-template-columns:1fr 1fr}.overview-workspace{height:auto;display:block}.location-rail{height:340px;border-right:0;border-bottom:1px solid var(--line)}.map-stage{height:520px}.detail-panel{top:74px}.route-layout{display:block}.route-sidebar{position:relative;top:0;max-height:none;margin-bottom:14px}.route-kpis{grid-template-columns:1fr 1fr}.saved-routes{grid-template-columns:1fr}.calendar-layout{display:block}.day-panel{position:relative;top:0;margin-top:14px}.calendar-day{min-height:85px;padding:5px}.calendar-event{font-size:0;height:7px;padding:0}.weekday-row span{padding:6px 3px;text-align:center}.map-note{display:none}}

/* full location editor */
.full-editor{background:linear-gradient(180deg,rgba(166,213,20,.045),transparent 110px)}
.editor-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:15px}.editor-heading h3{margin:4px 0 0;font-size:16px;letter-spacing:-.02em}.autosave-note{font-size:9px;color:var(--muted);font-weight:700;background:var(--bg);border:1px solid var(--line);padding:5px 7px;border-radius:99px;white-space:nowrap}.address-field{min-height:58px!important}.field-help{display:block;margin-top:-4px;font-size:9px;line-height:1.45;color:var(--muted)}.save-location-btn{margin-top:3px;min-height:43px}.link-sep{color:#a2aaae}.link-note{color:var(--muted)}

/* v1.2 — direct inline location editing */
.editable-hero{padding-bottom:16px}.editor-title-row{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.editor-title-row h2{margin-top:5px}.inline-location-editor{padding-top:18px}.inline-location-editor .field input,.inline-location-editor .field select,.inline-location-editor .field textarea{width:100%;font-size:12px}.inline-location-editor .field input:hover,.inline-location-editor .field select:hover,.inline-location-editor .field textarea:hover{border-color:#c4d96e}.editor-save-bar{position:sticky;bottom:0;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 28%);padding:24px 0 2px;z-index:5}.detail-panel.has-unsaved .autosave-note{background:#fff4d6;color:#895d00;border-color:#f1d78c}.detail-panel.has-unsaved .autosave-note::before{content:'Unsaved changes · '}.detail-panel.has-unsaved .save-location-btn{box-shadow:0 0 0 3px rgba(166,213,20,.18),0 5px 16px rgba(166,213,20,.28)}body.dark .editor-save-bar{background:linear-gradient(180deg,rgba(27,33,37,0),var(--panel) 28%)}


/* v1.3 route planner upgrades */
.endpoint-card{border:1px solid var(--line);border-radius:13px;padding:12px;margin:9px 0;background:linear-gradient(180deg,#fff,#fbfcfa)}.endpoint-heading{display:flex;gap:9px;align-items:center;margin-bottom:9px}.endpoint-heading>div{display:flex;flex-direction:column;gap:2px}.endpoint-heading strong{font-size:11px}.endpoint-heading small{font-size:9px;color:var(--muted)}.endpoint-icon{width:27px;height:27px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:900;background:var(--green-soft);color:#526d00}.endpoint-icon.finish{background:#edf1f2;color:#4f5960}.endpoint-input{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 10px;outline:none;background:#fff;color:var(--ink)}.endpoint-input:focus{border-color:#b4d050;box-shadow:0 0 0 3px rgba(166,213,20,.12)}.planner-divider{height:1px;background:var(--line);margin:17px 0}.browse-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:6px}.browse-head strong{display:block;font-size:13px;margin-top:4px}.browse-search{margin:8px 0}.browse-filter-row{display:flex;gap:5px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:thin}.browse-filter-row .filter-chip{white-space:nowrap}.route-browse-list{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:11px;background:#fff}.browse-location{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:10px;border-bottom:1px solid #eef0f1}.browse-location:last-child{border-bottom:0}.browse-location:hover{background:#fbfdf5}.browse-location strong{display:block;font-size:11px;line-height:1.25}.browse-location small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.browse-location.added{opacity:.62}.browse-add{border:1px solid #c7d990;background:var(--green-soft);color:#4d6500;border-radius:8px;padding:6px 8px;font-size:9px;font-weight:900;cursor:pointer}.browse-add:disabled{background:#f1f3f4;border-color:var(--line);color:#8b9398;cursor:default}.traffic-note{display:flex;align-items:center;gap:10px;border:1px solid #dce7bd;background:#f7fbe9;border-radius:12px;padding:10px 12px;font-size:10px;color:#5c6a31}.traffic-note strong{white-space:nowrap;color:#4d6500}.traffic-note span{color:#68735a}.route-kpis{grid-template-columns:repeat(6,1fr)}.endpoint-marker.start{background:#1f2b14}.endpoint-marker.finish{background:#687178}.endpoint-marker::after{display:none}body.dark .endpoint-card,body.dark .route-browse-list,body.dark .endpoint-input{background:var(--panel)}body.dark .traffic-note{background:#242d16;border-color:#3d4d20;color:#c9d7a1}body.dark .traffic-note span{color:#aeb99a}
@media(max-width:1200px){.route-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.route-kpis{grid-template-columns:1fr 1fr}.traffic-note{align-items:flex-start;flex-direction:column;gap:3px}}

/* v1.4 route ETA + numbered map pins */
.route-stop{grid-template-columns:28px 1fr auto auto}.stop-eta{text-align:right;min-width:70px}.stop-eta strong{font-size:11px;color:#4f6800}.stop-eta small{font-size:8px}.route-pin{width:30px;height:30px;border-radius:50%;background:var(--green);color:#182000;border:3px solid #fff;box-shadow:0 3px 10px rgba(0,0,0,.28);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:950}.route-pin.endpoint{background:#252d31;color:#fff}.route-pin.finish{background:#6c767c}.route-hover{min-width:245px;max-width:300px}.route-hover .hover-title{font-weight:900;font-size:12px;margin-bottom:5px}.route-hover .hover-address{font-size:10px;color:#687178;margin-bottom:7px}.route-hover-grid{display:grid;grid-template-columns:auto 1fr;gap:3px 8px;font-size:9px}.route-hover-grid b{color:#7a8388;text-transform:uppercase;font-size:8px;letter-spacing:.04em}.route-hover-note{font-size:9px;margin-top:6px;padding-top:6px;border-top:1px solid #e7eaeb}.route-source-badge{display:inline-flex;align-items:center;gap:5px;border-radius:99px;padding:4px 7px;background:var(--green-soft);font-size:9px;font-weight:900;color:#526d00;margin-left:auto}.leaflet-tooltip.route-info-tooltip{border:0;border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.2);padding:10px 11px}.leaflet-tooltip.route-info-tooltip:before{display:none}body.dark .leaflet-tooltip.route-info-tooltip{background:#20272b;color:#eef2f3}.traffic-note .traffic-delay{margin-left:auto;font-weight:900;color:#68735a;white-space:nowrap}@media(max-width:800px){.route-stop{grid-template-columns:28px 1fr auto}.stop-eta{grid-column:2;text-align:left}.traffic-note .traffic-delay{margin-left:0}}


/* v1.5 field route execution */
.finish-route-btn{white-space:nowrap}.field-routes-section{padding:18px;margin-top:18px}.field-routes-intro{font-size:11px;line-height:1.5;color:var(--muted);margin:-7px 0 13px}.field-route-tabs{display:flex;gap:6px;margin-bottom:12px}.field-route-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:14px}.field-route-card{appearance:none;text-align:left;border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:12px;cursor:pointer;color:var(--ink)}.field-route-card:hover,.field-route-card.selected{border-color:#bad45f;background:#fbfdf4}.field-route-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:9px;color:var(--muted);margin-bottom:8px}.field-route-card>strong{display:block;font-size:12px;margin-bottom:5px}.field-route-card>small{display:block;font-size:9px;color:var(--muted);margin-bottom:9px}.route-state{font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;border-radius:99px;padding:4px 6px}.route-state.active{background:var(--green-soft);color:#526d00}.route-state.completed{background:#edf1f2;color:#576167}.progress-track{height:7px;background:#edf0f1;border-radius:99px;overflow:hidden}.progress-track>span{display:block;height:100%;background:var(--green);border-radius:inherit}.progress-track.large{height:9px;margin-bottom:14px}.field-route-workspace{border-top:1px solid var(--line);padding-top:15px}.field-workspace-empty{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;color:var(--muted)}.field-workspace-empty strong{color:var(--ink)}.field-workspace-empty span{font-size:10px;max-width:430px}.field-workspace-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:10px}.field-workspace-head h3{font-size:18px;margin:4px 0}.field-workspace-head p{font-size:10px;color:var(--muted);margin:0}.field-progress{text-align:right}.field-progress strong{display:block;font-size:22px}.field-progress span{font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:800;letter-spacing:.07em}.field-stop-list{display:flex;flex-direction:column;gap:10px}.field-stop{border:1px solid var(--line);border-radius:13px;padding:13px;background:var(--panel)}.field-stop.complete{background:#f8faf6;border-color:#d7e5ae}.field-stop-top{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center}.field-stop-num{width:30px;height:30px;border-radius:9px;background:var(--green);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:950;color:#182000}.field-stop.complete .field-stop-num{background:#28332c;color:#fff}.field-stop-title strong{display:block;font-size:12px}.field-stop-title small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.field-stop-meta{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.field-stop-meta span{font-size:8px;font-weight:800;color:#697278;background:#f2f4f4;border-radius:99px;padding:5px 7px}.field-note{margin-bottom:8px}.field-note textarea{min-height:72px;width:100%}.field-stop-actions{display:flex;gap:7px}.field-route-finish{display:flex;align-items:center;gap:10px;justify-content:flex-end;margin-top:14px;padding-top:13px;border-top:1px solid var(--line)}.field-route-finish small{font-size:9px;color:var(--muted)}.field-route-finish .btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.field-route-complete-banner{margin-top:14px;padding:11px;border-radius:10px;background:var(--green-soft);color:#526d00;font-size:10px;font-weight:900;text-align:center}body.dark .field-route-card,body.dark .field-stop{background:var(--panel)}body.dark .field-stop.complete{background:#222c20}body.dark .field-stop-meta span{background:#242b2f;color:#b8c0c4}body.dark .progress-track{background:#30383d}@media(max-width:1200px){.field-route-list{grid-template-columns:1fr 1fr}}@media(max-width:800px){.hero-actions{flex-wrap:wrap}.field-route-list{grid-template-columns:1fr}.field-stop-top{grid-template-columns:30px 1fr}.field-stop-top .btn{grid-column:2;justify-self:start}.field-workspace-head{align-items:flex-start}.field-route-finish{align-items:flex-start;flex-direction:column}.field-route-finish .btn{width:100%}}

/* v1.7 route stop removal controls */
.stop-actions .remove-stop-btn{
  width:auto;
  min-width:92px;
  padding:7px 10px;
  border-radius:8px;
  font-weight:700;
  font-size:12px;
  line-height:1;
  color:#8b1e1e;
  background:#fff4f4;
  border:1px solid #efc8c8;
}
.stop-actions .remove-stop-btn:hover{background:#ffe8e8;border-color:#dca8a8;}
.browse-add.remove{
  color:#8b1e1e;
  background:#fff4f4;
  border-color:#efc8c8;
}
.browse-add.remove:hover{background:#ffe8e8;border-color:#dca8a8;}

/* v1.9 field route deletion */
.field-route-card{position:relative;padding:0;overflow:hidden}.field-route-open{appearance:none;border:0;background:transparent;color:inherit;text-align:left;width:100%;padding:12px 12px 42px;cursor:pointer}.field-route-open>strong{display:block;font-size:12px;margin-bottom:5px}.field-route-open>small{display:block;font-size:9px;color:var(--muted);margin-bottom:9px}.field-route-delete{position:absolute;left:12px;bottom:10px;border:1px solid #e0b9b9;background:#fff;color:#9b3030;border-radius:7px;padding:5px 8px;font-size:9px;font-weight:800;cursor:pointer}.field-route-delete:hover{background:#fff4f4;border-color:#cf8787}.field-route-card:hover .field-route-open,.field-route-card.selected .field-route-open{background:#fbfdf4}body.dark .field-route-delete{background:#25292c;color:#f0aaaa;border-color:#674242}body.dark .field-route-card:hover .field-route-open,body.dark .field-route-card.selected .field-route-open{background:#222a20}

/* v1.10 saved-to-active workflow */
.saved-route-actions{display:flex;justify-content:flex-end;margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}.saved-route-actions .btn{width:100%}.active-route-schedule{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid var(--line);border-radius:12px;padding:12px;margin:0 0 14px;background:var(--panel)}.active-route-schedule>div:first-child strong{display:block;font-size:11px;margin-top:4px}.active-route-schedule-controls{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.active-route-schedule-controls input[type=date]{border:1px solid var(--line);border-radius:9px;padding:7px 9px;background:var(--panel);color:var(--ink)}.assign-help{font-size:9px;color:var(--muted);margin:-4px 0 9px}body.dark .active-route-schedule{background:var(--panel)}@media(max-width:800px){.active-route-schedule{align-items:flex-start;flex-direction:column}.active-route-schedule-controls{width:100%}.active-route-schedule-controls input[type=date]{flex:1;min-width:150px}}

/* v1.11 dedicated Field Routes page */
.standalone-field-routes{margin-top:0}.field-routes-shell{max-width:1450px}.standalone-field-routes .field-route-workspace{min-height:220px}

/* v1.13 route stop timing controls */
.route-stop-copy{min-width:0}
.stop-duration-control{display:flex;align-items:center;gap:8px;margin-top:7px;font-size:11px;color:var(--muted)}
.stop-duration-input{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:var(--panel);overflow:hidden}
.stop-duration-input input{width:58px;border:0;background:transparent;color:var(--text);padding:5px 6px;font:inherit;font-size:12px;outline:none}
.stop-duration-input em{font-style:normal;padding:5px 7px 5px 0;color:var(--muted);font-size:11px}
.stop-duration-input:focus-within{border-color:var(--green)}
@media (max-width:720px){.stop-duration-control{align-items:flex-start;flex-direction:column;gap:4px}}
.returning-active-banner{margin:0 0 18px;padding:14px 16px;border:1px solid var(--line,#d9dfd2);border-left:4px solid var(--green,#9bc53d);border-radius:12px;background:rgba(157,197,61,.08);display:flex;gap:10px;align-items:center;flex-wrap:wrap}.returning-active-banner strong{font-weight:800}.returning-active-banner span{color:var(--muted,#667085)}.active-route-builder-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;margin:16px 0;border:1px solid var(--line,#d9dfd2);border-radius:14px;background:rgba(157,197,61,.06)}.active-route-builder-actions>div{display:grid;gap:3px}.active-route-builder-actions small{color:var(--muted,#667085)}@media(max-width:720px){.active-route-builder-actions{align-items:stretch;flex-direction:column}.active-route-builder-actions .btn{width:100%}}

/* v1.17 — Field Routes split into separate Active and Completed sections */
.field-routes-shell > .standalone-field-routes + .standalone-field-routes{margin-top:18px}
.field-route-workspace-section{margin-top:18px}
#completedRoutesSection .field-routes-intro{margin-bottom:16px}

/* v1.18 saved route endpoints */
.endpoint-saved-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;margin-top:8px;align-items:center}.endpoint-saved-row select{min-width:0;width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 8px;background:#fff;color:var(--ink);font-size:10px}.endpoint-delete-btn{border:1px solid #e3c7c7;background:#fff;color:#8f3a3a;border-radius:8px;padding:6px 8px;font-size:9px;font-weight:800;cursor:pointer}.endpoint-delete-btn:disabled{opacity:.4;cursor:not-allowed}.endpoint-delete-btn:not(:disabled):hover{background:#fff5f5;border-color:#d59e9e}body.dark .endpoint-saved-row select,body.dark .endpoint-delete-btn{background:var(--panel);color:var(--ink)}@media(max-width:520px){.endpoint-saved-row{grid-template-columns:1fr 1fr}.endpoint-saved-row select{grid-column:1/-1}}


/* v1.19 field-route map preview */
.field-route-map-block{margin:14px 0 16px;border:1px solid var(--line);border-radius:14px;padding:12px;background:var(--panel)}
.field-route-map-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:9px}.field-route-map-head strong{display:block;font-size:12px;margin-top:3px}.field-route-map-head>span{font-size:9px;color:var(--muted);font-weight:800}
.field-route-mini-map{height:255px;border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#eef1ef;position:relative;z-index:0}
.field-map-fallback{height:100%;display:flex;align-items:center;justify-content:center;padding:18px;text-align:center;color:var(--muted);font-size:10px}
.field-map-legend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:9px;color:var(--muted);font-size:9px;font-weight:700}.field-map-legend span{display:flex;align-items:center;gap:5px}
.field-map-marker,.legend-marker{display:flex;align-items:center;justify-content:center;border:2px solid #fff;background:var(--green);color:#182000;font-weight:950;box-shadow:0 1px 4px rgba(0,0,0,.28)}.field-map-marker{width:28px;height:28px;border-radius:50%;font-size:10px}.legend-marker{width:20px;height:20px;border-radius:50%;font-size:8px;box-shadow:none}
.field-map-marker.start,.legend-marker.start{background:#20282b;color:#fff}.field-map-marker.finish,.legend-marker.finish{background:#fff;color:#20282b;border-color:#20282b}.field-map-marker.completed{background:#48534c;color:#fff}
body.dark .field-route-map-block{background:var(--panel)}body.dark .field-route-mini-map{border-color:#3a4247}
@media(max-width:800px){.field-route-mini-map{height:170px}}

/* v1.20 mobile-ready responsive layout + temporary development device preview */
.dev-preview-toolbar{position:fixed;right:16px;top:86px;z-index:5000;display:flex;align-items:center;gap:6px;padding:6px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.96);box-shadow:0 8px 24px rgba(0,0,0,.12);backdrop-filter:blur(12px)}
.dev-preview-toolbar .dev-preview-label{font-size:9px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0 5px}
.dev-preview-toolbar button{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;padding:7px 9px;font-size:10px;font-weight:850;cursor:pointer}
.dev-preview-toolbar button.active{background:var(--green-soft);border-color:#cfe48e;color:#415700}
.dev-preview-toolbar .device-size{font-size:8px;color:var(--muted);padding:0 4px 0 1px;white-space:nowrap}
body.dark .dev-preview-toolbar{background:rgba(28,34,40,.96)}

/* True responsive phone layout. iPhone 16 target: 393 CSS px wide. */
@media(max-width:800px){
  body{padding-top:64px;padding-bottom:78px;overflow-x:hidden}
  .topbar{height:64px;padding:0 14px;justify-content:space-between}
  .brand{min-width:0;gap:8px}.brand-mark{width:76px;height:42px}.brand-copy{display:none}.top-actions{display:flex;min-width:0}
  .main-nav{position:fixed;left:0;right:0;bottom:0;z-index:1400;height:68px;margin:0;padding:6px 6px calc(6px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:rgba(255,255,255,.97);border-top:1px solid var(--line);backdrop-filter:blur(16px)}
  .main-nav a{min-width:0;height:54px;padding:5px 2px;border-radius:10px;display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;font-size:9px;text-align:center}
  .main-nav a span:first-child{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .main-nav a::before{display:block;font-size:15px;line-height:1}.main-nav a[data-nav="overview"]::before{content:"⌖"}.main-nav a[data-nav="routes"]::before{content:"↗"}.main-nav a[data-nav="fieldroutes"]::before{content:"✓"}.main-nav a[data-nav="calendar"]::before{content:"▦"}
  .nav-badge{position:absolute;margin:0 0 24px 27px;min-width:17px;height:17px;font-size:9px;border:2px solid #fff}
  body.dark .main-nav{background:rgba(28,34,40,.97)}body.dark .nav-badge{border-color:#1c2228}
  .shell{padding:16px 12px 26px;max-width:none}.hero-row,.hero-row.compact{align-items:stretch;flex-direction:column;gap:12px;margin-bottom:16px}.hero-row h1{font-size:26px}.subtle{font-size:12px;line-height:1.45}.hero-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.hero-actions .btn{width:100%;min-width:0}
  .kpi-grid{grid-template-columns:1fr 1fr;gap:8px}.kpi-card{padding:12px;gap:9px}.kpi-icon{width:34px;height:34px}.kpi-card strong{font-size:20px}.kpi-card span{font-size:9px}
  .overview-workspace{height:auto;min-height:0;display:flex;flex-direction:column;overflow:visible}.location-rail{height:330px;border-right:0;border-bottom:1px solid var(--line);order:1}.map-stage{height:390px;order:2}.detail-panel{position:fixed;left:12px;right:12px;top:74px;bottom:84px;width:auto;z-index:1600;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.22);transform:translateY(calc(100% + 100px));transition:.22s;overflow:auto}.detail-panel.open{transform:none}.map-overlay{left:9px;right:9px;bottom:9px;flex-wrap:wrap}.map-note{display:none}.edit-grid{grid-template-columns:1fr}.detail-actions{grid-template-columns:1fr 1fr}
  .route-layout{display:block}.route-sidebar{position:relative;top:auto;max-height:none;margin-bottom:12px;padding:14px}.two-col{grid-template-columns:1fr 1fr}.route-buttons{grid-template-columns:1fr}.route-kpis{grid-template-columns:1fr 1fr;gap:8px}.route-map{height:390px}.route-map-actions{left:8px;right:8px;bottom:8px;flex-wrap:wrap}.saved-section{padding:14px}.saved-routes{grid-template-columns:1fr}.route-stop{grid-template-columns:28px minmax(0,1fr) auto;gap:8px}.stop-eta{grid-column:2;text-align:left}.stop-actions{grid-column:3;grid-row:1 / span 2;align-self:center}.stop-duration-control{align-items:flex-start;flex-direction:column;gap:4px}.endpoint-saved-row{grid-template-columns:1fr 1fr}.endpoint-saved-row select{grid-column:1/-1}.traffic-note{align-items:flex-start;flex-direction:column;gap:3px}.traffic-note .traffic-delay{margin-left:0}
  .field-routes-shell>.standalone-field-routes{padding:14px}.field-route-list{grid-template-columns:1fr}.field-workspace-head{align-items:flex-start;flex-direction:column}.field-progress{text-align:left}.field-route-map-block{padding:9px}.field-route-mini-map{height:170px}.field-stop-top{grid-template-columns:30px minmax(0,1fr)}.field-stop-top .btn{grid-column:2;justify-self:start;width:100%}.field-stop-meta{gap:5px}.field-stop-actions{display:grid;grid-template-columns:1fr 1fr}.field-stop-actions .btn{width:100%}.active-route-schedule{align-items:stretch;flex-direction:column}.active-route-schedule-controls{display:grid;grid-template-columns:1fr 1fr;width:100%}.active-route-schedule-controls input[type=date]{grid-column:1/-1;width:100%}.active-route-builder-actions{align-items:stretch;flex-direction:column}.active-route-builder-actions .btn{width:100%}.field-route-finish{align-items:stretch;flex-direction:column}.field-route-finish .btn{width:100%}
  .calendar-layout{display:block}.calendar-card{padding:10px}.calendar-toolbar{gap:6px;flex-wrap:wrap}.calendar-toolbar h2{font-size:17px}.weekday-row span{padding:6px 1px;font-size:8px}.calendar-day{min-height:62px;padding:4px}.day-num{font-size:10px}.calendar-event{font-size:0;height:6px;padding:0;border-radius:99px}.more-events{font-size:7px}.day-panel{position:relative;top:auto;margin-top:12px;padding:14px}.calendar-stop-list{gap:5px}
  .dev-preview-toolbar{top:auto;right:8px;bottom:82px;max-width:calc(100vw - 16px)}
}
@media(max-width:430px){.two-col{grid-template-columns:1fr}.hero-actions{grid-template-columns:1fr}.route-kpis{grid-template-columns:1fr 1fr}.field-stop-actions{grid-template-columns:1fr}.calendar-day{min-height:58px}}

/* Development-only iPhone 16 preview mode. This class is injected only by the temporary preview tool. */
html.dev-iphone16-preview{background:#dfe3e5;min-height:100%}
html.dev-iphone16-preview body{width:393px;max-width:393px;min-height:852px;margin:18px auto 36px;padding-top:64px;padding-bottom:78px;overflow-x:hidden;box-shadow:0 18px 60px rgba(0,0,0,.24);border-radius:30px;position:relative;background:var(--bg)}
html.dev-iphone16-preview .topbar{height:64px;left:calc(50% - 196.5px);right:auto;top:18px;width:393px;transform:none;padding:0 14px;border-radius:30px 30px 0 0;justify-content:space-between}
html.dev-iphone16-preview .brand{min-width:0;gap:8px}html.dev-iphone16-preview .brand-mark{width:76px;height:42px}html.dev-iphone16-preview .brand-copy{display:none}html.dev-iphone16-preview .top-actions{display:flex;min-width:0}
html.dev-iphone16-preview .main-nav{position:fixed;left:calc(50% - 196.5px);right:auto;bottom:calc(100vh - 870px);transform:none;z-index:1400;width:393px;height:68px;margin:0;padding:6px;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:rgba(255,255,255,.97);border-top:1px solid var(--line);border-radius:0 0 30px 30px;backdrop-filter:blur(16px);will-change:transform}
html.dev-iphone16-preview .main-nav a{min-width:0;height:54px;padding:5px 2px;border-radius:10px;display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;font-size:9px;text-align:center}
html.dev-iphone16-preview .main-nav a span:first-child{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
html.dev-iphone16-preview .main-nav a::before{display:block;font-size:15px;line-height:1}html.dev-iphone16-preview .main-nav a[data-nav="overview"]::before{content:"⌖"}html.dev-iphone16-preview .main-nav a[data-nav="routes"]::before{content:"↗"}html.dev-iphone16-preview .main-nav a[data-nav="fieldroutes"]::before{content:"✓"}html.dev-iphone16-preview .main-nav a[data-nav="calendar"]::before{content:"▦"}
html.dev-iphone16-preview .nav-badge{position:absolute;margin:0 0 24px 27px;min-width:17px;height:17px;font-size:9px;border:2px solid #fff}
html.dev-iphone16-preview .shell{padding:16px 12px 26px;max-width:none}html.dev-iphone16-preview .hero-row,html.dev-iphone16-preview .hero-row.compact{align-items:stretch;flex-direction:column;gap:12px;margin-bottom:16px}html.dev-iphone16-preview .hero-row h1{font-size:26px}html.dev-iphone16-preview .subtle{font-size:12px;line-height:1.45}html.dev-iphone16-preview .hero-actions{width:100%;display:grid;grid-template-columns:1fr;gap:8px}html.dev-iphone16-preview .hero-actions .btn{width:100%}
html.dev-iphone16-preview .kpi-grid{grid-template-columns:1fr 1fr;gap:8px}html.dev-iphone16-preview .kpi-card{padding:12px;gap:9px}html.dev-iphone16-preview .kpi-icon{width:34px;height:34px}html.dev-iphone16-preview .kpi-card strong{font-size:20px}html.dev-iphone16-preview .kpi-card span{font-size:9px}
html.dev-iphone16-preview .overview-workspace{height:auto;min-height:0;display:flex;flex-direction:column;overflow:visible}html.dev-iphone16-preview .location-rail{height:330px;border-right:0;border-bottom:1px solid var(--line);order:1}html.dev-iphone16-preview .map-stage{height:390px;order:2}html.dev-iphone16-preview .detail-panel{position:fixed;left:50%;right:auto;top:92px;bottom:auto;width:369px;height:690px;transform:translate(-50%,calc(100% + 120px));z-index:1600;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.22);overflow:auto}html.dev-iphone16-preview .detail-panel.open{transform:translate(-50%,0)}html.dev-iphone16-preview .map-overlay{left:9px;right:9px;bottom:9px;flex-wrap:wrap}html.dev-iphone16-preview .map-note{display:none}html.dev-iphone16-preview .edit-grid{grid-template-columns:1fr}
html.dev-iphone16-preview .route-layout{display:block}html.dev-iphone16-preview .route-sidebar{position:relative;top:auto;max-height:none;margin-bottom:12px;padding:14px}html.dev-iphone16-preview .two-col{grid-template-columns:1fr}html.dev-iphone16-preview .route-buttons{grid-template-columns:1fr}html.dev-iphone16-preview .route-kpis{grid-template-columns:1fr 1fr;gap:8px}html.dev-iphone16-preview .route-map{height:390px}html.dev-iphone16-preview .saved-routes{grid-template-columns:1fr}html.dev-iphone16-preview .route-stop{grid-template-columns:28px minmax(0,1fr) auto;gap:8px}html.dev-iphone16-preview .stop-eta{grid-column:2;text-align:left}html.dev-iphone16-preview .stop-actions{grid-column:3;grid-row:1 / span 2;align-self:center}html.dev-iphone16-preview .stop-duration-control{align-items:flex-start;flex-direction:column;gap:4px}html.dev-iphone16-preview .endpoint-saved-row{grid-template-columns:1fr 1fr}html.dev-iphone16-preview .endpoint-saved-row select{grid-column:1/-1}
html.dev-iphone16-preview .field-routes-shell>.standalone-field-routes{padding:14px}html.dev-iphone16-preview .field-route-list{grid-template-columns:1fr}html.dev-iphone16-preview .field-workspace-head{align-items:flex-start;flex-direction:column}html.dev-iphone16-preview .field-progress{text-align:left}html.dev-iphone16-preview .field-route-mini-map{height:170px}html.dev-iphone16-preview .field-stop-top{grid-template-columns:30px minmax(0,1fr)}html.dev-iphone16-preview .field-stop-top .btn{grid-column:2;justify-self:start;width:100%}html.dev-iphone16-preview .field-stop-actions{display:grid;grid-template-columns:1fr}html.dev-iphone16-preview .active-route-schedule{align-items:stretch;flex-direction:column}html.dev-iphone16-preview .active-route-schedule-controls{display:grid;grid-template-columns:1fr 1fr;width:100%}html.dev-iphone16-preview .active-route-schedule-controls input[type=date]{grid-column:1/-1;width:100%}html.dev-iphone16-preview .active-route-builder-actions{align-items:stretch;flex-direction:column}html.dev-iphone16-preview .active-route-builder-actions .btn{width:100%}html.dev-iphone16-preview .field-route-finish{align-items:stretch;flex-direction:column}html.dev-iphone16-preview .field-route-finish .btn{width:100%}
html.dev-iphone16-preview .calendar-layout{display:block}html.dev-iphone16-preview .calendar-card{padding:10px}html.dev-iphone16-preview .calendar-toolbar{gap:6px;flex-wrap:wrap}html.dev-iphone16-preview .weekday-row span{padding:6px 1px;font-size:8px}html.dev-iphone16-preview .calendar-day{min-height:58px;padding:4px}html.dev-iphone16-preview .day-num{font-size:10px}html.dev-iphone16-preview .calendar-event{font-size:0;height:6px;padding:0;border-radius:99px}html.dev-iphone16-preview .day-panel{position:relative;top:auto;margin-top:12px;padding:14px}
html.dev-iphone16-preview .dev-preview-toolbar{position:fixed;top:24px;right:18px;bottom:auto;transform:none;width:auto;max-width:none}
@media(max-width:900px){html.dev-iphone16-preview body{margin-top:0;border-radius:0}html.dev-iphone16-preview .topbar{top:0;left:0;width:100%;border-radius:0}html.dev-iphone16-preview .main-nav{left:0;right:0;width:100%;bottom:0;border-radius:0}html.dev-iphone16-preview .dev-preview-toolbar{display:none}}

/* v1.22: closeable Overview location drawer */
.detail-hero{position:relative;padding-right:60px}
.detail-close-btn{position:absolute;top:14px;right:14px;z-index:3;width:36px;height:36px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:24px;line-height:1;cursor:pointer;box-shadow:0 3px 10px rgba(0,0,0,.07)}
.detail-close-btn:hover{background:#f4f6f6;border-color:#cbd1d4}
body.dark .detail-close-btn{background:#252c31;color:#f6f8f8;border-color:#40484e}
@media(max-width:800px){
  .detail-panel.open{overscroll-behavior:contain}
  .detail-hero{position:sticky;top:0;z-index:5;background:var(--panel);padding-right:60px}
  .detail-close-btn{position:absolute;top:12px;right:12px;width:42px;height:42px;border-radius:12px;font-size:27px}
}
html.dev-iphone16-preview .detail-panel.open{overscroll-behavior:contain}
html.dev-iphone16-preview .detail-hero{position:sticky;top:0;z-index:5;background:var(--panel);padding-right:60px}
html.dev-iphone16-preview .detail-close-btn{width:42px;height:42px;top:12px;right:12px;border-radius:12px;font-size:27px}


/* v1.23: Overview rail scrolling + reliable initial map framing */
.overview-workspace{min-height:0}
.location-rail{min-height:0;overflow:hidden}
.location-list{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding-bottom:18px;-webkit-overflow-scrolling:touch}
@media(max-width:800px){
  .location-rail{min-height:0;overflow:hidden}
  .location-list{min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
}
html.dev-iphone16-preview .location-rail{min-height:0;overflow:hidden}
html.dev-iphone16-preview .location-list{min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}

/* v1.26: dark-mode contrast and accessibility pass */
body.dark{
  --ink:#f4f7f8;
  --muted:#bcc5ca;
  --line:#3b454b;
  --panel:#1b2226;
  --bg:#111619;
  --green-700:#b7e63d;
  --green-soft:#293814;
}
body.dark,
body.dark input,
body.dark textarea,
body.dark select,
body.dark button{color:var(--ink)}
body.dark input::placeholder,
body.dark textarea::placeholder{color:#8f9aa0;opacity:1}
body.dark .topbar{background:rgba(24,30,34,.97);border-color:#394248}
body.dark .brand-copy span,
body.dark .subtle,
body.dark .field>span,
body.dark .detail-row label,
body.dark .rail-meta,
body.dark .location-item small,
body.dark .field-route-card-head,
body.dark .field-route-open>small,
body.dark .field-workspace-head p,
body.dark .field-progress span,
body.dark .field-stop-title small,
body.dark .field-route-finish small,
body.dark .assign-help,
body.dark .endpoint-heading small,
body.dark .browse-location small,
body.dark .route-stop small,
body.dark .saved-route small,
body.dark .more-events{color:#b7c0c5}
body.dark .eyebrow,
body.dark .mini-label,
body.dark .text-btn,
body.dark .detail-row a{color:#c2ee49}
body.dark .main-nav a{color:#c2c9cd}
body.dark .main-nav a:hover{background:#293136;color:#fff}
body.dark .main-nav a.active{background:#304216;color:#eaf7c7}
body.dark .icon-btn{background:#222a2f;color:#f4f7f8;border-color:#414c52}
body.dark .icon-btn:hover{background:#2b3439;border-color:#5a666c}
body.dark .btn.ghost{background:#222a2f;color:#f2f5f6;border-color:#48535a}
body.dark .btn.ghost:hover{background:#2b3439}
body.dark .btn.outline{color:#d7f58b;border-color:#718b31}
body.dark .btn.primary{color:#182000}
body.dark .kpi-card,
body.dark .location-rail,
body.dark .detail-panel,
body.dark .route-kpi,
body.dark .route-sidebar,
body.dark .calendar-card,
body.dark .day-panel,
body.dark .field-routes-section,
body.dark .active-route-schedule{background:var(--panel);color:var(--ink)}
body.dark .kpi-card.warn .kpi-icon{background:#4b3518;color:#ffd69c}body.dark .kpi-card.cycle{border-color:#46582c;background:linear-gradient(135deg,#20281c,#252f1e)}body.dark .kpi-card.cycle .kpi-icon{background:#364b22;color:#d8f38c}body.dark .kpi-card.cycle strong{color:#d8f38c}
body.dark .rail-search input,
body.dark .route-search input,
body.dark .field input,
body.dark .field select,
body.dark .field textarea,
body.dark .endpoint-input,
body.dark .endpoint-saved-row select,
body.dark .active-route-schedule-controls input[type=date]{background:#222a2f;color:#f4f7f8;border-color:#465158;color-scheme:dark}
body.dark .rail-search input:focus,
body.dark .route-search input:focus,
body.dark .field input:focus,
body.dark .field select:focus,
body.dark .field textarea:focus,
body.dark .endpoint-input:focus{border-color:#94bd2a;box-shadow:0 0 0 3px rgba(166,213,20,.18)}
body.dark .filter-chip{background:#232b30;color:#d1d7da;border-color:#465158}
body.dark .filter-chip:hover{background:#2c353a;color:#fff}
body.dark .filter-chip.active{background:#d5f173;color:#172000;border-color:#d5f173}
body.dark .location-item:hover{background:#252f2b;border-color:#3b4b34}
body.dark .location-item.active{background:#304216;border-color:#536f25}
body.dark .map-overlay{background:rgba(27,34,38,.95);color:#d2d8db;border-color:#424d52}
body.dark .map-note{color:#b8c1c5}
body.dark .empty-detail{color:#bcc5ca}
body.dark .empty-detail h3{color:#f4f7f8}
body.dark .badge{background:#2e373c;color:#d0d7da}
body.dark .badge.green{background:#314517;color:#d7f58b}
body.dark .badge.orange{background:#533717;color:#ffca91}
body.dark .detail-hero p,
body.dark .detail-row .value{color:#d6dde0}
body.dark .data-flag{background:#3b2e19;color:#ffd99b;border-color:#6b5227}
body.dark .detail-panel.has-unsaved .autosave-note{background:#41351a;color:#ffe09b;border-color:#74602c}
body.dark .endpoint-card{background:#1e262a;border-color:#3d484e}
body.dark .endpoint-icon.finish{background:#30393e;color:#d8dfe2}
body.dark .route-browse-list{background:#1d2428;border-color:#3e494f}
body.dark .browse-location{border-color:#333d42}
body.dark .browse-location:hover{background:#273127}
body.dark .browse-add{background:#304216;color:#dcf89a;border-color:#59752a}
body.dark .browse-add:disabled{background:#2b3236;color:#879197;border-color:#414a4f}
body.dark .browse-add.remove,
body.dark .stop-actions .remove-stop-btn{background:#402528;color:#ffb6b6;border-color:#75454a}
body.dark .route-result{border-color:#333d42;color:#eef2f3}
body.dark .route-result:hover{background:#273127}
body.dark .selected-header span{background:#30393e;color:#d9e0e3}
body.dark .route-stop{background:#1f272b;border-color:#3d484e}
body.dark .stop-actions button{background:#2d363b;color:#d8dfe2}
body.dark .stop-actions button:hover{background:#394349;color:#fff}
body.dark .stop-eta strong{color:#c7ef57}
body.dark .saved-route{color:#f2f5f6}
body.dark .saved-route:hover{background:#273127;border-color:#6f8b35}
body.dark .saved-route-delete,
body.dark .field-route-delete,
body.dark .endpoint-delete-btn{background:#352629;color:#ffb7b7;border-color:#6b4449}
body.dark .saved-route-delete:hover,
body.dark .field-route-delete:hover,
body.dark .endpoint-delete-btn:not(:disabled):hover{background:#472b2f;border-color:#8c545b}
body.dark .route-source-badge{background:#304216;color:#dcf89a}
body.dark .leaflet-tooltip.route-info-tooltip,
body.dark .leaflet-popup-content-wrapper,
body.dark .leaflet-popup-tip{background:#20282c;color:#f0f4f5}
body.dark .route-hover .hover-address,
body.dark .route-hover-grid b{color:#b7c0c5}
body.dark .route-hover-note{border-color:#424d52}
body.dark .leaflet-control-zoom a{background:#232b30!important;color:#f5f7f8!important;border-color:#465158!important}
body.dark .leaflet-control-zoom a:hover{background:#303a3f!important}
body.dark .leaflet-control-attribution{background:rgba(27,34,38,.88)!important;color:#c0c9cd!important}
body.dark .leaflet-control-attribution a{color:#c9ed63!important}
body.dark .field-route-card{background:#1f272b;color:#f4f7f8}
body.dark .field-route-card:hover .field-route-open,
body.dark .field-route-card.selected .field-route-open{background:#293427}
body.dark .route-state.active{background:#314517;color:#d7f58b}
body.dark .route-state.completed{background:#30393e;color:#d5dde0}
body.dark .field-stop{background:#1f272b;color:#f4f7f8}
body.dark .field-stop.complete{background:#253124;border-color:#4a6133}
body.dark .field-stop-meta span{background:#30393e;color:#d0d7da}
body.dark .field-route-complete-banner{background:#314517;color:#dcf89a}
body.dark .calendar-day{background:#1f272b;color:#f4f7f8}
body.dark .calendar-day:hover{background:#293427}
body.dark .calendar-day.outside{background:#171d20;color:#7f8a90}
body.dark .calendar-event{background:#304216;color:#e4fac0;border-left-color:#bce841}
body.dark .calendar-event.completed{background:#30393e;color:#dbe1e4}
body.dark .day-num{color:#eef2f3}
body.dark .calendar-day.outside .day-num{color:#7f8a90}
body.dark .weekday-row span{color:#b9c2c6}
body.dark .field-route-map-block{background:#1d2428}
body.dark .field-route-mini-map{background:#20272b;border-color:#404b51}
body.dark .legend-marker.finish{background:#f1f4f5;color:#20282b;border-color:#c8d0d3}
body.dark .detail-close-btn:hover{background:#30393e;border-color:#59656b}
body.dark .dev-preview-toolbar{color:#f1f5f6}
body.dark .dev-preview-toolbar button{color:#f1f5f6}

/* v1.27 dark-mode contrast fix: calendar route stop rows */
body.dark .calendar-stop{
  background:#252e33;
  color:#f4f7f8;
  border:1px solid #414c52;
}
body.dark .calendar-stop b{color:#bce841}
body.dark .day-route{background:#1d2428;border-color:#414c52;color:#f4f7f8}
body.dark .day-route h3{color:#f7f9fa}
body.dark .day-route p{color:#c4ccd0}

/* v1.28: header logo visibility / cropping fix */
.brand-mark{
  width:112px;
  height:60px;
  padding:3px 6px;
  overflow:visible;
  flex:0 0 auto;
  border-radius:10px;
}
.brand-mark img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center;
}
body.dark .brand-mark{
  background:#f7f9f4;
  border:1px solid rgba(255,255,255,.16);
}
@media(max-width:800px){
  .brand-mark{width:94px;height:54px;padding:3px 5px}
}
html.dev-iphone16-preview .brand-mark{width:94px;height:54px;padding:3px 5px}

/* v1.29: polished motion system */
:root{
  --motion-fast:140ms;
  --motion-med:220ms;
  --motion-slow:360ms;
  --motion-ease:cubic-bezier(.2,.8,.2,1);
}
@keyframes elizurFadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes elizurPop{0%{opacity:0;transform:scale(.97)}100%{opacity:1;transform:scale(1)}}
@keyframes elizurPulseRing{0%{box-shadow:0 0 0 0 rgba(166,213,20,.28)}70%{box-shadow:0 0 0 8px rgba(166,213,20,0)}100%{box-shadow:0 0 0 0 rgba(166,213,20,0)}}
@keyframes elizurProgressGlow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.12)}}

/* Page entrance */
.hero-row{animation:elizurFadeUp var(--motion-slow) var(--motion-ease) both}
.kpi-grid,.overview-workspace,.route-layout,.saved-routes,.field-routes-shell,.calendar-layout{animation:elizurFadeUp 420ms var(--motion-ease) 70ms both}

/* Buttons */
.btn,.icon-btn,.text-btn,.filter-chip,.browse-add,.detail-close-btn,.main-nav a{
  transition:transform var(--motion-fast) var(--motion-ease),box-shadow var(--motion-med) var(--motion-ease),background-color var(--motion-med) ease,border-color var(--motion-med) ease,color var(--motion-med) ease,filter var(--motion-med) ease;
}
.btn:hover,.icon-btn:hover,.browse-add:hover:not(:disabled){transform:translateY(-2px)}
.btn:active,.icon-btn:active,.browse-add:active:not(:disabled),.filter-chip:active,.detail-close-btn:active{transform:translateY(0) scale(.97)}
.btn.primary:hover{box-shadow:0 10px 22px rgba(166,213,20,.30)}
.btn.primary:focus-visible{animation:elizurPulseRing .7s ease-out}
.text-btn:hover{transform:translateX(2px)}
.main-nav a:hover{transform:translateY(-1px)}
.main-nav a:active{transform:translateY(0) scale(.98)}

/* Cards and selectable rows */
.card,.kpi-card,.location-item,.browse-location,.route-stop,.saved-route,.field-route-card,.field-stop,.calendar-event,.endpoint-card{
  transition:transform var(--motion-med) var(--motion-ease),box-shadow var(--motion-med) var(--motion-ease),border-color var(--motion-med) ease,background-color var(--motion-med) ease;
}
.kpi-card:hover,.saved-route:hover,.field-route-card:hover,.endpoint-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(22,29,34,.10)}
.location-item:hover,.browse-location:hover,.route-stop:hover{transform:translateX(3px)}
.calendar-event:hover{transform:translateY(-1px) scale(1.01)}

/* Drawer / panels */
.detail-panel{transition:transform var(--motion-slow) var(--motion-ease),opacity var(--motion-med) ease,box-shadow var(--motion-med) ease}
.detail-panel.open{animation:elizurPop var(--motion-med) var(--motion-ease) both}
.detail-hero,.detail-section,.detail-edit{transition:background-color var(--motion-med) ease,border-color var(--motion-med) ease}

/* Inputs */
.field input,.field select,.field textarea,.rail-search input,.route-search input,.endpoint-input,.endpoint-saved-row select{
  transition:border-color var(--motion-fast) ease,box-shadow var(--motion-fast) ease,background-color var(--motion-med) ease,transform var(--motion-fast) ease;
}
.field input:focus,.field select:focus,.field textarea:focus,.rail-search input:focus,.route-search input:focus,.endpoint-input:focus{transform:translateY(-1px)}

/* Route map markers / progress */
.custom-marker,.numbered-marker,.endpoint-marker{transition:transform var(--motion-med) var(--motion-ease),filter var(--motion-med) ease}
.custom-marker:hover,.numbered-marker:hover,.endpoint-marker:hover{filter:brightness(1.05);transform:scale(1.08)}
.progress-fill,.field-progress-fill,.progress-bar>span{transition:width 520ms var(--motion-ease);animation:elizurProgressGlow 2.6s ease-in-out infinite}

/* Mobile nav feels anchored and responsive */
@media(max-width:800px){
  .main-nav a{transition:transform var(--motion-fast) var(--motion-ease),background-color var(--motion-med) ease,color var(--motion-med) ease}
  .main-nav a:active{transform:scale(.94)}
}
html.dev-iphone16-preview .main-nav a:active{transform:scale(.94)}

/* Dark-mode hover shadows stay subtle */
body.dark .kpi-card:hover,body.dark .saved-route:hover,body.dark .field-route-card:hover,body.dark .endpoint-card:hover{box-shadow:0 14px 30px rgba(0,0,0,.28)}

/* Respect accessibility preferences */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}

/* v1.31: tighter mobile maps, clearer Overview separation, anchored header */
/* Keep the app header anchored while page content scrolls underneath it. */
.topbar{
  position:fixed !important;
  top:0 !important;
  left:0;
  right:0;
  width:100%;
  transform:translateZ(0);
  will-change:transform;
  isolation:isolate;
}

@media(max-width:800px){
  /* Make the Overview read as two distinct mobile sections instead of one long block. */
  .overview-workspace{
    gap:12px;
    background:transparent;
    border:0;
    box-shadow:none;
    border-radius:0;
  }
  .location-rail{
    height:320px;
    border:1px solid var(--line);
    border-radius:14px;
    overflow:hidden;
    background:var(--panel);
    box-shadow:0 7px 20px rgba(20,28,32,.06);
  }
  .location-rail::before{
    content:"LOCATION LIST";
    display:block;
    padding:10px 16px 0;
    font-size:9px;
    line-height:1;
    letter-spacing:.16em;
    font-weight:900;
    color:var(--green-700);
  }
  .rail-search{margin-top:10px}
  .map-stage{
    height:300px;
    border:1px solid var(--line);
    border-radius:14px;
    overflow:hidden;
    background:var(--panel);
    box-shadow:0 7px 20px rgba(20,28,32,.06);
  }
  .map-stage::before{
    content:"MAP VIEW";
    position:absolute;
    top:10px;
    left:10px;
    z-index:700;
    padding:6px 9px;
    border:1px solid rgba(255,255,255,.82);
    border-radius:999px;
    background:rgba(255,255,255,.93);
    box-shadow:0 3px 10px rgba(0,0,0,.10);
    backdrop-filter:blur(8px);
    color:#536c00;
    font-size:8px;
    line-height:1;
    letter-spacing:.12em;
    font-weight:900;
  }
  body.dark .location-rail,body.dark .map-stage{box-shadow:0 8px 22px rgba(0,0,0,.22)}
  body.dark .map-stage::before{
    background:rgba(28,35,39,.94);
    border-color:#465158;
    color:#c7ef57;
  }

  /* A slightly shorter route preview leaves more room for route controls and notes. */
  .field-route-mini-map{height:150px}

  /* Explicitly anchor the top bar on real phone layouts. */
  .topbar{
    position:fixed !important;
    top:0 !important;
    bottom:auto !important;
    z-index:2200;
    transform:translateZ(0) !important;
  }
}

/* Mirror the same proportions inside the temporary iPhone 16 development preview. */
html.dev-iphone16-preview .location-rail{
  height:320px;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:var(--panel);
}
html.dev-iphone16-preview .location-rail::before{
  content:"LOCATION LIST";
  display:block;
  padding:10px 16px 0;
  font-size:9px;
  line-height:1;
  letter-spacing:.16em;
  font-weight:900;
  color:var(--green-700);
}
html.dev-iphone16-preview .rail-search{margin-top:10px}
html.dev-iphone16-preview .map-stage{
  height:300px;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
}
html.dev-iphone16-preview .map-stage::before{
  content:"MAP VIEW";
  position:absolute;
  top:10px;
  left:10px;
  z-index:700;
  padding:6px 9px;
  border:1px solid rgba(255,255,255,.82);
  border-radius:999px;
  background:rgba(255,255,255,.93);
  box-shadow:0 3px 10px rgba(0,0,0,.10);
  color:#536c00;
  font-size:8px;
  line-height:1;
  letter-spacing:.12em;
  font-weight:900;
}
html.dev-iphone16-preview body.dark .map-stage::before{
  background:rgba(28,35,39,.94);
  border-color:#465158;
  color:#c7ef57;
}
html.dev-iphone16-preview .field-route-mini-map{height:150px}
html.dev-iphone16-preview .topbar{
  position:fixed !important;
  z-index:2200;
  transform:translateZ(0) !important;
}
@media(min-width:901px){
  html.dev-iphone16-preview .topbar{top:18px !important}
}
@media(max-width:900px){
  html.dev-iphone16-preview .topbar{top:0 !important}
}

/* v1.32: refined fixed mobile chrome */
@media(max-width:800px){
  body{
    padding-top:62px;
    padding-bottom:78px;
  }

  /* Compact, fixed app header. */
  .topbar{
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    right:0 !important;
    bottom:auto !important;
    width:100% !important;
    height:58px;
    padding:7px 12px;
    z-index:3000;
    transform:none !important;
    will-change:auto;
    border-radius:0;
    border-bottom:1px solid color-mix(in srgb,var(--line) 82%,transparent);
    box-shadow:0 3px 14px rgba(24,32,36,.07);
    background:rgba(255,255,255,.94);
    backdrop-filter:blur(18px) saturate(1.15);
    -webkit-backdrop-filter:blur(18px) saturate(1.15);
  }
  body.dark .topbar{
    background:rgba(23,29,33,.94);
    box-shadow:0 3px 16px rgba(0,0,0,.20);
  }
  .brand{min-width:0;gap:8px}
  .brand-mark{
    width:78px;
    height:42px;
    padding:2px 5px;
    border-radius:10px;
    box-shadow:none;
  }
  .brand-mark img{max-width:100%;max-height:100%;object-fit:contain}
  .top-actions{display:flex;min-width:0}
  .icon-btn{
    width:38px;
    height:38px;
    border-radius:12px;
    box-shadow:none;
  }

  /* Fixed bottom navigation that reads like a light app dock instead of a large panel. */
  .main-nav{
    position:fixed !important;
    left:8px !important;
    right:8px !important;
    bottom:max(8px,env(safe-area-inset-bottom)) !important;
    top:auto !important;
    width:auto !important;
    height:60px;
    z-index:3000;
    margin:0 !important;
    padding:5px !important;
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:2px;
    transform:none !important;
    will-change:auto;
    border:1px solid rgba(199,206,210,.72);
    border-radius:18px;
    background:rgba(255,255,255,.94);
    box-shadow:0 9px 26px rgba(23,31,35,.14);
    backdrop-filter:blur(20px) saturate(1.18);
    -webkit-backdrop-filter:blur(20px) saturate(1.18);
  }
  body.dark .main-nav{
    background:rgba(26,32,36,.95);
    border-color:#3b464c;
    box-shadow:0 10px 30px rgba(0,0,0,.34);
  }
  .main-nav a{
    position:relative;
    min-width:0;
    height:48px;
    padding:5px 2px 4px;
    border-radius:12px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:3px;
    color:#7c858a;
    background:transparent !important;
    font-size:9px;
    font-weight:800;
    line-height:1.05;
    text-align:center;
    box-shadow:none !important;
    transform:none;
  }
  .main-nav a:hover{transform:none;background:rgba(166,213,20,.07)!important}
  .main-nav a:active{transform:scale(.96)}
  .main-nav a::before{
    font-size:16px;
    line-height:1;
    color:#7f898e;
    transition:color .18s ease,transform .18s ease;
  }
  .main-nav a.active{
    color:#536d00;
    background:rgba(166,213,20,.11)!important;
  }
  .main-nav a.active::before{
    color:#6f9300;
    transform:translateY(-1px);
  }
  .main-nav a.active::after{
    content:"";
    position:absolute;
    top:2px;
    left:50%;
    width:18px;
    height:3px;
    margin-left:-9px;
    border-radius:999px;
    background:var(--green);
  }
  body.dark .main-nav a{color:#aeb8bd}
  body.dark .main-nav a::before{color:#9ea8ad}
  body.dark .main-nav a.active{
    color:#d7f58a;
    background:rgba(166,213,20,.12)!important;
  }
  body.dark .main-nav a.active::before{color:#c8ef59}

  .nav-badge{
    position:absolute;
    top:2px;
    left:calc(50% + 10px);
    margin:0;
    min-width:16px;
    height:16px;
    padding:0 4px;
    border:2px solid rgba(255,255,255,.96);
    font-size:8px;
    line-height:12px;
    box-shadow:0 1px 4px rgba(0,0,0,.10);
  }
  body.dark .nav-badge{border-color:#1a2024}
}

/* Keep the temporary iPhone 16 preview chrome pinned to the viewport too. */
html.dev-iphone16-preview body{
  padding-top:62px;
  padding-bottom:78px;
}
html.dev-iphone16-preview .topbar{
  position:fixed !important;
  top:8px !important;
  left:calc(50% - 188.5px) !important;
  right:auto !important;
  width:377px !important;
  height:58px !important;
  padding:7px 12px !important;
  border-radius:18px !important;
  transform:none !important;
  will-change:auto !important;
  z-index:3000 !important;
  box-shadow:0 8px 24px rgba(26,34,38,.14);
}
html.dev-iphone16-preview .brand-mark{
  width:78px !important;
  height:42px !important;
  padding:2px 5px !important;
  border-radius:10px !important;
}
html.dev-iphone16-preview .icon-btn{width:38px;height:38px;border-radius:12px}
html.dev-iphone16-preview .main-nav{
  position:fixed !important;
  left:calc(50% - 188.5px) !important;
  right:auto !important;
  bottom:8px !important;
  top:auto !important;
  width:377px !important;
  height:60px !important;
  padding:5px !important;
  border-radius:18px !important;
  border:1px solid rgba(199,206,210,.72) !important;
  transform:none !important;
  will-change:auto !important;
  z-index:3000 !important;
  box-shadow:0 9px 26px rgba(23,31,35,.16);
}
html.dev-iphone16-preview .main-nav a{
  height:48px !important;
  padding:5px 2px 4px !important;
  border-radius:12px !important;
  background:transparent !important;
  font-size:9px !important;
}
html.dev-iphone16-preview .main-nav a.active{background:rgba(166,213,20,.11)!important}
html.dev-iphone16-preview .nav-badge{top:2px;left:calc(50% + 10px);margin:0}

@media(max-width:900px){
  html.dev-iphone16-preview .topbar{
    top:0 !important;
    left:0 !important;
    width:100% !important;
    border-radius:0 !important;
  }
  html.dev-iphone16-preview .main-nav{
    left:8px !important;
    right:8px !important;
    width:auto !important;
    bottom:max(8px,env(safe-area-inset-bottom)) !important;
    border-radius:18px !important;
  }
}

/* v1.33: mobile navigation readability + normal document flow */
@media(max-width:800px){
  body{
    padding-top:0 !important;
    padding-bottom:0 !important;
  }

  /* Header now scrolls naturally with the page instead of floating over content. */
  .topbar{
    position:relative !important;
    inset:auto !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
    padding:10px 12px 9px !important;
    display:flex !important;
    flex-wrap:wrap !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:8px 10px !important;
    z-index:20 !important;
    transform:none !important;
    border-radius:0 !important;
    box-shadow:none !important;
    background:var(--panel) !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
  }
  .brand{flex:1 1 auto;min-width:0 !important}
  .brand-mark{
    width:74px !important;
    height:40px !important;
    padding:2px 5px !important;
    border-radius:9px !important;
  }
  .brand-copy{display:none !important}
  .top-actions{flex:0 0 auto;min-width:0 !important}
  .icon-btn{width:38px;height:38px;border-radius:10px}

  /* Primary nav is a readable second row of the header, not a floating dock. */
  .main-nav{
    position:relative !important;
    inset:auto !important;
    order:3 !important;
    flex:0 0 100% !important;
    width:100% !important;
    height:auto !important;
    margin:1px 0 0 !important;
    padding:4px !important;
    display:grid !important;
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
    gap:3px !important;
    transform:none !important;
    border:1px solid var(--line) !important;
    border-radius:12px !important;
    background:#f4f6f5 !important;
    box-shadow:none !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
  }
  body.dark .main-nav{
    background:#222a2f !important;
    border-color:#424c52 !important;
  }
  .main-nav a{
    position:relative;
    min-width:0 !important;
    height:40px !important;
    padding:0 4px !important;
    border-radius:9px !important;
    display:flex !important;
    flex-direction:row !important;
    align-items:center !important;
    justify-content:center !important;
    gap:4px !important;
    font-size:10.5px !important;
    line-height:1.15 !important;
    font-weight:800 !important;
    letter-spacing:-.01em;
    color:#414a50 !important;
    background:transparent !important;
    white-space:nowrap;
    overflow:visible !important;
    text-overflow:clip !important;
  }
  .main-nav a span:first-child{
    display:block !important;
    max-width:none !important;
    overflow:visible !important;
    text-overflow:clip !important;
    white-space:nowrap !important;
  }
  .main-nav a::before,
  .main-nav a::after{display:none !important;content:none !important}
  .main-nav a:hover{background:#e9eeeb !important;color:#1f272b !important;transform:none !important}
  .main-nav a.active{
    background:var(--green-soft) !important;
    color:#354900 !important;
    box-shadow:inset 0 0 0 1px #d4e69e !important;
  }
  body.dark .main-nav a{color:#e3e8ea !important}
  body.dark .main-nav a:hover{background:#30393e !important;color:#fff !important}
  body.dark .main-nav a.active{
    background:#3a4d1a !important;
    color:#f1ffd0 !important;
    box-shadow:inset 0 0 0 1px #607a29 !important;
  }
  .nav-badge{
    position:static !important;
    margin:0 !important;
    min-width:17px !important;
    height:17px !important;
    padding:0 4px !important;
    border:0 !important;
    font-size:8px !important;
    line-height:17px !important;
    box-shadow:none !important;
  }

  .shell{padding-top:16px !important}
}

/* The temporary iPhone 16 preview follows the same non-fixed mobile layout. */
html.dev-iphone16-preview body{
  padding-top:0 !important;
  padding-bottom:0 !important;
}
html.dev-iphone16-preview .topbar{
  position:relative !important;
  inset:auto !important;
  left:auto !important;
  right:auto !important;
  top:auto !important;
  width:100% !important;
  height:auto !important;
  padding:10px 12px 9px !important;
  border-radius:30px 30px 0 0 !important;
  display:flex !important;
  flex-wrap:wrap !important;
  gap:8px 10px !important;
  box-shadow:none !important;
  transform:none !important;
}
html.dev-iphone16-preview .brand-mark{width:74px !important;height:40px !important}
html.dev-iphone16-preview .main-nav{
  position:relative !important;
  inset:auto !important;
  left:auto !important;
  right:auto !important;
  top:auto !important;
  bottom:auto !important;
  order:3 !important;
  width:100% !important;
  height:auto !important;
  margin:1px 0 0 !important;
  padding:4px !important;
  border-radius:12px !important;
  transform:none !important;
  box-shadow:none !important;
}
html.dev-iphone16-preview .main-nav a{
  height:40px !important;
  padding:0 4px !important;
  border-radius:9px !important;
  flex-direction:row !important;
  gap:4px !important;
  font-size:10.5px !important;
}
html.dev-iphone16-preview .main-nav a::before,
html.dev-iphone16-preview .main-nav a::after{display:none !important;content:none !important}
html.dev-iphone16-preview .nav-badge{position:static !important;margin:0 !important}

@media(max-width:380px){
  .main-nav a,html.dev-iphone16-preview .main-nav a{font-size:9.5px !important;padding:0 2px !important}
}

/* v1.35: true mobile dark mode + stronger navigation contrast */
@media(max-width:800px){
  .main-nav{
    background:#eef1f0 !important;
    border-color:#cfd6d8 !important;
  }
  .main-nav a{
    color:#263036 !important;
    font-size:11px !important;
    font-weight:850 !important;
  }
  .main-nav a.active{
    background:#dff0a8 !important;
    color:#263700 !important;
    box-shadow:inset 0 0 0 1px #bdd868 !important;
  }

  body.dark{
    --bg:#0d1215;
    --panel:#151c20;
    --line:#354047;
    --muted:#aeb8bd;
  }
  body.dark .topbar{
    background:#101619 !important;
    border-bottom-color:#303b41 !important;
  }
  body.dark .main-nav{
    background:#141b1f !important;
    border-color:#3d494f !important;
  }
  body.dark .main-nav a{
    color:#f0f4f5 !important;
    text-shadow:none !important;
  }
  body.dark .main-nav a:hover{
    background:#222c31 !important;
    color:#fff !important;
  }
  body.dark .main-nav a.active{
    background:#344a14 !important;
    color:#f5ffd9 !important;
    box-shadow:inset 0 0 0 1px #769a2b !important;
  }
  body.dark .nav-badge{
    background:#b9e62b !important;
    color:#162000 !important;
  }
  body.dark .icon-btn{
    background:#182126 !important;
    color:#fff !important;
    border-color:#46545b !important;
  }
  body.dark .icon-btn:hover{
    background:#222d32 !important;
    border-color:#65747b !important;
  }
}

/* The iPhone 16 development preview needs explicit dark selectors because it
   has its own high-specificity preview rules. */
html.dev-iphone16-preview body.dark{
  background:#0d1215 !important;
  color:#f1f5f6 !important;
}
html.dev-iphone16-preview body.dark .topbar{
  background:#101619 !important;
  border-color:#303b41 !important;
}
html.dev-iphone16-preview body.dark .main-nav{
  background:#141b1f !important;
  border:1px solid #3d494f !important;
}
html.dev-iphone16-preview body.dark .main-nav a{
  color:#f0f4f5 !important;
  background:transparent !important;
  font-weight:850 !important;
}
html.dev-iphone16-preview body.dark .main-nav a.active{
  background:#344a14 !important;
  color:#f5ffd9 !important;
  box-shadow:inset 0 0 0 1px #769a2b !important;
}
html.dev-iphone16-preview body.dark .nav-badge{
  background:#b9e62b !important;
  color:#162000 !important;
}

/* v1.36 — AI Route Generator */
.ai-route-generator{border:1px solid rgba(126,161,0,.28);background:linear-gradient(145deg,rgba(166,213,20,.10),rgba(166,213,20,.025));border-radius:18px;padding:16px;display:grid;gap:12px}
.ai-route-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.ai-route-head h3{margin:2px 0 0;font-size:1.05rem}
.ai-badge{white-space:nowrap;border-radius:999px;padding:5px 9px;background:rgba(166,213,20,.18);color:#587400;font-size:.72rem;font-weight:800}
.ai-route-copy{margin:0;color:var(--muted);font-size:.88rem;line-height:1.45}
.ai-route-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.ai-route-controls .field{margin:0}
.ai-generate-btn{min-height:44px;white-space:nowrap}
.ai-route-options{display:grid;gap:5px;font-size:.8rem}
.ai-route-options label{display:flex;align-items:center;gap:8px;font-weight:700}
.ai-route-options input{accent-color:#7ea100}
.ai-route-options small{color:var(--muted);line-height:1.35}
.ai-route-result{border-radius:12px;padding:10px 12px;background:rgba(255,255,255,.7);border:1px solid rgba(126,161,0,.15);font-size:.8rem;line-height:1.4}
.ai-route-result strong{display:block;color:var(--text);margin-bottom:2px}
.ai-route-result span{color:var(--muted)}
body.dark .ai-route-generator{background:linear-gradient(145deg,rgba(166,213,20,.12),rgba(255,255,255,.02));border-color:rgba(166,213,20,.30)}
body.dark .ai-badge{background:rgba(166,213,20,.16);color:#dfff70}
body.dark .ai-route-result{background:#151d20;border-color:#344247}
body.dark .ai-route-result strong{color:#f5f8f9}
body.dark .ai-route-result span{color:#c8d0d4}
@media(max-width:760px){.ai-route-generator{padding:14px}.ai-route-controls{grid-template-columns:1fr}.ai-generate-btn{width:100%}.ai-route-head{align-items:center}.ai-badge{font-size:.68rem}}
html.dev-iphone16-preview .ai-route-controls{grid-template-columns:1fr}
html.dev-iphone16-preview .ai-generate-btn{width:100%}

/* v1.38 — Overview visit-age heat pins */
.custom-marker.visit-recent{background:#f5c5c5}
.custom-marker.visit-aging{background:#ee9696}
.custom-marker.visit-due-soon{background:#df6464}
.custom-marker.visit-due{background:#c83a3a}
.custom-marker.visit-overdue{background:#941f1f}
.custom-marker.visit-never{background:#5e1111}
.custom-marker.attention{border-color:#ffb45a;box-shadow:0 0 0 2px rgba(255,151,46,.38),0 4px 10px rgba(0,0,0,.25)}
.custom-marker.visit-recent::after,.custom-marker.visit-aging::after{background:#5f2020}
.custom-marker.visit-due-soon::after,.custom-marker.visit-due::after,.custom-marker.visit-overdue::after,.custom-marker.visit-never::after{background:#fff}
.visit-legend{gap:10px;flex-wrap:wrap}
.visit-legend .legend-title{font-size:9px;letter-spacing:.12em;font-weight:900;color:var(--ink)}
.visit-key{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.visit-swatch{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.12)}
.visit-swatch.recent{background:#f5c5c5}.visit-swatch.aging{background:#ee9696}.visit-swatch.due-soon{background:#df6464}.visit-swatch.due{background:#c83a3a}.visit-swatch.overdue{background:#941f1f}.visit-swatch.never{background:#5e1111}
.visit-age-tooltip{font-size:11px;line-height:1.45}.visit-age-tooltip span{opacity:.78}
body.dark .visit-swatch{border-color:rgba(255,255,255,.22)}
@media(max-width:700px){.visit-legend{gap:7px;padding:8px 9px}.visit-legend .legend-title{width:100%}.visit-key{font-size:9px}.visit-swatch{width:9px;height:9px}}
html.dev-iphone16-preview .visit-legend{gap:7px;padding:8px 9px}html.dev-iphone16-preview .visit-legend .legend-title{width:100%}html.dev-iphone16-preview .visit-key{font-size:9px}html.dev-iphone16-preview .visit-swatch{width:9px;height:9px}


/* v1.39 — Route Planner map-based stop selection */
.route-map-helper{display:flex;align-items:center;gap:9px;padding:9px 11px;border-bottom:1px solid var(--line);background:#fbfcf8;font-size:10px}
.route-map-helper strong{white-space:nowrap;color:#4f6800}.route-map-helper span{color:var(--muted)}
.planner-location-pin{width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 7px rgba(0,0,0,.28);cursor:pointer;transition:transform .14s ease,box-shadow .14s ease}
.planner-location-pin:hover{transform:scale(1.18);box-shadow:0 3px 10px rgba(0,0,0,.34)}
.planner-location-pin.visit-recent{background:#f5c5c5}.planner-location-pin.visit-aging{background:#ee9696}.planner-location-pin.visit-due-soon{background:#df6464}.planner-location-pin.visit-due{background:#c83a3a}.planner-location-pin.visit-overdue{background:#941f1f}.planner-location-pin.visit-never{background:#5e1111}
.planner-location-pin.attention{border-color:#ffb45a;box-shadow:0 0 0 2px rgba(255,151,46,.32),0 2px 7px rgba(0,0,0,.28)}
.route-pin.planner-selected{cursor:pointer;box-shadow:0 0 0 3px rgba(166,213,20,.28),0 3px 10px rgba(0,0,0,.3)}
.planner-pin-action{margin-top:7px;padding-top:6px;border-top:1px solid #e7eaeb;font-size:9px;font-weight:900;color:#5d7600}.planner-pin-action.remove{color:#b83b3b}
body.dark .route-map-helper{background:#171e21;border-color:#344047}body.dark .route-map-helper strong{color:#dfff70}body.dark .route-map-helper span{color:#c7d0d4}body.dark .planner-pin-action{border-color:#3b464b;color:#dfff70}body.dark .planner-pin-action.remove{color:#ff9696}
@media(max-width:760px){.route-map-helper{align-items:flex-start;flex-direction:column;gap:2px;font-size:10px;padding:9px 10px}.planner-location-pin{width:24px;height:24px}}
html.dev-iphone16-preview .route-map-helper{align-items:flex-start;flex-direction:column;gap:2px;font-size:10px;padding:9px 10px}html.dev-iphone16-preview .planner-location-pin{width:24px;height:24px}


/* v1.40 regression stabilization: navigation follows normal document flow on every viewport. */
body{padding-top:0 !important}
.topbar{position:relative !important;top:auto !important;left:auto !important;right:auto !important;width:100% !important;transform:none !important;will-change:auto !important}
@media(min-width:801px){.route-sidebar{top:20px}}
html.dev-iphone16-preview .topbar{position:relative !important;top:auto !important;left:auto !important;right:auto !important}

/* v1.41 — fresh-visit green pins, route defaults, refined endpoint markers */
.custom-marker.visit-recent{background:#79b82a}
.custom-marker.visit-recent::after{background:#fff}
.visit-swatch.recent{background:#79b82a}
.planner-location-pin.visit-recent{background:#79b82a}

.route-defaults-card{margin:10px 0 12px;padding:11px 12px;border:1px solid #dce8ba;border-radius:13px;background:#f8fbea}
.route-defaults-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.route-defaults-head>div:first-child{display:flex;flex-direction:column;gap:3px}
.route-defaults-head strong{font-size:12px}
.route-default-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.route-defaults-card p{margin:7px 0 8px;font-size:9px;line-height:1.45;color:var(--muted)}
.route-defaults-status{display:flex;gap:7px;flex-wrap:wrap;align-items:center;font-size:9px;font-weight:800;color:#526d00}
.route-defaults-status span{color:#9aac64}
body.dark .route-defaults-card{background:#212a17;border-color:#3c4d22}
body.dark .route-defaults-status{color:#d1e59b}
body.dark .route-defaults-status span{color:#73854a}

.endpoint-icon{border-radius:50%;width:30px;height:30px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.endpoint-icon svg{width:16px;height:16px;display:block}
.endpoint-icon.start{background:#dff2b1;color:#486600}
.endpoint-icon.finish{background:#e9edf0;color:#313b41}
body.dark .endpoint-icon.start{background:#32431d;color:#d7f58c}
body.dark .endpoint-icon.finish{background:#30393e;color:#edf2f4}

.endpoint-map-pin{width:34px;height:34px;border-radius:50% 50% 50% 8px;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:0 4px 12px rgba(0,0,0,.32)}
.endpoint-map-pin span{width:19px;height:19px;border-radius:50%;display:flex;align-items:center;justify-content:center;transform:rotate(45deg)}
.endpoint-map-pin svg{width:13px;height:13px;display:block}
.endpoint-map-pin.start{background:#607f08;color:#fff}
.endpoint-map-pin.start span{background:#89b80f}
.endpoint-map-pin.finish{background:#252d31;color:#fff}
.endpoint-map-pin.finish span{background:#465158}
body.dark .endpoint-map-pin{border-color:#f4f7f8}

.field-map-legend .legend-marker.start{background:#607f08;color:#fff;border-color:#fff}
.field-map-legend .legend-marker.finish{background:#252d31;color:#fff;border-color:#fff}

@media(max-width:700px){
  .route-defaults-head{align-items:flex-start;flex-direction:column}
  .route-default-actions{width:100%;justify-content:flex-start}
  .route-defaults-card .btn{flex:1}
}
html.dev-iphone16-preview .route-defaults-head{align-items:flex-start;flex-direction:column}
html.dev-iphone16-preview .route-default-actions{width:100%;justify-content:flex-start}
html.dev-iphone16-preview .route-defaults-card .btn{flex:1}


/* v1.42 — Add New Location */
.add-location-btn{white-space:nowrap}
.new-location-hero{border-bottom:1px solid var(--border)}
.new-location-help{font-size:.82rem;color:var(--muted);padding:10px 12px;border:1px dashed var(--border);border-radius:10px;background:color-mix(in srgb,var(--panel) 92%,var(--accent) 8%)}
@media(max-width:700px){.hero-actions .add-location-btn{width:100%}}
html.dev-iphone16-preview .hero-actions .add-location-btn{width:100%}


/* v1.43 — In Office Day calendar status */
.calendar-event.office-event{border-left-color:#4f6570;background:#edf2f4;color:#30434c}
.office-event-icon{font-size:10px;margin-right:3px}
.calendar-day.office-day{background-image:linear-gradient(135deg,rgba(79,101,112,.055),rgba(79,101,112,0) 55%)}
.office-day-control{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:13px;padding:12px;margin:0 0 14px;background:#f8fafb}
.office-day-control.active{border-color:#9aabb3;background:#eef3f5}
.office-day-control-copy{display:flex;align-items:center;gap:10px;min-width:0}.office-day-control-copy>div{display:flex;flex-direction:column;gap:2px;min-width:0}.office-day-control-copy strong{font-size:11px}.office-day-control-copy small{font-size:9px;color:var(--muted);line-height:1.35}.office-day-symbol{width:31px;height:31px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;background:#465c66;color:#fff;font-weight:900;font-size:16px}
body.dark .calendar-event.office-event{background:#2b3940;color:#e3edf1;border-left-color:#9fb4bd}
body.dark .calendar-day.office-day{background-image:linear-gradient(135deg,rgba(159,180,189,.08),rgba(159,180,189,0) 55%)}
body.dark .office-day-control{background:#20292e;border-color:#35434a}body.dark .office-day-control.active{background:#26343b;border-color:#60757f}
@media(max-width:800px){.office-day-control{align-items:stretch;flex-direction:column}.office-day-control .btn{width:100%}}
html.dev-iphone16-preview .office-day-control{align-items:stretch;flex-direction:column}html.dev-iphone16-preview .office-day-control .btn{width:100%}
\n\n/* v1.46 — Overview Revisit workflow */\n.revisit-section{border-top:1px solid var(--line);background:color-mix(in srgb,var(--panel) 94%,var(--green-soft));flex:0 0 auto}\n.revisit-heading{display:flex;align-items:center;justify-content:space-between;padding:11px 13px 9px}.revisit-heading>div{display:flex;flex-direction:column;gap:2px}.revisit-heading strong{font-size:13px}.revisit-count{min-width:25px;height:25px;padding:0 7px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--green-soft);color:#5d7d00;font-size:11px;font-weight:900}\n.revisit-list{max-height:180px;overflow-y:auto;overscroll-behavior:contain;padding:0 8px 8px}.revisit-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center;border:1px solid var(--line);border-radius:10px;background:var(--panel);margin:6px 0;overflow:hidden}.revisit-item.active{border-color:#a6d514;box-shadow:0 0 0 2px rgba(166,213,20,.12)}.revisit-location-main{appearance:none;border:0;background:transparent;color:var(--ink);text-align:left;padding:9px 8px;min-width:0;cursor:pointer}.revisit-location-main strong,.revisit-location-main small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.revisit-location-main strong{font-size:11px}.revisit-location-main small{font-size:9px;color:var(--muted);margin-top:3px}.revisit-restore-btn{border:0;border-left:1px solid var(--line);align-self:stretch;padding:0 9px;background:var(--green-soft);color:#5d7d00;font-size:9px;font-weight:900;cursor:pointer}.revisit-restore-btn:hover{filter:brightness(.97)}.revisit-empty,.rail-empty{padding:12px;color:var(--muted);font-size:10px;text-align:center}.detail-actions-three{grid-template-columns:1fr 1fr}.detail-actions-three .revisit-action-btn{grid-column:1/-1}.revisit-action-btn{border-color:#dfc58d!important;color:#8b6309!important;background:#fff9e9!important}.revisit-action-btn.restore{border-color:#b9d764!important;color:#5d7d00!important;background:var(--green-soft)!important}.kpi-card.revisit .kpi-icon{background:#fff4d8;color:#936700}body.dark .revisit-section{background:#171e21}body.dark .revisit-count{color:#c9ef64}body.dark .revisit-restore-btn{color:#c9ef64}body.dark .revisit-action-btn{background:#322c1c!important;color:#f3cf78!important;border-color:#6f5c2e!important}body.dark .revisit-action-btn.restore{background:#273414!important;color:#c9ef64!important;border-color:#536d25!important}\n@media(max-width:800px){.revisit-list{max-height:150px}}\nhtml.dev-iphone16-preview .revisit-list{max-height:150px}\n

/* v1.47 — Location Requests / coworker flag workflow */
.requests-shell{padding-bottom:72px}.request-hero{align-items:center}.request-summary{min-width:118px;padding:16px 20px;border:1px solid var(--border);border-radius:18px;background:var(--surface);text-align:center;box-shadow:var(--shadow-sm)}.request-summary strong{display:block;font-size:30px;line-height:1;color:var(--text)}.request-summary span{display:block;margin-top:5px;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.request-workspace{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(420px,1.18fr);gap:18px;align-items:start}.request-location-card,.request-form-card,.flagged-requests-card{padding:20px}.request-form-card{position:sticky;top:18px;min-height:430px}.request-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.request-section-head h2{margin:2px 0 0}.request-search{margin-bottom:12px}.request-location-list{max-height:590px;overflow:auto;border:1px solid var(--border);border-radius:14px;background:var(--surface-2)}.request-location-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;border:0;border-bottom:1px solid var(--border);background:transparent;padding:14px 15px;cursor:pointer;color:var(--text);transition:background .16s ease,transform .16s ease}.request-location-row:last-child{border-bottom:0}.request-location-row:hover{background:var(--surface)}.request-location-row.selected{background:rgba(166,213,20,.13);box-shadow:inset 3px 0 0 var(--green)}.request-location-main{min-width:0;display:flex;flex-direction:column;gap:3px}.request-location-main strong,.request-location-main span,.request-location-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.request-location-main span{font-size:13px;color:var(--muted)}.request-location-main small{font-size:11px;color:var(--muted)}.location-flag-badge{flex:0 0 auto;background:#fff3e0;color:#8a4b00;border:1px solid #f5c675;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:900}.request-select-arrow{font-size:24px;color:var(--muted)}.request-list-empty,.request-empty{text-align:center;color:var(--muted);padding:42px 18px}.request-empty h2{color:var(--text)}.location-request-form{display:grid;gap:14px}.request-selected-location{display:flex;align-items:center;gap:12px;padding:14px 15px;border:1px solid rgba(166,213,20,.45);background:rgba(166,213,20,.10);border-radius:14px}.request-selected-location>div{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.request-selected-location strong{font-size:16px}.request-selected-location span:not(.mini-label),.request-selected-location small{color:var(--muted);font-size:12px}.selected-flag-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--green);color:#111;font-size:20px;font-weight:900}.request-submit-note{font-size:12px;color:var(--muted);padding:10px 12px;border-radius:10px;background:var(--surface-2)}.flagged-requests-card{margin-top:18px}.request-open-count{font-size:12px;font-weight:900;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:6px 9px}.flag-filter-row{display:flex;gap:8px;margin-bottom:14px}.flagged-request-list{display:grid;gap:12px}.flag-request{border:1px solid var(--border);border-radius:16px;padding:16px;background:var(--surface);box-shadow:var(--shadow-sm)}.flag-request.resolved{opacity:.72}.flag-request-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.flag-status,.flag-urgency{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.flag-status.open{background:#fff0f0;color:#a21717}.flag-status.resolved{background:#eaf7d7;color:#426900}.flag-urgency{margin-left:6px;background:var(--surface-2);color:var(--muted)}.flag-urgency.critical{background:#7f1010;color:#fff}.flag-urgency.high{background:#d94932;color:#fff}.flag-urgency.medium{background:#ffe0a8;color:#6b4200}.flag-date{font-size:11px;color:var(--muted)}.flag-request h3{margin:12px 0 2px}.flag-address{margin:0;color:var(--muted);font-size:12px}.flag-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.flag-detail-grid>div{padding:12px;border-radius:12px;background:var(--surface-2)}.flag-detail-grid p{margin:5px 0 0;white-space:pre-wrap;line-height:1.45}.flag-reporter{font-size:12px;color:var(--muted);margin-top:12px}.flag-actions{display:flex;gap:8px;margin-top:14px}.dark .location-flag-badge{background:#493213;color:#ffd89a;border-color:#79531b}.dark .flag-status.open{background:#4a1b1b;color:#ffb2b2}.dark .flag-status.resolved{background:#263b1a;color:#bce77c}.dark .flag-urgency.medium{background:#4d3819;color:#ffd899}
@media(max-width:900px){.request-workspace{grid-template-columns:1fr}.request-form-card{position:static}.request-location-list{max-height:420px}.flag-detail-grid{grid-template-columns:1fr}}
@media(max-width:560px){.request-location-card,.request-form-card,.flagged-requests-card{padding:14px}.request-location-list{max-height:360px}.request-summary{min-width:92px;padding:12px}.request-summary strong{font-size:25px}.flag-request-top{align-items:flex-start;flex-direction:column}.flag-actions{flex-wrap:wrap}.request-selected-location{align-items:flex-start}}

/* v1.48 — real authentication + role-ready access */
.auth-setup-banner{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:9px 18px;background:#fff4cc;border-bottom:1px solid #ead27a;color:#5c4b00;font-size:.82rem;position:relative;z-index:1000}.auth-setup-banner strong{font-size:.7rem;letter-spacing:.12em}.auth-setup-banner a{color:inherit;font-weight:800}.auth-setup-banner code{font-size:.76rem}.dark .auth-setup-banner{background:#322b11;border-color:#5b4c19;color:#f5df83}
.auth-account{display:flex;align-items:center;gap:10px;margin-right:4px}.auth-account-copy{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}.auth-account-copy strong{font-size:.78rem;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-account-copy span{font-size:.67rem;color:var(--muted);margin-top:3px}.auth-logout{white-space:nowrap}
.auth-page{min-height:100vh;background:radial-gradient(circle at 20% 15%,rgba(166,213,20,.16),transparent 28%),linear-gradient(145deg,#f7f8f4,#eef1e9);display:block}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px 18px}.auth-card{width:min(460px,100%);background:var(--card,#fff);border:1px solid var(--line,#dfe3dc);border-radius:24px;padding:30px;box-shadow:0 24px 70px rgba(25,33,20,.13)}.auth-brand{display:flex;align-items:center;gap:14px;padding-bottom:22px;border-bottom:1px solid var(--line)}.auth-brand .brand-mark{width:86px;min-width:86px}.auth-brand .brand-mark img{width:100%;height:auto;display:block}.auth-brand>div{display:flex;flex-direction:column;gap:2px}.auth-brand>div strong{font-size:1.05rem}.auth-brand>div span{color:var(--muted);font-size:.76rem}.auth-heading{padding:26px 0 18px}.auth-heading h1{font-size:2rem;margin:3px 0 8px}.auth-heading p:last-child{color:var(--muted);margin:0;line-height:1.55}.auth-form{display:grid;gap:14px}.auth-form .field input{min-height:48px}.auth-submit{width:100%;min-height:48px;margin-top:2px}.auth-forgot{justify-self:center;margin-top:2px}.auth-error{padding:11px 13px;border:1px solid #e6a4a4;background:#fff2f2;color:#982828;border-radius:10px;font-size:.84rem;margin-bottom:14px}.auth-status{min-height:20px;color:var(--muted);font-size:.8rem;text-align:center}.auth-setup-notice{padding:14px;border:1px solid #d8c261;background:#fff8d9;border-radius:12px;color:#5b4a00;display:grid;gap:6px;margin-bottom:18px}.auth-setup-notice strong{font-size:.84rem}.auth-setup-notice span{font-size:.79rem;line-height:1.5}.auth-new-user{margin-top:18px;padding:14px 15px;border:1px solid rgba(166,213,20,.45);background:rgba(166,213,20,.08);border-radius:14px;display:flex;gap:12px;align-items:flex-start}.auth-new-user-icon{width:34px;height:34px;min-width:34px;border-radius:10px;display:grid;place-items:center;background:rgba(166,213,20,.2);font-size:1rem}.auth-new-user strong{display:block;font-size:.86rem;margin-bottom:3px}.auth-new-user p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.45}.auth-new-user-links{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px}.auth-new-user-links a{font-size:.78rem;font-weight:800;color:#668900;text-decoration:none}.auth-new-user-links a:hover{text-decoration:underline}.dark .auth-new-user{background:rgba(166,213,20,.07);border-color:rgba(166,213,20,.28)}.dark .auth-new-user-links a{color:#b8e446}
.auth-security-note{margin-top:22px;padding-top:18px;border-top:1px solid var(--line);display:flex;gap:10px;color:var(--muted);font-size:.75rem;line-height:1.45}.auth-security-note p{margin:0}.dark.auth-page{background:radial-gradient(circle at 20% 15%,rgba(166,213,20,.09),transparent 28%),#11150f}.dark .auth-card{background:#171c14;border-color:#30382c;box-shadow:0 24px 70px rgba(0,0,0,.35)}.dark .auth-error{background:#331a1a;border-color:#6a3030;color:#ffb3b3}.dark .auth-setup-notice{background:#302b13;border-color:#5f5423;color:#f5df83}
@media(max-width:700px){.auth-card{padding:24px 20px;border-radius:18px}.auth-account-copy{display:none}.top-actions .auth-account{gap:5px}.auth-logout{padding-inline:9px}.auth-setup-banner{font-size:.74rem;text-align:center}}

/* v1.52 — role-aware Overview maps */
.map-mode-switcher{display:inline-flex;gap:6px;margin-top:16px;padding:5px;border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:0 5px 16px rgba(28,36,40,.06)}
.map-mode-switcher[hidden]{display:none!important}.map-mode-btn{appearance:none;border:1px solid transparent;background:transparent;color:var(--muted);border-radius:10px;padding:9px 12px;display:flex;align-items:center;gap:9px;cursor:pointer;text-align:left;transition:.16s ease}.map-mode-btn:hover{background:var(--bg);color:var(--ink)}.map-mode-btn.active{background:var(--green-soft);border-color:#c9df78;color:var(--ink)}.map-mode-btn>span:last-child{display:flex;flex-direction:column;gap:1px}.map-mode-btn strong{font-size:11px}.map-mode-btn small{font-size:8px;color:var(--muted);white-space:nowrap}.map-mode-icon{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;background:#edf1f2;color:#46545b;font-weight:900}.map-mode-btn.active .map-mode-icon{background:#d9eca0;color:#547000}
.map-view-label{position:absolute;z-index:500;top:12px;left:50px;display:flex;align-items:center;gap:7px;padding:7px 10px;background:rgba(255,255,255,.93);border:1px solid rgba(0,0,0,.08);border-radius:10px;box-shadow:0 3px 12px rgba(0,0,0,.09);font-size:10px;pointer-events:none}.map-view-dot{width:8px;height:8px;border-radius:50%;background:#7ba51a}.map-view-dot.clinical{background:#365e74}
body.dark .map-mode-switcher{background:#1b2125}body.dark .map-mode-btn.active{background:#263310;border-color:#4d6322}body.dark .map-mode-icon{background:#293238;color:#c4ced3}body.dark .map-mode-btn.active .map-mode-icon{background:#3d4e20;color:#d4ee85}body.dark .map-view-label{background:rgba(28,34,37,.94);border-color:#3a454b}
@media(max-width:800px){.map-mode-switcher{width:100%;display:grid;grid-template-columns:1fr 1fr}.map-mode-btn{padding:8px}.map-mode-btn small{white-space:normal}.map-view-label{left:44px;top:10px}.map-view-label strong{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
html.dev-iphone16-preview .map-mode-switcher{width:100%;display:grid;grid-template-columns:1fr 1fr}html.dev-iphone16-preview .map-mode-btn{padding:8px}html.dev-iphone16-preview .map-mode-btn small{white-space:normal}

/* v1.52 — professional User Management */
.users-shell{max-width:1380px}.users-hero{align-items:center}.users-security-note{display:flex;gap:9px;align-items:center;max-width:310px;padding:11px 13px;border:1px solid #cfe2a0;background:#f8fbe9;border-radius:12px}.users-security-note>span{color:#6f940c;font-size:10px}.users-security-note div{display:flex;flex-direction:column;gap:2px}.users-security-note strong{font-size:10px}.users-security-note small{font-size:9px;line-height:1.35;color:var(--muted)}
.user-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 14px}.user-kpi-card{border:1px solid var(--line);border-radius:13px;background:var(--panel);padding:13px 15px;display:flex;justify-content:space-between;align-items:end}.user-kpi-card span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:900}.user-kpi-card strong{font-size:24px;line-height:1}
.users-layout{display:grid;grid-template-columns:minmax(290px,350px) minmax(0,1fr);gap:14px;align-items:start}.user-create-card{padding:18px;position:sticky;top:18px}.user-create-card .card-head{margin-bottom:14px}.user-create-card h2,.user-directory-card h2{margin:3px 0 4px}.user-create-card p,.user-directory-card p{margin:0;color:var(--muted);font-size:10px}.user-create-form .field{margin-bottom:11px}.role-help{font-size:9px;line-height:1.45;color:var(--muted);padding:9px 10px;background:var(--bg);border:1px solid var(--line);border-radius:9px;margin:-2px 0 12px}.temp-password-box{padding:11px 12px;border:1px dashed #b7c680;border-radius:10px;background:#fafceb;margin:0 0 13px;display:flex;flex-direction:column;gap:3px}.temp-password-box strong{font-size:15px;letter-spacing:.04em}.temp-password-box small{color:var(--muted);font-size:9px;line-height:1.4}
.user-directory-card{padding:0;overflow:hidden}.user-directory-head{padding:18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:end;gap:16px}.directory-tools{display:grid;grid-template-columns:minmax(180px,260px) 150px;gap:8px}.directory-tools input,.directory-tools select,.user-access-controls select{border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);padding:9px 10px;outline:none}.directory-tools input:focus,.directory-tools select:focus,.user-access-controls select:focus{border-color:#a6c94d;box-shadow:0 0 0 3px rgba(166,213,20,.1)}.user-directory{min-height:260px}.user-row{display:grid;grid-template-columns:42px minmax(0,1fr) minmax(260px,330px);gap:12px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line)}.user-row:last-child{border-bottom:0}.user-row.inactive{opacity:.65}.user-avatar{width:38px;height:38px;border-radius:11px;background:var(--green-soft);display:grid;place-items:center;font-size:11px;font-weight:900;color:#5b7608}.user-identity{min-width:0;display:flex;flex-direction:column;gap:2px}.user-identity strong{font-size:11px}.user-identity>span{font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-status-line{font-size:8px;color:var(--muted);display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:2px}.user-status-line b{color:var(--ink)}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.status-dot.active{background:#7ead1d}.status-dot.inactive{background:#999}.user-access-controls{display:grid;grid-template-columns:minmax(150px,1fr) 92px;gap:8px;align-items:end}.user-access-controls label{display:flex;flex-direction:column;gap:4px}.user-access-controls label>span{font-size:8px;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:var(--muted)}.user-active-toggle .btn{min-height:35px}.directory-loading,.directory-empty,.directory-error{padding:28px;text-align:center;color:var(--muted);font-size:10px}.directory-empty{display:flex;flex-direction:column;gap:4px}.directory-error{color:#9f322d}.form-error,.form-success{font-size:9px;line-height:1.4;padding:9px 10px;border-radius:8px;margin-top:9px}.form-error{background:#fff0ef;color:#9d322c;border:1px solid #efd0cd}.form-success{background:#f4fae5;color:#566f0a;border:1px solid #d6e8a3}
body.dark .users-security-note{background:#253019;border-color:#455d25}body.dark .temp-password-box{background:#252b19;border-color:#53642d}body.dark .role-help{background:#161b1e}body.dark .user-avatar{color:#cbe873}body.dark .form-error{background:#342221;border-color:#68413e;color:#efaaa4}body.dark .form-success{background:#263019;border-color:#4b6325;color:#d3ea91}
@media(max-width:960px){.users-layout{grid-template-columns:1fr}.user-create-card{position:relative;top:0}.user-directory-head{align-items:stretch;flex-direction:column}.directory-tools{grid-template-columns:1fr 160px}.user-row{grid-template-columns:42px minmax(0,1fr)}.user-access-controls{grid-column:1/-1;padding-left:54px}.user-kpi-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.user-kpi-grid{grid-template-columns:1fr 1fr}.directory-tools{grid-template-columns:1fr}.user-row{padding:12px}.user-access-controls{padding-left:0;grid-template-columns:1fr 90px}.users-security-note{max-width:none;width:100%}}
/* v1.53 — separate Driver visit history from Clinical/Manager contact history */
.custom-marker.contact-recent{background:#79b82a}.custom-marker.contact-aging{background:#ee9696}.custom-marker.contact-due-soon{background:#df6464}.custom-marker.contact-due{background:#c83a3a}.custom-marker.contact-overdue{background:#941f1f}.custom-marker.contact-never{background:#5e1111}
.custom-marker.contact-recent::after,.custom-marker.contact-aging::after,.custom-marker.contact-due-soon::after,.custom-marker.contact-due::after,.custom-marker.contact-overdue::after,.custom-marker.contact-never::after{background:#fff}
.contact-history-panel{border-bottom:1px solid var(--line);padding:16px 18px;background:linear-gradient(180deg,#f8faf9,#fff)}
.contact-history-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}.contact-history-head>div{display:flex;flex-direction:column;gap:3px}.contact-history-head strong{font-size:13px}.contact-history-head small{font-size:9px;line-height:1.45;color:var(--muted)}
.record-contact-form{padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--panel);margin-bottom:12px}.contact-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.record-contact-form .btn{width:100%;margin-top:8px}
.contact-history-list{display:flex;flex-direction:column;gap:7px}.contact-history-item{padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.contact-history-item>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.contact-history-item strong{font-size:10px}.contact-history-item span,.contact-history-item small{font-size:8px;color:var(--muted)}.contact-history-item small{display:block;margin-top:4px;line-height:1.4}.contact-history-empty{font-size:9px;color:var(--muted);padding:8px 0}
body.dark .contact-history-panel{background:linear-gradient(180deg,#20272b,#1b2125)}body.dark .record-contact-form,body.dark .contact-history-item{background:#20272b;border-color:#364148}
@media(max-width:800px){.contact-form-grid{grid-template-columns:1fr}.contact-history-item>div{align-items:flex-start;flex-direction:column;gap:2px}}
html.dev-iphone16-preview .contact-form-grid{grid-template-columns:1fr}html.dev-iphone16-preview .contact-history-item>div{align-items:flex-start;flex-direction:column;gap:2px}
.location-history-line{display:block;margin-top:3px;font-weight:700;color:#65737a}.location-item.active .location-history-line{color:#53670e}
body.dark .location-history-line{color:#9eabb1}body.dark .location-item.active .location-history-line{color:#d0e889}

/* v1.54 user account editing + usernames */
.field span small{font-size:8px;color:var(--muted);font-weight:700;text-transform:none;letter-spacing:0}.field-help{display:block;margin-top:4px;color:var(--muted);font-size:8px;line-height:1.35}.user-name-line{display:flex;align-items:center;gap:7px;min-width:0}.user-name-line strong{min-width:0;overflow:hidden;text-overflow:ellipsis}.role-pill{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:3px 6px;font-size:7px;line-height:1;text-transform:uppercase;letter-spacing:.06em;font-weight:900;white-space:nowrap}.role-admin{background:#f3f7df}.role-manager{background:#f1f3f5}.role-clinical_specialist{background:#f6f1e4}.role-employee{background:#eef6e8}.user-row{grid-template-columns:42px minmax(0,1fr) auto}.user-row-actions{display:flex;justify-content:flex-end}.user-row-actions .btn{min-width:105px}.user-edit-dialog{width:min(620px,calc(100% - 28px));border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--ink);padding:0;box-shadow:0 24px 80px rgba(0,0,0,.22)}.user-edit-dialog::backdrop{background:rgba(15,20,22,.48);backdrop-filter:blur(2px)}.user-edit-form{padding:18px}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:15px}.dialog-head h2{margin:3px 0 3px}.dialog-head p{margin:0;color:var(--muted);font-size:8px;overflow-wrap:anywhere}.edit-user-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.edit-span-2{grid-column:1/-1}.account-switch{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px 11px}.account-switch>span{display:flex;flex-direction:column;gap:2px}.account-switch strong,.force-password-row strong{font-size:9px}.account-switch small,.force-password-row small{font-size:8px;color:var(--muted);line-height:1.35}.account-switch input,.force-password-row input{width:18px;height:18px;accent-color:#91b915}.force-password-row{display:flex;align-items:flex-start;gap:9px;margin-top:12px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}.force-password-row>span{display:flex;flex-direction:column;gap:2px}.dialog-actions{display:flex;justify-content:flex-end;margin-top:14px}.dialog-actions .btn{min-width:120px}body.dark .role-admin,body.dark .role-manager,body.dark .role-clinical_specialist,body.dark .role-employee{background:#22292c}.auth-form input#loginEmail{text-transform:none}
@media(max-width:600px){.edit-user-grid{grid-template-columns:1fr}.edit-span-2{grid-column:auto}.user-row{grid-template-columns:42px minmax(0,1fr)}.user-row-actions{grid-column:1/-1;padding-left:54px;justify-content:stretch}.user-row-actions .btn{width:100%}.user-name-line{align-items:flex-start;flex-direction:column;gap:4px}.role-pill{align-self:flex-start}.user-edit-form{padding:14px}}

/* v1.56 account menu + bug reporting */
.auth-account{position:relative;display:flex;align-items:center;margin-right:4px}.auth-account-trigger{border:1px solid var(--line);background:var(--panel);border-radius:12px;min-height:42px;padding:7px 10px;display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--ink)}.auth-account-trigger:hover{background:#f7f9f8}.auth-account-copy{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}.auth-account-copy strong{font-size:.78rem;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-account-copy span{font-size:.67rem;color:var(--muted);margin-top:3px}.auth-account-chevron{font-size:14px;color:var(--muted)}.auth-account-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:1800;min-width:190px;background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:6px;box-shadow:0 16px 42px rgba(0,0,0,.16)}.auth-account-menu[hidden]{display:none}.auth-account-menu a,.auth-account-menu button{width:100%;border:0;background:transparent;color:var(--ink);text-decoration:none;text-align:left;border-radius:9px;padding:10px 11px;font-size:12px;font-weight:750;cursor:pointer;display:block}.auth-account-menu a:hover,.auth-account-menu button:hover{background:#f1f4f3}.auth-account-menu .danger{color:#a33636;border-top:1px solid var(--line);margin-top:4px;border-radius:0 0 9px 9px}.bug-report-dialog{border:0;background:transparent;padding:18px;width:min(620px,calc(100% - 24px));max-width:none}.bug-report-dialog::backdrop{background:rgba(14,18,16,.56);backdrop-filter:blur(3px)}.bug-report-card{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 70px rgba(0,0,0,.24);padding:22px}.bug-report-head{display:flex;justify-content:space-between;gap:18px;margin-bottom:18px}.bug-report-head h2{margin:4px 0 5px;font-size:22px}.bug-report-head p{margin:0;color:var(--muted);font-size:12px}.bug-report-card label{display:block;font-size:11px;font-weight:800;margin-top:13px}.bug-report-card input,.bug-report-card textarea{width:100%;margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);padding:11px 12px;outline:none}.bug-report-card textarea{min-height:105px;resize:vertical}.bug-report-card input:focus,.bug-report-card textarea:focus{border-color:#b6d35c;box-shadow:0 0 0 3px rgba(166,213,20,.13)}.optional{color:var(--muted);font-weight:500}.bug-report-meta{font-size:10px;color:var(--muted);margin-top:12px}.bug-report-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.bug-admin-shell{max-width:1220px}.bug-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.bug-report-admin-card{padding:18px}.bug-toolbar{display:grid;grid-template-columns:1fr 190px;gap:10px;margin-bottom:14px}.bug-toolbar input,.bug-toolbar select{height:43px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);padding:0 12px}.bug-report-list{display:flex;flex-direction:column;gap:12px}.bug-admin-item{border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--panel)}.bug-admin-top{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.bug-admin-top time{font-size:10px;color:var(--muted);white-space:nowrap}.bug-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.bug-title-line strong{font-size:15px}.bug-reporter,.bug-page{display:block;color:var(--muted);font-size:10px;margin-top:5px}.bug-status{font-size:9px;font-weight:900;text-transform:uppercase;border-radius:99px;padding:5px 7px}.status-open{background:#ffe8e1;color:#9b3c21}.status-in_progress{background:#fff3cf;color:#866313}.status-resolved{background:var(--green-soft);color:#557100}.bug-description,.bug-steps p{font-size:12px;line-height:1.55;white-space:pre-wrap}.bug-steps{background:#f7f8f7;border-radius:10px;padding:10px 12px;margin-top:10px}.bug-steps strong{font-size:10px;text-transform:uppercase;letter-spacing:.06em}.bug-admin-controls{display:grid;grid-template-columns:180px 1fr auto;gap:10px;align-items:end;border-top:1px solid var(--line);padding-top:12px;margin-top:12px}.bug-admin-controls label{font-size:10px;font-weight:800}.bug-admin-controls select,.bug-admin-controls textarea{width:100%;margin-top:5px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);padding:9px}.bug-admin-controls textarea{min-height:65px;resize:vertical}.bug-notes-label{min-width:0}body.dark .auth-account-trigger:hover,body.dark .auth-account-menu a:hover,body.dark .auth-account-menu button:hover{background:#252d31}body.dark .bug-steps{background:#22292c}@media(max-width:760px){.auth-account-copy span{display:none}.auth-account-copy strong{max-width:120px}.bug-kpi-grid{grid-template-columns:1fr 1fr}.bug-toolbar{grid-template-columns:1fr}.bug-admin-top{flex-direction:column}.bug-admin-controls{grid-template-columns:1fr}.bug-report-actions{flex-direction:column-reverse}.bug-report-actions .btn{width:100%}}
/* v1.57 profile pictures */
.auth-avatar,.profile-picture-preview{display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:#e8eee4;color:#48611e;font-weight:900;letter-spacing:.02em;background-size:cover;background-position:center;background-repeat:no-repeat;overflow:hidden}.auth-avatar{width:30px;height:30px;font-size:10px;border:1px solid var(--line)}.auth-avatar.has-photo,.profile-picture-preview.has-photo,.user-avatar.has-photo{color:transparent}.profile-picture-dialog{border:0;background:transparent;padding:18px;width:min(560px,calc(100% - 24px));max-width:none}.profile-picture-dialog::backdrop{background:rgba(14,18,16,.56);backdrop-filter:blur(3px)}.profile-picture-card{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 70px rgba(0,0,0,.24);padding:22px}.profile-picture-body{display:grid;grid-template-columns:112px 1fr;gap:20px;align-items:center;padding:8px 0 14px}.profile-picture-preview{width:112px;height:112px;font-size:28px;border:2px solid var(--line)}.profile-picture-controls{min-width:0}.profile-picture-controls small{display:block;color:var(--muted);font-size:10px;line-height:1.45;margin-top:8px}.profile-picture-actions{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.profile-picture-actions>div{display:flex;gap:8px}.danger-outline{color:#a33636;border-color:#d8aaaa}.user-avatar{background-size:cover;background-position:center;background-repeat:no-repeat;overflow:hidden}.dark .auth-avatar,.dark .profile-picture-preview{background-color:#2a3326;color:#c8e875}@media(max-width:620px){.profile-picture-body{grid-template-columns:1fr;justify-items:center;text-align:center}.profile-picture-controls{width:100%}.profile-picture-actions{align-items:stretch;flex-direction:column-reverse}.profile-picture-actions>div{display:grid;grid-template-columns:1fr 1fr}.profile-picture-actions .btn{width:100%}}

/* Admin Test Mode */
.test-mode-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:11px 18px;background:#fff4cc;border-bottom:1px solid #e3bf46;color:#3d330e;position:relative;z-index:20}.test-mode-banner>div:first-child{display:flex;align-items:center;gap:10px;min-width:0}.test-mode-banner strong{font-size:12px;letter-spacing:.09em}.test-mode-banner span{font-size:13px}.test-mode-banner-actions{display:flex;gap:8px;flex-wrap:wrap}.test-mode-banner .btn{min-height:34px;padding:7px 11px}.test-mode-dialog{border:0;background:transparent;padding:18px;max-width:680px;width:min(680px,calc(100% - 24px))}.test-mode-dialog::backdrop{background:rgba(11,18,23,.58)}.test-mode-card{background:var(--surface,#fff);color:var(--text,#172027);border:1px solid var(--line,#dfe5e8);border-radius:18px;padding:20px;box-shadow:0 18px 54px rgba(0,0,0,.22)}.test-mode-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.test-mode-head h2{margin:4px 0 6px}.test-mode-head p{margin:0;color:var(--muted,#64727a)}.test-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.test-role-grid button{text-align:left;border:1px solid var(--line,#dfe5e8);background:var(--surface-2,#f7f9fa);color:inherit;border-radius:13px;padding:14px;min-height:78px;cursor:pointer}.test-role-grid button:hover,.test-role-grid button.active{border-color:#86af1e;box-shadow:inset 0 0 0 1px #86af1e}.test-role-grid strong,.test-role-grid span{display:block}.test-role-grid span{font-size:12px;color:var(--muted,#64727a);margin-top:4px;line-height:1.35}.test-mode-note{font-size:12px;color:var(--muted,#64727a);margin:14px 0 0}@media(max-width:620px){.test-mode-banner{align-items:flex-start;flex-direction:column}.test-mode-banner>div:first-child{align-items:flex-start;flex-direction:column;gap:3px}.test-role-grid{grid-template-columns:1fr}}

/* Role/Test Mode visibility hardening — author display rules must never resurrect hidden tabs. */
[hidden]{display:none!important}
@media(max-width:800px){.main-nav{grid-template-columns:repeat(var(--visible-nav-count,4),minmax(0,1fr))}}
html.dev-iphone16-preview .main-nav{grid-template-columns:repeat(var(--visible-nav-count,4),minmax(0,1fr))}

/* v1.64 — make account IDs easy to scan in Active/Completed route stop lists */
.field-stop-account-id{
  display:block;
  margin-top:3px;
  font-weight:800;
  color:var(--text, #17211b);
  letter-spacing:.01em;
}
body.dark .field-stop-account-id{color:#f2f7f4;}

/* v1.66 location removal + add-request workflow */
.location-editor-actions{display:grid;grid-template-columns:1fr auto;gap:10px}.btn.danger,.remove-location-btn{border-color:#c64b4b!important;color:#9e2020!important;background:#fff5f5!important}.remove-location-btn{min-width:150px}.location-add-request-dialog{width:min(620px,calc(100% - 28px));border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--ink);padding:0;box-shadow:0 24px 80px rgba(0,0,0,.24)}.location-add-request-dialog::backdrop{background:rgba(15,20,22,.5);backdrop-filter:blur(2px)}.location-add-request-card{padding:18px}.location-add-request-card .dialog-actions{display:flex;justify-content:flex-end;gap:8px}.location-add-request-list{display:grid;gap:12px;padding:14px}.location-add-request-row{border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:16px;box-shadow:var(--shadow-sm)}.location-add-request-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.location-add-request-top h3{margin:7px 0 3px}.location-add-request-top p{margin:0;color:var(--muted)}.request-review-status{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;background:var(--surface-2)}.request-review-status.pending{background:#fff2c9;color:#705300}.request-review-status.approved{background:#eaf7d7;color:#426900}.request-review-status.rejected{background:#fff0f0;color:#9e2020}.location-add-request-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin:14px 0;font-size:12px}.location-add-request-reason{padding:12px;border-radius:12px;background:var(--surface-2);margin-bottom:12px}.location-add-request-reason p{margin:5px 0 0;white-space:pre-wrap}.location-add-request-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.dark .btn.danger,.dark .remove-location-btn{background:#3e1e1e!important;color:#ffb7b7!important;border-color:#744!important}@media(max-width:700px){.location-editor-actions{grid-template-columns:1fr}.location-add-request-meta{grid-template-columns:1fr}.location-add-request-top{flex-direction:column}.location-add-request-actions .btn{width:100%}}

/* v1.67 rep assignment + contact details */
.rep-filter-control{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:end;padding:10px 12px;border-bottom:1px solid var(--line)}
.rep-filter-control label{display:grid;gap:5px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.rep-filter-control select{width:100%;min-width:0;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:10px;padding:9px 10px;font:inherit;text-transform:none;letter-spacing:0}
.rep-cycle-btn{width:36px;height:36px;font-size:24px;line-height:1}
.contact-section{border:1px solid var(--line);background:var(--panel-soft);border-radius:14px;padding:12px;margin:2px 0 12px}
.contact-section>.mini-label{display:block;margin-bottom:8px}
.dark .contact-section{background:rgba(255,255,255,.025)}

/* v1.68 final roster: locations imported without an address stay visible in the list but not as map pins. */
.needs-address-badge{display:inline-flex;align-items:center;margin-left:.45rem;padding:.14rem .42rem;border-radius:999px;font-size:.7rem;font-weight:800;line-height:1.2;background:#fff4cf;color:#725600;border:1px solid #e8cf72;white-space:nowrap}
.needs-address-text{display:block!important;margin-top:.2rem;color:#8a6900!important;font-weight:700}
.location-not-routable{opacity:.78}
.browse-add:disabled{cursor:not-allowed;opacity:.62}
.disabled-link{opacity:.58;cursor:not-allowed;pointer-events:none}
body.dark .needs-address-badge{background:#3b3215;color:#ffe99a;border-color:#6e5e24}
body.dark .needs-address-text{color:#f0d979!important}


/* v1.70 contact card alignment + inventory status retirement */
.contact-section{padding:16px}
.contact-section>.mini-label{margin-bottom:12px}
.contact-section .edit-grid{gap:18px;align-items:start}
.contact-section .field{margin-bottom:0;gap:8px}
.contact-section .field>span{min-height:38px;display:flex;align-items:flex-start;line-height:1.35}
.contact-section .field input{height:46px;width:100%}
@media(max-width:700px){.contact-section .field>span{min-height:0}.contact-section .field{margin-bottom:10px}}


/* v1.74 — strict role navigation visibility.
   Responsive nav display rules must never resurrect unauthorized tabs. */
html.auth-role-pending .main-nav,
html.auth-role-pending [data-permission]{visibility:hidden!important}
.main-nav a[hidden],
.main-nav [data-nav][hidden],
[data-permission][hidden]{display:none!important}
