*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100vw;height:100vh;overflow:hidden}.login-page{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center;background-repeat:no-repeat;position:relative}.login-page:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:#00000080}.login-container{position:relative;z-index:1;background:#fff;padding:3rem 2.5rem;border-radius:12px;box-shadow:0 10px 40px #0000004d;width:100%;max-width:400px}.login-logo{display:block;max-width:200px;margin:0 auto 2rem}.login-form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.9rem;font-weight:500;color:#333}.form-group input{padding:.75rem 1rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#4caf50}.login-button{padding:.875rem;background:#4caf50;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s;margin-top:.5rem}.login-button:hover{background:#45a049}.login-button:disabled{background:#ccc;cursor:not-allowed}.error-message{background:#ffebee;color:#c62828;padding:.75rem;border-radius:6px;font-size:.9rem;text-align:center}.app-layout{width:100vw;height:100vh;display:flex;position:relative;overflow:hidden}.app-content{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.app-main{flex:1;display:flex;overflow:hidden;position:relative}.topbar{display:flex;align-items:center;gap:.15rem;height:40px;min-height:40px;background:#0d1117;border-bottom:1px solid #1f2937;padding:0 1rem;flex-shrink:0;z-index:50}.topbar-brand{display:flex;align-items:center;gap:.4rem;padding-right:.5rem}.topbar-brand-logo{height:22px;width:auto;object-fit:contain;display:block;background:#f8fafc;border-radius:5px;padding:2px 7px}.topbar-sep{width:1px;height:18px;background:#1f2937;margin:0 .6rem;flex-shrink:0}.topbar-metric{display:flex;align-items:center;gap:.3rem;padding:0 .5rem;white-space:nowrap}.topbar-metric-icon{color:#6b7280;flex-shrink:0}.topbar-metric-dot{flex-shrink:0}.topbar-metric-dot--online{color:#2ecc71}.topbar-metric-dot--stopped{color:#f39c12}.topbar-metric-dot--offline{color:#e74c3c}.topbar-metric-label{font-size:.78rem;color:#6b7280}.topbar-metric-value{font-size:.82rem;font-weight:700;color:#e5e7eb}.topbar-metric-value--online{color:#2ecc71}.topbar-metric-value--stopped{color:#f39c12}.topbar-metric-value--offline{color:#e74c3c}.topbar-spacer{flex:1}.topbar-refresh{display:flex;align-items:center;gap:.35rem;padding:.3rem .65rem;background:none;border:1px solid #1f2937;border-radius:6px;color:#9ca3af;font-size:.78rem;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.topbar-refresh:hover{background:#1f2937;color:#f9fafb;border-color:#374151}.topbar-refresh--spinning svg{animation:spin 1s linear infinite}.map-page,.main-content{flex:1;display:flex;overflow:hidden;position:relative}.map-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.map-container{flex:1;position:relative;overflow:hidden}.detail-panel{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);z-index:1000;background:#1a2332;color:#ecf0f1;border-radius:12px;box-shadow:0 8px 32px #00000080,0 0 0 1px #2c3e50;min-width:560px;max-width:90vw;animation:slideUpCard .25s ease}@keyframes slideUpCard{0%{transform:translate(-50%) translateY(20px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.detail-close{position:absolute;top:.5rem;right:.75rem;background:none;border:none;color:#7f8c8d;cursor:pointer;font-size:.9rem;padding:.25rem .4rem;border-radius:4px;z-index:1;transition:color .15s,background .15s}.detail-close:hover{color:#ecf0f1;background:#2c3e50}.dp-grid{display:grid;grid-template-columns:55px 55px repeat(4,1fr);border-radius:12px;overflow:hidden;gap:1px;background:#2c3e50}.dp-cell{background:#1a2332;display:flex;align-items:center;justify-content:center;padding:.6rem 1rem;min-height:70px}.dp-icon-cell{display:flex;flex-direction:column;align-items:center;gap:.4rem}.dp-vehicle-icon{width:52px;height:52px;color:#4caf50}.dp-status-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.dp-status-dot--online{background:#2ecc71;box-shadow:0 0 6px #2ecc71}.dp-status-dot--offline{background:#e74c3c}.dp-status-dot--unknown{background:#f39c12}.dp-name-cell{display:flex;flex-direction:column;gap:.25rem;padding:0 .25rem;width:100%}.dp-vehicle-name{font-size:1rem;font-weight:700;color:#ecf0f1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dp-address{font-size:.78rem;color:#95a5a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dp-address--empty{font-style:italic;color:#566573}.dp-coordinates{font-size:.72rem;color:#7f8c8d;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.dp-last-update{font-size:.72rem;color:#566573}.dp-metric{display:flex;align-items:center;gap:.75rem;width:100%}.dp-metric--centered{justify-content:center}.dp-metric-icon{width:36px;height:36px;color:#566573;flex-shrink:0}.dp-metric-value{display:flex;align-items:baseline;gap:.3rem}.dp-big-value{font-size:1.6rem;font-weight:700;color:#bdc3c7;line-height:1}.dp-big-value--active{color:#4caf50}.dp-big-value--warn{color:#f39c12}.dp-big-value--danger{color:#e74c3c}.dp-unit{font-size:.8rem;color:#7f8c8d;font-weight:500}.sidebar2{width:260px;min-width:260px;background:#111827;color:#ecf0f1;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid #1f2937;flex-shrink:0;position:relative;transition:width .25s ease,min-width .25s ease;z-index:100}.sidebar2--collapsed{width:64px;min-width:64px}.sidebar2-logo{display:flex;align-items:center;justify-content:center;height:64px;min-height:64px;padding:0 1rem;border-bottom:1px solid #1f2937;flex-shrink:0;background:#f8fafc}.sidebar2-logo-full{height:36px;width:auto;display:block;object-fit:contain}.sidebar2-logo-icon-only{width:36px;height:36px;background-image:url(/logo.png);background-size:184px 36px;background-position:left center;background-repeat:no-repeat;display:block;flex-shrink:0}.sidebar2-nav{display:flex;flex-direction:column;padding:.5rem 0;border-bottom:1px solid #1f2937;flex-shrink:0}.sidebar2-nav-item{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem;background:none;border:none;color:#9ca3af;font-size:.875rem;font-weight:500;cursor:pointer;border-radius:8px;margin:2px 8px;transition:background .15s,color .15s;text-align:left;white-space:nowrap;overflow:hidden}.sidebar2-nav-item:hover{background:#1f2937;color:#f9fafb}.sidebar2-nav-item--active{background:#4f46e5;color:#fff}.sidebar2-nav-item--active:hover{background:#4338ca}.sidebar2--collapsed .sidebar2-nav-item{justify-content:center;padding:.7rem;margin:2px 8px;border-radius:12px}.sidebar2-sep{height:1px;background:#1f2937;margin:0;flex-shrink:0}.sidebar2-stats{display:flex;gap:.5rem;padding:.6rem 1rem;flex-shrink:0;border-bottom:1px solid #1f2937}.sidebar2-stat{font-size:.75rem;color:#6b7280}.sidebar2-stat--online{color:#2ecc71;font-weight:600}.sidebar2-stat--offline{color:#e74c3c;font-weight:600}.sidebar2-stats-mini{display:flex;flex-direction:column;align-items:center;gap:4px;padding:.5rem 0;border-bottom:1px solid #1f2937;flex-shrink:0;font-size:.7rem;font-weight:700}.sidebar2-stats-mini .sidebar2-stat--online{color:#2ecc71}.sidebar2-stats-mini .sidebar2-stat--offline{color:#e74c3c}.sidebar2-list{flex:1;overflow-y:auto;padding:.25rem 0}.sidebar2-list::-webkit-scrollbar{width:3px}.sidebar2-list::-webkit-scrollbar-track{background:transparent}.sidebar2-list::-webkit-scrollbar-thumb{background:#374151;border-radius:4px}.sidebar-device{padding:.65rem 1rem;cursor:pointer;border-left:3px solid transparent;transition:background .15s,border-color .15s}.sidebar-device:hover{background:#1f2937}.sidebar-device--selected{background:#1f2937;border-left-color:#4f46e5}.sidebar-device-header{display:flex;align-items:center;gap:.55rem;margin-bottom:.2rem}.sidebar-device-name{font-size:.85rem;font-weight:500;color:#e5e7eb;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-device-moving{font-size:.55rem;color:#2ecc71}.sidebar-device-meta{display:flex;justify-content:space-between;font-size:.72rem;color:#6b7280;padding-left:1.4rem}.sidebar-device-speed--moving{color:#2ecc71;font-weight:600}.sidebar-device-detail{display:flex;justify-content:space-between;align-items:center;margin-top:.3rem;padding:.3rem .5rem;background:#4f46e51a;border-radius:5px;font-size:.7rem;color:#9ca3af;font-family:monospace}.sidebar-device-detail-speed{color:#2ecc71;font-weight:700;font-family:inherit;font-size:.75rem}.sidebar-device--mini{display:flex;align-items:center;justify-content:center;gap:3px;padding:.5rem;cursor:pointer;border-left:3px solid transparent;transition:background .15s,border-color .15s}.sidebar-device--mini:hover{background:#1f2937}.sidebar-device--mini.sidebar-device--selected{border-left-color:#4f46e5;background:#1f2937}.sidebar-empty{padding:1.5rem 1rem;text-align:center;color:#6b7280;font-size:.85rem}.sidebar2-footer{display:flex;align-items:center;border-top:1px solid #1f2937;flex-shrink:0;padding:.5rem;gap:.25rem}.sidebar2-profile-btn{display:flex;align-items:center;gap:.65rem;flex:1;min-width:0;padding:.5rem;background:none;border:none;border-radius:10px;cursor:pointer;transition:background .15s;text-align:left;overflow:hidden}.sidebar2-profile-btn:hover{background:#1f2937}.sidebar2-avatar{width:34px;height:34px;border-radius:50%;background:#4f46e5;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.sidebar2-avatar img{width:100%;height:100%;object-fit:cover}.sidebar2-avatar span{color:#fff;font-size:.85rem;font-weight:700}.sidebar2-profile-info{display:flex;flex-direction:column;min-width:0;flex:1}.sidebar2-profile-name{color:#d1d5db;font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar2-profile-role{color:#6b7280;font-size:.7rem}.sidebar2-logout-btn{padding:.5rem;background:none;border:none;color:#6b7280;cursor:pointer;border-radius:8px;display:flex;align-items:center;transition:background .15s,color .15s;flex-shrink:0}.sidebar2-logout-btn:hover{background:#e74c3c1f;color:#e74c3c}.sidebar2-toggle{position:absolute;left:260px;top:50%;transform:translate(-50%,-50%);width:28px;height:28px;background:#1f2937;border:1px solid #374151;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#9ca3af;transition:left .25s ease,background .15s,color .15s;z-index:1000;box-shadow:0 2px 8px #00000080}.sidebar2-toggle--collapsed{left:64px}.sidebar2-toggle:hover{background:#374151;color:#f9fafb}.profile-page{flex:1;display:flex;flex-direction:column;background:#0f1923;color:#ecf0f1;overflow:hidden}.profile-layout{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1.5rem;overflow-y:auto}.profile-card{background:#1a2332;border:1px solid #2c3e50;border-radius:14px;padding:2rem;width:100%;max-width:640px}.profile-card-title{font-size:1.2rem;font-weight:700;color:#ecf0f1;margin-bottom:.2rem}.profile-card-subtitle{font-size:.85rem;color:#7f8c8d;margin-bottom:1.5rem}.profile-tabs{display:flex;gap:0;border-bottom:1px solid #2c3e50;margin-bottom:1.75rem}.profile-tab-btn{display:flex;align-items:center;gap:.45rem;padding:.65rem 1.1rem;background:none;border:none;border-bottom:2px solid transparent;color:#7f8c8d;font-size:.87rem;font-weight:500;cursor:pointer;transition:color .15s,border-color .15s;margin-bottom:-1px}.profile-tab-btn:hover{color:#bdc3c7}.profile-tab-btn--active{color:#3498db;border-bottom-color:#3498db}.profile-tab{display:flex;flex-direction:column;gap:1.25rem}.profile-avatar-row{display:flex;align-items:center;gap:1rem;padding:1rem;background:#243040;border-radius:10px;margin-bottom:.25rem}.profile-avatar{width:56px;height:56px;border-radius:50%;background:#3498db;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.profile-avatar-img{width:100%;height:100%;object-fit:cover}.profile-avatar-initial{color:#fff;font-size:1.4rem;font-weight:700}.profile-avatar-label{font-size:.9rem;font-weight:600;color:#ecf0f1;margin-bottom:.2rem}.profile-avatar-hint{font-size:.78rem;color:#7f8c8d}.profile-field{display:flex;flex-direction:column;gap:.4rem}.profile-field label{font-size:.82rem;font-weight:600;color:#bdc3c7}.profile-field input,.profile-field select{background:#243040;border:1px solid #2c3e50;border-radius:8px;color:#ecf0f1;padding:.65rem .9rem;font-size:.9rem;outline:none;transition:border-color .15s}.profile-field input:focus,.profile-field select:focus{border-color:#3498db}.profile-field input:disabled{color:#566573;cursor:not-allowed}.profile-field-hint{font-size:.76rem;color:#566573}.profile-pwd-wrap{position:relative}.profile-pwd-wrap input{width:100%;box-sizing:border-box;padding-right:2.5rem}.profile-pwd-eye{position:absolute;right:.7rem;top:50%;transform:translateY(-50%);background:none;border:none;color:#566573;cursor:pointer;display:flex;align-items:center;padding:0}.profile-pwd-eye:hover{color:#bdc3c7}.profile-token-wrap{display:flex;gap:.5rem;align-items:center}.profile-token-input{flex:1;font-family:monospace;font-size:.82rem;letter-spacing:.02em;color:#2c3e50;cursor:text;-webkit-user-select:all;user-select:all}.profile-token-copy{display:flex;align-items:center;gap:.35rem;padding:.55rem 1rem;background:#4f46e5;color:#fff;border:none;border-radius:7px;font-size:.82rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.profile-token-copy:hover{background:#4338ca}.profile-token-copy:disabled{opacity:.5;cursor:not-allowed}.profile-token-copy--done{background:#27ae60}.profile-token-copy--done:hover{background:#219a52}.profile-actions{padding-top:.5rem}.profile-save-btn{display:flex;align-items:center;gap:.4rem;padding:.65rem 1.4rem;background:#3498db;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.profile-save-btn:hover{background:#2980b9}.profile-save-btn:disabled{opacity:.6;cursor:not-allowed}.admin-page{flex:1;display:flex;flex-direction:column;background:#121c27;color:#ecf0f1;padding:1rem;gap:.9rem;overflow-y:auto}.admin-page--geofences{overflow:hidden}.admin-hero{border:1px solid #2c3e50;background:#1a2332;border-radius:12px;padding:1rem 1.1rem}.admin-hero h1{margin:0;display:inline-flex;align-items:center;gap:.5rem;font-size:1.2rem}.admin-hero-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap}.admin-hero p{margin:.5rem 0 0;color:#9fb0c3;font-size:.9rem}.admin-sections{margin-top:.9rem;display:flex;flex-wrap:wrap;gap:.45rem}.admin-section-btn{display:inline-flex;align-items:center;gap:.35rem;border:1px solid #2c3e50;background:#121c27;color:#c6d3e0;border-radius:8px;padding:.42rem .7rem;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.admin-section-btn:hover{border-color:#3b82f6;color:#ecf0f1}.admin-section-btn.is-active{background:#3b82f62b;border-color:#3b82f6;color:#dbeafe}.admin-toolbar{border:1px solid #2c3e50;background:#1a2332;border-radius:12px;padding:.8rem;display:flex;gap:.7rem;flex-wrap:wrap;align-items:end}.admin-filter-field{display:flex;flex-direction:column;gap:.3rem;min-width:180px}.admin-filter-field--search{flex:1;min-width:260px}.admin-filter-field label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#8da2b5}.admin-filter-field input,.admin-filter-field select{background:#121c27;border:1px solid #2c3e50;border-radius:8px;color:#ecf0f1;padding:.55rem .7rem;outline:none}.admin-filter-field input:focus,.admin-filter-field select:focus{border-color:#3b82f6}.admin-filter-meta{display:flex;align-items:center;gap:.9rem;color:#aebfd1;font-size:.82rem;border:1px solid #2c3e50;background:#121c27;border-radius:8px;padding:.65rem .8rem;min-height:62px}.admin-filter-meta strong{color:#e3edf7}.admin-table-wrap{border:1px solid #2c3e50;background:#1a2332;border-radius:12px;overflow:auto}.admin-table{width:100%;border-collapse:collapse;min-width:840px}.admin-table th,.admin-table td{border-bottom:1px solid #2c3e50;padding:.62rem .65rem;text-align:left;font-size:.84rem}.admin-table th{color:#9fb0c3;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem}.admin-table tbody tr:hover{background:#3b82f60f}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table-hint{color:#c9d5e2;font-size:.8rem}.admin-driver-summary{display:flex;align-items:center;gap:.7rem;min-width:0}.admin-driver-avatar{width:44px;height:44px;border-radius:12px;overflow:hidden;border:1px solid #2c3e50;background:#121c27;color:#7f93a8;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.admin-driver-avatar img{width:100%;height:100%;object-fit:cover}.admin-driver-summary__text{display:flex;flex-direction:column;gap:.15rem;min-width:0}.admin-driver-summary__text strong,.admin-driver-summary__text span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-driver-summary__text strong{color:#e7eef7}.admin-driver-summary__text span{color:#8da2b5;font-size:.76rem}.admin-row-actions{display:inline-flex;gap:.4rem;flex-wrap:wrap}.admin-geofences-layout{display:flex;flex-direction:column;gap:1rem;flex:1;min-height:0}.admin-geofences-list{border:1px solid #2c3e50;background:#1a2332;border-radius:12px;padding:.8rem;display:flex;flex-direction:column;gap:.65rem;max-height:29rem;overflow:auto;flex-shrink:0}.admin-geofence-card{width:100%;text-align:left;border:1px solid #264160;background:#112039;color:#d9e7f7;border-radius:12px;padding:.75rem .85rem;display:flex;flex-direction:column;gap:.55rem;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.admin-geofence-card:hover{border-color:#3d7fe5;background:#13284a;transform:translateY(-1px)}.admin-geofence-card--active{border-color:#4d90ff;background:#153053;box-shadow:0 0 0 1px #4d90ff inset}.admin-geofence-card__main{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.admin-geofence-card__main strong{display:block;font-size:.96rem;line-height:1.25}.admin-geofence-card__main span{font-size:.78rem;color:#8da2b5}.admin-geofence-card__type{flex-shrink:0;color:#9fcbff;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.admin-geofence-card__meta{font-size:.82rem;color:#aebfd1}.admin-geofences-map{position:relative;border:1px solid #2c3e50;background:#1a2332;border-radius:12px;overflow:hidden;min-height:480px;flex:1}.admin-geofences-map__badge{position:absolute;top:.85rem;left:4rem;z-index:500;padding:.48rem .72rem;border-radius:999px;background:#09121fc7;color:#e5edf7;font-size:.76rem;line-height:1.2;box-shadow:0 10px 26px #09121f38;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.admin-geofences-map .leaflet-container{height:100%}.admin-geofences-map .leaflet-draw-toolbar a,.admin-geofences-map .leaflet-control-zoom a{width:30px;height:30px;line-height:30px}.admin-geofences-map .leaflet-draw-toolbar .leaflet-draw-draw-polyline,.admin-geofences-map .leaflet-draw-toolbar .leaflet-draw-draw-polygon,.admin-geofences-map .leaflet-draw-toolbar .leaflet-draw-draw-circle,.admin-geofences-map .leaflet-draw-toolbar .leaflet-draw-edit-edit,.admin-geofences-map .leaflet-draw-toolbar .leaflet-draw-edit-remove{background-size:300px 30px}.admin-pill{display:inline-flex;align-items:center;padding:.16rem .45rem;border-radius:999px;font-size:.72rem;font-weight:700}.admin-pill--admin{background:#3b82f633;color:#8bb7ff}.admin-pill--user{background:#94a3b833;color:#cbd5e1}.admin-pill--active{background:#2ecc7133;color:#2ecc71}.admin-pill--disabled{background:#e74c3c33;color:#fca5a5}.admin-switch-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:.55rem}.admin-switch-item{border:1px solid #2c3e50;background:#121c27;border-radius:8px;padding:.5rem .6rem;display:inline-flex;align-items:center;gap:.5rem;color:#d4deea}.admin-switch-item input{accent-color:#3b82f6}.admin-permissions-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:.7rem}.admin-perm-card{border:1px solid #2c3e50;background:#121c27;border-radius:10px;padding:.6rem}.admin-perm-card h4{margin:0 0 .5rem;font-size:.86rem;color:#e3edf7}.admin-perm-list{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:.3rem}.admin-perm-item{border:1px solid #2c3e50;border-radius:8px;padding:.38rem .45rem;display:grid;grid-template-columns:16px 1fr auto;gap:.45rem;align-items:center;color:#c9d5e2;font-size:.82rem}.admin-perm-item input{accent-color:#3b82f6}.admin-perm-item small{color:#8da2b5;font-size:.72rem}@media(max-width:1100px){.admin-switch-grid,.admin-permissions-grid{grid-template-columns:1fr}}.profile-avatar{position:relative}.profile-avatar-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:#00000073;display:flex;align-items:center;justify-content:center;color:#fff;opacity:0;transition:opacity .15s}.profile-avatar:hover .profile-avatar-overlay{opacity:1}.profile-photo-btn{display:inline-flex;align-items:center;gap:.35rem;margin-top:.5rem;padding:.35rem .8rem;background:#243040;border:1px solid #2c3e50;border-radius:6px;color:#bdc3c7;font-size:.78rem;cursor:pointer;transition:background .15s,border-color .15s}.profile-photo-btn:hover{background:#2c3e50;border-color:#3498db;color:#ecf0f1}.vehicle-photo-row{display:flex;align-items:center;gap:1rem;padding:.85rem;background:#243040;border-radius:10px;margin-bottom:.5rem}.vehicle-photo-preview{width:80px;height:60px;border-radius:8px;background:#1a2332;border:1px solid #2c3e50;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}.vehicle-photo-preview img{width:100%;height:100%;object-fit:contain;object-position:center}.vehicle-photo-actions{display:flex;flex-direction:column;gap:.4rem}.driver-photo-row{display:flex;align-items:center;gap:1rem;padding:.85rem;background:#243040;border-radius:10px;margin-bottom:.9rem}.driver-photo-preview{width:90px;height:90px;border-radius:16px;background:#1a2332;border:1px solid #2c3e50;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;color:#7f93a8}.driver-photo-preview img{width:100%;height:100%;object-fit:cover;object-position:center}.driver-photo-actions{display:flex;flex-direction:column;gap:.4rem}.admin-driver-modal-hint{margin-top:.85rem;color:#8da2b5;font-size:.78rem}.vehicle-photo-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .85rem;background:#1a2332;border:1px solid #2c3e50;border-radius:6px;color:#bdc3c7;font-size:.8rem;cursor:pointer;transition:background .15s,border-color .15s;width:fit-content}.vehicle-photo-btn:hover{background:#2c3e50;border-color:#3498db;color:#ecf0f1}.vehicle-photo-upload-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .8rem;background:#4caf50;border:none;border-radius:6px;color:#fff;font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s;width:fit-content}.vehicle-photo-upload-btn:hover{background:#45a049}.vehicle-photo-upload-btn:disabled{opacity:.6;cursor:not-allowed}.vehicle-photo-hint{font-size:.72rem;color:#566573}.profile-error{background:#e74c3c1f;border:1px solid rgba(231,76,60,.4);color:#e74c3c;border-radius:8px;padding:.65rem 1rem;font-size:.85rem}.profile-success{background:#2ecc711f;border:1px solid rgba(46,204,113,.4);color:#2ecc71;border-radius:8px;padding:.65rem 1rem;font-size:.85rem}.leaflet-container{width:100%;height:100%}.device-popup{font-size:.9rem}.device-popup h3{margin:0 0 .5rem;color:#2c3e50}.device-popup p{margin:.25rem 0;color:#555}.device-popup strong{color:#333}.status-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase}.status-online{background:#d4edda;color:#155724}.status-offline{background:#f8d7da;color:#721c24}.status-unknown{background:#fff3cd;color:#856404}.loading{display:flex;align-items:center;justify-content:center;height:100vh;font-size:1.2rem;color:#666}.spinner{border:4px solid #f3f3f3;border-top:4px solid #4CAF50;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin-right:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.reports-page{flex:1;display:flex;flex-direction:column;background:#121c27;color:#ecf0f1;overflow:hidden}.reports-title{font-size:1.2rem;font-weight:600;margin-left:.75rem;flex:1}.report-back-btn{background:none;border:none;color:#95a5a6;cursor:pointer;display:flex;align-items:center;padding:.4rem;border-radius:6px;transition:background .15s,color .15s;margin-right:.25rem}.report-back-btn:hover{background:#2c3e50;color:#ecf0f1}.reports-body{flex:1;display:flex;overflow:hidden}.reports-filters{width:260px;flex-shrink:0;background:#1a2332;border-right:1px solid #2c3e50;display:flex;flex-direction:column;overflow-y:auto}.report-tabs{display:flex;flex-direction:column;border-bottom:1px solid #2c3e50}.report-tab{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;background:none;border:none;border-left:3px solid transparent;color:#7f8c8d;font-size:.9rem;cursor:pointer;transition:background .15s,color .15s,border-color .15s;text-align:left}.report-tab:hover{background:#243040;color:#ecf0f1}.report-tab--active{background:#243040;color:#ecf0f1;border-left-color:#4caf50}.report-form{display:flex;flex-direction:column;gap:1rem;padding:1.25rem}.report-field{display:flex;flex-direction:column;gap:.4rem}.report-field--full{grid-column:1 / -1}.report-field label{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#7f8c8d}.report-field select,.report-field input[type=datetime-local],.report-field input[type=text],.report-field input[type=date],.report-field input[type=number]{background:#121c27;border:1px solid #2c3e50;border-radius:6px;color:#ecf0f1;padding:.55rem .75rem;font-size:.9rem;width:100%;outline:none;transition:border-color .15s}.report-field select:focus,.report-field input[type=datetime-local]:focus,.report-field input[type=text]:focus,.report-field input[type=date]:focus,.report-field input[type=number]:focus{border-color:#4caf50}.report-chip-row{display:flex;gap:.45rem;margin-top:.45rem}.report-chip{border:1px solid #2c3e50;background:#121c27;color:#95a5a6;border-radius:999px;font-size:.74rem;font-weight:600;padding:.25rem .55rem;cursor:pointer}.report-chip--active{border-color:#4caf50;color:#4caf50;background:#4caf501f}.report-error{background:#e74c3c26;border:1px solid #e74c3c;color:#e74c3c;border-radius:6px;padding:.5rem .75rem;font-size:.85rem}.report-submit{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem;background:#4caf50;color:#fff;border:none;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .2s}.report-submit:hover{background:#45a049}.report-submit:disabled{background:#2c3e50;cursor:not-allowed}.report-actions{display:flex;flex-direction:column;gap:.55rem}.report-submit--secondary{background:#2c3e50}.report-submit--secondary:hover{background:#34495e}.toast-host{position:fixed;top:1rem;right:1rem;z-index:1200;pointer-events:none}.toast{min-width:280px;max-width:420px;display:flex;align-items:center;gap:.65rem;background:#1a2332;border:1px solid #2c3e50;border-left:4px solid #3498db;color:#ecf0f1;border-radius:8px;box-shadow:0 12px 30px #00000059;padding:.7rem .8rem;pointer-events:auto;animation:toast-in .2s ease}.toast--success{border-left-color:#4caf50}.toast--error{border-left-color:#e74c3c}.toast--info{border-left-color:#3498db}.toast-icon{display:flex;align-items:center;color:#95a5a6}.toast-message{flex:1;font-size:.9rem;line-height:1.3}.toast-close{border:none;background:transparent;color:#95a5a6;display:inline-flex;align-items:center;cursor:pointer;padding:.2rem;border-radius:4px}.toast-close:hover{background:#243040;color:#ecf0f1}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.reports-results{flex:1;overflow:auto;padding:1.5rem;display:flex;flex-direction:column}.report-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:#566573;font-size:.95rem;text-align:center;line-height:1.6}.report-empty{color:#566573;text-align:center;padding:3rem;font-size:.95rem}.report-table-wrap{overflow-x:auto;border-radius:10px;border:1px solid #2c3e50}.report-table{width:100%;border-collapse:collapse;font-size:.88rem}.report-table th{background:#1a2332;color:#7f8c8d;font-weight:600;text-transform:uppercase;font-size:.75rem;letter-spacing:.06em;padding:.75rem 1rem;text-align:left;border-bottom:1px solid #2c3e50;white-space:nowrap}.report-table td{padding:.65rem 1rem;border-bottom:1px solid #1e2d3d;color:#bdc3c7;vertical-align:top}.report-table tbody tr:hover td{background:#1a2332}.report-table tfoot td{background:#1a2332;border-top:1px solid #2c3e50;border-bottom:none;color:#ecf0f1;padding:.65rem 1rem}.report-cell-time{color:#ecf0f1;font-weight:500}.report-cell-sub{font-size:.78rem;color:#7f8c8d;margin-top:.2rem}.report-cell-max{color:#e74c3c;font-weight:600}.report-cell-num{color:#566573;text-align:right}.report-map-btn{border:1px solid #2c3e50;background:#121c27;color:#bdc3c7;border-radius:6px;padding:.28rem .52rem;font-size:.75rem;font-weight:600;cursor:pointer}.report-map-btn:hover{border-color:#4caf50;color:#4caf50;background:#4caf501f}.report-row--selected td{background:#1e3a2a!important}.events-live-status{display:inline-flex;align-items:center;gap:.45rem;margin-bottom:.7rem;padding:.45rem .65rem;border:1px solid #5f4a3f;background:#f59e0b1f;border-radius:8px;color:#fbbf24;font-size:.82rem;font-weight:600}.events-live-status--connected{border-color:#2c6e49;background:#10b9811f;color:#34d399}.events-live-dot{width:8px;height:8px;border-radius:999px;background:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.events-live-dot--connected{background:#10b981;box-shadow:0 0 0 3px #10b98133}.events-incidents{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem;margin-bottom:.7rem}.events-incident-card{background:#1a2332;border:1px solid #2c3e50;border-radius:10px;padding:.55rem .75rem;display:flex;flex-direction:column;gap:.2rem}.events-incident-label{font-size:.74rem;color:#7f8c8d;text-transform:uppercase;letter-spacing:.04em}.events-incident-value{font-size:1.08rem;font-weight:700;color:#ecf0f1}.summary-kpis{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:.7rem}.summary-kpi{background:#1a2332;border:1px solid #2c3e50;border-radius:10px;padding:.7rem .85rem;display:flex;flex-direction:column;gap:.22rem;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.summary-kpi:hover{border-color:#3a5b7a;box-shadow:0 10px 24px #050e1a47;transform:translateY(-1px)}.summary-kpi-label{font-size:.72rem;color:#7f8c8d;text-transform:uppercase;letter-spacing:.05em}.summary-kpi-value{font-size:1rem;font-weight:700;color:#ecf0f1}.trip-map-panel{position:fixed;left:260px;right:0;bottom:0;height:45vh;min-height:280px;background:#1a2332;border-top:2px solid #4CAF50;display:flex;flex-direction:column;z-index:200;animation:slideUpPanel .25s ease}@keyframes slideUpPanel{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.trip-map-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#1a2332;border-bottom:1px solid #2c3e50;flex-shrink:0}.trip-map-panel-title{font-size:.85rem;font-weight:600;color:#ecf0f1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.trip-map-close{background:none;border:none;color:#7f8c8d;cursor:pointer;font-size:.9rem;padding:.25rem .5rem;border-radius:4px;margin-left:.75rem;flex-shrink:0;transition:color .15s,background .15s}.trip-map-close:hover{color:#ecf0f1;background:#2c3e50}.trip-map-panel-body{flex:1;overflow:hidden}.trip-map-layout{height:100%;display:grid;grid-template-rows:minmax(160px,2fr) auto minmax(90px,1fr)}.trip-map-canvas{position:relative;overflow:hidden}.trip-replay-controls{display:flex;align-items:center;gap:.55rem;padding:.55rem .8rem;background:#121c27;border-top:1px solid #2c3e50;border-bottom:1px solid #2c3e50}.trip-replay-btn{border:1px solid #2c3e50;background:#1a2332;color:#bdc3c7;border-radius:6px;padding:.35rem .65rem;cursor:pointer;font-size:.78rem;font-weight:600}.trip-replay-btn:hover:not(:disabled){background:#243040;color:#ecf0f1}.trip-replay-btn:disabled{opacity:.45;cursor:not-allowed}.trip-replay-btn--play{background:#4caf5026;border-color:#4caf50;color:#4caf50}.trip-replay-btn--play:hover:not(:disabled){background:#4caf5040;color:#76d275}.trip-replay-slider{flex:1;min-width:120px;accent-color:#4CAF50}.trip-replay-count{font-size:.78rem;color:#7f8c8d;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;min-width:52px;text-align:right}.trip-waypoints{background:#1a2332;display:flex;flex-direction:column;min-height:0}.trip-waypoints-title{padding:.5rem .8rem;font-size:.78rem;color:#7f8c8d;border-bottom:1px solid #2c3e50;text-transform:uppercase;letter-spacing:.05em}.trip-waypoints-empty{color:#566573;font-size:.85rem;padding:1rem .8rem}.trip-waypoints-list{overflow:auto}.trip-waypoint-row{width:100%;border:none;border-bottom:1px solid #1e2d3d;background:transparent;color:#bdc3c7;display:grid;grid-template-columns:56px 1fr 92px 170px;gap:.5rem;align-items:center;padding:.5rem .8rem;text-align:left;font-size:.8rem;cursor:pointer}.trip-waypoint-row:hover{background:#121c27}.trip-waypoint-row--active{background:#4caf501f;border-left:3px solid #4CAF50;padding-left:calc(.8rem - 3px)}.trip-waypoint-index{color:#7f8c8d;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.trip-waypoint-time{color:#ecf0f1}.trip-waypoint-speed{color:#4caf50;font-weight:600}.trip-waypoint-coords{color:#7f8c8d;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}@media(max-width:980px){.summary-kpis{grid-template-columns:repeat(2,minmax(150px,1fr))}.events-incidents{grid-template-columns:1fr}.trip-replay-controls{flex-wrap:wrap}.trip-replay-slider{order:2;width:100%}.trip-waypoint-row{grid-template-columns:52px 1fr 84px}.trip-waypoint-coords{display:none}}@media(max-width:620px){.summary-kpis{grid-template-columns:1fr}}.reports-results--map-open{padding-bottom:calc(45vh + 1.5rem)}.vehicle-details-page{flex:1;overflow:auto;background:#121c27;color:#ecf0f1;padding:1.2rem;display:flex;flex-direction:column;gap:.95rem}.vehicle-details-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem}.vehicle-header-card{background:#1a2332;border:1px solid #2c3e50;border-radius:14px;padding:1rem;position:relative;display:grid;grid-template-columns:220px minmax(200px,1fr) minmax(320px,1.2fr) auto;gap:.95rem;align-items:center;transition:border-color .18s ease,box-shadow .18s ease}.vehicle-header-card:hover{border-color:#3a5b7a;box-shadow:0 12px 26px #050e1a3d}.vehicle-header-photo{width:100%;height:150px;border-radius:12px;overflow:hidden;background:#121c27;border:1px solid #2c3e50}.vehicle-header-photo img{width:100%;height:100%;object-fit:contain;object-position:center}.vehicle-header-photo-empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#566573}.vehicle-header-main h1{margin:0;font-size:2rem;line-height:1.15}.vehicle-header-main p{margin:.35rem 0 0;color:#9fb0c3;font-size:1.25rem}.vehicle-header-main span{display:inline-block;margin-top:.6rem;color:#bdc3c7;font-size:.96rem}.vehicle-header-metrics{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:.6rem}.vehicle-header-metric{border:1px solid #2c3e50;background:#121c27;border-radius:10px;padding:.65rem .75rem;display:flex;flex-direction:column;gap:.25rem;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.vehicle-header-metric:hover{border-color:#3a5b7a;box-shadow:0 10px 24px #050e1a47;transform:translateY(-1px)}.vehicle-header-metric span{color:#7f8c8d;font-size:.76rem;text-transform:uppercase;letter-spacing:.05em}.vehicle-header-metric strong{font-size:1.35rem;color:#ecf0f1}.vehicle-live-chip{position:absolute;top:1rem;right:1rem;border:1px solid #5f4a3f;color:#fbbf24;background:#f59e0b1f;border-radius:999px;font-size:.78rem;font-weight:600;padding:.3rem .65rem}.vehicle-live-chip--online{border-color:#2c6e49;color:#34d399;background:#10b9811f}.vehicle-tabs-card{background:#1a2332;border:1px solid #2c3e50;border-radius:14px;overflow:hidden}.vehicle-tabs-nav{display:flex;gap:.15rem;border-bottom:1px solid #2c3e50;overflow-x:auto}.vehicle-tab-btn{border:none;background:transparent;color:#9fb0c3;padding:.85rem 1rem;display:inline-flex;align-items:center;gap:.45rem;cursor:pointer;font-weight:600;border-bottom:2px solid transparent;white-space:nowrap}.vehicle-tab-btn:hover{background:#24304099;color:#ecf0f1}.vehicle-tab-btn--active{color:#3b82f6;border-bottom-color:#3b82f6}.vehicle-tab-content{padding:1rem}.vehicle-chart-panel{border:1px solid #2c3e50;border-radius:12px;background:#121c27;padding:.8rem;transition:border-color .18s ease,box-shadow .18s ease}.vehicle-chart-panel:hover{border-color:#3a5b7a;box-shadow:0 12px 26px #050e1a3d}.vehicle-chart-panel h3{margin:0 0 .75rem;font-size:1rem;color:#dce7f2}.detail-chart{display:flex;flex-direction:column;gap:.45rem}.detail-chart>svg{width:100%;height:auto;display:block}.detail-chart-grid{stroke:#2c3e50;stroke-width:1;stroke-dasharray:3 3}.detail-chart-axis,.detail-chart-axis-label{fill:#7f8c8d;font-size:11px}.detail-chart-line{fill:none;stroke:#3b82f6;stroke-width:2.4}.detail-chart-point{fill:#3b82f6;stroke:#bcd6ff;stroke-width:1}.detail-chart-legend{display:inline-flex;align-items:center;gap:.4rem;color:#9fb0c3;font-size:.82rem}.detail-bars{display:flex;flex-direction:column;gap:.45rem}.detail-bars-track{height:240px;border:1px solid #2c3e50;background:#0f1722;border-radius:10px;padding:.7rem .65rem .5rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(54px,1fr));align-items:end;gap:.45rem}.detail-bar-col{display:flex;flex-direction:column;align-items:center;gap:.38rem;min-width:0}.detail-bar-bg{width:100%;height:190px;border-radius:8px;background:#1a2535;border:1px solid #2c3e50;display:flex;align-items:flex-end;overflow:hidden}.detail-bar-fill{width:100%;border-radius:7px 7px 0 0;background:linear-gradient(180deg,#8b5cf6,#7c3aed)}.detail-bar-label{color:#95a5a6;font-size:.76rem}.vehicle-panel-stack{display:flex;flex-direction:column;gap:.75rem}.vehicle-panel-stack--personalization{display:grid;grid-template-columns:repeat(2,minmax(320px,1fr));gap:.75rem;align-items:start}.vehicle-form-section{border:1px solid #2c3e50;border-radius:12px;background:#121c27;padding:.85rem .95rem;display:flex;flex-direction:column;gap:.75rem;transition:border-color .18s ease,box-shadow .18s ease}.vehicle-form-section:hover,.vehicle-form-section:focus-within{border-color:#3a5b7a;box-shadow:0 12px 26px #050e1a3d}.vehicle-form-section h3{margin:0;font-size:1.03rem;color:#e3edf7}.vehicle-panel-stack--personalization .vehicle-form-section{height:100%;padding:.8rem .9rem;gap:.65rem}.vehicle-panel-stack--personalization .vehicle-form-section h3{font-size:1rem}.vehicle-form-section--personal-extra{grid-column:1 / -1}.vehicle-form-section--personal-photo .vehicle-inline-controls{margin-top:.05rem}.vehicle-form-hint{margin:-.35rem 0 0;color:#7f8c8d;font-size:.82rem}.vehicle-form-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:.7rem}.vehicle-form-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.55rem}.fleet-alert-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.85rem;align-content:start}.fleet-alert-row{border:1px solid #2c3e50;background:#1a2332;border-radius:12px;padding:.85rem;display:flex;flex-direction:column;gap:.6rem;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.fleet-alert-row:hover{border-color:#3a5b7a;box-shadow:0 8px 20px #050e1a38;transform:translateY(-1px)}.fleet-alert-top{display:flex;align-items:center;justify-content:space-between}.fleet-alert-delete{border:1px solid #394d66;background:#101924;color:#c4d2e0;border-radius:8px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.fleet-alert-delete:hover{border-color:#e74c3c;color:#e74c3c;background:#e74c3c1f}.fleet-alert-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.vehicle-color-grid{display:grid;grid-template-columns:repeat(8,minmax(38px,1fr));gap:.45rem}.vehicle-color-swatch{width:100%;aspect-ratio:1 / 1;border-radius:9px;border:2px solid transparent;cursor:pointer;transition:transform .15s ease,border-color .15s ease}.vehicle-color-swatch:hover{transform:translateY(-1px)}.vehicle-color-swatch--active{border-color:#dbeafe;box-shadow:0 0 0 2px #3b82f673}.vehicle-category-grid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:.55rem}.vehicle-category-card{border:1px solid #2c3e50;background:#1a2332;color:#c9d5e2;border-radius:10px;padding:.72rem;display:flex;align-items:center;justify-content:center;gap:.4rem;cursor:pointer;transition:border-color .15s ease,color .15s ease}.vehicle-category-card:hover{border-color:#3b82f6;color:#f3f8ff}.vehicle-category-card--active{border-color:#3b82f6;color:#dbeafe;background:#3b82f624}.vehicle-category-icon{display:inline-flex;align-items:center}.vehicle-alert-config-list{display:flex;flex-direction:column;gap:.55rem}.vehicle-alert-row{border:1px solid #2c3e50;background:#1a2332;border-radius:10px;padding:.65rem .75rem;display:flex;align-items:center;justify-content:space-between;gap:.8rem}.vehicle-alert-row h4{margin:0;font-size:.94rem;color:#edf3f9}.vehicle-alert-row p{margin:.2rem 0 0;color:#8da2b5;font-size:.82rem}.vehicle-alert-row-controls{display:inline-flex;align-items:center;gap:.4rem}.vehicle-alert-row-controls input[type=number]{width:68px;background:#101924;border:1px solid #2c3e50;color:#ecf0f1;border-radius:8px;padding:.32rem .45rem;font-size:.86rem}.vehicle-alert-row-controls span{color:#9fb0c3;font-size:.82rem}.vehicle-switch{position:relative;width:42px;height:24px;display:inline-flex}.vehicle-switch input{opacity:0;width:0;height:0}.vehicle-switch span{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:#2f3d50;border:1px solid #3a4d66;transition:background .15s}.vehicle-switch span:after{content:"";position:absolute;width:16px;height:16px;top:3px;left:3px;border-radius:999px;background:#f8fafc;transition:transform .15s}.vehicle-switch input:checked+span{background:#3b82f699;border-color:#3b82f6}.vehicle-switch input:checked+span:after{transform:translate(18px)}.vehicle-chip-select{display:flex;gap:.42rem;margin-top:.4rem;flex-wrap:wrap}.vehicle-chip-toggle{border:1px solid #2c3e50;background:#101924;color:#b4c2d1;border-radius:999px;padding:.22rem .58rem;font-size:.77rem;cursor:pointer;transition:border-color .15s,color .15s,background .15s;display:inline-flex;align-items:center;gap:.3rem}.vehicle-chip-toggle:hover:not(:disabled){border-color:#3b82f6;color:#dbeafe}.vehicle-chip-toggle:disabled{opacity:.5;cursor:not-allowed}.vehicle-chip-toggle--active{border-color:#3b82f6;color:#dbeafe;background:#3b82f629}.vehicle-alerts-header{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap}.vehicle-maintenance-picker{background:#101924;border:1px solid #2c3e50;color:#ecf0f1;border-radius:8px;padding:.34rem .56rem;min-width:220px}.vehicle-period-selector{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:wrap}.vehicle-period-selector label{color:#9fb0c3;font-size:.82rem;font-weight:600}.vehicle-period-label{color:#7f8c8d;font-size:.82rem}.vehicle-waypoints-list{display:flex;flex-direction:column;gap:.38rem;max-height:300px;overflow-y:auto}.vehicle-waypoint-item{border:1px solid #2c3e50;background:#1a2332;color:#b9c8d7;border-radius:9px;padding:.45rem .55rem;display:grid;grid-template-columns:52px 1.2fr 100px 1fr;gap:.48rem;align-items:center;text-align:left;font-size:.8rem;cursor:pointer}.vehicle-waypoint-item:hover{border-color:#3b82f6}.vehicle-waypoint-item--active{border-color:#3b82f6;background:#3b82f624;color:#e3eefb}.vehicle-waypoint-index{color:#8da2b5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.vehicle-alerts-list{display:flex;flex-direction:column;gap:.48rem}.vehicle-alert-item{border:1px solid #2c3e50;background:#1a2332;border-radius:10px;padding:.62rem .75rem;display:flex;justify-content:space-between;gap:.75rem}.vehicle-alert-item-main strong{color:#ecf0f1;font-size:.94rem}.vehicle-alert-item-main p{margin:.15rem 0 .2rem;color:#9fb0c3;font-size:.84rem}.vehicle-alert-item-main span{color:#7f8c8d;font-size:.76rem}.vehicle-alert-item-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.45rem;color:#9fb0c3;font-size:.78rem}.vehicle-alert-dismiss{border:1px solid #2c3e50;background:#101924;color:#9fb0c3;border-radius:8px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.vehicle-alert-dismiss:hover{border-color:#ef4444;color:#fca5a5}.vehicle-panel-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:.65rem}.vehicle-panel-grid--form{grid-template-columns:repeat(2,minmax(240px,1fr))}.vehicle-panel-box{border:1px solid #2c3e50;background:#121c27;border-radius:10px;padding:.62rem .75rem;display:inline-flex;align-items:center;gap:.55rem;color:#bdc3c7;font-size:.89rem;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.vehicle-panel-box:hover{border-color:#3a5b7a;box-shadow:0 10px 24px #050e1a40;transform:translateY(-1px)}.vehicle-map-wrap{border:1px solid #2c3e50;border-radius:12px;overflow:hidden;height:360px}.vehicle-map-wrap--tall{height:720px}.vehicle-inline-controls{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}.vehicle-inline-controls input[type=range]{min-width:220px;flex:1;accent-color:#3b82f6}.vehicle-inline-controls input[type=date]{background:#121c27;border:1px solid #2c3e50;color:#ecf0f1;border-radius:6px;padding:.45rem .65rem}.vehicle-pill-active{border-color:#3b82f6!important;color:#3b82f6!important}.vehicle-export-card{border:1px solid #2c3e50;background:#1a2332;border-radius:12px;padding:.85rem 1rem;display:flex;justify-content:space-between;align-items:center;gap:.75rem;transition:border-color .18s ease,box-shadow .18s ease}.vehicle-export-card:hover{border-color:#3a5b7a;box-shadow:0 12px 26px #050e1a3d}.vehicle-export-card h4{margin:0;font-size:.95rem}.vehicle-export-card p{margin:.2rem 0 0;font-size:.82rem;color:#7f8c8d}@media(max-width:1240px){.vehicle-header-card{grid-template-columns:180px 1fr;padding-top:4.2rem}.vehicle-live-chip{right:auto;left:1rem}.vehicle-header-metrics{grid-column:1 / -1}}@media(max-width:900px){.admin-page--geofences{overflow-y:auto}.admin-geofences-layout{flex:initial}.admin-geofences-map{min-height:360px;flex:initial}.admin-geofences-map__badge{left:.75rem;right:.75rem;border-radius:12px}.vehicle-details-page{padding:.75rem}.vehicle-details-actions{gap:.45rem}.vehicle-panel-grid,.vehicle-panel-grid--form{grid-template-columns:1fr}.vehicle-header-card{grid-template-columns:1fr;padding-top:4.3rem}.vehicle-header-photo{width:100%;max-width:360px;justify-self:center}.vehicle-header-metrics{grid-template-columns:1fr}.vehicle-map-wrap{height:300px}.vehicle-map-wrap--tall{height:600px}.vehicle-form-grid,.vehicle-panel-stack--personalization{grid-template-columns:1fr}.vehicle-form-section--personal-extra{grid-column:auto}.fleet-alert-grid{grid-template-columns:1fr}.vehicle-color-grid{grid-template-columns:repeat(4,minmax(42px,1fr))}.vehicle-category-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.vehicle-alert-row{flex-direction:column;align-items:flex-start}.vehicle-maintenance-picker{min-width:180px;width:100%}.vehicle-period-selector,.vehicle-period-selector label,.vehicle-period-label{width:100%}.vehicle-alert-item{flex-direction:column}.vehicle-alert-item-meta{align-items:flex-start;flex-direction:row;justify-content:space-between}.vehicle-waypoint-item{grid-template-columns:46px 1fr}.vehicle-waypoint-item span:nth-child(3),.vehicle-waypoint-item span:nth-child(4){grid-column:2;font-size:.76rem;color:#9fb0c3}.detail-chart>svg{height:220px}.detail-bars-track{grid-template-columns:repeat(auto-fit,minmax(42px,1fr));height:210px}.detail-bar-bg{height:160px}}.vehicles-page{flex:1;display:flex;flex-direction:column;background:#121c27;color:#ecf0f1;overflow:hidden}.vehicles-toolbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:#1a2332;border-bottom:1px solid #2c3e50;flex-shrink:0;flex-wrap:wrap}.vehicles-summary{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.vehicles-summary-item{display:flex;align-items:center;gap:.3rem;font-size:.82rem;color:#7f8c8d}.vehicles-summary-item--danger{color:#e74c3c;font-weight:600}.vehicles-summary-item--warning{color:#f39c12;font-weight:600}.vehicles-search-wrap{display:flex;align-items:center;gap:.5rem;background:#121c27;border:1px solid #2c3e50;border-radius:6px;padding:.4rem .75rem;color:#7f8c8d;flex:1;min-width:200px;max-width:360px}.vehicles-search{background:none;border:none;outline:none;color:#ecf0f1;font-size:.88rem;flex:1}.vehicles-search::placeholder{color:#566573}.vehicles-filters{display:flex;gap:.4rem}.vehicles-filter-btn{padding:.35rem .8rem;border-radius:20px;border:1px solid #2c3e50;background:none;color:#7f8c8d;font-size:.8rem;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.vehicles-filter-btn:hover{background:#2c3e50;color:#ecf0f1}.vehicles-filter-btn--active{color:#ecf0f1;background:#2c3e50}.vehicles-filter-btn--danger.vehicles-filter-btn--active{background:#e74c3c33;border-color:#e74c3c;color:#e74c3c}.vehicles-filter-btn--warning.vehicles-filter-btn--active{background:#f39c1233;border-color:#f39c12;color:#f39c12}.vehicles-filter-btn--ok.vehicles-filter-btn--active{background:#2ecc7133;border-color:#2ecc71;color:#2ecc71}.vehicles-grid{flex:1;overflow-y:auto;padding:1.5rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;align-content:start}.vehicles-grid::-webkit-scrollbar{width:4px}.vehicles-grid::-webkit-scrollbar-track{background:transparent}.vehicles-grid::-webkit-scrollbar-thumb{background:#2c3e50;border-radius:4px}.vehicles-empty{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:#566573;padding:4rem;text-align:center;font-size:.95rem}.vehicle-card{background:#1a2332;border:1px solid #2c3e50;border-radius:12px;padding:1.1rem;display:flex;flex-direction:column;gap:.85rem;position:relative;transition:border-color .15s,box-shadow .15s}.vehicle-card:hover{box-shadow:0 4px 16px #0000004d}.vehicle-card--danger{border-color:#e74c3c80}.vehicle-card--warning{border-color:#f39c1266}.vehicle-card--ok{border-color:#2c3e50}.vehicle-card-badge{position:absolute;top:.75rem;right:2.75rem;display:flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:700;padding:.2rem .55rem;border-radius:20px}.vehicle-card-badge--danger{background:#e74c3c33;color:#e74c3c;border:1px solid rgba(231,76,60,.4)}.vehicle-card-badge--warning{background:#f39c1233;color:#f39c12;border:1px solid rgba(243,156,18,.4)}.vehicle-card-header{display:flex;align-items:flex-start;gap:.85rem}.vehicle-card-icon{width:44px;height:44px;background:#243040;border-radius:10px;border:1.5px solid transparent;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:color .3s,border-color .3s,box-shadow .3s}.vehicle-card-icon--moving{box-shadow:0 0 10px #2ecc7159;animation:pulse-moving 2.5s ease-in-out infinite}.vehicle-card-icon--idle{box-shadow:0 0 8px #f39c124d}.vehicle-card-icon--off{opacity:.7}@keyframes pulse-moving{0%,to{box-shadow:0 0 6px #2ecc714d}50%{box-shadow:0 0 14px #2ecc7199}}.vehicle-card-title{flex:1;min-width:0}.vehicle-card-plate{font-size:1.05rem;font-weight:700;color:#ecf0f1;letter-spacing:.05em}.vehicle-card-model{font-size:.8rem;color:#7f8c8d;margin-top:.15rem}.vehicle-card-device{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:#566573;margin-top:.3rem;flex-wrap:wrap}.vehicle-engine-label{font-size:.72rem;font-weight:500;transition:color .3s}.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot--online{background:#2ecc71;box-shadow:0 0 4px #2ecc71}.status-dot--offline{background:#e74c3c}.status-dot--unknown{background:#f39c12}.vehicle-card-metrics{display:flex;flex-wrap:wrap;gap:.5rem}.vehicle-card-metric{display:flex;align-items:center;gap:.3rem;font-size:.78rem;color:#95a5a6;background:#243040;padding:.25rem .6rem;border-radius:6px}.vehicle-card-metric svg{color:#566573}.vehicle-card-alerts{display:flex;gap:.5rem;flex-wrap:wrap}.alert-icon{position:relative;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:default;transition:transform .1s}.alert-icon:hover{transform:scale(1.1)}.alert-icon--ok{background:#2ecc711a;color:#2ecc71;border:1px solid rgba(46,204,113,.3)}.alert-icon--warning{background:#f39c1226;color:#f39c12;border:1px solid rgba(243,156,18,.4)}.alert-icon--danger{background:#e74c3c26;color:#e74c3c;border:1px solid rgba(231,76,60,.4);animation:pulse-danger 2s infinite}@keyframes pulse-danger{0%,to{box-shadow:0 0 #e74c3c66}50%{box-shadow:0 0 0 4px #e74c3c00}}.alert-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#0d1520;border:1px solid #2c3e50;border-radius:8px;padding:.6rem .8rem;min-width:160px;max-width:220px;z-index:999;pointer-events:none;box-shadow:0 4px 16px #00000080}.alert-tooltip-title{font-size:.82rem;font-weight:700;color:#ecf0f1;margin-bottom:.35rem}.alert-tooltip-line{font-size:.76rem;color:#95a5a6;margin-top:.2rem}.level-badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.72rem;font-weight:600;padding:.15rem .45rem;border-radius:12px;margin-bottom:.25rem}.level-badge--ok{background:#2ecc7133;color:#2ecc71}.level-badge--warning{background:#f39c1233;color:#f39c12}.level-badge--danger{background:#e74c3c33;color:#e74c3c}.vehicle-card-edit{display:flex;align-items:center;justify-content:flex-end;gap:.3rem;width:100%;background:none;border:none;border-top:1px solid #2c3e50;padding-top:.75rem;color:#7f8c8d;font-size:.82rem;cursor:pointer;transition:color .15s}.vehicle-card-edit:hover{color:#4caf50}.vehicle-card-settings-btn{position:absolute;top:.65rem;right:.65rem;display:flex;align-items:center;justify-content:center;width:26px;height:26px;background:none;border:1px solid #2c3e50;border-radius:6px;color:#566573;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.vehicle-card-settings-btn:hover{color:#3498db;border-color:#3498db;background:#3498db14}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;padding:1rem}.modal{background:#1a2332;border:1px solid #2c3e50;border-radius:14px;width:100%;max-width:680px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0009;animation:modalIn .2s ease}@keyframes modalIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid #2c3e50;flex-shrink:0}.modal-title{font-size:1.05rem;font-weight:700;color:#ecf0f1}.modal-close{background:none;border:none;color:#7f8c8d;cursor:pointer;padding:.3rem;border-radius:6px;display:flex;align-items:center;transition:background .15s,color .15s}.modal-close:hover{background:#2c3e50;color:#ecf0f1}.modal-body{flex:1;overflow-y:auto;padding:1.25rem}.modal-body::-webkit-scrollbar{width:4px}.modal-body::-webkit-scrollbar-track{background:transparent}.modal-body::-webkit-scrollbar-thumb{background:#2c3e50;border-radius:4px}.modal-section-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#7f8c8d;margin-bottom:.85rem}.modal-label-required{color:#e74c3c;font-weight:700}.modal-label-optional{color:#566573;font-weight:400;text-transform:none;letter-spacing:0;font-size:.8rem}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}.modal-field{display:flex;flex-direction:column;gap:.3rem}.modal-field--full{grid-column:1 / -1}.modal-field label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#566573}.modal-field input,.modal-field select,.modal-field textarea{background:#121c27;border:1px solid #2c3e50;border-radius:6px;color:#ecf0f1;padding:.5rem .7rem;font-size:.9rem;outline:none;transition:border-color .15s;font-family:inherit;resize:vertical}.modal-field input:focus,.modal-field select:focus,.modal-field textarea:focus{border-color:#4caf50}.modal-alerts{display:flex;flex-direction:column;gap:.6rem}.modal-alert-row{display:grid;grid-template-columns:28px 100px 1fr 1fr 1fr;align-items:center;gap:.65rem;background:#121c27;border:1px solid #2c3e50;border-radius:8px;padding:.65rem .85rem;overflow:hidden}.modal-alert-icon{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-alert-label{font-size:.85rem;font-weight:600;color:#ecf0f1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-field--compact{display:flex;flex-direction:column;gap:.25rem;min-width:0}.modal-field--compact label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#566573;white-space:nowrap}.modal-field--compact input{width:100%;min-width:0;background:#1a2332;border:1px solid #2c3e50;border-radius:6px;color:#ecf0f1;padding:.4rem .6rem;font-size:.85rem;outline:none;font-family:inherit;transition:border-color .15s}.modal-field--compact input:focus{border-color:#4caf50}.modal-field--note{min-width:0}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid #2c3e50;flex-shrink:0}.modal-btn{display:flex;align-items:center;gap:.4rem;padding:.6rem 1.2rem;border-radius:8px;border:none;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.modal-btn--cancel{background:#2c3e50;color:#95a5a6}.modal-btn--cancel:hover{background:#34495e;color:#ecf0f1}.modal-btn--save{background:#4caf50;color:#fff}.modal-btn--save:hover{background:#45a049}.modal-btn--delete{background:#2c3e50;color:#e74c3c;border:1px solid #e74c3c44}.modal-btn--delete:hover{background:#e74c3c22}.modal-btn--delete-confirm{background:#e74c3c;color:#fff;animation:pulse-red .6s ease}.modal-btn--delete-confirm:hover{background:#c0392b}.modal-delete-error{color:#e74c3c;font-size:.82rem;align-self:center}@keyframes pulse-red{0%{box-shadow:0 0 #e74c3c80}70%{box-shadow:0 0 0 8px #e74c3c00}to{box-shadow:0 0 #e74c3c00}}.modal-btn:disabled{opacity:.6;cursor:not-allowed}.dev-badge{margin-left:.5rem;background:#f39c1233;border:1px solid rgba(243,156,18,.5);color:#f39c12;font-size:.65rem;font-weight:800;padding:.1rem .45rem;border-radius:4px;letter-spacing:.08em}.modal-title-badge{margin-left:.75rem;font-size:.65rem;font-weight:600;background:#4caf5033;border:1px solid rgba(76,175,80,.4);color:#4caf50;padding:.1rem .45rem;border-radius:4px;letter-spacing:.06em;vertical-align:middle}.spin{animation:spin .8s linear infinite}.live-map-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:9000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.live-map-modal{width:90vw;height:90vh;background:#1a1d24;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080}.live-map-header{display:flex;align-items:center;gap:1rem;padding:.875rem 1.25rem;background:#13151c;border-bottom:1px solid rgba(255,255,255,.07);flex-shrink:0}.live-map-title{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.live-map-icon{width:36px!important;height:36px!important;flex-shrink:0}.live-map-plate{font-size:1rem;font-weight:700;color:#ecf0f1;letter-spacing:.04em}.live-map-subtitle{font-size:.78rem;color:#7f8c8d;margin-top:1px}.live-map-status{display:flex;align-items:center;gap:.65rem;flex-shrink:0}.live-map-engine-badge{display:flex;align-items:center;gap:.4rem;padding:.3rem .75rem;border-radius:20px;font-size:.78rem;font-weight:600}.live-map-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.live-map-dot--moving{animation:pulse-moving 2.5s ease-in-out infinite}.live-map-meta{display:flex;align-items:center;gap:.3rem;font-size:.75rem;color:#95a5a6;padding:.25rem .6rem;background:#ffffff0d;border-radius:6px}.live-map-close{flex-shrink:0;margin-left:auto}.live-map-container{flex:1;position:relative;overflow:hidden}.live-map-no-position{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1000;background:#14161ed9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;color:#7f8c8d;pointer-events:none}.live-map-no-position p{font-size:1rem;font-weight:600;color:#bdc3c7;margin:0}.live-map-no-position span{font-size:.82rem;color:#7f8c8d}.vehicle-card-metric--speed{font-weight:600}.vehicle-card-icon--clickable{cursor:pointer}.vehicle-card-icon--clickable:hover{transform:scale(1.12);box-shadow:0 0 18px #ffffff26!important}.badge-can{display:inline-flex;align-items:center;font-size:.58rem;font-weight:700;letter-spacing:.06em;padding:1px 5px;border-radius:4px;background:#3498db33;color:#3498db;border:1px solid rgba(52,152,219,.35);margin-left:5px;vertical-align:middle}.live-map-meta--can{display:flex;align-items:center;gap:.3rem}.tracker-model-badge{display:inline-block;font-size:.65rem;font-weight:600;padding:1px 6px;border-radius:4px;background:#9b59b633;color:#9b59b6;border:1px solid rgba(155,89,182,.3);margin-left:.5rem;vertical-align:middle}.header-action-btn{display:flex;align-items:center;gap:.4rem;margin-left:auto;padding:.4rem .9rem;border-radius:8px;border:1px solid rgba(52,152,219,.4);background:#3498db1f;color:#3498db;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s}.header-action-btn:hover{background:#3498db38;border-color:#3498db99}.live-map-body{flex:1;display:flex;overflow:hidden}.live-map-modal--with-io .live-map-container{flex:1}.io-panel{width:260px;flex-shrink:0;background:#13151c;border-left:1px solid rgba(255,255,255,.07);display:flex;flex-direction:column;overflow:hidden}.io-panel--empty{align-items:center;justify-content:center;gap:.5rem;color:#7f8c8d;padding:1.5rem;text-align:center}.io-panel--empty p{font-size:.9rem;font-weight:600;color:#bdc3c7;margin:0}.io-panel--empty span{font-size:.78rem}.io-panel-header{display:flex;align-items:center;gap:.5rem;padding:.65rem .9rem;font-size:.78rem;font-weight:600;color:#9b59b6;background:#9b59b614;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.io-panel-header span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.io-panel-body{flex:1;overflow-y:auto;padding:.5rem 0}.io-category{margin-bottom:.25rem}.io-category-title{font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#566573;padding:.5rem .9rem .25rem}.io-row{display:flex;align-items:center;gap:.5rem;padding:.35rem .9rem;font-size:.78rem;transition:background .15s}.io-row:hover{background:#ffffff0a}.io-row--alert{background:#e74c3c14}.io-row--alert .io-row-value{color:#e74c3c;font-weight:600}.io-row-icon{font-size:.9rem;flex-shrink:0;width:18px;text-align:center}.io-row-label{flex:1;color:#95a5a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.io-row-value{font-weight:600;color:#ecf0f1;white-space:nowrap;flex-shrink:0}.io-settings-btn{display:flex;align-items:center;gap:.35rem;padding:.35rem .75rem;border-radius:6px;border:1px solid rgba(155,89,182,.35);background:#9b59b61a;color:#9b59b6;font-size:.75rem;font-weight:600;cursor:pointer;margin-top:.75rem;transition:background .2s}.io-settings-btn:hover{background:#9b59b633}.io-settings-btn--small{padding:.2rem .4rem;margin:0 0 0 auto}.modal--narrow{max-width:480px}.io-settings-desc{font-size:.8rem;color:#7f8c8d;line-height:1.5;margin-bottom:1rem}.io-settings-section{margin-bottom:1.25rem}.io-toggle-row{display:flex;align-items:center;gap:.6rem;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer}.io-toggle-icon{font-size:.9rem;width:20px;text-align:center;flex-shrink:0}.io-toggle-label{flex:1;font-size:.82rem;color:#bdc3c7}.io-toggle-unit{font-size:.72rem;color:#566573;width:40px;text-align:right;flex-shrink:0}.io-toggle-btn{position:relative;width:36px;height:20px;border-radius:10px;border:none;background:#ffffff1a;cursor:pointer;transition:background .2s;flex-shrink:0}.io-toggle-btn--on{background:#9b59b6}.io-toggle-thumb{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .2s}.io-toggle-btn--on .io-toggle-thumb{transform:translate(16px)}
