{"id":1684,"date":"2026-06-11T17:27:53","date_gmt":"2026-06-11T17:27:53","guid":{"rendered":"https:\/\/severeinjurylawyers.com\/?page_id=1684"},"modified":"2026-06-11T21:37:09","modified_gmt":"2026-06-11T21:37:09","slug":"los-cruces-mas-peligrosos-de-texas","status":"publish","type":"page","link":"https:\/\/severeinjurylawyers.com\/es\/most-dangerous-intersections-in-texas\/","title":{"rendered":"Las 50 intersecciones m\u00e1s peligrosas de Texas"},"content":{"rendered":"\n<!-- J. Alexander Law :: Texas Dangerous Intersections Map :: paste as ONE Gutenberg Custom HTML block -->\n<style data-no-optimize=\"1\" data-no-minify=\"1\">\n@import url(\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@600;700;800&family=Source+Sans+3:wght@400;600&family=Playfair+Display:ital,wght@1,400;1,500&family=JetBrains+Mono:wght@500;600;700&display=swap\");\n.jalex-txmap{\n  --bg:#000000;\n  --bg-2:#0c0c0c;\n  --panel:#141414;\n  --secondary:#212121;\n  --rule:#232323;\n  --rule-2:#2c2c2c;\n  --text:#ffffff;\n  --text-2:#cfd2d6;\n  --muted:#8a8f96;\n  --gold:#F3B937;\n  --gold-deep:#d99e1c;\n  --heading:\"Montserrat\",system-ui,sans-serif;\n  --body:\"Source Sans 3\",system-ui,sans-serif;\n  --serif:\"Playfair Display\",Georgia,serif;\n  --mono:\"JetBrains Mono\",ui-monospace,monospace;\n  --radius:3px;\n}.jalex-txmap *{margin:0;padding:0;box-sizing:border-box}.jalex-txmap{\n  background:\n    linear-gradient(rgba(0,0,0,.5), rgba(0,0,0,.5)),\n    radial-gradient(120% 60% at 50% 0%, rgba(243,185,55,.06), transparent 55%),\n    url(\"https:\/\/severeinjurylawyers.com\/wp-content\/uploads\/2026\/06\/car-accident-j-alex-texas-pi-scaled.webp\") center top \/ cover no-repeat;\n  background-attachment:fixed,fixed,fixed;\n  background-color:var(--bg);color:var(--text);\n  font-family:var(--body);font-size:16px;line-height:1.55;\n  -webkit-font-smoothing:antialiased;overflow-x:clip;\n}.jalex-txmap .wrap{max-width:1280px;margin:0 auto;padding:0 clamp(20px,4vw,64px)}.jalex-txmap ::selection{background:var(--gold);color:#000}.jalex-txmap \/* ---------- header ---------- *\/\nheader{padding:clamp(56px,7vw,96px) 0 10px}.jalex-txmap .eyebrow{\n  font-family:var(--mono);font-size:11px;font-weight:500;\n  letter-spacing:.22em;text-transform:uppercase;color:var(--gold);\n  display:inline-flex;align-items:center;gap:12px;\n}.jalex-txmap .eyebrow .num{color:var(--muted)}.jalex-txmap h1{\n  font-family:var(--heading);font-weight:700;letter-spacing:-.03em;\n  font-size:clamp(32px,4.2vw,56px);line-height:1.04;margin:20px 0 16px;max-width:880px;\n}.jalex-txmap h1 .it{font-family:var(--serif);font-style:italic;font-weight:500;letter-spacing:-.02em;color:var(--gold)}.jalex-txmap .sub{color:var(--text-2);max-width:560px;font-size:17px;line-height:1.65}.jalex-txmap .stats{display:flex;margin-top:36px;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;background:var(--bg-2)}.jalex-txmap .stat{flex:1;padding:18px 22px;border-right:1px solid var(--rule)}.jalex-txmap .stat:last-child{border-right:0}.jalex-txmap .stat b{\n  font-family:var(--heading);font-weight:800;font-size:clamp(20px,2.4vw,30px);\n  color:var(--gold);display:block;letter-spacing:-.01em;font-variant-numeric:tabular-nums;\n}.jalex-txmap .stat span{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:500}.jalex-txmap \/* ---------- layout ---------- *\/\n.grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,1fr);gap:30px;padding:26px 0 10px;align-items:start}.jalex-txmap \/* ---------- map ---------- *\/\n.mapbox{\n  position:relative;border:1px solid var(--rule);border-radius:var(--radius);\n  background:\n    radial-gradient(85% 70% at 50% 12%, rgba(243,185,55,.07), transparent 60%),\n    var(--bg-2);\n  overflow:hidden;\n  perspective:1300px;\n}.jalex-txmap .tilt{transform-style:preserve-3d;will-change:transform;transition:transform .12s linear}.jalex-txmap svg{width:100%;height:auto;display:block;cursor:crosshair}.jalex-txmap #zoomG{will-change:transform}.jalex-txmap .state-fill{fill:#101010}.jalex-txmap .terrain path{opacity:.4}.jalex-txmap .river{fill:none;stroke:#2c3940;stroke-width:2;stroke-linecap:round;opacity:.5;vector-effect:non-scaling-stroke}.jalex-txmap \/* glowing road network (layered strokes,.jalex-txmap no filters = cheap repaints) *\/\n.net path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.jalex-txmap .r-glow1{stroke:var(--gold);stroke-width:13;opacity:.07}.jalex-txmap .r-glow2{stroke:var(--gold);stroke-width:5;opacity:.2}.jalex-txmap .r-core{stroke:#fadc8e;stroke-width:1.3;opacity:.9}.jalex-txmap .r-pulse{stroke:#fff3cf;stroke-width:1.8;opacity:.9;stroke-dasharray:16 340;animation:flow linear infinite}@keyframes flow{from{stroke-dashoffset:356}to{stroke-dashoffset:0}}.jalex-txmap .blocks rect{fill:var(--gold)}.jalex-txmap .outline{fill:none;stroke:var(--gold);stroke-width:1.5;stroke-linejoin:round;opacity:.85;vector-effect:non-scaling-stroke}.jalex-txmap .outline-glow{fill:none;stroke:var(--gold);stroke-width:5;opacity:.07;vector-effect:non-scaling-stroke}.jalex-txmap .draw{stroke-dasharray:6400;stroke-dashoffset:6400}.jalex-txmap.animate .draw{animation:draw 2.6s cubic-bezier(.65,0,.2,1) .2s forwards}@keyframes draw{to{stroke-dashoffset:0}}.jalex-txmap .river.draw{stroke-dasharray:1800;stroke-dashoffset:1800}.jalex-txmap.animate .river.draw{animation:draw 2.6s ease .7s forwards}.jalex-txmap .fade{opacity:0}.jalex-txmap.animate .fade{animation:fadein 1.4s ease .35s forwards}@keyframes fadein{to{opacity:1}}.jalex-txmap \/* hero pin *\/\n.hero-pin{opacity:0;transform-origin:center;transform-box:fill-box}.jalex-txmap.animate .hero-pin{animation:pop .7s cubic-bezier(.34,1.56,.64,1) 2s forwards}@keyframes pop{0%{opacity:0;transform:scale(.3)}100%{opacity:1;transform:scale(1)}}.jalex-txmap .hero-pin .disc{fill:var(--gold);stroke:#000;stroke-width:1.5}.jalex-txmap .hero-pin text{fill:#000;font-family:var(--heading);font-weight:700}.jalex-txmap .hero-pin .glyph{stroke:#000;stroke-width:1.2;fill:none}.jalex-txmap \/* pins *\/\n.pin{cursor:pointer}.jalex-txmap .pin .core{fill:var(--gold);stroke:#000;stroke-width:1.2;transition:fill .2s ease,stroke .2s ease}.jalex-txmap .pin:hover .core,.jalex-txmap .pin.sel .core{fill:#000;stroke:var(--gold);stroke-width:1.8}.jalex-txmap .pin.dim{opacity:.1;pointer-events:none}.jalex-txmap.animate .pin{transform-origin:center;transform-box:fill-box;animation:pop2 .55s cubic-bezier(.34,1.56,.64,1) backwards}@keyframes pop2{0%{opacity:0;transform:scale(0)}70%{transform:scale(1.25)}100%{opacity:1;transform:scale(1)}}.jalex-txmap \/* HUD overlays *\/\n.hud{position:absolute;z-index:6;font-family:var(--mono);pointer-events:none}.jalex-txmap .hud-logo{top:18px;left:20px;font-size:10.5px;font-weight:700;letter-spacing:.34em;text-transform:uppercase;color:var(--text)}.jalex-txmap .hud-logo span{color:var(--gold)}.jalex-txmap .hud-regions{left:20px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:11px;pointer-events:auto}.jalex-txmap .hud-regions .chip{\n  display:flex;align-items:center;gap:9px;background:none;border:0;cursor:pointer;\n  font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.26em;\n  text-transform:uppercase;color:var(--muted);text-align:left;padding:0;\n  transition:color .25s ease;\n}.jalex-txmap .hud-regions .chip::before{\n  content:\"\";width:5px;height:5px;background:var(--gold);\n  opacity:0;transform:scale(.4);transition:all .25s ease;flex:none;\n}.jalex-txmap .hud-regions .chip:hover{color:var(--text-2)}.jalex-txmap .hud-regions .chip.on{color:var(--text)}.jalex-txmap .hud-regions .chip.on::before{opacity:1;transform:scale(1)}.jalex-txmap .hud-regions .chip:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.jalex-txmap .hud-zoom{bottom:18px;left:20px;font-size:9.5px;font-weight:600;letter-spacing:.22em;color:var(--muted)}.jalex-txmap .hud-zoom .zl{color:var(--text-2)}.jalex-txmap .hud-zoom .bar{height:2px;background:var(--gold);margin-top:7px;box-shadow:0 0 6px rgba(243,185,55,.6);transition:none}.jalex-txmap .hud-compass{bottom:14px;right:16px;width:92px;height:92px;color:var(--muted)}.jalex-txmap .hud-compass text{font-family:var(--mono);font-weight:600;fill:var(--muted)}.jalex-txmap .hud-compass .deg{fill:var(--text-2)}.jalex-txmap .hud-compass .needle{transition:none}.jalex-txmap \/* region cluster markers (Hubtown style) *\/\n.cluster{cursor:pointer;pointer-events:auto}.jalex-txmap .cluster .diamond{fill:none;stroke:var(--text);stroke-width:1;opacity:.9;vector-effect:non-scaling-stroke}.jalex-txmap .cluster .dot{fill:var(--text)}.jalex-txmap .cluster .tag-bg{fill:#0c0c0c;stroke:var(--rule-2);stroke-width:.8}.jalex-txmap .cluster .tag{fill:var(--gold);font-family:var(--mono);font-weight:600;letter-spacing:.16em;text-anchor:middle}.jalex-txmap .cluster .cname{fill:var(--text);font-family:var(--heading);font-weight:700;letter-spacing:.18em;text-anchor:middle}.jalex-txmap .cluster:hover .diamond{stroke:var(--gold)}.jalex-txmap .cluster:hover .cname{fill:var(--gold)}.jalex-txmap .cluster{opacity:0}.jalex-txmap.animate .cluster{animation:fadein 1s ease forwards}.jalex-txmap \/* legacy badge block (unused) *\/\n.badge{pointer-events:none;opacity:0}.jalex-txmap.animate .badge{animation:fadein 1s ease forwards}.jalex-txmap #badges{transition:opacity .3s ease}.jalex-txmap .badge .b-circle{fill:var(--gold);stroke:#000;stroke-width:1.4}.jalex-txmap .badge .b-num{fill:#000;font-family:var(--heading);font-weight:800;text-anchor:middle}.jalex-txmap .badge .b-label{fill:var(--gold);font-family:var(--mono);font-weight:600;letter-spacing:.18em;text-transform:uppercase}.jalex-txmap .badge .b-name{fill:var(--text);font-family:var(--serif);font-style:italic;font-weight:500}.jalex-txmap .badge .leader{stroke:var(--muted);stroke-width:.9;fill:none;opacity:.55;vector-effect:non-scaling-stroke}.jalex-txmap \/* route *\/\n#route{fill:none;stroke:var(--gold);stroke-width:1.5;stroke-dasharray:5 5;opacity:0;transition:opacity .3s ease;vector-effect:non-scaling-stroke}.jalex-txmap #route.show{opacity:.85;animation:trace .9s cubic-bezier(.5,0,.2,1) forwards}@keyframes trace{from{stroke-dashoffset:var(--len)}to{stroke-dashoffset:0}}.jalex-txmap \/* vignette *\/\n.vig{pointer-events:none}.jalex-txmap \/* tooltip *\/\n.tip{\n  position:fixed;z-index:50;pointer-events:none;width:262px;\n  background:var(--panel);border:1px solid var(--rule-2);border-radius:var(--radius);\n  padding:16px 18px;opacity:0;transform:translateY(8px);\n  transition:opacity .2s ease,transform .2s ease;\n  box-shadow:0 20px 50px rgba(0,0,0,.7);\n}.jalex-txmap .tip.show{opacity:1;transform:translateY(0)}.jalex-txmap .tip .rk{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--gold);text-transform:uppercase;font-weight:600}.jalex-txmap .tip h3{font-family:var(--heading);font-weight:700;font-size:15.5px;line-height:1.25;margin:7px 0 2px;letter-spacing:-.01em}.jalex-txmap .tip .city{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:14px;margin-bottom:12px}.jalex-txmap .tip .nums{display:flex;gap:20px;border-top:1px solid var(--rule);padding-top:11px}.jalex-txmap .tip .nums b{font-family:var(--heading);font-weight:800;font-size:21px;color:var(--gold);display:block;line-height:1}.jalex-txmap .tip .nums span{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.jalex-txmap \/* detail strip *\/\n.detail{\n  display:flex;align-items:center;gap:22px;flex-wrap:wrap;\n  border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-2);\n  margin-top:14px;padding:16px 20px;min-height:72px;\n  opacity:0;transition:opacity .35s ease;\n}.jalex-txmap .detail.show{opacity:1}.jalex-txmap .detail .d-rank{\n  width:46px;height:46px;border-radius:50%;background:var(--gold);\n  display:flex;align-items:center;justify-content:center;flex:none;\n  font-family:var(--heading);font-weight:800;font-size:15px;color:#000;\n}.jalex-txmap .detail .d-name{font-family:var(--heading);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-.01em}.jalex-txmap .detail .d-city{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:14px}.jalex-txmap .detail .d-stat b{font-family:var(--heading);font-weight:800;font-size:20px;color:var(--gold);display:block;line-height:1}.jalex-txmap .detail .d-stat span{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.jalex-txmap .detail .d-note{font-size:13px;color:var(--text-2);max-width:340px;line-height:1.5}.jalex-txmap \/* ---------- list ---------- *\/\n.list{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-2);display:flex;flex-direction:column;max-height:712px}.jalex-txmap .list-h{\n  padding:14px 18px;border-bottom:1px solid var(--rule);\n  font-family:var(--mono);font-size:10px;font-weight:600;\n  letter-spacing:.2em;text-transform:uppercase;color:var(--muted);\n  display:flex;justify-content:space-between;\n}.jalex-txmap .rows{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--rule-2) transparent}.jalex-txmap .row{\n  display:grid;grid-template-columns:46px 1fr auto;gap:12px;align-items:center;\n  padding:12px 18px;border-bottom:1px solid var(--rule);cursor:pointer;\n  transition:background .2s ease;\n}.jalex-txmap .row:hover{background:var(--panel)}.jalex-txmap .row.sel{background:var(--panel);box-shadow:inset 2px 0 0 var(--gold)}.jalex-txmap .row.hide{display:none}.jalex-txmap .row .num{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.08em;color:var(--gold)}.jalex-txmap .row .nm{font-weight:600;font-size:14px;line-height:1.3;color:var(--text)}.jalex-txmap .row .ct{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:13px}.jalex-txmap .row .cr{font-family:var(--heading);font-weight:800;font-size:16px;text-align:right;color:var(--text)}.jalex-txmap .row .cr span{display:block;font-family:var(--mono);font-weight:500;font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.jalex-txmap \/* ---------- embed + footer ---------- *\/\n.embed{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-2);padding:30px;margin:26px 0}.jalex-txmap .embed h2{font-family:var(--heading);font-weight:700;font-size:22px;letter-spacing:-.02em;margin-bottom:6px}.jalex-txmap .embed h2 .it{font-family:var(--serif);font-style:italic;font-weight:500;color:var(--gold)}.jalex-txmap .embed p{color:var(--text-2);font-size:14.5px;max-width:560px}.jalex-txmap .embed-row{display:flex;gap:12px;margin-top:18px;flex-wrap:wrap}.jalex-txmap .embed textarea{\n  flex:1;min-width:260px;background:var(--panel);color:var(--text-2);\n  border:1px solid var(--rule-2);border-radius:var(--radius);\n  font:11.5px\/1.55 var(--mono);padding:14px;resize:none;height:92px;\n}.jalex-txmap .btn{\n  font-family:var(--heading);font-weight:700;font-size:13px;letter-spacing:.02em;\n  background:var(--gold);color:#000;border:0;border-radius:var(--radius);\n  padding:0 24px;cursor:pointer;height:48px;align-self:center;\n  box-shadow:0 8px 24px -8px rgba(243,185,55,.5);\n  transition:background .2s ease,transform .2s ease,box-shadow .2s ease;\n}.jalex-txmap .btn:hover{background:var(--gold-deep);transform:translateY(-2px);box-shadow:0 12px 32px -8px rgba(243,185,55,.65)}.jalex-txmap .btn:focus-visible{outline:2px solid var(--text);outline-offset:3px}.jalex-txmap footer{border-top:1px solid var(--rule);padding:26px 0 44px;font-size:13px;color:var(--muted)}.jalex-txmap footer a{color:var(--gold);text-decoration:none;font-weight:600}.jalex-txmap footer a:hover{color:var(--gold-deep)}.jalex-txmap .cta{margin-top:10px;color:var(--text-2)}.jalex-txmap .disc{margin-top:10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.03em}@media (max-width:900px){.jalex-txmap{background-attachment:scroll,scroll,scroll}.jalex-txmap .grid{grid-template-columns:1fr}.jalex-txmap .list{max-height:400px}.jalex-txmap .stats{flex-wrap:wrap}.jalex-txmap .stat{flex:1 1 40%;border-bottom:1px solid var(--rule)}.jalex-txmap .tip{display:none}\n}@media (prefers-reduced-motion:reduce){.jalex-txmap *,.jalex-txmap *::before,.jalex-txmap *::after{animation-duration:.01ms !important;transition-duration:.01ms !important}.jalex-txmap .draw{stroke-dashoffset:0}.jalex-txmap .fade,.jalex-txmap .pin,.jalex-txmap .hero-pin,.jalex-txmap .badge,.jalex-txmap .cluster{opacity:1}.jalex-txmap #route.show{stroke-dashoffset:0}.jalex-txmap .tilt{transform:none !important}\n}\n.jalex-txmap header h1,.jalex-txmap header .sub,.jalex-txmap header .eyebrow{text-shadow:0 1px 3px rgba(0,0,0,.55),0 2px 14px rgba(0,0,0,.5)}\n\/* ---- theme-proof overrides (WP embed) ---- *\/\n.jalex-txmap h1,.jalex-txmap h2,.jalex-txmap h3{color:#fff !important}\n.jalex-txmap h1{font-family:\"Montserrat\",system-ui,sans-serif !important;font-weight:700 !important}\n.jalex-txmap h1 .it,.jalex-txmap .accent,.jalex-txmap h2 .it{color:#F3B937 !important;font-family:\"Playfair Display\",Georgia,serif !important;font-style:italic !important;font-weight:500 !important}\n.jalex-txmap .sub{color:#cfd2d6 !important}\n.jalex-txmap .eyebrow{color:#F3B937 !important}\n.jalex-txmap p{margin:0}\n.jalex-txmap a{text-decoration:none}\n<\/style>\n<div class=\"jalex-txmap\">\n<div class=\"wrap\">\n<header>\n  <span class=\"eyebrow\"><span class=\"num\">TX<\/span>TxDOT crash records &middot; Jan&ndash;Dec 2025<\/span>\n  <h1>The 50 most dangerous <br><span class=\"it\">intersections in Texas.<\/br><\/span><\/h1>\n  <p class=\"sub\">Texas recorded 617,930 crashes last year; one in four happened at an intersection. These are the fifty crossings where they piled up. Glide your mouse over the map; it zooms into your area on its own.<\/p>\n  <div class=\"stats\" aria-label=\"Statewide 2025 totals\">\n    <div class=\"stat\"><b data-count=\"617930\">0<\/b><span>Crashes statewide<\/span><\/div>\n    <div class=\"stat\"><b data-count=\"164063\">0<\/b><span>At intersections<\/span><\/div>\n    <div class=\"stat\"><b data-count=\"82846\">0<\/b><span>Intersections tracked<\/span><\/div>\n    <div class=\"stat\"><b data-count=\"77\">0<\/b><span>At the No. 1 crossing<\/span><\/div>\n  <\/div>\n<\/header>\n<div class=\"grid\">\n  <div>\n    <div class=\"mapbox\" id=\"mapbox\">\n      <div class=\"tilt\" id=\"tilt\">\n        <svg id=\"map\" viewBox=\"-10 -10 1020 966\" role=\"img\" aria-label=\"Map of Texas showing the 50 most crash-prone intersections of 2025\">\n          <defs>\n            <clipPath id=\"tx\"><path d=\"M368.3,0.0 L506.5,0.0 L506.5,172.8 L512.3,171.8 L529.4,188.9 L538.6,186.0 L562.8,186.9 L568.3,204.0 L583.7,203.1 L600.4,210.9 L615.4,209.9 L621.7,217.2 L631.3,208.9 L645.9,212.8 L652.2,222.6 L663.0,224.0 L668.9,236.2 L682.3,224.5 L700.2,231.4 L706.9,238.7 L715.7,235.3 L721.9,246.5 L741.1,226.5 L746.6,236.7 L763.3,236.7 L779.1,243.1 L785.0,250.9 L800.0,237.2 L816.3,232.8 L823.8,237.7 L841.8,228.9 L845.9,233.8 L865.6,234.3 L870.6,226.5 L890.2,235.3 L897.7,245.5 L926.9,255.3 L934.9,263.6 L949.9,259.2 L960.8,263.1 L960.8,310.4 L960.8,401.7 L977.5,421.2 L977.9,440.8 L998.7,476.9 L1000.0,495.9 L992.1,518.9 L984.6,528.1 L987.1,540.3 L981.6,549.6 L987.5,566.7 L969.5,598.4 L976.2,607.2 L963.7,607.7 L924.0,619.9 L909.8,613.1 L907.3,598.4 L897.3,608.7 L890.2,606.2 L886.4,618.9 L894.4,624.3 L895.6,640.9 L881.4,658.5 L858.5,680.4 L812.5,703.9 L807.9,700.0 L794.2,705.8 L793.7,700.4 L774.9,704.3 L766.2,693.1 L760.8,695.6 L780.8,718.5 L766.2,725.8 L752.4,721.4 L750.3,737.5 L733.2,754.1 L715.7,784.9 L704.4,817.1 L696.0,814.7 L693.9,826.4 L702.7,823.4 L698.5,846.9 L692.7,847.8 L692.3,861.0 L699.4,868.4 L701.5,895.2 L709.8,904.5 L711.9,921.6 L718.6,936.7 L695.2,946.0 L685.6,934.2 L667.6,929.9 L643.8,930.8 L623.4,916.2 L607.9,914.7 L596.2,903.0 L580.4,899.1 L569.5,887.9 L562.4,861.0 L548.6,844.9 L550.3,831.3 L544.1,816.6 L546.1,803.9 L536.5,789.8 L528.6,788.3 L515.7,775.6 L511.5,759.5 L500.2,744.9 L483.9,732.7 L476.0,705.8 L468.5,698.5 L458.5,677.0 L455.1,659.4 L445.5,646.7 L429.2,635.5 L425.5,627.7 L410.4,620.9 L398.7,601.4 L365.3,597.0 L345.3,597.9 L328.2,591.1 L324.4,600.4 L306.1,603.3 L292.3,621.9 L283.9,651.6 L279.3,652.1 L268.9,669.7 L256.4,670.2 L237.6,656.5 L190.4,634.5 L181.2,622.8 L162.8,611.6 L149.9,586.2 L149.1,563.3 L136.1,544.7 L133.2,528.6 L124.8,518.4 L95.2,503.2 L79.3,482.7 L66.4,475.4 L52.6,457.8 L33.4,448.6 L20.0,425.1 L8.8,420.3 L0.0,410.0 L2.1,401.2 L272.7,401.2 L272.7,311.9 L274.3,221.6 L274.7,0.0 L277.7,0.0 L368.3,0.0 Z\"\/><\/clipPath>\n            <radialGradient id=\"waterg\" cx=\"50%\" cy=\"50%\" r=\"50%\">\n              <stop offset=\"0%\" stop-color=\"#F3B937\" stop-opacity=\".55\"\/>\n              <stop offset=\"45%\" stop-color=\"#F3B937\" stop-opacity=\".20\"\/>\n              <stop offset=\"100%\" stop-color=\"#F3B937\" stop-opacity=\"0\"\/>\n            <\/radialGradient>\n            <radialGradient id=\"halog\" cx=\"50%\" cy=\"50%\" r=\"50%\">\n              <stop offset=\"0%\" stop-color=\"#ffe49a\" stop-opacity=\".30\"\/>\n              <stop offset=\"38%\" stop-color=\"#F3B937\" stop-opacity=\".13\"\/>\n              <stop offset=\"100%\" stop-color=\"#F3B937\" stop-opacity=\"0\"\/>\n            <\/radialGradient>\n            <radialGradient id=\"vigg\" cx=\"50%\" cy=\"46%\" r=\"70%\">\n              <stop offset=\"74%\" stop-color=\"#0c0c0c\" stop-opacity=\"0\"\/>\n              <stop offset=\"100%\" stop-color=\"#0c0c0c\" stop-opacity=\"1\"\/>\n            <\/radialGradient>\n          <\/defs>\n          <g id=\"zoomG\">\n            <path class=\"state-fill fade\" d=\"M368.3,0.0 L506.5,0.0 L506.5,172.8 L512.3,171.8 L529.4,188.9 L538.6,186.0 L562.8,186.9 L568.3,204.0 L583.7,203.1 L600.4,210.9 L615.4,209.9 L621.7,217.2 L631.3,208.9 L645.9,212.8 L652.2,222.6 L663.0,224.0 L668.9,236.2 L682.3,224.5 L700.2,231.4 L706.9,238.7 L715.7,235.3 L721.9,246.5 L741.1,226.5 L746.6,236.7 L763.3,236.7 L779.1,243.1 L785.0,250.9 L800.0,237.2 L816.3,232.8 L823.8,237.7 L841.8,228.9 L845.9,233.8 L865.6,234.3 L870.6,226.5 L890.2,235.3 L897.7,245.5 L926.9,255.3 L934.9,263.6 L949.9,259.2 L960.8,263.1 L960.8,310.4 L960.8,401.7 L977.5,421.2 L977.9,440.8 L998.7,476.9 L1000.0,495.9 L992.1,518.9 L984.6,528.1 L987.1,540.3 L981.6,549.6 L987.5,566.7 L969.5,598.4 L976.2,607.2 L963.7,607.7 L924.0,619.9 L909.8,613.1 L907.3,598.4 L897.3,608.7 L890.2,606.2 L886.4,618.9 L894.4,624.3 L895.6,640.9 L881.4,658.5 L858.5,680.4 L812.5,703.9 L807.9,700.0 L794.2,705.8 L793.7,700.4 L774.9,704.3 L766.2,693.1 L760.8,695.6 L780.8,718.5 L766.2,725.8 L752.4,721.4 L750.3,737.5 L733.2,754.1 L715.7,784.9 L704.4,817.1 L696.0,814.7 L693.9,826.4 L702.7,823.4 L698.5,846.9 L692.7,847.8 L692.3,861.0 L699.4,868.4 L701.5,895.2 L709.8,904.5 L711.9,921.6 L718.6,936.7 L695.2,946.0 L685.6,934.2 L667.6,929.9 L643.8,930.8 L623.4,916.2 L607.9,914.7 L596.2,903.0 L580.4,899.1 L569.5,887.9 L562.4,861.0 L548.6,844.9 L550.3,831.3 L544.1,816.6 L546.1,803.9 L536.5,789.8 L528.6,788.3 L515.7,775.6 L511.5,759.5 L500.2,744.9 L483.9,732.7 L476.0,705.8 L468.5,698.5 L458.5,677.0 L455.1,659.4 L445.5,646.7 L429.2,635.5 L425.5,627.7 L410.4,620.9 L398.7,601.4 L365.3,597.0 L345.3,597.9 L328.2,591.1 L324.4,600.4 L306.1,603.3 L292.3,621.9 L283.9,651.6 L279.3,652.1 L268.9,669.7 L256.4,670.2 L237.6,656.5 L190.4,634.5 L181.2,622.8 L162.8,611.6 L149.9,586.2 L149.1,563.3 L136.1,544.7 L133.2,528.6 L124.8,518.4 L95.2,503.2 L79.3,482.7 L66.4,475.4 L52.6,457.8 L33.4,448.6 L20.0,425.1 L8.8,420.3 L0.0,410.0 L2.1,401.2 L272.7,401.2 L272.7,311.9 L274.3,221.6 L274.7,0.0 L277.7,0.0 L368.3,0.0 Z\"\/>\n            <g clip-path=\"url(#tx)\">\n              <g class=\"terrain fade\">\n                <path fill=\"#1c1812\" d=\"M820,280 C920,260 1000,330 990,430 C980,530 910,580 850,560 C790,540 775,470 785,410 C793,350 780,300 820,280 Z\"\/>\n                <path fill=\"#181510\" d=\"M580,480 C650,455 715,500 706,565 C697,635 625,665 565,640 C512,618 522,505 580,480 Z\"\/>\n                <path fill=\"#1c1812\" d=\"M250,55 C355,40 445,85 437,160 C429,235 335,245 265,222 C200,200 185,75 250,55 Z\"\/>\n                <path fill=\"#181510\" d=\"M110,380 C195,355 275,405 258,478 C243,545 160,560 110,528 C68,498 50,400 110,380 Z\"\/>\n                <path fill=\"#1c1812\" d=\"M710,730 C790,705 865,732 873,792 C880,848 795,885 735,860 C682,838 658,752 710,730 Z\"\/>\n                <path fill=\"#181510\" d=\"M840,620 C900,605 950,640 945,690 C940,740 880,755 840,735 C805,717 795,635 840,620 Z\"\/>\n              <\/g>\n              <g id=\"blocks\" class=\"blocks fade\"><\/g>\n              <g class=\"rivers\">\n                <path class=\"river draw\" d=\"M705,272 C716,296 742,310 750,334 C760,366 744,396 770,432 C798,472 826,520 850,562 C868,594 888,616 902,634\"\/>\n                <path class=\"river draw\" d=\"M524,212 C556,262 596,294 610,346 C624,398 660,442 684,494 C710,552 802,598 856,646\"\/>\n                <path class=\"river draw\" d=\"M386,386 C456,438 552,498 636,536 C662,548 700,572 742,616 C762,638 786,654 798,668\"\/>\n                <path class=\"river draw\" d=\"M568,646 C600,688 656,742 700,774\"\/>\n              <\/g>\n              <g id=\"net\" class=\"net fade\"><\/g>\n            <\/g>\n            <path class=\"outline-glow fade\" d=\"M368.3,0.0 L506.5,0.0 L506.5,172.8 L512.3,171.8 L529.4,188.9 L538.6,186.0 L562.8,186.9 L568.3,204.0 L583.7,203.1 L600.4,210.9 L615.4,209.9 L621.7,217.2 L631.3,208.9 L645.9,212.8 L652.2,222.6 L663.0,224.0 L668.9,236.2 L682.3,224.5 L700.2,231.4 L706.9,238.7 L715.7,235.3 L721.9,246.5 L741.1,226.5 L746.6,236.7 L763.3,236.7 L779.1,243.1 L785.0,250.9 L800.0,237.2 L816.3,232.8 L823.8,237.7 L841.8,228.9 L845.9,233.8 L865.6,234.3 L870.6,226.5 L890.2,235.3 L897.7,245.5 L926.9,255.3 L934.9,263.6 L949.9,259.2 L960.8,263.1 L960.8,310.4 L960.8,401.7 L977.5,421.2 L977.9,440.8 L998.7,476.9 L1000.0,495.9 L992.1,518.9 L984.6,528.1 L987.1,540.3 L981.6,549.6 L987.5,566.7 L969.5,598.4 L976.2,607.2 L963.7,607.7 L924.0,619.9 L909.8,613.1 L907.3,598.4 L897.3,608.7 L890.2,606.2 L886.4,618.9 L894.4,624.3 L895.6,640.9 L881.4,658.5 L858.5,680.4 L812.5,703.9 L807.9,700.0 L794.2,705.8 L793.7,700.4 L774.9,704.3 L766.2,693.1 L760.8,695.6 L780.8,718.5 L766.2,725.8 L752.4,721.4 L750.3,737.5 L733.2,754.1 L715.7,784.9 L704.4,817.1 L696.0,814.7 L693.9,826.4 L702.7,823.4 L698.5,846.9 L692.7,847.8 L692.3,861.0 L699.4,868.4 L701.5,895.2 L709.8,904.5 L711.9,921.6 L718.6,936.7 L695.2,946.0 L685.6,934.2 L667.6,929.9 L643.8,930.8 L623.4,916.2 L607.9,914.7 L596.2,903.0 L580.4,899.1 L569.5,887.9 L562.4,861.0 L548.6,844.9 L550.3,831.3 L544.1,816.6 L546.1,803.9 L536.5,789.8 L528.6,788.3 L515.7,775.6 L511.5,759.5 L500.2,744.9 L483.9,732.7 L476.0,705.8 L468.5,698.5 L458.5,677.0 L455.1,659.4 L445.5,646.7 L429.2,635.5 L425.5,627.7 L410.4,620.9 L398.7,601.4 L365.3,597.0 L345.3,597.9 L328.2,591.1 L324.4,600.4 L306.1,603.3 L292.3,621.9 L283.9,651.6 L279.3,652.1 L268.9,669.7 L256.4,670.2 L237.6,656.5 L190.4,634.5 L181.2,622.8 L162.8,611.6 L149.9,586.2 L149.1,563.3 L136.1,544.7 L133.2,528.6 L124.8,518.4 L95.2,503.2 L79.3,482.7 L66.4,475.4 L52.6,457.8 L33.4,448.6 L20.0,425.1 L8.8,420.3 L0.0,410.0 L2.1,401.2 L272.7,401.2 L272.7,311.9 L274.3,221.6 L274.7,0.0 L277.7,0.0 L368.3,0.0 Z\"\/>\n            <path class=\"outline draw\" d=\"M368.3,0.0 L506.5,0.0 L506.5,172.8 L512.3,171.8 L529.4,188.9 L538.6,186.0 L562.8,186.9 L568.3,204.0 L583.7,203.1 L600.4,210.9 L615.4,209.9 L621.7,217.2 L631.3,208.9 L645.9,212.8 L652.2,222.6 L663.0,224.0 L668.9,236.2 L682.3,224.5 L700.2,231.4 L706.9,238.7 L715.7,235.3 L721.9,246.5 L741.1,226.5 L746.6,236.7 L763.3,236.7 L779.1,243.1 L785.0,250.9 L800.0,237.2 L816.3,232.8 L823.8,237.7 L841.8,228.9 L845.9,233.8 L865.6,234.3 L870.6,226.5 L890.2,235.3 L897.7,245.5 L926.9,255.3 L934.9,263.6 L949.9,259.2 L960.8,263.1 L960.8,310.4 L960.8,401.7 L977.5,421.2 L977.9,440.8 L998.7,476.9 L1000.0,495.9 L992.1,518.9 L984.6,528.1 L987.1,540.3 L981.6,549.6 L987.5,566.7 L969.5,598.4 L976.2,607.2 L963.7,607.7 L924.0,619.9 L909.8,613.1 L907.3,598.4 L897.3,608.7 L890.2,606.2 L886.4,618.9 L894.4,624.3 L895.6,640.9 L881.4,658.5 L858.5,680.4 L812.5,703.9 L807.9,700.0 L794.2,705.8 L793.7,700.4 L774.9,704.3 L766.2,693.1 L760.8,695.6 L780.8,718.5 L766.2,725.8 L752.4,721.4 L750.3,737.5 L733.2,754.1 L715.7,784.9 L704.4,817.1 L696.0,814.7 L693.9,826.4 L702.7,823.4 L698.5,846.9 L692.7,847.8 L692.3,861.0 L699.4,868.4 L701.5,895.2 L709.8,904.5 L711.9,921.6 L718.6,936.7 L695.2,946.0 L685.6,934.2 L667.6,929.9 L643.8,930.8 L623.4,916.2 L607.9,914.7 L596.2,903.0 L580.4,899.1 L569.5,887.9 L562.4,861.0 L548.6,844.9 L550.3,831.3 L544.1,816.6 L546.1,803.9 L536.5,789.8 L528.6,788.3 L515.7,775.6 L511.5,759.5 L500.2,744.9 L483.9,732.7 L476.0,705.8 L468.5,698.5 L458.5,677.0 L455.1,659.4 L445.5,646.7 L429.2,635.5 L425.5,627.7 L410.4,620.9 L398.7,601.4 L365.3,597.0 L345.3,597.9 L328.2,591.1 L324.4,600.4 L306.1,603.3 L292.3,621.9 L283.9,651.6 L279.3,652.1 L268.9,669.7 L256.4,670.2 L237.6,656.5 L190.4,634.5 L181.2,622.8 L162.8,611.6 L149.9,586.2 L149.1,563.3 L136.1,544.7 L133.2,528.6 L124.8,518.4 L95.2,503.2 L79.3,482.7 L66.4,475.4 L52.6,457.8 L33.4,448.6 L20.0,425.1 L8.8,420.3 L0.0,410.0 L2.1,401.2 L272.7,401.2 L272.7,311.9 L274.3,221.6 L274.7,0.0 L277.7,0.0 L368.3,0.0 Z\"\/>\n            <path id=\"route\" d=\"\"\/>\n            <g id=\"badges\"><\/g>\n            <g id=\"heroScale\"><g id=\"hero\" class=\"hero-pin\"><\/g><\/g>\n            <g id=\"pins\"><\/g>\n          <\/g>\n          <rect class=\"vig\" x=\"-10\" y=\"-10\" width=\"1020\" height=\"966\" fill=\"url(#vigg)\"\/>\n        <\/svg>\n      <\/div>\n      <div class=\"hud hud-logo\">J. ALEXANDER <span>LAW<\/span><\/div>\n      <div class=\"hud hud-regions\" role=\"group\" aria-label=\"Filter by region\">\n        <button class=\"chip on\" data-g=\"all\">Texas<\/button>\n        <button class=\"chip\" data-g=\"dfw\">Dallas&ndash;Fort Worth<\/button>\n        <button class=\"chip\" data-g=\"hou\">Houston<\/button>\n        <button class=\"chip\" data-g=\"sat\">San Antonio<\/button>\n        <button class=\"chip\" data-g=\"rest\">Rest of State<\/button>\n      <\/div>\n      <div class=\"hud hud-zoom\">ZOOM <span class=\"zl\" id=\"hudZl\">1.00X<\/span>&ensp;<span id=\"hudMi\">100 MI<\/span><div class=\"bar\" id=\"hudBar\" style=\"width:110px\"><\/div><\/div>\n      <svg class=\"hud hud-compass\" viewBox=\"0 0 92 92\" aria-hidden=\"true\">\n        <circle cx=\"46\" cy=\"46\" r=\"30\" fill=\"none\" stroke=\"#2c2c2c\" stroke-width=\"1\"\/>\n        <g class=\"needle\" id=\"needle\">\n          <path d=\"M46 20 L51 41 L46 38 L41 41 Z\" fill=\"#F3B937\"\/>\n          <path d=\"M46 72 L51 51 L46 54 L41 51 Z\" fill=\"#3a3a3a\"\/>\n        <\/g>\n        <text x=\"46\" y=\"12\" font-size=\"9\" text-anchor=\"middle\">N<\/text>\n        <text x=\"46\" y=\"89\" font-size=\"8\" text-anchor=\"middle\">S<\/text>\n        <text x=\"5\" y=\"49\" font-size=\"8\" text-anchor=\"middle\">W<\/text>\n        <text x=\"87\" y=\"49\" font-size=\"8\" text-anchor=\"middle\">E<\/text>\n        <text class=\"deg\" x=\"46\" y=\"49\" font-size=\"8.5\" text-anchor=\"middle\" id=\"hudDeg\">000&#176;<\/text>\n      <\/svg>\n    <\/div>\n    <div class=\"detail\" id=\"detail\" aria-live=\"polite\"><\/div>\n  <\/div>\n  <aside class=\"list\" aria-label=\"Ranked list of intersections\">\n    <div class=\"list-h\"><span>Rank &middot; Intersection<\/span><span>Crashes<\/span><\/div>\n    <div class=\"rows\" id=\"rows\"><\/div>\n  <\/aside>\n<\/div>\n<div class=\"embed\">\n  <h2>Embed <span class=\"it\">this map.<\/span><\/h2>\n  <p>Free to republish on your site. The attribution link is part of the embed code; keep it intact when you publish.<\/p>\n  <div class=\"embed-row\">\n    <textarea id=\"embedcode\" readonly aria-label=\"Embed code\"><\/textarea>\n    <button class=\"btn\" id=\"copybtn\">Copy embed code<\/button>\n  <\/div>\n<\/div>\n<footer>\n  <div>Data: Texas Department of Transportation, Crash Records Information System (CRIS) Public Extract, Jan 1 to Dec 31, 2025, crashes flagged at an intersection. Analysis: <a href=\"https:\/\/severeinjurylawyers.com\/\" rel=\"author\">J. Alexander Law Firm<\/a>.<\/div>\n  <div class=\"cta\">Hurt at one of these intersections? <a href=\"tel:+14698077480\">Call (469) 807-7480<\/a> for a free consultation. No fee unless we win.<\/div>\n  <div class=\"disc\">This map is for general information only and is not legal advice. Crash counts reflect reportable crashes recorded by TxDOT and may be revised by the state. Past results do not guarantee a similar outcome.<\/div>\n<\/footer>\n<\/div>\n<div class=\"tip\" id=\"tip\" role=\"tooltip\"><\/div>\n<\/div><!-- \/.jalex-txmap -->\n<script data-no-optimize=\"1\" data-no-minify=\"1\" data-cfasync=\"false\" nowprocket>\nconst DATA=[{\"r\":1,\"c\":\"Temple\",\"n\":\"General Bruce Dr & H K Dodgen Loop (South)\",\"x\":77,\"i\":39,\"lat\":31.090307,\"lng\":-97.386489,\"g\":\"rest\",\"note\":\"I-35 frontage meets TX-36 loop frontage; the two roads cross twice; south crossing is the worst in the state\"},{\"r\":2,\"c\":\"McKinney\",\"n\":\"Central Expressway & University Dr (US-380)\",\"x\":58,\"i\":45,\"lat\":33.216819,\"lng\":-96.63576,\"g\":\"dfw\",\"note\":\"US-75 frontage roads; overhead freeway blocks signal visibility at sunrise\/sunset; DFW market\"},{\"r\":3,\"c\":\"Round Rock\",\"n\":\"AW Grimes Blvd & Louis Henna Blvd\",\"x\":53,\"i\":26,\"lat\":30.485069,\"lng\":-97.649834,\"g\":\"rest\",\"note\":\"TX-45 frontage; extremely wide double crossing under freeway\"},{\"r\":4,\"c\":\"Beaumont\",\"n\":\"Eastex Fwy & Lucas Dr\",\"x\":49,\"i\":14,\"lat\":30.117387,\"lng\":-94.144894,\"g\":\"rest\",\"note\":\"US-69 frontage; narrow lanes, trap turn lanes\"},{\"r\":5,\"c\":\"Manvel\",\"n\":\"Morris Ave & S TX-288\",\"x\":46,\"i\":5,\"lat\":29.4843,\"lng\":-95.4066,\"g\":\"hou\",\"note\":\"26.2 percent of all crashes in Manvel happen here\"},{\"r\":6,\"c\":\"Corpus Christi\",\"n\":\"Padre Island Dr & Staples St\",\"x\":46,\"i\":9,\"lat\":27.70792,\"lng\":-97.369898,\"g\":\"rest\",\"note\":\"\"},{\"r\":7,\"c\":\"Houston\",\"n\":\"Bissonnet St & West Sam Houston Pkwy S\",\"x\":44,\"i\":29,\"lat\":29.674517,\"lng\":-95.56088,\"g\":\"hou\",\"note\":\"Beltway 8; perennial worst-in-Houston since at least 2012-2015 studies\"},{\"r\":8,\"c\":\"Houston\",\"n\":\"Crossview Dr & Richmond Ave\",\"x\":43,\"i\":20,\"lat\":29.728993,\"lng\":-95.519582,\"g\":\"hou\",\"note\":\"\"},{\"r\":9,\"c\":\"Plano\",\"n\":\"Coit Rd & Spring Creek Pkwy\",\"x\":43,\"i\":39,\"lat\":33.056714,\"lng\":-96.770373,\"g\":\"dfw\",\"note\":\"DFW market; very high injury-to-crash ratio\"},{\"r\":10,\"c\":\"El Paso\",\"n\":\"Desert Blvd & Mesa St\",\"x\":42,\"i\":21,\"lat\":31.839319,\"lng\":-106.569131,\"g\":\"rest\",\"note\":\"\"},{\"r\":11,\"c\":\"El Paso\",\"n\":\"Artcraft Rd & Desert Blvd\",\"x\":41,\"i\":13,\"lat\":31.883172,\"lng\":-106.581218,\"g\":\"rest\",\"note\":\"\"},{\"r\":12,\"c\":\"Waco\",\"n\":\"Jack Kultgen Expy & Valley Mills Dr\",\"x\":41,\"i\":36,\"lat\":31.524141,\"lng\":-97.134766,\"g\":\"rest\",\"note\":\"I-35 frontage\"},{\"r\":13,\"c\":\"Houston\",\"n\":\"Fondren Rd & Westpark Dr\",\"x\":38,\"i\":18,\"lat\":29.721491,\"lng\":-95.520413,\"g\":\"hou\",\"note\":\"\"},{\"r\":14,\"c\":\"Live Oak\",\"n\":\"Lookout Rd & Toepperwein Rd\",\"x\":37,\"i\":12,\"lat\":29.56992,\"lng\":-98.356435,\"g\":\"sat\",\"note\":\"San Antonio metro\"},{\"r\":15,\"c\":\"El Paso\",\"n\":\"Edgemere Blvd & Rich Beem Blvd\",\"x\":36,\"i\":4,\"lat\":31.796803,\"lng\":-106.246353,\"g\":\"rest\",\"note\":\"\"},{\"r\":16,\"c\":\"Katy\",\"n\":\"Cane Island Rd & Parkside Dr\",\"x\":36,\"i\":0,\"lat\":29.793,\"lng\":-95.84,\"g\":\"hou\",\"note\":\"One of only 4 TX intersections with 15+ crashes and zero injuries\"},{\"r\":17,\"c\":\"Dallas\",\"n\":\"Dallas Pkwy & Frankford Rd\",\"x\":35,\"i\":37,\"lat\":32.997476,\"lng\":-96.831146,\"g\":\"dfw\",\"note\":\"HOME MARKET; more injuries than crashes; highest-crash intersection inside Dallas city limits in 2025\"},{\"r\":18,\"c\":\"Waco\",\"n\":\"18th St & Jack Kultgen Expy\",\"x\":35,\"i\":39,\"lat\":31.535057,\"lng\":-97.130355,\"g\":\"rest\",\"note\":\"Most injury-prone on the list; more than 1 injury per crash on average\"},{\"r\":19,\"c\":\"Houston\",\"n\":\"Bissonnet St & Sam Houston Pkwy\",\"x\":34,\"i\":32,\"lat\":29.674517,\"lng\":-95.56088,\"g\":\"hou\",\"note\":\"\"},{\"r\":20,\"c\":\"Houston\",\"n\":\"Hardy Rd & North Sam Houston Pkwy E\",\"x\":34,\"i\":18,\"lat\":29.938456,\"lng\":-95.383082,\"g\":\"hou\",\"note\":\"\"},{\"r\":21,\"c\":\"Houston\",\"n\":\"South Sam Houston Pkwy E & Telephone Rd\",\"x\":33,\"i\":25,\"lat\":29.60059,\"lng\":-95.286257,\"g\":\"hou\",\"note\":\"\"},{\"r\":22,\"c\":\"Leon Valley\",\"n\":\"Bandera Rd & Wurzbach Rd\",\"x\":33,\"i\":22,\"lat\":29.484538,\"lng\":-98.604507,\"g\":\"sat\",\"note\":\"San Antonio metro; 20.6 percent of all Leon Valley crashes\"},{\"r\":23,\"c\":\"Houston\",\"n\":\"Shepherd Dr & Victory Dr\",\"x\":33,\"i\":27,\"lat\":29.870382,\"lng\":-95.412489,\"g\":\"hou\",\"note\":\"\"},{\"r\":24,\"c\":\"Round Rock\",\"n\":\"IH-35 South Frontage & Louis Henna Blvd\",\"x\":32,\"i\":12,\"lat\":30.479809,\"lng\":-97.673241,\"g\":\"rest\",\"note\":\"\"},{\"r\":25,\"c\":\"Lubbock\",\"n\":\"Loop 289 & Slide Rd\",\"x\":32,\"i\":29,\"lat\":33.596598,\"lng\":-101.923695,\"g\":\"rest\",\"note\":\"\"},{\"r\":26,\"c\":\"Lubbock\",\"n\":\"Loop 289 & University Ave\",\"x\":31,\"i\":26,\"lat\":33.52882,\"lng\":-101.870503,\"g\":\"rest\",\"note\":\"\"},{\"r\":27,\"c\":\"Houston\",\"n\":\"Macgregor Way & South Fwy\",\"x\":31,\"i\":12,\"lat\":29.716,\"lng\":-95.3745,\"g\":\"hou\",\"note\":\"\"},{\"r\":28,\"c\":\"Carrollton\",\"n\":\"Old Denton Rd & Trinity Mills Rd\",\"x\":30,\"i\":11,\"lat\":32.982577,\"lng\":-96.909999,\"g\":\"dfw\",\"note\":\"HOME MARKET; J. Alexander has a Carrollton service page\"},{\"r\":29,\"c\":\"Houston\",\"n\":\"Fannin St & Pease St\",\"x\":30,\"i\":20,\"lat\":29.751202,\"lng\":-95.368199,\"g\":\"hou\",\"note\":\"\"},{\"r\":30,\"c\":\"Lubbock\",\"n\":\"Loop 289 & Quaker Ave\",\"x\":30,\"i\":29,\"lat\":33.530514,\"lng\":-101.907137,\"g\":\"rest\",\"note\":\"\"},{\"r\":31,\"c\":\"Beaumont\",\"n\":\"College St & IH-10\",\"x\":30,\"i\":13,\"lat\":30.068291,\"lng\":-94.135083,\"g\":\"rest\",\"note\":\"\"},{\"r\":32,\"c\":\"San Antonio\",\"n\":\"Culebra Rd & Zarzamora St\",\"x\":30,\"i\":15,\"lat\":29.445145,\"lng\":-98.524954,\"g\":\"sat\",\"note\":\"HOME MARKET (San Antonio office)\"},{\"r\":33,\"c\":\"Webster\",\"n\":\"IH-45 E Frontage & NASA Pkwy\",\"x\":30,\"i\":13,\"lat\":29.5408,\"lng\":-95.1474,\"g\":\"hou\",\"note\":\"\"},{\"r\":34,\"c\":\"Houston\",\"n\":\"Greens Rd & John F Kennedy Blvd\",\"x\":29,\"i\":12,\"lat\":29.951539,\"lng\":-95.33188,\"g\":\"hou\",\"note\":\"\"},{\"r\":35,\"c\":\"Dallas\",\"n\":\"Market Center Blvd & Stemmons Fwy\",\"x\":29,\"i\":21,\"lat\":32.801286,\"lng\":-96.826814,\"g\":\"dfw\",\"note\":\"HOME MARKET; I-35E frontage near Design District\"},{\"r\":36,\"c\":\"Abilene\",\"n\":\"Danville Dr & Southwest Dr\",\"x\":29,\"i\":18,\"lat\":32.413062,\"lng\":-99.77435,\"g\":\"rest\",\"note\":\"\"},{\"r\":37,\"c\":\"Round Rock\",\"n\":\"Greenlawn Blvd & Louis Henna Blvd\",\"x\":29,\"i\":12,\"lat\":30.483236,\"lng\":-97.66065,\"g\":\"rest\",\"note\":\"\"},{\"r\":38,\"c\":\"Lubbock\",\"n\":\"Loop 289 & Marsha Sharp Fwy\",\"x\":28,\"i\":28,\"lat\":33.554172,\"lng\":-101.939201,\"g\":\"rest\",\"note\":\"Loop 289 has 4 entries in the top 50; 265 total crashes at its intersections in 2025\"},{\"r\":39,\"c\":\"Plano\",\"n\":\"Dallas Pkwy & Legacy Dr\",\"x\":28,\"i\":16,\"lat\":33.078081,\"lng\":-96.825106,\"g\":\"dfw\",\"note\":\"DFW market\"},{\"r\":40,\"c\":\"San Antonio\",\"n\":\"Brooklyn Ave & Euclid Ave\",\"x\":28,\"i\":12,\"lat\":29.439464,\"lng\":-98.490426,\"g\":\"sat\",\"note\":\"HOME MARKET\"},{\"r\":41,\"c\":\"Pearland\",\"n\":\"Broadway St & South Fwy\",\"x\":28,\"i\":10,\"lat\":29.555999,\"lng\":-95.38714,\"g\":\"hou\",\"note\":\"\"},{\"r\":42,\"c\":\"San Antonio\",\"n\":\"Hunt Ln & Potranco Rd\",\"x\":27,\"i\":13,\"lat\":29.441218,\"lng\":-98.668508,\"g\":\"sat\",\"note\":\"HOME MARKET\"},{\"r\":43,\"c\":\"Lufkin\",\"n\":\"Frank Ave & John Redditt Dr\",\"x\":27,\"i\":9,\"lat\":31.333089,\"lng\":-94.75941,\"g\":\"rest\",\"note\":\"\"},{\"r\":44,\"c\":\"Dallas\",\"n\":\"Hillcrest Rd & Lyndon B Johnson Fwy\",\"x\":27,\"i\":16,\"lat\":32.925249,\"lng\":-96.786157,\"g\":\"dfw\",\"note\":\"HOME MARKET; I-635 frontage\"},{\"r\":45,\"c\":\"Corpus Christi\",\"n\":\"Padre Island Dr & Rodd Field Rd\",\"x\":27,\"i\":2,\"lat\":27.693761,\"lng\":-97.341283,\"g\":\"rest\",\"note\":\"\"},{\"r\":46,\"c\":\"Houston\",\"n\":\"Main St & Post Oak Rd\",\"x\":27,\"i\":15,\"lat\":29.64671,\"lng\":-95.46354,\"g\":\"hou\",\"note\":\"\"},{\"r\":47,\"c\":\"Killeen\",\"n\":\"Clear Creek Rd & Stan Schlueter Loop\",\"x\":27,\"i\":19,\"lat\":31.092173,\"lng\":-97.807681,\"g\":\"rest\",\"note\":\"\"},{\"r\":48,\"c\":\"Harlingen\",\"n\":\"Colonel Bill Card Jr & Harrison Ave\",\"x\":26,\"i\":18,\"lat\":26.1907,\"lng\":-97.7245,\"g\":\"rest\",\"note\":\"\"},{\"r\":49,\"c\":\"Houston\",\"n\":\"Chartres St & Congress St\",\"x\":26,\"i\":6,\"lat\":29.757068,\"lng\":-95.352136,\"g\":\"hou\",\"note\":\"\"},{\"r\":50,\"c\":\"Harlingen\",\"n\":\"US-77 & Wilson Rd\",\"x\":26,\"i\":15,\"lat\":26.211428,\"lng\":-97.721468,\"g\":\"rest\",\"note\":\"\"}];\n\/* ---- projection ---- *\/\nconst MINLON=-106.643603, MAXLON=-93.526331, MINLAT=25.887551, MAXLAT=36.501861;\nconst KX=Math.cos(((MINLAT+MAXLAT)\/2)*Math.PI\/180);\nconst W=1000, SPANX=(MAXLON-MINLON)*KX, SPANY=(MAXLAT-MINLAT), H=W*SPANY\/SPANX;\nconst px=(lng,lat)=>[(lng-MINLON)*KX\/SPANX*W,(MAXLAT-lat)\/SPANY*H];\nconst NS='http:\/\/www.w3.org\/2000\/svg';\nconst svg=document.getElementById('map');\nconst zoomG=document.getElementById('zoomG');\nconst pinsG=document.getElementById('pins');\nconst badgesG=document.getElementById('badges');\nconst heroG=document.getElementById('hero');\nconst route=document.getElementById('route');\nconst rowsEl=document.getElementById('rows');\nconst tip=document.getElementById('tip');\nconst detail=document.getElementById('detail');\nconst mapbox=document.getElementById('mapbox');\nconst tilt=document.getElementById('tilt');\nconst rScale=c=>3.5+(c-26)\/(77-26)*6.5;\nlet selected=null;\nconst reduced=matchMedia('(prefers-reduced-motion: reduce)').matches;\n\/* ---- hero pin: Dallas office ---- *\/\nconst HQ=px(-96.7665,32.9217);\nheroG.innerHTML=`\n  <circle class=\"disc\" cx=\"${HQ[0]}\" cy=\"${HQ[1]}\" r=\"24\"\/>\n  <g class=\"glyph\" transform=\"translate(${HQ[0]-5.5},${HQ[1]-13.5})\">\n    <rect x=\"0\" y=\"3\" width=\"11\" height=\"13\"\/>\n    <line x1=\"2.7\" y1=\"6\" x2=\"8.3\" y2=\"6\"\/><line x1=\"2.7\" y1=\"9\" x2=\"8.3\" y2=\"9\"\/>\n    <line x1=\"2.7\" y1=\"12\" x2=\"8.3\" y2=\"12\"\/><line x1=\"5.5\" y1=\"0\" x2=\"5.5\" y2=\"3\"\/>\n  <\/g>\n  <text x=\"${HQ[0]}\" y=\"${HQ[1]+14.5}\" font-size=\"7.6\" text-anchor=\"middle\">J. ALEXANDER<\/text>`;\n\/* ---- glowing highway network ---- *\/\nconst ROADS=[ \/\/ [lng,lat] waypoints, p=1 -> gets a light pulse\n {p:1,w:[[-99.5,27.5],[-98.5,29.42],[-97.74,30.27],[-97.13,31.55],[-97.05,32.4],[-97.0,32.95],[-97.13,33.62]]},                 \/\/ I-35\n {p:1,w:[[-106.45,31.76],[-104.0,31.05],[-102.88,30.89],[-101.2,30.7],[-99.77,30.49],[-98.55,29.46],[-96.9,29.6],[-95.36,29.76],[-93.74,30.09]]}, \/\/ I-10\n {p:1,w:[[-103.5,31.42],[-102.1,31.99],[-100.9,32.25],[-99.73,32.45],[-98.4,32.6],[-97.32,32.74],[-96.78,32.78],[-95.3,32.55],[-94.04,32.5]]},   \/\/ I-20\n {p:1,w:[[-94.8,29.3],[-95.36,29.76],[-95.55,30.72],[-96.1,31.4],[-96.47,32.09],[-96.8,32.78]]},                                 \/\/ I-45\n {p:0,w:[[-103.04,35.2],[-101.83,35.19],[-100.25,35.22]]},                                                                       \/\/ I-40\n {p:0,w:[[-101.85,33.58],[-101.83,35.19]]},                                                                                      \/\/ I-27\n {p:1,w:[[-101.83,35.19],[-100.2,34.43],[-98.5,33.91],[-97.32,32.78]]},                                                          \/\/ US-287\n {p:1,w:[[-98.5,29.42],[-98.0,28.6],[-97.4,27.8]]},                                                                              \/\/ I-37\n {p:0,w:[[-97.4,27.8],[-97.7,26.19],[-97.5,25.92]]},                                                                             \/\/ US-77\n {p:0,w:[[-99.5,27.5],[-98.8,26.6],[-98.23,26.2],[-97.7,26.19]]},                                                                \/\/ US-83 valley\n {p:1,w:[[-95.36,29.76],[-94.73,31.34],[-94.4,32.4],[-94.04,33.43]]},                                                            \/\/ US-59\/I-69\n {p:1,w:[[-96.8,32.78],[-95.7,33.0],[-94.05,33.43]]},                                                                            \/\/ I-30\n {p:0,w:[[-100.44,31.46],[-101.48,32.25],[-101.85,33.58]]},                                                                      \/\/ US-87\n {p:0,w:[[-98.5,33.91],[-98.5,32.9],[-98.52,29.46]]},                                                                            \/\/ US-281\n {p:0,w:[[-95.36,29.76],[-96.0,30.6],[-96.33,30.63],[-96.7,31.55],[-97.13,31.55]]},                                              \/\/ TX-6\/US-77 Waco\n];\nfunction smooth(pts){ \/\/ Catmull-Rom -> cubic bezier\n  if(pts.length<3)return 'M'+pts.map(p=>p.join(',')).join(' L');\n  let d='M'+pts[0].join(',');\n  for(let i=0;i<pts.length-1;i++){\n    const p0=pts[Math.max(0,i-1)],p1=pts[i],p2=pts[i+1],p3=pts[Math.min(pts.length-1,i+2)];\n    const c1=[p1[0]+(p2[0]-p0[0])\/6,p1[1]+(p2[1]-p0[1])\/6];\n    const c2=[p2[0]-(p3[0]-p1[0])\/6,p2[1]-(p3[1]-p1[1])\/6];\n    d+=`C${c1[0].toFixed(1)},${c1[1].toFixed(1)} ${c2[0].toFixed(1)},${c2[1].toFixed(1)} ${p2[0].toFixed(1)},${p2[1].toFixed(1)}`;\n  }\n  return d;\n}\nconst netG=document.getElementById('net');\nconst nfrag=document.createDocumentFragment();\nROADS.forEach((r,i)=>{\n  const pts=r.w.map(([lng,lat])=>px(lng,lat));\n  const d=smooth(pts);\n  ['r-glow1','r-glow2','r-core'].forEach(cls=>{\n    const p=document.createElementNS(NS,'path');\n    p.setAttribute('class',cls);p.setAttribute('d',d);\n    nfrag.appendChild(p);\n  });\n  if(r.p?!reduced:false){\n    const p=document.createElementNS(NS,'path');\n    p.setAttribute('class','r-pulse');p.setAttribute('d',d);\n    p.style.animationDuration=(7+(i*2.7)%6)+'s';\n    p.style.animationDelay=(-(i*1.9)%7)+'s';\n    nfrag.appendChild(p);\n  }\n});\nnetG.appendChild(nfrag);\n\/* water core + pixel swarm: fluid glow at the cursor blending into big organic pixels *\/\nconst blocksG=document.getElementById('blocks');\nlet seed=7;const rnd=()=>(seed=(seed*16807)%2147483647)\/2147483647;\nconst bfrag=document.createDocumentFragment();\n\/* master halo: one gradient spanning the whole light radius *\/\nconst HALO=document.createElementNS(NS,'ellipse');\nHALO.setAttribute('fill','url(#halog)');\nHALO.setAttribute('opacity','0');\nbfrag.appendChild(HALO);\n\/* 3 overlapping gradient blobs = the hot center of the same gradient *\/\nconst CORES=[];\nfor(let i=0;i<3;i++){\n  const c=document.createElementNS(NS,'circle');\n  c.setAttribute('fill','url(#waterg)');\n  c.setAttribute('opacity','0');\n  CORES.push({el:c,r0:72+i*16,ph:rnd()*Math.PI*2,f1:.5+rnd()*.5,f2:.4+rnd()*.6,drift:16+i*8,o:[.9,.6,.45][i]});\n  bfrag.appendChild(c);\n}\n\/* full-map pixel grid: the screen itself is tiles, lit radially from the cursor *\/\nconst TILES=[];\nconst TSZ=36, TGAP=3;\nfor(let ty=0;ty<946;ty+=TSZ){\n  for(let tx=0;tx<1000;tx+=TSZ){\n    const r=document.createElementNS(NS,'rect');\n    r.setAttribute('x',tx+TGAP\/2);r.setAttribute('y',ty+TGAP\/2);\n    r.setAttribute('width',TSZ-TGAP);r.setAttribute('height',TSZ-TGAP);\n    r.setAttribute('rx',2);\n    r.setAttribute('fill','#F3B937');\n    r.setAttribute('opacity','0');\n    TILES.push({el:r,cx:tx+TSZ\/2,cy:ty+TSZ\/2,base:.55+rnd()*.45,ph:rnd()*Math.PI*2,last:0,tier:0});\n    bfrag.appendChild(r);\n  }\n}\nblocksG.appendChild(bfrag);\n\/* ---- pins + list ---- *\/\nconst frag=document.createDocumentFragment();\nconst rfrag=document.createDocumentFragment();\nDATA.forEach((d,idx)=>{\n  const [x,y]=px(d.lng,d.lat);\n  d.px=x; d.py=y;\n  const g=document.createElementNS(NS,'g');\n  g.setAttribute('class','pin');\n  g.dataset.r=d.r; g.dataset.g=d.g;\n  g.style.animationDelay=(2.3+idx*0.04)+'s';\n  g.innerHTML=`<circle cx=\"${x}\" cy=\"${y}\" r=\"14\" fill=\"transparent\"><\/circle>\n    <circle class=\"core\" cx=\"${x}\" cy=\"${y}\" r=\"${rScale(d.x)}\"><\/circle>`;\n  g.addEventListener('mouseenter',e=>showTip(d,e));\n  g.addEventListener('mousemove',moveTip);\n  g.addEventListener('mouseleave',hideTip);\n  g.addEventListener('click',()=>select(d.r,true));\n  frag.appendChild(g);\n  const row=document.createElement('div');\n  row.className='row'; row.dataset.r=d.r; row.dataset.g=d.g;\n  row.setAttribute('tabindex','0');\n  row.innerHTML=`<div class=\"num\">No.${d.r}<\/div>\n    <div><div class=\"nm\">${d.n}<\/div><div class=\"ct\">${d.c}, Texas<\/div><\/div>\n    <div class=\"cr\">${d.x}<span>${d.i} injured<\/span><\/div>`;\n  row.addEventListener('click',()=>select(d.r,false));\n  row.addEventListener('keydown',e=>{if(e.key==='Enter')select(d.r,false)});\n  rfrag.appendChild(row);\n});\npinsG.appendChild(frag);\nrowsEl.appendChild(rfrag);\n\/* ---- region cluster markers ---- *\/\nconst CLUSTERS=[\n {g:'dfw',name:'DALLAS\\u2013FORT WORTH',lng:-98.35,lat:33.65},\n {g:'hou',name:'HOUSTON',lng:-94.45,lat:30.65},\n {g:'sat',name:'SAN ANTONIO',lng:-99.85,lat:28.55},\n];\nCLUSTERS.forEach((c,i)=>{\n  const [x,y]=px(c.lng,c.lat);\n  const n=DATA.filter(d=>d.g===c.g).length;\n  const tag=`${n} INTERSECTIONS`;\n  const tw=tag.length*5.4+16;\n  const g=document.createElementNS(NS,'g');\n  g.setAttribute('class','cluster');\n  g.style.animationDelay=(3+i*.3)+'s';\n  g.innerHTML=`\n    <rect class=\"diamond\" x=\"${x-9}\" y=\"${y-9}\" width=\"18\" height=\"18\" transform=\"rotate(45 ${x} ${y})\"\/>\n    <rect class=\"dot\" x=\"${x-2.2}\" y=\"${y-2.2}\" width=\"4.4\" height=\"4.4\"\/>\n    <rect class=\"tag-bg\" x=\"${x-tw\/2}\" y=\"${y+15}\" width=\"${tw}\" height=\"13\" rx=\"1.5\"\/>\n    <text class=\"tag\" x=\"${x}\" y=\"${y+24.4}\" font-size=\"7.4\">${tag}<\/text>\n    <text class=\"cname\" x=\"${x}\" y=\"${y+43}\" font-size=\"11.5\">${c.name}<\/text>`;\n  g.addEventListener('click',()=>{\n    document.querySelector(`.hud-regions .chip[data-g=\"${c.g}\"]`).click();\n  });\n  badgesG.appendChild(g);\n});\n\/* ---- selection: route trace + detail strip ---- *\/\nfunction select(rank,fromMap){\n  selected = selected===rank ? null : rank;\n  document.querySelectorAll('.pin').forEach(p=>p.classList.toggle('sel',+p.dataset.r===selected));\n  document.querySelectorAll('.row').forEach(r=>{\n    const on=+r.dataset.r===selected;\n    r.classList.toggle('sel',on);\n    if(on?fromMap:false)r.scrollIntoView({block:'nearest',behavior:'smooth'});\n  });\n  if(selected==null){route.classList.remove('show');detail.classList.remove('show');return}\n  const d=DATA.find(v=>v.r===selected);\n  const mx=(HQ[0]+d.px)\/2, my=(HQ[1]+d.py)\/2;\n  const dx=d.px-HQ[0], dy=d.py-HQ[1], len=Math.hypot(dx,dy)||1;\n  const cx=mx-dy\/len*Math.min(len*.22,70), cy=my+dx\/len*Math.min(len*.22,70);\n  route.setAttribute('d',`M${HQ[0]},${HQ[1]} Q${cx},${cy} ${d.px},${d.py}`);\n  const L=route.getTotalLength();\n  route.style.setProperty('--len',L);\n  route.classList.remove('show'); void route.getBoundingClientRect();\n  route.style.strokeDasharray=`${L}`;\n  route.classList.add('show');\n  setTimeout(()=>{route.style.strokeDasharray='5 5'},950);\n  detail.innerHTML=`\n    <div class=\"d-rank\">${d.r<10?'0'+d.r:d.r}<\/div>\n    <div><div class=\"d-name\">${d.n}<\/div><div class=\"d-city\">${d.c}, Texas<\/div><\/div>\n    <div class=\"d-stat\"><b>${d.x}<\/b><span>Crashes<\/span><\/div>\n    <div class=\"d-stat\"><b>${d.i}<\/b><span>Injuries<\/span><\/div>\n    <div class=\"d-stat\"><b>${(d.i\/d.x).toFixed(2)}<\/b><span>Inj \/ crash<\/span><\/div>\n    ${d.note?`<div class=\"d-note\">${d.note}<\/div>`:''}`;\n  detail.classList.add('show');\n}\n\/* ---- tooltip ---- *\/\nfunction showTip(d,e){\n  tip.innerHTML=`<div class=\"rk\">No. ${d.r} in Texas<\/div>\n    <h3>${d.n}<\/h3><div class=\"city\">${d.c}, Texas<\/div>\n    <div class=\"nums\">\n      <div><b>${d.x}<\/b><span>Crashes<\/span><\/div>\n      <div><b>${d.i}<\/b><span>Injuries<\/span><\/div>\n      <div><b>${(d.i\/d.x).toFixed(2)}<\/b><span>Inj \/ crash<\/span><\/div>\n    <\/div>`;\n  tip.classList.add('show'); moveTip(e);\n}\nfunction moveTip(e){\n  const m=16,w=tip.offsetWidth,h=tip.offsetHeight;\n  let x=e.clientX+m,y=e.clientY+m;\n  if(x+w>innerWidth-10)x=e.clientX-w-m;\n  if(y+h>innerHeight-10)y=e.clientY-h-m;\n  tip.style.left=x+'px';tip.style.top=y+'px';\n}\nfunction hideTip(){tip.classList.remove('show')}\n\/* ---- filters ---- *\/\nlet activeG='all';\ndocument.querySelectorAll('.chip').forEach(ch=>{\n  ch.addEventListener('click',()=>{\n    document.querySelectorAll('.chip').forEach(c=>c.classList.remove('on'));\n    ch.classList.add('on');\n    activeG=ch.dataset.g;\n    document.querySelectorAll('.pin').forEach(p=>p.classList.toggle('dim',activeG!=='all'?p.dataset.g!==activeG:false));\n    document.querySelectorAll('.row').forEach(r=>r.classList.toggle('hide',activeG!=='all'?r.dataset.g!==activeG:false));\n    syncBadges();\n  });\n});\n\/* ---- 3D FOLLOW + AUTO-MAGNIFY (no scroll, no drag) ---- *\/\nconst heroScale=document.getElementById('heroScale');\nlet PINELS=null;\nconst Z={s:1,cx:510,cy:473};\nconst T={s:1,cx:510,cy:473,rx:0,ry:0};\nconst ZLEVEL=1.5, EASE=0.065;\nlet cRX=0,cRY=0,raf=null,glow=0,glowT=0;\nconst interactive=reduced?false:matchMedia('(pointer:fine)').matches;\nfunction clampT(t,s,span){const min=-(s-1)*span;return Math.min(0,Math.max(min,t))}\nfunction applyView(){\n  const tx=clampT(Z.cx*(1-Z.s),Z.s,1020);\n  const ty=clampT(Z.cy*(1-Z.s),Z.s,966);\n  zoomG.setAttribute('transform',`translate(${tx} ${ty}) scale(${Z.s})`);\n  const kh=1\/Z.s;\n  heroScale.setAttribute('transform',`translate(${HQ[0]*(1-kh)},${HQ[1]*(1-kh)}) scale(${kh})`);\n  if(!PINELS)PINELS=[...document.querySelectorAll('.pin')].map(el=>{\n    const c=el.querySelector('.core');\n    return {el,x:+c.getAttribute('cx'),y:+c.getAttribute('cy')};\n  });\n  const kp=1\/Math.sqrt(Z.s);\n  PINELS.forEach(p=>p.el.setAttribute('transform',\n    Z.s<1.02?'':`translate(${p.x*(1-kp)},${p.y*(1-kp)}) scale(${kp})`));\n  syncBadges();\n  \/* HUD: zoom readout + scale bar *\/\n  if(hudZl){\n    hudZl.textContent=Z.s.toFixed(2)+'X';\n    const pxPerMi=(mapbox.clientWidth\/1020)*(1020\/770)*Z.s; \/* TX ~770mi wide *\/\n    let mi=200;for(const m of [200,100,50,25]){if(m*pxPerMi<=170){mi=m;break}}\n    hudMi.textContent=mi+' MI';\n    hudBar.style.width=(mi*pxPerMi).toFixed(0)+'px';\n  }\n}\nconst hudZl=document.getElementById('hudZl'),hudMi=document.getElementById('hudMi'),\n      hudBar=document.getElementById('hudBar'),needle=document.getElementById('needle'),\n      hudDeg=document.getElementById('hudDeg');\nconst SPOT_R=340, INNER=80, BLEND=110;\nconst FILLS=['#F3B937','#f9cf6b','#ffe49a'];   \/\/ outer -> center\nfunction updateBlocks(){\n  const time=performance.now()\/1000;\n  if(glow<.004){\n    HALO.setAttribute('opacity','0');\n    for(const c of CORES)c.el.setAttribute('opacity','0');\n    for(const t of TILES){if(t.last>0){t.el.setAttribute('opacity','0');t.last=0}}\n    return;\n  }\n  HALO.setAttribute('cx',Z.cx.toFixed(1));\n  HALO.setAttribute('cy',Z.cy.toFixed(1));\n  HALO.setAttribute('rx',(SPOT_R*(1.04+0.06*Math.sin(time*.5))).toFixed(0));\n  HALO.setAttribute('ry',(SPOT_R*(0.90+0.06*Math.sin(time*.5+2.2))).toFixed(0));\n  HALO.setAttribute('transform',`rotate(${(time*9)%360} ${Z.cx.toFixed(1)} ${Z.cy.toFixed(1)})`);\n  HALO.setAttribute('opacity',glow.toFixed(3));\n  for(const c of CORES){\n    const r=c.r0+Math.sin(time*c.f1+c.ph)*19;\n    c.el.setAttribute('cx',(Z.cx+Math.cos(time*c.f2+c.ph)*c.drift).toFixed(1));\n    c.el.setAttribute('cy',(Z.cy+Math.sin(time*c.f1*1.3+c.ph)*c.drift).toFixed(1));\n    c.el.setAttribute('r',r.toFixed(1));\n    c.el.setAttribute('opacity',(c.o*glow).toFixed(3));\n  }\n  for(const p of TILES){\n    const dx=p.cx-Z.cx, dy=p.cy-Z.cy;\n    const ang=Math.atan2(dy,dx);\n    \/* angular noise warps the light field into a living, non-circular shape *\/\n    const warp=1+.16*Math.sin(3*ang+time*.5)+.11*Math.sin(5*ang-time*.33+2.1)+.07*Math.sin(8*ang+time*.21+4.2);\n    const d=Math.sqrt(dx*dx+dy*dy)\/warp;\n    const t=Math.max(0,1-d\/SPOT_R);\n    let o=0;\n    if(Math.min(t,d-INNER)>0){\n      \/* smooth-step blend from the organic center into the pixel grid *\/\n      let b=Math.min(1,(d-INNER)\/BLEND);\n      b=b*b*(3-2*b);\n      const shimmer=.86+.14*Math.sin(time*1.1+p.ph);\n      o=glow*p.base*shimmer*(t*t)*.55*b;\n    }\n    if(Math.max(o,p.last)<.004)continue;             \/\/ skip dark tiles\n    p.el.setAttribute('opacity',o.toFixed(3));\n    p.last=o;\n    \/* continuous color blend center->rim, locked to the same warped gradient *\/\n    const k=Math.min(1,t*1.25);\n    if(Math.abs(k-(p.k||0))>0.05){\n      p.k=k;\n      p.el.setAttribute('fill',`rgb(${Math.round(243+12*k)},${Math.round(185+43*k)},${Math.round(55+99*k)})`);\n    }\n  }\n}\nfunction frame(){\n  Z.s+=(T.s-Z.s)*EASE;\n  Z.cx+=(T.cx-Z.cx)*EASE;\n  Z.cy+=(T.cy-Z.cy)*EASE;\n  cRX+=(T.rx-cRX)*.08;\n  cRY+=(T.ry-cRY)*.08;\n  glow+=(glowT-glow)*.09;\n  updateBlocks();\n  tilt.style.transform=`rotateX(${cRX}deg) rotateY(${cRY}deg) translateZ(0)`;\n  if(needle){\n    const hdg=cRY*3.2;\n    needle.setAttribute('transform',`rotate(${hdg.toFixed(2)} 46 46)`);\n    hudDeg.textContent=String(Math.round((hdg+360)%360)%360).padStart(3,'0')+'\\u00b0';\n  }\n  applyView();\n  const settled=[Math.abs(T.s-Z.s)<.004,Math.abs(T.cx-Z.cx)<.3,Math.abs(T.cy-Z.cy)<.3,\n    Math.abs(T.rx-cRX)<.02,Math.abs(T.ry-cRY)<.02,glowT===0,glow<.004].every(Boolean);\n  if(settled){\n    Z.s=T.s;Z.cx=T.cx;Z.cy=T.cy;cRX=T.rx;cRY=T.ry;glow=glowT;updateBlocks();\n    tilt.style.transform=`rotateX(${cRX}deg) rotateY(${cRY}deg) translateZ(0)`;\n    applyView();raf=null;\n  }else{raf=requestAnimationFrame(frame)}\n}\nfunction kick(){if(!raf)raf=requestAnimationFrame(frame)}\nfunction svgPoint(e){\n  const pt=svg.createSVGPoint();\n  pt.x=e.clientX; pt.y=e.clientY;\n  return pt.matrixTransform(svg.getScreenCTM().inverse());\n}\nif(interactive){\n  mapbox.addEventListener('mousemove',e=>{\n    \/* magnify target: the base-map point under the cursor *\/\n    const inv=svgPoint(e);\n    \/* invert current view transform to get base coords *\/\n    const tx=clampT(Z.cx*(1-Z.s),Z.s,1020), ty=clampT(Z.cy*(1-Z.s),Z.s,966);\n    T.cx=(inv.x-tx)\/Z.s;\n    T.cy=(inv.y-ty)\/Z.s;\n    T.s=ZLEVEL;\n    \/* 3d tilt target *\/\n    const r=mapbox.getBoundingClientRect();\n    const nx=(e.clientX-r.left)\/r.width, ny=(e.clientY-r.top)\/r.height;\n    T.rx=(0.5-ny)*4; T.ry=(nx-0.5)*5;\n    glowT=1;\n    kick();\n  });\n  mapbox.addEventListener('mouseleave',()=>{T.s=1;T.rx=0;T.ry=0;glowT=0;kick()});\n}\nfunction syncBadges(){\n  badgesG.style.opacity = Z.s<1.22 ? 1 : 0;\n  badgesG.style.transition='opacity .3s ease';\n  badgesG.style.pointerEvents = Z.s<1.22 ? 'auto' : 'none';\n}\n\/* ---- count-up ---- *\/\nfunction countUp(el){\n  const end=+el.dataset.count,dur=1600,t0=performance.now();\n  const ease=t=>1-Math.pow(1-t,3);\n  (function tick(t){\n    const p=Math.min((t-t0)\/dur,1);\n    el.textContent=Math.round(end*ease(p)).toLocaleString('en-US');\n    if(p<1)requestAnimationFrame(tick);\n  })(t0);\n}\nif(reduced){\n  document.querySelectorAll('[data-count]').forEach(el=>el.textContent=(+el.dataset.count).toLocaleString('en-US'));\n}else{\n  document.querySelectorAll('[data-count]').forEach(countUp);\n  document.querySelector('.jalex-txmap').classList.add('animate');\n}\n\/* ---- structured data: dataset + all 50 intersections ---- *\/\n(function(){\n  const ld={\n    \"@context\":\"https:\/\/schema.org\",\n    \"@graph\":[\n      {\n        \"@type\":\"Dataset\",\n        \"name\":\"The 50 Most Dangerous Intersections in Texas (2025)\",\n        \"description\":\"Ranking of the 50 Texas intersections with the most reported crashes in 2025, compiled from TxDOT Crash Records Information System (CRIS) public extract data.\",\n        \"url\":\"https:\/\/severeinjurylawyers.com\/most-dangerous-intersections-in-texas\/\",\n        \"temporalCoverage\":\"2025-01-01\/2025-12-31\",\n        \"spatialCoverage\":{\"@type\":\"Place\",\"name\":\"Texas, United States\"},\n        \"creator\":{\"@type\":\"LegalService\",\"name\":\"J. Alexander Law Firm\",\"url\":\"https:\/\/severeinjurylawyers.com\/\"},\n        \"isBasedOn\":{\n          \"@type\":\"Dataset\",\n          \"name\":\"TxDOT Crash Records Information System (CRIS) Public Extract, 2025\",\n          \"creator\":{\"@type\":\"GovernmentOrganization\",\"name\":\"Texas Department of Transportation\"},\n          \"url\":\"https:\/\/cris.txdot.gov\/\"\n        }\n      },\n      {\n        \"@type\":\"ItemList\",\n        \"name\":\"Most dangerous intersections in Texas, 2025\",\n        \"numberOfItems\":DATA.length,\n        \"itemListElement\":DATA.map(d=>({\n          \"@type\":\"ListItem\",\n          \"position\":d.r,\n          \"name\":d.n+\", \"+d.c+\", Texas\",\n          \"description\":d.x+\" crashes, \"+d.i+\" injuries reported in 2025\"\n        }))\n      }\n    ]\n  };\n  const sc=document.createElement('script');\n  sc.type='application\/ld+json';\n  sc.textContent=JSON.stringify(ld);\n  document.head.appendChild(sc);\n})();\n\/* ---- embed code ---- *\/\nconst EMBED=`<iframe src=\"https:\/\/severeinjurylawyers.com\/widgets\/texas-dangerous-intersections\/\" width=\"100%\" height=\"860\" style=\"border:0;\" loading=\"lazy\" title=\"The 50 Most Crash-Prone Intersections in Texas (2025 TxDOT Data)\"><\/iframe>\n<p style=\"font:13px\/1.5 sans-serif;\">Source: TxDOT CRIS crash data, 2025. Analysis and map by <a href=\"https:\/\/severeinjurylawyers.com\/\" target=\"_blank\" rel=\"noopener\">J. Alexander Law Firm, Dallas personal injury lawyers<\/a>.<\/p>`;\nconst ta=document.getElementById('embedcode'); ta.value=EMBED;\ndocument.getElementById('copybtn').addEventListener('click',async()=>{\n  try{await navigator.clipboard.writeText(EMBED)}catch(e){ta.select();document.execCommand('copy')}\n  const b=document.getElementById('copybtn');const t=b.textContent;\n  b.textContent='Copied';setTimeout(()=>b.textContent=t,1600);\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>TXTxDOT crash records &middot; Jan&ndash;Dec 2025 The 50 most dangerous intersections in Texas. Texas recorded 617,930 crashes last year; one in four happened at an intersection. These are the fifty crossings where they piled up. Glide your mouse over the map; it zooms into your area on its own. 0Crashes statewide 0At intersections 0Intersections tracked [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width.php","meta":{"_seopress_titles_title":"The 50 Most Dangerous Intersections in Texas (2025 Map)","_seopress_titles_desc":"Interactive map of the 50 most dangerous intersections in Texas, ranked by 2025 TxDOT crash data. See the worst spots in Dallas, Houston, and San Antonio.","_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":""},"class_list":["post-1684","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/pages\/1684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/types\/page"}],"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=1684"}],"version-history":[{"count":9,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/pages\/1684\/revisions"}],"predecessor-version":[{"id":1700,"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/pages\/1684\/revisions\/1700"}],"wp:attachment":[{"href":"https:\/\/severeinjurylawyers.com\/es\/wp-json\/wp\/v2\/media?parent=1684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}