.gps-dashboard{padding:20px;height:calc(100vh - 80px);display:flex;flex-direction:column}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header-actions{display:flex;gap:10px}.btn-track{padding:10px 20px;border-radius:8px;border:none;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:8px;transition:all .3s ease}.btn-refresh{padding:10px 20px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:8px}.btn-stop-tracking{padding:10px 20px;background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;color:#dc2626;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:8px;transition:all .2s}.btn-stop-tracking:hover{background:#fee2e2;border-color:#f87171}.upgrade-required{flex:1;display:flex;align-items:center;justify-content:center;background:white;border-radius:15px;margin:20px}.upgrade-content{text-align:center;max-width:500px;padding:40px}.upgrade-content i{font-size:64px;color:#3b82f6;margin-bottom:20px}.upgrade-content h3{font-size:24px;margin-bottom:15px;color:#1f2937}.upgrade-content p{color:#6b7280;margin-bottom:25px;line-height:1.6}.dashboard-layout{display:grid;grid-template-columns:320px 1fr;gap:20px;flex:1;min-height:0}.dashboard-layout.no-sidebar{grid-template-columns:1fr}.gps-quick-stats{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.gps-stat-chip{display:flex;align-items:center;gap:6px;padding:6px 14px;background:#f1f5f9;border-radius:20px;font-size:13px;color:#475569;white-space:nowrap}.gps-stat-chip.live{background:#dcfce7;color:#166534}.gps-stat-chip.speed{background:#dbeafe;color:#1e40af}.gps-stat-chip.fastest{background:#fef3c7;color:#92400e}.live-dot-sm{width:8px;height:8px;border-radius:50%;background:#22c55e;animation:pulse 2s infinite}.btn-toggle-panel{padding:8px 14px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:6px;font-size:13px;transition:all .2s}.btn-toggle-panel:hover{background:#e5e7eb}.hide-mobile{display:inline}.vehicle-search-box{display:flex;align-items:center;gap:8px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:8px 12px;margin-bottom:14px;transition:border-color .2s}.vehicle-search-box:focus-within{border-color:#3b82f6;background:#fff}.vehicle-search-box i{color:#94a3b8;font-size:14px}.vehicle-search-box input{border:none;outline:none;background:transparent;flex:1;font-size:13px;color:#1e293b}.vehicle-search-box input::-moz-placeholder{color:#94a3b8}.vehicle-search-box input::placeholder{color:#94a3b8}.search-clear{background:none;border:none;color:#94a3b8;cursor:pointer;padding:2px;font-size:12px}.search-clear:hover{color:#64748b}.vehicle-speed-display{background:#f8fafc;border-left:3px solid #3b82f6;border-radius:0 6px 6px 0;padding:8px 10px;margin:8px 0}.speed-number{display:flex;align-items:baseline;gap:4px;font-weight:700}.speed-number i{font-size:14px}.speed-val{font-size:24px;line-height:1}.speed-unit{font-size:11px;color:#94a3b8;font-weight:500}.speed-bar-wrapper{height:4px;background:#e2e8f0;border-radius:2px;margin-top:6px;overflow:hidden}.speed-bar{height:100%;border-radius:2px;transition:width .5s ease}.speed-tooltip-default{background:rgba(30,41,59,.85)!important;color:#fff!important;border:none!important;border-radius:6px!important;padding:2px 8px!important;font-size:11px!important;font-weight:600!important;box-shadow:0 2px 6px #00000026!important;white-space:nowrap!important}.speed-tooltip-default:before{border-top-color:#1e293bd9!important}.speed-tooltip-active{background:rgba(22,163,74,.92)!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:4px 10px!important;font-size:13px!important;font-weight:700!important;box-shadow:0 2px 8px #0003!important;white-space:nowrap!important}.speed-tooltip-active:before{border-top-color:#16a34aeb!important}.trips-sidebar{background:white;border-radius:12px;padding:20px;overflow-y:auto}.trips-sidebar h3{margin-bottom:20px;color:#1f2937;font-size:18px}.trips-list{display:flex;flex-direction:column;gap:10px}.trip-item{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:15px;cursor:pointer;transition:all .3s ease;position:relative}.trip-item:hover{border-color:#3b82f6;background:#eff6ff}.trip-item.selected{border-color:#3b82f6;background:#eff6ff;box-shadow:0 0 0 3px #3b82f61a}.trip-item.selected.tracking{border-color:#16a34a;background:#f0fdf4;box-shadow:0 0 0 3px #16a34a26}.tracking-badge{display:inline-flex;align-items:center;gap:6px;background:#16a34a;color:#fff;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:3px 10px;border-radius:20px;margin-bottom:8px}.tracking-dot{width:7px;height:7px;border-radius:50%;background:#fff;animation:pulse-tracking 1.5s infinite}@keyframes pulse-tracking{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}}.trip-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.trip-header h4{font-size:14px;color:#1f2937;margin:0}.trip-status{font-size:12px;padding:2px 8px;border-radius:12px;background:#dbeafe;color:#1d4ed8}.trip-status.live{background:#dcfce7;color:#166534}.trip-status.stale{background:#fef3c7;color:#92400e}.trip-route{display:flex;align-items:center;gap:8px;color:#4b5563;font-size:13px;margin-bottom:10px}.trip-route i{color:#3b82f6}.trip-details{display:flex;gap:15px;margin-bottom:10px}.detail{display:flex;align-items:center;gap:5px;font-size:12px;color:#6b7280}.live-indicator{display:flex;align-items:center;gap:8px;font-size:12px;color:#10b981}.pulse{width:8px;height:8px;background:#10b981;border-radius:50%;animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(.8);opacity:.7}50%{transform:scale(1.2);opacity:1}to{transform:scale(.8);opacity:.7}}.map-container{position:relative;background:white;border-radius:12px;overflow:hidden}.map{width:100%;height:100%;min-height:500px}.tracking-mode-indicator{position:absolute;top:14px;left:14px;z-index:1000;display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.95);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 14px;border-radius:24px;box-shadow:0 2px 12px #0000001f;font-size:13px;color:#1e293b}.tracking-mode-dot{width:10px;height:10px;border-radius:50%;background:#16a34a;animation:pulse-tracking 1.5s infinite}.tracking-speed{margin-left:4px;padding-left:10px;border-left:1px solid #e2e8f0;font-weight:700;color:#16a34a;font-size:14px}.tracking-stop-btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#fee2e2;border:none;border-radius:50%;color:#dc2626;cursor:pointer;font-size:12px;transition:all .2s;margin-left:2px}.tracking-stop-btn:hover{background:#fca5a5}.speed-tooltip{background:rgba(22,163,74,.92)!important;color:#fff!important;border:none!important;border-radius:8px!important;padding:4px 10px!important;font-size:13px!important;font-weight:700!important;box-shadow:0 2px 8px #0003!important;white-space:nowrap!important}.speed-tooltip:before{border-top-color:#16a34aeb!important}@keyframes active-pulse{0%,to{box-shadow:0 0 #16a34a66}50%{box-shadow:0 0 0 12px #16a34a00}}.live-info-card{position:absolute;top:20px;right:20px;background:white;border-radius:12px;padding:20px;box-shadow:0 4px 20px #0000001a;width:300px;z-index:1000}.info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.info-header h4{margin:0;color:#1f2937;font-size:16px}.status{font-size:12px;padding:4px 10px;border-radius:12px;font-weight:700}.status.live{background:#dcfce7;color:#166534}.status.stale{background:#fef3c7;color:#92400e}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;margin-bottom:20px}.info-item label{display:block;font-size:12px;color:#6b7280;margin-bottom:4px}.info-item .value{font-size:16px;font-weight:600;color:#1f2937}.info-item .speed-value{font-size:20px;color:#16a34a}.coordinates{font-family:Courier New,monospace;font-size:14px!important;background:#f3f4f6;padding:4px 8px;border-radius:4px;word-break:break-all}.location-actions{display:flex;gap:10px}.btn-secondary.btn-danger{background:#fef2f2;color:#dc2626;border-color:#fca5a5}.btn-secondary.btn-danger:hover{background:#fee2e2}.driver-card{position:absolute;bottom:20px;left:20px;background:white;border-radius:12px;padding:15px;box-shadow:0 4px 20px #0000001a;width:250px}.driver-card h4{margin:0 0 15px;color:#1f2937;font-size:14px}.info-row{display:flex;justify-content:space-between;margin-bottom:8px;font-size:13px}.info-row span{color:#6b7280}.info-row strong{color:#1f2937;font-weight:600}.history-sidebar{background:white;border-radius:12px;padding:20px;overflow-y:auto}.history-sidebar h3{margin-bottom:20px;color:#1f2937;font-size:18px}.history-list{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.history-item{background:#f9fafb;border-radius:8px;padding:12px;font-size:12px;cursor:pointer;transition:all .2s;border:1px solid transparent}.history-item:hover{background:#eff6ff;border-color:#93c5fd}.history-item.active{background:#f0fdf4;border-color:#86efac}.history-time{display:flex;align-items:center;gap:6px;color:#6b7280;margin-bottom:5px}.history-coordinates{font-family:Courier New,monospace;color:#1f2937;margin-bottom:5px}.history-speed{display:flex;align-items:center;gap:6px;color:#3b82f6}.history-stats{background:#f0f9ff;border-radius:10px;padding:20px}.history-stats h4{margin:0 0 15px;color:#0369a1;font-size:16px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.stat{text-align:center}.stat-value{font-size:24px;font-weight:700;color:#1f2937;margin-bottom:4px}.stat-label{font-size:11px;color:#6b7280;text-transform:uppercase;letter-spacing:.5px}.controls-toolbar{display:flex;justify-content:space-between;align-items:center;background:white;border-radius:12px;padding:15px 20px;margin-top:20px}.controls-left,.controls-right{display:flex;gap:10px}.controls-center{display:flex;align-items:center;gap:10px}.btn-control{padding:8px 16px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:14px;transition:all .3s ease}.btn-control:hover{background:#e5e7eb;border-color:#9ca3af}.btn-control-active{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.btn-control-active:hover{background:#fee2e2}.status-indicator{width:10px;height:10px;border-radius:50%}.status-indicator.online{background:#10b981;animation:pulse 2s infinite}.status-indicator.offline{background:#6b7280}.connection-status{display:flex;align-items:center;gap:8px;font-size:14px;color:#6b7280}.loading-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;color:#6b7280;text-align:center}.loading-state i,.empty-state i{font-size:48px;margin-bottom:15px;color:#3b82f6;opacity:.6}.empty-state h4{margin:0 0 8px;color:#1f2937;font-size:18px}.empty-state>p{margin:0 0 16px;font-size:14px;color:#64748b}.empty-steps{background:#f0f9ff;border-radius:12px;padding:16px;margin-bottom:20px;text-align:left;width:100%}.empty-steps p{margin:8px 0;font-size:13px;color:#1e40af}.btn-create-trip{display:flex;align-items:center;gap:8px;padding:12px 20px;background:linear-gradient(135deg,#3b82f6 0%,#8b5cf6 100%);color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.btn-create-trip:hover{transform:translateY(-2px);box-shadow:0 4px 12px #3b82f666}.error-state{display:flex;align-items:center;gap:10px;padding:15px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626}.vehicle-marker{background:transparent;border:none}.map-popup{padding:10px}.map-popup h4{margin:0 0 10px;color:#1f2937}.map-popup p{margin:5px 0;font-size:12px;color:#4b5563}@media (max-width: 1024px){.dashboard-layout{grid-template-columns:1fr;grid-template-rows:auto 450px}.dashboard-layout.no-sidebar{grid-template-rows:1fr}.trips-sidebar{max-height:280px}.hide-mobile{display:none}}@media (max-width: 768px){.gps-dashboard{padding:10px}.gps-quick-stats{gap:8px}.gps-stat-chip{font-size:11px;padding:4px 10px}.live-info-card{top:auto;bottom:10px;right:10px;left:10px;width:auto}.tracking-mode-indicator{font-size:11px;padding:6px 10px}.page-header{flex-wrap:wrap;gap:10px}.header-actions{flex-wrap:wrap}}
