first commit

This commit is contained in:
Daniel Kovalevich
2026-03-30 13:56:24 -04:00
commit 260f7c4928
17 changed files with 5335 additions and 0 deletions

775
mock-data-extended.js Normal file
View File

@@ -0,0 +1,775 @@
// =====================================================================
// EXTENDED MOCK DATA — Additional modules for V1 POC
// All data is SIMULATED for demonstration purposes.
// Include AFTER mock-data.js: <script src="mock-data-extended.js">
// =====================================================================
// =====================================================================
// STATE DOT CONTACTS (Module 14)
// =====================================================================
const MOCK_STATE_CONTACTS = {
AL: { name:"Alabama", permit:"(334) 242-5100", police:"(800) 392-8800", email:"permits@aldot.example.gov", hours:"M-F 7am-5pm CT", portal:"https://www.dot.state.al.us/" },
AK: { name:"Alaska", permit:"(907) 365-1200", police:"(907) 269-5511", email:"permits@dot.alaska.example.gov", hours:"M-F 8am-4:30pm AKT", portal:"https://dot.alaska.gov/" },
AZ: { name:"Arizona", permit:"(602) 712-7355", police:"(602) 223-2000", email:"permits@azdot.example.gov", hours:"M-F 7am-5pm MST", portal:"https://azdot.gov/" },
AR: { name:"Arkansas", permit:"(501) 569-2381", police:"(501) 618-8000", email:"permits@ardot.example.gov", hours:"M-F 7am-4:30pm CT", portal:"https://www.ardot.gov/" },
CA: { name:"California", permit:"(916) 654-4849", police:"(800) 835-5247", email:"permits@caltrans.example.gov", hours:"M-F 8am-5pm PT", portal:"https://dot.ca.gov/" },
CO: { name:"Colorado", permit:"(303) 757-9539", police:"(303) 239-4501", email:"permits@cdot.example.gov", hours:"M-F 7am-5pm MT", portal:"https://www.codot.gov/" },
CT: { name:"Connecticut", permit:"(860) 594-2874", police:"(860) 685-8190", email:"permits@ct.example.gov", hours:"M-F 8am-4:30pm ET", portal:"https://portal.ct.gov/dot" },
DE: { name:"Delaware", permit:"(302) 326-4650", police:"(302) 739-5901", email:"permits@deldot.example.gov", hours:"M-F 8am-4pm ET", portal:"https://deldot.gov/" },
FL: { name:"Florida", permit:"(850) 410-5777", police:"(850) 617-2000", email:"permits@fdot.example.gov", hours:"M-F 7am-6pm ET", portal:"https://www.fdot.gov/" },
GA: { name:"Georgia", permit:"(404) 635-8040", police:"(404) 624-7000", email:"permits@dot.ga.example.gov", hours:"M-F 7:30am-4:30pm ET", portal:"https://www.dot.ga.gov/" },
HI: { name:"Hawaii", permit:"(808) 692-7675", police:"(808) 586-1352", email:"permits@hawaii.example.gov", hours:"M-F 7:45am-4:30pm HST", portal:"https://hidot.hawaii.gov/" },
ID: { name:"Idaho", permit:"(208) 334-8418", police:"(208) 884-7000", email:"permits@itd.example.gov", hours:"M-F 7am-5pm MT", portal:"https://itd.idaho.gov/" },
IL: { name:"Illinois", permit:"(217) 785-1477", police:"(217) 782-6637", email:"permits@idot.example.gov", hours:"M-F 7am-4:30pm CT", portal:"https://idot.illinois.gov/" },
IN: { name:"Indiana", permit:"(317) 615-7320", police:"(317) 232-8248", email:"permits@indot.example.gov", hours:"M-F 7:30am-4pm ET", portal:"https://www.in.gov/indot/" },
IA: { name:"Iowa", permit:"(515) 237-3264", police:"(515) 725-6090", email:"permits@iowadot.example.gov", hours:"M-F 7am-4:30pm CT", portal:"https://iowadot.gov/" },
KS: { name:"Kansas", permit:"(785) 296-3618", police:"(785) 296-6800", email:"permits@ksdot.example.gov", hours:"M-F 8am-5pm CT", portal:"https://www.ksdot.gov/" },
KY: { name:"Kentucky", permit:"(502) 564-4540", police:"(502) 227-8700", email:"permits@kytc.example.gov", hours:"M-F 8am-4:30pm ET", portal:"https://transportation.ky.gov/" },
LA: { name:"Louisiana", permit:"(225) 379-1436", police:"(225) 925-6006", email:"permits@dotd.la.example.gov", hours:"M-F 7:30am-4pm CT", portal:"https://www.dotd.la.gov/" },
ME: { name:"Maine", permit:"(207) 624-3600", police:"(207) 624-7076", email:"permits@maine.example.gov", hours:"M-F 8am-4pm ET", portal:"https://www.maine.gov/mdot/" },
MD: { name:"Maryland", permit:"(410) 582-5734", police:"(410) 486-3101", email:"permits@mdot.example.gov", hours:"M-F 8am-4:30pm ET", portal:"https://www.roads.maryland.gov/" },
MA: { name:"Massachusetts", permit:"(857) 368-9640", police:"(508) 820-2300", email:"permits@massdot.example.gov", hours:"M-F 8:30am-5pm ET", portal:"https://www.mass.gov/massdot" },
MI: { name:"Michigan", permit:"(517) 335-0945", police:"(517) 332-2521", email:"permits@michigan.example.gov", hours:"M-F 8am-4:30pm ET", portal:"https://www.michigan.gov/mdot" },
MN: { name:"Minnesota", permit:"(651) 296-6000", police:"(651) 201-7100", email:"permits@mndot.example.gov", hours:"M-F 7:30am-4pm CT", portal:"https://www.dot.state.mn.us/" },
MS: { name:"Mississippi", permit:"(601) 359-7685", police:"(601) 987-1212", email:"permits@mdot.ms.example.gov", hours:"M-F 7am-5pm CT", portal:"https://mdot.ms.gov/" },
MO: { name:"Missouri", permit:"(573) 751-7100", police:"(573) 751-3313", email:"permits@modot.example.gov", hours:"M-F 7:30am-4:30pm CT", portal:"https://www.modot.org/" },
MT: { name:"Montana", permit:"(406) 444-6130", police:"(406) 444-3780", email:"permits@mdt.example.gov", hours:"M-F 8am-5pm MT", portal:"https://www.mdt.mt.gov/" },
NE: { name:"Nebraska", permit:"(402) 471-0034", police:"(402) 471-4545", email:"permits@dot.ne.example.gov", hours:"M-F 8am-5pm CT", portal:"https://dot.nebraska.gov/" },
NV: { name:"Nevada", permit:"(775) 888-7410", police:"(775) 687-5300", email:"permits@dot.nv.example.gov", hours:"M-F 7am-5pm PT", portal:"https://www.dot.nv.gov/" },
NH: { name:"New Hampshire", permit:"(603) 227-6100", police:"(603) 223-4381", email:"permits@nh.example.gov", hours:"M-F 8am-4pm ET", portal:"https://www.nh.gov/dot/" },
NJ: { name:"New Jersey", permit:"(609) 530-2345", police:"(609) 882-2000", email:"permits@njdot.example.gov", hours:"M-F 8am-4:30pm ET", portal:"https://www.nj.gov/transportation/" },
NM: { name:"New Mexico", permit:"(505) 827-4565", police:"(505) 827-9300", email:"permits@dot.nm.example.gov", hours:"M-F 8am-5pm MT", portal:"https://www.dot.nm.gov/" },
NY: { name:"New York", permit:"(518) 457-1014", police:"(518) 457-6811", email:"permits@nysdot.example.gov", hours:"M-F 8am-4pm ET", portal:"https://www.dot.ny.gov/" },
NC: { name:"North Carolina", permit:"(919) 733-7752", police:"(919) 733-7952", email:"permits@ncdot.example.gov", hours:"M-F 8am-5pm ET", portal:"https://www.ncdot.gov/" },
ND: { name:"North Dakota", permit:"(701) 328-2543", police:"(701) 328-2455", email:"permits@dot.nd.example.gov", hours:"M-F 8am-5pm CT", portal:"https://www.dot.nd.gov/" },
OH: { name:"Ohio", permit:"(614) 351-2300", police:"(614) 466-2660", email:"permits@odot.example.gov", hours:"M-F 7am-5pm ET", portal:"https://www.transportation.ohio.gov/" },
OK: { name:"Oklahoma", permit:"(405) 521-2558", police:"(405) 425-2424", email:"permits@odot.ok.example.gov", hours:"M-F 7:30am-4:30pm CT", portal:"https://oklahoma.gov/odot.html" },
OR: { name:"Oregon", permit:"(503) 378-6699", police:"(503) 378-3720", email:"permits@odot.or.example.gov", hours:"M-F 7:30am-4:30pm PT", portal:"https://www.oregon.gov/odot/" },
PA: { name:"Pennsylvania", permit:"(717) 787-3156", police:"(717) 783-5599", email:"permits@penndot.example.gov", hours:"M-F 8am-4pm ET", portal:"https://www.penndot.pa.gov/" },
RI: { name:"Rhode Island", permit:"(401) 222-2481", police:"(401) 444-1000", email:"permits@ridot.example.gov", hours:"M-F 8:30am-4pm ET", portal:"https://www.dot.ri.gov/" },
SC: { name:"South Carolina", permit:"(803) 737-1290", police:"(803) 896-7920", email:"permits@scdot.example.gov", hours:"M-F 8am-5pm ET", portal:"https://www.scdot.org/" },
SD: { name:"South Dakota", permit:"(605) 773-3571", police:"(605) 773-3105", email:"permits@sddot.example.gov", hours:"M-F 8am-5pm CT", portal:"https://dot.sd.gov/" },
TN: { name:"Tennessee", permit:"(615) 741-3821", police:"(615) 251-5175", email:"permits@tn.example.gov", hours:"M-F 7am-4:30pm CT", portal:"https://www.tn.gov/tdot.html" },
TX: { name:"Texas", permit:"(512) 465-7603", police:"(512) 424-2000", email:"permits@txdmv.example.gov", hours:"M-F 7am-6pm CT", portal:"https://www.txdmv.gov/" },
UT: { name:"Utah", permit:"(801) 965-4468", police:"(801) 887-3800", email:"permits@udot.example.gov", hours:"M-F 8am-5pm MT", portal:"https://www.udot.utah.gov/" },
VT: { name:"Vermont", permit:"(802) 828-2070", police:"(802) 244-8727", email:"permits@vtrans.example.gov", hours:"M-F 7:45am-4:30pm ET", portal:"https://vtrans.vermont.gov/" },
VA: { name:"Virginia", permit:"(804) 497-1560", police:"(804) 674-2000", email:"permits@vdot.example.gov", hours:"M-F 8am-5pm ET", portal:"https://www.virginiadot.org/" },
WA: { name:"Washington", permit:"(360) 704-6340", police:"(360) 596-4000", email:"permits@wsdot.example.gov", hours:"M-F 7am-5pm PT", portal:"https://wsdot.wa.gov/" },
WV: { name:"West Virginia", permit:"(304) 558-3063", police:"(304) 746-2100", email:"permits@wvdoh.example.gov", hours:"M-F 7am-4pm ET", portal:"https://transportation.wv.gov/" },
WI: { name:"Wisconsin", permit:"(608) 266-7320", police:"(608) 266-3212", email:"permits@wisdot.example.gov", hours:"M-F 7am-4:30pm CT", portal:"https://wisconsindot.gov/" },
WY: { name:"Wyoming", permit:"(307) 777-4375", police:"(307) 777-4301", email:"permits@wydot.example.gov", hours:"M-F 8am-5pm MT", portal:"https://www.dot.state.wy.us/" },
DC: { name:"District of Columbia", permit:"(202) 673-6813", police:"(202) 727-9099", email:"permits@ddot.example.gov", hours:"M-F 8:30am-4:30pm ET", portal:"https://ddot.dc.gov/" }
};
// =====================================================================
// STATE EQUIPMENT REQUIREMENTS (Module 12)
// Detailed data for major trucking states; others show "Data coming soon"
// =====================================================================
const MOCK_STATE_EQUIPMENT = {
TX: {
escort: {
certification: "Required — must complete TxDMV-approved pilot/escort vehicle course",
vehicle: "Passenger car, pickup, or SUV — no commercial vehicles",
signs: "OVERSIZE LOAD sign, minimum 7' wide × 18\" tall, yellow background, black letters, front and rear",
lights: "2 amber rotating or strobe lights mounted on roof, visible from 500'",
heightPole: "Required when leading overheight loads exceeding 15'",
flags: "18\" red/orange fluorescent flags at 4 corners of vehicle",
communication: "CB radio required — channel 19 monitored at all times",
safety: "First aid kit, 10BC fire extinguisher, flashlight, reflective vest"
},
carrier: {
signs: "OVERSIZE LOAD banner — roof-mounted or bumper-mounted permitted, yellow/black, min 7'×18\"",
flags: "18\" red/orange flags at each corner and extremity of load",
lights: "Amber flashing lights at widest points of load, front and rear",
cones: "Not required by state, but recommended",
fireExtinguisher: "10BC rated fire extinguisher required",
triangles: "3 reflective triangles required",
flares: "Not required",
firstAid: "Not required by state"
}
},
CA: {
escort: {
certification: "Required — CHP-approved Pilot Car Escort Training (PCET) certification",
vehicle: "Must pass annual CHP inspection — car, pickup, or SUV",
signs: "OVERSIZE LOAD sign front and rear, min 6' wide × 18\" tall, reflective",
lights: "Amber flashing light on roof, visible 360°",
heightPole: "Required for all overheight loads — must extend to load height plus 6\"",
flags: "Red/orange fluorescent flags, 18\" min, at 4 corners",
communication: "Two-way radio or CB required",
safety: "First aid kit, fire extinguisher, 3 reflective triangles, reflective vest, flashlight"
},
carrier: {
signs: "OVERSIZE LOAD banner — ROOF-MOUNTED REQUIRED, reflective, min 7'×18\"",
flags: "Red/orange flags at extremities, 18\" min — required day and night",
lights: "Amber warning lights at widest points, amber flashers on truck",
cones: "6 traffic cones required (28\" min height)",
fireExtinguisher: "10BC rated required",
triangles: "3 reflective triangles required",
flares: "3 fuses/flares required",
firstAid: "First aid kit required"
}
},
OH: {
escort: {
certification: "Not state-mandated, but ODOT recommends completion of training course",
vehicle: "Passenger vehicle or light-duty truck",
signs: "OVERSIZE LOAD sign, yellow/black, min 5' wide × 10\" tall",
lights: "Amber rotating or flashing light on roof",
heightPole: "Required when escorting overheight loads",
flags: "Orange flags at corners of vehicle",
communication: "CB radio recommended, cell phone minimum",
safety: "Fire extinguisher, first aid kit recommended"
},
carrier: {
signs: "OVERSIZE LOAD banner — bumper-mounted permitted, min 7'×18\"",
flags: "Red/orange flags at extremities of load",
lights: "Amber flashing lights on widest points of load",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 reflective triangles required",
flares: "Not required",
firstAid: "Not required"
}
},
PA: {
escort: {
certification: "Required — PennDOT approved training course",
vehicle: "Single-unit vehicle, must be registered and insured",
signs: "OVERSIZE LOAD sign, yellow/black, front and rear",
lights: "Amber 360° flashing/rotating light on roof, visible 500'",
heightPole: "Required for overheight loads on Turnpike; recommended elsewhere",
flags: "Red/orange flags at 4 corners",
communication: "CB radio required",
safety: "First aid kit, fire extinguisher, reflective vest, flashlight"
},
carrier: {
signs: "OVERSIZE LOAD sign — front and rear of vehicle, roof-mounted on tractor",
flags: "Red/orange fluorescent flags at extremities and corners of load",
lights: "Amber rotating light on cab, amber lights at widest points",
cones: "Not required",
fireExtinguisher: "10BC rated required",
triangles: "3 reflective triangles required",
flares: "Not required",
firstAid: "Not required"
}
},
FL: {
escort: {
certification: "Not state-mandated — no formal certification program",
vehicle: "Any passenger vehicle or light truck",
signs: "OVERSIZE LOAD sign, yellow/black, displayed prominently",
lights: "Amber rotating or strobe light on roof",
heightPole: "Required for overheight loads when escort is in front",
flags: "Red/orange flags at corners of escort vehicle",
communication: "CB radio or two-way radio required",
safety: "Fire extinguisher recommended, first aid kit recommended"
},
carrier: {
signs: "OVERSIZE LOAD banner — bumper-mounted or roof-mounted, min 7'×18\"",
flags: "18\" red/orange flags at each extremity of load",
lights: "Amber warning lights at widest points",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 reflective triangles required",
flares: "Not required",
firstAid: "Not required"
}
},
GA: {
escort: {
certification: "Not state-mandated — training recommended",
vehicle: "Passenger vehicle or light-duty truck",
signs: "OVERSIZE LOAD sign front and rear",
lights: "Amber flashing or rotating light, roof-mounted",
heightPole: "Required for overheight loads",
flags: "Red/orange flags at corners",
communication: "CB radio or cell phone",
safety: "Fire extinguisher, first aid kit"
},
carrier: {
signs: "OVERSIZE LOAD banner — bumper-mounted permitted",
flags: "Red/orange flags at extremities",
lights: "Amber flashers at widest points",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 triangles required",
flares: "Not required",
firstAid: "Not required"
}
},
IL: {
escort: {
certification: "Not state-mandated",
vehicle: "Single-unit passenger vehicle",
signs: "OVERSIZE LOAD sign, front and rear, yellow/black",
lights: "Amber rotating light on roof",
heightPole: "Required for overheight escorts",
flags: "Red/orange flags at 4 corners",
communication: "CB radio required for loads over 14' wide",
safety: "Fire extinguisher, reflective vest"
},
carrier: {
signs: "OVERSIZE LOAD banner — front and rear, roof or bumper mount allowed",
flags: "Red/orange flags at load extremities and corners, 18\" min",
lights: "Amber flashers on widest points, rotating amber on cab",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 reflective triangles required",
flares: "Not required",
firstAid: "Not required"
}
},
NY: {
escort: {
certification: "Required — NYSDOT approved escort vehicle operator course",
vehicle: "Passenger vehicle, under 10,000 lbs GVW",
signs: "OVERSIZE LOAD sign front and rear, black on yellow, reflective",
lights: "Amber 360° light, roof-mounted, visible 500'",
heightPole: "Required for all overheight loads in the state",
flags: "18\" red/orange flags at all 4 corners",
communication: "CB radio required, cell phone as backup",
safety: "First aid kit, fire extinguisher, 3 reflective triangles, reflective vest"
},
carrier: {
signs: "OVERSIZE LOAD sign — ROOF-MOUNTED REQUIRED on tractor",
flags: "Red/orange flags at all corners and extremities, 18\" min",
lights: "Amber rotating on cab, amber flashers at widest points of load",
cones: "Not required",
fireExtinguisher: "10BC required",
triangles: "3 reflective triangles required",
flares: "3 fusees required",
firstAid: "Not required"
}
},
NC: {
escort: {
certification: "Not state-mandated — recommended",
vehicle: "Passenger vehicle or light truck",
signs: "OVERSIZE LOAD sign front and rear",
lights: "Amber rotating/flashing on roof",
heightPole: "Required for overheight loads",
flags: "Red/orange flags at corners",
communication: "CB radio recommended",
safety: "Fire extinguisher, first aid kit recommended"
},
carrier: {
signs: "OVERSIZE LOAD banner — bumper-mounted permitted",
flags: "Red/orange flags at extremities",
lights: "Amber flashers at widest points",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 required",
flares: "Not required",
firstAid: "Not required"
}
},
LA: {
escort: {
certification: "Not state-mandated",
vehicle: "Passenger vehicle or light truck",
signs: "OVERSIZE LOAD sign, front and rear, yellow/black",
lights: "Amber rotating light on roof",
heightPole: "Required for overheight loads exceeding 14'6\"",
flags: "Red/orange flags at all corners",
communication: "CB radio required",
safety: "Fire extinguisher, first aid kit"
},
carrier: {
signs: "OVERSIZE LOAD banner — bumper or roof mount",
flags: "Red/orange flags at extremities, 18\" min",
lights: "Amber warning lights at widest points",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 required",
flares: "Not required",
firstAid: "Not required"
}
},
OK: {
escort: {
certification: "Not state-mandated",
vehicle: "Passenger vehicle or pickup truck",
signs: "OVERSIZE LOAD sign, yellow/black, front and rear",
lights: "Amber rotating or strobe on roof",
heightPole: "Required for overheight loads",
flags: "Red/orange flags at 4 corners",
communication: "CB radio required",
safety: "Fire extinguisher, flashlight"
},
carrier: {
signs: "OVERSIZE LOAD banner — bumper-mounted or roof-mounted accepted",
flags: "Red/orange flags at all corners and extremities",
lights: "Amber flashers at widest/tallest/longest points",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 reflective triangles required",
flares: "Not required",
firstAid: "Not required"
}
},
IN: {
escort: {
certification: "Not state-mandated — INDOT recommends training",
vehicle: "Passenger vehicle or light truck",
signs: "OVERSIZE LOAD sign, front and rear",
lights: "Amber rotating/flashing light on roof",
heightPole: "Required for overheight loads",
flags: "Orange flags at corners",
communication: "CB radio or cell phone",
safety: "Fire extinguisher recommended"
},
carrier: {
signs: "OVERSIZE LOAD banner — front and rear, bumper mount OK",
flags: "Red/orange flags at extremities",
lights: "Amber flashers at widest points",
cones: "Not required",
fireExtinguisher: "Required",
triangles: "3 required",
flares: "Not required",
firstAid: "Not required"
}
}
};
// =====================================================================
// TRUCK STOPS & PARKING (Module 5)
// =====================================================================
const MOCK_TRUCK_STOPS = [
{
id:"TS-001", name:"Sapp Bros. Travel Center", type:"truck_stop",
location:{ city:"Amarillo", state:"TX", lat:35.19, lng:-101.78 },
oversizeFriendly:true, entranceWidth:"26'", entranceHeight:"No restriction",
lotSize:"4.2 acres total", oversizeCapacity:"5-6 oversize loads",
facilities:["fuel","food","restrooms","showers","mechanic","scale"],
description:"Large open lot on the south side. Adjacent gravel area can fit extra-wide loads. South entrance is best for oversize.",
comments:[
{ user:"TruckerMike_TX", date:"2026-03-15", text:"Parked a 16'4\" wide wind blade here. South lot had plenty of room. Use the south entrance off the service road." },
{ user:"HighPolePete", date:"2026-02-28", text:"South entrance is the only one that works for oversize. North has tight posts. Good fuel prices." }
]
},
{
id:"TS-002", name:"Iowa 80 Truckstop", type:"truck_stop",
location:{ city:"Walcott", state:"IA", lat:41.58, lng:-90.77 },
oversizeFriendly:true, entranceWidth:"30'+", entranceHeight:"No restriction",
lotSize:"8+ acres total", oversizeCapacity:"10+ oversize loads",
facilities:["fuel","food","restrooms","showers","mechanic","scale","trucking_museum","barber","chiropractor"],
description:"World's largest truck stop. Massive open lot on east side regularly used for oversize staging. Multiple wide entrances.",
comments:[
{ user:"MidwestHauler", date:"2026-03-20", text:"Best oversize parking on I-80. East lot is huge — I've seen 3 blade trucks staged here at once." },
{ user:"BladRunner_IA", date:"2026-03-05", text:"Great staging area for wind energy loads heading south on I-80 to I-35." }
]
},
{
id:"TS-003", name:"Petro Stopping Center", type:"truck_stop",
location:{ city:"Rochelle", state:"IL", lat:41.92, lng:-89.07 },
oversizeFriendly:true, entranceWidth:"24'", entranceHeight:"No restriction",
lotSize:"3.8 acres", oversizeCapacity:"3-4 oversize loads",
facilities:["fuel","food","restrooms","showers","iron_skillet"],
description:"I-39/I-88 junction location. Open area behind main lot can accommodate oversized loads. Wind blade traffic common.",
comments:[
{ user:"PrairiePilot", date:"2026-03-10", text:"Regular stop for blade loads on I-39 corridor. Back lot is gravel but solid ground." }
]
},
{
id:"TS-004", name:"Breezewood Travel Plaza", type:"rest_area",
location:{ city:"Breezewood", state:"PA", lat:39.99, lng:-78.24 },
oversizeFriendly:false, entranceWidth:"14'", entranceHeight:"13'8\" (canopy)",
lotSize:"2 acres", oversizeCapacity:"1-2 standard oversize only",
facilities:["fuel","food","restrooms"],
description:"Famous I-70/I-76 interchange. Very tight for oversize — canopy restricts height. NOT recommended for wide or tall loads.",
comments:[
{ user:"KeystoneEscort", date:"2026-03-22", text:"DO NOT bring oversize through the main fuel canopy. There's a pull-off east of the plaza on the service road that works in a pinch." },
{ user:"NE_Hauler", date:"2026-02-15", text:"Avoid this place with anything over 12' wide. The whole town is a bottleneck. Plan to fuel before or after." }
]
},
{
id:"TS-005", name:"Buc-ee's", type:"truck_stop",
location:{ city:"Terrell", state:"TX", lat:32.72, lng:-96.22 },
oversizeFriendly:true, entranceWidth:"28'", entranceHeight:"No restriction",
lotSize:"5+ acres", oversizeCapacity:"4-5 oversize loads",
facilities:["fuel","food","restrooms","ev_charging"],
description:"Massive lot with wide lanes. Oversize can park on the outer perimeter. No dedicated truck parking but plenty of space.",
comments:[
{ user:"LoneStarOS", date:"2026-03-18", text:"Clean restrooms and great food. Park on the far east side — wide open and easy in/out." }
]
},
{
id:"TS-006", name:"Pilot Travel Center", type:"truck_stop",
location:{ city:"Salina", state:"KS", lat:38.81, lng:-97.59 },
oversizeFriendly:true, entranceWidth:"24'", entranceHeight:"No restriction",
lotSize:"3.5 acres", oversizeCapacity:"3-4 oversize loads",
facilities:["fuel","food","restrooms","showers","scale"],
description:"I-70/I-135 junction. Good oversize parking behind the main lot. Flat gravel area to the south.",
comments:[
{ user:"KSWindHauler", date:"2026-03-12", text:"Solid mid-Kansas stop. South gravel lot handles blade trucks fine." }
]
},
{
id:"TS-007", name:"Little America Travel Center", type:"truck_stop",
location:{ city:"Little America", state:"WY", lat:41.54, lng:-110.07 },
oversizeFriendly:true, entranceWidth:"30'+", entranceHeight:"No restriction",
lotSize:"6 acres", oversizeCapacity:"6-8 oversize loads",
facilities:["fuel","food","restrooms","hotel","showers"],
description:"Remote I-80 oasis with enormous lot. Very oversize-friendly — wide open spaces. Common staging point for loads heading through Wyoming.",
comments:[
{ user:"RockyMtnLog", date:"2026-03-08", text:"Best oversize stop in southern Wyoming. Huge lot, 24/7 fuel. Wind can be brutal though — check conditions before stopping." },
{ user:"WYO_Escort", date:"2026-02-20", text:"We stage here all the time for loads heading east or west on I-80. Hotel is decent for overnight." }
]
},
{
id:"TS-008", name:"Bosselman Travel Center", type:"truck_stop",
location:{ city:"North Platte", state:"NE", lat:41.11, lng:-100.77 },
oversizeFriendly:true, entranceWidth:"24'", entranceHeight:"No restriction",
lotSize:"3 acres", oversizeCapacity:"3-4 oversize loads",
facilities:["fuel","food","restrooms","showers","mechanic"],
description:"I-80 corridor stop. Open area north of main lot usable for oversize. Regular wind turbine traffic.",
comments:[
{ user:"NE_OversizeOps", date:"2026-03-01", text:"Good stop on the I-80 wind corridor. North lot is gravel and fits wide loads." }
]
},
{
id:"TS-009", name:"Flying J Travel Center", type:"truck_stop",
location:{ city:"Dillon", state:"SC", lat:34.41, lng:-79.39 },
oversizeFriendly:true, entranceWidth:"22'", entranceHeight:"No restriction",
lotSize:"3.2 acres", oversizeCapacity:"2-3 oversize loads",
facilities:["fuel","food","restrooms","showers","scale"],
description:"I-95/I-20 junction. Some oversize parking on the east side. Gets busy — arrive early.",
comments:[
{ user:"PeachStateP", date:"2026-03-14", text:"East side has room for 2-3 oversize rigs. Tight during peak hours though." }
]
},
{
id:"TS-010", name:"Love's Travel Stop", type:"truck_stop",
location:{ city:"Eloy", state:"AZ", lat:32.74, lng:-111.54 },
oversizeFriendly:true, entranceWidth:"26'", entranceHeight:"No restriction",
lotSize:"4 acres", oversizeCapacity:"4-5 oversize loads",
facilities:["fuel","food","restrooms","showers"],
description:"I-10 corridor between Phoenix and Tucson. Open desert lot on south side handles oversize well.",
comments:[
{ user:"DesertSun_TX", date:"2026-03-25", text:"Good I-10 stop. South lot is flat and open. Carry extra water — it's the desert." }
]
}
];
// =====================================================================
// BRIDGE & OVERPASS CLEARANCES (Module 6)
// =====================================================================
const MOCK_BRIDGE_CLEARANCES = [
{ id:"BR-001", route:"I-95 NB", mileMarker:"67.2", type:"Overpass",
location:{ desc:"Fort McHenry Tunnel approach", city:"Baltimore", state:"MD", lat:39.26, lng:-76.58 },
clearanceHeight:"13'6\"", clearanceWidth:"No restriction", weightLimit:"80,000 lbs (standard)",
notes:"Major bottleneck for overheight loads on I-95 NB. Overheight loads must use I-695 bypass around Baltimore." },
{ id:"BR-002", route:"I-70 WB", mileMarker:"213.5", type:"Tunnel",
location:{ desc:"Eisenhower-Johnson Memorial Tunnel", city:"Silver Plume", state:"CO", lat:39.68, lng:-105.91 },
clearanceHeight:"13'11\"", clearanceWidth:"13'0\" (per lane)", weightLimit:"Route-specific",
notes:"Highest point on the Interstate system. Oversize loads often must use US-6 Loveland Pass detour. Hazmat prohibited." },
{ id:"BR-003", route:"I-64 WB", mileMarker:"58.1", type:"Tunnel",
location:{ desc:"East River Mountain Tunnel", city:"Near Bluefield", state:"WV", lat:37.37, lng:-81.10 },
clearanceHeight:"15'5\"", clearanceWidth:"12'0\" (per lane)", weightLimit:"80,000 lbs",
notes:"Two-lane bore with restricted width. Overwide loads must use alternate routes. Frequent delays." },
{ id:"BR-004", route:"I-35 SB", mileMarker:"429.8", type:"Overpass",
location:{ desc:"Downtown Dallas interchange", city:"Dallas", state:"TX", lat:32.79, lng:-96.80 },
clearanceHeight:"14'0\"", clearanceWidth:"No restriction", weightLimit:"Standard",
notes:"Several low overpasses through downtown Dallas on I-35E. Overheight loads should use I-35W bypass through Fort Worth." },
{ id:"BR-005", route:"I-76 EB", mileMarker:"161.3", type:"Overpass",
location:{ desc:"Pennsylvania Turnpike — Valley Forge area", city:"King of Prussia", state:"PA", lat:40.09, lng:-75.38 },
clearanceHeight:"14'2\"", clearanceWidth:"No restriction", weightLimit:"Turnpike limits apply",
notes:"PA Turnpike has numerous older overpasses with restricted clearances. Contact Turnpike Commission for oversize routing." },
{ id:"BR-006", route:"US-20 EB", mileMarker:"N/A", type:"Overpass (multiple)",
location:{ desc:"Route 20 through Connecticut", city:"Various", state:"CT", lat:41.60, lng:-72.75 },
clearanceHeight:"12'6\" — 13'6\" (varies)", clearanceWidth:"Restricted at several points", weightLimit:"Varies by bridge",
notes:"Multiple low clearance overpasses along US-20 through CT. Not recommended for overheight. Use I-84 or I-91 where possible." },
{ id:"BR-007", route:"I-90 WB", mileMarker:"52.4", type:"Overpass",
location:{ desc:"Chicago Skyway / Dan Ryan interchange", city:"Chicago", state:"IL", lat:41.72, lng:-87.56 },
clearanceHeight:"14'0\"", clearanceWidth:"No restriction", weightLimit:"Standard",
notes:"Chicago metro area has multiple low overpasses. Oversize loads require IDOT-approved routing through the metro." },
{ id:"BR-008", route:"I-24 EB", mileMarker:"174.9", type:"Overpass",
location:{ desc:"Chattanooga downtown area", city:"Chattanooga", state:"TN", lat:35.04, lng:-85.28 },
clearanceHeight:"14'4\"", clearanceWidth:"No restriction", weightLimit:"Standard",
notes:"Series of overpasses through downtown Chattanooga with varying clearances. Check permit routing carefully." },
{ id:"BR-009", route:"I-10 EB", mileMarker:"768.3", type:"Overpass",
location:{ desc:"Houston ship channel bridge approaches", city:"Houston", state:"TX", lat:29.74, lng:-95.09 },
clearanceHeight:"Varies — 14'6\" to 16'2\"", clearanceWidth:"No restriction", weightLimit:"Standard",
notes:"Complex interchange area with varying clearances. Follow permitted route exactly. Some ramps have lower clearances than mainline." },
{ id:"BR-010", route:"I-81 SB", mileMarker:"300.1", type:"Overpass",
location:{ desc:"Harrisburg area", city:"Harrisburg", state:"PA", lat:40.28, lng:-76.87 },
clearanceHeight:"14'6\"", clearanceWidth:"No restriction", weightLimit:"Standard",
notes:"Several overpasses in the Harrisburg metro with clearances between 14' and 15'. Common corridor for northeast oversize traffic." }
];
// =====================================================================
// WEIGH STATIONS (Module 13)
// =====================================================================
const MOCK_WEIGH_STATIONS = [
{ id:"WS-001", name:"Hillsboro Weigh Station", route:"I-35 NB",
location:{ city:"Hillsboro", state:"TX", lat:31.98, lng:-97.13 },
hours:"24/7", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T14:30:00Z", flaggedBy:"TruckerJoe42",
notes:"Oversize loads almost always pulled in for inspection. Have permits readily accessible." },
{ id:"WS-002", name:"Ehrenberg Port of Entry", route:"I-10 WB",
location:{ city:"Ehrenberg", state:"AZ", lat:33.60, lng:-114.52 },
hours:"24/7", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T11:00:00Z", flaggedBy:"DesertSun",
notes:"California/Arizona border checkpoint. All oversize must stop. Can have long lines during morning hours." },
{ id:"WS-003", name:"Darien Weigh Station", route:"I-95 NB",
location:{ city:"Darien", state:"GA", lat:31.38, lng:-81.44 },
hours:"6am-10pm", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T09:15:00Z", flaggedBy:"SE_Hauler",
notes:"Florida/Georgia border area. Oversize permits checked regularly." },
{ id:"WS-004", name:"Upton Weigh Station", route:"I-80 EB",
location:{ city:"Upton", state:"WY", lat:41.00, lng:-104.62 },
hours:"24/7", prePass:false,
currentStatus:"closed", lastFlagged:"2026-03-29T16:45:00Z", flaggedBy:"WYO_Escort",
notes:"Wyoming/Nebraska border area. All commercial traffic must stop when open. Wind closures may affect station hours." },
{ id:"WS-005", name:"Moriarty Port of Entry", route:"I-40 EB",
location:{ city:"Moriarty", state:"NM", lat:34.99, lng:-106.05 },
hours:"24/7", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T10:30:00Z", flaggedBy:"SW_Oversize",
notes:"East of Albuquerque. All commercial vehicles must report. Oversize permits verified." },
{ id:"WS-006", name:"Robertson County Scales", route:"I-65 NB",
location:{ city:"Cross Plains", state:"TN", lat:36.53, lng:-86.69 },
hours:"6am-10pm", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T08:00:00Z", flaggedBy:"VolunteerEscort",
notes:"North of Nashville. Moderate traffic. Oversize loads may be pulled in for permit check." },
{ id:"WS-007", name:"Lodi Weigh Station", route:"I-71 SB",
location:{ city:"Lodi", state:"OH", lat:41.04, lng:-82.01 },
hours:"7am-7pm", prePass:true,
currentStatus:"closed", lastFlagged:"2026-03-28T17:00:00Z", flaggedBy:"BuckeyePilot",
notes:"Between Cleveland and Columbus on I-71. Intermittent operation — often closed on weekends." },
{ id:"WS-008", name:"Clearfield Weigh Station", route:"I-80 WB",
location:{ city:"Clearfield", state:"PA", lat:41.01, lng:-78.44 },
hours:"6am-10pm", prePass:false,
currentStatus:"open", lastFlagged:"2026-03-29T12:00:00Z", flaggedBy:"PA_HeavyHaul",
notes:"Central PA on I-80. Oversize loads inspected — have PA permit documentation ready." },
{ id:"WS-009", name:"Woodburn Port of Entry", route:"I-5 NB",
location:{ city:"Woodburn", state:"OR", lat:45.15, lng:-122.85 },
hours:"24/7", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T07:30:00Z", flaggedBy:"PNW_Pilot",
notes:"Major I-5 checkpoint. All commercial vehicles must stop. Oregon has strict oversize enforcement." },
{ id:"WS-010", name:"Fargo Weigh Station", route:"I-94 WB",
location:{ city:"West Fargo", state:"ND", lat:46.87, lng:-96.92 },
hours:"7am-9pm", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T13:00:00Z", flaggedBy:"PrairieHauler",
notes:"Minnesota/North Dakota border area. Oil field and wind energy traffic frequent. Oversize permits checked." },
{ id:"WS-011", name:"Marshall Weigh Station", route:"I-20 EB",
location:{ city:"Marshall", state:"TX", lat:32.54, lng:-94.37 },
hours:"24/7", prePass:true,
currentStatus:"open", lastFlagged:"2026-03-29T15:00:00Z", flaggedBy:"LoneStarEscort",
notes:"East Texas near Louisiana border. All commercial vehicles must stop when open." },
{ id:"WS-012", name:"Valdosta Weigh Station", route:"I-75 NB",
location:{ city:"Valdosta", state:"GA", lat:30.87, lng:-83.28 },
hours:"6am-10pm", prePass:true,
currentStatus:"closed", lastFlagged:"2026-03-28T20:00:00Z", flaggedBy:"SE_Oversized",
notes:"Florida/Georgia border on I-75. Oversize loads always pulled in when station is open." }
];
// =====================================================================
// ROUTE CONDITIONS (Module 7)
// =====================================================================
const MOCK_ROUTE_CONDITIONS = [
{ id:"RC-001", type:"construction", severity:"major",
route:"I-10 WB", location:{ desc:"Between Tucson and Phoenix", state:"AZ", lat:32.43, lng:-111.57 },
description:"Lane closure restricting width to 11'6\". Oversize loads over 12' wide CANNOT pass — contact ADOT for route amendment.",
startDate:"2026-03-01", endDate:"2026-06-30", source:"ADOT 511", affectsOversize:true },
{ id:"RC-002", type:"closure", severity:"critical",
route:"I-40 EB", location:{ desc:"Bridge replacement near Flagstaff", state:"AZ", lat:35.17, lng:-111.68 },
description:"Full eastbound closure 9pm-5am nightly. Oversize loads on single-trip permits must contact ADOT for revised routing or schedule around closure.",
startDate:"2026-03-15", endDate:"2026-05-15", source:"ADOT 511", affectsOversize:true },
{ id:"RC-003", type:"construction", severity:"moderate",
route:"I-35 NB/SB", location:{ desc:"Oklahoma City metro area", state:"OK", lat:35.47, lng:-97.52 },
description:"Ongoing I-35/I-44 interchange reconstruction. Lane shifts and temporary barriers — oversize loads limited to 14' wide through work zone.",
startDate:"2026-01-15", endDate:"2026-09-30", source:"ODOT", affectsOversize:true },
{ id:"RC-004", type:"construction", severity:"minor",
route:"I-80 EB", location:{ desc:"Near North Platte", state:"NE", lat:41.12, lng:-100.78 },
description:"Shoulder work — right lane may be narrowed. Oversize loads over 14' wide should use caution. No permits affected.",
startDate:"2026-04-01", endDate:"2026-04-15", source:"NDOT", affectsOversize:false },
{ id:"RC-005", type:"closure", severity:"major",
route:"US-93 NB", location:{ desc:"Mountain pass south of Missoula", state:"MT", lat:46.32, lng:-113.86 },
description:"Seasonal closure for snow removal. Route impassable for all traffic. Oversize loads must use I-90 alternate.",
startDate:"2025-11-15", endDate:"2026-04-30", source:"MDT", affectsOversize:true },
{ id:"RC-006", type:"construction", severity:"moderate",
route:"I-75 SB", location:{ desc:"Atlanta metro — I-285 interchange", state:"GA", lat:33.85, lng:-84.36 },
description:"Interchange reconstruction. Lane restrictions and temporary barriers. Oversize loads over 12' wide must travel between 9pm-5am through work zone.",
startDate:"2026-02-01", endDate:"2026-08-30", source:"GDOT", affectsOversize:true }
];
// =====================================================================
// WEATHER / WIND ALERTS (Module 8)
// =====================================================================
const MOCK_WEATHER_ALERTS = [
{ id:"WX-001", type:"wind", severity:"warning",
region:"Texas Panhandle / Western Oklahoma",
routes:["I-40", "US-287", "US-83"],
description:"High Wind Warning — sustained winds 40-50 mph with gusts to 65 mph. Wide loads (12'+) should NOT travel.",
validFrom:"2026-03-30T06:00:00Z", validTo:"2026-03-30T22:00:00Z",
source:"NWS Amarillo", lat:35.22, lng:-101.83 },
{ id:"WX-002", type:"wind", severity:"advisory",
region:"Wyoming I-80 corridor",
routes:["I-80", "US-30"],
description:"Wind Advisory — crosswinds 25-35 mph with gusts to 50 mph. Light/high-profile oversize loads use extreme caution.",
validFrom:"2026-03-30T12:00:00Z", validTo:"2026-03-31T06:00:00Z",
source:"NWS Riverton", lat:41.54, lng:-107.22 },
{ id:"WX-003", type:"winter", severity:"warning",
region:"Colorado Rocky Mountains",
routes:["I-70 west of Denver", "US-6 Loveland Pass"],
description:"Winter Storm Warning — 12-18\" snow expected above 9,000'. Chain law in effect on I-70 in mountains. Oversize travel not recommended.",
validFrom:"2026-03-30T00:00:00Z", validTo:"2026-03-31T12:00:00Z",
source:"NWS Denver", lat:39.68, lng:-105.91 },
{ id:"WX-004", type:"fog", severity:"advisory",
region:"Central California Valley",
routes:["I-5", "CA-99"],
description:"Dense Fog Advisory — visibility below 1/4 mile. Oversize loads should delay departure until fog lifts. Expected to clear by 10am.",
validFrom:"2026-03-30T04:00:00Z", validTo:"2026-03-30T17:00:00Z",
source:"NWS Hanford", lat:36.60, lng:-119.77 },
{ id:"WX-005", type:"thunderstorm", severity:"watch",
region:"Central Texas / Oklahoma",
routes:["I-35", "I-44", "US-69"],
description:"Severe Thunderstorm Watch — potential for large hail and damaging winds. Wide loads should seek shelter if storms develop.",
validFrom:"2026-03-30T18:00:00Z", validTo:"2026-03-31T02:00:00Z",
source:"NWS Norman", lat:34.20, lng:-97.40 }
];
// =====================================================================
// SEASONAL RESTRICTIONS (Module 15)
// =====================================================================
const MOCK_SEASONAL_RESTRICTIONS = [
{ id:"SR-001", state:"MN", stateName:"Minnesota", type:"spring_weight", color:"#3b82f6",
title:"Spring Weight Restrictions",
startMonth:3, startDay:1, endMonth:5, endDay:15,
routes:"Most state highways (interstates generally exempt)",
description:"Weight restrictions to prevent road damage during spring thaw. Exact dates vary annually based on frost conditions. Check MnDOT for current year dates.",
impact:"Reduced weight limits — overweight loads may need to delay or use interstate-only routing." },
{ id:"SR-002", state:"WI", stateName:"Wisconsin", type:"spring_weight", color:"#3b82f6",
title:"Spring Weight Restrictions (Frost Law)",
startMonth:3, startDay:1, endMonth:5, endDay:15,
routes:"State and county highways (interstates exempt)",
description:"Annual frost law restrictions. Posted roads have reduced weight limits during spring thaw period.",
impact:"Overweight loads restricted on posted routes. Plan for interstate-only routing." },
{ id:"SR-003", state:"ND", stateName:"North Dakota", type:"spring_weight", color:"#3b82f6",
title:"Spring Load Restrictions",
startMonth:3, startDay:1, endMonth:5, endDay:31,
routes:"State highways and county roads",
description:"Annual spring load restrictions. Oil field and wind energy loads frequently affected.",
impact:"Weight limits reduced on state highways. Heavy loads should delay or use approved routes." },
{ id:"SR-004", state:"CO", stateName:"Colorado", type:"winter_closure", color:"#6366f1",
title:"Mountain Pass Seasonal Closures",
startMonth:10, startDay:15, endMonth:5, endDay:30,
routes:"Independence Pass (CO-82), Cottonwood Pass, Hagerman Pass, various unpaved passes",
description:"High mountain passes close for winter. I-70 remains open but may have chain laws and traction requirements.",
impact:"Oversize loads must use lower-elevation routes. I-70 Eisenhower Tunnel has height/width restrictions." },
{ id:"SR-005", state:"MT", stateName:"Montana", type:"winter_closure", color:"#6366f1",
title:"Mountain Pass Restrictions",
startMonth:11, startDay:1, endMonth:4, endDay:30,
routes:"Beartooth Highway (US-212), Going-to-the-Sun Road, various forest roads",
description:"High passes close for winter. Major corridors (I-90, I-15) remain open but conditions vary.",
impact:"Alternative routing may be required. Check MDT road conditions before departure." },
{ id:"SR-006", state:"WY", stateName:"Wyoming", type:"wind_season", color:"#f59e0b",
title:"High Wind Season",
startMonth:11, startDay:1, endMonth:4, endDay:30,
routes:"I-80, I-25 (especially southern Wyoming)",
description:"Severe crosswinds are common October through April, especially on I-80. Wind closures can last hours or days.",
impact:"Wide loads (12'+) frequently delayed or stopped. Monitor WYDOT road conditions. Budget extra travel days." },
{ id:"SR-007", state:"TX", stateName:"Texas", type:"holiday_blackout", color:"#ef4444",
title:"Holiday Travel Blackouts",
startMonth:1, startDay:1, endMonth:12, endDay:31,
routes:"All routes statewide",
description:"No oversize load movement on: New Year's Day, Memorial Day weekend (Sat-Mon), July 4th, Labor Day weekend (Sat-Mon), Thanksgiving (Thu-Sun), Christmas (Dec 24-26).",
impact:"Schedule loads to avoid holiday blackout periods. Loads in transit must park and wait." },
{ id:"SR-008", state:"IA", stateName:"Iowa", type:"spring_weight", color:"#3b82f6",
title:"Spring Frost Restrictions",
startMonth:2, startDay:15, endMonth:5, endDay:15,
routes:"County roads and some state highways",
description:"Frost-related weight restrictions. Wind energy loads frequently affected as many wind farm access roads are county-maintained.",
impact:"Heavy loads may need to delay. County permits may be suspended during restriction period." },
{ id:"SR-009", state:"NY", stateName:"New York", type:"holiday_blackout", color:"#ef4444",
title:"NYC Metro Oversize Blackouts",
startMonth:1, startDay:1, endMonth:12, endDay:31,
routes:"All routes in NYC boroughs, George Washington Bridge, major bridges/tunnels",
description:"NYC restricts oversize movement year-round except with special NYPD escort. Additional blackouts during holidays, events, and UN General Assembly (September).",
impact:"Route around NYC whenever possible. Allow 2+ weeks for NYPD escort coordination." },
{ id:"SR-010", state:"OR", stateName:"Oregon", type:"harvest_season", color:"#22c55e",
title:"Harvest Season Restrictions",
startMonth:8, startDay:1, endMonth:10, endDay:31,
routes:"Agricultural areas — Willamette Valley, Eastern Oregon farming regions",
description:"Increased farm equipment on roads during harvest. Some county roads may have temporary restrictions or slow farm equipment traffic.",
impact:"Expect slower travel through agricultural areas. Farm equipment may block narrow roads." }
];
// =====================================================================
// MOCK DOCUMENTS (Module 9 — Document Vault demo)
// =====================================================================
const MOCK_DOCUMENTS = [
{ id:"DOC-001", name:"TX Single Trip Permit — Load #LB-2026-006", type:"permit", state:"TX",
uploadDate:"2026-03-28", expiryDate:"2026-04-15", fileSize:"245 KB", status:"active" },
{ id:"DOC-002", name:"OK Single Trip Permit — Load #LB-2026-006", type:"permit", state:"OK",
uploadDate:"2026-03-28", expiryDate:"2026-04-15", fileSize:"198 KB", status:"active" },
{ id:"DOC-003", name:"Commercial Auto Insurance — Policy #CAI-2026-445", type:"insurance",
uploadDate:"2026-01-15", expiryDate:"2026-07-15", fileSize:"1.2 MB", status:"active" },
{ id:"DOC-004", name:"General Liability Certificate", type:"insurance",
uploadDate:"2026-01-15", expiryDate:"2027-01-15", fileSize:"890 KB", status:"active" },
{ id:"DOC-005", name:"TX Pilot Car Certification", type:"certification", state:"TX",
uploadDate:"2025-09-10", expiryDate:"2027-09-10", fileSize:"156 KB", status:"active" },
{ id:"DOC-006", name:"CA PCET Certification", type:"certification", state:"CA",
uploadDate:"2025-06-20", expiryDate:"2027-06-20", fileSize:"178 KB", status:"active" },
{ id:"DOC-007", name:"OH Annual Oversize Permit — 2025", type:"permit", state:"OH",
uploadDate:"2025-03-01", expiryDate:"2026-02-28", fileSize:"312 KB", status:"expired" },
{ id:"DOC-008", name:"Vehicle Registration — 2024 Ford F-150", type:"registration",
uploadDate:"2026-02-01", expiryDate:"2027-02-01", fileSize:"98 KB", status:"active" }
];