{"id":2539,"date":"2026-07-02T21:56:34","date_gmt":"2026-07-02T21:56:34","guid":{"rendered":"https:\/\/severeinjurylawyers.com\/?p=2539"},"modified":"2026-07-02T22:47:23","modified_gmt":"2026-07-02T22:47:23","slug":"visualizador-de-lesiones-por-accidentes","status":"publish","type":"post","link":"https:\/\/severeinjurylawyers.com\/es\/crash-injury-visualizer\/","title":{"rendered":"Car Crash Injuries by Speed: Free Interactive Visualizer"},"content":{"rendered":"\n<!-- ============================================================\r\n     J. ALEXANDER LAW FIRM ; CRASH PHYSICS & INJURY VISUALIZER\r\n     Linkable asset \/ digital PR page. New .jca-cpv namespace;\r\n     fully self contained; no plugin required. No nav (WordPress\r\n     handles it).\r\n     STATUS NOTES:\r\n       [SWAP-EMAIL]      media contact email is a placeholder; set up a\r\n                         monitored press address before distribution\r\n       [SWAP-EMBED-URL]  publisher embed iframe + source link point to\r\n                         \/crash-injury-visualizer\/ ; confirm final slug\r\n       DATA NOTE   pedestrian fatality curve anchored to published AAA\r\n                   research; occupant curves are modeled estimates,\r\n                   review against NHTSA before heavy press outreach\r\n       IMAGES      collision guide slots auto draw crash scenes; drop an\r\n                   <img src> inside a data-scene slot to use a photo\r\n     ============================================================ -->\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@graph\": [\r\n    {\r\n      \"@type\": \"WebPage\",\r\n      \"@id\": \"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/#webpage\",\r\n      \"url\": \"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/\",\r\n      \"name\": \"Car Crash Injuries by Speed: Interactive Collision Physics Visualizer\",\r\n      \"description\": \"See how car crash injuries change with speed and collision type. Free interactive tool covering rear end, head on, side impact, rollover, and pedestrian crashes.\",\r\n      \"dateModified\": \"2026-07-02\",\r\n      \"isPartOf\": { \"@id\": \"https:\/\/severeinjurylawyers.com\/#website\" },\r\n      \"breadcrumb\": { \"@id\": \"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/#breadcrumb\" },\r\n      \"inLanguage\": \"en-US\"\r\n    },\r\n    {\r\n      \"@type\": \"BreadcrumbList\",\r\n      \"@id\": \"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/#breadcrumb\",\r\n      \"itemListElement\": [\r\n        { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"https:\/\/severeinjurylawyers.com\/\" },\r\n        { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Crash Injury Visualizer\", \"item\": \"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/\" }\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"FAQPage\",\r\n      \"@id\": \"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/#faq\",\r\n      \"isPartOf\": { \"@id\": \"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/#webpage\" },\r\n      \"mainEntity\": [\r\n        { \"@type\": \"Question\", \"name\": \"At what speed can a car crash kill you?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"There is no safe speed; fatal crashes have been recorded below 20 mph. For vehicle occupants, the risk of death rises sharply above roughly 40 mph of sudden speed change, and for pedestrians it climbs steeply past 30 mph. Restraints, airbags, and the crash type matter as much as the number on the speedometer.\" } },\r\n        { \"@type\": \"Question\", \"name\": \"Can you get whiplash from a low speed crash?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes. Research shows whiplash injuries can occur in rear end impacts at 8 mph or less, sometimes with little visible damage to either vehicle. Symptoms often appear hours or days after the crash, which is why doctors recommend getting checked even after a minor collision.\" } },\r\n        { \"@type\": \"Question\", \"name\": \"What is the most dangerous type of car crash?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Per crash, head on collisions and side impacts produce the highest rates of death and serious injury for vehicle occupants, because the closing speed is high or the protective structure is thin. Rollovers are rarer but carry an outsized share of fatalities, largely due to ejection.\" } },\r\n        { \"@type\": \"Question\", \"name\": \"How many g's can the human body survive?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"A restrained, healthy person can survive brief spikes of 40 to 60 g, and rare cases have survived far more for a few milliseconds. Injury typically begins well below that; sustained loads above about 20 to 30 g cause internal damage.\" } },\r\n        { \"@type\": \"Question\", \"name\": \"Why are side impact crashes so dangerous?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Because the crumple zone is missing. In a frontal crash your body has several feet of collapsing metal working for it; in a T bone crash it has a door panel. That is why side curtain airbags and reinforced door beams have had such a measurable effect on survival rates.\" } },\r\n        { \"@type\": \"Question\", \"name\": \"What happens to a pedestrian hit at 40 mph?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"At around 40 mph, published research places the risk of death for a struck pedestrian near 50 percent, with typical injuries to the legs, pelvis, and head. At 25 mph that risk is closer to 10 percent.\" } },\r\n        { \"@type\": \"Question\", \"name\": \"Do seat belts really make that much difference?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes. Federal crash data shows seat belts reduce the risk of death for front seat occupants of cars by about 45 percent, and they are the single biggest factor in surviving a rollover, because they prevent ejection.\" } },\r\n        { \"@type\": \"Question\", \"name\": \"How is the fatality risk in this tool calculated?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Pedestrian risk is interpolated from published AAA Foundation for Traffic Safety research on impact speed. Occupant risk for the other crash types is a modeled estimate shaped from federal research on sudden speed change and injury. The figures are educational estimates for a typical adult, not predictions for any specific crash or person.\" } }\r\n      ]\r\n    }\r\n  ]\r\n}\r\n<\/script>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@600;700;800;900&#038;family=Source+Sans+3:wght@400;600;700&#038;display=swap\">\r\n<style>\r\n.jca-cpv{\r\n  --gold:#F3B937;\r\n  --bg:#0A0A0A;\r\n  --panel:#141414;\r\n  --panel-2:#1C1C1C;\r\n  --line:#2A2A2A;\r\n  --text:#F2F2F2;\r\n  --muted:#A3A3A3;\r\n  --sev-low:#F3B937;\r\n  --sev-mid:#F07E2D;\r\n  --sev-high:#E23A2E;\r\n  --radius:3px;\r\n  margin-block:0;margin-inline:calc(50% - 50vw);max-width:100vw;overflow-x:clip;\r\n  background:var(--bg);color:var(--text);\r\n  font-family:'Source Sans 3','Source Sans Pro',system-ui,-apple-system,sans-serif;\r\n  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;\r\n}\r\n.jca-cpv *,.jca-cpv *::before,.jca-cpv *::after{box-sizing:border-box}\r\n.jca-cpv img,.jca-cpv svg{max-width:100%}\r\n.jca-cpv h1,.jca-cpv h2,.jca-cpv h3{color:var(--text)}\r\n.jca-cpv p,.jca-cpv li,.jca-cpv span,.jca-cpv div,.jca-cpv summary,.jca-cpv small{color:inherit}\r\n.jca-cpv ::selection{background:rgba(243,185,55,.3);color:#fff}\r\n.jca-cpv ul{margin:0;padding:0}\r\n.jca-cpv button{font-family:inherit;cursor:pointer}\r\n.jca-cpv [id]{scroll-margin-top:110px}\r\n.jca-cpv .cpv-wrap{max-width:1100px;margin:0 auto;padding-inline:20px}\r\n.jca-cpv h1,.jca-cpv h2,.jca-cpv h3{color:var(--text)}\r\n.jca-cpv p,.jca-cpv li,.jca-cpv span,.jca-cpv div,.jca-cpv summary{color:inherit}\r\n.jca-cpv a{color:var(--gold)}\r\n.jca-cpv ul{margin:0;padding:0}\r\n.jca-cpv .cpv-wrap{max-width:1100px;margin:0 auto;padding-inline:20px}\r\n\r\n.jca-cpv .cpv-sec{\r\n  padding-block:clamp(58px,8vw,104px);\r\n  background-color:var(--bg);\r\n  background-image:radial-gradient(rgba(255,255,255,.028) 1px,transparent 1.6px);\r\n  background-size:24px 24px;\r\n}\r\n.jca-cpv .cpv-sec--alt{\r\n  background-color:#141418;\r\n  background-image:\r\n    radial-gradient(1100px 560px at 50% 0,rgba(243,185,55,.07),transparent 60%),\r\n    radial-gradient(rgba(255,255,255,.022) 1px,transparent 1.6px);\r\n  background-size:100% 100%,24px 24px;\r\n  background-repeat:no-repeat,repeat;\r\n  border-top:1px solid var(--line);border-bottom:1px solid var(--line);\r\n  box-shadow:inset 0 1px 0 rgba(243,185,55,.10);\r\n}\r\n.jca-cpv .cpv-sec--feature{\r\n  background-color:#0B0B0B;\r\n  background-image:\r\n    radial-gradient(1100px 620px at 50% -10%,rgba(243,185,55,.11),transparent 60%),\r\n    radial-gradient(rgba(255,255,255,.022) 1px,transparent 1.6px);\r\n  background-size:100% 100%,24px 24px;\r\n  background-repeat:no-repeat,repeat;\r\n  border-top:1px solid rgba(243,185,55,.22);border-bottom:1px solid var(--line);\r\n  box-shadow:inset 0 1px 0 rgba(243,185,55,.12);\r\n}\r\n\r\n.jca-cpv .cpv-sources a{color:var(--gold);text-decoration:none}\r\n.jca-cpv .cpv-sources a:hover{text-decoration:underline}\r\n.jca-cpv .cpv-kicker{\r\n  display:flex;align-items:center;gap:10px;color:var(--gold);font-family:'Montserrat',sans-serif;\r\n  font-weight:700;font-size:11px;letter-spacing:.2em;text-transform:uppercase;margin:52px 0 12px;\r\n}\r\n.jca-cpv .cpv-kicker::before{content:\"\";width:30px;height:2px;background:var(--gold);display:inline-block}\r\n.jca-cpv .cpv-wrap > .cpv-kicker:first-child,.jca-cpv .cpv-two .cpv-kicker:first-child{margin-top:0}\r\n.jca-cpv h1.cpv-title{\r\n  font-family:'Montserrat',sans-serif;font-weight:800;\r\n  font-size:clamp(28px,4.4vw,44px);line-height:1.12;margin:0 0 12px;max-width:820px;letter-spacing:-.01em;\r\n}\r\n.jca-cpv .cpv-sub{color:var(--muted);max-width:740px;margin:0;font-size:18px}\r\n.jca-cpv .cpv-hero-grid{\r\n  display:grid;grid-template-columns:1.35fr .9fr;\r\n  gap:clamp(24px,4vw,48px);align-items:center;\r\n}\r\n.jca-cpv .cpv-hero-grid .cpv-kicker{margin-top:0}\r\n.jca-cpv .cpv-hero-grid .cpv-title{margin-bottom:0}\r\n.jca-cpv .cpv-sub--frost{\r\n  background:linear-gradient(135deg,rgba(255,255,255,.06),rgba(243,185,55,.05));\r\n  border:1px solid rgba(243,185,55,.22);\r\n  border-radius:var(--radius);\r\n  padding:20px 22px;margin:0;max-width:none;\r\n  font-size:16.5px;line-height:1.6;\r\n  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);\r\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 8px 28px rgba(0,0,0,.35);\r\n}\r\n@media(max-width:820px){\r\n  .jca-cpv .cpv-hero-grid{grid-template-columns:1fr;gap:18px;align-items:start}\r\n}\r\n.jca-cpv h2{\r\n  font-family:'Montserrat',sans-serif;font-weight:800;\r\n  font-size:clamp(22px,3.2vw,32px);margin:0 0 18px;line-height:1.15;letter-spacing:-.01em;\r\n}\r\n.jca-cpv h3{font-family:'Montserrat',sans-serif;font-weight:700;font-size:19px;margin:0 0 10px;color:var(--gold)}\r\n.jca-cpv p{margin:0 0 14px;color:#D8D8D8}\r\n.jca-cpv p strong{color:#fff}\r\n\r\n.jca-cpv .cpv-row{\r\n  display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center;\r\n  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:26px;margin:22px 0;\r\n}\r\n.jca-cpv .cpv-row .cpv-row-text h3{margin-top:0}\r\n.jca-cpv .cpv-row .cpv-row-text p:last-child{margin-bottom:0}\r\n.jca-cpv .cpv-row-media{\r\n  background:#0E0E0E;border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:14px;min-height:150px;display:flex;align-items:center;justify-content:center;\r\n}\r\n.jca-cpv .cpv-row-media svg{width:100%;height:auto;display:block}\r\n.jca-cpv .cpv-row-media img{width:100%;height:auto;display:block;border-radius:var(--radius)}\r\n.jca-cpv .cpv-row.rev .cpv-row-media{order:2}\r\n@media(max-width:760px){\r\n  .jca-cpv .cpv-row{grid-template-columns:1fr;padding:20px}\r\n  .jca-cpv .cpv-row.rev .cpv-row-media{order:0}\r\n}\r\n\r\n.jca-cpv .cpv-two{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,4vw,56px);align-items:start}\r\n.jca-cpv .cpv-two--faq{grid-template-columns:.75fr 1.25fr}\r\n.jca-cpv .cpv-two--faq .cpv-faq-intro{position:sticky;top:24px}\r\n@media(max-width:820px){.jca-cpv .cpv-two,.jca-cpv .cpv-two--faq{grid-template-columns:1fr}.jca-cpv .cpv-two--faq .cpv-faq-intro{position:static}}\r\n\r\n.jca-cpv .cpv-faq details{\r\n  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);\r\n  margin-bottom:10px;overflow:hidden;\r\n}\r\n.jca-cpv .cpv-faq summary{\r\n  cursor:pointer;padding:16px 18px;\r\n  font-family:'Montserrat',sans-serif;font-weight:600;font-size:15.5px;\r\n  list-style:none;position:relative;padding-right:44px;\r\n}\r\n.jca-cpv .cpv-faq summary::-webkit-details-marker{display:none}\r\n.jca-cpv .cpv-faq summary::after{\r\n  content:\"+\";position:absolute;right:18px;top:50%;transform:translateY(-50%);\r\n  color:var(--gold);font-size:22px;font-weight:400;\r\n}\r\n.jca-cpv .cpv-faq details[open] summary::after{content:\"\\2013\"}\r\n.jca-cpv .cpv-faq .a{padding:0 18px 16px;color:#D8D8D8;font-size:15.5px}\r\n.jca-cpv .cpv-faq summary:focus-visible{outline:2px solid var(--gold);outline-offset:2px}\r\n\r\n.jca-cpv .cpv-src-card{\r\n  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:20px 24px;margin:0;\r\n}\r\n.jca-cpv .cpv-src-h{\r\n  font-family:'Montserrat',sans-serif;font-weight:700;font-size:13px;\r\n  letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;text-align:left;\r\n}\r\n.jca-cpv .cpv-sources{list-style:none;margin:0;padding:0;font-size:14px;color:var(--muted)}\r\n.jca-cpv .cpv-sources li{\r\n  margin:0;padding:13px 0 13px 26px;border-bottom:1px solid var(--line);\r\n  position:relative;font-size:14.5px;line-height:1.55;color:#C9C9C9;\r\n}\r\n.jca-cpv .cpv-sources li:last-child{border-bottom:none;padding-bottom:4px}\r\n.jca-cpv .cpv-sources li::before{\r\n  content:\"\";position:absolute;left:2px;top:22px;width:10px;height:2px;background:var(--gold);\r\n}\r\n\r\n.jca-cpv .cpv-embed{\r\n  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:20px;margin-top:14px;\r\n}\r\n.jca-cpv .cpv-embed textarea{\r\n  width:100%;height:74px;background:#000;color:#CFCFCF;border:1px solid var(--line);\r\n  border-radius:var(--radius);font-family:monospace;font-size:12.5px;padding:10px;resize:none;\r\n}\r\n.jca-cpv .cpv-copy{\r\n  margin-top:10px;background:var(--gold);color:#000;border:none;border-radius:var(--radius);\r\n  font-family:'Montserrat',sans-serif;font-weight:700;font-size:13px;\r\n  padding:10px 18px;cursor:pointer;\r\n}\r\n.jca-cpv .cpv-copy:hover{filter:brightness(1.08)}\r\n.jca-cpv .cpv-copy:focus-visible{outline:2px solid var(--gold);outline-offset:2px}\r\n.jca-cpv .cpv-attrib{margin-top:22px;font-size:14px;color:var(--muted)}\r\n.jca-cpv .cpv-attrib a{color:var(--gold);text-decoration:none}\r\n.jca-cpv .cpv-attrib a:hover{text-decoration:underline}\r\n<\/style>\r\n<style>\r\n\/* JCA Crash Physics & Injury Visualizer \u2014 tool styles, scoped under .jca-cpv *\/\r\n\r\n.jca-cpv *,.jca-cpv *::before,.jca-cpv *::after{box-sizing:border-box}\r\n.jca-cpv p,.jca-cpv li,.jca-cpv div,.jca-cpv span,.jca-cpv small{color:inherit}\r\n.jca-cpv button{font-family:inherit;margin:0;touch-action:manipulation}\r\n.jca-cpv ul{margin:0;padding:0}\r\n.jca-cpv .jca-cpv__wrap{max-width:none;margin:0;padding:0}\r\n\r\n\/* ---------- controls ---------- *\/\r\n.jca-cpv .cpv-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 20px}\r\n.jca-cpv .cpv-crash-btn{\r\n  font-family:'Montserrat',sans-serif;font-weight:600;font-size:13px;letter-spacing:.04em;\r\n  background:var(--panel);color:var(--text);\r\n  border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:11px 17px;cursor:pointer;line-height:1.2;\r\n  transition:background .15s,color .15s,border-color .15s,transform .15s;\r\n}\r\n.jca-cpv .cpv-crash-btn:hover{border-color:var(--gold);transform:translateY(-1px)}\r\n.jca-cpv .cpv-crash-btn[aria-pressed=\"true\"]{background:var(--gold);color:#000;border-color:var(--gold)}\r\n.jca-cpv .cpv-units{margin-left:auto;display:flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}\r\n.jca-cpv .cpv-unit-btn{\r\n  background:var(--panel);color:var(--muted);border:none;\r\n  font-family:'Montserrat',sans-serif;font-weight:600;font-size:12px;\r\n  padding:10px 15px;cursor:pointer;line-height:1.2;\r\n}\r\n.jca-cpv .cpv-unit-btn[aria-pressed=\"true\"]{background:var(--gold);color:#000}\r\n.jca-cpv .cpv-crash-btn:focus-visible,.jca-cpv .cpv-unit-btn:focus-visible,\r\n.jca-cpv input[type=range]:focus-visible{\r\n  outline:2px solid var(--gold);outline-offset:2px;\r\n}\r\n\r\n\/* ---------- speed ---------- *\/\r\n.jca-cpv .cpv-speed{\r\n  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:20px 24px 26px;margin:0 0 28px;\r\n}\r\n.jca-cpv .cpv-speed-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}\r\n.jca-cpv .cpv-speed-label{\r\n  font-family:'Montserrat',sans-serif;font-weight:600;font-size:12px;\r\n  letter-spacing:.15em;text-transform:uppercase;color:var(--muted);\r\n}\r\n.jca-cpv .cpv-speed-value{font-family:'Montserrat',sans-serif;font-weight:800;font-size:38px;color:var(--gold)}\r\n.jca-cpv .cpv-speed-value small{font-size:15px;color:var(--muted);font-weight:600;margin-left:5px}\r\n.jca-cpv input[type=range]{\r\n  -webkit-appearance:none;appearance:none;width:100%;height:7px;border-radius:4px;\r\n  background:linear-gradient(90deg,var(--sev-low),var(--sev-mid),var(--sev-high));cursor:pointer;\r\n  margin:0;padding:0;border:0;\r\n}\r\n.jca-cpv input[type=range]::-webkit-slider-thumb{\r\n  -webkit-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;\r\n  background:#fff;border:5px solid var(--gold);box-shadow:0 0 12px rgba(243,185,55,.5);\r\n}\r\n.jca-cpv input[type=range]::-moz-range-thumb{\r\n  width:14px;height:14px;border-radius:50%;background:#fff;border:5px solid var(--gold);\r\n}\r\n.jca-cpv .cpv-ticks{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--muted)}\r\n\r\n\/* ---------- main grid ---------- *\/\r\n.jca-cpv .cpv-grid{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:26px;align-items:start}\r\n@media(max-width:860px){.jca-cpv .cpv-grid{grid-template-columns:1fr}}\r\n\r\n.jca-cpv .cpv-body-panel{\r\n  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:22px;text-align:center;position:relative;\r\n}\r\n.jca-cpv .cpv-panel-h{\r\n  font-family:'Montserrat',sans-serif;font-weight:700;font-size:13px;\r\n  letter-spacing:.13em;text-transform:uppercase;color:var(--muted);\r\n  margin:0 0 14px;text-align:left;\r\n}\r\n.jca-cpv .cpv-hint{font-size:13px;color:var(--muted);margin-top:4px}\r\n.jca-cpv .cpv-fig-svg{max-width:340px}\r\n\r\n.jca-cpv .cpv-fig{fill:#232323;stroke:#3C3C3C;stroke-width:1.4}\r\n.jca-cpv .cpv-zone{\r\n  fill:transparent;stroke:transparent;stroke-width:1.5;cursor:pointer;\r\n  transition:fill .35s ease,filter .35s ease;\r\n}\r\n.jca-cpv .cpv-zone:hover,.jca-cpv .cpv-zone.hover{stroke:#fff;stroke-width:1.5}\r\n@media (prefers-reduced-motion: reduce){\r\n  .jca-cpv *{transition:none !important;animation:none !important}\r\n}\r\n.jca-cpv .cpv-tip{\r\n  position:absolute;pointer-events:none;z-index:5;\r\n  background:#000;border:1px solid var(--gold);border-radius:var(--radius);\r\n  padding:10px 13px;max-width:230px;text-align:left;font-size:13.5px;line-height:1.45;\r\n  box-shadow:0 6px 24px rgba(0,0,0,.6);display:none;\r\n}\r\n.jca-cpv .cpv-tip .t-zone{font-family:'Montserrat',sans-serif;font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase}\r\n.jca-cpv .cpv-tip .t-sev{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:5px}\r\n.jca-cpv .cpv-tip ul{list-style:none;color:#DADADA}\r\n.jca-cpv .cpv-tip li{padding:2px 0}\r\n.jca-cpv .cpv-legend{display:flex;justify-content:center;gap:16px;margin-top:14px;font-size:13px;color:var(--muted)}\r\n.jca-cpv .cpv-legend span::before{content:\"\";display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}\r\n.jca-cpv .cpv-legend .l-low::before{background:var(--sev-low)}\r\n.jca-cpv .cpv-legend .l-mid::before{background:var(--sev-mid)}\r\n.jca-cpv .cpv-legend .l-high::before{background:var(--sev-high)}\r\n\r\n\/* ---------- compact stats under the figure ---------- *\/\r\n.jca-cpv .cpv-stats{margin-top:16px;border-top:1px solid var(--line);text-align:left}\r\n.jca-cpv .cpv-stat{\r\n  display:flex;justify-content:space-between;align-items:baseline;gap:14px;\r\n  padding:10px 2px;border-bottom:1px solid var(--line);\r\n}\r\n.jca-cpv .cpv-stat:last-child{border-bottom:none}\r\n.jca-cpv .cpv-stat .num{\r\n  font-family:'Montserrat',sans-serif;font-weight:800;font-size:19px;color:var(--gold);\r\n  white-space:nowrap;order:2;\r\n}\r\n.jca-cpv .cpv-stat .num.risk-high{color:var(--sev-high)}\r\n.jca-cpv .cpv-stat .num.risk-mid{color:var(--sev-mid)}\r\n.jca-cpv .cpv-stat .lbl{font-size:12.5px;color:var(--muted);line-height:1.4;order:1}\r\n\r\n\/* ---------- right column ---------- *\/\r\n.jca-cpv .cpv-diagram{\r\n  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);\r\n  padding:18px 20px 14px;margin-bottom:16px;\r\n}\r\n.jca-cpv .cpv-diag-head{\r\n  display:flex;justify-content:space-between;align-items:baseline;\r\n  gap:12px;flex-wrap:wrap;margin-bottom:12px;\r\n}\r\n.jca-cpv .cpv-diag-head .cpv-panel-h{margin-bottom:0}\r\n.jca-cpv .cpv-crash-name{\r\n  font-family:'Montserrat',sans-serif;font-weight:800;font-size:21px;margin:0;text-align:right;color:var(--text);\r\n}\r\n.jca-cpv .cpv-diag-stage{width:100%}\r\n.jca-cpv .cpv-diag-stage svg{display:block;width:100%;height:auto}\r\n\r\n.jca-cpv .cpv-narrative{\r\n  background:var(--panel-2);border-left:3px solid var(--gold);border-radius:var(--radius);\r\n  padding:16px 18px;margin-bottom:16px;font-size:16px;\r\n}\r\n.jca-cpv .cpv-injuries{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}\r\n.jca-cpv .cpv-injuries ul{list-style:none}\r\n.jca-cpv .cpv-injuries li{\r\n  padding:9px 0;border-bottom:1px solid var(--line);\r\n  display:flex;justify-content:space-between;gap:14px;align-items:baseline;font-size:15px;\r\n  cursor:default;\r\n}\r\n.jca-cpv .cpv-injuries li:last-child{border-bottom:none}\r\n.jca-cpv .cpv-injuries .zone{color:var(--gold);font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}\r\n\r\n\r\n\/* ---------- mobile usability ---------- *\/\r\n@media(max-width:600px){\r\n  .jca-cpv{font-size:16px}\r\n  .jca-cpv .cpv-controls{gap:8px}\r\n  .jca-cpv .cpv-crash-btn{\r\n    flex:1 1 calc(33.33% - 6px);min-height:44px;padding:10px 6px;\r\n    font-size:12.5px;text-align:center;\r\n  }\r\n  .jca-cpv .cpv-units{margin-left:0;width:100%}\r\n  .jca-cpv .cpv-unit-btn{flex:1;min-height:44px;font-size:13px}\r\n  .jca-cpv .cpv-speed{padding:16px 16px 22px}\r\n  .jca-cpv .cpv-speed-value{font-size:30px}\r\n  .jca-cpv input[type=range]{height:9px}\r\n  .jca-cpv input[type=range]::-webkit-slider-thumb{width:28px;height:28px}\r\n  .jca-cpv .cpv-ticks{font-size:11px}\r\n  .jca-cpv .cpv-body-panel,.jca-cpv .cpv-diagram,.jca-cpv .cpv-injuries{padding:16px}\r\n  .jca-cpv .cpv-crash-name{font-size:18px;text-align:left}\r\n  .jca-cpv .cpv-injuries li{font-size:14px}\r\n  .jca-cpv .cpv-tip{max-width:200px}\r\n}\r\n<\/style>\r\n<div class=\"jca-cpv\">\r\n<main id=\"cpv-top\">\r\n\r\n<!-- ===== HERO + TOOL ===== -->\r\n<section class=\"cpv-sec\" id=\"visualizer\" style=\"padding-block:clamp(80px,10vw,128px) clamp(58px,8vw,96px)\">\r\n  <div class=\"cpv-wrap\">\r\n      <div class=\"cpv-hero-grid\">\r\n        <div>\r\n          <span class=\"cpv-kicker\">Interactive Safety Tool<\/span>\r\n          <h1 class=\"cpv-title\">Car Crash Injuries by Speed: What a Collision Does to the Human Body<\/h1>\r\n        <\/div>\r\n        <p class=\"cpv-sub cpv-sub--frost\">Choose a collision type and set the impact speed. The figure shows where car crash injuries concentrate on the body; the panel shows the physics behind them. Hover or tap any body zone for detail.<\/p>\r\n      <\/div>\r\n    <div style=\"margin-top:34px\">\r\n<div class=\"cpv-app\"\r\n\tdata-speed=\"40\"\r\n\tdata-crash=\"rear\"\r\n\tdata-units=\"mph\"\r\n\tdata-glow=\"cpv-glow\">\r\n<div class=\"cpv-app__wrap\">\r\n\r\n\t<div class=\"cpv-controls\" role=\"group\" aria-label=\"Crash type\">\r\n\t\t\t\t<button type=\"button\" class=\"cpv-crash-btn\" data-crash=\"rear\" aria-pressed=\"true\">Rear End<\/button>\r\n\t\t\t\t<button type=\"button\" class=\"cpv-crash-btn\" data-crash=\"head\" aria-pressed=\"false\">Head On<\/button>\r\n\t\t\t\t<button type=\"button\" class=\"cpv-crash-btn\" data-crash=\"side\" aria-pressed=\"false\">Side Impact<\/button>\r\n\t\t\t\t<button type=\"button\" class=\"cpv-crash-btn\" data-crash=\"roll\" aria-pressed=\"false\">Rollover<\/button>\r\n\t\t\t\t<button type=\"button\" class=\"cpv-crash-btn\" data-crash=\"ped\" aria-pressed=\"false\">Pedestrian Struck<\/button>\r\n\t\t\t\t<div class=\"cpv-units\" role=\"group\" aria-label=\"Units\">\r\n\t\t\t<button type=\"button\" class=\"cpv-unit-btn\" data-unit=\"mph\" aria-pressed=\"true\">mph<\/button>\r\n\t\t\t<button type=\"button\" class=\"cpv-unit-btn\" data-unit=\"kmh\" aria-pressed=\"false\">km\/h<\/button>\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"cpv-speed\">\r\n\t\t<div class=\"cpv-speed-top\">\r\n\t\t\t<span class=\"cpv-speed-label\">Impact speed<\/span>\r\n\t\t\t<div class=\"cpv-speed-value\"><span data-cpv=\"speed-num\">40<\/span><small data-cpv=\"speed-unit\">mph<\/small><\/div>\r\n\t\t<\/div>\r\n\t\t<input type=\"range\" data-cpv=\"range\" min=\"10\" max=\"80\" step=\"1\" value=\"40\" aria-label=\"Impact speed\">\r\n\t\t<div class=\"cpv-ticks\"><span>10<\/span><span>City street<\/span><span>40<\/span><span>Highway<\/span><span>80<\/span><\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"cpv-grid\">\r\n\r\n\t\t<div class=\"cpv-body-panel\">\r\n\t\t\t<div class=\"cpv-panel-h\">Injury zones on the body<\/div>\r\n\t\t\t<svg class=\"cpv-fig-svg\" viewBox=\"0 0 340 470\" width=\"100%\" role=\"img\"\r\n\t\t\t\taria-label=\"Anatomical figure showing where injuries concentrate for the selected crash type and speed\">\r\n\t\t\t\t<defs>\r\n\t\t\t\t\t<filter id=\"cpv-glow\" x=\"-40%\" y=\"-40%\" width=\"180%\" height=\"180%\">\r\n\t\t\t\t\t\t<feGaussianBlur stdDeviation=\"3.5\" result=\"b\"\/>\r\n\t\t\t\t\t\t<feMerge><feMergeNode in=\"b\"\/><feMergeNode in=\"SourceGraphic\"\/><\/feMerge>\r\n\t\t\t\t\t<\/filter>\r\n\t\t\t\t<\/defs>\r\n\r\n\t\t\t\t<g class=\"cpv-fig\" transform=\"translate(60,8)\">\r\n\t\t\t\t\t<ellipse cx=\"110\" cy=\"40\" rx=\"23\" ry=\"27\"\/>\r\n\t\t\t\t\t<path d=\"M99,63 C99,74 97,80 91,84 C74,88 65,97 63,110 L63,150 C63,174 66,193 72,206 L72,214 C72,229 77,242 84,251 L136,251 C143,242 148,229 148,214 L148,206 C154,193 157,174 157,150 L157,110 C155,97 146,88 129,84 C123,80 121,74 121,63 Z\"\/>\r\n\t\t\t\t\t<path d=\"M63,106 C51,113 46,126 46,143 L48,194 C49,212 52,225 56,236 L69,232 C65,220 63,205 63,190 L63,140 C63,126 64,114 69,106 Z\"\/>\r\n\t\t\t\t\t<path d=\"M157,106 C169,113 174,126 174,143 L172,194 C171,212 168,225 164,236 L151,232 C155,220 157,205 157,190 L157,140 C157,126 156,114 151,106 Z\"\/>\r\n\t\t\t\t\t<ellipse cx=\"60\" cy=\"248\" rx=\"10\" ry=\"14\"\/>\r\n\t\t\t\t\t<ellipse cx=\"160\" cy=\"248\" rx=\"10\" ry=\"14\"\/>\r\n\t\t\t\t\t<path d=\"M84,251 C81,272 79,300 81,330 C82,360 85,388 89,410 L107,410 C105,384 104,352 105,323 C105,298 106,273 107,253 Z\"\/>\r\n\t\t\t\t\t<path d=\"M136,251 C139,272 141,300 139,330 C138,360 135,388 131,410 L113,410 C115,384 116,352 115,323 C115,298 114,273 113,253 Z\"\/>\r\n\t\t\t\t\t<path d=\"M87,410 L107,410 L107,426 C107,432 103,436 95,436 L74,436 C70,436 68,432 70,427 C73,420 80,414 87,410 Z\"\/>\r\n\t\t\t\t\t<path d=\"M133,410 L113,410 L113,426 C113,432 117,436 125,436 L146,436 C150,436 152,432 150,427 C147,420 140,414 133,410 Z\"\/>\r\n\t\t\t\t<\/g>\r\n\r\n\t\t\t\t<g aria-hidden=\"true\" font-family=\"Montserrat,sans-serif\" font-weight=\"600\" font-size=\"10.5\" letter-spacing=\"1.2\" fill=\"#8F8F8F\">\r\n\t\t\t\t\t<g stroke=\"#4A4A4A\" stroke-width=\"1\">\r\n\t\t\t\t\t\t<line x1=\"52\" y1=\"48\" x2=\"146\" y2=\"48\"\/><line x1=\"52\" y1=\"128\" x2=\"119\" y2=\"128\"\/>\r\n\t\t\t\t\t\t<line x1=\"52\" y1=\"236\" x2=\"128\" y2=\"236\"\/><line x1=\"52\" y1=\"430\" x2=\"123\" y2=\"430\"\/>\r\n\t\t\t\t\t\t<line x1=\"288\" y1=\"82\" x2=\"187\" y2=\"82\"\/><line x1=\"288\" y1=\"118\" x2=\"239\" y2=\"118\"\/>\r\n\t\t\t\t\t\t<line x1=\"288\" y1=\"173\" x2=\"181\" y2=\"173\"\/><line x1=\"288\" y1=\"191\" x2=\"221\" y2=\"191\"\/>\r\n\t\t\t\t\t\t<line x1=\"288\" y1=\"338\" x2=\"204\" y2=\"338\"\/>\r\n\t\t\t\t\t<\/g>\r\n\t\t\t\t\t<g fill=\"#6E6E6E\">\r\n\t\t\t\t\t\t<circle cx=\"148\" cy=\"48\" r=\"2.3\"\/><circle cx=\"122\" cy=\"128\" r=\"2.3\"\/>\r\n\t\t\t\t\t\t<circle cx=\"131\" cy=\"236\" r=\"2.3\"\/><circle cx=\"126\" cy=\"430\" r=\"2.3\"\/>\r\n\t\t\t\t\t\t<circle cx=\"184\" cy=\"82\" r=\"2.3\"\/><circle cx=\"236\" cy=\"118\" r=\"2.3\"\/>\r\n\t\t\t\t\t\t<circle cx=\"178\" cy=\"173\" r=\"2.3\"\/><circle cx=\"218\" cy=\"191\" r=\"2.3\"\/>\r\n\t\t\t\t\t\t<circle cx=\"201\" cy=\"338\" r=\"2.3\"\/>\r\n\t\t\t\t\t<\/g>\r\n\t\t\t\t\t<text x=\"50\" y=\"52\" text-anchor=\"end\">HEAD<\/text>\r\n\t\t\t\t\t<text x=\"50\" y=\"132\" text-anchor=\"end\">CHEST<\/text>\r\n\t\t\t\t\t<text x=\"50\" y=\"240\" text-anchor=\"end\">PELVIS<\/text>\r\n\t\t\t\t\t<text x=\"50\" y=\"434\" text-anchor=\"end\">FEET<\/text>\r\n\t\t\t\t\t<text x=\"290\" y=\"86\">NECK<\/text>\r\n\t\t\t\t\t<text x=\"290\" y=\"122\">ARMS<\/text>\r\n\t\t\t\t\t<text x=\"290\" y=\"177\">SPINE<\/text>\r\n\t\t\t\t\t<text x=\"290\" y=\"195\">ABDOMEN<\/text>\r\n\t\t\t\t\t<text x=\"290\" y=\"342\">LEGS<\/text>\r\n\t\t\t\t<\/g>\r\n\r\n\t\t\t\t<g transform=\"translate(60,8)\">\r\n\t\t\t\t\t<ellipse data-zone=\"head\" class=\"cpv-zone\" cx=\"110\" cy=\"40\" rx=\"21\" ry=\"25\"\/>\r\n\t\t\t\t\t<path data-zone=\"neck\" class=\"cpv-zone\" d=\"M99,62 C99,74 97,80 91,84 C97,87 103,88 110,88 C117,88 123,87 129,84 C123,80 121,74 121,62 Z\"\/>\r\n\t\t\t\t\t<path data-zone=\"chest\" class=\"cpv-zone\" d=\"M91,84 C74,88 65,97 63,110 L63,152 L157,152 L157,110 C155,97 146,88 129,84 C123,86 117,88 110,88 C103,88 97,86 91,84 Z\"\/>\r\n\t\t\t\t\t<path data-zone=\"abd\" class=\"cpv-zone\" d=\"M63,152 L157,152 C157,174 154,193 148,206 L72,206 C66,193 63,174 63,152 Z\"\/>\r\n\t\t\t\t\t<path data-zone=\"pelvis\" class=\"cpv-zone\" d=\"M72,206 L148,206 L148,214 C148,229 143,242 136,251 L84,251 C77,242 72,229 72,214 Z\"\/>\r\n\t\t\t\t\t<rect data-zone=\"spine\" class=\"cpv-zone\" x=\"104\" y=\"90\" width=\"12\" height=\"158\" rx=\"5\"\/>\r\n\t\t\t\t\t<path data-zone=\"armL\" class=\"cpv-zone\" d=\"M63,106 C51,113 46,126 46,143 L48,194 C49,212 52,225 56,236 L69,232 C65,220 63,205 63,190 L63,140 C63,126 64,114 69,106 Z\"\/>\r\n\t\t\t\t\t<path data-zone=\"armR\" class=\"cpv-zone\" d=\"M157,106 C169,113 174,126 174,143 L172,194 C171,212 168,225 164,236 L151,232 C155,220 157,205 157,190 L157,140 C157,126 156,114 151,106 Z\"\/>\r\n\t\t\t\t\t<ellipse data-zone=\"armL\" class=\"cpv-zone\" cx=\"60\" cy=\"248\" rx=\"11\" ry=\"15\"\/>\r\n\t\t\t\t\t<ellipse data-zone=\"armR\" class=\"cpv-zone\" cx=\"160\" cy=\"248\" rx=\"11\" ry=\"15\"\/>\r\n\t\t\t\t\t<path data-zone=\"legL\" class=\"cpv-zone\" d=\"M84,251 C81,272 79,300 81,330 C82,360 85,388 89,410 L107,410 C105,384 104,352 105,323 C105,298 106,273 107,253 Z\"\/>\r\n\t\t\t\t\t<path data-zone=\"legR\" class=\"cpv-zone\" d=\"M136,251 C139,272 141,300 139,330 C138,360 135,388 131,410 L113,410 C115,384 116,352 115,323 C115,298 114,273 113,253 Z\"\/>\r\n\t\t\t\t\t<path data-zone=\"feet\" class=\"cpv-zone\" d=\"M87,410 L107,410 L107,426 C107,432 103,436 95,436 L74,436 C70,436 68,432 70,427 C73,420 80,414 87,410 Z\"\/>\r\n\t\t\t\t\t<path data-zone=\"feet\" class=\"cpv-zone\" d=\"M133,410 L113,410 L113,426 C113,432 117,436 125,436 L146,436 C150,436 152,432 150,427 C147,420 140,414 133,410 Z\"\/>\r\n\t\t\t\t<\/g>\r\n\t\t\t<\/svg>\r\n\t\t\t<div class=\"cpv-legend\">\r\n\t\t\t\t<span class=\"l-low\">Moderate<\/span><span class=\"l-mid\">Serious<\/span><span class=\"l-high\">Critical<\/span>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"cpv-hint\">Hover or tap a body zone for common injuries<\/div>\r\n\t\t\t<div class=\"cpv-stats\">\r\n\t\t\t\t<div class=\"cpv-stat\"><div class=\"num\" data-cpv=\"stat-g\">0<\/div><div class=\"lbl\">Peak deceleration on the body<\/div><\/div>\r\n\t\t\t\t<div class=\"cpv-stat\"><div class=\"num\" data-cpv=\"stat-fall\">0<\/div><div class=\"lbl\" data-cpv=\"stat-fall-lbl\">Equivalent fall height<\/div><\/div>\r\n\t\t\t\t<div class=\"cpv-stat\"><div class=\"num\" data-cpv=\"stat-stop\">0<\/div><div class=\"lbl\">Braking distance to a stop, dry road<\/div><\/div>\r\n\t\t\t\t<div class=\"cpv-stat\"><div class=\"num\" data-cpv=\"stat-risk\">0%<\/div><div class=\"lbl\">Modeled risk of fatal injury<\/div><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"cpv-tip\" data-cpv=\"tip\" role=\"tooltip\"><\/div>\r\n\t\t<\/div>\r\n\r\n\t\t<div class=\"cpv-right\">\r\n\t\t\t<div class=\"cpv-diagram\">\r\n\t\t\t\t<div class=\"cpv-diag-head\">\r\n\t\t\t\t\t<div class=\"cpv-panel-h\">Crash geometry<\/div>\r\n\t\t\t\t\t<div class=\"cpv-crash-name\" data-cpv=\"heading\">Rear end collision<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"cpv-diag-stage\" data-cpv=\"diagram\" aria-hidden=\"true\"><\/div>\r\n\t\t\t<\/div>\r\n\r\n\t\t\t<div class=\"cpv-narrative\" data-cpv=\"narrative\"><\/div>\r\n\r\n\t\t\t<div class=\"cpv-injuries\">\r\n\t\t\t\t<div class=\"cpv-panel-h\">Most common injuries in this crash type<\/div>\r\n\t\t\t\t<ul data-cpv=\"injury-list\"><\/ul>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n<\/div>\r\n<\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== HOW TO READ + THE SCIENCE ===== -->\r\n<section class=\"cpv-sec cpv-sec--alt\" id=\"how-to-read\">\r\n  <div class=\"cpv-wrap\">\r\n\r\n    <span class=\"cpv-kicker\">How to use this tool<\/span>\r\n    <h2>Reading the Visualizer<\/h2>\r\n    <div class=\"cpv-row\">\r\n      <div class=\"cpv-row-text\">\r\n        <p>The figure above is a map of the human body. When you pick a collision type, the zones most often injured in that crash light up. Gold means moderate injury risk; orange means serious; red means critical. Slide the speed up and watch the colors shift. The same crash that bruises you at 20 mph can break bones at 40 and become life threatening at 60.<\/p>\r\n        <p>The four numbers under the figure translate the crash into terms you can feel. A 40 mph impact is not an abstract statistic; it is the same energy as falling from a five story building, delivered to your body in about a tenth of a second.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-row-media\">\r\n        <!-- To use a photo instead: delete the svg below and add <img decoding=\"async\" src=\"YOUR-IMAGE-URL\" alt=\"\"> -->\r\n        <svg viewBox=\"0 0 320 190\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Key showing how zone colors map to injury severity\">\r\n          <text x=\"18\" y=\"30\" font-family=\"Montserrat,sans-serif\" font-weight=\"700\" font-size=\"11\" letter-spacing=\"2\" fill=\"#8F8F8F\">ZONE COLOR KEY<\/text>\r\n          <circle cx=\"34\" cy=\"62\" r=\"11\" fill=\"#F3B937\"\/>\r\n          <text x=\"56\" y=\"66\" font-family=\"Source Sans 3,sans-serif\" font-size=\"14\" fill=\"#E8E8E8\">Moderate injury risk<\/text>\r\n          <circle cx=\"34\" cy=\"98\" r=\"11\" fill=\"#F07E2D\"\/>\r\n          <text x=\"56\" y=\"102\" font-family=\"Source Sans 3,sans-serif\" font-size=\"14\" fill=\"#E8E8E8\">Serious injury risk<\/text>\r\n          <circle cx=\"34\" cy=\"134\" r=\"11\" fill=\"#E23A2E\"\/>\r\n          <text x=\"56\" y=\"138\" font-family=\"Source Sans 3,sans-serif\" font-size=\"14\" fill=\"#E8E8E8\">Critical injury risk<\/text>\r\n          <rect x=\"18\" y=\"160\" width=\"284\" height=\"8\" rx=\"4\" fill=\"url(#cpvKeyGrad)\"\/>\r\n          <defs><linearGradient id=\"cpvKeyGrad\" x1=\"0\" x2=\"1\"><stop offset=\"0\" stop-color=\"#F3B937\"\/><stop offset=\".55\" stop-color=\"#F07E2D\"\/><stop offset=\"1\" stop-color=\"#E23A2E\"\/><\/linearGradient><\/defs>\r\n          <text x=\"18\" y=\"184\" font-family=\"Source Sans 3,sans-serif\" font-size=\"11\" fill=\"#8F8F8F\">10 mph<\/text>\r\n          <text x=\"302\" y=\"184\" text-anchor=\"end\" font-family=\"Source Sans 3,sans-serif\" font-size=\"11\" fill=\"#8F8F8F\">80 mph<\/text>\r\n        <\/svg>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <span class=\"cpv-kicker\">The science, in plain English<\/span>\r\n    <h2>Why Speed Changes Everything in a Car Crash<\/h2>\r\n    <div class=\"cpv-row rev\">\r\n      <div class=\"cpv-row-text\">\r\n        <p>Crash energy does not grow in a straight line with speed. It grows with the <strong>square<\/strong> of speed. Double your speed and you quadruple the energy your body has to absorb. That is why the difference between 30 and 45 mph is not &#8220;a little worse&#8221;; it is more than twice the energy.<\/p>\r\n        <p>Your body has limits that no amount of caution can change. Bones, organs, and blood vessels can only tolerate so much sudden deceleration, measured in g force. A modern car spends its crumple zones and airbags trying to stretch the crash out over more time and distance, because every extra inch of crush lowers the g load on your body. That is also why side impacts and pedestrian crashes are so dangerous: there is almost nothing between the person and the force.<\/p>\r\n        <p>The last number in the panel, fatality risk, is the one researchers care about most. For a pedestrian, the risk of death climbs from about 10 percent at 23 mph to about 50 percent at 42 mph. Small speed differences change outcomes dramatically, which is why speed limits near schools and crosswalks are set where they are.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-row-media\">\r\n        <!-- To use a photo instead: delete the svg below and add <img decoding=\"async\" src=\"YOUR-IMAGE-URL\" alt=\"\"> -->\r\n        <svg viewBox=\"0 0 320 210\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Chart showing crash energy rising with the square of speed\">\r\n          <line x1=\"30\" y1=\"175\" x2=\"305\" y2=\"175\" stroke=\"#3A3A3A\" stroke-width=\"1.5\"\/>\r\n          <line x1=\"30\" y1=\"175\" x2=\"30\" y2=\"18\" stroke=\"#3A3A3A\" stroke-width=\"1.5\"\/>\r\n          <path d=\"M30,175 Q165,175 300,35\" fill=\"none\" stroke=\"#F3B937\" stroke-width=\"3\"\/>\r\n          <circle cx=\"138\" cy=\"152.6\" r=\"5\" fill=\"#F07E2D\"\/>\r\n          <circle cx=\"246\" cy=\"85.4\" r=\"5\" fill=\"#E23A2E\"\/>\r\n          <line x1=\"138\" y1=\"152.6\" x2=\"246\" y2=\"85.4\" stroke=\"#5A5A5A\" stroke-width=\"1.2\" stroke-dasharray=\"4 4\"\/>\r\n          <text x=\"138\" y=\"140\" text-anchor=\"middle\" font-family=\"Source Sans 3,sans-serif\" font-size=\"12\" fill=\"#CFCFCF\">30 mph<\/text>\r\n          <text x=\"246\" y=\"72\" text-anchor=\"middle\" font-family=\"Source Sans 3,sans-serif\" font-size=\"12\" fill=\"#CFCFCF\">60 mph<\/text>\r\n          <text x=\"215\" y=\"120\" font-family=\"Montserrat,sans-serif\" font-weight=\"700\" font-size=\"12\" fill=\"#F3B937\">4x the energy<\/text>\r\n          <text x=\"167\" y=\"196\" text-anchor=\"middle\" font-family=\"Source Sans 3,sans-serif\" font-size=\"11.5\" fill=\"#8F8F8F\">Impact speed<\/text>\r\n          <text x=\"16\" y=\"100\" font-family=\"Source Sans 3,sans-serif\" font-size=\"11.5\" fill=\"#8F8F8F\" transform=\"rotate(-90 16 100)\">Crash energy<\/text>\r\n        <\/svg>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== COLLISION GUIDE ===== -->\r\n<section class=\"cpv-sec\" id=\"collision-guide\">\r\n  <div class=\"cpv-wrap\">\r\n\r\n    <span class=\"cpv-kicker\">Collision guide<\/span>\r\n    <h2>The Five Collision Types, Explained<\/h2>\r\n\r\n    <div class=\"cpv-row\">\r\n      <div class=\"cpv-row-text\">\r\n        <h3>Rear end collisions<\/h3>\r\n        <p>The most common crash on the road. The struck car is shoved forward while the occupant&#8217;s head lags behind for a fraction of a second; the neck absorbs the difference. That is whiplash, and it can occur at speeds as low as 8 mph. At higher speeds, rear end crashes add concussions, spinal injuries, and seat back failures to the picture.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-row-media\" data-scene=\"rear\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cpv-row rev\">\r\n      <div class=\"cpv-row-text\">\r\n        <h3>Head on collisions<\/h3>\r\n        <p>Two vehicles moving toward each other combine their speeds, so a 40 mph head on crash can behave like a much faster impact. The chest takes the belt and airbag load, the head whips forward, and the knees and feet strike the dash and footwell. These crashes produce a large share of serious leg and internal injuries.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-row-media\" data-scene=\"head\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cpv-row\">\r\n      <div class=\"cpv-row-text\">\r\n        <h3>Side impact (T bone) crashes<\/h3>\r\n        <p>A car door offers roughly a foot of protection; the front of a car offers several feet of crumple zone. When a vehicle strikes your door, there is very little structure to absorb the blow. Head, rib, pelvic, and internal organ injuries dominate, and they occur at speeds that would be survivable in a frontal crash.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-row-media\" data-scene=\"side\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cpv-row rev\">\r\n      <div class=\"cpv-row-text\">\r\n        <h3>Rollovers<\/h3>\r\n        <p>A rollover is not one impact; it is a series of them. Each rotation loads the roof, the occupant&#8217;s head, and the spine again. Ejection is the deadliest outcome, and it almost always involves an unbelted occupant. Rollovers make up a small share of crashes but a large share of deaths.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-row-media\" data-scene=\"roll\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cpv-row\">\r\n      <div class=\"cpv-row-text\">\r\n        <h3>Pedestrian crashes<\/h3>\r\n        <p>A person on foot has no crumple zone at all. The bumper strikes the legs first, the body rotates onto the hood, and the head reaches the windshield or the pavement. This sequence is why pedestrian injuries cluster in the legs, pelvis, and head, and why fatality risk rises so steeply between 25 and 50 mph.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-row-media\" data-scene=\"ped\"><\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== FAQ ===== -->\r\n<section class=\"cpv-sec cpv-sec--feature\" id=\"faq\">\r\n  <div class=\"cpv-wrap\">\r\n    <div class=\"cpv-two cpv-two--faq\">\r\n      <div class=\"cpv-faq-intro\">\r\n        <span class=\"cpv-kicker\">Common questions<\/span>\r\n        <h2>Crash Injury Questions, Answered<\/h2>\r\n        <p>Straight answers to the questions people search after a crash. Each one starts with the direct answer, then the research behind it.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-faq\">\r\n        <details>\r\n          <summary>At what speed can a car crash kill you?<\/summary>\r\n          <div class=\"a\">There is no safe speed; fatal crashes have been recorded below 20 mph. For vehicle occupants, the risk of death rises sharply above roughly 40 mph of sudden speed change, and for pedestrians it climbs steeply past 30 mph. Restraints, airbags, and the crash type matter as much as the number on the speedometer.<\/div>\r\n        <\/details>\r\n        <details>\r\n          <summary>Can you get whiplash from a low speed crash?<\/summary>\r\n          <div class=\"a\">Yes. Research shows whiplash injuries can occur in rear end impacts at 8 mph or less, sometimes with little visible damage to either vehicle. Symptoms often appear hours or days after the crash, which is why doctors recommend getting checked even after a minor collision.<\/div>\r\n        <\/details>\r\n        <details>\r\n          <summary>What is the most dangerous type of car crash?<\/summary>\r\n          <div class=\"a\">Per crash, head on collisions and side impacts produce the highest rates of death and serious injury for vehicle occupants, because the closing speed is high or the protective structure is thin. Rollovers are rarer but carry an outsized share of fatalities, largely due to ejection.<\/div>\r\n        <\/details>\r\n        <details>\r\n          <summary>How many g&#8217;s can the human body survive?<\/summary>\r\n          <div class=\"a\">A restrained, healthy person can survive brief spikes of 40 to 60 g, and rare cases have survived far more for a few milliseconds. Injury typically begins well below that, though; sustained loads above about 20 to 30 g cause internal damage. Everything in vehicle safety design exists to keep the g number low by stretching the impact over more time.<\/div>\r\n        <\/details>\r\n        <details>\r\n          <summary>Why are side impact crashes so dangerous?<\/summary>\r\n          <div class=\"a\">Because the crumple zone is missing. In a frontal crash your body has several feet of collapsing metal working for it; in a T bone crash it has a door panel. That is why side curtain airbags and reinforced door beams have had such a measurable effect on survival rates.<\/div>\r\n        <\/details>\r\n        <details>\r\n          <summary>What happens to a pedestrian hit at 40 mph?<\/summary>\r\n          <div class=\"a\">At around 40 mph, published research places the risk of death for a struck pedestrian near 50 percent, with typical injuries to the legs, pelvis, and head. At 25 mph that risk is closer to 10 percent. The gap between those two numbers is the entire argument for lower urban speed limits.<\/div>\r\n        <\/details>\r\n        <details>\r\n          <summary>Do seat belts really make that much difference?<\/summary>\r\n          <div class=\"a\">Yes. Federal crash data shows seat belts reduce the risk of death for front seat occupants of cars by about 45 percent, and they are the single biggest factor in surviving a rollover, because they prevent ejection. No other safety device comes close.<\/div>\r\n        <\/details>\r\n        <details>\r\n          <summary>How is the fatality risk in this tool calculated?<\/summary>\r\n          <div class=\"a\">Pedestrian risk is interpolated from published AAA Foundation for Traffic Safety research on impact speed. Occupant risk for the other crash types is a modeled estimate shaped from federal research on sudden speed change and injury. The figures are educational estimates for a typical adult, not predictions for any specific crash or person.<\/div>\r\n        <\/details>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== METHODOLOGY + PUBLISHER EMBED ===== -->\r\n<section class=\"cpv-sec cpv-sec--alt\" id=\"methodology\">\r\n  <div class=\"cpv-wrap\">\r\n\r\n    <div class=\"cpv-two\">\r\n      <div>\r\n        <span class=\"cpv-kicker\">Transparency<\/span>\r\n        <h2>Methodology and Sources<\/h2>\r\n        <p style=\"margin:0\">Fall height is derived from kinetic energy equivalence. Braking distance assumes a dry road friction coefficient of 0.7 and excludes driver reaction time. Peak deceleration is estimated from typical crush distances for each collision type. Injury zone patterns reflect published trauma literature on collision biomechanics. All figures describe a typical adult and are for education, not prediction.<\/p>\r\n      <\/div>\r\n      <div class=\"cpv-src-card\">\r\n        <div class=\"cpv-src-h\">Data sources<\/div>\r\n        <ul class=\"cpv-sources\">\r\n          <li><a href=\"https:\/\/aaafoundation.org\/impact-speed-and-a-pedestrians-risk-of-severe-injury-or-death\/\" target=\"_blank\" rel=\"noopener\">AAA Foundation for Traffic Safety; Impact Speed and a Pedestrian&#8217;s Risk of Severe Injury or Death<\/a><\/li>\r\n          <li><a href=\"https:\/\/www.nhtsa.gov\/research\" target=\"_blank\" rel=\"noopener\">National Highway Traffic Safety Administration; crash injury and occupant protection research<\/a><\/li>\r\n          <li><a href=\"https:\/\/www.iihs.org\/topics\" target=\"_blank\" rel=\"noopener\">Insurance Institute for Highway Safety; crash test and real world outcome data<\/a><\/li>\r\n          <li><a href=\"https:\/\/www.who.int\/teams\/social-determinants-of-health\/safety-and-mobility\/global-status-report-on-road-safety-2023\" target=\"_blank\" rel=\"noopener\">World Health Organization; Global Status Report on Road Safety<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <span class=\"cpv-kicker\">For publishers<\/span>\r\n    <h2>Embed or Reference This Tool<\/h2>\r\n    <p>Journalists, educators, and safety organizations are welcome to reference the figures above or embed the tool, free, with attribution and a link back to this page.<\/p>\r\n    <div class=\"cpv-embed\">\r\n      <textarea readonly>&lt;iframe src=&#8221;https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/&#8221; width=&#8221;100%&#8221; height=&#8221;900&#8243; style=&#8221;border:0&#8243; title=&#8221;Crash Physics and Injury Visualizer&#8221;&gt;&lt;\/iframe&gt;\r\n&lt;p&gt;Source: &lt;a href=&#8221;https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/&#8221;&gt;J. Alexander Law Firm Crash Injury Visualizer&lt;\/a&gt;&lt;\/p&gt;<\/textarea>\r\n      <button type=\"button\" class=\"cpv-copy\">Copy embed code<\/button>\r\n    <\/div>\r\n\r\n    <span class=\"cpv-kicker\">About the publisher<\/span>\r\n    <h2>About J. Alexander Law Firm<\/h2>\r\n    <div class=\"cpv-two\">\r\n      <p style=\"margin:0\">J. Alexander Law Firm, P.C. is a personal injury law firm founded in 2017 by attorney Josh Alexander, a United States Marine Corps veteran who served during Operation Iraqi Freedom. The firm represents people injured in vehicle, workplace, and catastrophic injury cases from offices in Dallas, Fort Worth, Houston, San Antonio, Canton, Oklahoma City, and Tulsa, serving clients in English and Spanish. The firm publishes free public safety tools and guides, including this visualizer, as part of its education and community work.<\/p>\r\n      <div class=\"cpv-src-card\">\r\n        <div class=\"cpv-src-h\">Media contact<\/div>\r\n        <ul class=\"cpv-sources\">\r\n          <li>Jose Lopez, Marketing Director<\/li>\r\n          <li>Phone: <a href=\"tel:+19725355700\">(972) 535-5700<\/a><\/li>\r\n          <li>Email: [SWAP-EMAIL: insert monitored press email]<\/li>\r\n          <li><a href=\"https:\/\/severeinjurylawyers.com\/crash-injury-visualizer\/\">severeinjurylawyers.com\/crash-injury-visualizer<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <p class=\"cpv-attrib\">Created by <a href=\"https:\/\/severeinjurylawyers.com\/\" rel=\"noopener\">J. Alexander Law Firm<\/a>, a personal injury firm that has spent years studying how crashes injure people. This page is educational and is not legal or medical advice.<\/p>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n<\/main>\r\n<\/div>\r\n<script>\r\n\/* JCA Crash Physics & Injury Visualizer *\/\r\n(function () {\r\n  \"use strict\";\r\n\r\n  var MPH_TO_MS = 0.44704, G = 9.81;\r\n  var reduceMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\r\n\r\n  var ZONE_LABELS = { head: \"Head\", neck: \"Neck\", chest: \"Chest\", abd: \"Abdomen\", pelvis: \"Pelvis\", spine: \"Spine\", armL: \"Left arm & hand\", armR: \"Right arm & hand\", legL: \"Left leg\", legR: \"Right leg\", feet: \"Feet & ankles\" };\r\n\r\n  var PED_POINTS = [[10, 0.01], [16, 0.03], [23, 0.10], [32, 0.25], [42, 0.50], [50, 0.75], [58, 0.90], [70, 0.98], [80, 0.99]];\r\n  function pedRisk(mph) {\r\n    if (mph <= PED_POINTS[0][0]) return PED_POINTS[0][1];\r\n    for (var i = 1; i < PED_POINTS.length; i++) {\r\n      if (mph <= PED_POINTS[i][0]) {\r\n        var a = PED_POINTS[i - 1], b = PED_POINTS[i];\r\n        return a[1] + (b[1] - a[1]) * (mph - a[0]) \/ (b[0] - a[0]);\r\n      }\r\n    }\r\n    return 0.99;\r\n  }\r\n  function logistic(mph, mid, k) { return 1 \/ (1 + Math.exp(-(mph - mid) \/ k)); }\r\n\r\n  \/* narratives take (mph, fmt) so each instance formats with its own units *\/\r\n  var CRASH = {\r\n    rear: {\r\n      label: \"Rear end collision\", crush: 0.9,\r\n      zones: { neck: 1.0, head: 0.6, spine: 0.8, chest: 0.35, armL: 0.35, armR: 0.35, feet: 0.3 },\r\n      injuries: [\r\n        { t: \"Whiplash and cervical strain\", z: [\"neck\"], zl: \"Neck\" },\r\n        { t: \"Concussion from head snap against the restraint\", z: [\"head\"], zl: \"Head\" },\r\n        { t: \"Lumbar and thoracic spine injury\", z: [\"spine\"], zl: \"Spine\" },\r\n        { t: \"Wrist and shoulder strain from bracing on the wheel\", z: [\"armL\", \"armR\"], zl: \"Arms\" },\r\n        { t: \"Ankle injury from the braking foot\", z: [\"feet\"], zl: \"Feet\" },\r\n        { t: \"Seat belt bruising of the chest\", z: [\"chest\"], zl: \"Chest\" }\r\n      ],\r\n      narrative: function (mph, fmt) {\r\n        var s = fmt(mph);\r\n        if (mph < 25) return \"At \" + s + \", this is the classic stop and go impact. The struck car lurches forward, the head snaps back, and the neck takes the strain. Whiplash can occur at speeds as low as 8 mph, often with barely a mark on either bumper.\";\r\n        if (mph < 45) return \"At \" + s + \", the struck vehicle is shoved forward hard while the occupant's head lags behind for a fraction of a second. The neck absorbs that difference. Whiplash is near certain in this range, and concussions and lower back injuries become common.\";\r\n        return \"At \" + s + \", a rear end impact stops being a fender bender. Seat backs can fail, headrests are overwhelmed, and the violent head snap can injure the brain and spinal cord, not just strain the neck.\";\r\n      },\r\n      risk: function (mph) { return logistic(mph, 62, 9); }\r\n    },\r\n    head: {\r\n      label: \"Head on collision\", crush: 0.65,\r\n      zones: { head: 0.9, chest: 1.0, abd: 0.6, legL: 0.8, legR: 0.8, feet: 0.7, pelvis: 0.5, neck: 0.5, armL: 0.6, armR: 0.6, spine: 0.45 },\r\n      injuries: [\r\n        { t: \"Chest trauma from belt, airbag, or steering column\", z: [\"chest\"], zl: \"Chest\" },\r\n        { t: \"Traumatic brain injury\", z: [\"head\"], zl: \"Head\" },\r\n        { t: \"Wrist and forearm fractures from bracing against the wheel\", z: [\"armL\", \"armR\"], zl: \"Arms\" },\r\n        { t: \"Femur and knee fractures against the dash\", z: [\"legL\", \"legR\"], zl: \"Legs\" },\r\n        { t: \"Foot and ankle crush in the footwell\", z: [\"feet\"], zl: \"Feet\" },\r\n        { t: \"Internal organ injury\", z: [\"abd\"], zl: \"Abdomen\" }\r\n      ],\r\n      narrative: function (mph, fmt) {\r\n        var s = fmt(mph);\r\n        if (mph < 25) return \"Even at \" + s + \", a head on crash is more violent than the number suggests, because the closing speed of two moving vehicles combines. Belted occupants usually survive this range, but chest bruising from the belt and knee injuries from the dash are common.\";\r\n        if (mph < 45) return \"At \" + s + \", the two vehicles' speeds combine into a closing force that decelerates the cabin in under a tenth of a second. The chest takes the belt and airbag load, the head whips forward, and the knees and feet strike the dash and footwell.\";\r\n        return \"At \" + s + \", a head on collision is one of the deadliest events on the road. Even with modern belts and airbags, the combined closing speed drives severe chest, brain, and leg injuries, and survival often comes down to how well the vehicle structures hold.\";\r\n      },\r\n      risk: function (mph) { return logistic(mph, 48, 8); }\r\n    },\r\n    side: {\r\n      label: \"Side impact (T bone)\", crush: 0.3,\r\n      zones: { head: 0.95, chest: 0.85, pelvis: 0.9, abd: 0.7, armL: 0.6, armR: 0.3, neck: 0.5, legL: 0.5, feet: 0.35, spine: 0.35 },\r\n      injuries: [\r\n        { t: \"Head strike against the window or intruding vehicle\", z: [\"head\"], zl: \"Head\" },\r\n        { t: \"Rib fractures and lung injury on the struck side\", z: [\"chest\"], zl: \"Chest\" },\r\n        { t: \"Pelvic and hip fractures\", z: [\"pelvis\"], zl: \"Pelvis\" },\r\n        { t: \"Spleen, liver, and kidney injury\", z: [\"abd\"], zl: \"Abdomen\" },\r\n        { t: \"Shoulder and arm fractures on the struck side\", z: [\"armL\", \"armR\"], zl: \"Arms\" },\r\n        { t: \"Leg and foot entrapment from door and floor intrusion\", z: [\"legL\", \"feet\"], zl: \"Leg &#038; foot\" }\r\n      ],\r\n      narrative: function (mph, fmt) {\r\n        var s = fmt(mph);\r\n        if (mph < 25) return \"At \" + s + \", a side impact already matters more than a frontal crash at the same speed. A door offers roughly a foot of protection, so even low speed T bone crashes commonly bruise ribs and injure hips on the struck side.\";\r\n        if (mph < 45) return \"At \" + s + \", there is almost no structure left between the striking vehicle and the occupant. Head strikes, rib fractures, and pelvic injuries dominate, which is why a T bone crash in this range rivals much faster frontal impacts.\";\r\n        return \"At \" + s + \", the striking vehicle intrudes directly into the occupant space. This is the crash side curtain airbags were invented for; without them, head and internal organ injuries at this speed are frequently fatal.\";\r\n      },\r\n      risk: function (mph) { return logistic(mph, 40, 7); }\r\n    },\r\n    roll: {\r\n      label: \"Rollover\", crush: 0.5,\r\n      zones: { head: 1.0, neck: 0.9, spine: 0.85, armL: 0.6, armR: 0.6, chest: 0.5, abd: 0.3, legL: 0.4, legR: 0.4, feet: 0.3 },\r\n      injuries: [\r\n        { t: \"Head injury from roof contact or roof crush\", z: [\"head\"], zl: \"Head\" },\r\n        { t: \"Cervical spine fracture\", z: [\"neck\"], zl: \"Neck\" },\r\n        { t: \"Thoracic and lumbar spine injury\", z: [\"spine\"], zl: \"Spine\" },\r\n        { t: \"Arm fractures from flailing or partial ejection\", z: [\"armL\", \"armR\"], zl: \"Arms\" },\r\n        { t: \"Leg and foot injuries from footwell intrusion\", z: [\"legL\", \"legR\", \"feet\"], zl: \"Legs &#038; feet\" },\r\n        { t: \"Ejection, the leading cause of rollover death\", z: [], zl: \"Whole body\" }\r\n      ],\r\n      narrative: function (mph, fmt) {\r\n        var s = fmt(mph);\r\n        if (mph < 25) return \"At \" + s + \", rollovers are rare and usually need a trip point like a curb, a ditch, or a soft shoulder. Belted occupants generally come through this range well; unbelted occupants can still be thrown against the roof and pillars.\";\r\n        if (mph < 45) return \"At \" + s + \", a vehicle can roll one or more full rotations. Each rotation loads the roof, the occupant's head, and the spine again. A seat belt is the difference between being held in the seat and being thrown around the cabin.\";\r\n        return \"At \" + s + \", a rollover becomes a chain of violent impacts, and roof crush and ejection decide the outcome. Ejection is fatal in most cases, which is why this crash type accounts for a share of deaths far beyond its numbers.\";\r\n      },\r\n      risk: function (mph) { return logistic(mph, 52, 9); }\r\n    },\r\n    ped: {\r\n      label: \"Pedestrian struck by a vehicle\", crush: 0.15,\r\n      zones: { legL: 1.0, legR: 1.0, pelvis: 0.9, head: 0.95, neck: 0.55, chest: 0.6, abd: 0.5, spine: 0.4, armL: 0.6, armR: 0.6, feet: 0.75 },\r\n      injuries: [\r\n        { t: \"Tibia and fibula fractures from the bumper\", z: [\"legL\", \"legR\"], zl: \"Legs\" },\r\n        { t: \"Ankle and foot fractures at bumper height\", z: [\"feet\"], zl: \"Feet\" },\r\n        { t: \"Pelvic fracture from the hood edge\", z: [\"pelvis\"], zl: \"Pelvis\" },\r\n        { t: \"Head injury from windshield or ground\", z: [\"head\"], zl: \"Head\" },\r\n        { t: \"Cervical spine injury as the head strikes\", z: [\"neck\"], zl: \"Neck\" },\r\n        { t: \"Arm and wrist fractures from hood and ground impact\", z: [\"armL\", \"armR\"], zl: \"Arms\" },\r\n        { t: \"Chest and internal trauma\", z: [\"chest\", \"abd\"], zl: \"Chest\" },\r\n        { t: \"Spinal injury on secondary ground impact\", z: [\"spine\"], zl: \"Spine\" }\r\n      ],\r\n      narrative: function (mph, fmt) {\r\n        var s = fmt(mph);\r\n        if (mph < 25) return \"At \" + s + \", most struck pedestrians survive, though leg fractures and hip injuries are common. Research puts the risk of death near 10 percent at 23 mph, which is the entire case for slow school zone and neighborhood limits.\";\r\n        if (mph < 45) return \"At \" + s + \", the sequence turns violent: the bumper breaks the legs, the body rotates onto the hood, and the head reaches the windshield. Fatality risk climbs steeply through this range, from roughly 25 percent at 32 mph to 50 percent at 42.\";\r\n        return \"At \" + s + \", a struck pedestrian has very little chance. Published research places the risk of death at 75 percent or higher past 50 mph; the body is accelerated to the car's speed almost instantly, with nothing to absorb any of it.\";\r\n      },\r\n      risk: function (mph) { return pedRisk(mph); }\r\n    }\r\n  };\r\n\r\n  \/* ---------- crash geometry scenes ---------- *\/\r\n  function carTop(x, y, rot, victim, opacity) {\r\n    var body = victim ? \"#3B3120\" : \"#232323\";\r\n    var stroke = victim ? \"#F3B937\" : \"#565656\";\r\n    var roof = victim ? \"#4C3E22\" : \"#2E2E2E\";\r\n    var glass = \"#0D0D0D\";\r\n    var op = (opacity == null) ? 1 : opacity;\r\n    return '<g transform=\"translate(' + x + ',' + y + ') rotate(' + rot + ')\" opacity=\"' + op + '\">' +\r\n      '<rect x=\"-44\" y=\"-26\" width=\"17\" height=\"7\" rx=\"3\" fill=\"#0B0B0B\"\/>' +\r\n      '<rect x=\"24\" y=\"-26\" width=\"17\" height=\"7\" rx=\"3\" fill=\"#0B0B0B\"\/>' +\r\n      '<rect x=\"-44\" y=\"19\" width=\"17\" height=\"7\" rx=\"3\" fill=\"#0B0B0B\"\/>' +\r\n      '<rect x=\"24\" y=\"19\" width=\"17\" height=\"7\" rx=\"3\" fill=\"#0B0B0B\"\/>' +\r\n      '<path d=\"M-50,-23 L42,-23 Q56,-23 56,-12 L56,12 Q56,23 42,23 L-50,23 Q-56,23 -56,17 L-56,-17 Q-56,-23 -50,-23 Z\" fill=\"' + body + '\" stroke=\"' + stroke + '\" stroke-width=\"2\"\/>' +\r\n      '<line x1=\"30\" y1=\"-20\" x2=\"30\" y2=\"20\" stroke=\"#000\" stroke-opacity=\"0.35\" stroke-width=\"1.5\"\/>' +\r\n      '<rect x=\"12\" y=\"-28\" width=\"8\" height=\"6\" rx=\"2\" fill=\"' + body + '\" stroke=\"' + stroke + '\" stroke-width=\"1.4\"\/>' +\r\n      '<rect x=\"12\" y=\"22\" width=\"8\" height=\"6\" rx=\"2\" fill=\"' + body + '\" stroke=\"' + stroke + '\" stroke-width=\"1.4\"\/>' +\r\n      '<path d=\"M12,-18 Q24,-9 24,0 Q24,9 12,18 L7,15 Q15,8 15,0 Q15,-8 7,-15 Z\" fill=\"' + glass + '\"\/>' +\r\n      '<rect x=\"-24\" y=\"-15\" width=\"30\" height=\"30\" rx=\"8\" fill=\"' + roof + '\"\/>' +\r\n      '<path d=\"M-27,-16 Q-36,-9 -36,0 Q-36,9 -27,16 L-31,13 Q-40,8 -40,0 Q-40,-8 -31,-13 Z\" fill=\"' + glass + '\"\/>' +\r\n      '<line x1=\"-44\" y1=\"-19\" x2=\"-44\" y2=\"19\" stroke=\"#000\" stroke-opacity=\"0.35\" stroke-width=\"1.5\"\/>' +\r\n      '<path d=\"M56,-13 Q52,-18 46,-19 L46,-13 Z\" fill=\"#F5E7AE\"\/>' +\r\n      '<path d=\"M56,13 Q52,18 46,19 L46,13 Z\" fill=\"#F5E7AE\"\/>' +\r\n      '<rect x=\"-56\" y=\"-17\" width=\"3.5\" height=\"9\" rx=\"1.5\" fill=\"#8C3030\"\/>' +\r\n      '<rect x=\"-56\" y=\"8\" width=\"3.5\" height=\"9\" rx=\"1.5\" fill=\"#8C3030\"\/>' +\r\n      '<\/g>';\r\n  }\r\n  function streaks(x, y, rot) {\r\n    return '<g transform=\"translate(' + x + ',' + y + ') rotate(' + rot + ')\" stroke=\"#5C5C5C\" stroke-width=\"2.5\" stroke-linecap=\"round\" opacity=\"0.85\">' +\r\n      '<line x1=\"0\" y1=\"-9\" x2=\"-26\" y2=\"-9\"\/>' +\r\n      '<line x1=\"0\" y1=\"0\" x2=\"-40\" y2=\"0\"\/>' +\r\n      '<line x1=\"0\" y1=\"9\" x2=\"-22\" y2=\"9\"\/><\/g>';\r\n  }\r\n  function impact(x, y) {\r\n    function star(r1, r2, fill, op) {\r\n      var p = \"\";\r\n      for (var i = 0; i < 8; i++) {\r\n        var a = i * Math.PI \/ 4;\r\n        p += (i === 0 ? \"M\" : \"L\") + (x + Math.cos(a) * r1).toFixed(1) + \",\" + (y + Math.sin(a) * r1).toFixed(1) +\r\n          \" L\" + (x + Math.cos(a + Math.PI \/ 8) * r2).toFixed(1) + \",\" + (y + Math.sin(a + Math.PI \/ 8) * r2).toFixed(1) + \" \";\r\n      }\r\n      return '<path d=\"' + p + 'Z\" fill=\"' + fill + '\" opacity=\"' + op + '\"\/>';\r\n    }\r\n    return star(17, 7, \"#F3B937\", 0.95) + star(9, 4, \"#FFF3CF\", 0.95);\r\n  }\r\n  function tag(x, y, text, gold) {\r\n    return '<text x=\"' + x + '\" y=\"' + y + '\" text-anchor=\"middle\" font-family=\"Montserrat,sans-serif\" font-weight=\"700\" font-size=\"9.5\" letter-spacing=\"1.5\" fill=\"' + (gold ? \"#F3B937\" : \"#8A8A8A\") + '\">' + text.toUpperCase() + '<\/text>';\r\n  }\r\n  function person(x, y, gold) {\r\n    var c = gold ? \"#F3B937\" : \"#CFCFCF\";\r\n    return '<g stroke=\"' + c + '\" stroke-width=\"4.5\" stroke-linecap=\"round\">' +\r\n      '<line x1=\"' + x + '\" y1=\"' + (y - 11) + '\" x2=\"' + x + '\" y2=\"' + (y + 7) + '\"\/>' +\r\n      '<line x1=\"' + x + '\" y1=\"' + (y - 4) + '\" x2=\"' + (x - 9) + '\" y2=\"' + (y + 2) + '\"\/>' +\r\n      '<line x1=\"' + x + '\" y1=\"' + (y - 4) + '\" x2=\"' + (x + 9) + '\" y2=\"' + (y - 9) + '\"\/>' +\r\n      '<line x1=\"' + x + '\" y1=\"' + (y + 7) + '\" x2=\"' + (x - 7) + '\" y2=\"' + (y + 22) + '\"\/>' +\r\n      '<line x1=\"' + x + '\" y1=\"' + (y + 7) + '\" x2=\"' + (x + 8) + '\" y2=\"' + (y + 21) + '\"\/><\/g>' +\r\n      '<circle cx=\"' + x + '\" cy=\"' + (y - 19) + '\" r=\"7\" fill=\"' + c + '\"\/>';\r\n  }\r\n  function roadH() {\r\n    return '<rect x=\"0\" y=\"28\" width=\"340\" height=\"84\" rx=\"2\" fill=\"#101010\"\/>' +\r\n      '<line x1=\"0\" y1=\"33\" x2=\"340\" y2=\"33\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>' +\r\n      '<line x1=\"0\" y1=\"107\" x2=\"340\" y2=\"107\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>' +\r\n      '<line x1=\"0\" y1=\"70\" x2=\"340\" y2=\"70\" stroke=\"#3D3D3D\" stroke-width=\"2.5\" stroke-dasharray=\"16 13\"\/>';\r\n  }\r\n  function svgWrap(inner) {\r\n    return '<svg viewBox=\"0 0 340 142\" width=\"100%\" style=\"display:block\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">' + inner + '<\/svg>';\r\n  }\r\n  var DIAGRAMS = {\r\n    rear: function () {\r\n      return svgWrap(\r\n        roadH() +\r\n        streaks(42, 89, 0) + carTop(102, 89, 0, false) +\r\n        carTop(220, 89, 0, true) +\r\n        impact(161, 89) +\r\n        tag(102, 132, \"Striking vehicle\", false) + tag(220, 132, \"Your vehicle\", true)\r\n      );\r\n    },\r\n    head: function () {\r\n      return svgWrap(\r\n        roadH() +\r\n        streaks(40, 89, 0) + carTop(100, 89, 0, false) +\r\n        carTop(220, 89, 180, true) + streaks(280, 89, 180) +\r\n        impact(160, 89) +\r\n        tag(100, 132, \"Oncoming vehicle\", false) + tag(220, 132, \"Your vehicle\", true)\r\n      );\r\n    },\r\n    side: function () {\r\n      return svgWrap(\r\n        roadH() +\r\n        '<rect x=\"140\" y=\"0\" width=\"86\" height=\"142\" fill=\"#101010\"\/>' +\r\n        '<line x1=\"145\" y1=\"0\" x2=\"145\" y2=\"28\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>' +\r\n        '<line x1=\"221\" y1=\"0\" x2=\"221\" y2=\"28\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>' +\r\n        '<line x1=\"145\" y1=\"112\" x2=\"145\" y2=\"142\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>' +\r\n        '<line x1=\"221\" y1=\"112\" x2=\"221\" y2=\"142\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>' +\r\n        carTop(183, 92, 0, true) +\r\n        carTop(183, 16, 90, false) +\r\n        impact(183, 70) +\r\n        tag(72, 20, \"Striking vehicle\", false) + tag(72, 132, \"Your vehicle\", true)\r\n      );\r\n    },\r\n    roll: function () {\r\n      return svgWrap(\r\n        roadH() +\r\n        carTop(74, 86, 0, true, 0.22) +\r\n        carTop(160, 76, -34, true, 0.45) +\r\n        carTop(252, 68, -72, true, 1) +\r\n        '<path d=\"M96,34 A120,120 0 0 1 244,26\" fill=\"none\" stroke=\"#8A8A8A\" stroke-width=\"2.5\"\/>' +\r\n        '<path d=\"M244,26 L231,20 M244,26 L236,37\" stroke=\"#8A8A8A\" stroke-width=\"2.5\" fill=\"none\" stroke-linecap=\"round\"\/>' +\r\n        tag(160, 132, \"Vehicle rolling over\", true)\r\n      );\r\n    },\r\n    ped: function () {\r\n      var zebra = \"\";\r\n      for (var i = 0; i < 6; i++) {\r\n        zebra += '<rect x=\"' + (152 + i * 15) + '\" y=\"34\" width=\"8\" height=\"72\" fill=\"#333333\"\/>';\r\n      }\r\n      return svgWrap(\r\n        roadH() + zebra +\r\n        streaks(38, 70, 0) + carTop(100, 70, 0, false) +\r\n        person(172, 68, true) +\r\n        impact(157, 68) +\r\n        tag(96, 132, \"Striking vehicle\", false) + tag(196, 132, \"Pedestrian\", true)\r\n      );\r\n    }\r\n  };\r\n\r\n  \/* ---------- helpers ---------- *\/\r\n  function sevColor(t) {\r\n    if (t < 0.45) return \"#F3B937\";\r\n    if (t < 0.75) return \"#F07E2D\";\r\n    return \"#E23A2E\";\r\n  }\r\n  function sevLabel(t) {\r\n    if (t < 0.45) return [\"Moderate risk\", \"#F3B937\"];\r\n    if (t < 0.75) return [\"Serious risk\", \"#F07E2D\"];\r\n    return [\"Critical risk\", \"#E23A2E\"];\r\n  }\r\n  function storyText(fallM) {\r\n    var stories = fallM \/ 3;\r\n    if (stories < 1) return \"below one story\";\r\n    if (stories < 1.6) return \"a 1 story building\";\r\n    return \"a \" + Math.round(stories) + \" story building\";\r\n  }\r\n  function animateNum(el, from, to, fmt) {\r\n    if (reduceMotion || from === to) { el.textContent = fmt(to); return; }\r\n    var start = performance.now(), dur = 420;\r\n    function step(now) {\r\n      var p = Math.min(1, (now - start) \/ dur);\r\n      p = 1 - Math.pow(1 - p, 3);\r\n      el.textContent = fmt(from + (to - from) * p);\r\n      if (p < 1) requestAnimationFrame(step);\r\n    }\r\n    requestAnimationFrame(step);\r\n  }\r\n\r\n  \/* ---------- per instance init ---------- *\/\r\n  function initApp(root) {\r\n    if (root.dataset.cpvInit) return;   \/* never double-bind an instance *\/\r\n    root.dataset.cpvInit = \"1\";\r\n    function q(sel) { return root.querySelector(sel); }\r\n\r\n    var state = {\r\n      crash: CRASH[root.dataset.crash] ? root.dataset.crash : \"rear\",\r\n      unit: root.dataset.units === \"kmh\" ? \"kmh\" : \"mph\",\r\n      mph: Math.max(10, Math.min(80, parseInt(root.dataset.speed || \"40\", 10) || 40))\r\n    };\r\n    var prev = { g: 0, fall: 0, stop: 0, risk: 0 };\r\n    var glowId = root.dataset.glow || \"cpvGlow\";\r\n\r\n    var slider = q('[data-cpv=\"range\"]');\r\n    var speedNum = q('[data-cpv=\"speed-num\"]');\r\n    var speedUnit = q('[data-cpv=\"speed-unit\"]');\r\n    if (!slider || !speedNum) return;\r\n    slider.value = state.mph;\r\n\r\n    function fmtSpeed(mph) {\r\n      return state.unit === \"kmh\" ? Math.round(mph * 1.60934) + \" km\/h\" : Math.round(mph) + \" mph\";\r\n    }\r\n    function speedFactor() { return Math.min(1, (state.mph - 10) \/ 60); }\r\n\r\n    function highlightZones(zones, on) {\r\n      root.querySelectorAll(\".cpv-zone\").forEach(function (el) {\r\n        if (zones.indexOf(el.dataset.zone) > -1) el.classList.toggle(\"hover\", on);\r\n      });\r\n    }\r\n\r\n    function render() {\r\n      var c = CRASH[state.crash], mph = state.mph, v = mph * MPH_TO_MS;\r\n      var isM = state.unit === \"kmh\";\r\n\r\n      var fallM = (v * v) \/ (2 * G);\r\n      var brakeM = (v * v) \/ (2 * 0.7 * G);\r\n      var decelG = (v * v) \/ (2 * c.crush * G) \/ G;\r\n      var risk = Math.max(0.001, c.risk(mph));\r\n\r\n      animateNum(q('[data-cpv=\"stat-g\"]'), prev.g, decelG, function (n) { return Math.round(n) + \"g\"; });\r\n      var fallVal = isM ? fallM : fallM * 3.28084;\r\n      animateNum(q('[data-cpv=\"stat-fall\"]'), prev.fall, fallVal, function (n) {\r\n        return isM ? (Math.round(n * 10) \/ 10) + \" m\" : Math.round(n) + \" ft\";\r\n      });\r\n      q('[data-cpv=\"stat-fall-lbl\"]').textContent = \"Equivalent to falling from \" + storyText(fallM);\r\n      var stopVal = isM ? brakeM : brakeM * 3.28084;\r\n      animateNum(q('[data-cpv=\"stat-stop\"]'), prev.stop, stopVal, function (n) {\r\n        return Math.round(n) + (isM ? \" m\" : \" ft\");\r\n      });\r\n      var riskEl = q('[data-cpv=\"stat-risk\"]');\r\n      animateNum(riskEl, prev.risk, risk * 100, function (n) { return Math.round(n) + \"%\"; });\r\n      riskEl.className = \"num \" + (risk > 0.5 ? \"risk-high\" : (risk > 0.2 ? \"risk-mid\" : \"\"));\r\n\r\n      prev = { g: decelG, fall: fallVal, stop: stopVal, risk: risk * 100 };\r\n\r\n      q('[data-cpv=\"heading\"]').textContent = c.label;\r\n      q('[data-cpv=\"diagram\"]').innerHTML = DIAGRAMS[state.crash]();\r\n      q('[data-cpv=\"narrative\"]').textContent = c.narrative(mph, fmtSpeed);\r\n\r\n      var list = q('[data-cpv=\"injury-list\"]');\r\n      list.innerHTML = \"\";\r\n      c.injuries.forEach(function (item) {\r\n        var li = document.createElement(\"li\");\r\n        var name = document.createElement(\"span\");\r\n        name.textContent = item.t;\r\n        var zone = document.createElement(\"span\");\r\n        zone.className = \"zone\";\r\n        zone.textContent = item.zl;\r\n        li.appendChild(name); li.appendChild(zone);\r\n        li.addEventListener(\"mouseenter\", function () { highlightZones(item.z, true); });\r\n        li.addEventListener(\"mouseleave\", function () { highlightZones(item.z, false); });\r\n        list.appendChild(li);\r\n      });\r\n\r\n      var sf = speedFactor();\r\n      root.querySelectorAll(\".cpv-zone\").forEach(function (el) {\r\n        var w = c.zones[el.dataset.zone] || 0;\r\n        if (w > 0) {\r\n          var t = w * (0.35 + 0.65 * sf);\r\n          var col = sevColor(t);\r\n          el.style.fill = col;\r\n          el.style.fillOpacity = (0.55 + 0.35 * t).toFixed(2);\r\n          el.style.filter = t >= 0.7 ? \"url(#\" + glowId + \") drop-shadow(0 0 5px \" + col + \")\" : \"none\";\r\n        } else {\r\n          el.style.fill = \"transparent\";\r\n          el.style.filter = \"none\";\r\n        }\r\n      });\r\n\r\n      speedNum.textContent = isM ? Math.round(mph * 1.60934) : Math.round(mph);\r\n      speedUnit.textContent = isM ? \"km\/h\" : \"mph\";\r\n    }\r\n\r\n    \/* tooltip *\/\r\n    var tip = q('[data-cpv=\"tip\"]');\r\n    var panel = q(\".cpv-body-panel\");\r\n    function showTip(zone, evt) {\r\n      var c = CRASH[state.crash];\r\n      var w = c.zones[zone] || 0;\r\n      var t = w * (0.35 + 0.65 * speedFactor());\r\n      var sev = w > 0 ? sevLabel(t) : [\"Low involvement in this crash type\", \"#9A9A9A\"];\r\n      var items = c.injuries.filter(function (i) { return i.z.indexOf(zone) > -1; });\r\n      var html = '<div class=\"t-zone\">' + ZONE_LABELS[zone] + '<\/div>' +\r\n        '<div class=\"t-sev\" style=\"color:' + sev[1] + '\">' + sev[0] + '<\/div>';\r\n      if (items.length) {\r\n        html += '<ul>' + items.map(function (i) { return '<li>' + i.t + '<\/li>'; }).join(\"\") + '<\/ul>';\r\n      } else if (w > 0) {\r\n        html += '<ul><li>Elevated injury risk in this crash type<\/li><\/ul>';\r\n      }\r\n      tip.innerHTML = html;\r\n      tip.style.display = \"block\";\r\n      var r = panel.getBoundingClientRect();\r\n      var x = evt.clientX - r.left + 14, y = evt.clientY - r.top + 10;\r\n      if (x + 240 > r.width) x = r.width - 240;\r\n      if (x < 4) x = 4;\r\n      tip.style.left = x + \"px\";\r\n      tip.style.top = y + \"px\";\r\n      var th = tip.offsetHeight;\r\n      if (y + th > r.height - 4) y = Math.max(4, (evt.clientY - r.top) - th - 14);\r\n      tip.style.top = y + \"px\";\r\n    }\r\n    root.querySelectorAll(\".cpv-zone\").forEach(function (el) {\r\n      el.addEventListener(\"pointermove\", function (e) { showTip(el.dataset.zone, e); });\r\n      el.addEventListener(\"pointerleave\", function () { tip.style.display = \"none\"; });\r\n      el.addEventListener(\"click\", function (e) { showTip(el.dataset.zone, e); e.stopPropagation(); });\r\n    });\r\n    document.addEventListener(\"click\", function () { tip.style.display = \"none\"; });\r\n\r\n    \/* events *\/\r\n    slider.addEventListener(\"input\", function () { state.mph = parseInt(slider.value, 10); render(); });\r\n    root.querySelectorAll(\".cpv-crash-btn\").forEach(function (btn) {\r\n      btn.addEventListener(\"click\", function () {\r\n        root.querySelectorAll(\".cpv-crash-btn\").forEach(function (b) { b.setAttribute(\"aria-pressed\", \"false\"); });\r\n        btn.setAttribute(\"aria-pressed\", \"true\");\r\n        state.crash = btn.dataset.crash;\r\n        render();\r\n      });\r\n    });\r\n    root.querySelectorAll(\".cpv-unit-btn\").forEach(function (btn) {\r\n      btn.addEventListener(\"click\", function () {\r\n        root.querySelectorAll(\".cpv-unit-btn\").forEach(function (b) { b.setAttribute(\"aria-pressed\", \"false\"); });\r\n        btn.setAttribute(\"aria-pressed\", \"true\");\r\n        state.unit = btn.dataset.unit;\r\n        render();\r\n      });\r\n    });\r\n\r\n    render();\r\n  }\r\n\r\n  function boot() {\r\n    document.querySelectorAll(\".cpv-app\").forEach(initApp);\r\n\r\n    \/* content block scene slots: fill with the matching diagram unless a photo is present *\/\r\n    document.querySelectorAll(\".cpv-row-media[data-scene]\").forEach(function (el) {\r\n      if (el.dataset.cpvFilled) return;\r\n      el.dataset.cpvFilled = \"1\";\r\n      var img = el.querySelector(\"img[src]\");\r\n      if ((!img || !img.getAttribute(\"src\")) && DIAGRAMS[el.dataset.scene]) {\r\n        el.innerHTML = DIAGRAMS[el.dataset.scene]();\r\n      }\r\n    });\r\n\r\n    \/* content block copy buttons *\/\r\n    document.querySelectorAll(\".cpv-copy\").forEach(function (btn) {\r\n      if (btn.dataset.cpvBound) return;\r\n      btn.dataset.cpvBound = \"1\";\r\n      btn.addEventListener(\"click\", function () {\r\n        var ta = btn.parentElement ? btn.parentElement.querySelector(\"textarea\") : null;\r\n        if (!ta) return;\r\n        ta.select();\r\n        var done = function () {\r\n          var t = btn.textContent;\r\n          btn.textContent = \"Copied\";\r\n          setTimeout(function () { btn.textContent = t; }, 1600);\r\n        };\r\n        if (navigator.clipboard && navigator.clipboard.writeText) {\r\n          navigator.clipboard.writeText(ta.value).then(done, function () { document.execCommand(\"copy\"); done(); });\r\n        } else {\r\n          document.execCommand(\"copy\"); done();\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  \/* boot at every safe moment; the per-element guards make repeats free.\r\n     window.jcaCpvBoot lets themes\/builders re-run it after injecting content. *\/\r\n  window.jcaCpvBoot = boot;\r\n  if (document.readyState !== \"loading\") boot();\r\n  document.addEventListener(\"DOMContentLoaded\", boot);\r\n  window.addEventListener(\"load\", boot);\r\n})();\r\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Interactive Safety Tool Car Crash Injuries by Speed: What a Collision Does to the Human Body Choose a collision type and set the impact speed. The figure shows where car crash injuries concentrate on the body; the panel shows the physics behind them. Hover or tap any body zone for detail. Rear End Head On [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2550,"comment_status":"open","ping_status":"open","sticky":false,"template":"page-templates\/full-width.php","format":"standard","meta":{"_seopress_titles_title":"Free Tool Shows How Car Crash Injuries Change With Speed","_seopress_titles_desc":"J. Alexander Law Firm releases the Crash Injury Visualizer, a free tool showing how injuries change with impact speed across five collision types.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"_gspb_post_css":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-2539","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/posts\/2539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/comments?post=2539"}],"version-history":[{"count":7,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/posts\/2539\/revisions"}],"predecessor-version":[{"id":2551,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/posts\/2539\/revisions\/2551"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/media\/2550"}],"wp:attachment":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/media?parent=2539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/categories?post=2539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/tags?post=2539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}