*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;color:#4a5568;background:#e4e9f2}:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#071c46;color:#eef6ff;--page-bg: #071c46;--page-bg-deep: #041238;--panel: rgba(8, 31, 76, .9);--panel-soft: rgba(13, 45, 101, .78);--panel-strong: rgba(3, 19, 56, .94);--line: rgba(107, 185, 255, .2);--line-strong: rgba(52, 156, 255, .46);--text: #eef6ff;--text-soft: #a9c8ef;--text-muted: #78a0d3;--blue: #1f8fff;--cyan: #2ee8ff;--green: #21d39b;--yellow: #ffd166;--red: #ff6b88}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--text);background:radial-gradient(circle at 20% -10%,rgba(56,189,248,.34),transparent 34rem),radial-gradient(circle at 88% 6%,rgba(37,99,235,.32),transparent 30rem),radial-gradient(circle at 50% 110%,rgba(14,165,233,.22),transparent 36rem),linear-gradient(180deg,#0a2b64 0%,var(--page-bg) 42%,var(--page-bg-deep) 100%)}button,input{font:inherit}body{font-weight:500}.app-shell{width:min(1280px,calc(100vw - 32px));margin:0 auto;padding:22px 0 36px;color:var(--text)}.hero-panel,.detail-panel,.side-panel,.objects-panel,.settings-card{border:1px solid rgba(148,163,184,.14);border-radius:22px;background:radial-gradient(circle at 82% 0%,rgba(30,144,255,.18),transparent 16rem),linear-gradient(180deg,#0d2d65e6,#041238e6),var(--panel);box-shadow:0 22px 64px #000a225c,0 0 34px #0084ff14,inset 0 1px #ffffff14}.hero-panel{padding:16px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:inline-grid;width:38px;height:38px;place-items:center;border-radius:14px;background:linear-gradient(135deg,#2ee8ff,#1f8fff 55%,#5aa7ff);color:#fff;font-size:.8rem;font-weight:900;box-shadow:0 10px 30px #1f8fff61}h1,h2,h3,p{margin:0}h1{font-size:1.08rem;line-height:1.1;color:var(--text)}.topbar-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px}.health-pill{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;font-size:.82rem;border:1px solid rgba(148,163,184,.18);background:#09204cd1}.health-pill.ok{color:var(--cyan)}.health-pill.warn{color:var(--yellow)}.primary-btn,.secondary-btn,.mini-btn{border:0;cursor:pointer;border-radius:13px;transition:transform .16s ease,border-color .16s ease,background .16s ease,opacity .16s ease}.primary-btn{padding:.62rem 1rem;background:linear-gradient(135deg,#2ee8ff,#1f8fff 58%,#2563eb);color:#fff;font-weight:800;box-shadow:0 12px 26px #1f8fff57}.secondary-btn{padding:.58rem .9rem;border:1px solid var(--line);background:#0b2658b8;color:#dff2ff}.primary-btn:hover,.secondary-btn:hover,.mini-btn:hover,.metric-card:hover{transform:translateY(-1px)}.primary-btn:disabled{cursor:wait;opacity:.7}.status-strip{display:grid;grid-template-columns:auto minmax(260px,1fr) repeat(3,minmax(120px,auto));gap:18px;align-items:center;margin-top:18px;padding:18px;border-radius:20px;border:1px solid rgba(148,163,184,.12);background:radial-gradient(circle at 2% 20%,rgba(46,232,255,.24),transparent 14rem),linear-gradient(135deg,#09295fb8,#02143eb3)}.pulse-ring{width:76px;height:76px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at center,#0a285f 54%,transparent 55%),conic-gradient(var(--green) 0 80%,rgba(122,184,255,.2) 80% 100%)}.pulse-ring.warning{background:radial-gradient(circle at center,#0a285f 54%,transparent 55%),conic-gradient(var(--yellow) 0 72%,rgba(122,184,255,.2) 72% 100%)}.pulse-ring.critical{background:radial-gradient(circle at center,#0a285f 54%,transparent 55%),conic-gradient(var(--red) 0 58%,rgba(122,184,255,.2) 58% 100%)}.pulse-ring.info{background:radial-gradient(circle at center,#0a285f 54%,transparent 55%),conic-gradient(var(--cyan) 0 50%,rgba(122,184,255,.2) 50% 100%)}.pulse-ring span{font-size:1.35rem;font-weight:900}.eyebrow{color:var(--cyan);font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.status-copy h2{margin-top:3px;font-size:1.2rem}.status-copy p:last-child{margin-top:6px;font-size:.9rem}.status-stat{min-width:118px;padding-left:18px;border-left:1px solid rgba(148,163,184,.14);display:grid;justify-items:center;text-align:center}.status-stat strong{display:block;color:#f8fbff;font-size:1.95rem;line-height:1}.status-stat.critical strong{color:var(--red)}.settings-card{margin-top:14px;padding:16px}.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}.field{display:flex;flex-direction:column;gap:6px}.field-input{width:100%;padding:.65rem .75rem;border:1px solid var(--line);border-radius:12px;background:#04143e9e;color:#f8fbff}.field-input:focus{outline:2px solid rgba(46,232,255,.26);border-color:var(--line-strong)}.settings-actions{display:flex;gap:10px;margin-top:14px}.err{margin-top:14px;color:#ffe4ea;border:1px solid rgba(244,63,94,.26);border-radius:14px;background:#7f1d1d38;padding:12px 14px}.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.metric-card{position:relative;min-height:162px;padding:16px;text-align:left;color:var(--text);border:1px solid var(--line);border-radius:20px;background:radial-gradient(circle at 82% 0%,rgba(46,232,255,.18),transparent 9rem),linear-gradient(180deg,#0d3473e6,#051641f0);box-shadow:0 14px 34px #000a2238,inset 0 1px #ffffff12}.metric-card.active{border-color:#2ee8ffc2;box-shadow:0 0 0 1px #2ee8ff33,0 18px 42px #1f8fff29}.metric-card.critical{background:radial-gradient(circle at 80% 0%,rgba(255,107,136,.2),transparent 9rem),linear-gradient(180deg,#202c5ef2,#051641f5)}.metric-card.warning{background:radial-gradient(circle at 80% 0%,rgba(255,209,102,.18),transparent 9rem),linear-gradient(180deg,#1e3460f0,#051641f5)}.metric-card.ok{background:radial-gradient(circle at 80% 0%,rgba(33,211,155,.14),transparent 9rem),linear-gradient(180deg,#0d3468f0,#051641f5)}.metric-icon{display:inline-grid;width:32px;height:32px;place-items:center;border-radius:12px;color:#dff9ff;background:linear-gradient(135deg,#1787ff,#2ee8ff);box-shadow:0 10px 24px #1f8fff47}.metric-title,.metric-subtitle,.metric-value{display:block}.metric-title{margin-top:14px;font-weight:700}.metric-value{margin-top:10px;font-size:2rem;line-height:1;letter-spacing:-.04em}.metric-subtitle{margin-top:8px;font-size:.84rem}.metric-trend{position:absolute;top:16px;right:16px;display:inline-flex;align-items:center;gap:5px;font-weight:900;font-size:.9rem}.trend-arrow{width:0;height:0;flex:0 0 auto;border-left:8px solid transparent;border-right:8px solid transparent}.trend-arrow.up{border-bottom:14px solid currentColor}.trend-arrow.down{border-top:14px solid currentColor}.content-grid{display:grid;grid-template-columns:minmax(0,2.1fr) minmax(280px,.9fr);gap:14px;margin-top:14px;align-items:stretch}.detail-panel{display:flex;flex-direction:column;min-height:0;align-self:stretch}.detail-panel-body{flex:1 1 auto;min-height:0;overflow:auto;scrollbar-gutter:stable;padding-right:2px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) rgba(255,255,255,.08)}.detail-panel-body::-webkit-scrollbar{width:8px;height:8px}.detail-panel-body::-webkit-scrollbar-track{background:#ffffff0f;border-radius:999px}.detail-panel-body::-webkit-scrollbar-thumb{background:#ffffff38;border-radius:999px}.detail-panel .table-wrap{overflow-x:auto}.side-stack{display:flex;flex-direction:column;align-self:stretch;gap:14px;min-height:0}.detail-panel,.side-panel,.objects-panel{padding:18px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.section-heading h2{margin-top:3px;font-size:1.16rem}.detail-badge{display:inline-flex;min-width:54px;justify-content:center;padding:.45rem .7rem;border-radius:999px;color:#e8fbff;background:#2ee8ff29}.detail-badge.critical{color:#fecdd3;background:#f43f5e2e}.detail-badge.warning{color:#fde68a;background:#f59e0b29}.detail-badge.ok{color:#bbf7d0;background:#22c55e24}.detail-eyebrow{display:inline-flex;align-items:center;gap:8px}.detail-info-btn{display:inline-grid;width:18px;height:18px;place-items:center;border:1px solid rgba(213,90,255,.5);border-radius:50%;color:#f0d7ff;background:#d55aff29;font-size:.72rem;font-weight:900;line-height:1;cursor:pointer;transition:transform .16s ease,background .16s ease,border-color .16s ease}.detail-info-btn:hover,.detail-info-btn.active{transform:translateY(-1px);border-color:#d55affe6;background:#d55aff47}.detail-info-table{margin:-4px 0 14px;padding:11px 12px;border:1px solid rgba(213,90,255,.22);border-radius:14px;background:linear-gradient(135deg,#d55aff1a,#52d7ff0a),#1c162b6b}.detail-info-table p{display:flex;align-items:center;gap:7px;min-width:0;color:var(--text-soft);font-size:.78rem;white-space:nowrap;overflow:hidden}.detail-info-table span{min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--text-soft);font-size:.74rem}.detail-info-table strong{flex:0 0 auto;color:var(--yellow);font-size:.86rem}.detail-list,.object-list,.event-list,.timeline{display:grid;gap:10px}.detail-row,.object-card,.event-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--line);border-radius:16px;background:#0518448f}.detail-row{display:grid;grid-template-columns:minmax(150px,1fr) auto}.detail-row small{grid-column:1 / -1;font-size:.78rem}.object-card div,.event-card{min-width:0}.object-card strong,.object-card span,.event-card strong,.event-card span,.event-card em{display:block}.object-card span,.event-card span{margin-top:4px;font-size:.84rem}.event-card em{margin-top:4px;color:#f8fbff;font-style:normal;font-weight:700}.event-card.critical{border-color:#f43f5e47}.event-card.warning{border-color:#f59e0b47}.mini-btn{flex:0 0 auto;padding:.45rem .7rem;border:1px solid rgba(46,232,255,.28);color:#dff9ff;background:#1f8fff2e}.timeline p{display:grid;gap:3px;padding:10px 0 10px 14px;border-left:2px solid rgba(46,232,255,.46)}.objects-panel{margin-top:14px}.table-wrap{overflow-x:auto}.fleet-table{width:100%;border-collapse:collapse;min-width:880px;font-size:.92rem}.detail-table{min-width:520px}.fleet-table th,.fleet-table td{padding:.78rem .75rem;text-align:left;border-bottom:1px solid var(--line)}.fleet-table th{color:var(--text-soft);font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.fleet-table tbody tr:hover{background:#2ee8ff14}.small{font-size:.85rem}.nowrap{white-space:nowrap}code{border-radius:6px;background:#a9c8ef26;padding:.12rem .35rem}.gdemoi-status{display:inline-flex;align-items:center;gap:.42rem;font-weight:700}.gdemoi-status:before{content:"";width:9px;height:9px;flex-shrink:0;border-radius:50%;background:#22c55e}.gdemoi-status.offline:before{background:var(--red);box-shadow:0 0 16px #ff6b88a6}.gdemoi-status.ok,.gdemoi-status.gpsOk{color:#9af7cc}.gdemoi-status.gpsOk:before{background:#22c55e}.gdemoi-status.locationStale{color:#ffe29b}.gdemoi-status.locationStale:before{background:transparent;border:2px solid #f59e0b}.gdemoi-status.muted{color:#64748b}.gdemoi-status.muted:before{background:#64748b}@media(max-width:1120px){.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.status-strip{grid-template-columns:auto 1fr}.status-stat{padding-left:0;border-left:0}}@media(max-width:820px){.app-shell{width:min(100vw - 20px,1280px);padding-top:10px}.topbar,.content-grid{grid-template-columns:1fr}.topbar,.topbar-actions{align-items:stretch}.topbar,.brand{flex-direction:column}.dashboard-grid,.settings-grid,.content-grid,.status-strip{grid-template-columns:1fr}.pulse-ring{width:68px;height:68px}}:root{color-scheme:light;background:#f6f7fb;color:#111827;--page-bg: #f6f7fb;--panel: #ffffff;--panel-soft: #f9fafb;--line: #e7eaf0;--line-strong: #d6dbe6;--text: #111827;--text-soft: #697386;--text-muted: #98a2b3;--blue: #2563eb;--cyan: #14b8a6;--green: #20d395;--yellow: #f59e0b;--red: #ff3d1f}body{color:var(--text);background:radial-gradient(circle at 18% 0%,rgba(37,99,235,.06),transparent 28rem),linear-gradient(180deg,#fbfcff,#f6f7fb)}.app-shell{width:min(1180px,calc(100vw - 48px));padding:28px 0 42px;color:var(--text)}.hero-panel,.detail-panel,.side-panel,.objects-panel,.settings-card{border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:0 18px 44px #1118270f}.hero-panel{padding:22px}.topbar{align-items:flex-start}.brand-mark{width:42px;height:42px;border-radius:12px;background:#111827;box-shadow:none}h1{color:var(--text);font-size:1.7rem;letter-spacing:-.04em}.topbar-actions{gap:8px}.health-pill.ok{color:#0f9f72;background:#eafff6;border-color:#c8f7e4}.health-pill.warn{color:#b45309;background:#fff8e8;border-color:#fde8b4}.primary-btn{background:#111827;color:#fff;box-shadow:0 10px 24px #11182729}.primary-btn:hover,.secondary-btn:hover,.mini-btn:hover,.metric-card:hover{transform:translateY(-2px)}.status-strip{grid-template-columns:auto minmax(260px,1fr) repeat(3,minmax(112px,auto));gap:20px;margin-top:22px;padding:18px;border:1px solid var(--line);background:#f9fafb}.eyebrow{color:var(--text-muted);font-size:.68rem;letter-spacing:.12em}.status-copy h2{color:var(--text);font-size:1.28rem}.status-stat.critical strong,.metric-trend.up{color:var(--red)}.field-input:focus{outline:3px solid rgba(37,99,235,.12);border-color:#94a3b8}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}.metric-card{min-height:148px;padding:18px;color:var(--text);border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 14px 32px #1118270d}.metric-card.active{border-color:#111827;box-shadow:0 0 0 1px #111827,0 18px 38px #11182714}.metric-icon{width:30px;height:30px;border-radius:10px;color:#111827;background:#f3f4f6;box-shadow:none}.metric-title{margin-top:18px;color:var(--text-soft);font-size:.8rem;font-weight:800}.metric-value{margin-top:8px;color:var(--text);font-size:2.1rem}.metric-subtitle{color:var(--text-soft);font-size:.8rem}.metric-trend{top:18px;right:18px;gap:6px;font-size:.82rem}.metric-trend.down{color:var(--green)}.metric-trend.equal{color:var(--text-muted)}.content-grid{grid-template-columns:minmax(0,1.65fr) minmax(300px,.8fr);gap:18px;margin-top:18px;align-items:stretch}.section-heading h2{color:var(--text);font-size:1.08rem}.object-list.scrollable{max-height:380px;overflow-y:auto;padding-right:4px}.object-list.scrollable::-webkit-scrollbar{width:8px}.object-list.scrollable::-webkit-scrollbar-track{background:#f3f4f6;border-radius:999px}.object-list.scrollable::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:999px}.detail-row{border-radius:12px}.object-card{align-items:stretch;border-radius:14px}.object-main{display:grid;gap:9px;width:100%}.object-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.object-title-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-meta{display:flex;flex-wrap:wrap;gap:6px}.object-meta span,.table-subtitle{display:inline-flex;width:fit-content;margin-top:0;border-radius:999px;background:#f3f4f6;color:var(--text-soft);font-size:.76rem;line-height:1.2;padding:.28rem .5rem}.object-status{flex:0 0 auto;border-radius:999px;font-size:.72rem;font-weight:800;line-height:1;padding:.4rem .55rem}.table-subtitle{display:block;margin-top:5px}.empty-state{border:1px dashed var(--line-strong);border-radius:14px;background:#f9fafb;color:var(--text-soft);padding:18px}.timeline p{border-left:2px solid #111827}.objects-panel{margin-top:18px}.gdemoi-status.offline{color:var(--red)}.gdemoi-status.ok,.gdemoi-status.gpsOk{color:#0f9f72}.gdemoi-status.locationStale{color:#b54708}@media(max-width:1120px){.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:820px){.app-shell{width:min(100vw - 24px,1180px);padding-top:14px}.topbar,.brand{flex-direction:column}.dashboard-grid,.settings-grid,.content-grid,.status-strip{grid-template-columns:1fr}.status-stat{padding-left:0;border-left:0}}:root{color-scheme:light;background:#f6f7fb;color:#111827;--page-bg: #f6f7fb;--page-bg-deep: #eef2f8;--panel: #ffffff;--panel-soft: #f9fafb;--panel-strong: #ffffff;--line: #e7eaf0;--line-strong: #d6dbe6;--text: #111827;--text-soft: #697386;--text-muted: #98a2b3;--blue: #0075ff;--cyan: #01b7ff;--green: #01b574;--yellow: #f6ad55;--red: #e31a1a}body{color:var(--text);background:radial-gradient(circle at 14% 6%,rgba(0,117,255,.1),transparent 26rem),radial-gradient(circle at 86% 4%,rgba(1,183,255,.08),transparent 24rem),radial-gradient(circle at 50% 100%,rgba(37,99,235,.06),transparent 32rem),linear-gradient(180deg,#fbfcff,#f3f7fc 48%,#eef4fa)}.app-shell{width:min(1280px,calc(100vw - 40px));padding:20px 0 36px;color:var(--text);isolation:isolate}.hero-panel,.detail-panel,.side-panel,.objects-panel,.settings-card{border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 12px 32px #1118270f;-webkit-backdrop-filter:none;backdrop-filter:none}.hero-panel{padding:18px}.topbar{align-items:center}.brand-mark{width:38px;height:38px;border-radius:13px;background:linear-gradient(135deg,#0075ff,#01b7ff);color:#fff;box-shadow:0 10px 28px #0075ff57}h1{color:var(--text);font-size:1.15rem;letter-spacing:-.02em}.health-pill,.secondary-btn{border:1px solid var(--line);background:#fff;color:var(--text-soft)}.health-pill.ok{color:#01b574;background:#01b5741f;border-color:#01b5742e}.health-pill.warn{color:#f6ad55;background:#f6ad551f;border-color:#f6ad552e}.primary-btn{background:linear-gradient(135deg,#0075ff,#01b7ff);color:#fff;box-shadow:0 12px 28px #0075ff4d}.status-strip{margin-top:18px;border:1px solid var(--line);background:#f9fafb}.pulse-ring{background:radial-gradient(circle at center,#fff 54%,transparent 55%),conic-gradient(var(--green) 0 80%,#e8edf5 80% 100%)}.pulse-ring.warning{background:radial-gradient(circle at center,#fff 54%,transparent 55%),conic-gradient(var(--yellow) 0 72%,#e8edf5 72% 100%)}.pulse-ring.critical{background:radial-gradient(circle at center,#fff 54%,transparent 55%),conic-gradient(var(--red) 0 58%,#e8edf5 58% 100%)}.pulse-ring.info{background:radial-gradient(circle at center,#fff 54%,transparent 55%),conic-gradient(var(--blue) 0 50%,#e8edf5 50% 100%)}.eyebrow{color:var(--blue)}.status-stat{border-left:1px solid var(--line)}.status-stat strong{color:var(--text)}.status-stat.critical strong,.metric-trend.up,.gdemoi-status.offline{color:#ff3d1f}.status-stat.warning strong{color:var(--yellow)}.field-input{border:1px solid var(--line);background:#fff;color:var(--text)}.field-input:focus{outline:3px solid rgba(0,117,255,.2);border-color:#0075ffa6}.err{color:#991b1b;border-color:#fecaca;background:#fff1f2}.dashboard-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:32px}@media(max-width:1120px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:820px){.dashboard-grid{grid-template-columns:1fr}}.metric-card{min-height:150px;overflow:visible;isolation:isolate;cursor:pointer;padding:30px 16px 16px;color:var(--text);border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 14px 32px #1118270f;-webkit-backdrop-filter:none;backdrop-filter:none}.metric-card:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:0;padding:2px;border-radius:inherit;pointer-events:none;opacity:0;background:linear-gradient(135deg,#8fffe2,#34f5c5 34%,#01b7ff 64%,#8fffe2);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;transition:opacity .16s ease}.metric-card.critical,.metric-card.warning,.metric-card.ok{background:#fff}.metric-card.active{border-color:var(--blue);box-shadow:0 0 0 1px #0075ff29,0 18px 38px #11182714}.metric-icon{position:absolute;top:-24px;left:50%;z-index:2;display:inline-grid;width:54px;height:54px;transform:translate(-50%);place-items:center;color:#fff;background:radial-gradient(circle at 32% 24%,rgba(255,255,255,.9),transparent .42rem),linear-gradient(135deg,#0075ff,#01b7ff);border:3px solid rgba(255,255,255,.52);box-shadow:0 14px 24px #00000047,0 0 0 2px #01b7ff2e,0 0 24px #0075ff73;border-radius:50%}.metric-icon svg{width:34px;height:34px;overflow:visible}.metric-icon path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.8}.metric-icon.offline path,.metric-icon.offline circle,.metric-icon.gps path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.7}.metric-icon.gps path,.metric-icon.gps circle,.metric-icon.fines path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4}.metric-icon.violations path:first-child{fill:currentColor;stroke:currentColor}.metric-icon.violations path:not(:first-child){stroke:#051030f2;stroke-width:2.8}.metric-icon.offline{background:radial-gradient(circle at 32% 24%,rgba(255,255,255,.88),transparent .42rem),linear-gradient(135deg,#ff9f43,#ff6b35)}.metric-icon.gps{background:radial-gradient(circle at 32% 24%,rgba(255,255,255,.9),transparent .42rem),linear-gradient(135deg,#9be7ff,#01b7ff 52%,#0075ff)}.metric-icon.violations{background:radial-gradient(circle at 32% 24%,rgba(255,255,255,.88),transparent .42rem),linear-gradient(135deg,#ffcf67,#ff3d1f)}.metric-icon.fines{background:radial-gradient(circle at 32% 24%,rgba(255,255,255,.88),transparent .42rem),linear-gradient(135deg,#ff7a7a,#ff3d1f 52%,#b91c1c)}.metric-title{margin-top:0;color:var(--text);font-size:.92rem}.metric-value{color:var(--text);font-size:2.05rem}.metric-subtitle{color:var(--text-soft)}.metric-trend.down{color:#01b574}.metric-trend.equal{color:var(--text-soft)}.mileage-panel{display:flex;flex:0 0 auto;min-height:0;flex-direction:column}.side-panel,.objects-panel,.settings-card,.metric-card,.metric-card.critical,.metric-card.warning,.metric-card.ok{background:#fff;box-shadow:0 14px 32px #1118270f}.speeding-panel{flex:1 1 auto;width:100%;min-height:0;cursor:pointer;text-align:left;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.speeding-panel:hover{transform:translateY(-2px)}.speeding-panel.active{border-color:#01b7ffb8;box-shadow:0 0 0 1px #01b7ff2e,0 18px 42px #0075ff2e,inset 0 1px #ffffff14}.mileage-panel .section-heading{align-items:flex-start;margin-bottom:14px}.mileage-panel .section-heading h3{font-size:1.45rem;line-height:1.05;letter-spacing:-.04em}.mileage-trend{display:inline-flex;align-items:center;gap:9px;white-space:nowrap;border-radius:999px;background:#ffffff14;font-size:1.6rem;font-weight:900;line-height:1;padding:.55rem .75rem}.mileage-trend .trend-arrow{border-left-width:12px;border-right-width:12px}.mileage-trend .trend-arrow.up{border-bottom-width:20px}.mileage-trend .trend-arrow.down{border-top-width:20px}.mileage-trend.up{color:#ff3d1f}.mileage-trend.down{color:#01b574}.mileage-trend.equal{color:var(--text-soft)}.mileage-panel-value{display:block;margin-top:2px;font-size:2.2rem;line-height:1;letter-spacing:-.05em}.speeding-panel-value{display:flex;align-items:baseline;gap:8px}.speeding-panel-number{font-size:inherit;line-height:1}.speeding-panel-unit{font-size:1.45rem;line-height:1.05;letter-spacing:-.04em}.mileage-panel-period{display:block;margin-top:8px;color:var(--text-soft);font-size:.86rem}.mileage-panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:auto;padding-top:18px}.mileage-panel-grid div{border:1px solid var(--line);border-radius:14px;background:#f9fafb;padding:12px}.mileage-panel-grid span,.mileage-panel-grid strong{display:block}.mileage-panel-grid span{color:var(--text-soft);font-size:.74rem}.mileage-panel-grid strong{margin-top:6px;font-size:.9rem;line-height:1.25}.mileage-change-card{display:grid;align-content:center;min-height:64px}.mileage-change-card span{text-align:left}.mileage-change-card strong{max-width:150px;margin-right:auto;margin-left:auto;text-align:center}.speeding-count-cell{display:inline-grid;grid-template-columns:52px 22px;align-items:center;gap:8px;justify-content:start}.speeding-direction{display:inline-grid;width:22px;height:22px;place-items:center;border-radius:50%;font-size:.7rem;font-weight:900}.speeding-direction.up{color:#ff3d1f;background:#ff3d1f24}.speeding-direction.down{color:#01b574;background:#01b57424}.detail-badge{color:var(--text);background:#f3f4f6}.detail-panel .eyebrow{font-size:.83rem}.detail-badge.critical{color:#b42318;background:#fff1f0}.detail-badge.warning{color:#b54708;background:#fffaeb}.detail-badge.ok{color:#027a48;background:#ecfdf3}.detail-row,.object-card,.event-card{border:1px solid var(--line);background:#fff}.object-list.scrollable::-webkit-scrollbar-track{background:#ffffff0f}.object-list.scrollable::-webkit-scrollbar-thumb{background:#a0aec080}.object-meta span,.table-subtitle{background:#f3f4f6;color:var(--text-soft)}.object-status.critical{color:#b42318;background:#fff1f0}.object-status.warning{color:#b54708;background:#fffaeb}.empty-state{border-color:var(--line);background:#f9fafb;color:var(--text-soft)}.event-card em{color:var(--text)}.mini-btn{border:1px solid var(--line);color:var(--text);background:#f9fafb}.timeline p{border-left:2px solid #0075ff}.fleet-table th,.fleet-table td{border-bottom:1px solid var(--line)}.fleet-table th{color:var(--text-muted);background:#fff}.fleet-table tbody tr:hover{background:#f9fafb}.gdemoi-status.offline:before{background:#ff3d1f;box-shadow:0 0 16px #ff3d1f8c}.gdemoi-status.ok,.gdemoi-status.gpsOk{color:#01b574}.gdemoi-status.locationStale{color:#f6ad55}.gdemoi-status.muted{color:var(--text-muted)}.metric-trend,.metric-trend.up,.metric-trend.down,.metric-trend.equal,.mileage-trend,.mileage-trend.up,.mileage-trend.down,.mileage-trend.equal{color:var(--text-soft);text-shadow:none}.mileage-trend{border:1px solid var(--line);background:#f9fafb}.speeding-trend.up{border-color:#ff3d1f47;color:#ff3d1f;background:#fff1f0;text-shadow:none}.speeding-trend.down{border-color:#01b57447;color:#01b574;background:#ecfdf3;text-shadow:none}.speeding-trend.attention{border-color:#f6ad554d;color:#b54708;background:#fffaeb;text-shadow:none}.hero-panel{background:#fff;box-shadow:0 12px 32px #1118270f}.pulse-ring{position:relative;overflow:hidden}.pulse-ring span{position:relative;z-index:2}.pulse-ring.loading{background:radial-gradient(circle at center,#fff 53%,transparent 54%),conic-gradient(#e8edf5 0,#e8edf5);box-shadow:0 0 0 1px #0075ff1f,0 0 20px #0075ff1f}.pulse-ring.loading:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:conic-gradient(from 0deg,transparent 0 70%,#01b7ff 82%,#0075ff 92%,transparent 100%);animation:pulseRunner 1.05s linear infinite}.pulse-ring.loading:after{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;z-index:1;border-radius:inherit;background:#fff;box-shadow:inset 0 0 12px #0075ff14}.pulse-ring.loading span{width:30px;height:3px;border-radius:999px;color:transparent;background:var(--blue);box-shadow:none;animation:pulseLine .85s ease-in-out infinite}.pulse-ring span{color:var(--text)}.detail-panel-empty .section-heading{margin-bottom:6px}.detail-panel-empty{display:flex;flex-direction:column}.detail-panel-empty .detail-panel-body{display:flex;flex:1 1 auto;flex-direction:column;min-height:260px}.detail-panel-empty .detail-chart{flex:1 1 auto}.detail-chart{position:relative;min-height:260px;margin:auto 0;overflow:hidden;border-radius:16px;border:1px solid rgba(255,255,255,.08);background:radial-gradient(circle at 52% 12%,rgba(213,90,255,.16),transparent 12rem),linear-gradient(180deg,#413753eb,#3b314cf5)}.detail-chart:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px);background-size:96px 100%,100% 54px;opacity:.22;pointer-events:none}.detail-chart svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.detail-chart-axis text{fill:#d8d3e19e;font-size:18px;font-weight:800}.detail-chart-line{fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.detail-chart-line-cyan{stroke:#55dcff;filter:drop-shadow(0 0 5px rgba(85,220,255,.34))}.detail-chart-line-purple{stroke:#8d29ff;filter:drop-shadow(0 0 6px rgba(141,41,255,.46))}.detail-chart-line-magenta{stroke:#df32ff;filter:drop-shadow(0 0 7px rgba(223,50,255,.5))}.detail-chart-cursor{stroke:#d55affe0;stroke-width:3;filter:drop-shadow(0 0 12px rgba(213,90,255,.7))}.detail-chart-dot-halo{fill:#f481ff42;filter:url(#detailChartGlow)}.detail-chart-dot{fill:#ffd0ff;stroke:url(#detailChartMarker);stroke-width:5;filter:drop-shadow(0 0 12px rgba(244,129,255,.95))}@media(max-width:760px){.detail-chart{min-height:260px}}@keyframes pulseRunner{to{transform:rotate(360deg)}}@keyframes pulseLine{0%,to{opacity:.6;transform:scaleX(.74)}50%{opacity:1;transform:scaleX(1.18)}}:root{color-scheme:light;--page-bg: #e4e9f2;--page-bg-deep: #dde3ed;--panel: #e4e9f2;--panel-soft: #e4e9f2;--panel-strong: #e4e9f2;--neu-dark: #c5ccd8;--neu-light: #ffffff;--neu-raised: 8px 8px 18px var(--neu-dark), -8px -8px 18px var(--neu-light);--neu-raised-sm: 5px 5px 12px var(--neu-dark), -5px -5px 12px var(--neu-light);--neu-raised-xs: 3px 3px 8px var(--neu-dark), -3px -3px 8px var(--neu-light);--neu-inset: inset 5px 5px 12px var(--neu-dark), inset -5px -5px 12px var(--neu-light);--neu-inset-sm: inset 3px 3px 8px var(--neu-dark), inset -3px -3px 8px var(--neu-light);--line: transparent;--line-strong: transparent;--text: #4a5568;--text-soft: #7b8798;--text-muted: #9aa5b5;--mint: #6dd4b0;--mint-soft: #a8e8d0;--lavender: #a99af5;--lavender-soft: #c9bff8;--pink: #f0a0c8;--pink-soft: #f5c4dc;--peach: #f5b896;--yellow: #f0d080;--blue: #8eb5f7;--cyan: #7ec8e8;--green: #6dd4b0;--red: #f08888;--purple: #a99af5;--radius: 22px;--radius-sm: 16px;--radius-pill: 999px}body{color:var(--text);background:var(--page-bg)}.app-shell{color:var(--text)}.hero-panel,.detail-panel,.side-panel,.objects-panel,.settings-card{border:none;border-radius:var(--radius);background:var(--panel);box-shadow:var(--neu-raised);-webkit-backdrop-filter:none;backdrop-filter:none}.hero-panel{padding:22px;margin-bottom:4px;background:var(--panel);box-shadow:var(--neu-raised)}.side-panel,.objects-panel,.settings-card,.metric-card,.metric-card.critical,.metric-card.warning,.metric-card.ok{background:var(--panel);box-shadow:var(--neu-raised-sm);-webkit-backdrop-filter:none;backdrop-filter:none;border:none}.detail-panel,.side-panel,.objects-panel{padding:20px}h1{color:var(--text);font-size:1.4rem;font-weight:700;letter-spacing:-.02em}h2,h3,strong,td{color:var(--text)}.brand p,.muted,.metric-subtitle,.status-copy p,.status-stat span,.timeline span,.object-card span,.event-card span,.detail-row span,.detail-row small,.field-label{color:var(--text-soft)}.eyebrow{color:var(--text-muted);font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.section-heading h2,.section-heading h3{font-size:1rem;font-weight:700;color:var(--text)}.mileage-panel .section-heading h3{font-size:1.2rem;letter-spacing:-.02em}.brand-mark{background:linear-gradient(145deg,var(--lavender-soft),var(--lavender));color:#fff;box-shadow:var(--neu-raised-xs);border:none}.primary-btn{background:linear-gradient(145deg,var(--mint-soft),var(--mint));color:#fff;font-weight:700;font-size:.875rem;border:none;border-radius:var(--radius-pill);box-shadow:var(--neu-raised-xs)}.primary-btn:hover{background:linear-gradient(145deg,#7ee0bc,#5bc99e);transform:translateY(-1px)}.primary-btn:disabled{opacity:.65}.secondary-btn,.mini-btn{border:none;background:var(--panel);color:var(--text-soft);box-shadow:var(--neu-raised-xs);border-radius:var(--radius-sm);-webkit-backdrop-filter:none;backdrop-filter:none}.secondary-btn:hover,.mini-btn:hover{color:var(--text);box-shadow:var(--neu-raised-sm)}.health-pill{border:none;background:var(--panel);color:var(--text-soft);box-shadow:var(--neu-inset-sm);border-radius:var(--radius-pill)}.health-pill.ok{color:#2d9a72;background:var(--panel);box-shadow:var(--neu-inset-sm)}.health-pill.warn{color:#c4842a;background:var(--panel);box-shadow:var(--neu-inset-sm)}.status-strip{margin-top:26px;padding:22px;border:none;border-radius:var(--radius-sm);background:var(--panel);box-shadow:var(--neu-inset);-webkit-backdrop-filter:none;backdrop-filter:none}.pulse-ring{width:80px;height:80px;background:radial-gradient(circle at center,var(--panel) 52%,transparent 53%),conic-gradient(var(--mint) 0 80%,#d0d8e4 80% 100%);box-shadow:var(--neu-raised-xs);border-radius:50%}.pulse-ring.warning{background:radial-gradient(circle at center,var(--panel) 52%,transparent 53%),conic-gradient(var(--yellow) 0 72%,#d0d8e4 72% 100%)}.pulse-ring.critical{background:radial-gradient(circle at center,var(--panel) 52%,transparent 53%),conic-gradient(var(--red) 0 58%,#d0d8e4 58% 100%)}.pulse-ring.info{background:radial-gradient(circle at center,var(--panel) 52%,transparent 53%),conic-gradient(var(--lavender) 0 50%,#d0d8e4 50% 100%)}.pulse-ring span{color:var(--text);font-weight:800}.pulse-ring.loading{background:radial-gradient(circle at center,var(--panel) 52%,transparent 53%),conic-gradient(#d0d8e4 0,#d0d8e4);box-shadow:var(--neu-inset-sm)}.pulse-ring.loading:before{background:conic-gradient(from 0deg,transparent 0 70%,var(--lavender-soft) 82%,var(--lavender) 92%,transparent 100%)}.pulse-ring.loading:after{background:var(--panel);box-shadow:var(--neu-inset-sm)}.pulse-ring.loading span{background:var(--lavender);box-shadow:none}.status-stat{border-left:1px solid rgba(197,204,216,.5)}.status-stat strong{color:var(--text);font-weight:800}.status-stat.critical strong,.metric-trend.up,.gdemoi-status.offline{color:var(--red)}.status-stat.warning strong{color:var(--peach)}.dashboard-grid{gap:20px;margin-top:52px;padding-top:4px}.metric-card{border:none;background:var(--panel);border-radius:var(--radius);box-shadow:var(--neu-raised-sm);transition:box-shadow .18s ease,transform .18s ease,background .18s ease}.metric-card:hover:not(.active){transform:translateY(-2px);box-shadow:var(--neu-raised)}.metric-card:after{opacity:0;background:linear-gradient(135deg,var(--mint-soft),var(--lavender),var(--pink-soft))}.metric-card.active{background:#dce4ef;box-shadow:var(--neu-inset),0 0 0 3px #a99af573,0 8px 24px #a99af538;transform:translateY(1px)}.metric-card.active:after{opacity:1}.metric-card.active:before{content:"";position:absolute;bottom:10px;left:50%;z-index:2;width:36px;height:5px;transform:translate(-50%);border-radius:999px;background:linear-gradient(90deg,var(--lavender-soft),var(--lavender));box-shadow:0 0 10px #a99af573}.metric-card.active .metric-title{color:#6b5fc9;font-weight:700}.metric-card.active .metric-value{color:#5a4eb8}.metric-card.active .metric-icon{transform:translate(-50%,-3px) scale(1.1);border-color:#dce4ef;box-shadow:var(--neu-raised-xs),0 0 0 3px #a99af559}.metric-card.critical,.metric-card.warning,.metric-card.ok{background:var(--panel)}.metric-value{color:var(--text);font-weight:800}.metric-title{color:var(--text-soft);font-size:.82rem;font-weight:600}.metric-icon{background:linear-gradient(145deg,var(--lavender-soft),var(--lavender));color:#fff;border:3px solid var(--panel);box-shadow:var(--neu-raised-xs);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.metric-icon.offline{background:linear-gradient(145deg,#f5c0c0,var(--red))}.metric-icon.gps{background:linear-gradient(145deg,#b8d4f8,var(--blue))}.metric-icon.violations{background:linear-gradient(145deg,#f5d0a8,var(--peach))}.metric-icon.fines{background:linear-gradient(145deg,#f5b0c8,var(--pink))}.metric-icon.violations path:not(:first-child){stroke:#fff8f0}.metric-trend.down{color:var(--mint)}.metric-trend.up{color:var(--red)}.metric-trend,.metric-trend.equal,.mileage-trend,.mileage-trend.equal{color:var(--text-soft)}.mileage-trend{border:none;background:var(--panel);box-shadow:var(--neu-inset-sm);border-radius:var(--radius-pill)}.mileage-trend.up{color:var(--red);background:var(--panel);box-shadow:var(--neu-inset-sm)}.mileage-trend.down{color:var(--mint);background:var(--panel);box-shadow:var(--neu-inset-sm)}.speeding-panel.active{background:#dce4ef;box-shadow:var(--neu-inset),0 0 0 3px #a99af573,0 8px 24px #a99af538}.speeding-trend.up{color:var(--red);background:var(--panel);box-shadow:var(--neu-inset-sm)}.speeding-trend.down{color:var(--mint);background:var(--panel);box-shadow:var(--neu-inset-sm)}.speeding-trend.attention{color:var(--peach);background:var(--panel);box-shadow:var(--neu-inset-sm)}.speeding-trend.neutral{color:var(--text-soft)}.mileage-panel-grid div{border:none;background:var(--panel);box-shadow:var(--neu-inset-sm);border-radius:var(--radius-sm)}.content-grid{gap:18px;margin-top:18px}.detail-badge{color:var(--text);background:var(--panel);border:none;box-shadow:var(--neu-inset-sm);border-radius:var(--radius-pill)}.detail-badge.critical{color:var(--red);background:var(--panel)}.detail-badge.warning{color:var(--peach);background:var(--panel)}.detail-badge.ok{color:var(--mint);background:var(--panel)}.detail-row,.object-card,.event-card{border:none;background:var(--panel);box-shadow:var(--neu-inset-sm);border-radius:var(--radius-sm)}.object-meta span,.table-subtitle{background:var(--panel);color:var(--text-soft);border:none;box-shadow:var(--neu-inset-sm)}.object-status.critical{color:var(--red);background:var(--panel);box-shadow:var(--neu-inset-sm)}.object-status.warning{color:var(--peach);background:var(--panel);box-shadow:var(--neu-inset-sm)}.empty-state{border:none;background:var(--panel);color:var(--text-soft);box-shadow:var(--neu-inset-sm);border-radius:var(--radius-sm)}.event-card em{color:var(--lavender)}.timeline p{border-left:3px solid var(--lavender-soft)}.detail-info-btn{border:none;background:var(--panel);color:var(--lavender);box-shadow:var(--neu-raised-xs)}.detail-info-table{border:none;background:var(--panel);box-shadow:var(--neu-inset-sm)}.fleet-table th,.fleet-table td{border-bottom:1px solid rgba(197,204,216,.35)}.fleet-table th{color:var(--text-muted);background:transparent;font-size:.72rem;font-weight:700}.fleet-table tbody tr:hover{background:#ffffff59}.gdemoi-status.ok,.gdemoi-status.gpsOk{color:var(--mint)}.gdemoi-status.offline:before{background:var(--red);box-shadow:0 0 8px #f0888880}.gdemoi-status.locationStale{color:var(--peach)}.field-input{border:none;background:var(--panel);color:var(--text);box-shadow:var(--neu-inset-sm);border-radius:var(--radius-sm)}.field-input:focus{outline:none;box-shadow:var(--neu-inset-sm),0 0 0 2px #a99af559}.err{color:#c05050;border:none;background:var(--panel);box-shadow:var(--neu-inset-sm);border-radius:var(--radius-sm)}.detail-chart{border:none;background:var(--panel);box-shadow:var(--neu-inset);border-radius:var(--radius-sm)}.detail-chart:before{background:linear-gradient(90deg,rgba(197,204,216,.25) 1px,transparent 1px),linear-gradient(rgba(197,204,216,.2) 1px,transparent 1px);opacity:.6}.detail-chart-axis text{fill:var(--text-muted)}.detail-chart-line-cyan{stroke:var(--blue);filter:drop-shadow(0 2px 4px rgba(142,181,247,.4))}.detail-chart-line-purple{stroke:var(--lavender);filter:drop-shadow(0 2px 4px rgba(169,154,245,.4))}.detail-chart-line-magenta{stroke:var(--pink);filter:drop-shadow(0 2px 4px rgba(240,160,200,.4))}.detail-chart-cursor{stroke:var(--lavender);filter:drop-shadow(0 0 6px rgba(169,154,245,.5))}.detail-chart-dot{fill:var(--lavender-soft);stroke:var(--lavender);stroke-width:4;filter:drop-shadow(0 2px 6px rgba(169,154,245,.5))}.object-list.scrollable::-webkit-scrollbar-track{background:var(--panel)}.object-list.scrollable::-webkit-scrollbar-thumb{background:var(--neu-dark);border-radius:999px}.speeding-direction.up{color:var(--red);background:var(--panel);box-shadow:var(--neu-inset-sm)}.speeding-direction.down{color:var(--mint);background:var(--panel);box-shadow:var(--neu-inset-sm)}.detail-panel-body::-webkit-scrollbar-track{background:var(--panel)}.detail-panel-body::-webkit-scrollbar-thumb{background:var(--neu-dark);border-radius:999px}
