@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#1c302c;--muted:#85908c;--line:#e8ece8;--green:#307b5c;--bg:#f7f8f5}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px 'DM Sans',sans-serif}button,input,select{font:inherit}button{cursor:pointer}button,a,input,select{outline-offset:4px}button{color:inherit}button:hover{filter:brightness(.96)}.sidebar{width:232px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:34px 21px;display:flex;flex-direction:column}.brand{font:800 27px Manrope,sans-serif;letter-spacing:-1.5px;text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:8px}.brand-icon{font-size:37px;color:#377b60}.brand-dot{color:#438b69;margin-left:-8px}.workspace{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;padding:12px 9px;margin:37px 0 31px;font-size:11px;font-weight:600}.workspace>span:last-child{margin-left:auto}.workspace-icon,.avatar{display:inline-grid;place-items:center;background:#e9eee6;border:1px solid #dfe5dc;border-radius:7px;width:31px;height:31px;font-weight:600}.workspace small,.profile small{display:block;color:var(--muted);font-size:10px;font-weight:400;margin-top:4px}.nav-label{font-size:9px;letter-spacing:1.6px;color:#929b94;margin:0 11px 14px}nav button{display:flex;align-items:center;gap:12px;width:100%;padding:13px 14px;border:0;background:none;border-radius:6px;margin-bottom:7px;color:#78817b;font-size:17px}nav button span{font-size:12px}nav button.active{background:#eaf1e9;color:#357451;font-weight:600}nav button b{font-size:10px;margin-left:auto;background:#f0f2ed;border-radius:4px;padding:2px 5px}.side-bottom{margin-top:auto}.offline-card{background:#f6f7f1;border:1px solid #e8ebdf;border-radius:9px;padding:15px 13px}.offline-card>span{display:block;color:#77966c;font-size:22px;margin-bottom:10px}.offline-card strong{font-size:11px}.offline-card p{font-size:11px;color:#899084;line-height:1.7}.offline-card button{border:0;padding:0;background:none;font-size:10px;color:#52784d}.profile{background:none;border:0;border-top:1px solid var(--line);display:flex;align-items:center;text-align:left;gap:10px;width:100%;margin-top:23px;padding:22px 0 0;font-size:11px}.profile>span:last-child{margin-left:auto}.avatar{background:#ebece3;color:#6f735e}.small{width:29px;height:29px;border-radius:50%;font-size:10px}main{margin-left:232px}header{height:77px;background:#ffffffb8;border-bottom:1px solid var(--line);padding:0 35px;display:flex;align-items:center;justify-content:space-between}.breadcrumb{font-size:11px;color:#8e9790}.breadcrumb span{margin:0 13px;color:#bcc4bc}.breadcrumb strong{color:#4d5d53;font-weight:500}.header-right{display:flex;align-items:center;gap:20px}.connection{font-size:10px;color:#667b69;display:flex;gap:6px;align-items:center}i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#4b936c}.gray-dot{background:#a9b2aa}.icon-button{border:1px solid #d7ded5;border-radius:50%;background:none;width:18px;height:18px;font-size:11px;color:#879180}.content{max-width:1600px;padding:33px 35px 0;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:29px}.eyebrow{font-size:9px;letter-spacing:1.8px;color:#7f8a7f;font-weight:600}h1{font:600 27px Manrope,sans-serif;letter-spacing:-1px;margin:9px 0}p{color:var(--muted);font-size:12px;margin:6px 0}.primary{background:#285d47;color:#fff;border:0;border-radius:6px;padding:12px 17px;font-size:11px;box-shadow:0 3px 4px #254a3910}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stats article{background:#fff;border:1px solid var(--line);border-radius:8px;padding:17px 19px}.stats article>span{display:flex;justify-content:space-between;color:#869087;font-size:11px;align-items:center}.stats article>div{font:600 29px Manrope;margin-top:10px}.stats small{font:10px 'DM Sans';color:#949b93;margin-left:9px}.stats small.green{color:#6a9677}.main-grid{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:22px}.map-panel,.activity-panel,.devices-panel{background:#fff;border:1px solid var(--line);border-radius:9px;overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:20px}h2{font:600 13px Manrope;margin:0;display:flex;align-items:center;gap:9px}.panel-heading p{font-size:10px;margin-top:7px}.live{display:inline-flex;align-items:center;gap:5px;color:#6a8e6d;background:#edf4ea;border:1px solid #e2eddf;border-radius:4px;padding:3px 5px;font:600 8px 'DM Sans';letter-spacing:.5px}.live i{width:4px;height:4px}.subtle{border:0;background:none;color:#8a948b;font-size:10px}.map-wrap{position:relative;height:355px;background:#e6ebdf}#map{height:100%;z-index:1}.map-top{position:absolute;z-index:500;top:15px;left:15px;right:15px;display:flex;justify-content:space-between;pointer-events:none}.map-top>span,.map-top button,.map-legend{pointer-events:auto;background:#fffffff2;box-shadow:0 2px 8px #2f483414;border:1px solid #dfe5d9;border-radius:5px;padding:9px 11px;font-size:9px}.map-top>span{display:flex;align-items:center;gap:6px}.map-legend{position:absolute;bottom:23px;left:15px;z-index:500;display:flex;gap:14px;color:#84907f}.map-legend i{width:5px;height:5px;margin-right:3px}.zone-dot{color:#849b7b}.map-footer{padding:12px 19px;display:flex;justify-content:space-between;color:#96a08e;font-size:9px}.activity-panel .panel-heading{border-bottom:1px solid #f1f3ed}.event{padding:17px 17px 0;display:flex;gap:12px}.event-icon{background:#f0f4ea;color:#739365;width:29px;height:29px;flex-shrink:0;border-radius:50%;display:grid;place-items:center}.event strong{font-weight:500;font-size:10px}.event p{font-size:9px;line-height:1.6;margin:5px 0}.event small{color:#a6aea1;font-size:9px}.activity-note{margin:22px 18px 0;border-top:1px solid var(--line);padding-top:15px;color:#a2ab9d;font-size:9px;display:flex;justify-content:space-between}.devices-panel{margin-top:24px}.count{background:#f1f3ec;color:#8b967e;font:10px 'DM Sans';padding:3px 6px;border-radius:4px}.table-tools{display:flex;gap:10px}.search{border:1px solid var(--line);padding:8px 10px;border-radius:5px;color:#9ca496}.search input{border:0;background:none;width:137px;font-size:10px;margin-left:5px}.table-tools select{border:1px solid var(--line);background:white;border-radius:5px;color:#7c8877;font-size:10px;padding:7px}table{width:100%;border-collapse:collapse;text-align:left}th{background:#fafbf8;color:#98a08f;font-size:8px;letter-spacing:1px;font-weight:500;padding:12px 20px;border-block:1px solid var(--line)}td{padding:15px 20px;font-size:10px;border-bottom:1px solid #eff2eb;color:#7d8776}tr:last-child td{border-bottom:0}.device-cell{display:flex;align-items:center;gap:12px;color:#465443}.phone-icon{width:32px;height:36px;background:#f1f3ed;border:1px solid #e6eadf;border-radius:6px;display:grid;place-items:center;font-size:22px;color:#89957e}.device-cell strong{font-size:11px;font-weight:500}.device-cell small{display:block;font-size:9px;color:#a1a995;margin-top:4px}.badge{border:1px solid #e0ebda;border-radius:4px;background:#f2f7ed;color:#6a8d5b;padding:4px 7px;font-size:9px;white-space:nowrap}.badge.offline{background:#f5f5f1;color:#9a9d92;border-color:#e8e9e1}.battery{display:inline-block;width:18px;height:9px;border:1px solid #98af87;border-radius:2px;margin-right:7px;position:relative}.battery:before{content:'';display:block;background:#8cac76;width:var(--level);height:5px;margin:1px}.row-locate{background:none;border:0;color:#849878;font-size:17px}footer{display:flex;justify-content:space-between;color:#a1a997;font-size:9px;padding:21px 0}footer i{width:5px;height:5px;margin-right:5px}.separator{margin:0 9px}.marker{background:#fff;border:3px solid #fff;border-radius:50%;box-shadow:0 2px 9px #32452f40;display:grid;place-items:center;width:36px;height:36px;color:#fff;font-size:20px}.marker>span{background:#528968;border-radius:50%;width:28px;height:28px;text-align:center}.marker.offline>span{background:#929b88}.leaflet-tile-pane{filter:saturate(.45)}.map-fallback{display:none;position:absolute;inset:100px 40px;text-align:center;color:#6e7b65;font-size:13px;z-index:0}dialog{border:1px solid #dfe5da;border-radius:12px;padding:30px;width:440px;max-width:90vw;color:var(--ink);box-shadow:0 20px 100px #18312633}dialog::backdrop{background:#1d302e66}dialog h2{font-size:20px;margin-bottom:15px}dialog p{line-height:1.8}dialog input{width:100%;padding:12px;margin:14px 0;border:1px solid #dce3d7;border-radius:5px}dialog .primary{margin-top:14px}.close{position:absolute;right:13px;top:9px;border:0;background:none;font-size:24px;color:#8b9685}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#244f3e;color:#fff;padding:14px 22px;border-radius:7px;z-index:2000;display:none;font-size:12px}.history-list{max-height:400px;overflow:auto}.history-item{padding:12px 0;border-bottom:1px solid var(--line);font-size:12px}.empty{padding:30px;color:#95a18b;text-align:center}@media(min-width:1600px){.map-wrap{height:430px}.content{padding-top:44px}.main-grid{grid-template-columns:minmax(0,1fr) 310px}}@media(max-width:1150px){.sidebar{width:195px;padding:30px 15px}main{margin-left:195px}.content{padding:25px 22px}.main-grid{grid-template-columns:minmax(0,1fr) 235px}.stats small{display:block;margin:5px 0 0}h1{font-size:22px}td,th{padding:13px}.activity-panel .panel-heading{padding:20px 14px}}@media(max-width:850px){.sidebar{width:70px;padding:22px 10px}.brand{font-size:0;justify-content:center}.brand-dot,.workspace,.nav-label,nav span,nav b,.side-bottom{display:none}nav{margin-top:35px}nav button{justify-content:center;padding:13px}main{margin-left:70px}header{padding:0 22px}.main-grid{grid-template-columns:1fr}.activity-panel{display:none}.heading{gap:15px}.heading p{max-width:250px}.stats{gap:8px}.stats article{padding:13px}.stats article>span{font-size:9px}.table-scroll{overflow:auto}table{min-width:700px}.table-tools{flex-wrap:wrap;justify-content:flex-end}footer>span:last-child{display:none}}@media(max-width:550px){.content{padding:23px 14px}h1{font-size:22px;max-width:240px}.heading{align-items:flex-start}.heading .primary{font-size:10px;padding:10px;white-space:nowrap;margin-top:25px}.eyebrow{font-size:8px}.stats{grid-template-columns:repeat(2,1fr)}.stats article>div{font-size:25px}.stats small{display:inline;margin-left:6px;font-size:8px}.connection{display:none}.panel-heading{padding:15px}.map-wrap{height:340px}.map-footer{font-size:8px;padding:11px}.devices-panel .panel-heading{align-items:flex-start}.devices-panel .panel-heading p{display:none}.search input{width:80px}.table-tools select{display:none}.map-legend{gap:9px}}

.row-delete{border:0;background:none;color:#a3584c;font-size:10px;padding:8px;border-radius:4px}.row-delete:hover{background:#fbefec}.dialog-actions{display:flex;justify-content:flex-end;gap:18px;margin-top:24px}.danger{border:0;border-radius:6px;background:#a84d40;color:white;padding:11px 17px;font-size:12px}
.motion-symbol{width:22px;height:22px;vertical-align:middle}.marker>span{display:grid;place-items:center;position:relative}.marker-motion-label{position:absolute;top:39px;left:50%;transform:translateX(-50%);background:#fff;border:1px solid #e1e7dc;box-shadow:0 2px 6px #243b2417;padding:4px 7px;border-radius:5px;white-space:nowrap;color:#42634b;font:500 9px 'DM Sans',sans-serif}.marker-motion-label em{font-size:7px;color:#9aa48f;font-style:normal;margin-left:3px}.motion-driving>span{background:#4c7899}.motion-moving>span{background:#92794c}.motion-unknown>span,.motion-saved>span{background:#879382}.motion-status{display:block;margin-top:7px;font-size:9px;color:#7e8e73;white-space:nowrap}.motion-status.motion-driving{color:#4c7899}.motion-status.motion-offline,.motion-status.motion-saved,.motion-status.motion-unknown{color:#9b9f93}.device-map-marker.motion-travelling{transition:transform 1.2s linear}.motion-walking .walk-leg-a,.motion-walking .walk-arm{transform-origin:12px 13px;animation:walking-step .65s ease-in-out infinite alternate}.motion-walking .walk-leg-b{transform-origin:12px 13px;animation:walking-step .65s ease-in-out infinite alternate-reverse}.motion-driving .motion-symbol{animation:driving-bounce .5s ease-in-out infinite alternate}.motion-walking>span:after,.motion-driving>span:after,.motion-moving>span:after{content:'';position:absolute;inset:-5px;border:1px solid #689c7a;border-radius:50%;animation:motion-pulse 2s ease-out infinite;pointer-events:none}.motion-moving .motion-symbol{animation:moving-arrow 1s ease-in-out infinite alternate}@keyframes walking-step{from{transform:rotate(-13deg)}to{transform:rotate(13deg)}}@keyframes driving-bounce{from{transform:translateY(-1px) rotate(-2deg)}to{transform:translateY(1px) rotate(2deg)}}@keyframes motion-pulse{from{transform:scale(.85);opacity:.7}to{transform:scale(1.65);opacity:0}}@keyframes moving-arrow{from{transform:translateY(2px)}to{transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.device-map-marker.motion-travelling{transition:none}.motion-symbol,.motion-symbol path,.marker>span:after{animation:none!important}}

.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at top left,#e6efdf,transparent 65%),#f7f8f5}.login-card{width:420px;max-width:100%;padding:38px;background:white;border:1px solid #e1e8dc;border-radius:16px;box-shadow:0 20px 80px #26472a0d}.login-card .brand{font-size:27px;justify-content:flex-start;margin-bottom:42px}.login-card h1{margin-top:12px}.login-card p{line-height:1.7}.login-card form{margin-top:25px}.login-card label{display:block;font-size:12px;margin:17px 0 8px}.login-card input{width:100%;padding:13px;border:1px solid #dce4d5;border-radius:6px;background:#fafbf8}.login-card .primary{width:100%;margin-top:18px;padding:13px}.login-card .primary:disabled{opacity:.6;cursor:wait}#login-error{color:#a64d40;font-size:12px}.login-note{text-align:center;font-size:10px;margin-top:25px}

#activity{max-height:365px;overflow:auto}.log-event{padding-bottom:12px}.log-event p{line-height:1.6}.log-location{padding:0;text-align:left;color:#507c68;font-size:9px}.row-stop{background:#fbf1e9;color:#94673f;border:1px solid #eadcc8;border-radius:4px;padding:5px 8px;font-size:10px;cursor:pointer}.row-stop:disabled{opacity:.45;cursor:default}#live-log-list{margin-top:16px}.activity-panel .panel-heading .subtle{font-size:9px}

.permission-fields{border:1px solid #e1e7dc;border-radius:7px;margin:20px 0;padding:15px}.permission-fields legend{color:#6f806b;font-size:11px;padding:0 6px}.permission-fields label{display:flex;align-items:center;gap:8px;margin:9px 0;font-size:12px}.permission-fields input{width:auto;margin:0;accent-color:#285d47}dialog select{display:block;padding:10px;border:1px solid #dce4d5;border-radius:5px;margin:12px 0;width:100%}.row-edit:disabled,.row-delete:disabled,.primary:disabled{opacity:.4;cursor:not-allowed}

.device-address{display:block;max-width:260px;white-space:normal;line-height:1.5;margin:5px 0;color:#4f705a}.row-address{padding:4px 0;color:#36795a;font-size:10px}#my-location{border:1px solid #dce6d7;padding:7px 10px;border-radius:5px;margin-left:auto;margin-right:8px;white-space:nowrap}#address-result{background:#f2f6ee;padding:15px;border-radius:7px;line-height:1.7;margin:16px 0}.address-attribution{font-size:10px}@media(max-width:550px){#my-location{padding:6px;font-size:9px;margin:0 5px}.map-panel .panel-heading{gap:5px}}

.stop-place{font-weight:600;color:#356e51!important;background:#f0f5ea;padding:6px 8px;border-radius:4px;font-size:10px!important}

.poi-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-top:1px solid #edf1e8;padding:9px 16px;background:#fafcf7;font-size:10px;color:#74836c}.poi-controls label{display:flex;align-items:center;gap:5px;color:#48664c}.poi-controls input{accent-color:#357452}.poi-controls button{margin-left:auto}.poi-controls #poi-status{font-size:9px}.poi-map-icon span{display:grid;place-items:center;border:1px solid #b3bca2;border-radius:5px;background:#fffef4;color:#8a7651;width:20px;height:20px;font-size:13px;box-shadow:0 1px 4px #29472b22}.poi-label{font:10px DM Sans,sans-serif;color:#715f42;border:0;background:#fffef5e8;box-shadow:none;padding:2px 5px}.popup-edit{background:#edf3e7;color:#3e6b48;border:1px solid #d5e2ce;padding:6px 9px;border-radius:4px;margin-top:9px;cursor:pointer}

.queue-status{color:#72825d;margin-left:12px}footer{flex-wrap:wrap;gap:9px}

.sidebar>.nav-label{margin-top:36px}
