:root{--bg:#0f172a;--bg-elevated:#1e293b;--bg-input:#334155;--border:#475569;--text:#f1f5f9;--text-muted:#94a3b8;--primary:#22d3ee;--primary-hover:#06b6d4;--danger:#ef4444;--success:#10b981;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}a{color:var(--primary);text-decoration:none}button{cursor:pointer;font:inherit;background:var(--primary);color:#0f172a;border:none;border-radius:6px;padding:.6rem 1.2rem;font-weight:600}button:hover:not(:disabled){background:var(--primary-hover)}button:disabled{opacity:.5;cursor:not-allowed}input,select{font:inherit;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.6rem .8rem;width:100%}input:focus,select:focus{outline:2px solid var(--primary);outline-offset:-1px}.login-screen{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:1rem}.login-card{width:100%;max-width:360px;background:var(--bg-elevated);padding:2rem;border-radius:12px;box-shadow:0 10px 25px rgba(0,0,0,.3)}.login-card h1{font-size:1.5rem;margin-bottom:1.5rem}.login-card .field{margin-bottom:1rem}.login-card label{display:block;margin-bottom:.4rem;font-size:.85rem;color:var(--text-muted)}.login-card .error{color:var(--danger);font-size:.85rem;margin-bottom:.8rem}.login-card button{width:100%;margin-top:.5rem}.dashboard{display:grid;grid-template-columns:320px 1fr;height:100vh;height:100dvh;overflow:hidden;position:relative}.sidebar{border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar,.sidebar-toggle{background:var(--bg-elevated)}.sidebar-toggle{display:none;position:absolute;top:.75rem;left:.75rem;z-index:15;width:40px;height:40px;padding:0;border-radius:8px;color:var(--text);border:1px solid var(--border);box-shadow:0 4px 12px rgba(0,0,0,.25);align-items:center;justify-content:center}.sidebar-backdrop{display:none}.sidebar header{padding:1rem 1.2rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.sidebar header h1{font-size:1.1rem;color:var(--primary)}.sidebar .meta{margin-top:.2rem}.sidebar .logout,.sidebar .meta{font-size:.75rem;color:var(--text-muted)}.sidebar .logout{background:transparent;padding:.3rem .6rem;border:1px solid var(--border)}.sidebar .logout:hover{color:var(--text);border-color:var(--text-muted)}.device-list{flex:1 1;overflow-y:auto}.device-list .empty{padding:1.5rem;color:var(--text-muted);font-size:.9rem;text-align:center}.device-item{position:relative;padding:.9rem 1.2rem;border-bottom:1px solid var(--border);cursor:pointer;display:flex;gap:.7rem;align-items:flex-start}.device-item:hover{background:rgba(255,255,255,.03)}.device-item.active{background:rgba(34,211,238,.08);border-left:3px solid var(--primary);padding-left:calc(1.2rem - 3px)}.device-item .color-swatch{width:10px;height:10px;border-radius:50%;margin-top:.35rem;flex-shrink:0;box-shadow:0 0 0 2px rgba(0,0,0,.4)}.device-item .device-body{flex:1 1;display:flex;flex-direction:column;gap:.2rem;min-width:0;padding-right:6rem}.device-item .name{font-weight:600;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-item .imei{font-family:ui-monospace,monospace}.device-item .imei,.device-item .last{font-size:.75rem;color:var(--text-muted)}.device-item .last{display:flex;gap:.4rem;align-items:center}.device-item .dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted)}.device-item .dot.online{background:var(--success)}.status-chips{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.15rem}.status-chips .chip{display:inline-flex;align-items:center;gap:.2rem;font-size:.7rem;line-height:1;padding:.18rem .4rem;background:rgba(255,255,255,.04);border-radius:4px;color:var(--text-muted)}.status-chips .chip.ign-on{color:var(--success);background:rgba(34,197,94,.1)}.status-chips .chip.ign-off{color:var(--text-muted)}.status-chips .chip.gps-lost{color:#f59e0b;background:rgba(245,158,11,.12)}.device-item .actions{position:absolute;top:.6rem;right:.7rem;display:flex;gap:.3rem;opacity:0;transition:opacity .15s}.device-item.active .actions,.device-item:focus-within .actions,.device-item:hover .actions{opacity:1}.device-item .icon-btn{position:relative;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:6px;padding:.3rem;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;transition:color .12s,border-color .12s,background .12s}.device-item .icon-btn:hover{color:var(--text);border-color:var(--text-muted);background:rgba(255,255,255,.04)}.device-item .icon-btn.active{background:var(--primary);color:#0f172a;border-color:var(--primary)}.device-item .icon-btn.active:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#0f172a}.device-item .icon-btn:disabled{opacity:.35;cursor:not-allowed;background:transparent;color:var(--text-muted);border-color:var(--border)}.device-item .icon-btn:disabled:after{display:none}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;top:calc(100% + 6px);right:0;background:#0b1220;color:var(--text);font-size:.72rem;font-weight:500;padding:.25rem .5rem;border-radius:4px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .12s;border:1px solid var(--border);z-index:20}[data-tooltip]:focus-visible:after,[data-tooltip]:hover:after{opacity:1}.map-wrap{position:relative;height:100%}.map{width:100%;height:100%}.status-pill{position:absolute;bottom:1rem;left:1rem;background:var(--bg-elevated);padding:.4rem .8rem;border-radius:999px;font-size:.8rem;display:flex;gap:.5rem;align-items:center;z-index:10;border:1px solid var(--border)}.status-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted)}.status-pill .dot.online{background:var(--success);animation:pulse 2s infinite}.status-pill .dot.error{background:var(--danger)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.map-controls{position:absolute;top:1rem;left:1rem;z-index:10;display:flex;flex-direction:column;gap:.5rem;width:clamp(220px,28vw,320px)}.map-controls form{display:flex;gap:.4rem;background:var(--bg-elevated);padding:.3rem;border-radius:8px;border:1px solid var(--border);box-shadow:0 4px 12px rgba(0,0,0,.25)}.map-controls form input{flex:1 1;background:transparent;border:none;padding:.4rem .6rem;font-size:.85rem}.map-controls form input:focus{outline:none}.map-controls form button{padding:.4rem .7rem;font-size:.9rem;border-radius:6px}.map-controls-error{background:rgba(239,68,68,.15);color:#fca5a5;font-size:.78rem;padding:.4rem .7rem;border-radius:6px;border:1px solid rgba(239,68,68,.3)}.style-switcher{display:flex;background:var(--bg-elevated);padding:.25rem;border-radius:8px;border:1px solid var(--border);box-shadow:0 4px 12px rgba(0,0,0,.25);gap:.2rem}.style-switcher button{flex:1 1;background:transparent;color:var(--text-muted);padding:.4rem .5rem;border-radius:5px;font-size:.78rem;font-weight:500}.style-switcher button:hover{color:var(--text);background:rgba(255,255,255,.05)}.style-switcher button.active{background:var(--primary);color:#0f172a}.style-switcher button.active:hover{background:var(--primary-hover)}.tracker-marker{--marker-color:var(--primary);position:absolute;width:18px;height:18px;border-radius:50%;background:var(--marker-color);border:3px solid #0f172a;box-shadow:0 0 0 2px var(--marker-color),0 0 10px color-mix(in srgb,var(--marker-color) 60%,transparent)}.tracker-label{position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);white-space:nowrap;pointer-events:none;font-size:.72rem;font-weight:600;line-height:1.2;color:#f8fafc;background:rgba(15,23,42,.85);border:1px solid var(--marker-color);border-radius:6px;padding:1px 6px;box-shadow:0 1px 4px rgba(0,0,0,.45)}.tracker-marker{cursor:pointer}.nearby-list{list-style:none;margin:0 -.3rem;padding:0}.nearby-list .color-swatch{width:10px;height:10px;border-radius:50%;flex-shrink:0}.nearby-list button{width:100%;display:flex;align-items:center;gap:.5rem;background:transparent;color:var(--text);font-weight:400;font-size:.8rem;padding:.4rem .3rem;border-radius:6px;text-align:left}.nearby-list button:hover:not(:disabled){background:var(--bg-input)}.nearby-item-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nearby-dist{font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.replay-panel{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);z-index:12;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:.8rem 1rem;box-shadow:0 6px 20px rgba(0,0,0,.35);width:clamp(360px,60vw,720px);display:flex;flex-direction:column;gap:.6rem}.replay-panel .replay-top{display:flex;align-items:center;gap:.7rem}.replay-panel .play-btn{width:38px;height:38px;border-radius:50%;font-size:1rem;padding:0;display:flex;align-items:center;justify-content:center}.replay-panel .replay-info{flex:1 1;display:flex;flex-direction:column;min-width:0}.replay-panel .replay-info .stamp{font-size:.9rem;font-weight:500}.replay-panel .replay-info .meta{font-size:.75rem;color:var(--text-muted)}.replay-panel .speed{width:auto;padding:.35rem .5rem;font-size:.8rem}.replay-panel .close{background:transparent;color:var(--text-muted);border:1px solid var(--border);padding:.25rem .55rem;font-size:1rem;border-radius:6px;line-height:1}.replay-panel .scrubber{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;outline:none;cursor:pointer}.replay-panel .scrubber::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--primary);cursor:pointer;border:2px solid var(--bg-elevated)}.replay-panel .scrubber::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--primary);cursor:pointer;border:2px solid var(--bg-elevated)}.replay-panel .replay-empty{color:var(--text-muted);font-size:.9rem;text-align:center;padding:.5rem 0}.stop-marker{--stop-color:var(--primary);width:26px;height:26px;border-radius:50%;background:var(--bg-elevated);border:2px solid var(--stop-color);color:var(--stop-color);font-size:.78rem;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.4)}.stop-popup{font-size:.78rem;color:#0f172a;line-height:1.4}.stop-popup .coords-copy{margin-top:.25rem;color:#0f172a;border-color:#cbd5e1}.coords-copy{font:inherit;font-size:.72rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;width:auto;padding:.1rem .4rem;background:transparent;color:var(--text-muted);border:1px dashed var(--border);border-radius:4px;cursor:pointer;font-weight:400;white-space:nowrap}.coords-copy:hover:not(:disabled){background:transparent;color:var(--primary);border-color:var(--primary)}.coords-copy.copied{color:var(--success);border-color:var(--success)}.reports-table .coords-copy[data-tooltip]:after,.stops-list .coords-copy[data-tooltip]:after{top:50%;right:calc(100% + 6px);transform:translateY(-50%)}.maplibregl-popup-content{padding:.5rem .7rem}.map-wrap.replaying .map-controls{display:none}.replay-bar{position:absolute;top:1rem;left:50%;transform:translateX(-50%);z-index:11;display:flex;align-items:flex-start;gap:.8rem;max-width:min(760px,calc(100% - 4rem));background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:.6rem .8rem;box-shadow:0 6px 20px rgba(0,0,0,.35)}.replay-bar .close{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:.4rem .7rem;font-size:.8rem;line-height:1}.replay-bar .close:hover{color:var(--text);border-color:var(--text-muted);background:rgba(255,255,255,.04)}.replay-bar .title-block{display:flex;flex-direction:column;gap:.15rem;min-width:0}.replay-bar .name{font-size:.95rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.replay-bar .stats{font-size:.75rem;color:var(--text-muted);white-space:nowrap}.period-picker{display:flex;flex-direction:column;gap:.5rem}.period-picker .preset-row{display:flex;gap:.3rem;flex-wrap:wrap}.period-picker .preset-row button{background:transparent;color:var(--text-muted);border:1px solid var(--border);padding:.35rem .7rem;font-size:.78rem;border-radius:6px}.period-picker .preset-row button:hover{color:var(--text);border-color:var(--text-muted)}.period-picker .preset-row button.active{background:var(--primary);color:#0f172a;border-color:var(--primary)}.period-picker .custom-row{display:flex;gap:.8rem;flex-wrap:wrap}.period-picker .custom-row label{display:flex;flex-direction:column;gap:.2rem;font-size:.72rem;color:var(--text-muted);min-width:180px}.period-picker .custom-row input{width:auto;padding:.35rem .5rem;font-size:.82rem}@media (min-width:769px){.replay-bar .period-picker{flex:1 1 auto;min-width:0}.replay-bar .custom-row{flex-wrap:nowrap;gap:.6rem}.replay-bar .custom-row label{min-width:0;flex:1 1}.replay-bar .custom-row input{width:100%}}.replay-empty-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-elevated);padding:1rem 1.5rem;border-radius:8px;border:1px solid var(--border);color:var(--text-muted);font-size:.9rem;z-index:11}.replay-error{top:1rem;right:1rem;background:rgba(239,68,68,.15);color:#fca5a5;padding:.5rem .8rem;border-radius:6px;border:1px solid rgba(239,68,68,.3);font-size:.82rem}.day-summary,.replay-error{position:absolute;z-index:11}.day-summary{top:10.5rem;left:1rem;width:244px;max-width:calc(100% - 2rem);background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.35);overflow:hidden}.day-summary-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:transparent;color:var(--text);border:none;padding:.6rem .8rem;font-size:.85rem;font-weight:600;cursor:pointer}.day-summary-toggle .chev{color:var(--text-muted)}.day-summary-body{padding:0 .8rem .8rem}.day-summary-body,.trip-summary{display:flex;flex-direction:column;gap:.7rem}.trip-summary .metrics{display:grid;grid-template-columns:1fr 1fr;grid-gap:.5rem;gap:.5rem}.trip-summary .metric{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.45rem .5rem}.trip-summary .metric-value{font-size:.95rem;font-weight:600;color:var(--text)}.trip-summary .metric-label{font-size:.68rem;color:var(--text-muted);margin-top:.1rem}.trip-summary .stops-section{display:flex;flex-direction:column;gap:.4rem}.trip-summary .stops-head{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.trip-summary .stops-list{--stop-row:22px;--stop-gap:6px;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--stop-gap);height:calc(5 * var(--stop-row) + 4 * var(--stop-gap));overflow-y:auto}.trip-summary .stops-list li{flex-shrink:0;height:var(--stop-row);display:grid;grid-template-columns:18px 1fr auto auto;align-items:center;grid-column-gap:.5rem;column-gap:.5rem;font-size:.76rem;color:var(--text)}.day-summary .stops-list{--stop-row:42px}.day-summary .stops-list li{grid-template-columns:18px 1fr auto;row-gap:4px}.day-summary .stops-list .coords-copy{grid-column:2/-1;justify-self:start}.trip-summary .stops-list .idx{width:18px;height:18px;display:grid;place-items:center;background:var(--primary);color:#0f172a;border-radius:50%;font-size:.68rem;font-weight:700}.trip-summary .stops-list .dur,.trip-summary .stops-list .when{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.trip-summary .stops-list .dur{color:var(--text-muted)}.sheet-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50;animation:sheetFade .18s ease-out}@keyframes sheetFade{0%{background:rgba(0,0,0,0)}to{background:rgba(0,0,0,.45)}}.sheet{position:absolute;top:0;right:0;bottom:0;width:clamp(320px,30vw,440px);background:var(--bg-elevated);border-left:1px solid var(--border);display:flex;flex-direction:column;box-shadow:-10px 0 30px rgba(0,0,0,.4);animation:sheetSlide .22s cubic-bezier(.16,1,.3,1)}@keyframes sheetSlide{0%{transform:translateX(100%)}to{transform:translateX(0)}}.sheet header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid var(--border);flex-shrink:0}.sheet header h2{font-size:1.05rem}.sheet .icon-btn{background:transparent;color:var(--text-muted);border:none;font-size:1.5rem;line-height:1;padding:.2rem .5rem}.sheet .icon-btn:hover{color:var(--text)}.sheet .sheet-body{min-height:0;padding:1.2rem;display:flex;flex-direction:column;gap:1rem;overflow-y:auto;flex:1 1}.vehicle-title{display:flex;align-items:center;gap:.7rem;min-width:0}.vehicle-title .color-swatch{width:12px;height:12px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 2px rgba(0,0,0,.4)}.vehicle-title h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vehicle-sub{font-size:.75rem;color:var(--text-muted);font-family:ui-monospace,monospace;margin-top:.1rem}.sheet-section{display:flex;flex-direction:column;gap:.6rem;align-items:flex-start}.sheet-section>*{max-width:100%}.sheet-section>.nearby-list,.sheet-section>.trip-summary,.sheet-section>button.secondary{align-self:stretch}.sheet-section-head{display:flex;align-items:center;justify-content:space-between;align-self:stretch}.sheet-section h3{font-size:.72rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.sheet-section+.sheet-section{border-top:1px solid var(--border);padding-top:1rem}.sheet-muted{font-size:.8rem;color:var(--text-muted)}.vehicle-now{display:flex;align-items:center;gap:.5rem}.vehicle-now-main{font-weight:600;font-size:.95rem}.vehicle-now .dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted);flex-shrink:0}.vehicle-now .dot.online{background:var(--success)}.vehicle-coords{display:flex;align-items:center;gap:.5rem}.sheet .field label{display:block;margin-bottom:.4rem;font-size:.8rem;color:var(--text-muted)}.sheet .field-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:.8rem;gap:.8rem}.sheet .field input:disabled{opacity:.6;cursor:not-allowed}.sheet .error{background:rgba(239,68,68,.15);color:#fca5a5;font-size:.85rem;padding:.5rem .7rem;border-radius:6px;border:1px solid rgba(239,68,68,.3)}.sheet-footer{display:flex;justify-content:flex-end;gap:.6rem;padding:.9rem 1.2rem;border-top:1px solid var(--border);flex-shrink:0}.sheet .secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.sheet .secondary:hover:not(:disabled){background:rgba(255,255,255,.05);border-color:var(--text-muted)}.color-picker{display:grid;grid-template-columns:repeat(10,1fr);grid-gap:.4rem;gap:.4rem}.color-picker .swatch{aspect-ratio:1;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;transition:transform .1s}.color-picker .swatch:hover{transform:scale(1.1)}.color-picker .swatch.active{border-color:var(--text);box-shadow:0 0 0 2px var(--bg-elevated),0 0 0 4px var(--text)}@media (max-width:768px){.dashboard{grid-template-columns:1fr}.sidebar-toggle{display:inline-flex}.sidebar{position:absolute;top:0;left:0;bottom:0;width:min(85vw,320px);z-index:40;transform:translateX(-100%);transition:transform .22s cubic-bezier(.16,1,.3,1);box-shadow:8px 0 24px rgba(0,0,0,.4)}.sidebar.open{transform:translateX(0)}.sidebar-backdrop{display:block;position:absolute;inset:0;background:rgba(0,0,0,.45);z-index:35;animation:sheetFade .18s ease-out}.map-wrap{grid-column:1}.map-controls{top:.75rem;left:.75rem;right:.75rem;width:auto;max-width:none}.dashboard .map-controls{left:calc(40px + .75rem + .5rem)}.map-controls form input{font-size:16px}.maplibregl-ctrl-top-right{top:auto;bottom:7rem}.status-pill{bottom:.75rem;left:.75rem;font-size:.72rem;padding:.3rem .6rem}.replay-panel{width:calc(100% - 1rem);left:.5rem;right:.5rem;bottom:.5rem;transform:none;padding:.6rem .7rem;gap:.5rem}.replay-panel .replay-top{gap:.5rem}.replay-panel .play-btn{width:34px;height:34px;flex-shrink:0}.replay-panel .replay-info .stamp{font-size:.82rem}.replay-panel .speed{font-size:.75rem;padding:.3rem .4rem}.sheet{width:100%;max-width:none}.sheet .sheet-body{padding:1rem;gap:.8rem}.sheet-footer{padding:.8rem 1rem calc(.8rem + env(safe-area-inset-bottom))}.sheet .field-row{grid-template-columns:1fr;gap:.8rem}.sheet input,.sheet select{font-size:16px}.color-picker{grid-template-columns:repeat(8,1fr)}.dashboard.replaying .sidebar-toggle,.map-wrap.replaying .status-pill{display:none}.replay-bar{left:.5rem;right:.5rem;top:.75rem;transform:none;max-width:none;flex-wrap:wrap;gap:.5rem}.replay-bar .title-block{flex:1 1;min-width:0}.replay-bar .period-picker{flex:1 1 100%;min-width:0}.map-wrap.replaying .day-summary{top:8rem}.map-wrap.replaying.custom-range .day-summary{top:14rem}.day-summary .stops-list{max-height:30vh}.period-picker .preset-row{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.2rem}.period-picker .preset-row button{flex-shrink:0}.period-picker .custom-row{gap:.5rem}.period-picker .custom-row label{min-width:0;flex:1 1 100%}.period-picker .custom-row input{width:100%;min-width:0;font-size:16px}.login-card{padding:1.5rem}.device-item{padding:1rem}.device-item .device-body{padding-right:0}.device-item .actions{position:static;opacity:1;margin-top:.5rem}.device-item .icon-btn{width:34px;height:34px}[data-tooltip]:after{display:none}}@supports (padding:max(0px)){@media (max-width:768px){.map-controls,.sidebar-toggle{top:max(.75rem,env(safe-area-inset-top))}.status-pill{bottom:max(.75rem,env(safe-area-inset-bottom))}.replay-panel{bottom:max(.5rem,env(safe-area-inset-bottom))}.maplibregl-ctrl-top-right{bottom:calc(7rem + env(safe-area-inset-bottom))}}}.sidebar header .header-actions{display:flex;align-items:center;gap:.5rem}.nav-link{font-size:.82rem;font-weight:600;padding:.4rem .7rem;border:1px solid var(--border);border-radius:6px;color:var(--text-muted);white-space:nowrap}.nav-link:hover{color:var(--text);border-color:var(--text-muted)}.nav-link.icon{display:inline-flex;align-items:center;padding:.4rem}.reports-page{min-height:100dvh;max-width:1100px;margin:0 auto;padding:1.5rem 1.25rem 3rem;display:flex;flex-direction:column;gap:1.25rem}.reports-header h1{font-size:1.4rem;font-weight:600}.reports-header .back-link{display:inline-block;font-size:.85rem;color:var(--text-muted);margin-bottom:.3rem}.reports-header .back-link:hover{color:var(--text)}.prefs-page{max-width:640px}.prefs-section{display:flex;flex-direction:column;gap:.75rem}.prefs-section h2{font-size:.78rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.prefs-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:.75rem;gap:.75rem}.prefs-option{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;text-align:left;padding:.9rem 1rem;background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);border-radius:8px;font-weight:400}.prefs-option:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--text-muted)}.prefs-option.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.prefs-option .title{font-weight:600;font-size:.95rem}.prefs-option .hint{font-size:.8rem;color:var(--text-muted);line-height:1.35}.prefs-status{min-height:1.2em;font-size:.82rem;color:var(--text-muted)}.prefs-status.saved{color:var(--success)}.prefs-status.error{color:var(--danger)}.reports-controls{display:grid;grid-template-columns:minmax(220px,300px) 1fr;grid-gap:1.25rem;gap:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:1rem}.reports-devices-head{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.link-btn{background:transparent;color:var(--primary);border:none;padding:0;font-size:.8rem;font-weight:600}.link-btn:hover:not(:disabled){background:transparent;color:var(--primary-hover)}.reports-devices-list{display:flex;flex-direction:column;gap:.15rem;max-height:220px;overflow-y:auto}.reports-device{display:flex;align-items:center;gap:.5rem;font-size:.9rem;padding:.25rem .3rem;border-radius:6px;cursor:pointer}.reports-device:hover{background:var(--bg-input)}.reports-device input{width:auto;accent-color:var(--primary)}.reports-period-label{display:block;font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.reports-error{background:color-mix(in srgb,var(--danger) 15%,transparent);border:1px solid var(--danger);color:var(--text);padding:.6rem .9rem;border-radius:8px;font-size:.9rem}.reports-table-wrap{position:relative;overflow-x:auto;border:1px solid var(--border);border-radius:12px}.reports-table{width:100%;border-collapse:collapse;font-size:.88rem;min-width:720px}.reports-table td,.reports-table th{padding:.6rem .8rem;text-align:left;border-bottom:1px solid var(--border)}.reports-table th{background:var(--bg-elevated);font-weight:600;color:var(--text-muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.03em;position:-webkit-sticky;position:sticky;top:0}.reports-table td.num,.reports-table th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.reports-table tbody tr:hover{background:var(--bg-elevated)}.reports-table tr.expandable{cursor:pointer}.reports-table .chev{color:var(--text-muted);margin-right:.4rem;font-size:.75rem}.reports-table .daily-row td{background:var(--bg);color:var(--text-muted);font-size:.82rem;padding-left:1.6rem}.reports-table tfoot td{font-weight:700;background:var(--bg-elevated);border-bottom:none}.reports-empty{text-align:center;color:var(--text-muted);padding:2rem .8rem}.reports-loading{position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 60%,transparent);color:var(--text-muted);font-size:.9rem}@media (max-width:768px){.reports-controls{grid-template-columns:1fr}}