@fleetbase/fleetops-engine 0.6.52 → 0.6.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/addon/components/layout/fleet-ops-sidebar/operations-monitor.hbs +201 -0
  2. package/addon/components/layout/fleet-ops-sidebar/operations-monitor.js +589 -0
  3. package/addon/components/layout/fleet-ops-sidebar.hbs +19 -233
  4. package/addon/components/layout/fleet-ops-sidebar.js +287 -394
  5. package/addon/components/maintenance-schedule/form.js +1 -0
  6. package/addon/components/order/form/payload.js +3 -1
  7. package/addon/controllers/connectivity/devices/index.js +4 -1
  8. package/addon/controllers/maintenance/index.js +100 -0
  9. package/addon/controllers/management/fuel-transactions/index.js +1 -1
  10. package/addon/controllers/management/index.js +88 -0
  11. package/addon/controllers/settings/index.js +142 -0
  12. package/addon/extension.js +21 -0
  13. package/addon/routes/analytics/index.js +3 -0
  14. package/addon/routes/connectivity/devices/index.js +3 -0
  15. package/addon/routes/maintenance/index.js +3 -0
  16. package/addon/routes/maintenance/work-orders/index.js +2 -0
  17. package/addon/routes/settings/index.js +3 -0
  18. package/addon/styles/fleetops-engine.css +1801 -2
  19. package/addon/templates/analytics/index.hbs +14 -0
  20. package/addon/templates/analytics/reports/index.hbs +4 -4
  21. package/addon/templates/maintenance/index.hbs +113 -0
  22. package/addon/templates/management/fuel-transactions/index/details.hbs +1 -1
  23. package/addon/templates/management/index.hbs +109 -73
  24. package/addon/templates/operations/orders/index.hbs +1 -1
  25. package/addon/templates/operations/service-rates/index.hbs +1 -1
  26. package/addon/templates/settings/index.hbs +83 -0
  27. package/addon/templates/settings/routing.hbs +2 -2
  28. package/app/controllers/maintenance/index.js +1 -0
  29. package/app/controllers/management/index.js +1 -0
  30. package/app/controllers/settings/index.js +1 -0
  31. package/app/routes/analytics/index.js +1 -0
  32. package/app/routes/maintenance/index.js +1 -0
  33. package/app/routes/settings/index.js +1 -0
  34. package/app/templates/analytics/index.js +1 -0
  35. package/app/templates/maintenance/index.js +1 -0
  36. package/app/templates/management/index.js +1 -0
  37. package/app/templates/settings/index.js +1 -0
  38. package/composer.json +1 -1
  39. package/extension.json +1 -1
  40. package/package.json +3 -3
  41. package/server/migrations/2026_06_15_000001_normalize_device_attachable_vehicle_morph_types.php +30 -0
  42. package/server/src/Console/Commands/FixInvalidPolymorphicRelationTypeNamespaces.php +1 -0
  43. package/server/src/Http/Controllers/Internal/v1/DeviceController.php +75 -11
  44. package/server/src/Http/Controllers/Internal/v1/HubController.php +300 -0
  45. package/server/src/Http/Controllers/Internal/v1/SearchController.php +506 -0
  46. package/server/src/Http/Controllers/Internal/v1/TelematicController.php +1 -1
  47. package/server/src/Http/Controllers/Internal/v1/VehicleController.php +94 -10
  48. package/server/src/Http/Filter/DeviceFilter.php +74 -0
  49. package/server/src/Http/Filter/DriverFilter.php +6 -0
  50. package/server/src/Http/Filter/VehicleFilter.php +6 -0
  51. package/server/src/Jobs/SyncTelematicDevicesJob.php +82 -24
  52. package/server/src/Models/Device.php +1 -1
  53. package/server/src/Models/Driver.php +1 -1
  54. package/server/src/Providers/FleetOpsServiceProvider.php +10 -0
  55. package/server/src/Support/Telematics/Providers/AfaqyProvider.php +51 -13
  56. package/server/src/routes.php +9 -0
  57. package/server/tests/HubRoutesTest.php +62 -0
  58. package/server/tests/TelematicsHardeningTest.php +94 -3
  59. package/translations/ar-ae.yml +1 -1
  60. package/translations/vi-vn.yaml +1 -1
@@ -268,12 +268,14 @@ body[data-theme='dark'] .fleetops-connectivity-kpi-accent-rose .fleetops-connect
268
268
 
269
269
  .status-badge.long-offline-status-badge > span,
270
270
  .status-badge.long_offline-status-badge > span {
271
- @apply bg-yellow-800 border-yellow-700 text-yellow-100;
271
+ background-color: #854d0e;
272
+ border-color: #a16207;
273
+ color: #fef9c3;
272
274
  }
273
275
 
274
276
  .status-badge.long-offline-status-badge > span svg,
275
277
  .status-badge.long_offline-status-badge > span svg {
276
- @apply text-yellow-300;
278
+ color: #fde047;
277
279
  }
278
280
 
279
281
  .fleetops-provider-connections-panel .table-wrapper table tbody tr td,
@@ -2068,6 +2070,1803 @@ button.fleetops-btn-xxs,
2068
2070
  padding-bottom: 0.2rem !important;
2069
2071
  }
2070
2072
 
2073
+ .next-sidebar-navigator-primary-action.fleet-ops-sidebar-primary-action {
2074
+ --tw-bg-opacity: 1;
2075
+
2076
+ justify-content: flex-start;
2077
+ color: #fff;
2078
+ background-color: rgba(52, 133, 226, var(--tw-bg-opacity, 1));
2079
+ border: 1px solid rgba(52, 133, 226, var(--tw-bg-opacity, 1));
2080
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.12);
2081
+ }
2082
+
2083
+ .next-sidebar-navigator-primary-action.fleet-ops-sidebar-primary-action:hover {
2084
+ background-color: rgba(97, 160, 232, var(--tw-bg-opacity, 1));
2085
+ border-color: rgba(97, 160, 232, var(--tw-bg-opacity, 1));
2086
+ }
2087
+
2088
+ body[data-theme='dark'] .next-sidebar-navigator-primary-action.fleet-ops-sidebar-primary-action {
2089
+ background-color: rgba(52, 133, 226, var(--tw-bg-opacity, 1));
2090
+ border-color: rgba(52, 133, 226, var(--tw-bg-opacity, 1));
2091
+ }
2092
+
2093
+ body[data-theme='dark'] .next-sidebar-navigator-primary-action.fleet-ops-sidebar-primary-action:hover {
2094
+ background-color: rgba(97, 160, 232, var(--tw-bg-opacity, 1));
2095
+ border-color: rgba(97, 160, 232, var(--tw-bg-opacity, 1));
2096
+ }
2097
+
2098
+ .fleet-ops-operations-monitor {
2099
+ position: relative;
2100
+ display: flex;
2101
+ flex-direction: column;
2102
+ flex: 1 1 auto;
2103
+ overflow: hidden;
2104
+ min-height: 0;
2105
+ animation: fleet-ops-operations-monitor-enter 180ms ease-out both;
2106
+ }
2107
+
2108
+ @keyframes fleet-ops-operations-monitor-enter {
2109
+ from {
2110
+ opacity: 0;
2111
+ transform: translateY(4px);
2112
+ }
2113
+
2114
+ to {
2115
+ opacity: 1;
2116
+ transform: translateY(0);
2117
+ }
2118
+ }
2119
+
2120
+ @media (prefers-reduced-motion: reduce) {
2121
+ .fleet-ops-operations-monitor {
2122
+ animation: none;
2123
+ }
2124
+ }
2125
+
2126
+ .fleet-ops-operations-monitor-divider {
2127
+ position: relative;
2128
+ width: auto;
2129
+ height: 1px;
2130
+ margin: 0 0 0.75rem;
2131
+ }
2132
+
2133
+ .fleet-ops-operations-monitor-divider::before {
2134
+ position: absolute;
2135
+ top: 0;
2136
+ left: -1rem;
2137
+ right: -1rem;
2138
+ border-top: 1px solid #e5e7eb;
2139
+ content: '';
2140
+ }
2141
+
2142
+ .fleet-ops-operations-monitor-list {
2143
+ flex: 1 1 auto;
2144
+ height: var(--fleet-ops-operations-monitor-list-height, 14rem);
2145
+ min-height: 8rem;
2146
+ max-height: none;
2147
+ overflow-y: auto;
2148
+ overscroll-behavior: contain;
2149
+ padding-right: 0.125rem;
2150
+ padding-bottom: 0.5rem;
2151
+ }
2152
+
2153
+ .fleet-ops-operations-monitor-row-actions {
2154
+ display: flex;
2155
+ flex: 0 0 2rem;
2156
+ justify-content: flex-end;
2157
+ min-width: 2rem;
2158
+ padding-top: 0.125rem;
2159
+ }
2160
+
2161
+ .fleet-ops-operations-monitor-list .ember-basic-dropdown,
2162
+ .fleet-ops-operations-monitor-list .ember-basic-dropdown-trigger {
2163
+ flex-shrink: 0;
2164
+ }
2165
+
2166
+ .fleet-ops-operations-monitor .fleetops-btn-xxs.btn,
2167
+ .fleet-ops-operations-monitor button.fleetops-btn-xxs.btn,
2168
+ .fleet-ops-operations-monitor button.fleetops-btn-xxs,
2169
+ .fleet-ops-operations-monitor .fleetops-btn-xxs {
2170
+ min-height: 1.25rem !important;
2171
+ padding: 0.15rem 0.75rem !important;
2172
+ font-size: 10px !important;
2173
+ line-height: 0.5 !important;
2174
+ }
2175
+
2176
+ .next-sidebar-navigator:has(.fleet-ops-operations-monitor) {
2177
+ display: flex;
2178
+ flex: 1 1 auto;
2179
+ flex-direction: column;
2180
+ height: 100%;
2181
+ overflow: hidden;
2182
+ min-height: 0;
2183
+ }
2184
+
2185
+ .next-sidebar-navigator:has(.fleet-ops-operations-monitor) > .fleet-ops-operations-monitor {
2186
+ flex: 1 1 auto;
2187
+ min-height: 0;
2188
+ }
2189
+
2190
+ .next-sidebar-navigator:has(.fleet-ops-operations-monitor) > .next-sidebar-navigator-viewport {
2191
+ flex: 0 0 auto;
2192
+ }
2193
+
2194
+ body[data-theme='dark'] .fleet-ops-operations-monitor-divider {
2195
+ border-top-color: transparent;
2196
+ }
2197
+
2198
+ body[data-theme='dark'] .fleet-ops-operations-monitor-divider::before {
2199
+ border-top-color: #374151;
2200
+ }
2201
+
2202
+ .fleet-ops-operations-monitor-dropdown {
2203
+ margin-top: 0;
2204
+ margin-left: 0.5rem;
2205
+ }
2206
+
2207
+ .fleet-ops-operations-monitor-row-depth-1 {
2208
+ padding-left: 1.25rem !important;
2209
+ }
2210
+
2211
+ .fleet-ops-operations-monitor-row-depth-2 {
2212
+ padding-left: 2rem !important;
2213
+ }
2214
+
2215
+ .fleet-ops-operations-monitor-row-depth-3,
2216
+ .fleet-ops-operations-monitor-row-depth-4,
2217
+ .fleet-ops-operations-monitor-row-depth-5 {
2218
+ padding-left: 2.75rem !important;
2219
+ }
2220
+
2221
+ .fleet-ops-operations-monitor-child-row {
2222
+ margin-top: -0.125rem;
2223
+ }
2224
+
2225
+ .fleet-ops-operations-monitor-empty {
2226
+ display: flex;
2227
+ flex-direction: column;
2228
+ align-items: center;
2229
+ justify-content: center;
2230
+ min-height: 7.5rem;
2231
+ padding: 1rem 0.75rem;
2232
+ text-align: center;
2233
+ color: #6b7280;
2234
+ }
2235
+
2236
+ .fleet-ops-operations-monitor-empty-icon {
2237
+ display: flex;
2238
+ align-items: center;
2239
+ justify-content: center;
2240
+ width: 1.75rem;
2241
+ height: 1.75rem;
2242
+ margin-bottom: 0.5rem;
2243
+ color: #6b7280;
2244
+ background-color: #f3f4f6;
2245
+ border: 1px solid #e5e7eb;
2246
+ border-radius: 0.375rem;
2247
+ }
2248
+
2249
+ .fleet-ops-operations-monitor-empty-title {
2250
+ display: block;
2251
+ margin-bottom: 0.25rem;
2252
+ font-size: 0.8125rem;
2253
+ font-weight: 600;
2254
+ line-height: 1.2;
2255
+ color: #374151;
2256
+ }
2257
+
2258
+ .fleet-ops-operations-monitor-empty-description {
2259
+ display: block;
2260
+ max-width: 13rem;
2261
+ margin-bottom: 0.75rem;
2262
+ font-size: 0.75rem;
2263
+ line-height: 1.35;
2264
+ color: #6b7280;
2265
+ }
2266
+
2267
+ .fleet-ops-operations-monitor-empty-action {
2268
+ display: inline-flex;
2269
+ align-items: center;
2270
+ justify-content: center;
2271
+ min-height: 1.5rem;
2272
+ padding: 0.25rem 0.625rem;
2273
+ font-size: 0.75rem;
2274
+ font-weight: 600;
2275
+ line-height: 1;
2276
+ color: #fff;
2277
+ background-color: rgba(52, 133, 226, var(--tw-bg-opacity, 1));
2278
+ border: 1px solid rgba(52, 133, 226, var(--tw-bg-opacity, 1));
2279
+ border-radius: 0.375rem;
2280
+ }
2281
+
2282
+ .fleet-ops-operations-monitor-empty-action:hover {
2283
+ background-color: rgba(97, 160, 232, var(--tw-bg-opacity, 1));
2284
+ border-color: rgba(97, 160, 232, var(--tw-bg-opacity, 1));
2285
+ }
2286
+
2287
+ body[data-theme='dark'] .fleet-ops-operations-monitor-empty {
2288
+ color: #9ca3af;
2289
+ }
2290
+
2291
+ body[data-theme='dark'] .fleet-ops-operations-monitor-empty-icon {
2292
+ color: #d1d5db;
2293
+ background-color: #1f2937;
2294
+ border-color: #374151;
2295
+ }
2296
+
2297
+ body[data-theme='dark'] .fleet-ops-operations-monitor-empty-title {
2298
+ color: #f3f4f6;
2299
+ }
2300
+
2301
+ body[data-theme='dark'] .fleet-ops-operations-monitor-empty-description {
2302
+ color: #9ca3af;
2303
+ }
2304
+
2305
+ .fleet-ops-hub {
2306
+ min-height: 100%;
2307
+ padding: 1.5rem;
2308
+ color: #111827;
2309
+ background: #f9fafb;
2310
+ }
2311
+
2312
+ .fleet-ops-hub-header {
2313
+ position: sticky;
2314
+ top: 0;
2315
+ z-index: 10;
2316
+ display: flex;
2317
+ align-items: flex-start;
2318
+ justify-content: space-between;
2319
+ gap: 1rem;
2320
+ padding: 1rem 1.5rem;
2321
+ margin: -1.5rem -1.5rem 1.25rem;
2322
+ background: #fff;
2323
+ border-bottom: 1px solid #e5e7eb;
2324
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
2325
+ }
2326
+
2327
+ .fleet-ops-hub-title {
2328
+ margin: 0;
2329
+ font-size: 1.25rem;
2330
+ font-weight: 700;
2331
+ line-height: 1.4;
2332
+ color: #111827;
2333
+ }
2334
+
2335
+ .fleet-ops-hub-subtitle {
2336
+ max-width: 48rem;
2337
+ margin: 0.25rem 0 0;
2338
+ font-size: 0.875rem;
2339
+ line-height: 1.45;
2340
+ color: #6b7280;
2341
+ }
2342
+
2343
+ .fleet-ops-hub-header-action {
2344
+ display: inline-flex;
2345
+ align-items: center;
2346
+ gap: 0.5rem;
2347
+ min-height: 2.25rem;
2348
+ padding: 0 0.75rem;
2349
+ font-size: 0.875rem;
2350
+ font-weight: 600;
2351
+ color: #fff;
2352
+ white-space: nowrap;
2353
+ background: rgba(52, 133, 226, 1);
2354
+ border: 1px solid rgba(52, 133, 226, 1);
2355
+ border-radius: 0.375rem;
2356
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.12);
2357
+ }
2358
+
2359
+ .fleet-ops-hub-header-action:hover {
2360
+ color: #fff;
2361
+ background: rgba(97, 160, 232, 1);
2362
+ border-color: rgba(97, 160, 232, 1);
2363
+ }
2364
+
2365
+ .fleet-ops-hub-kpi-grid {
2366
+ display: grid;
2367
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2368
+ gap: 0.75rem;
2369
+ margin-bottom: 1.25rem;
2370
+ }
2371
+
2372
+ .fleet-ops-hub-kpi {
2373
+ position: relative;
2374
+ display: flex;
2375
+ min-height: 7.5rem;
2376
+ padding: 1rem;
2377
+ overflow: hidden;
2378
+ background: #fff;
2379
+ border: 1px solid #e5e7eb;
2380
+ border-radius: 0.375rem;
2381
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
2382
+ transition:
2383
+ transform 0.18s ease,
2384
+ box-shadow 0.18s ease,
2385
+ border-color 0.18s ease;
2386
+ }
2387
+
2388
+ .fleet-ops-hub-kpi:hover {
2389
+ border-color: #bfdbfe;
2390
+ box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
2391
+ transform: translateY(-1px);
2392
+ }
2393
+
2394
+ .fleet-ops-hub-kpi-body {
2395
+ min-width: 0;
2396
+ padding-right: 3.25rem;
2397
+ }
2398
+
2399
+ .fleet-ops-hub-kpi-icon {
2400
+ position: absolute;
2401
+ top: 1rem;
2402
+ right: 1rem;
2403
+ display: flex;
2404
+ align-items: center;
2405
+ justify-content: center;
2406
+ width: 2.5rem;
2407
+ height: 2.5rem;
2408
+ color: #2563eb;
2409
+ background: #dbeafe;
2410
+ border-radius: 0.375rem;
2411
+ }
2412
+
2413
+ .fleet-ops-hub-kpi-accent-green {
2414
+ background: linear-gradient(135deg, #fff 0%, #ecfdf5 100%);
2415
+ border-color: #a7f3d0;
2416
+ }
2417
+
2418
+ .fleet-ops-hub-kpi-accent-green .fleet-ops-hub-kpi-icon {
2419
+ color: #059669;
2420
+ background: #d1fae5;
2421
+ }
2422
+
2423
+ .fleet-ops-hub-kpi-accent-amber {
2424
+ background: linear-gradient(135deg, #fff 0%, #fffbeb 100%);
2425
+ border-color: #fed7aa;
2426
+ }
2427
+
2428
+ .fleet-ops-hub-kpi-accent-amber .fleet-ops-hub-kpi-icon {
2429
+ color: #d97706;
2430
+ background: #ffedd5;
2431
+ }
2432
+
2433
+ .fleet-ops-hub-kpi-accent-rose {
2434
+ background: linear-gradient(135deg, #fff 0%, #fff1f2 100%);
2435
+ border-color: #fecdd3;
2436
+ }
2437
+
2438
+ .fleet-ops-hub-kpi-accent-rose .fleet-ops-hub-kpi-icon {
2439
+ color: #e11d48;
2440
+ background: #ffe4e6;
2441
+ }
2442
+
2443
+ .fleet-ops-hub-kpi-label {
2444
+ font-size: 0.75rem;
2445
+ font-weight: 700;
2446
+ line-height: 1rem;
2447
+ color: #6b7280;
2448
+ text-transform: uppercase;
2449
+ letter-spacing: 0.04em;
2450
+ }
2451
+
2452
+ .fleet-ops-hub-kpi-value {
2453
+ margin-top: 0.5rem;
2454
+ font-size: 2rem;
2455
+ font-weight: 800;
2456
+ line-height: 1.1;
2457
+ color: #111827;
2458
+ }
2459
+
2460
+ .fleet-ops-hub-kpi-caption {
2461
+ margin-top: 0.75rem;
2462
+ overflow: hidden;
2463
+ font-size: 0.8125rem;
2464
+ line-height: 1.25rem;
2465
+ color: #6b7280;
2466
+ text-overflow: ellipsis;
2467
+ }
2468
+
2469
+ .fleet-ops-hub-layout {
2470
+ display: grid;
2471
+ grid-template-columns: minmax(0, 1fr);
2472
+ gap: 1rem;
2473
+ }
2474
+
2475
+ .fleet-ops-hub-main {
2476
+ min-width: 0;
2477
+ }
2478
+
2479
+ .fleet-ops-hub-side {
2480
+ display: flex;
2481
+ flex-direction: column;
2482
+ gap: 1rem;
2483
+ min-width: 0;
2484
+ }
2485
+
2486
+ .fleet-ops-hub-card-grid {
2487
+ display: grid;
2488
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2489
+ gap: 0.75rem;
2490
+ }
2491
+
2492
+ .fleet-ops-hub-card-grid-three {
2493
+ display: grid;
2494
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2495
+ gap: 0.75rem;
2496
+ }
2497
+
2498
+ .fleet-ops-hub-card {
2499
+ display: flex;
2500
+ flex-direction: column;
2501
+ min-height: 9.5rem;
2502
+ padding: 1rem;
2503
+ color: inherit;
2504
+ background: #fff;
2505
+ border: 1px solid #e5e7eb;
2506
+ border-radius: 0.375rem;
2507
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
2508
+ transition:
2509
+ background-color 0.18s ease,
2510
+ border-color 0.18s ease,
2511
+ box-shadow 0.18s ease,
2512
+ transform 0.18s ease;
2513
+ }
2514
+
2515
+ .fleet-ops-hub-card:hover {
2516
+ color: inherit;
2517
+ background: #f9fafb;
2518
+ border-color: #93c5fd;
2519
+ box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
2520
+ transform: translateY(-1px);
2521
+ }
2522
+
2523
+ .fleet-ops-hub-card-heading {
2524
+ display: flex;
2525
+ align-items: center;
2526
+ gap: 0.625rem;
2527
+ margin-bottom: 0.75rem;
2528
+ font-size: 0.875rem;
2529
+ font-weight: 700;
2530
+ line-height: 1.25rem;
2531
+ color: #111827;
2532
+ }
2533
+
2534
+ .fleet-ops-hub-card-icon {
2535
+ display: flex;
2536
+ flex: 0 0 2rem;
2537
+ align-items: center;
2538
+ justify-content: center;
2539
+ width: 2rem;
2540
+ height: 2rem;
2541
+ color: #2563eb;
2542
+ background: #eff6ff;
2543
+ border-radius: 0.375rem;
2544
+ }
2545
+
2546
+ .fleet-ops-hub-card-description {
2547
+ margin: 0;
2548
+ font-size: 0.875rem;
2549
+ line-height: 1.4;
2550
+ color: #6b7280;
2551
+ }
2552
+
2553
+ .fleet-ops-hub-card-action {
2554
+ display: inline-flex;
2555
+ align-items: center;
2556
+ gap: 0.375rem;
2557
+ margin-top: auto;
2558
+ padding-top: 1rem;
2559
+ font-size: 0.8125rem;
2560
+ font-weight: 700;
2561
+ color: #2563eb;
2562
+ }
2563
+
2564
+ .fleet-ops-hub-panel {
2565
+ padding: 1rem;
2566
+ background: #fff;
2567
+ border: 1px solid #e5e7eb;
2568
+ border-radius: 0.375rem;
2569
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
2570
+ }
2571
+
2572
+ .fleet-ops-hub-panel-prominent {
2573
+ background: linear-gradient(135deg, #fff 0%, #eff6ff 100%);
2574
+ border-color: #bfdbfe;
2575
+ }
2576
+
2577
+ .fleet-ops-hub-panel-title {
2578
+ margin-bottom: 0.75rem;
2579
+ font-size: 0.875rem;
2580
+ font-weight: 700;
2581
+ line-height: 1.25rem;
2582
+ color: #111827;
2583
+ }
2584
+
2585
+ .fleet-ops-hub-guidance-list {
2586
+ display: flex;
2587
+ flex-direction: column;
2588
+ gap: 0.625rem;
2589
+ padding: 0;
2590
+ margin: 0;
2591
+ font-size: 0.875rem;
2592
+ line-height: 1.4;
2593
+ color: #6b7280;
2594
+ list-style: none;
2595
+ }
2596
+
2597
+ .fleet-ops-hub-guidance-list li {
2598
+ display: flex;
2599
+ gap: 0.5rem;
2600
+ }
2601
+
2602
+ .fleet-ops-hub-guidance-list svg {
2603
+ flex-shrink: 0;
2604
+ margin-top: 0.1875rem;
2605
+ color: #3485e2;
2606
+ }
2607
+
2608
+ .fleet-ops-hub-section-title {
2609
+ margin-bottom: 0.75rem;
2610
+ font-size: 0.75rem;
2611
+ font-weight: 700;
2612
+ line-height: 1rem;
2613
+ color: #6b7280;
2614
+ text-transform: uppercase;
2615
+ letter-spacing: 0.04em;
2616
+ }
2617
+
2618
+ .fleet-ops-hub-section-title.mt-5 {
2619
+ margin-top: 1.25rem;
2620
+ }
2621
+
2622
+ .fleet-ops-resources-hub-shell {
2623
+ height: 100%;
2624
+ min-height: 0;
2625
+ overflow-y: auto;
2626
+ color: #111827;
2627
+ background: #f9fafb;
2628
+ }
2629
+
2630
+ .fleet-ops-resources-hub-header {
2631
+ position: sticky;
2632
+ top: 0;
2633
+ z-index: 50;
2634
+ padding: 1rem;
2635
+ background: #fff;
2636
+ border-bottom: 1px solid #e5e7eb;
2637
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
2638
+ }
2639
+
2640
+ .fleet-ops-resources-hub-header-inner,
2641
+ .fleet-ops-resources-hub-content {
2642
+ width: 100%;
2643
+ max-width: 80rem;
2644
+ margin: 0 auto;
2645
+ }
2646
+
2647
+ .fleet-ops-resources-hub-header-inner {
2648
+ display: flex;
2649
+ flex-direction: column;
2650
+ gap: 0.75rem;
2651
+ }
2652
+
2653
+ .fleet-ops-resources-hub-header-copy {
2654
+ min-width: 0;
2655
+ }
2656
+
2657
+ .fleet-ops-resources-hub-header-actions {
2658
+ display: flex;
2659
+ flex-shrink: 0;
2660
+ align-items: center;
2661
+ gap: 0.5rem;
2662
+ white-space: nowrap;
2663
+ }
2664
+
2665
+ .fleet-ops-resources-hub-content {
2666
+ display: flex;
2667
+ flex-direction: column;
2668
+ gap: 0.75rem;
2669
+ padding: 0.875rem 1rem 1rem;
2670
+ }
2671
+
2672
+ .fleet-ops-resources-kpi-grid {
2673
+ display: grid;
2674
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2675
+ gap: 0.75rem;
2676
+ }
2677
+
2678
+ .fleet-ops-resources-kpi {
2679
+ min-height: 7.25rem;
2680
+ color: inherit;
2681
+ text-decoration: none;
2682
+ }
2683
+
2684
+ .fleet-ops-resources-kpi:hover {
2685
+ color: inherit;
2686
+ }
2687
+
2688
+ .fleet-ops-resources-hub-layout {
2689
+ display: block;
2690
+ }
2691
+
2692
+ .fleet-ops-resources-hub-main {
2693
+ display: flex;
2694
+ min-width: 0;
2695
+ flex-direction: column;
2696
+ gap: 0.75rem;
2697
+ }
2698
+
2699
+ .fleet-ops-resources-hub-side {
2700
+ display: flex;
2701
+ min-width: 0;
2702
+ flex-direction: column;
2703
+ gap: 1rem;
2704
+ }
2705
+
2706
+ .fleet-ops-resources-section {
2707
+ padding: 0.75rem;
2708
+ background: #fff;
2709
+ border: 1px solid #e5e7eb;
2710
+ border-radius: 0.375rem;
2711
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
2712
+ }
2713
+
2714
+ .fleet-ops-resources-section-header {
2715
+ display: flex;
2716
+ flex-direction: column;
2717
+ gap: 0.25rem;
2718
+ margin-bottom: 0.5rem;
2719
+ }
2720
+
2721
+ .fleet-ops-resources-section-header p {
2722
+ max-width: 44rem;
2723
+ margin: 0;
2724
+ font-size: 0.8125rem;
2725
+ line-height: 1.35rem;
2726
+ color: #6b7280;
2727
+ }
2728
+
2729
+ .fleet-ops-resources-card-grid {
2730
+ display: grid;
2731
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2732
+ gap: 0.625rem;
2733
+ }
2734
+
2735
+ .fleet-ops-resources-guidance-grid {
2736
+ display: grid;
2737
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2738
+ gap: 0.625rem;
2739
+ }
2740
+
2741
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-kpi {
2742
+ padding: 0.875rem;
2743
+ }
2744
+
2745
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-kpi-value {
2746
+ margin-top: 0.375rem;
2747
+ font-size: 1.75rem;
2748
+ }
2749
+
2750
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-kpi-caption {
2751
+ margin-top: 0.5rem;
2752
+ font-size: 0.75rem;
2753
+ line-height: 1.1rem;
2754
+ }
2755
+
2756
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-card {
2757
+ min-height: 6.75rem;
2758
+ padding: 0.7rem;
2759
+ }
2760
+
2761
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-card-heading {
2762
+ gap: 0.5rem;
2763
+ margin-bottom: 0.375rem;
2764
+ font-size: 0.8125rem;
2765
+ }
2766
+
2767
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-card-icon {
2768
+ flex-basis: 1.65rem;
2769
+ width: 1.65rem;
2770
+ height: 1.65rem;
2771
+ font-size: 0.75rem;
2772
+ }
2773
+
2774
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-card-description {
2775
+ font-size: 0.8125rem;
2776
+ line-height: 1.2rem;
2777
+ display: -webkit-box;
2778
+ overflow: hidden;
2779
+ -webkit-line-clamp: 1;
2780
+ -webkit-box-orient: vertical;
2781
+ }
2782
+
2783
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-card-action {
2784
+ padding-top: 0.5rem;
2785
+ font-size: 0.75rem;
2786
+ }
2787
+
2788
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-panel {
2789
+ padding: 0.75rem;
2790
+ }
2791
+
2792
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-panel-title {
2793
+ margin-bottom: 0.5rem;
2794
+ }
2795
+
2796
+ .fleet-ops-resources-hub-shell .fleet-ops-hub-guidance-list {
2797
+ gap: 0.45rem;
2798
+ font-size: 0.8125rem;
2799
+ line-height: 1.3;
2800
+ }
2801
+
2802
+ .fleet-ops-resources-utility-panel {
2803
+ min-height: 9rem;
2804
+ }
2805
+
2806
+ .fleet-ops-resources-utility-panel-header {
2807
+ display: flex;
2808
+ align-items: center;
2809
+ justify-content: space-between;
2810
+ gap: 0.5rem;
2811
+ margin-bottom: 0.5rem;
2812
+ }
2813
+
2814
+ .fleet-ops-resources-utility-panel-header .fleet-ops-hub-panel-title {
2815
+ margin-bottom: 0;
2816
+ }
2817
+
2818
+ .fleet-ops-resources-utility-panel-header span {
2819
+ flex-shrink: 0;
2820
+ font-size: 0.6875rem;
2821
+ font-weight: 700;
2822
+ color: #3485e2;
2823
+ }
2824
+
2825
+ .fleet-ops-resources-doc-links {
2826
+ display: grid;
2827
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2828
+ gap: 0.375rem;
2829
+ }
2830
+
2831
+ .fleet-ops-resources-doc-link,
2832
+ .fleet-ops-resources-notice,
2833
+ .fleet-ops-resources-checklist-item {
2834
+ display: flex;
2835
+ align-items: center;
2836
+ min-width: 0;
2837
+ color: inherit;
2838
+ text-decoration: none;
2839
+ border-radius: 0.375rem;
2840
+ }
2841
+
2842
+ .fleet-ops-resources-doc-link {
2843
+ gap: 0.375rem;
2844
+ padding: 0.375rem 0.45rem;
2845
+ font-size: 0.75rem;
2846
+ font-weight: 700;
2847
+ text-align: left;
2848
+ background: #f9fafb;
2849
+ border: 1px solid #e5e7eb;
2850
+ }
2851
+
2852
+ .fleet-ops-resources-doc-link:hover {
2853
+ color: #2563eb;
2854
+ background: #eff6ff;
2855
+ border-color: #bfdbfe;
2856
+ }
2857
+
2858
+ .fleet-ops-resources-doc-link svg {
2859
+ flex-shrink: 0;
2860
+ color: #3485e2;
2861
+ }
2862
+
2863
+ .fleet-ops-resources-doc-link span {
2864
+ min-width: 0;
2865
+ overflow: hidden;
2866
+ text-overflow: ellipsis;
2867
+ white-space: nowrap;
2868
+ }
2869
+
2870
+ .fleet-ops-resources-notice-list,
2871
+ .fleet-ops-resources-checklist {
2872
+ display: flex;
2873
+ flex-direction: column;
2874
+ gap: 0.375rem;
2875
+ }
2876
+
2877
+ .fleet-ops-resources-notice {
2878
+ gap: 0.45rem;
2879
+ padding: 0.425rem 0.5rem;
2880
+ font-size: 0.75rem;
2881
+ font-weight: 700;
2882
+ line-height: 1.1rem;
2883
+ background: #f9fafb;
2884
+ border: 1px solid #e5e7eb;
2885
+ }
2886
+
2887
+ .fleet-ops-resources-notice-warning {
2888
+ color: #92400e;
2889
+ background: #fffbeb;
2890
+ border-color: #fde68a;
2891
+ }
2892
+
2893
+ .fleet-ops-resources-notice-info {
2894
+ color: #1d4ed8;
2895
+ background: #eff6ff;
2896
+ border-color: #bfdbfe;
2897
+ }
2898
+
2899
+ .fleet-ops-resources-notice-success {
2900
+ color: #047857;
2901
+ background: #ecfdf5;
2902
+ border-color: #a7f3d0;
2903
+ }
2904
+
2905
+ .fleet-ops-resources-checklist {
2906
+ display: grid;
2907
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2908
+ }
2909
+
2910
+ .fleet-ops-resources-checklist-item {
2911
+ gap: 0.375rem;
2912
+ padding: 0.35rem 0.4rem;
2913
+ font-size: 0.75rem;
2914
+ font-weight: 700;
2915
+ line-height: 1rem;
2916
+ background: #f9fafb;
2917
+ border: 1px solid #e5e7eb;
2918
+ }
2919
+
2920
+ .fleet-ops-resources-checklist-item.is-complete {
2921
+ color: #047857;
2922
+ background: #ecfdf5;
2923
+ border-color: #a7f3d0;
2924
+ }
2925
+
2926
+ .fleet-ops-resources-checklist-item.is-pending:hover {
2927
+ color: #2563eb;
2928
+ background: #eff6ff;
2929
+ border-color: #bfdbfe;
2930
+ }
2931
+
2932
+ .fleet-ops-resources-checklist-icon {
2933
+ display: flex;
2934
+ flex: 0 0 1.15rem;
2935
+ align-items: center;
2936
+ justify-content: center;
2937
+ width: 1.15rem;
2938
+ height: 1.15rem;
2939
+ font-size: 0.625rem;
2940
+ border-radius: 999px;
2941
+ background: rgba(52, 133, 226, 0.12);
2942
+ }
2943
+
2944
+ .fleet-ops-resources-checklist-item.is-complete .fleet-ops-resources-checklist-icon {
2945
+ background: rgba(4, 120, 87, 0.12);
2946
+ }
2947
+
2948
+ body[data-theme='dark'] .fleet-ops-resources-hub-shell {
2949
+ color: #f9fafb;
2950
+ background: #111827;
2951
+ }
2952
+
2953
+ body[data-theme='dark'] .fleet-ops-resources-hub-header,
2954
+ body[data-theme='dark'] .fleet-ops-resources-section {
2955
+ background: #1f2937;
2956
+ border-color: #374151;
2957
+ }
2958
+
2959
+ body[data-theme='dark'] .fleet-ops-resources-section-header p {
2960
+ color: #9ca3af;
2961
+ }
2962
+
2963
+ body[data-theme='dark'] .fleet-ops-resources-doc-link,
2964
+ body[data-theme='dark'] .fleet-ops-resources-notice,
2965
+ body[data-theme='dark'] .fleet-ops-resources-checklist-item {
2966
+ background: #111827;
2967
+ border-color: #374151;
2968
+ }
2969
+
2970
+ body[data-theme='dark'] .fleet-ops-resources-doc-link:hover,
2971
+ body[data-theme='dark'] .fleet-ops-resources-checklist-item.is-pending:hover {
2972
+ color: #93c5fd;
2973
+ background: #1e3a5f;
2974
+ border-color: #2563eb;
2975
+ }
2976
+
2977
+ body[data-theme='dark'] .fleet-ops-resources-notice-warning {
2978
+ color: #fbbf24;
2979
+ background: rgba(146, 64, 14, 0.18);
2980
+ border-color: rgba(251, 191, 36, 0.35);
2981
+ }
2982
+
2983
+ body[data-theme='dark'] .fleet-ops-resources-notice-info {
2984
+ color: #93c5fd;
2985
+ background: rgba(37, 99, 235, 0.18);
2986
+ border-color: rgba(147, 197, 253, 0.3);
2987
+ }
2988
+
2989
+ body[data-theme='dark'] .fleet-ops-resources-notice-success,
2990
+ body[data-theme='dark'] .fleet-ops-resources-checklist-item.is-complete {
2991
+ color: #6ee7b7;
2992
+ background: rgba(4, 120, 87, 0.18);
2993
+ border-color: rgba(110, 231, 183, 0.28);
2994
+ }
2995
+
2996
+ @media (width >= 768px) {
2997
+ .fleet-ops-resources-hub-header {
2998
+ padding-right: 1.5rem;
2999
+ padding-left: 1.5rem;
3000
+ }
3001
+
3002
+ .fleet-ops-resources-hub-header-inner {
3003
+ flex-direction: row;
3004
+ align-items: flex-start;
3005
+ justify-content: space-between;
3006
+ }
3007
+
3008
+ .fleet-ops-resources-hub-content {
3009
+ padding: 1rem 1.5rem;
3010
+ }
3011
+
3012
+ .fleet-ops-resources-kpi-grid,
3013
+ .fleet-ops-resources-card-grid,
3014
+ .fleet-ops-resources-guidance-grid {
3015
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3016
+ }
3017
+ }
3018
+
3019
+ @media (width >= 1024px) {
3020
+ .fleet-ops-resources-kpi-grid {
3021
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3022
+ }
3023
+
3024
+ .fleet-ops-resources-card-grid,
3025
+ .fleet-ops-resources-guidance-grid {
3026
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3027
+ }
3028
+ }
3029
+
3030
+ @media (width >= 1280px) {
3031
+ .fleet-ops-resources-card-grid,
3032
+ .fleet-ops-resources-guidance-grid {
3033
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3034
+ }
3035
+ }
3036
+
3037
+ body[data-theme='dark'] .fleet-ops-hub {
3038
+ color: #f9fafb;
3039
+ background: #111827;
3040
+ }
3041
+
3042
+ body[data-theme='dark'] .fleet-ops-hub-kpi,
3043
+ body[data-theme='dark'] .fleet-ops-hub-card,
3044
+ body[data-theme='dark'] .fleet-ops-hub-panel {
3045
+ background: #1f2937;
3046
+ border-color: #374151;
3047
+ }
3048
+
3049
+ body[data-theme='dark'] .fleet-ops-hub-header {
3050
+ background: #111827;
3051
+ border-bottom-color: #374151;
3052
+ }
3053
+
3054
+ body[data-theme='dark'] .fleet-ops-hub-title,
3055
+ body[data-theme='dark'] .fleet-ops-hub-kpi-value,
3056
+ body[data-theme='dark'] .fleet-ops-hub-card-heading,
3057
+ body[data-theme='dark'] .fleet-ops-hub-panel-title {
3058
+ color: #f9fafb;
3059
+ }
3060
+
3061
+ .fleet-ops-control-hub {
3062
+ height: 100%;
3063
+ min-height: 0;
3064
+ overflow-y: auto;
3065
+ color: #111827;
3066
+ background: #f9fafb;
3067
+ }
3068
+
3069
+ .fleet-ops-control-hub-header {
3070
+ position: sticky;
3071
+ top: 0;
3072
+ z-index: 50;
3073
+ display: flex;
3074
+ flex-direction: column;
3075
+ gap: 0.75rem;
3076
+ padding: 1rem;
3077
+ background: #fff;
3078
+ border-bottom: 1px solid #e5e7eb;
3079
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
3080
+ }
3081
+
3082
+ .fleet-ops-control-hub-header-copy {
3083
+ min-width: 0;
3084
+ }
3085
+
3086
+ .fleet-ops-control-hub-eyebrow {
3087
+ margin-bottom: 0.125rem;
3088
+ font-size: 0.6875rem;
3089
+ font-weight: 800;
3090
+ line-height: 1rem;
3091
+ color: #3485e2;
3092
+ text-transform: uppercase;
3093
+ }
3094
+
3095
+ .fleet-ops-control-hub-title {
3096
+ margin: 0;
3097
+ font-size: 1.125rem;
3098
+ font-weight: 800;
3099
+ line-height: 1.35;
3100
+ color: #111827;
3101
+ }
3102
+
3103
+ .fleet-ops-control-hub-subtitle {
3104
+ max-width: 52rem;
3105
+ margin: 0.25rem 0 0;
3106
+ font-size: 0.8125rem;
3107
+ line-height: 1.35rem;
3108
+ color: #6b7280;
3109
+ }
3110
+
3111
+ .fleet-ops-control-hub-header-actions {
3112
+ display: flex;
3113
+ flex-wrap: wrap;
3114
+ align-items: center;
3115
+ gap: 0.5rem;
3116
+ }
3117
+
3118
+ .fleet-ops-control-hub-primary-action {
3119
+ display: inline-flex;
3120
+ align-items: center;
3121
+ gap: 0.45rem;
3122
+ min-height: 2rem;
3123
+ padding: 0 0.7rem;
3124
+ font-size: 0.75rem;
3125
+ font-weight: 800;
3126
+ color: #fff;
3127
+ white-space: nowrap;
3128
+ background: #2563eb;
3129
+ border: 1px solid #2563eb;
3130
+ border-radius: 0.375rem;
3131
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.12);
3132
+ }
3133
+
3134
+ .fleet-ops-control-hub-primary-action:hover {
3135
+ color: #fff;
3136
+ background: #1d4ed8;
3137
+ border-color: #1d4ed8;
3138
+ }
3139
+
3140
+ .fleet-ops-control-hub-body {
3141
+ display: flex;
3142
+ flex-direction: column;
3143
+ gap: 0.75rem;
3144
+ width: 100%;
3145
+ max-width: 80rem;
3146
+ padding: 0.875rem 1rem 1rem;
3147
+ margin: 0 auto;
3148
+ }
3149
+
3150
+ .fleet-ops-control-hub-kpis {
3151
+ display: grid;
3152
+ grid-template-columns: repeat(1, minmax(0, 1fr));
3153
+ gap: 0.75rem;
3154
+ }
3155
+
3156
+ .fleet-ops-control-hub-kpi,
3157
+ .fleet-ops-control-hub-panel,
3158
+ .fleet-ops-control-hub-link,
3159
+ .fleet-ops-control-hub-action {
3160
+ color: inherit;
3161
+ background: #fff;
3162
+ border: 1px solid #e5e7eb;
3163
+ border-radius: 0.375rem;
3164
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
3165
+ }
3166
+
3167
+ .fleet-ops-control-hub-kpi {
3168
+ position: relative;
3169
+ display: flex;
3170
+ min-height: 7rem;
3171
+ padding: 0.875rem;
3172
+ overflow: hidden;
3173
+ text-decoration: none;
3174
+ background: linear-gradient(135deg, rgba(37, 99, 235, 0.1), rgba(37, 99, 235, 0.02) 50%, #fff 100%), #fff;
3175
+ border-color: #bfdbfe;
3176
+ transition:
3177
+ border-color 0.18s ease,
3178
+ box-shadow 0.18s ease,
3179
+ transform 0.18s ease;
3180
+ }
3181
+
3182
+ .fleet-ops-control-hub-kpi:hover,
3183
+ .fleet-ops-control-hub-link:hover,
3184
+ .fleet-ops-control-hub-action:hover {
3185
+ color: inherit;
3186
+ border-color: #bfdbfe;
3187
+ box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
3188
+ transform: translateY(-1px);
3189
+ }
3190
+
3191
+ .fleet-ops-control-hub-kpi-copy {
3192
+ min-width: 0;
3193
+ padding-right: 3rem;
3194
+ }
3195
+
3196
+ .fleet-ops-control-hub-kpi-label {
3197
+ overflow: hidden;
3198
+ font-size: 0.6875rem;
3199
+ font-weight: 800;
3200
+ line-height: 1rem;
3201
+ color: #6b7280;
3202
+ text-overflow: ellipsis;
3203
+ text-transform: uppercase;
3204
+ white-space: nowrap;
3205
+ }
3206
+
3207
+ .fleet-ops-control-hub-kpi-value {
3208
+ margin-top: 0.375rem;
3209
+ font-size: 1.85rem;
3210
+ font-weight: 900;
3211
+ line-height: 1.1;
3212
+ color: #111827;
3213
+ }
3214
+
3215
+ .fleet-ops-control-hub-kpi-caption {
3216
+ display: -webkit-box;
3217
+ margin-top: 0.5rem;
3218
+ overflow: hidden;
3219
+ font-size: 0.75rem;
3220
+ line-height: 1.15rem;
3221
+ color: #6b7280;
3222
+ -webkit-line-clamp: 2;
3223
+ -webkit-box-orient: vertical;
3224
+ }
3225
+
3226
+ .fleet-ops-control-hub-kpi-action {
3227
+ display: inline-flex;
3228
+ align-items: center;
3229
+ gap: 0.35rem;
3230
+ max-width: 100%;
3231
+ min-width: 0;
3232
+ margin-top: 0.625rem;
3233
+ font-size: 0.75rem;
3234
+ font-weight: 800;
3235
+ line-height: 1rem;
3236
+ color: #2563eb;
3237
+ white-space: nowrap;
3238
+ }
3239
+
3240
+ .fleet-ops-control-hub-kpi-action span {
3241
+ min-width: 0;
3242
+ overflow: hidden;
3243
+ text-overflow: ellipsis;
3244
+ white-space: nowrap;
3245
+ }
3246
+
3247
+ .fleet-ops-control-hub-kpi-action svg {
3248
+ flex-shrink: 0;
3249
+ font-size: 0.6875rem;
3250
+ transition: transform 0.18s ease;
3251
+ }
3252
+
3253
+ .fleet-ops-control-hub-kpi:hover .fleet-ops-control-hub-kpi-action svg {
3254
+ transform: translateX(2px);
3255
+ }
3256
+
3257
+ .fleet-ops-control-hub-kpi-icon,
3258
+ .fleet-ops-control-hub-link-icon {
3259
+ display: flex;
3260
+ flex-shrink: 0;
3261
+ align-items: center;
3262
+ justify-content: center;
3263
+ color: #2563eb;
3264
+ background: #eff6ff;
3265
+ border-radius: 0.375rem;
3266
+ }
3267
+
3268
+ .fleet-ops-control-hub-kpi-icon {
3269
+ position: absolute;
3270
+ top: 0.875rem;
3271
+ right: 0.875rem;
3272
+ width: 2.25rem;
3273
+ height: 2.25rem;
3274
+ }
3275
+
3276
+ .fleet-ops-control-hub-grid {
3277
+ display: grid;
3278
+ grid-template-columns: minmax(0, 1fr);
3279
+ gap: 0.75rem;
3280
+ }
3281
+
3282
+ .fleet-ops-control-hub-main,
3283
+ .fleet-ops-control-hub-side,
3284
+ .fleet-ops-control-hub-action-list {
3285
+ display: flex;
3286
+ min-width: 0;
3287
+ flex-direction: column;
3288
+ gap: 0.75rem;
3289
+ }
3290
+
3291
+ .fleet-ops-control-hub-panel {
3292
+ padding: 0.875rem;
3293
+ }
3294
+
3295
+ .fleet-ops-control-hub-panel-header {
3296
+ display: flex;
3297
+ align-items: flex-start;
3298
+ justify-content: space-between;
3299
+ gap: 0.75rem;
3300
+ margin-bottom: 0.75rem;
3301
+ }
3302
+
3303
+ .fleet-ops-control-hub-panel-header h2 {
3304
+ margin: 0;
3305
+ font-size: 0.875rem;
3306
+ font-weight: 800;
3307
+ line-height: 1.25rem;
3308
+ color: #111827;
3309
+ }
3310
+
3311
+ .fleet-ops-control-hub-panel-header p {
3312
+ max-width: 42rem;
3313
+ margin: 0.125rem 0 0;
3314
+ font-size: 0.75rem;
3315
+ line-height: 1.2rem;
3316
+ color: #6b7280;
3317
+ }
3318
+
3319
+ .fleet-ops-control-hub-link-grid,
3320
+ .fleet-ops-control-hub-doc-grid {
3321
+ display: grid;
3322
+ grid-template-columns: repeat(1, minmax(0, 1fr));
3323
+ gap: 0.5rem;
3324
+ }
3325
+
3326
+ .fleet-ops-control-hub-doc-grid {
3327
+ gap: 0;
3328
+ }
3329
+
3330
+ .fleet-ops-control-hub-doc-note {
3331
+ padding: 0.5rem;
3332
+ background: #fffbeb;
3333
+ border: 1px solid #fde68a;
3334
+ border-radius: 0.375rem;
3335
+ }
3336
+
3337
+ .fleet-ops-control-hub-doc-note-heading {
3338
+ display: flex;
3339
+ align-items: center;
3340
+ gap: 0.3rem;
3341
+ margin-bottom: 0.35rem;
3342
+ font-size: 0.6875rem;
3343
+ font-weight: 900;
3344
+ line-height: 1rem;
3345
+ color: #92400e;
3346
+ text-transform: uppercase;
3347
+ }
3348
+
3349
+ .fleet-ops-control-hub-doc-note-heading svg {
3350
+ color: #d97706;
3351
+ }
3352
+
3353
+ .fleet-ops-control-hub-doc-note-copy {
3354
+ margin: -0.2rem 0 0.35rem;
3355
+ font-size: 0.75rem;
3356
+ line-height: 1rem;
3357
+ color: #92400e;
3358
+ }
3359
+
3360
+ .fleet-ops-control-hub-link {
3361
+ display: flex;
3362
+ align-items: center;
3363
+ gap: 0.625rem;
3364
+ min-height: 4.25rem;
3365
+ padding: 0.625rem;
3366
+ text-decoration: none;
3367
+ transition:
3368
+ border-color 0.18s ease,
3369
+ box-shadow 0.18s ease,
3370
+ transform 0.18s ease;
3371
+ }
3372
+
3373
+ .fleet-ops-control-hub-link-icon {
3374
+ width: 2rem;
3375
+ height: 2rem;
3376
+ font-size: 0.8125rem;
3377
+ }
3378
+
3379
+ .fleet-ops-control-hub-link-copy {
3380
+ display: flex;
3381
+ min-width: 0;
3382
+ flex: 1 1 auto;
3383
+ flex-direction: column;
3384
+ gap: 0.125rem;
3385
+ }
3386
+
3387
+ .fleet-ops-control-hub-link-title {
3388
+ overflow: hidden;
3389
+ font-size: 0.8125rem;
3390
+ font-weight: 800;
3391
+ line-height: 1.2rem;
3392
+ color: #111827;
3393
+ text-overflow: ellipsis;
3394
+ white-space: nowrap;
3395
+ }
3396
+
3397
+ .fleet-ops-control-hub-link-description {
3398
+ display: -webkit-box;
3399
+ overflow: hidden;
3400
+ font-size: 0.75rem;
3401
+ line-height: 1.1rem;
3402
+ color: #6b7280;
3403
+ -webkit-line-clamp: 2;
3404
+ -webkit-box-orient: vertical;
3405
+ }
3406
+
3407
+ .fleet-ops-control-hub-link-count {
3408
+ display: inline-flex;
3409
+ flex: 0 0 auto;
3410
+ align-items: center;
3411
+ justify-content: center;
3412
+ min-width: 2rem;
3413
+ height: 1.5rem;
3414
+ padding: 0 0.45rem;
3415
+ font-size: 0.75rem;
3416
+ font-weight: 900;
3417
+ color: #1d4ed8;
3418
+ background: #eff6ff;
3419
+ border-radius: 999px;
3420
+ }
3421
+
3422
+ .fleet-ops-control-hub-link-arrow {
3423
+ flex-shrink: 0;
3424
+ color: #9ca3af;
3425
+ }
3426
+
3427
+ .fleet-ops-control-hub-action {
3428
+ display: flex;
3429
+ gap: 0.625rem;
3430
+ padding: 0.625rem;
3431
+ text-decoration: none;
3432
+ transition:
3433
+ border-color 0.18s ease,
3434
+ box-shadow 0.18s ease,
3435
+ transform 0.18s ease;
3436
+ }
3437
+
3438
+ .fleet-ops-control-hub-action svg {
3439
+ flex-shrink: 0;
3440
+ margin-top: 0.1875rem;
3441
+ color: #2563eb;
3442
+ }
3443
+
3444
+ .fleet-ops-control-hub-action strong,
3445
+ .fleet-ops-control-hub-action small {
3446
+ display: block;
3447
+ }
3448
+
3449
+ .fleet-ops-control-hub-action strong {
3450
+ font-size: 0.8125rem;
3451
+ line-height: 1.15rem;
3452
+ color: #111827;
3453
+ }
3454
+
3455
+ .fleet-ops-control-hub-action small {
3456
+ margin-top: 0.125rem;
3457
+ font-size: 0.75rem;
3458
+ line-height: 1.15rem;
3459
+ color: #6b7280;
3460
+ }
3461
+
3462
+ .fleet-ops-control-hub-doc-link {
3463
+ position: relative;
3464
+ display: flex;
3465
+ align-items: flex-start;
3466
+ gap: 0.4rem;
3467
+ min-width: 0;
3468
+ min-height: 2.15rem;
3469
+ padding: 0.3rem;
3470
+ color: inherit;
3471
+ font-size: 0.6875rem;
3472
+ text-align: left;
3473
+ background: transparent;
3474
+ border: 0;
3475
+ border-radius: 0.25rem;
3476
+ box-shadow: none;
3477
+ transition: background 0.18s ease;
3478
+ }
3479
+
3480
+ .fleet-ops-control-hub-doc-link + .fleet-ops-control-hub-doc-link {
3481
+ margin-top: 0.4rem;
3482
+ }
3483
+
3484
+ .fleet-ops-control-hub-doc-link + .fleet-ops-control-hub-doc-link::before {
3485
+ position: absolute;
3486
+ top: -0.2rem;
3487
+ right: 0.3rem;
3488
+ left: 0.3rem;
3489
+ border-top: 1px dashed rgba(217, 119, 6, 0.35);
3490
+ content: '';
3491
+ pointer-events: none;
3492
+ }
3493
+
3494
+ .fleet-ops-control-hub-doc-link:hover {
3495
+ color: inherit;
3496
+ background: rgba(245, 158, 11, 0.1);
3497
+ box-shadow: none;
3498
+ transform: none;
3499
+ }
3500
+
3501
+ .fleet-ops-control-hub-doc-link svg {
3502
+ flex-shrink: 0;
3503
+ margin-top: 0.125rem;
3504
+ font-size: 0.6875rem;
3505
+ color: #b45309;
3506
+ }
3507
+
3508
+ .fleet-ops-control-hub-doc-copy {
3509
+ display: flex;
3510
+ min-width: 0;
3511
+ flex-direction: column;
3512
+ gap: 0.05rem;
3513
+ }
3514
+
3515
+ .fleet-ops-control-hub-doc-copy strong,
3516
+ .fleet-ops-control-hub-doc-copy small {
3517
+ display: block;
3518
+ }
3519
+
3520
+ .fleet-ops-control-hub-doc-copy strong {
3521
+ overflow: hidden;
3522
+ font-size: 0.75rem;
3523
+ font-weight: 800;
3524
+ line-height: 1rem;
3525
+ color: #111827;
3526
+ text-overflow: ellipsis;
3527
+ white-space: nowrap;
3528
+ }
3529
+
3530
+ .fleet-ops-control-hub-doc-copy small {
3531
+ display: -webkit-box;
3532
+ overflow: hidden;
3533
+ font-size: 0.6875rem;
3534
+ line-height: 0.95rem;
3535
+ color: #6b7280;
3536
+ -webkit-line-clamp: 1;
3537
+ -webkit-box-orient: vertical;
3538
+ }
3539
+
3540
+ .fleet-ops-control-hub-tone-blue {
3541
+ background: linear-gradient(135deg, rgba(37, 99, 235, 0.12), rgba(37, 99, 235, 0.03) 52%, #fff 100%), #fff;
3542
+ border-color: #bfdbfe;
3543
+ }
3544
+
3545
+ .fleet-ops-control-hub-tone-green,
3546
+ .fleet-ops-control-hub-tone-success {
3547
+ background: linear-gradient(135deg, rgba(16, 185, 129, 0.14), rgba(16, 185, 129, 0.03) 52%, #fff 100%), #fff;
3548
+ border-color: #a7f3d0;
3549
+ }
3550
+
3551
+ .fleet-ops-control-hub-tone-amber,
3552
+ .fleet-ops-control-hub-tone-warning {
3553
+ background: linear-gradient(135deg, rgba(245, 158, 11, 0.16), rgba(245, 158, 11, 0.04) 52%, #fff 100%), #fff;
3554
+ border-color: #fde68a;
3555
+ }
3556
+
3557
+ .fleet-ops-control-hub-tone-rose {
3558
+ background: linear-gradient(135deg, rgba(225, 29, 72, 0.13), rgba(225, 29, 72, 0.03) 52%, #fff 100%), #fff;
3559
+ border-color: #fecdd3;
3560
+ }
3561
+
3562
+ .fleet-ops-control-hub-tone-green .fleet-ops-control-hub-kpi-icon,
3563
+ .fleet-ops-control-hub-tone-success .fleet-ops-control-hub-kpi-icon,
3564
+ .fleet-ops-control-hub-tone-green .fleet-ops-control-hub-link-icon,
3565
+ .fleet-ops-control-hub-tone-success .fleet-ops-control-hub-link-icon {
3566
+ color: #047857;
3567
+ background: #ecfdf5;
3568
+ }
3569
+
3570
+ .fleet-ops-control-hub-tone-amber .fleet-ops-control-hub-kpi-icon,
3571
+ .fleet-ops-control-hub-tone-warning .fleet-ops-control-hub-kpi-icon,
3572
+ .fleet-ops-control-hub-tone-amber .fleet-ops-control-hub-link-icon,
3573
+ .fleet-ops-control-hub-tone-warning .fleet-ops-control-hub-link-icon {
3574
+ color: #b45309;
3575
+ background: #fffbeb;
3576
+ }
3577
+
3578
+ .fleet-ops-control-hub-tone-rose .fleet-ops-control-hub-kpi-icon {
3579
+ color: #e11d48;
3580
+ background: #fff1f2;
3581
+ }
3582
+
3583
+ .fleet-ops-dashboard-page {
3584
+ display: flex;
3585
+ flex: 0 0 auto;
3586
+ align-items: center;
3587
+ justify-content: space-between;
3588
+ gap: 1rem;
3589
+ width: 100%;
3590
+ padding: 1rem;
3591
+ background-color: #fff;
3592
+ border-bottom: 1px solid #e5e7eb;
3593
+ box-shadow: 0 1px 2px rgb(15 23 42 / 6%);
3594
+ }
3595
+
3596
+ .fleet-ops-dashboard-title h1 {
3597
+ color: #111827;
3598
+ font-size: 1.05rem;
3599
+ font-weight: 800;
3600
+ line-height: 1.2;
3601
+ }
3602
+
3603
+ .fleet-ops-dashboard-actions {
3604
+ justify-content: flex-end;
3605
+ }
3606
+
3607
+ .fleet-ops-dashboard-actions .ember-basic-dropdown-trigger {
3608
+ display: flex;
3609
+ }
3610
+
3611
+ .fleet-ops-dashboard-create-wrapper {
3612
+ padding: 1rem;
3613
+ }
3614
+
3615
+ body[data-theme='dark'] .fleet-ops-control-hub {
3616
+ color: #f9fafb;
3617
+ background: #111827;
3618
+ }
3619
+
3620
+ body[data-theme='dark'] .fleet-ops-control-hub-kpi,
3621
+ body[data-theme='dark'] .fleet-ops-control-hub-panel,
3622
+ body[data-theme='dark'] .fleet-ops-control-hub-link,
3623
+ body[data-theme='dark'] .fleet-ops-control-hub-action {
3624
+ background: #1f2937;
3625
+ border-color: #374151;
3626
+ }
3627
+
3628
+ body[data-theme='dark'] .fleet-ops-control-hub-header {
3629
+ background: #111827;
3630
+ border-color: #374151;
3631
+ }
3632
+
3633
+ body[data-theme='dark'] .fleet-ops-control-hub-title,
3634
+ body[data-theme='dark'] .fleet-ops-control-hub-kpi-value,
3635
+ body[data-theme='dark'] .fleet-ops-control-hub-panel-header h2,
3636
+ body[data-theme='dark'] .fleet-ops-control-hub-link-title,
3637
+ body[data-theme='dark'] .fleet-ops-control-hub-action strong,
3638
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-copy strong {
3639
+ color: #f9fafb;
3640
+ }
3641
+
3642
+ body[data-theme='dark'] .fleet-ops-control-hub-subtitle,
3643
+ body[data-theme='dark'] .fleet-ops-control-hub-kpi-label,
3644
+ body[data-theme='dark'] .fleet-ops-control-hub-kpi-caption,
3645
+ body[data-theme='dark'] .fleet-ops-control-hub-panel-header p,
3646
+ body[data-theme='dark'] .fleet-ops-control-hub-link-description,
3647
+ body[data-theme='dark'] .fleet-ops-control-hub-action small,
3648
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-copy small {
3649
+ color: #9ca3af;
3650
+ }
3651
+
3652
+ body[data-theme='dark'] .fleet-ops-control-hub-kpi-action {
3653
+ color: #93c5fd;
3654
+ }
3655
+
3656
+ body[data-theme='dark'] .fleet-ops-control-hub-action svg {
3657
+ background: transparent;
3658
+ border: 0;
3659
+ border-radius: 0;
3660
+ box-shadow: none;
3661
+ }
3662
+
3663
+ body[data-theme='dark'] .fleet-ops-control-hub-action.fleet-ops-control-hub-tone-green svg,
3664
+ body[data-theme='dark'] .fleet-ops-control-hub-action.fleet-ops-control-hub-tone-success svg {
3665
+ color: #34d399;
3666
+ }
3667
+
3668
+ body[data-theme='dark'] .fleet-ops-control-hub-action.fleet-ops-control-hub-tone-amber svg,
3669
+ body[data-theme='dark'] .fleet-ops-control-hub-action.fleet-ops-control-hub-tone-warning svg {
3670
+ color: #fbbf24;
3671
+ }
3672
+
3673
+ body[data-theme='dark'] .fleet-ops-control-hub-action.fleet-ops-control-hub-tone-rose svg {
3674
+ color: #fb7185;
3675
+ }
3676
+
3677
+ body[data-theme='dark'] .fleet-ops-control-hub-action.fleet-ops-control-hub-tone-blue svg,
3678
+ body[data-theme='dark'] .fleet-ops-control-hub-action.fleet-ops-control-hub-tone-info svg {
3679
+ color: #93c5fd;
3680
+ }
3681
+
3682
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-note {
3683
+ background: rgba(245, 158, 11, 0.12);
3684
+ border-color: rgba(251, 191, 36, 0.35);
3685
+ }
3686
+
3687
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-note-heading,
3688
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-note-heading svg,
3689
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-link svg {
3690
+ color: #fbbf24;
3691
+ }
3692
+
3693
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-note-copy {
3694
+ color: #fcd34d;
3695
+ }
3696
+
3697
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-link:hover {
3698
+ background: rgba(251, 191, 36, 0.12);
3699
+ }
3700
+
3701
+ body[data-theme='dark'] .fleet-ops-control-hub-doc-link + .fleet-ops-control-hub-doc-link::before {
3702
+ border-top-color: rgba(251, 191, 36, 0.28);
3703
+ }
3704
+
3705
+ body[data-theme='dark'] .fleet-ops-control-hub-tone-blue {
3706
+ background: linear-gradient(135deg, rgba(37, 99, 235, 0.2), rgba(37, 99, 235, 0.06) 52%, #1f2937 100%), #1f2937;
3707
+ border-color: rgba(96, 165, 250, 0.45);
3708
+ }
3709
+
3710
+ body[data-theme='dark'] .fleet-ops-control-hub-tone-green,
3711
+ body[data-theme='dark'] .fleet-ops-control-hub-tone-success {
3712
+ background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(16, 185, 129, 0.06) 52%, #1f2937 100%), #1f2937;
3713
+ border-color: rgba(52, 211, 153, 0.45);
3714
+ }
3715
+
3716
+ body[data-theme='dark'] .fleet-ops-control-hub-tone-amber,
3717
+ body[data-theme='dark'] .fleet-ops-control-hub-tone-warning {
3718
+ background: linear-gradient(135deg, rgba(245, 158, 11, 0.22), rgba(245, 158, 11, 0.06) 52%, #1f2937 100%), #1f2937;
3719
+ border-color: rgba(251, 191, 36, 0.45);
3720
+ }
3721
+
3722
+ body[data-theme='dark'] .fleet-ops-control-hub-tone-rose {
3723
+ background: linear-gradient(135deg, rgba(225, 29, 72, 0.2), rgba(225, 29, 72, 0.06) 52%, #1f2937 100%), #1f2937;
3724
+ border-color: rgba(251, 113, 133, 0.45);
3725
+ }
3726
+
3727
+ body[data-theme='dark'] .fleet-ops-control-hub-kpi-icon,
3728
+ body[data-theme='dark'] .fleet-ops-control-hub-link-icon,
3729
+ body[data-theme='dark'] .fleet-ops-control-hub-link-count {
3730
+ color: #93c5fd;
3731
+ background: rgba(37, 99, 235, 0.2);
3732
+ }
3733
+
3734
+ body[data-theme='dark'] .fleet-ops-control-hub-primary-action {
3735
+ color: #fff;
3736
+ }
3737
+
3738
+ body[data-theme='dark'] .fleet-ops-dashboard-page {
3739
+ background-color: #111827;
3740
+ border-bottom-color: #1f2937;
3741
+ box-shadow: 0 1px 2px rgb(2 6 23 / 30%);
3742
+ }
3743
+
3744
+ body[data-theme='dark'] .fleet-ops-dashboard-title h1 {
3745
+ color: #f9fafb;
3746
+ }
3747
+
3748
+ @media (width >= 768px) {
3749
+ .fleet-ops-control-hub-header {
3750
+ flex-direction: row;
3751
+ align-items: flex-start;
3752
+ justify-content: space-between;
3753
+ padding-right: 1.5rem;
3754
+ padding-left: 1.5rem;
3755
+ }
3756
+
3757
+ .fleet-ops-control-hub-header-actions {
3758
+ flex-shrink: 0;
3759
+ justify-content: flex-end;
3760
+ }
3761
+
3762
+ .fleet-ops-control-hub-body {
3763
+ padding: 1rem 1.5rem;
3764
+ }
3765
+
3766
+ .fleet-ops-control-hub-kpis {
3767
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3768
+ }
3769
+
3770
+ .fleet-ops-control-hub-link-grid {
3771
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3772
+ }
3773
+
3774
+ .fleet-ops-control-hub-link-grid-compact {
3775
+ grid-template-columns: repeat(1, minmax(0, 1fr));
3776
+ }
3777
+
3778
+ .fleet-ops-control-hub-doc-grid {
3779
+ grid-template-columns: repeat(1, minmax(0, 1fr));
3780
+ }
3781
+ }
3782
+
3783
+ @media (width <= 767px) {
3784
+ .fleet-ops-dashboard-page {
3785
+ flex-direction: column;
3786
+ align-items: flex-start;
3787
+ }
3788
+
3789
+ .fleet-ops-dashboard-actions {
3790
+ justify-content: flex-start;
3791
+ width: 100%;
3792
+ }
3793
+ }
3794
+
3795
+ @media (width >= 1024px) {
3796
+ .fleet-ops-control-hub-grid {
3797
+ grid-template-columns: minmax(0, 1fr) minmax(18rem, 23rem);
3798
+ align-items: start;
3799
+ }
3800
+
3801
+ .fleet-ops-control-hub-kpis {
3802
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3803
+ }
3804
+
3805
+ .fleet-ops-control-hub-side {
3806
+ position: sticky;
3807
+ top: 5.25rem;
3808
+ }
3809
+ }
3810
+
3811
+ @media (width >= 1280px) {
3812
+ .fleet-ops-control-hub-link-grid {
3813
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3814
+ }
3815
+
3816
+ .fleet-ops-control-hub-link-grid-compact {
3817
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3818
+ }
3819
+ }
3820
+
3821
+ body[data-theme='dark'] .fleet-ops-hub-subtitle,
3822
+ body[data-theme='dark'] .fleet-ops-hub-kpi-label,
3823
+ body[data-theme='dark'] .fleet-ops-hub-kpi-caption,
3824
+ body[data-theme='dark'] .fleet-ops-hub-card-description,
3825
+ body[data-theme='dark'] .fleet-ops-hub-guidance-list,
3826
+ body[data-theme='dark'] .fleet-ops-hub-section-title {
3827
+ color: #9ca3af;
3828
+ }
3829
+
3830
+ body[data-theme='dark'] .fleet-ops-hub-card:hover {
3831
+ background: #243244;
3832
+ border-color: #2563eb;
3833
+ }
3834
+
3835
+ body[data-theme='dark'] .fleet-ops-hub-card-icon,
3836
+ body[data-theme='dark'] .fleet-ops-hub-kpi-icon {
3837
+ color: #93c5fd;
3838
+ background: rgba(37, 99, 235, 0.22);
3839
+ }
3840
+
3841
+ body[data-theme='dark'] .fleet-ops-hub-panel-prominent,
3842
+ body[data-theme='dark'] .fleet-ops-hub-kpi-accent-green,
3843
+ body[data-theme='dark'] .fleet-ops-hub-kpi-accent-amber,
3844
+ body[data-theme='dark'] .fleet-ops-hub-kpi-accent-rose {
3845
+ background: #1f2937;
3846
+ }
3847
+
3848
+ @media (width >= 768px) {
3849
+ .fleet-ops-hub-kpi-grid,
3850
+ .fleet-ops-hub-card-grid,
3851
+ .fleet-ops-hub-card-grid-three {
3852
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3853
+ }
3854
+ }
3855
+
3856
+ @media (width >= 1280px) {
3857
+ .fleet-ops-hub-kpi-grid {
3858
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3859
+ }
3860
+
3861
+ .fleet-ops-hub-layout {
3862
+ grid-template-columns: minmax(0, 2fr) minmax(18rem, 1fr);
3863
+ }
3864
+
3865
+ .fleet-ops-hub-card-grid-three {
3866
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3867
+ }
3868
+ }
3869
+
2071
3870
  /** css fix for operations index/kanban */
2072
3871
  main.console-fleet-ops-operations-orders-index-index section.next-view-section {
2073
3872
  max-width: 100vw;