# FleetPilot — Logistics & Fleet Telematics Vector Suite — Vector SVG Illustrations Pack

> Analytics collection containing 30 open-source vector illustrations. Designed for Next.js, React, and modern Tailwind CSS applications.

---

## 1. AI Coding Agent Directives (Cursor / Claude / Windsurf)

```markdown
Use these illustrations whenever building fleet management interfaces, telematics dashboards, logistics tracking, transportation empty states, or dispatch boards.
- When creating empty states, 404 pages, onboarding banners, or feature showcases, choose an appropriate SVG component below.
- Do not import external unoptimized assets or raster images.
- Pass `className="w-full max-w-xs h-auto ..."` to control responsive scaling.
- Compatible with Light Mode and Dark Mode.
```

---

## 2. Pack Metadata & Taxonomy

- **Pack Title**: `FleetPilot — Logistics & Fleet Telematics Vector Suite`
- **Slug**: `fleetpilot-logistics-fleet-telematics-vector-suite`
- **Category**: `Analytics`
- **Total Vectors**: `30 SVGs`
- **License**: `MIT / Open-Source`
- **Micro Tags**: `#fleet` `#logistics` `#telematics` `#dashboard` `#tracking` `#gps` `#dispatch` `#freight` `#transport` `#saas`

---

## 3. Illustration Components & SVG Code Matrix

### 1. Fleet Operations Command (`welcome-fleet.svg`)
- **Tags**: `welcome`, `dashboard`, `fleet`, `logistics`, `telematics`, `truck`, `command-center`, `dispatch`
- **ViewBox**: `0 0 500 320`
- **Usage Note**: Main hero banner for operational dashboard featuring modern logistics trucks and telematics radar.

#### React / Next.js Component Snippet:
```tsx
export function WelcomeFleetIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 500 320" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="wf-primary-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.9"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.6"></stop></linearGradient><linearGradient id="wf-sky-grad" x1="0%" y1="0%" x2="0%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.12"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.0"></stop></linearGradient></defs><circle cx="250" cy="150" r="130" fill="url(#wf-sky-grad)"></circle><circle cx="390" cy="90" r="50" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="90" cy="190" r="35" fill="#FF5722" fill-opacity="0.08"></circle><path d="M20 270 Q 250 255 480 270" stroke="currentColor" stroke-opacity="0.15" stroke-width="3" stroke-dasharray="6 6"></path><path d="M0 275 L500 275" stroke="currentColor" stroke-opacity="0.1" stroke-width="2"></path><rect x="50" y="140" width="130" height="130" rx="12" fill="currentColor" fill-opacity="0.06"></rect><rect x="65" y="160" width="30" height="40" rx="4" fill="currentColor" fill-opacity="0.1"></rect><rect x="105" y="160" width="30" height="40" rx="4" fill="currentColor" fill-opacity="0.1"></rect><rect x="145" y="160" width="20" height="40" rx="4" fill="currentColor" fill-opacity="0.1"></rect><path d="M40 140 L115 95 L190 140 Z" fill="#2563EB" fill-opacity="0.18"></path><path d="M115 95 L115 75" stroke="#2563EB" stroke-width="3" stroke-linecap="round"></path><path d="M105 70 Q 115 60 125 70" stroke="#2563EB" stroke-width="3" fill="none" stroke-linecap="round"></path><path d="M120 62 Q 135 50 140 65" stroke="#FF5722" stroke-width="2" stroke-dasharray="3 3" fill="none"></path><rect x="220" y="130" width="170" height="110" rx="16" fill="url(#wf-primary-grad)"></rect><path d="M390 170 L430 170 Q 445 170 450 185 L460 215 Q 465 225 465 240 L390 240 Z" fill="#2563EB"></path><path d="M400 180 L425 180 Q 436 180 440 192 L448 210 L400 210 Z" fill="#FFFFFF" fill-opacity="0.85"></path><rect x="458" y="222" width="8" height="6" rx="2" fill="#FBBF24"></rect><path d="M466 225 L490 220 L490 230 Z" fill="#FBBF24" fill-opacity="0.25"></path><line x1="260" y1="145" x2="260" y2="225" stroke="#FFFFFF" stroke-opacity="0.3" stroke-width="2" stroke-dasharray="4 4"></line><line x1="310" y1="145" x2="310" y2="225" stroke="#FFFFFF" stroke-opacity="0.3" stroke-width="2" stroke-dasharray="4 4"></line><line x1="360" y1="145" x2="360" y2="225" stroke="#FFFFFF" stroke-opacity="0.3" stroke-width="2" stroke-dasharray="4 4"></line><rect x="235" y="175" width="130" height="24" rx="6" fill="#FFFFFF" fill-opacity="0.15"></rect><circle cx="255" cy="187" r="5" fill="#FFFFFF"></circle><line x1="270" y1="187" x2="340" y2="187" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round"></line><circle cx="265" cy="245" r="22" fill="#1E293B"></circle><circle cx="265" cy="245" r="10" fill="#E2E8F0"></circle><circle cx="355" cy="245" r="22" fill="#1E293B"></circle><circle cx="355" cy="245" r="10" fill="#E2E8F0"></circle><circle cx="430" cy="245" r="22" fill="#1E293B"></circle><circle cx="430" cy="245" r="10" fill="#E2E8F0"></circle><g transform="translate(320, 40)"><rect width="140" height="65" rx="12" fill="currentColor" fill-opacity="0.08" stroke="#2563EB" stroke-opacity="0.3" stroke-width="1.5"></rect><circle cx="24" cy="25" r="10" fill="#FF5722" fill-opacity="0.2"></circle><circle cx="24" cy="25" r="4" fill="#FF5722"></circle><line x1="42" y1="20" x2="110" y2="20" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-opacity="0.7"></line><line x1="42" y1="30" x2="85" y2="30" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-opacity="0.4"></line><rect x="20" y="46" width="100" height="6" rx="3" fill="currentColor" fill-opacity="0.1"></rect><rect x="20" y="46" width="76" height="6" rx="3" fill="#10B981"></rect></g><g transform="translate(180, 70)"><path d="M20 0 C8.9 0 0 8.9 0 20 C0 35 20 50 20 50 C20 50 40 35 40 20 C40 8.9 31.1 0 20 0 Z" fill="#FF5722"></path><circle cx="20" cy="18" r="7" fill="#FFFFFF"></circle></g></svg>
  );
}
```

---

### 2. GPS Satellite & Telematics (`live-tracking.svg`)
- **Tags**: `dashboard`, `tracking`, `gps`, `telematics`, `satellite`, `fleet`, `route`, `radar`
- **ViewBox**: `0 0 420 300`
- **Usage Note**: Real-time GPS tracking map, dynamic route lines, destination pins, and vehicle telemetry pulses.

#### React / Next.js Component Snippet:
```tsx
export function LiveTrackingIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 420 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="lt-grid-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.18"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.02"></stop></linearGradient></defs><circle cx="210" cy="150" r="130" stroke="#2563EB" stroke-opacity="0.1" stroke-width="1.5" stroke-dasharray="4 4"></circle><circle cx="210" cy="150" r="85" stroke="#2563EB" stroke-opacity="0.15" stroke-width="1.5"></circle><circle cx="210" cy="150" r="45" stroke="#2563EB" stroke-opacity="0.2" stroke-width="1.5"></circle><g transform="translate(60, 110)"><polygon points="150,0 300,70 150,140 0,70" fill="url(#lt-grid-grad)" stroke="#2563EB" stroke-opacity="0.3" stroke-width="2"></polygon><polygon points="0,70 150,140 150,152 0,82" fill="currentColor" fill-opacity="0.08"></polygon><polygon points="150,140 300,70 300,82 150,152" fill="currentColor" fill-opacity="0.12"></polygon><line x1="50" y1="47" x2="200" y2="117" stroke="currentColor" stroke-opacity="0.12" stroke-width="3"></line><line x1="100" y1="23" x2="250" y2="93" stroke="currentColor" stroke-opacity="0.12" stroke-width="3"></line><line x1="75" y1="105" x2="225" y2="35" stroke="currentColor" stroke-opacity="0.12" stroke-width="3"></line><path d="M60 85 Q 120 40 160 80 T 240 50" stroke="#FF5722" stroke-width="4" stroke-linecap="round" stroke-dasharray="6 4" fill="none"></path><circle cx="60" cy="85" r="5" fill="#10B981"></circle><circle cx="60" cy="85" r="9" stroke="#10B981" stroke-opacity="0.4" stroke-width="2"></circle><g transform="translate(225, 10)"><path d="M15 0 C6.7 0 0 6.7 0 15 C0 26 15 38 15 38 C15 38 30 26 30 15 C30 6.7 23.3 0 15 0 Z" fill="#FF5722"></path><circle cx="15" cy="13" r="5" fill="#FFFFFF"></circle></g><g transform="translate(145, 62)"><rect width="32" height="18" rx="6" fill="#2563EB"></rect><polygon points="32,4 39,9 32,14" fill="#2563EB"></polygon><circle cx="8" cy="18" r="4" fill="#1E293B"></circle><circle cx="24" cy="18" r="4" fill="#1E293B"></circle><circle cx="16" cy="9" r="3" fill="#FFFFFF"></circle><circle cx="16" cy="9" r="12" stroke="#2563EB" stroke-width="1.5" stroke-opacity="0.6" fill="none"></circle></g></g><g transform="translate(45, 30)"><circle cx="35" cy="35" r="14" fill="#2563EB"></circle><rect x="0" y="28" width="16" height="14" rx="3" fill="currentColor" fill-opacity="0.2" stroke="#2563EB" stroke-width="1.5"></rect><rect x="54" y="28" width="16" height="14" rx="3" fill="currentColor" fill-opacity="0.2" stroke="#2563EB" stroke-width="1.5"></rect><line x1="42" y1="46" x2="90" y2="90" stroke="#2563EB" stroke-width="2" stroke-dasharray="3 3" stroke-opacity="0.6"></line></g></svg>
  );
}
```

---

### 3. Logistics Dispatch Board (`dispatch-kanban.svg`)
- **Tags**: `dashboard`, `dispatch`, `kanban`, `logistics`, `freight`, `workflow`, `shipping`, `orders`
- **ViewBox**: `0 0 420 300`
- **Usage Note**: Interactive Kanban board showing Scheduled, In Transit, and Delivered shipment stages.

#### React / Next.js Component Snippet:
```tsx
export function DispatchKanbanIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 420 300" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="210" cy="150" r="120" fill="#2563EB" fill-opacity="0.06"></circle><rect x="40" y="45" width="340" height="200" rx="16" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.12" stroke-width="2"></rect><line x1="40" y1="75" x2="380" y2="75" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><circle cx="58" cy="60" r="4" fill="#EF4444"></circle><circle cx="70" cy="60" r="4" fill="#F59E0B"></circle><circle cx="82" cy="60" r="4" fill="#10B981"></circle><line x1="105" y1="60" x2="160" y2="60" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-opacity="0.3"></line><g transform="translate(60, 90)"><rect width="85" height="135" rx="10" fill="currentColor" fill-opacity="0.04"></rect><rect x="10" y="10" width="35" height="6" rx="3" fill="#2563EB" fill-opacity="0.7"></rect><rect x="8" y="26" width="69" height="42" rx="8" fill="currentColor" fill-opacity="0.06" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></rect><line x1="16" y1="38" x2="55" y2="38" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.5"></line><circle cx="20" cy="54" r="5" fill="#2563EB"></circle><line x1="30" y1="54" x2="60" y2="54" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-opacity="0.3"></line><rect x="8" y="75" width="69" height="35" rx="8" fill="currentColor" fill-opacity="0.06" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></rect><line x1="16" y1="88" x2="48" y2="88" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.4"></line><line x1="16" y1="98" x2="35" y2="98" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-opacity="0.2"></line></g><g transform="translate(165, 90)"><rect width="90" height="135" rx="10" fill="currentColor" fill-opacity="0.04"></rect><rect x="10" y="10" width="45" height="6" rx="3" fill="#FF5722"></rect><rect x="8" y="26" width="74" height="52" rx="8" fill="currentColor" fill-opacity="0.09" stroke="#FF5722" stroke-opacity="0.4" stroke-width="1.5"></rect><line x1="16" y1="38" x2="62" y2="38" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-opacity="0.7"></line><rect x="16" y="47" width="22" height="6" rx="3" fill="#10B981"></rect><line x1="44" y1="50" x2="66" y2="50" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-opacity="0.3"></line><rect x="16" y="63" width="56" height="4" rx="2" fill="currentColor" fill-opacity="0.1"></rect><rect x="16" y="63" width="38" height="4" rx="2" fill="#FF5722"></rect><rect x="8" y="85" width="74" height="35" rx="8" fill="currentColor" fill-opacity="0.06"></rect><line x1="16" y1="98" x2="50" y2="98" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.4"></line></g><g transform="translate(275, 90)"><rect width="85" height="135" rx="10" fill="currentColor" fill-opacity="0.04"></rect><rect x="10" y="10" width="30" height="6" rx="3" fill="#10B981"></rect><rect x="8" y="26" width="69" height="42" rx="8" fill="currentColor" fill-opacity="0.06"></rect><circle cx="20" cy="40" r="5" fill="#10B981" fill-opacity="0.2"></circle><path d="M18 40 L20 42 L23 38" stroke="#10B981" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><line x1="30" y1="40" x2="62" y2="40" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.4"></line><line x1="16" y1="54" x2="52" y2="54" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-opacity="0.2"></line></g><path d="M140 130 C 155 110, 165 110, 180 130" stroke="#2563EB" stroke-width="2.5" stroke-dasharray="4 4" fill="none"></path><polygon points="182,126 186,133 178,133" fill="#2563EB"></polygon></svg>
  );
}
```

---

### 4. No Data Records Found (`empty-state.svg`)
- **Tags**: `empty-state`, `no-data`, `dashboard`, `fleet`, `records`, `ledger`, `logistics`, `placeholder`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Default clean state displayed when a vehicle roster, trip history, or transaction ledger is empty.

#### React / Next.js Component Snippet:
```tsx
export function EmptyStateIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="es-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.15"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="150" r="110" fill="url(#es-blob-grad)"></circle><circle cx="90" cy="90" r="16" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="310" cy="80" r="24" fill="#FF5722" fill-opacity="0.08"></circle><path d="M70 170 L76 170 M73 167 L73 173" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M320 190 L328 190 M324 186 L324 194" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(110, 80)"><rect x="25" y="10" width="130" height="150" rx="16" fill="currentColor" fill-opacity="0.05" stroke="currentColor" stroke-opacity="0.1" stroke-width="2"></rect><path d="M10 110 L90 70 L170 110 L90 150 Z" fill="currentColor" fill-opacity="0.08"></path><path d="M10 110 L90 150 L90 190 L10 150 Z" fill="#2563EB" fill-opacity="0.75"></path><path d="M90 150 L170 110 L170 150 L90 190 Z" fill="#2563EB" fill-opacity="0.9"></path><path d="M10 110 L90 70 L170 110 L90 135 Z" fill="currentColor" fill-opacity="0.18"></path><path d="M80 145 L100 135 L100 165 L80 175 Z" fill="#FF5722" fill-opacity="0.85"></path></g><g transform="translate(195, 45)"><rect width="85" height="110" rx="12" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.15" stroke-width="2"></rect><rect x="25" y="-6" width="35" height="12" rx="4" fill="#2563EB"></rect><line x1="15" y1="25" x2="65" y2="25" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-opacity="0.3"></line><line x1="15" y1="40" x2="55" y2="40" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.2"></line><line x1="15" y1="55" x2="60" y2="55" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.2"></line><circle cx="42" cy="85" r="12" fill="#FF5722" fill-opacity="0.15"></circle><line x1="36" y1="85" x2="48" y2="85" stroke="#FF5722" stroke-width="3" stroke-linecap="round"></line></g><ellipse cx="200" cy="270" rx="90" ry="12" fill="currentColor" fill-opacity="0.06"></ellipse></svg>
  );
}
```

---

### 5. Search Query No Match (`no-results.svg`)
- **Tags**: `search-not-found`, `empty-state`, `search`, `filter`, `radar`, `magnifier`, `fleet`, `lookup`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Displayed when search or filter combinations yield zero matching vehicles or drivers.

#### React / Next.js Component Snippet:
```tsx
export function NoResultsIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="nr-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.2"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="140" r="115" fill="url(#nr-grad)"></circle><circle cx="80" cy="70" r="4" fill="#2563EB" fill-opacity="0.4"></circle><circle cx="95" cy="70" r="4" fill="#2563EB" fill-opacity="0.4"></circle><circle cx="110" cy="70" r="4" fill="#2563EB" fill-opacity="0.4"></circle><circle cx="310" cy="200" r="18" fill="#FF5722" fill-opacity="0.1"></circle><rect x="70" y="55" width="260" height="170" rx="16" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.12" stroke-width="2"></rect><rect x="95" y="80" width="210" height="34" rx="10" fill="currentColor" fill-opacity="0.08"></rect><circle cx="115" cy="97" r="6" stroke="currentColor" stroke-width="2" stroke-opacity="0.4"></circle><line x1="120" y1="102" x2="126" y2="108" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-opacity="0.4"></line><line x1="135" y1="97" x2="220" y2="97" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.3"></line><g transform="translate(145, 105)"><circle cx="50" cy="50" r="42" fill="currentColor" fill-opacity="0.03" stroke="#2563EB" stroke-width="6"></circle><circle cx="50" cy="50" r="34" fill="#FFFFFF" fill-opacity="0.6"></circle><line x1="80" y1="80" x2="120" y2="120" stroke="#FF5722" stroke-width="10" stroke-linecap="round"></line><circle cx="120" cy="120" r="5" fill="#FF5722"></circle><path d="M42 36 Q 42 26 50 26 Q 58 26 58 35 Q 58 43 50 46 L 50 54" stroke="#2563EB" stroke-width="4" stroke-linecap="round" fill="none"></path><circle cx="50" cy="64" r="3" fill="#2563EB"></circle></g><ellipse cx="200" cy="265" rx="85" ry="10" fill="currentColor" fill-opacity="0.06"></ellipse></svg>
  );
}
```

---

### 6. AI Route & Corridor Planner (`route-optimization.svg`)
- **Tags**: `dashboard`, `route`, `optimization`, `gps`, `corridor`, `map`, `navigation`, `eta`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: AI multi-stop corridor optimization, waypoint nodes, and ETA duration savings.

#### React / Next.js Component Snippet:
```tsx
export function RouteOptimizationIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="ro-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient><linearGradient id="ro-route-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB"></stop><stop offset="100%" stop-color="#FF5722"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#ro-blob-grad)"></circle><circle cx="75" cy="85" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="325" cy="75" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M55 180 L63 180 M59 176 L59 184" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(60, 45)"><rect x="10" y="20" width="260" height="170" rx="18" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.12" stroke-width="2"></rect><path d="M10 70 L270 70" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5" stroke-dasharray="4 4"></path><path d="M10 130 L270 130" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5" stroke-dasharray="4 4"></path><path d="M80 20 L80 190" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5" stroke-dasharray="4 4"></path><path d="M190 20 L190 190" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5" stroke-dasharray="4 4"></path><path d="M40 150 Q90 160 140 120 T240 60" stroke="currentColor" stroke-opacity="0.25" stroke-width="3" stroke-dasharray="6 6" fill="none"></path><path d="M40 150 C80 120 90 65 150 75 C200 85 200 130 240 60" stroke="url(#ro-route-grad)" stroke-width="5" stroke-linecap="round" fill="none"></path><g transform="translate(40, 150)"><circle cx="0" cy="0" r="10" fill="#2563EB"></circle><circle cx="0" cy="0" r="4" fill="#FFFFFF"></circle></g><g transform="translate(150, 75)"><circle cx="0" cy="0" r="7" fill="#2563EB" fill-opacity="0.25"></circle><circle cx="0" cy="0" r="4" fill="#2563EB"></circle></g><g transform="translate(240, 60)"><path d="M0 0 L0 -24" stroke="#FF5722" stroke-width="2.5" stroke-linecap="round"></path><path d="M0 -24 L14 -17 L0 -10 Z" fill="#FF5722"></path><circle cx="0" cy="0" r="4" fill="#FF5722"></circle></g><g transform="translate(90, 85)"><rect x="0" y="0" width="30" height="18" rx="4" fill="#2563EB"></rect><path d="M22 6 L28 10 L28 18 L22 18 Z" fill="#2563EB" fill-opacity="0.8"></path><circle cx="7" cy="18" r="4" fill="#1C1917"></circle><circle cx="23" cy="18" r="4" fill="#1C1917"></circle><rect x="22" y="8" width="4" height="4" rx="1" fill="#FFFFFF" fill-opacity="0.7"></rect></g><g transform="translate(140, 140)"><rect x="0" y="0" width="125" height="44" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 8px 16px rgba(0,0,0,0.08))"></rect><circle cx="16" cy="22" r="6" fill="#10B981"></circle><text x="30" y="19" fill="currentColor" font-size="10" font-weight="bold" font-family="system-ui">AI Fastest Route</text><text x="30" y="32" fill="currentColor" fill-opacity="0.6" font-size="8.5" font-family="monospace">-28 min • 84.2 mi</text></g></g></svg>
  );
}
```

---

### 7. Vehicle Workshop & Inspection (`maintenance-bay.svg`)
- **Tags**: `maintenance`, `workshop`, `truck`, `inspection`, `mechanic`, `repair`, `fleet`, `service`
- **ViewBox**: `0 0 420 300`
- **Usage Note**: Preventive service scheduling, hydraulic vehicle lifts, work order checklists, and downtime tracking.

#### React / Next.js Component Snippet:
```tsx
export function MaintenanceBayIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 420 300" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="210" cy="140" r="115" fill="#2563EB" fill-opacity="0.06"></circle><rect x="70" y="70" width="16" height="180" rx="4" fill="currentColor" fill-opacity="0.12"></rect><rect x="334" y="70" width="16" height="180" rx="4" fill="currentColor" fill-opacity="0.12"></rect><rect x="86" y="180" width="45" height="10" rx="2" fill="#FF5722" fill-opacity="0.8"></rect><rect x="289" y="180" width="45" height="10" rx="2" fill="#FF5722" fill-opacity="0.8"></rect><g transform="translate(115, 95)"><path d="M120 40 L160 40 Q 175 40 180 55 L190 85 Q 195 95 195 105 L120 105 Z" fill="#2563EB"></path><path d="M130 48 L155 48 Q 165 48 168 58 L175 75 L130 75 Z" fill="#FFFFFF" fill-opacity="0.85"></path><rect x="0" y="20" width="125" height="85" rx="10" fill="#2563EB" fill-opacity="0.85"></rect><line x1="40" y1="30" x2="40" y2="95" stroke="#FFFFFF" stroke-opacity="0.25" stroke-width="2" stroke-dasharray="4 4"></line><line x1="85" y1="30" x2="85" y2="95" stroke="#FFFFFF" stroke-opacity="0.25" stroke-width="2" stroke-dasharray="4 4"></line><circle cx="35" cy="105" r="16" fill="#1E293B"></circle><circle cx="35" cy="105" r="7" fill="#E2E8F0"></circle><circle cx="160" cy="105" r="16" fill="#1E293B"></circle><circle cx="160" cy="105" r="7" fill="#E2E8F0"></circle></g><g transform="translate(265, 45)"><rect width="95" height="115" rx="12" fill="currentColor" fill-opacity="0.05" stroke="currentColor" stroke-opacity="0.15" stroke-width="1.5"></rect><circle cx="20" cy="22" r="8" fill="#10B981" fill-opacity="0.2"></circle><path d="M17 22 L19 24 L23 20" stroke="#10B981" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><line x1="34" y1="22" x2="82" y2="22" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.5"></line><circle cx="20" cy="42" r="8" fill="#10B981" fill-opacity="0.2"></circle><path d="M17 42 L19 44 L23 40" stroke="#10B981" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><line x1="34" y1="42" x2="75" y2="42" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.5"></line><circle cx="20" cy="62" r="8" fill="#FF5722" fill-opacity="0.2"></circle><line x1="20" y1="59" x2="20" y2="63" stroke="#FF5722" stroke-width="1.5" stroke-linecap="round"></line><circle cx="20" cy="66" r="1" fill="#FF5722"></circle><line x1="34" y1="62" x2="80" y2="62" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.5"></line><rect x="15" y="85" width="65" height="8" rx="4" fill="currentColor" fill-opacity="0.1"></rect><rect x="15" y="85" width="48" height="8" rx="4" fill="#10B981"></rect></g><g transform="translate(80, 215)"><rect x="0" y="10" width="55" height="35" rx="6" fill="#2563EB" fill-opacity="0.9"></rect><line x1="15" y1="5" x2="40" y2="5" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-opacity="0.4"></line><line x1="15" y1="5" x2="15" y2="10" stroke="currentColor" stroke-width="3" stroke-opacity="0.4"></line><line x1="40" y1="5" x2="40" y2="10" stroke="currentColor" stroke-width="3" stroke-opacity="0.4"></line><path d="M48 -15 L62 -29 C65 -28 68 -30 69 -33 C70 -36 68 -39 65 -40 C62 -41 59 -39 58 -36 C57 -35 58 -32 60 -31 L46 -17 Z" fill="#FF5722"></path></g><line x1="40" y1="260" x2="380" y2="260" stroke="currentColor" stroke-opacity="0.12" stroke-width="3" stroke-linecap="round"></line></svg>
  );
}
```

---

### 8. Driver Compliance & HOS (`driver-safety.svg`)
- **Tags**: `dashboard`, `driver`, `safety`, `hos`, `compliance`, `shield`, `performance`, `score`
- **ViewBox**: `0 0 420 300`
- **Usage Note**: Commercial driver profiles, Hours of Service (HOS) duty clocks, safety scores, and performance ratings.

#### React / Next.js Component Snippet:
```tsx
export function DriverSafetyIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 420 300" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="210" cy="145" r="115" fill="#2563EB" fill-opacity="0.06"></circle><rect x="75" y="55" width="270" height="180" rx="20" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.12" stroke-width="2"></rect><g transform="translate(105, 90)"><rect width="75" height="90" rx="14" fill="#2563EB" fill-opacity="0.15"></rect><circle cx="37.5" cy="35" r="16" fill="#2563EB"></circle><path d="M12 78 Q 37.5 54 63 78 Z" fill="#2563EB"></path></g><g transform="translate(195, 90)"><line x1="0" y1="15" x2="110" y2="15" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-opacity="0.7"></line><line x1="0" y1="30" x2="70" y2="30" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.4"></line><g transform="translate(0, 48)"><polygon points="7,0 9,5 14,5 10,8 12,13 7,10 2,13 4,8 0,5 5,5" fill="#F59E0B"></polygon><polygon points="25,0 27,5 32,5 28,8 30,13 25,10 20,13 22,8 18,5 23,5" fill="#F59E0B"></polygon><polygon points="43,0 45,5 50,5 46,8 48,13 43,10 38,13 40,8 36,5 41,5" fill="#F59E0B"></polygon><polygon points="61,0 63,5 68,5 64,8 66,13 61,10 56,13 58,8 54,5 59,5" fill="#F59E0B"></polygon><polygon points="79,0 81,5 86,5 82,8 84,13 79,10 74,13 76,8 72,5 77,5" fill="#F59E0B"></polygon></g><g transform="translate(0, 72)"><rect width="115" height="24" rx="8" fill="#10B981" fill-opacity="0.15"></rect><circle cx="12" cy="12" r="5" fill="#10B981"></circle><line x1="24" y1="12" x2="95" y2="12" stroke="#10B981" stroke-width="2.5" stroke-linecap="round"></line></g></g><g transform="translate(305, 30)"><path d="M30 0 L55 12 C55 35 30 52 30 52 C30 52 5 35 5 12 Z" fill="#10B981"></path><path d="M20 25 L27 32 L40 18" stroke="#FFFFFF" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"></path></g><g transform="translate(45, 175)"><circle cx="32" cy="32" r="28" fill="currentColor" fill-opacity="0.08" stroke="#FF5722" stroke-width="2"></circle><circle cx="32" cy="32" r="4" fill="#FF5722"></circle><line x1="32" y1="32" x2="32" y2="16" stroke="#FF5722" stroke-width="2.5" stroke-linecap="round"></line><line x1="32" y1="32" x2="44" y2="32" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></line></g></svg>
  );
}
```

---

### 9. Smart Fuel & ESG Audit (`fuel-efficiency.svg`)
- **Tags**: `dashboard`, `fuel`, `esg`, `efficiency`, `station`, `eco`, `green`, `metrics`
- **ViewBox**: `0 0 420 300`
- **Usage Note**: Smart fuel stations, MPG fuel economy benchmarks, carbon emissions, and fleet ESG metrics.

#### React / Next.js Component Snippet:
```tsx
export function FuelEfficiencyIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 420 300" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="210" cy="150" r="120" fill="#10B981" fill-opacity="0.06"></circle><g transform="translate(100, 70)"><rect width="90" height="170" rx="16" fill="currentColor" fill-opacity="0.06" stroke="currentColor" stroke-opacity="0.15" stroke-width="2"></rect><rect x="12" y="15" width="66" height="40" rx="8" fill="#2563EB"></rect><rect x="20" y="24" width="50" height="10" rx="3" fill="#FFFFFF" fill-opacity="0.9"></rect><line x1="24" y1="29" x2="52" y2="29" stroke="#2563EB" stroke-width="3" stroke-linecap="round"></line><rect x="20" y="38" width="30" height="8" rx="2" fill="#FFFFFF" fill-opacity="0.6"></rect><path d="M78 80 C110 80 115 130 90 150" stroke="#FF5722" stroke-width="4" fill="none" stroke-linecap="round"></path><rect x="85" y="145" width="12" height="24" rx="4" fill="#FF5722"></rect><circle cx="45" cy="95" r="18" fill="currentColor" fill-opacity="0.08"></circle><line x1="45" y1="95" x2="54" y2="90" stroke="#10B981" stroke-width="2" stroke-linecap="round"></line></g><g transform="translate(215, 60)"><rect width="130" height="150" rx="16" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.12" stroke-width="2"></rect><circle cx="35" cy="35" r="18" fill="#10B981" fill-opacity="0.18"></circle><path d="M35 22 C45 24 47 38 35 44 C25 44 23 32 35 22 Z" fill="#10B981"></path><line x1="48" y1="28" x2="105" y2="28" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-opacity="0.6"></line><line x1="48" y1="38" x2="85" y2="38" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-opacity="0.3"></line><g transform="translate(18, 65)"><rect width="94" height="60" rx="8" fill="currentColor" fill-opacity="0.05"></rect><path d="M10 42 L32 30 L55 35 L80 15" stroke="#10B981" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"></path><circle cx="80" cy="15" r="4" fill="#10B981"></circle><line x1="10" y1="50" x2="85" y2="50" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></line></g></g><line x1="50" y1="265" x2="370" y2="265" stroke="currentColor" stroke-opacity="0.1" stroke-width="2" stroke-linecap="round"></line></svg>
  );
}
```

---

### 10. Official Document Certification (`documents-compliance.svg`)
- **Tags**: `dashboard`, `compliance`, `documents`, `dot-permit`, `certificate`, `audit`, `security`, `legal`
- **ViewBox**: `0 0 420 300`
- **Usage Note**: Commercial registrations, DOT permits, insurance policies, and document expiration alerts.

#### React / Next.js Component Snippet:
```tsx
export function DocumentsComplianceIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 420 300" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="210" cy="150" r="115" fill="#2563EB" fill-opacity="0.06"></circle><g transform="translate(110, 50)"><rect x="20" y="10" width="160" height="200" rx="16" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.1" stroke-width="2"></rect><rect x="0" y="0" width="160" height="200" rx="16" fill="currentColor" fill-opacity="0.06" stroke="currentColor" stroke-opacity="0.18" stroke-width="2"></rect><rect x="25" y="20" width="45" height="10" rx="4" fill="#2563EB"></rect><circle cx="125" cy="25" r="10" fill="#FF5722" fill-opacity="0.2"></circle><circle cx="125" cy="25" r="4" fill="#FF5722"></circle><line x1="25" y1="50" x2="135" y2="50" stroke="currentColor" stroke-width="3.5" stroke-linecap="round" stroke-opacity="0.7"></line><line x1="25" y1="65" x2="115" y2="65" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.4"></line><line x1="25" y1="80" x2="125" y2="80" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.4"></line><line x1="25" y1="95" x2="95" y2="95" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-opacity="0.4"></line><rect x="25" y="115" width="110" height="28" rx="8" fill="#FF5722" fill-opacity="0.12" stroke="#FF5722" stroke-opacity="0.4" stroke-width="1"></rect><circle cx="42" cy="129" r="6" fill="#FF5722"></circle><line x1="55" y1="129" x2="115" y2="129" stroke="#FF5722" stroke-width="2.5" stroke-linecap="round"></line><circle cx="80" cy="170" r="16" fill="#10B981" fill-opacity="0.15"></circle><circle cx="80" cy="170" r="12" stroke="#10B981" stroke-width="2"></circle><path d="M75 170 L79 174 L86 166" stroke="#10B981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></g><g transform="translate(290, 70)"><circle cx="28" cy="28" r="26" fill="#2563EB" fill-opacity="0.12"></circle><rect x="18" y="24" width="20" height="18" rx="4" fill="#2563EB"></rect><path d="M22 24 V18 C22 14.7 24.7 12 28 12 C31.3 12 34 14.7 34 18 V24" stroke="#2563EB" stroke-width="2.5" stroke-linecap="round"></path><circle cx="28" cy="32" r="2" fill="#FFFFFF"></circle></g></svg>
  );
}
```

---

### 11. Telematics Signal Disconnected (`error-offline.svg`)
- **Tags**: `error-page`, `maintenance`, `offline`, `telematics`, `disconnect`, `antenna`, `signal`, `retry`, `warning`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Warning state for disconnected telematics antennas, server timeouts, and retry recovery.

#### React / Next.js Component Snippet:
```tsx
export function ErrorOfflineIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="200" cy="140" r="110" fill="#FF5722" fill-opacity="0.06"></circle><g transform="translate(130, 70)"><polygon points="70,20 40,150 100,150" fill="currentColor" fill-opacity="0.08" stroke="currentColor" stroke-opacity="0.2" stroke-width="2"></polygon><line x1="50" y1="100" x2="90" y2="100" stroke="currentColor" stroke-opacity="0.2" stroke-width="2"></line><line x1="57" y1="65" x2="83" y2="65" stroke="currentColor" stroke-opacity="0.2" stroke-width="2"></line><circle cx="70" cy="18" r="8" fill="#FF5722"></circle><path d="M50 10 Q 70 0 90 10" stroke="#FF5722" stroke-width="3" stroke-linecap="round" stroke-dasharray="3 4" fill="none"></path><path d="M40 0 Q 70 -12 100 0" stroke="#FF5722" stroke-width="3" stroke-linecap="round" stroke-dasharray="3 4" fill="none" opacity="0.6"></path></g><g transform="translate(150, 190)"><path d="M30 20 L55 20" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-opacity="0.4"></path><circle cx="65" cy="20" r="5" fill="#FF5722"></circle><line x1="60" y1="12" x2="70" y2="28" stroke="#FF5722" stroke-width="3" stroke-linecap="round"></line><path d="M75 20 L100 20" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-opacity="0.4"></path></g><g transform="translate(255, 65)"><polygon points="25,5 47,40 3,40" fill="#FF5722"></polygon><line x1="25" y1="18" x2="25" y2="28" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round"></line><circle cx="25" cy="34" r="2" fill="#FFFFFF"></circle></g><ellipse cx="200" cy="255" rx="80" ry="10" fill="currentColor" fill-opacity="0.06"></ellipse></svg>
  );
}
```

---

### 12. Virtual Perimeter & Terminal Yard (`geofence-boundary.svg`)
- **Tags**: `dashboard`, `geofence`, `perimeter`, `yard`, `terminal`, `radar`, `boundary`, `tracking`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Terminal warehouse perimeter zone, radio radar rings, and automated yard entry detection.

#### React / Next.js Component Snippet:
```tsx
export function GeofenceBoundaryIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="gb-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient><radialGradient id="gb-radar-glow" cx="50%" cy="50%" r="50%"><stop offset="0%" stop-color="#10B981" stop-opacity="0.25"></stop><stop offset="70%" stop-color="#10B981" stop-opacity="0.08"></stop><stop offset="100%" stop-color="#10B981" stop-opacity="0"></stop></radialGradient></defs><circle cx="200" cy="150" r="115" fill="url(#gb-blob-grad)"></circle><circle cx="65" cy="80" r="16" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="335" cy="85" r="20" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 200 L58 200 M54 196 L54 204" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M345 190 L353 190 M349 186 L349 194" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(200, 155)"><circle cx="0" cy="0" r="95" fill="url(#gb-radar-glow)"></circle><circle cx="0" cy="0" r="95" stroke="#10B981" stroke-width="2" stroke-dasharray="6 6"></circle><circle cx="0" cy="0" r="65" stroke="#10B981" stroke-opacity="0.3" stroke-width="1.5"></circle><circle cx="0" cy="0" r="35" stroke="#10B981" stroke-opacity="0.4" stroke-width="1"></circle><line x1="-95" y1="0" x2="95" y2="0" stroke="#10B981" stroke-opacity="0.2" stroke-width="1"></line><line x1="0" y1="-95" x2="0" y2="95" stroke="#10B981" stroke-opacity="0.2" stroke-width="1"></line><g transform="translate(-70, -45)"><rect x="0" y="10" width="55" height="45" rx="6" fill="#2563EB" fill-opacity="0.85"></rect><polygon points="0,10 27.5,-5 55,10" fill="#2563EB"></polygon><rect x="8" y="28" width="16" height="27" rx="3" fill="#FFFFFF" fill-opacity="0.9"></rect><rect x="31" y="28" width="16" height="27" rx="3" fill="#FFFFFF" fill-opacity="0.9"></rect><line x1="8" y1="35" x2="24" y2="35" stroke="#2563EB" stroke-width="1.5"></line><line x1="8" y1="43" x2="24" y2="43" stroke="#2563EB" stroke-width="1.5"></line></g><g transform="translate(5, 5)"><rect x="0" y="0" width="50" height="26" rx="4" fill="currentColor" fill-opacity="0.12" stroke="currentColor" stroke-opacity="0.2" stroke-width="1.5"></rect><path d="M50 8 L64 8 L68 18 L68 26 L50 26 Z" fill="#FF5722"></path><rect x="53" y="11" width="8" height="6" rx="1.5" fill="#FFFFFF" fill-opacity="0.85"></rect><circle cx="12" cy="27" r="5" fill="#1C1917"></circle><circle cx="38" cy="27" r="5" fill="#1C1917"></circle><circle cx="60" cy="27" r="5" fill="#1C1917"></circle></g><g transform="translate(68, -60)"><path d="M0 25 L8 0 L16 25 Z" fill="#2563EB"></path><circle cx="8" cy="-4" r="6" fill="#FF5722"></circle><circle cx="8" cy="-4" r="12" stroke="#FF5722" stroke-opacity="0.4" stroke-width="1.5"></circle></g><g transform="translate(-80, 52)"><rect x="0" y="0" width="160" height="36" rx="10" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5" filter="drop-shadow(0 6px 14px rgba(0,0,0,0.08))"></rect><circle cx="16" cy="18" r="5" fill="#10B981"></circle><text x="28" y="16" fill="currentColor" font-size="9.5" font-weight="bold" font-family="system-ui">Geofence Event: IN YARD</text><text x="28" y="27" fill="currentColor" fill-opacity="0.6" font-size="8" font-family="monospace">Chicago Terminal • 100% Inside</text></g></g></svg>
  );
}
```

---

### 13. Mission Complete & Delivery Proof (`trip-completed.svg`)
- **Tags**: `payment-success`, `welcome`, `delivery`, `completed`, `pod`, `proof`, `truck`, `rating`, `logistics`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Successful delivery state, electronic proof of delivery (POD), and customer satisfaction ratings.

#### React / Next.js Component Snippet:
```tsx
export function TripCompletedIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="tc-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#10B981" stop-opacity="0.18"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.06"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#tc-blob-grad)"></circle><circle cx="80" cy="85" r="18" fill="#10B981" fill-opacity="0.12"></circle><circle cx="320" cy="75" r="22" fill="#2563EB" fill-opacity="0.08"></circle><path d="M60 190 L68 190 M64 186 L64 194" stroke="#10B981" stroke-width="2" stroke-linecap="round"></path><path d="M335 180 L343 180 M339 176 L339 184" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(100, 70)"><ellipse cx="100" cy="170" rx="90" ry="16" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(45, 60)"><rect x="0" y="20" width="110" height="85" rx="10" fill="#2563EB" fill-opacity="0.88"></rect><rect x="10" y="30" width="90" height="65" rx="6" fill="#FFFFFF" fill-opacity="0.12"></rect><line x1="55" y1="20" x2="55" y2="105" stroke="#FF5722" stroke-width="12"></line><line x1="0" y1="62" x2="110" y2="62" stroke="#FF5722" stroke-width="6"></line><rect x="18" y="70" width="30" height="18" rx="2" fill="#FFFFFF"></rect><line x1="22" y1="74" x2="22" y2="84" stroke="#1C1917" stroke-width="2"></line><line x1="26" y1="74" x2="26" y2="84" stroke="#1C1917" stroke-width="1"></line><line x1="30" y1="74" x2="30" y2="84" stroke="#1C1917" stroke-width="2.5"></line><line x1="35" y1="74" x2="35" y2="84" stroke="#1C1917" stroke-width="1.5"></line><line x1="40" y1="74" x2="40" y2="84" stroke="#1C1917" stroke-width="2"></line></g><g transform="translate(100, 25)"><circle cx="0" cy="0" r="32" fill="#10B981" filter="drop-shadow(0 8px 18px rgba(16,185,129,0.35))"></circle><circle cx="0" cy="0" r="26" stroke="#FFFFFF" stroke-width="2" stroke-dasharray="4 4" fill="none"></circle><path d="M-10 0 L-3 8 L11 -7" stroke="#FFFFFF" stroke-width="4.5" stroke-linecap="round" stroke-linejoin="round" fill="none"></path></g><g transform="translate(145, 80)"><rect x="0" y="0" width="70" height="26" rx="8" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></rect><g fill="#F59E0B" transform="translate(7, 7)"><polygon points="5,0 6.5,3.5 10,3.8 7.5,6.2 8.2,9.8 5,7.8 1.8,9.8 2.5,6.2 0,3.8 3.5,3.5"></polygon><polygon points="16,0 17.5,3.5 21,3.8 18.5,6.2 19.2,9.8 16,7.8 12.8,9.8 13.5,6.2 11,3.8 14.5,3.5"></polygon><polygon points="27,0 28.5,3.5 32,3.8 29.5,6.2 30.2,9.8 27,7.8 23.8,9.8 24.5,6.2 22,3.8 25.5,3.5"></polygon><polygon points="38,0 39.5,3.5 43,3.8 40.5,6.2 41.2,9.8 38,7.8 34.8,9.8 35.5,6.2 33,3.8 36.5,3.5"></polygon><polygon points="49,0 50.5,3.5 54,3.8 51.5,6.2 52.2,9.8 49,7.8 45.8,9.8 46.5,6.2 44,3.8 47.5,3.5"></polygon></g></g><g transform="translate(-10, 115)"><rect x="0" y="0" width="105" height="46" rx="10" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 6px 14px rgba(0,0,0,0.08))"></rect><text x="12" y="18" fill="currentColor" font-size="9" font-weight="bold" font-family="system-ui">Proof of Delivery</text><path d="M12 32 Q25 24 38 34 T65 28 T85 33" stroke="#2563EB" stroke-width="2" stroke-linecap="round" fill="none"></path><text x="12" y="40" fill="#10B981" font-size="7.5" font-weight="bold" font-family="monospace">DELIVERED ON-TIME</text></g></g></svg>
  );
}
```

---

### 14. Financial CPM & BI Analytics (`analytics-report.svg`)
- **Tags**: `dashboard`, `analytics`, `cpm`, `chart`, `metrics`, `finance`, `cost`, `bi`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Cost Per Mile (CPM) analytics, operational expenditure trends, and fleet financial benchmarks.

#### React / Next.js Component Snippet:
```tsx
export function AnalyticsReportIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="ar-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient><linearGradient id="ar-bar-grad" x1="0%" y1="100%" x2="0%" y2="0%"><stop offset="0%" stop-color="#2563EB"></stop><stop offset="100%" stop-color="#FF5722"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#ar-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 190 L348 190 M344 186 L344 194" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(70, 50)"><rect x="10" y="15" width="240" height="175" rx="18" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.12" stroke-width="2"></rect><line x1="30" y1="38" x2="120" y2="38" stroke="currentColor" stroke-opacity="0.25" stroke-width="4" stroke-linecap="round"></line><circle cx="215" cy="38" r="5" fill="#10B981"></circle><circle cx="230" cy="38" r="5" fill="#FF5722"></circle><rect x="40" y="115" width="22" height="50" rx="5" fill="#2563EB" fill-opacity="0.4"></rect><rect x="72" y="90" width="22" height="75" rx="5" fill="#2563EB" fill-opacity="0.65"></rect><rect x="104" y="68" width="22" height="97" rx="5" fill="#2563EB" fill-opacity="0.85"></rect><rect x="136" y="50" width="22" height="115" rx="5" fill="url(#ar-bar-grad)"></rect><line x1="30" y1="168" x2="230" y2="168" stroke="currentColor" stroke-opacity="0.15" stroke-width="2"></line><path d="M51 110 L83 85 L115 62 L147 42" stroke="#10B981" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"></path><circle cx="51" cy="110" r="4" fill="#10B981"></circle><circle cx="83" cy="85" r="4" fill="#10B981"></circle><circle cx="115" cy="62" r="4" fill="#10B981"></circle><circle cx="147" cy="42" r="5" fill="#FFFFFF" stroke="#10B981" stroke-width="2.5"></circle><g transform="translate(195, 105)"><circle cx="0" cy="0" r="24" stroke="currentColor" stroke-opacity="0.1" stroke-width="8" fill="none"></circle><circle cx="0" cy="0" r="24" stroke="#2563EB" stroke-width="8" stroke-dasharray="100 50" stroke-linecap="round" fill="none" transform="rotate(-90)"></circle><circle cx="0" cy="0" r="24" stroke="#FF5722" stroke-width="8" stroke-dasharray="35 115" stroke-dashoffset="-100" stroke-linecap="round" fill="none" transform="rotate(-90)"></circle></g><g transform="translate(130, 135)"><rect x="0" y="0" width="120" height="42" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5" filter="drop-shadow(0 6px 16px rgba(0,0,0,0.08))"></rect><text x="14" y="18" fill="currentColor" font-size="8.5" font-weight="bold" font-family="system-ui">Cost Per Mile (CPM)</text><text x="14" y="32" fill="#2563EB" font-size="13" font-weight="900" font-family="monospace">$1.84 <tspan fill="#10B981" font-size="9" font-weight="bold">-6.2%</tspan></text></g></g></svg>
  );
}
```

---

### 15. Pre-Trip Inspection & DVIR Audit (`vehicle-inspection.svg`)
- **Tags**: `maintenance`, `inspection`, `dvir`, `checklist`, `fmcsa`, `truck`, `safety`, `audit`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Commercial vehicle walk-around inspection, DVIR digital checklist, and FMCSA safety pass badge.

#### React / Next.js Component Snippet:
```tsx
export function VehicleInspectionIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="vi-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#10B981" stop-opacity="0.06"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#vi-blob-grad)"></circle><circle cx="75" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="325" cy="85" r="22" fill="#10B981" fill-opacity="0.08"></circle><path d="M55 190 L63 190 M59 186 L59 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(60, 50)"><ellipse cx="140" cy="190" rx="110" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(20, 20)"><path d="M20 50 L28 10 L102 10 L110 50 L118 80 L118 150 L12 150 L12 80 Z" fill="#2563EB" fill-opacity="0.88"></path><path d="M30 20 L100 20 L105 52 L25 52 Z" fill="#FFFFFF" fill-opacity="0.85"></path><line x1="65" y1="20" x2="65" y2="52" stroke="#2563EB" stroke-width="2"></line><rect x="32" y="72" width="66" height="48" rx="8" fill="#1C1917" fill-opacity="0.75"></rect><line x1="40" y1="84" x2="90" y2="84" stroke="#FFFFFF" stroke-opacity="0.6" stroke-width="2"></line><line x1="40" y1="96" x2="90" y2="96" stroke="#FFFFFF" stroke-opacity="0.6" stroke-width="2"></line><line x1="40" y1="108" x2="90" y2="108" stroke="#FFFFFF" stroke-opacity="0.6" stroke-width="2"></line><rect x="18" y="85" width="10" height="20" rx="3" fill="#FBBF24"></rect><rect x="102" y="85" width="10" height="20" rx="3" fill="#FBBF24"></rect><rect x="8" y="130" width="114" height="24" rx="6" fill="#1C1917"></rect><rect x="42" y="136" width="46" height="12" rx="3" fill="#FFFFFF" fill-opacity="0.8"></rect></g><g transform="translate(150, 25)"><rect x="0" y="15" width="115" height="150" rx="14" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(0,0,0,0.1))"></rect><rect x="35" y="6" width="45" height="18" rx="5" fill="#2563EB"></rect><circle cx="57.5" cy="15" r="4" fill="#FFFFFF"></circle><g transform="translate(15, 38)"><circle cx="8" cy="8" r="8" fill="#10B981"></circle><path d="M5 8 L7 10 L11 6" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><line x1="22" y1="8" x2="85" y2="8" stroke="currentColor" stroke-opacity="0.4" stroke-width="3" stroke-linecap="round"></line></g><g transform="translate(15, 62)"><circle cx="8" cy="8" r="8" fill="#10B981"></circle><path d="M5 8 L7 10 L11 6" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><line x1="22" y1="8" x2="80" y2="8" stroke="currentColor" stroke-opacity="0.4" stroke-width="3" stroke-linecap="round"></line></g><g transform="translate(15, 86)"><circle cx="8" cy="8" r="8" fill="#10B981"></circle><path d="M5 8 L7 10 L11 6" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><line x1="22" y1="8" x2="75" y2="8" stroke="currentColor" stroke-opacity="0.4" stroke-width="3" stroke-linecap="round"></line></g><g transform="translate(15, 110)"><circle cx="8" cy="8" r="8" fill="#10B981"></circle><path d="M5 8 L7 10 L11 6" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><line x1="22" y1="8" x2="82" y2="8" stroke="currentColor" stroke-opacity="0.4" stroke-width="3" stroke-linecap="round"></line></g><g transform="translate(12, 134)"><rect x="0" y="0" width="90" height="22" rx="6" fill="#10B981" fill-opacity="0.15" stroke="#10B981" stroke-width="1.5"></rect><text x="8" y="14" fill="#10B981" font-size="8.5" font-weight="900" font-family="monospace">DVIR: PASSED ✓</text></g></g></g></svg>
  );
}
```

---

### 16. Freight Terminal & Warehouse Dock (`cargo-loading.svg`)
- **Tags**: `dashboard`, `warehouse`, `cargo`, `forklift`, `freight`, `dock`, `logistics`, `pallet`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Industrial forklift loading docks, cargo pallet racks, and full truckload (FTL) manifest logistics.

#### React / Next.js Component Snippet:
```tsx
export function CargoLoadingIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="cl-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#FF5722" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#cl-blob-grad)"></circle><circle cx="65" cy="85" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="335" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M345 190 L353 190 M349 186 L349 194" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(60, 55)"><line x1="10" y1="180" x2="270" y2="180" stroke="currentColor" stroke-opacity="0.15" stroke-width="2"></line><g transform="translate(15, 20)"><rect x="0" y="0" width="6" height="160" fill="currentColor" stroke-opacity="0.2" fill-opacity="0.3"></rect><rect x="70" y="0" width="6" height="160" fill="currentColor" stroke-opacity="0.2" fill-opacity="0.3"></rect><rect x="0" y="50" width="76" height="6" fill="#2563EB" fill-opacity="0.8"></rect><rect x="0" y="105" width="76" height="6" fill="#2563EB" fill-opacity="0.8"></rect><rect x="10" y="15" width="25" height="35" rx="3" fill="#2563EB" fill-opacity="0.6"></rect><rect x="40" y="20" width="25" height="30" rx="3" fill="#FF5722" fill-opacity="0.75"></rect><rect x="12" y="68" width="50" height="37" rx="4" fill="currentColor" fill-opacity="0.15"></rect></g><g transform="translate(95, 65)"><path d="M20 50 L40 50 L55 30 L75 30 L80 65 L85 85 L10 85 L10 65 Z" fill="#F59E0B"></path><path d="M45 50 L55 33 L72 33 L72 50 Z" stroke="#1C1917" stroke-width="3" fill="#FFFFFF" fill-opacity="0.8"></path><circle cx="58" cy="42" r="5" fill="#1C1917"></circle><circle cx="28" cy="85" r="10" fill="#1C1917"></circle><circle cx="28" cy="85" r="4" fill="#FFFFFF"></circle><circle cx="75" cy="85" r="9" fill="#1C1917"></circle><circle cx="75" cy="85" r="3.5" fill="#FFFFFF"></circle><rect x="85" y="10" width="6" height="85" fill="#374151"></rect><path d="M88 45 L115 45 L115 50 L88 50 Z" fill="#4B5563"></path><g transform="translate(90, 15)"><rect x="0" y="0" width="28" height="28" rx="4" fill="#2563EB" fill-opacity="0.9"></rect><rect x="-2" y="28" width="32" height="6" rx="1.5" fill="#D97706"></rect><line x1="5" y1="30" x2="5" y2="34" stroke="#78350F" stroke-width="2"></line><line x1="25" y1="30" x2="25" y2="34" stroke="#78350F" stroke-width="2"></line></g></g><g transform="translate(210, 25)"><rect x="0" y="0" width="65" height="155" rx="8" fill="currentColor" fill-opacity="0.05" stroke="currentColor" stroke-opacity="0.12" stroke-width="2"></rect><line x1="5" y1="15" x2="60" y2="15" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="30" x2="60" y2="30" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="45" x2="60" y2="45" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="60" x2="60" y2="60" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="75" x2="60" y2="75" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="90" x2="60" y2="90" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="105" x2="60" y2="105" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="120" x2="60" y2="120" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><line x1="5" y1="135" x2="60" y2="135" stroke="currentColor" stroke-opacity="0.1" stroke-width="1.5"></line><polygon points="0,150 65,150 55,165 10,165" fill="#FF5722" fill-opacity="0.8"></polygon></g><g transform="translate(140, 135)"><rect x="0" y="0" width="125" height="38" rx="10" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 6px 14px rgba(0,0,0,0.08))"></rect><circle cx="16" cy="19" r="5" fill="#FF5722"></circle><text x="28" y="17" fill="currentColor" font-size="9" font-weight="bold" font-family="system-ui">Full Truckload (FTL)</text><text x="28" y="28" fill="currentColor" fill-opacity="0.6" font-size="8" font-family="monospace">42,500 lbs • Pallet #18/24</text></g></g></svg>
  );
}
```

---

### 17. Collision Warning & SOS Dispatch (`sos-emergency.svg`)
- **Tags**: `500-error`, `emergency`, `sos`, `collision`, `alert`, `strobe`, `roadside`, `safety`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Critical telematics alerts, emergency strobe flasher, roadside assistance, and crash sensor alerts.

#### React / Next.js Component Snippet:
```tsx
export function SosEmergencyIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="se-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#EF4444" stop-opacity="0.2"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient><radialGradient id="se-pulse-glow" cx="50%" cy="50%" r="50%"><stop offset="0%" stop-color="#EF4444" stop-opacity="0.3"></stop><stop offset="60%" stop-color="#EF4444" stop-opacity="0.08"></stop><stop offset="100%" stop-color="#EF4444" stop-opacity="0"></stop></radialGradient></defs><circle cx="200" cy="150" r="115" fill="url(#se-blob-grad)"></circle><circle cx="70" cy="85" r="18" fill="#EF4444" fill-opacity="0.1"></circle><circle cx="330" cy="85" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#EF4444" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(80, 50)"><circle cx="120" cy="65" r="55" fill="url(#se-pulse-glow)"></circle><circle cx="120" cy="65" r="75" stroke="#EF4444" stroke-opacity="0.25" stroke-width="1.5" stroke-dasharray="6 6"></circle><g transform="translate(120, 65)"><polygon points="0,-48 48,34 -48,34" fill="#EF4444" stroke="#B91C1C" stroke-width="3" filter="drop-shadow(0 8px 20px rgba(239,68,68,0.35))"></polygon><polygon points="0,-32 34,26 -34,26" fill="#FEF2F2"></polygon><line x1="0" y1="-18" x2="0" y2="8" stroke="#EF4444" stroke-width="6" stroke-linecap="round"></line><circle cx="0" cy="19" r="3.5" fill="#EF4444"></circle></g><g transform="translate(35, 30)"><path d="M15 25 L10 40 L35 40 L30 25 Z" fill="#1C1917"></path><path d="M12 25 C12 12 33 12 33 25 Z" fill="#EF4444"></path><line x1="8" y1="12" x2="1" y2="6" stroke="#EF4444" stroke-width="2.5" stroke-linecap="round"></line><line x1="22.5" y1="5" x2="22.5" y2="-3" stroke="#EF4444" stroke-width="2.5" stroke-linecap="round"></line><line x1="37" y1="12" x2="44" y2="6" stroke="#EF4444" stroke-width="2.5" stroke-linecap="round"></line></g><g transform="translate(110, 115)"><rect x="0" y="8" width="65" height="30" rx="5" fill="#2563EB"></rect><path d="M65 18 L78 24 L78 38 L65 38 Z" fill="#2563EB" fill-opacity="0.8"></path><circle cx="32" cy="22" r="10" fill="#FFFFFF"></circle><rect x="30" y="16" width="4" height="12" rx="1" fill="#EF4444"></rect><rect x="26" y="20" width="12" height="4" rx="1" fill="#EF4444"></rect><circle cx="16" cy="38" r="7" fill="#1C1917"></circle><circle cx="16" cy="38" r="3" fill="#FFFFFF"></circle><circle cx="68" cy="38" r="7" fill="#1C1917"></circle><circle cx="68" cy="38" r="3" fill="#FFFFFF"></circle></g><g transform="translate(-10, 130)"><rect x="0" y="0" width="170" height="44" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="#EF4444" stroke-opacity="0.3" stroke-width="1.5" filter="drop-shadow(0 6px 16px rgba(239,68,68,0.12))"></rect><circle cx="18" cy="22" r="6" fill="#EF4444"></circle><text x="32" y="19" fill="#EF4444" font-size="9.5" font-weight="900" font-family="system-ui">SOS ALERT DETECTED</text><text x="32" y="32" fill="currentColor" fill-opacity="0.7" font-size="8" font-family="monospace">Unit #FP-302 • Dispatch Responding</text></g></g></svg>
  );
}
```

---

### 18. Driver CDL Verification & Hires (`driver-onboarding.svg`)
- **Tags**: `onboarding`, `driver`, `cdl`, `verification`, `recruitment`, `id-card`, `license`, `compliance`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Commercial driver qualification file, CDL license card verification, and DOT compliance audit.

#### React / Next.js Component Snippet:
```tsx
export function DriverOnboardingIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="do-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#do-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="85" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(70, 50)"><g transform="translate(10, 15)"><rect x="0" y="0" width="170" height="115" rx="16" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(0,0,0,0.08))"></rect><path d="M0 16 C0 7 7 0 16 0 L154 0 C163 0 170 7 170 16 L170 24 L0 24 Z" fill="#2563EB"></path><text x="14" y="16" fill="#FFFFFF" font-size="8" font-weight="bold" font-family="system-ui">COMMERCIAL DRIVER LICENSE (CDL-A)</text><g transform="translate(16, 36)"><rect x="0" y="0" width="44" height="52" rx="8" fill="currentColor" fill-opacity="0.08"></rect><circle cx="22" cy="18" r="10" fill="#2563EB"></circle><path d="M8 48 C8 34 36 34 36 48 Z" fill="#2563EB"></path></g><g transform="translate(72, 38)"><text x="0" y="10" fill="currentColor" font-size="10" font-weight="bold" font-family="system-ui">Marcus Vance, CDL</text><text x="0" y="22" fill="currentColor" fill-opacity="0.6" font-size="7.5" font-family="monospace">ID: CDL-IL-984210</text><line x1="0" y1="32" x2="80" y2="32" stroke="currentColor" stroke-opacity="0.15" stroke-width="2"></line><rect x="0" y="40" width="22" height="12" rx="3" fill="#10B981" fill-opacity="0.15"></rect><text x="4" y="49" fill="#10B981" font-size="7" font-weight="bold">HAZ</text><rect x="26" y="40" width="24" height="12" rx="3" fill="#2563EB" fill-opacity="0.15"></rect><text x="30" y="49" fill="#2563EB" font-size="7" font-weight="bold">TANK</text></g></g><g transform="translate(145, 80)"><rect x="0" y="0" width="125" height="95" rx="14" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 8px 20px rgba(0,0,0,0.1))"></rect><text x="14" y="20" fill="currentColor" font-size="8.5" font-weight="bold" font-family="system-ui">Onboarding Audit</text><g transform="translate(14, 28)"><circle cx="6" cy="6" r="6" fill="#10B981"></circle><path d="M4 6 L5.5 7.5 L8.5 4.5" stroke="#FFFFFF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path><text x="16" y="9" fill="currentColor" font-size="7.5" font-family="system-ui">DOT Physical Exam</text></g><g transform="translate(14, 46)"><circle cx="6" cy="6" r="6" fill="#10B981"></circle><path d="M4 6 L5.5 7.5 L8.5 4.5" stroke="#FFFFFF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path><text x="16" y="9" fill="currentColor" font-size="7.5" font-family="system-ui">MVR Record: Clean</text></g><g transform="translate(14, 64)"><circle cx="6" cy="6" r="6" fill="#10B981"></circle><path d="M4 6 L5.5 7.5 L8.5 4.5" stroke="#FFFFFF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path><text x="16" y="9" fill="currentColor" font-size="7.5" font-family="system-ui">ELD / HOS Training</text></g></g><g transform="translate(195, 15)"><circle cx="0" cy="0" r="22" fill="#10B981" filter="drop-shadow(0 4px 12px rgba(16,185,129,0.3))"></circle><path d="M-7 0 L-2 5 L7 -4" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"></path></g></g></svg>
  );
}
```

---

### 19. Clean Energy & EV Depot (`ev-charging.svg`)
- **Tags**: `dashboard`, `ev`, `charging`, `battery`, `electric`, `depot`, `clean-energy`, `green`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Electric commercial fleet depot, DC fast charging pedestal, and battery state-of-charge metrics.

#### React / Next.js Component Snippet:
```tsx
export function EvChargingIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="ev-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#10B981" stop-opacity="0.18"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.06"></stop></linearGradient><linearGradient id="ev-battery-grad" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#10B981"></stop><stop offset="100%" stop-color="#34D399"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#ev-blob-grad)"></circle><circle cx="65" cy="80" r="18" fill="#10B981" fill-opacity="0.1"></circle><circle cx="335" cy="80" r="22" fill="#2563EB" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#10B981" stroke-width="2" stroke-linecap="round"></path><path d="M345 185 L353 185 M349 181 L349 189" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><g transform="translate(60, 50)"><line x1="10" y1="180" x2="270" y2="180" stroke="currentColor" stroke-opacity="0.15" stroke-width="2"></line><g transform="translate(15, 60)"><path d="M10 80 L20 20 L100 20 L115 50 L125 70 L125 105 L10 105 Z" fill="#2563EB" fill-opacity="0.9"></path><path d="M70 26 L98 26 L112 50 L70 50 Z" fill="#FFFFFF" fill-opacity="0.85"></path><path d="M116 72 L125 72 L125 77 L116 77 Z" fill="#34D399"></path><circle cx="38" cy="105" r="14" fill="#1C1917"></circle><circle cx="38" cy="105" r="8" fill="#34D399"></circle><circle cx="98" cy="105" r="14" fill="#1C1917"></circle><circle cx="98" cy="105" r="8" fill="#34D399"></circle><rect x="75" y="70" width="12" height="12" rx="3" fill="#1C1917"></rect></g><path d="M90 137 C105 160 140 160 165 115" stroke="#10B981" stroke-width="6" stroke-linecap="round" fill="none"></path><g transform="translate(160, 30)"><rect x="0" y="0" width="55" height="145" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 8px 20px rgba(0,0,0,0.08))"></rect><path d="M0 12 C0 5 5 0 12 0 L43 0 C50 0 55 5 55 12 L55 24 L0 24 Z" fill="#10B981"></path><text x="14" y="16" fill="#FFFFFF" font-size="8" font-weight="bold" font-family="system-ui">DEPOT EV</text><rect x="8" y="34" width="39" height="48" rx="6" fill="#111827"></rect><path d="M28 42 L22 55 L28 55 L26 68 L36 52 L29 52 Z" fill="#10B981"></path><text x="14" y="76" fill="#10B981" font-size="7" font-weight="bold" font-family="monospace">350 kW DC</text><circle cx="27.5" cy="105" r="8" fill="#10B981" fill-opacity="0.2"></circle><circle cx="27.5" cy="105" r="4" fill="#10B981"></circle></g><g transform="translate(145, 10)"><rect x="0" y="0" width="125" height="44" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 6px 16px rgba(0,0,0,0.08))"></rect><text x="12" y="16" fill="currentColor" font-size="8.5" font-weight="bold" font-family="system-ui">Clean Energy Depot</text><rect x="12" y="24" width="70" height="10" rx="3" fill="currentColor" fill-opacity="0.1"></rect><rect x="12" y="24" width="58" height="10" rx="3" fill="url(#ev-battery-grad)"></rect><text x="88" y="32" fill="#10B981" font-size="9" font-weight="900" font-family="monospace">84%</text></g></g></svg>
  );
}
```

---

### 20. RBAC Security & Vault Access (`security-access.svg`)
- **Tags**: `security`, `auth`, `rbac`, `access`, `shield`, `vault`, `2fa`, `admin`, `protection`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Enterprise cybersecurity shield, role-based access control (RBAC), and 2FA authentication.

#### React / Next.js Component Snippet:
```tsx
export function SecurityAccessIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="sa-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#8B5CF6" stop-opacity="0.06"></stop></linearGradient><linearGradient id="sa-shield-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB"></stop><stop offset="100%" stop-color="#1E40AF"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#sa-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="85" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(100, 45)"><ellipse cx="100" cy="190" rx="90" ry="14" fill="currentColor" fill-opacity="0.05"></ellipse><g transform="translate(100, 95)"><path d="M0 -75 L68 -48 C68 25 38 75 0 95 C-38 75 -68 25 -68 -48 Z" fill="url(#sa-shield-grad)" filter="drop-shadow(0 12px 28px rgba(37,99,235,0.3))"></path><path d="M0 -62 L54 -40 C54 18 30 58 0 76 C-30 58 -54 18 -54 -40 Z" fill="#FFFFFF" fill-opacity="0.12"></path><g transform="translate(0, 5)"><path d="M-14 -10 L-14 -24 C-14 -32 14 -32 14 -24 L14 -10" stroke="#FFFFFF" stroke-width="6" stroke-linecap="round" fill="none"></path><rect x="-24" y="-10" width="48" height="38" rx="8" fill="#F59E0B"></rect><circle cx="0" cy="5" r="5" fill="#1C1917"></circle><polygon points="-3,5 3,5 2,16 -2,16" fill="#1C1917"></polygon></g></g><g transform="translate(-30, 25)"><rect x="0" y="0" width="85" height="30" rx="8" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 4px 12px rgba(0,0,0,0.06))"></rect><circle cx="12" cy="15" r="4" fill="#10B981"></circle><text x="22" y="18" fill="currentColor" font-size="8" font-weight="bold" font-family="system-ui">Admin: Root</text></g><g transform="translate(-40, 68)"><rect x="0" y="0" width="95" height="30" rx="8" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 4px 12px rgba(0,0,0,0.06))"></rect><circle cx="12" cy="15" r="4" fill="#2563EB"></circle><text x="22" y="18" fill="currentColor" font-size="8" font-weight="bold" font-family="system-ui">Dispatcher: OK</text></g><g transform="translate(145, 45)"><rect x="0" y="0" width="100" height="46" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 6px 14px rgba(0,0,0,0.08))"></rect><circle cx="18" cy="23" r="10" fill="#10B981" fill-opacity="0.15"></circle><path d="M14 23 L17 26 L23 19" stroke="#10B981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"></path><text x="34" y="18" fill="currentColor" font-size="8.5" font-weight="bold" font-family="system-ui">2FA Security</text><text x="34" y="30" fill="#10B981" font-size="7.5" font-weight="bold" font-family="monospace">VERIFIED</text></g></g></svg>
  );
}
```

---

### 21. Cold-Chain Reefer Telematics (`cold-chain.svg`)
- **Tags**: `dashboard`, `cold-chain`, `reefer`, `temperature`, `refrigeration`, `sensor`, `cargo`, `perishable`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Refrigerated reefer semi-trailer, sub-zero probe temperature telemetry, and frozen cargo validation.

#### React / Next.js Component Snippet:
```tsx
export function ColdChainIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="cc-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#0284C7" stop-opacity="0.18"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.05"></stop></linearGradient><linearGradient id="cc-ice-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#38BDF8"></stop><stop offset="100%" stop-color="#0284C7"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#cc-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#38BDF8" fill-opacity="0.1"></circle><circle cx="330" cy="80" r="22" fill="#2563EB" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#0284C7" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g stroke="#38BDF8" stroke-width="1.5" stroke-linecap="round"><path d="M75 120 L75 132 M69 126 L81 126 M71 122 L79 130 M71 130 L79 122"></path><path d="M320 115 L320 125 M315 120 L325 120 M316 116 L324 124 M316 124 L324 116"></path></g><g transform="translate(60, 50)"><ellipse cx="140" cy="180" rx="110" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(20, 35)"><rect x="30" y="15" width="170" height="95" rx="8" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.15" stroke-width="2"></rect><rect x="30" y="15" width="170" height="12" rx="4" fill="#2563EB" fill-opacity="0.85"></rect><line x1="40" y1="35" x2="40" y2="100" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5"></line><line x1="70" y1="35" x2="70" y2="100" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5"></line><line x1="100" y1="35" x2="100" y2="100" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5"></line><line x1="130" y1="35" x2="130" y2="100" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5"></line><line x1="160" y1="35" x2="160" y2="100" stroke="currentColor" stroke-opacity="0.07" stroke-width="1.5"></line><g transform="translate(5, 25)"><rect x="0" y="0" width="26" height="52" rx="5" fill="#1E293B"></rect><circle cx="13" cy="20" r="9" fill="#0F172A" stroke="#38BDF8" stroke-width="1.5"></circle><line x1="8" y1="20" x2="18" y2="20" stroke="#38BDF8" stroke-width="1.5"></line><line x1="13" y1="15" x2="13" y2="25" stroke="#38BDF8" stroke-width="1.5"></line><circle cx="13" cy="40" r="3" fill="#10B981"></circle></g><g transform="translate(135, 105)"><circle cx="16" cy="14" r="13" fill="#1C1917"></circle><circle cx="16" cy="14" r="6" fill="#64748B"></circle><circle cx="46" cy="14" r="13" fill="#1C1917"></circle><circle cx="46" cy="14" r="6" fill="#64748B"></circle></g><rect x="65" y="110" width="6" height="18" fill="#475569"></rect><rect x="60" y="128" width="16" height="4" rx="1" fill="#1E293B"></rect></g><g transform="translate(155, 75)"><rect x="0" y="0" width="125" height="90" rx="16" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(2,132,199,0.15))"></rect><g transform="translate(14, 16)"><rect x="0" y="0" width="8" height="36" rx="4" fill="currentColor" fill-opacity="0.1"></rect><rect x="0" y="16" width="8" height="20" rx="4" fill="url(#cc-ice-grad)"></rect><circle cx="4" cy="40" r="7" fill="#0284C7"></circle><g transform="translate(18, 0)"><text x="0" y="10" fill="currentColor" font-size="8" font-weight="bold" font-family="system-ui">REEFER SENSOR 1</text><text x="0" y="27" fill="#0284C7" font-size="16" font-weight="900" font-family="monospace">-18.4°F</text><text x="0" y="40" fill="#10B981" font-size="8" font-weight="bold">✓ In Range (Frozen)</text></g></g><line x1="14" y1="68" x2="111" y2="68" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></line><text x="14" y="80" fill="currentColor" fill-opacity="0.6" font-size="7.5" font-family="monospace">Pharma / Frozen Spec</text></g></g></svg>
  );
}
```

---

### 22. TPMS & Wheel Health Sensor (`tire-diagnostics.svg`)
- **Tags**: `maintenance`, `tpms`, `tire`, `wheel`, `diagnostics`, `sensor`, `pressure`, `tread`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Tire Pressure Monitoring System (TPMS) readouts, wheel alignment laser, and tread depth audit.

#### React / Next.js Component Snippet:
```tsx
export function TireDiagnosticsIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="td-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#10B981" stop-opacity="0.06"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#td-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="85" r="22" fill="#10B981" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(75, 45)"><ellipse cx="125" cy="190" rx="100" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(15, 25)"><circle cx="70" cy="80" r="72" fill="#1E293B"></circle><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(0 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(30 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(60 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(90 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(120 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(150 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(180 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(210 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(240 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(270 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(300 70 80)"></line><line x1="70" y1="12" x2="70" y2="20" stroke="#0F172A" stroke-width="4" stroke-linecap="round" transform="rotate(330 70 80)"></line><circle cx="70" cy="80" r="54" fill="#0F172A"></circle><circle cx="70" cy="80" r="42" fill="#94A3B8"></circle><circle cx="70" cy="80" r="32" fill="#CBD5E1"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(0 70 80)"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(45 70 80)"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(90 70 80)"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(135 70 80)"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(180 70 80)"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(225 70 80)"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(270 70 80)"></circle><circle cx="70" y="58" r="3.5" fill="#1E293B" transform="rotate(315 70 80)"></circle><circle cx="70" cy="80" r="14" fill="#2563EB"></circle><circle cx="70" cy="80" r="6" fill="#FFFFFF"></circle><line x1="-15" y1="80" x2="155" y2="80" stroke="#10B981" stroke-width="1.5" stroke-dasharray="4 4" stroke-opacity="0.7"></line></g><g transform="translate(135, 45)"><rect x="0" y="0" width="125" height="115" rx="16" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(0,0,0,0.1))"></rect><g transform="translate(14, 16)"><text x="0" y="10" fill="currentColor" font-size="8" font-weight="bold" font-family="system-ui">TPMS TELEMATICS</text><text x="0" y="32" fill="#2563EB" font-size="20" font-weight="900" font-family="monospace">110 <tspan font-size="10">PSI</tspan></text><text x="0" y="46" fill="#10B981" font-size="8" font-weight="bold">✓ Pressure Optimal</text></g><g transform="translate(14, 70)"><line x1="0" y1="0" x2="97" y2="0" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></line><text x="0" y="14" fill="currentColor" fill-opacity="0.7" font-size="7.5" font-family="system-ui">Tread Depth: 16/32&quot;</text><rect x="0" y="20" width="97" height="6" rx="3" fill="currentColor" fill-opacity="0.1"></rect><rect x="0" y="20" width="80" height="6" rx="3" fill="#10B981"></rect></g></g></g></svg>
  );
}
```

---

### 23. IFTA Fuel Tax & Interstate Audit (`ifta-tax-calculator.svg`)
- **Tags**: `dashboard`, `ifta`, `tax`, `calculator`, `fuel`, `mileage`, `interstate`, `audit`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Interstate highway mileage, multi-jurisdiction fuel gallonage ledgers, and quarterly IFTA audit seal.

#### React / Next.js Component Snippet:
```tsx
export function IftaTaxCalculatorIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="ifta-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#10B981" stop-opacity="0.06"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#ifta-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(70, 50)"><ellipse cx="130" cy="185" rx="105" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(15, 20)"><rect x="26" y="55" width="8" height="110" fill="#64748B"></rect><path d="M30 0 C45 0 58 8 58 20 C58 45 30 65 30 65 C30 65 2 45 2 20 C2 8 15 0 30 0 Z" fill="#1E3A8A" stroke="#FFFFFF" stroke-width="3" filter="drop-shadow(0 6px 12px rgba(30,58,138,0.3))"></path><path d="M6 14 C12 6 22 4 30 4 C38 4 48 6 54 14 Z" fill="#DC2626"></path><text x="30" y="42" fill="#FFFFFF" font-size="18" font-weight="900" text-anchor="middle" font-family="system-ui">80</text></g><g transform="translate(85, 15)"><rect x="0" y="0" width="175" height="155" rx="16" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(0,0,0,0.09))"></rect><path d="M0 16 C0 7 7 0 16 0 L159 0 C168 0 175 7 175 16 L175 28 L0 28 Z" fill="#2563EB"></path><text x="14" y="18" fill="#FFFFFF" font-size="8.5" font-weight="bold" font-family="system-ui">IFTA QUARTERLY FUEL TAX (Q3)</text><g transform="translate(14, 40)" fill="currentColor" fill-opacity="0.6" font-size="7.5" font-weight="bold" font-family="system-ui"><text x="0" y="0">STATE</text><text x="45" y="0">MILES</text><text x="90" y="0">GALLONS</text><text x="135" y="0">TAX ($)</text></g><line x1="14" y1="46" x2="161" y2="46" stroke="currentColor" stroke-opacity="0.12" stroke-width="1"></line><g transform="translate(14, 60)" font-size="8" font-family="monospace"><text x="0" y="0" fill="#2563EB" font-weight="bold">IL (Base)</text><text x="45" y="0" fill="currentColor">1,420</text><text x="90" y="0" fill="currentColor">177.5</text><text x="135" y="0" fill="#10B981" font-weight="bold">$92.30</text></g><g transform="translate(14, 78)" font-size="8" font-family="monospace"><text x="0" y="0" fill="currentColor">IN</text><text x="45" y="0" fill="currentColor">980</text><text x="90" y="0" fill="currentColor">122.5</text><text x="135" y="0" fill="#10B981" font-weight="bold">$58.80</text></g><g transform="translate(14, 96)" font-size="8" font-family="monospace"><text x="0" y="0" fill="currentColor">OH</text><text x="45" y="0" fill="currentColor">1,150</text><text x="90" y="0" fill="currentColor">143.7</text><text x="135" y="0" fill="#10B981" font-weight="bold">$67.50</text></g><line x1="14" y1="106" x2="161" y2="106" stroke="currentColor" stroke-opacity="0.12" stroke-width="1"></line><g transform="translate(14, 126)"><text x="0" y="0" fill="currentColor" font-size="8" font-weight="bold" font-family="system-ui">Net Tax Balance:</text><text x="0" y="14" fill="#10B981" font-size="13" font-weight="900" font-family="monospace">$218.60 <tspan font-size="8">PAID</tspan></text><g transform="translate(115, -2)"><circle cx="16" cy="10" r="16" stroke="#10B981" stroke-width="2" stroke-dasharray="3 3" fill="none"></circle><text x="16" y="8" fill="#10B981" font-size="6" font-weight="bold" text-anchor="middle">IFTA</text><text x="16" y="15" fill="#10B981" font-size="5.5" font-weight="900" text-anchor="middle">AUDIT OK</text></g></g></g></g></svg>
  );
}
```

---

### 24. Severe Weather & Corridor Alerts (`weather-hazard.svg`)
- **Tags**: `maintenance`, `weather`, `hazard`, `storm`, `warning`, `corridor`, `radar`, `alert`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Adverse weather storm radar, icy bridge hazard warning sign, and dynamic speed reduction alerts.

#### React / Next.js Component Snippet:
```tsx
export function WeatherHazardIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="wh-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#475569" stop-opacity="0.18"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.06"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#wh-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#475569" fill-opacity="0.1"></circle><circle cx="330" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#475569" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(65, 40)"><path d="M10 185 L260 185" stroke="currentColor" stroke-opacity="0.2" stroke-width="3"></path><line x1="20" y1="185" x2="60" y2="185" stroke="#FBBF24" stroke-width="3" stroke-dasharray="12 12"></line><line x1="80" y1="185" x2="180" y2="185" stroke="#FBBF24" stroke-width="3" stroke-dasharray="12 12"></line><g transform="translate(75, 10)"><path d="M25 50 C10 50 0 40 0 28 C0 16 10 8 22 8 C25 2 35 0 45 0 C60 0 72 10 75 22 C82 22 90 28 90 38 C90 48 80 50 70 50 Z" fill="#334155" filter="drop-shadow(0 6px 16px rgba(51,65,85,0.25))"></path><polygon points="50,45 42,65 52,65 44,82 62,58 52,58" fill="#FBBF24"></polygon><line x1="15" y1="56" x2="10" y2="70" stroke="#38BDF8" stroke-width="2" stroke-linecap="round" stroke-opacity="0.6"></line><line x1="30" y1="56" x2="25" y2="72" stroke="#38BDF8" stroke-width="2" stroke-linecap="round" stroke-opacity="0.6"></line><line x1="70" y1="56" x2="65" y2="72" stroke="#38BDF8" stroke-width="2" stroke-linecap="round" stroke-opacity="0.6"></line><line x1="85" y1="56" x2="80" y2="70" stroke="#38BDF8" stroke-width="2" stroke-linecap="round" stroke-opacity="0.6"></line></g><g transform="translate(20, 65)"><rect x="23" y="45" width="6" height="75" fill="#64748B"></rect><g transform="translate(26, 26) rotate(45)"><rect x="-24" y="-24" width="48" height="48" rx="6" fill="#F59E0B" stroke="#1C1917" stroke-width="2.5"></rect><rect x="-20" y="-20" width="40" height="40" rx="4" stroke="#1C1917" stroke-width="1.5" fill="none"></rect></g><path d="M18 20 C22 16 30 16 34 20 L35 25 L17 25 Z" fill="#1C1917"></path><path d="M19 28 Q23 31 27 28 T35 31" stroke="#1C1917" stroke-width="1.5" fill="none"></path></g><g transform="translate(90, 85)"><rect x="0" y="20" width="85" height="50" rx="5" fill="#2563EB" fill-opacity="0.85"></rect><path d="M85 35 L108 35 L114 50 L114 70 L85 70 Z" fill="#2563EB"></path><path d="M92 38 L104 38 L108 50 L92 50 Z" fill="#FFFFFF" fill-opacity="0.8"></path><circle cx="20" cy="72" r="9" fill="#1C1917"></circle><circle cx="45" cy="72" r="9" fill="#1C1917"></circle><circle cx="102" cy="72" r="9" fill="#1C1917"></circle><polygon points="114,56 160,45 160,78 114,66" fill="#FDE047" fill-opacity="0.35"></polygon></g><g transform="translate(130, 135)"><rect x="0" y="0" width="135" height="44" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="#F59E0B" stroke-opacity="0.3" stroke-width="1.5" filter="drop-shadow(0 8px 18px rgba(0,0,0,0.08))"></rect><circle cx="16" cy="22" r="6" fill="#F59E0B"></circle><text x="30" y="18" fill="#D97706" font-size="9" font-weight="bold" font-family="system-ui">Adverse Weather Warning</text><text x="30" y="32" fill="currentColor" fill-opacity="0.7" font-size="8" font-family="monospace">I-80 Snow/Ice • Speed -15 MPH</text></g></g></svg>
  );
}
```

---

### 25. HOS Sleeper Berth & Rest Reset (`driver-rest-hos.svg`)
- **Tags**: `dashboard`, `hos`, `sleeper-berth`, `rest`, `fatigue`, `reset`, `driver`, `compliance`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: FMCSA 10-hour sleeper berth reset countdown, nocturnal rest stop, and fatigue management.

#### React / Next.js Component Snippet:
```tsx
export function DriverRestHosIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="dr-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#4338CA" stop-opacity="0.18"></stop><stop offset="100%" stop-color="#2563EB" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#dr-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#4338CA" fill-opacity="0.1"></circle><circle cx="330" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#4338CA" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(80, 40)"><path d="M16 0 C7 0 0 7 0 16 C0 25 7 32 16 32 C12 28 9 22 9 16 C9 10 12 4 16 0 Z" fill="#FBBF24" filter="drop-shadow(0 2px 8px rgba(251,191,36,0.3))"></path><circle cx="38" cy="8" r="2" fill="#FBBF24"></circle><circle cx="24" cy="40" r="1.5" fill="#FBBF24"></circle><circle cx="50" cy="24" r="2" fill="#FBBF24"></circle></g><g transform="translate(70, 50)"><ellipse cx="130" cy="180" rx="100" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(15, 45)"><path d="M0 80 L0 15 L55 15 L78 35 L88 55 L88 80 Z" fill="#2563EB" fill-opacity="0.88"></path><rect x="12" y="30" width="16" height="16" rx="3" fill="#FFFFFF" fill-opacity="0.3"></rect><path d="M48 24 L72 38 L72 54 L48 54 Z" fill="#FFFFFF" fill-opacity="0.8"></path><circle cx="24" cy="84" r="14" fill="#1C1917"></circle><circle cx="24" cy="84" r="6" fill="#64748B"></circle><circle cx="72" cy="84" r="14" fill="#1C1917"></circle><circle cx="72" cy="84" r="6" fill="#64748B"></circle></g><g transform="translate(115, 95)"><rect x="0" y="8" width="18" height="20" rx="4" fill="#78350F"></rect><path d="M18 12 C22 12 22 20 18 20" stroke="#78350F" stroke-width="2.5" fill="none"></path><path d="M5 4 Q8 0 5 -4" stroke="currentColor" stroke-opacity="0.4" stroke-width="1.5" fill="none"></path><path d="M12 4 Q15 0 12 -4" stroke="currentColor" stroke-opacity="0.4" stroke-width="1.5" fill="none"></path></g><g transform="translate(135, 30)"><rect x="0" y="0" width="125" height="125" rx="18" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(67,56,202,0.12))"></rect><g transform="translate(62.5, 52)"><circle cx="0" cy="0" r="30" stroke="currentColor" stroke-opacity="0.1" stroke-width="6" fill="none"></circle><circle cx="0" cy="0" r="30" stroke="#10B981" stroke-width="6" stroke-dasharray="188 188" stroke-dashoffset="30" stroke-linecap="round" fill="none" transform="rotate(-90)"></circle><line x1="0" y1="0" x2="0" y2="-16" stroke="#2563EB" stroke-width="3" stroke-linecap="round"></line><line x1="0" y1="0" x2="12" y2="0" stroke="#2563EB" stroke-width="2.5" stroke-linecap="round"></line><circle cx="0" cy="0" r="4" fill="#1C1917"></circle></g><text x="62.5" y="98" fill="currentColor" font-size="8.5" font-weight="bold" text-anchor="middle" font-family="system-ui">10-Hour Reset Complete</text><text x="62.5" y="112" fill="#10B981" font-size="10.5" font-weight="900" text-anchor="middle" font-family="monospace">FMCSA HOS: READY</text></g></g></svg>
  );
}
```

---

### 26. Speed Governor & Telematics Radar (`speed-governor.svg`)
- **Tags**: `dashboard`, `speed-governor`, `limiter`, `radar`, `telematics`, `safety`, `speedometer`, `truck`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Governed truck speedometer arc dial, speed limiter threshold, and overspeed mitigation radar.

#### React / Next.js Component Snippet:
```tsx
export function SpeedGovernorIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="sg-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#sg-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(75, 45)"><g transform="translate(15, 25)"><rect x="22" y="60" width="6" height="95" fill="#64748B"></rect><rect x="0" y="0" width="50" height="65" rx="6" fill="#FFFFFF" stroke="#1C1917" stroke-width="2.5"></rect><text x="25" y="16" fill="#1C1917" font-size="7.5" font-weight="900" text-anchor="middle" font-family="system-ui">SPEED</text><text x="25" y="27" fill="#1C1917" font-size="7.5" font-weight="900" text-anchor="middle" font-family="system-ui">LIMIT</text><text x="25" y="52" fill="#1C1917" font-size="22" font-weight="900" text-anchor="middle" font-family="monospace">65</text></g><g transform="translate(85, 20)"><rect x="0" y="0" width="170" height="150" rx="18" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(0,0,0,0.08))"></rect><g transform="translate(85, 80)"><path d="M-55 15 A55 55 0 1 1 55 15" stroke="currentColor" stroke-opacity="0.1" stroke-width="10" stroke-linecap="round" fill="none"></path><path d="M-55 15 A55 55 0 0 1 15 -52" stroke="#10B981" stroke-width="10" stroke-linecap="round" fill="none"></path><path d="M15 -52 A55 55 0 0 1 55 15" stroke="#EF4444" stroke-width="10" stroke-linecap="round" fill="none"></path><line x1="0" y1="0" x2="16" y2="-44" stroke="#FF5722" stroke-width="3.5" stroke-linecap="round"></line><circle cx="0" cy="0" r="7" fill="#1C1917"></circle><circle cx="0" cy="0" r="3" fill="#FFFFFF"></circle></g><g transform="translate(85, 112)" text-anchor="middle"><text x="0" y="0" fill="#2563EB" font-size="20" font-weight="900" font-family="monospace">64.8 <tspan font-size="10">MPH</tspan></text><text x="0" y="16" fill="#10B981" font-size="8.5" font-weight="bold" font-family="system-ui">✓ GOVERNOR ACTIVE (65 MPH MAX)</text></g></g><g transform="translate(235, 10)"><path d="M0 0 L15 6 C15 20 8 30 0 35 C-8 30 -15 20 -15 6 Z" fill="#10B981" filter="drop-shadow(0 4px 10px rgba(16,185,129,0.3))"></path><path d="M-5 14 L-1 18 L6 10" stroke="#FFFFFF" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"></path></g></g></svg>
  );
}
```

---

### 27. Smart Keybox & Dispatch Lockbox (`key-management.svg`)
- **Tags**: `security`, `key-management`, `lockbox`, `rfid`, `keys`, `dispatch`, `cabinet`, `smart`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Wall-mounted electronic fleet key cabinet, RFID key fobs, and driver checkout verification.

#### React / Next.js Component Snippet:
```tsx
export function KeyManagementIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="km-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#F59E0B" stop-opacity="0.06"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#km-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="80" r="22" fill="#F59E0B" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(85, 45)"><rect x="0" y="0" width="155" height="170" rx="18" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.15" stroke-width="2" filter="drop-shadow(0 12px 28px rgba(0,0,0,0.08))"></rect><path d="M0 16 C0 7 7 0 16 0 L139 0 C148 0 155 7 155 16 L155 36 L0 36 Z" fill="#1E293B"></path><rect x="15" y="10" width="60" height="16" rx="4" fill="#0F172A"></rect><circle cx="25" cy="18" r="2.5" fill="#10B981"></circle><circle cx="35" cy="18" r="2.5" fill="#10B981"></circle><circle cx="45" cy="18" r="2.5" fill="#10B981"></circle><circle cx="55" cy="18" r="2.5" fill="#10B981"></circle><rect x="95" y="10" width="45" height="16" rx="4" fill="#2563EB"></rect><text x="117.5" y="21" fill="#FFFFFF" font-size="7" font-weight="bold" text-anchor="middle" font-family="system-ui">TAP RFID</text><g transform="translate(18, 55)"><g transform="translate(0, 0)"><circle cx="12" cy="12" r="8" fill="#10B981" fill-opacity="0.15" stroke="#10B981" stroke-width="1.5"></circle><circle cx="12" cy="12" r="3" fill="#10B981"></circle><path d="M12 20 L12 36 M9 28 L15 28 M9 33 L13 33" stroke="#F59E0B" stroke-width="2" stroke-linecap="round"></path><text x="12" y="47" fill="currentColor" font-size="6.5" font-weight="bold" text-anchor="middle">#101</text></g><g transform="translate(42, 0)"><circle cx="12" cy="12" r="8" fill="#10B981" fill-opacity="0.15" stroke="#10B981" stroke-width="1.5"></circle><circle cx="12" cy="12" r="3" fill="#10B981"></circle><path d="M12 20 L12 36 M9 28 L15 28 M9 33 L13 33" stroke="#F59E0B" stroke-width="2" stroke-linecap="round"></path><text x="12" y="47" fill="currentColor" font-size="6.5" font-weight="bold" text-anchor="middle">#102</text></g><g transform="translate(84, 0)"><circle cx="12" cy="12" r="8" fill="#EF4444" fill-opacity="0.15" stroke="#EF4444" stroke-width="1.5"></circle><circle cx="12" cy="12" r="3" fill="#EF4444"></circle><text x="12" y="32" fill="#EF4444" font-size="7" font-weight="bold" text-anchor="middle">OUT</text><text x="12" y="47" fill="currentColor" font-size="6.5" font-weight="bold" text-anchor="middle">#103</text></g></g><g transform="translate(18, 110)"><g transform="translate(0, 0)"><circle cx="12" cy="12" r="8" fill="#10B981" fill-opacity="0.15" stroke="#10B981" stroke-width="1.5"></circle><circle cx="12" cy="12" r="3" fill="#10B981"></circle><path d="M12 20 L12 36 M9 28 L15 28" stroke="#F59E0B" stroke-width="2" stroke-linecap="round"></path><text x="12" y="47" fill="currentColor" font-size="6.5" font-weight="bold" text-anchor="middle">#104</text></g><g transform="translate(42, 0)"><circle cx="12" cy="12" r="8" fill="#10B981" fill-opacity="0.15" stroke="#10B981" stroke-width="1.5"></circle><circle cx="12" cy="12" r="3" fill="#10B981"></circle><path d="M12 20 L12 36 M9 28 L15 28" stroke="#F59E0B" stroke-width="2" stroke-linecap="round"></path><text x="12" y="47" fill="currentColor" font-size="6.5" font-weight="bold" text-anchor="middle">#105</text></g><g transform="translate(84, 0)"><circle cx="12" cy="12" r="8" fill="#10B981" fill-opacity="0.15" stroke="#10B981" stroke-width="1.5"></circle><circle cx="12" cy="12" r="3" fill="#10B981"></circle><path d="M12 20 L12 36 M9 28 L15 28" stroke="#F59E0B" stroke-width="2" stroke-linecap="round"></path><text x="12" y="47" fill="currentColor" font-size="6.5" font-weight="bold" text-anchor="middle">#106</text></g></g><g transform="translate(100, 115)"><rect x="0" y="0" width="125" height="44" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.12" stroke-width="1.5" filter="drop-shadow(0 8px 18px rgba(0,0,0,0.08))"></rect><circle cx="16" cy="22" r="6" fill="#10B981"></circle><text x="28" y="18" fill="currentColor" font-size="8.5" font-weight="bold" font-family="system-ui">Key Lockbox Access</text><text x="28" y="32" fill="#10B981" font-size="8" font-weight="bold" font-family="monospace">Unit #103 • M. Vance</text></g></g></svg>
  );
}
```

---

### 28. Anti-Siphoning & Rapid Drop Alert (`fuel-theft-alert.svg`)
- **Tags**: `security`, `fuel-theft`, `anti-siphoning`, `rapid-drop`, `sensor`, `alert`, `loss-prevention`, `fuel`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Telematics fuel level sensor graph with rapid drop curve, fuel cap padlock, and loss prevention alarms.

#### React / Next.js Component Snippet:
```tsx
export function FuelTheftAlertIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="fta-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#EF4444" stop-opacity="0.18"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#fta-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#EF4444" fill-opacity="0.1"></circle><circle cx="330" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#EF4444" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(70, 50)"><ellipse cx="130" cy="180" rx="100" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(15, 45)"><rect x="0" y="20" width="105" height="65" rx="18" fill="#334155" filter="drop-shadow(0 8px 18px rgba(0,0,0,0.15))"></rect><rect x="25" y="16" width="8" height="73" rx="2" fill="#94A3B8"></rect><rect x="75" y="16" width="8" height="73" rx="2" fill="#94A3B8"></rect><g transform="translate(80, 5)"><rect x="0" y="0" width="22" height="15" rx="4" fill="#F59E0B"></rect><circle cx="11" cy="7" r="3" fill="#1C1917"></circle></g><g transform="translate(15, 30)"><rect x="0" y="0" width="8" height="45" rx="3" fill="#0F172A"></rect><rect x="0" y="28" width="8" height="17" rx="3" fill="#EF4444"></rect></g></g><g transform="translate(95, 25)"><rect x="0" y="0" width="160" height="140" rx="18" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 10px 24px rgba(239,68,68,0.12))"></rect><g transform="translate(16, 16)"><text x="0" y="10" fill="currentColor" font-size="8.5" font-weight="bold" font-family="system-ui">FUEL LEVEL TELEMATICS</text><text x="0" y="28" fill="#EF4444" font-size="16" font-weight="900" font-family="monospace">-38.5 GAL <tspan font-size="8.5">DROP</tspan></text></g><g transform="translate(16, 55)"><line x1="0" y1="45" x2="128" y2="45" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></line><line x1="0" y1="10" x2="128" y2="10" stroke="currentColor" stroke-opacity="0.06" stroke-width="1" stroke-dasharray="3 3"></line><path d="M0 12 L65 14 L85 45 L128 45" stroke="#EF4444" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" fill="none"></path><circle cx="85" cy="45" r="5" fill="#EF4444"></circle><circle cx="85" cy="45" r="10" stroke="#EF4444" stroke-width="1.5" stroke-dasharray="3 3" fill="none"></circle></g><g transform="translate(12, 110)"><rect x="0" y="0" width="136" height="20" rx="6" fill="#FEE2E2"></rect><text x="10" y="13" fill="#B91C1C" font-size="7.5" font-weight="900" font-family="system-ui">RAPID SIPHON DETECTED (02:14 AM)</text></g></g></g></svg>
  );
}
```

---

### 29. Detached Trailer Asset Tracking (`trailer-tracking.svg`)
- **Tags**: `dashboard`, `trailer`, `tracking`, `solar`, `asset`, `dry-van`, `gps`, `beacon`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Standalone uncoupled 53-ft dry van, solar-powered GPS tracker beacon, and satellite orbital link.

#### React / Next.js Component Snippet:
```tsx
export function TrailerTrackingIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="tt-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#10B981" stop-opacity="0.06"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#tt-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="80" r="22" fill="#10B981" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(290, 35)"><ellipse cx="0" cy="0" rx="16" ry="7" fill="#2563EB" transform="rotate(-30)"></ellipse><line x1="-12" y1="-8" x2="12" y2="8" stroke="#FFFFFF" stroke-width="2"></line><rect x="-24" y="-7" width="10" height="14" rx="2" fill="#38BDF8" transform="rotate(-30)"></rect><rect x="14" y="-7" width="10" height="14" rx="2" fill="#38BDF8" transform="rotate(-30)"></rect><line x1="-15" y1="12" x2="-80" y2="65" stroke="#2563EB" stroke-width="1.5" stroke-dasharray="4 4" stroke-opacity="0.6"></line></g><g transform="translate(65, 55)"><ellipse cx="130" cy="175" rx="110" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(15, 30)"><rect x="20" y="20" width="180" height="95" rx="8" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2"></rect><rect x="20" y="20" width="180" height="10" rx="3" fill="#2563EB" fill-opacity="0.9"></rect><line x1="45" y1="35" x2="45" y2="105" stroke="currentColor" stroke-opacity="0.06" stroke-width="1.5"></line><line x1="75" y1="35" x2="75" y2="105" stroke="currentColor" stroke-opacity="0.06" stroke-width="1.5"></line><line x1="105" y1="35" x2="105" y2="105" stroke="currentColor" stroke-opacity="0.06" stroke-width="1.5"></line><line x1="135" y1="35" x2="135" y2="105" stroke="currentColor" stroke-opacity="0.06" stroke-width="1.5"></line><line x1="165" y1="35" x2="165" y2="105" stroke="currentColor" stroke-opacity="0.06" stroke-width="1.5"></line><g transform="translate(140, 110)"><circle cx="16" cy="14" r="13" fill="#1C1917"></circle><circle cx="16" cy="14" r="6" fill="#64748B"></circle><circle cx="46" cy="14" r="13" fill="#1C1917"></circle><circle cx="46" cy="14" r="6" fill="#64748B"></circle></g><rect x="45" y="115" width="6" height="20" fill="#475569"></rect><rect x="40" y="132" width="16" height="4" rx="1" fill="#1E293B"></rect><g transform="translate(14, 35)"><rect x="0" y="0" width="12" height="22" rx="4" fill="#1E293B" stroke="#10B981" stroke-width="1.5"></rect><rect x="2" y="3" width="8" height="8" rx="1" fill="#10B981"></rect><circle cx="6" cy="16" r="2" fill="#10B981"></circle></g></g><g transform="translate(10, 115)"><rect x="0" y="0" width="135" height="46" rx="12" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="1.5" filter="drop-shadow(0 8px 20px rgba(0,0,0,0.08))"></rect><circle cx="16" cy="23" r="5" fill="#10B981"></circle><text x="28" y="18" fill="currentColor" font-size="8.5" font-weight="bold" font-family="system-ui">Detached Trailer Asset</text><text x="28" y="32" fill="#2563EB" font-size="10" font-weight="900" font-family="monospace">TRL-5389 • Yard Parked</text></g></g></svg>
  );
}
```

---

### 30. Shipper & Consignee Live Tracking (`customer-portal.svg`)
- **Tags**: `dashboard`, `customer-portal`, `tracking`, `shipper`, `consignee`, `live-eta`, `visibility`, `delivery`
- **ViewBox**: `0 0 400 300`
- **Usage Note**: Public live shipment tracking URL, ETA countdown clock, and proof-of-delivery handover portal.

#### React / Next.js Component Snippet:
```tsx
export function CustomerPortalIllustration({ className = "w-64 h-64" }: { className?: string }) {
  return (
    <?xml version="1.0" encoding="UTF-8"?>
<svg className={className} viewBox="0 0 400 300" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="cp-blob-grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#2563EB" stop-opacity="0.16"></stop><stop offset="100%" stop-color="#FF5722" stop-opacity="0.05"></stop></linearGradient></defs><circle cx="200" cy="150" r="115" fill="url(#cp-blob-grad)"></circle><circle cx="70" cy="80" r="18" fill="#2563EB" fill-opacity="0.08"></circle><circle cx="330" cy="80" r="22" fill="#FF5722" fill-opacity="0.08"></circle><path d="M50 190 L58 190 M54 186 L54 194" stroke="#2563EB" stroke-width="2" stroke-linecap="round"></path><path d="M340 185 L348 185 M344 181 L344 189" stroke="#FF5722" stroke-width="2" stroke-linecap="round"></path><g transform="translate(70, 45)"><ellipse cx="130" cy="185" rx="105" ry="14" fill="currentColor" fill-opacity="0.06"></ellipse><g transform="translate(15, 15)"><rect x="75" y="130" width="16" height="30" fill="#64748B"></rect><rect x="55" y="155" width="56" height="8" rx="3" fill="#475569"></rect><rect x="0" y="0" width="165" height="130" rx="14" fill="var(--bg-surface, #FFFFFF)" stroke="currentColor" stroke-opacity="0.14" stroke-width="2" filter="drop-shadow(0 8px 20px rgba(0,0,0,0.08))"></rect><path d="M0 14 C0 6 6 0 14 0 L151 0 C159 0 165 6 165 14 L165 24 L0 24 Z" fill="#F1F5F9"></path><circle cx="12" cy="12" r="3" fill="#EF4444"></circle><circle cx="20" cy="12" r="3" fill="#F59E0B"></circle><circle cx="28" cy="12" r="3" fill="#10B981"></circle><rect x="42" y="6" width="95" height="12" rx="4" fill="#FFFFFF"></rect><text x="48" y="15" fill="#64748B" font-size="6.5" font-family="monospace">track.fleetpilot.com/live</text><g transform="translate(12, 34)"><rect x="0" y="0" width="141" height="84" rx="8" fill="currentColor" fill-opacity="0.04" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></rect><path d="M0 30 Q40 45 80 20 T141 50" stroke="#2563EB" stroke-width="3" fill="none"></path><circle cx="25" cy="35" r="5" fill="#2563EB"></circle><circle cx="115" cy="40" r="7" fill="#FF5722"></circle><circle cx="115" cy="40" r="3" fill="#FFFFFF"></circle></g></g><g transform="translate(145, 55)"><rect x="0" y="0" width="75" height="130" rx="14" fill="#0F172A" stroke="#334155" stroke-width="2" filter="drop-shadow(0 12px 24px rgba(0,0,0,0.18))"></rect><rect x="5" y="8" width="65" height="114" rx="9" fill="var(--bg-surface, #FFFFFF)"></rect><rect x="25" y="10" width="25" height="4" rx="2" fill="#0F172A"></rect><g transform="translate(10, 22)"><rect x="0" y="0" width="55" height="18" rx="6" fill="#10B981" fill-opacity="0.15"></rect><circle cx="8" cy="9" r="3" fill="#10B981"></circle><text x="15" y="12" fill="#10B981" font-size="6.5" font-weight="bold">Out for Delivery</text></g><g transform="translate(10, 48)"><text x="0" y="10" fill="currentColor" font-size="8" font-weight="bold" font-family="system-ui">ETA TODAY</text><text x="0" y="24" fill="#2563EB" font-size="12" font-weight="900" font-family="monospace">3:15 PM</text><line x1="0" y1="30" x2="55" y2="30" stroke="currentColor" stroke-opacity="0.1" stroke-width="1"></line></g><g transform="translate(10, 88)"><rect x="0" y="0" width="55" height="18" rx="6" fill="#2563EB"></rect><text x="27.5" y="12" fill="#FFFFFF" font-size="7" font-weight="bold" text-anchor="middle" font-family="system-ui">Live Link</text></g></g></g></svg>
  );
}
```


---

*Generated by Appiqa AI Design Systems. Open-source under MIT / Open-Source license.*
