{"title":"Roush Parts","description":"\u003cdiv class=\"tcc-campaign-b-hero\"\u003e\n  \u003cdiv class=\"tcc-container tcc-split-layout\"\u003e\n    \n    \u003cdiv class=\"tcc-left-column\"\u003e\n      \u003cdiv class=\"tcc-badge-top\"\u003e\n        \u003cspan\u003e✈️ FAST SHIPPING TO THE LOWER 48 STATES\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003ch1 class=\"tcc-main-title\"\u003eThe #1 Roush Supercharger Dealer in the World\u003c\/h1\u003e\n      \u003cp class=\"tcc-sub-title\"\u003e\n        Superchargers, exhaust, cold air kits, suspension, and body parts for your Mustang, F-150, Ranger, and Bronco. \n        \u003cspan class=\"tcc-highlight\"\u003eFast shipping to the Lower 48 States\u003c\/span\u003e, with real support from the #1 Roush Supercharger Dealer in the world.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"tcc-btn-group\"\u003e\n        \u003ca href=\"#rsh-finder\" class=\"tcc-btn tcc-btn-secondary\"\u003e\n          BROWSE ROUSH PARTS BELOW ↓\n        \u003c\/a\u003e\n        \u003ca href=\"tel:205-491-0010\" class=\"tcc-btn tcc-btn-call\"\u003e\n          📞 CALL A ROUSH EXPERT: 205-491-0010\n        \u003c\/a\u003e\n              \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"tcc-right-column\"\u003e\n      \n      \u003cdiv class=\"tcc-badge-item\"\u003e\n        \u003cdiv class=\"tcc-badge-icon\"\u003e📦\u003c\/div\u003e\n        \u003cdiv class=\"tcc-badge-content\"\u003e\n          \u003cdiv class=\"tcc-badge-title\"\u003eSECURE NATIONWIDE SHIPPING\u003c\/div\u003e\n          \u003cp class=\"tcc-card-p\"\u003eSafe crating and direct-to-door delivery. Shipping to the Lower 48 States.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"tcc-badge-item\"\u003e\n        \u003cdiv class=\"tcc-badge-icon\"\u003e💳\u003c\/div\u003e\n        \u003cdiv class=\"tcc-badge-content\"\u003e\n          \u003cdiv class=\"tcc-badge-title\"\u003eFLEXIBLE FINANCING\u003c\/div\u003e\n          \u003cp class=\"tcc-card-p\"\u003eFast approval and manageable payments. Pay over time with Shop Pay at checkout.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"tcc-badge-item\"\u003e\n        \u003cdiv class=\"tcc-badge-icon\"\u003e🛡️\u003c\/div\u003e\n        \u003cdiv class=\"tcc-badge-content\"\u003e\n          \u003cdiv class=\"tcc-badge-title\"\u003eAUTHORIZED ROUSH DEALER\u003c\/div\u003e\n          \u003cp class=\"tcc-card-p\"\u003eFully validated Roush performance. Your purchase includes a comprehensive warranty.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003csection class=\"rsh-why\"\u003e\n  \u003ch2\u003eWhy Buy Roush From TCcustoms\u003c\/h2\u003e\n  \u003cdiv class=\"rsh-why-grid\"\u003e\n    \u003cdiv class=\"rsh-why-card\"\u003e\n      \u003ch3\u003e#1 Roush Supercharger Dealer\u003c\/h3\u003e\n      \u003cp\u003eWe sell and install more Roush superchargers than any dealer in the world. When you call us, you talk to people who do this every single day.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"rsh-why-card\"\u003e\n      \u003ch3\u003eInstalled Inside a Ford Dealership\u003c\/h3\u003e\n      \u003cp\u003eTCcustoms operates inside Town \u0026amp; Country Ford. Factory-trained technicians, dealership-backed service, and warranty support on calibrated kits.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"rsh-why-card\"\u003e\n      \u003ch3\u003eWatch Us Work\u003c\/h3\u003e\n      \u003cp\u003eOver 330,000 subscribers follow our builds on YouTube. The dyno pulls, the installs, the finished trucks. What you see is what we build.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"rsh-why-card\"\u003e\n      \u003ch3\u003eWe Ship Nationwide\u003c\/h3\u003e\n      \u003cp\u003eBuy genuine Roush parts from anywhere in the country, or bring us your vehicle. Customers drive and ship vehicles to Alabama for our builds.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection id=\"rsh-finder\" class=\"rsh-finder\"\u003e\n  \u003cdiv class=\"rsh-finder-head\"\u003e\n    \u003ch2\u003eFind Parts Built for Your Ford\u003c\/h2\u003e\n    \u003cp\u003ePick your vehicle and what you are after. We will show you every genuine Roush part that fits.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"rsh-quick-filter\"\u003e\n  \u003cbutton type=\"button\" class=\"rsh-filter-chip\" data-rsh-cat=\"supercharger\"\u003e\n    Shop Superchargers\n  \u003c\/button\u003e\n  \u003cbutton type=\"button\" class=\"rsh-filter-chip\" data-rsh-cat=\"exhaust\"\u003e\n    Shop Exhaust\n  \u003c\/button\u003e\n  \u003cbutton type=\"button\" class=\"rsh-filter-chip\" data-rsh-cat=\"suspension\"\u003e\n    Shop Suspension\n  \u003c\/button\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"rsh-controls\"\u003e\n    \u003cdiv class=\"rsh-field\"\u003e\n      \u003clabel for=\"rshq-year\"\u003eYear\u003c\/label\u003e\n      \u003cselect id=\"rshq-year\"\u003e\u003coption value=\"\"\u003eAny year\u003c\/option\u003e\u003c\/select\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"rsh-field\"\u003e\n      \u003clabel for=\"rshq-model\"\u003eVehicle\u003c\/label\u003e\n      \u003cselect id=\"rshq-model\"\u003e\u003coption value=\"\"\u003eAny vehicle\u003c\/option\u003e\u003c\/select\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"rsh-field\"\u003e\n      \u003clabel for=\"rshq-cat\"\u003ePart Type\u003c\/label\u003e\n      \u003cselect id=\"rshq-cat\"\u003e\u003coption value=\"\"\u003eAll part types\u003c\/option\u003e\u003c\/select\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"rsh-field\"\u003e\n      \u003clabel for=\"rshq-sort\"\u003eSort\u003c\/label\u003e\n      \u003cselect id=\"rshq-sort\"\u003e  \n        \u003coption value=\"featured\"\u003eFeatured\u003c\/option\u003e\n        \u003coption value=\"price-desc\"\u003ePrice: high to low\u003c\/option\u003e\n        \u003coption value=\"price-asc\"\u003ePrice: low to high\u003c\/option\u003e\n        \n      \u003c\/select\u003e\n    \u003c\/div\u003e\n    \u003cbutton type=\"button\" id=\"rshq-reset\" class=\"rsh-btn rsh-btn-ghost rsh-btn-sm\" hidden\u003eReset\u003c\/button\u003e\n  \u003c\/div\u003e\n  \u003cp id=\"rshq-status\" class=\"rsh-status\" role=\"status\"\u003e\u003c\/p\u003e\n  \u003cdiv id=\"rshq-results\" class=\"rsh-results\" aria-live=\"polite\"\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cstyle\u003e\n  \/* Hero Split Elements Layout *\/\n  .rsh-quick-filter {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px;\n  justify-content: center;\n  margin: 0 auto 18px;\n  max-width: 900px;\n}\n\n.rsh-filter-chip {\n  appearance: none;\n  border: 2px solid #111;\n  background: #111;\n  color: #fff;\n  border-radius: 999px;\n  padding: 11px 18px;\n  font-size: 0.82em;\n  font-weight: 800;\n  text-transform: uppercase;\n  letter-spacing: 0.06em;\n  cursor: pointer;\n  font-family: inherit;\n  transition: transform 0.15s ease, background 0.15s ease, border-color 0.15s ease;\n}\n\n.rsh-filter-chip:hover {\n  background: #d6001c;\n  border-color: #d6001c;\n  transform: translateY(-1px);\n}\n\n.rsh-filter-chip.rsh-active {\n  background: #d6001c;\n  border-color: #d6001c;\n}\n\n@media (max-width: 768px) {\n  .rsh-quick-filter {\n    flex-direction: column;\n  }\n\n  .rsh-filter-chip {\n    width: 100%;\n  }\n}\n  .tcc-campaign-b-hero {\n    background: linear-gradient(135deg, #111111 0%, #1a1a1a 100%);\n    color: #ffffff !important;\n    padding: 25px 20px !important;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif !important;\n    border-radius: 8px;\n    margin-bottom: 20px !important;\n    box-sizing: border-box;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    scroll-behavior: smooth;\n  }\n  .tcc-container {\n    max-width: 1250px !important;\n    margin: 0 auto;\n    box-sizing: border-box;\n  }\n  .tcc-split-layout {\n    display: grid;\n    grid-template-columns: 1.4fr 1fr; \n    gap: 40px;\n    align-items: center;\n    text-align: left; \n  }\n  .tcc-left-column {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .tcc-badge-top {\n    display: inline-block;\n    background-color: #e50914; \n    color: #ffffff !important;\n    padding: 4px 12px !important;\n    font-weight: 700 !important;\n    font-size: 11px !important;\n    border-radius: 50px;\n    letter-spacing: 1px;\n    margin-bottom: 12px !important;\n    text-transform: uppercase;\n  }\n  .tcc-main-title {\n    font-size: 34px !important; \n    font-weight: 800 !important;\n    line-height: 1.15 !important;\n    margin: 0 0 12px 0 !important;\n    text-transform: uppercase;\n    letter-spacing: -0.5px;\n    color: #ffffff !important;\n  }\n  .tcc-sub-title {\n    font-size: 15px !important;\n    line-height: 1.5 !important;\n    color: #cccccc !important;\n    margin: 0 0 20px 0 !important; \n  }\n  .tcc-highlight {\n    color: #ffffff !important;\n    font-weight: 700 !important;\n  }\n  .tcc-btn-group {\n    display: flex;\n    gap: 12px;\n    flex-wrap: wrap;\n    width: 100%;\n  }\n  .tcc-btn {\n    display: inline-block;\n    padding: 12px 24px !important;\n    font-size: 13px !important;\n    font-weight: 700 !important;\n    text-decoration: none;\n    border-radius: 4px;\n    transition: background 0.2s ease, transform 0.1s ease;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    white-space: nowrap;\n  }\n  .tcc-btn-call {\n    background-color: #00c853 !important; \n    color: #ffffff !important;\n  }\n  .tcc-btn-call:hover { background-color: #00a844 !important; }\n  .tcc-btn-secondary {\n    background-color: transparent !important;\n    color: #ffffff !important;\n    border: 2px solid #ffffff !important;\n  }\n  .tcc-btn-secondary:hover { background-color: #ffffff !important; color: #111111 !important; }\n  \n  .tcc-right-column { display: flex; flex-direction: column; gap: 12px; width: 100%; }\n  .tcc-badge-item {\n    background: #161616 !important; \n    padding: 14px 18px !important;\n    border-radius: 6px;\n    border: 1px solid #262626 !important;\n    display: flex !important;\n    flex-direction: row !important; \n    align-items: flex-start !important;\n    gap: 15px !important;\n    text-align: left !important;\n  }\n  .tcc-badge-icon { font-size: 24px !important; line-height: 1 !important; margin-top: 2px; }\n  .tcc-badge-content { display: flex; flex-direction: column; }\n  \n  .tcc-badge-title {\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif !important;\n    font-size: 14px !important;\n    font-weight: 700 !important;\n    color: #ffffff !important;\n    margin: 0 0 5px 0 !important;\n    letter-spacing: 0.75px !important;\n    line-height: 1.3 !important;\n    text-transform: uppercase !important;\n    -webkit-font-smoothing: antialiased !important;\n  }\n  .tcc-card-p {\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif !important;\n    font-size: 13px !important;\n    line-height: 1.4 !important;\n    color: #e0e0e0 !important; \n    margin: 0 !important;\n    font-weight: 400 !important;\n  }\n\n  \/* Global Part Finder Content \u0026 Why Styles *\/\n  #tcc-roush { font-family: inherit; color: #111; margin: 0 0 34px; }\n  .rsh-kicker { font-size: .8em; font-weight: 700; text-transform: uppercase; letter-spacing: .18em; color: #888; margin: 0 0 10px; }\n  .rsh-kicker-red { color: #d6001c; }\n  .rsh-why { margin-top: 26px; text-align: center; }\n  .rsh-why h2 { font-size: 1.6em; font-weight: 800; text-transform: uppercase; }\n  .rsh-why-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px; margin-top: 18px; }\n  .rsh-why-card { background: #0c0c0e; color: #fff; border-radius: 10px; padding: 22px 18px; text-align: left; border-top: 4px solid #d6001c; }\n  .rsh-why-card h3 { font-size: .95em; text-transform: uppercase; margin: 0 0 8px; }\n  .rsh-why-card p { color: #c4c4cb; font-size: .88em; line-height: 1.55; margin: 0; }\n  \n  .rsh-finder { margin-top: 26px; border: 1px solid #e7e7e9; border-radius: 12px; padding: 30px 24px; scroll-margin-top: 90px; background: #fafafa; color: #111; }\n  .rsh-finder-head { text-align: center; max-width: 620px; margin: 0 auto 20px; }\n  .rsh-finder-head h2 { font-size: 1.6em; font-weight: 800; text-transform: uppercase; margin: 0 0 8px; }\n  .rsh-finder-head p { color: #555; margin: 0; }\n  .rsh-controls { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; max-width: 1080px; margin: 0 auto; }\n  .rsh-controls .rsh-field { flex: 1 1 170px; margin-bottom: 0; display: flex; flex-direction: column; }\n  .rsh-controls label { font-size: .74em; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; margin-bottom: 5px; color: #222; }\n  .rsh-controls select { padding: 11px 12px; border: 1px solid #cfcfd2; border-radius: 6px; font-size: .95em; background: #fff; font-family: inherit; cursor: pointer; }\n  .rsh-controls select:focus { outline: 2px solid #d6001c; outline-offset: 1px; }\n  .rsh-status { text-align: center; margin: 16px 0 0; font-size: .94em; color: #333; }\n  .rsh-status a { color: #d6001c; font-weight: 700; text-decoration: none; }\n  .rsh-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(225px, 1fr)); gap: 16px; margin-top: 18px; max-width: 1080px; margin-left: auto; margin-right: auto; }\n  \n  .rsh-card { background: #fff; border: 1px solid #e5e5e7; border-radius: 9px; overflow: hidden; display: flex; flex-direction: column; text-decoration: none; color: #111; transition: box-shadow .15s ease, transform .15s ease; }\n  .rsh-card:hover { box-shadow: 0 8px 22px rgba(0,0,0,.13); transform: translateY(-2px); }\n  .rsh-card img { width: 100%; aspect-ratio: 4\/3; object-fit: cover; background: #f1f1f2; display: block; }\n  .rsh-card-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; flex: 1; text-align: left; }\n  .rsh-card-cat { font-size: .72em; font-weight: 700; color: #d6001c; text-transform: uppercase; letter-spacing: .09em; }\n  .rsh-card-title { font-size: .88em; font-weight: 600; line-height: 1.35; margin: 0; color: #111; }\n  .rsh-card-price { margin-top: auto; font-weight: 800; color: #111; }\n  .rsh-card-price s { color: #999; font-weight: 500; font-size: .85em; margin-left: 6px; }\n  .rsh-card-btn { margin-top: 8px; text-align: center; background: #111; color: #fff; border-radius: 6px; padding: 9px; font-size: .78em; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }\n  .rsh-card:hover .rsh-card-btn { background: #d6001c; }\n  .rsh-btn-ghost { background: transparent; color: #111; border: 2px solid currentColor; padding: 11px 16px; font-size: .8em; text-transform: uppercase; font-weight: 700; border-radius: 7px; text-decoration: none; }\n\n  \/* Responsive Systems Layout fallbacks *\/\n  @media (max-width: 992px) {\n    .tcc-split-layout { grid-template-columns: 1fr; gap: 25px; text-align: center; }\n    .tcc-left-column { align-items: center; }\n    .tcc-btn-group { justify-content: center; }\n    .tcc-main-title { font-size: 28px !important; }\n  }\n  @media (max-width: 768px) {\n    .tcc-campaign-b-hero { padding: 20px 15px !important; }\n    .tcc-main-title { font-size: 24px !important; }\n    .tcc-btn-group { flex-direction: column; gap: 8px; }\n    .tcc-btn { width: 100%; box-sizing: border-box; text-align: center; }\n    .tcc-badge-item { padding: 12px 15px !important; }\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n(function () {\n  var COLLECTION = \"\/collections\/roush-performance\";\n  var PHONE_TEXT = \"(205) 491-0010\";\n  var PHONE_HREF = \"tel:2054910010\";\n\n  \/\/ Handle the scroll fade reveal mechanics for exists items smoothly\n  document.querySelectorAll(\".rsh-why-card\").forEach(function (el) { el.classList.add(\"rsh-reveal\"); });\n  if (\"IntersectionObserver\" in window) {\n    var io = new IntersectionObserver(function (es) {\n      es.forEach(function (e) { if (e.isIntersecting) { e.target.classList.add(\"rsh-in\"); io.unobserve(e.target); } });\n    }, { threshold: .12 });\n    document.querySelectorAll(\".rsh-reveal\").forEach(function (el) { io.observe(el); });\n  } else {\n    document.querySelectorAll(\".rsh-reveal\").forEach(function (el) { el.classList.add(\"rsh-in\"); });\n  }\n\n  \/\/ Setup elements mapped explicitly for the item catalog display dropdowns\n  var els = {\n    year: document.getElementById(\"rshq-year\"),\n    model: document.getElementById(\"rshq-model\"),\n    cat: document.getElementById(\"rshq-cat\"),\n    sort: document.getElementById(\"rshq-sort\"),\n    reset: document.getElementById(\"rshq-reset\"),\n    status: document.getElementById(\"rshq-status\"),\n    results: document.getElementById(\"rshq-results\")\n  };\n  var cache = null;\n  var MODEL_TOKENS = [[\"mustang\", \"Mustang\"], [\"f-150\", \"F-150\"], [\"raptor\", \"F-150\"], [\"f-250\", \"F-250 \/ F-350\"], [\"f250\", \"F-250 \/ F-350\"], [\"super duty\", \"F-250 \/ F-350\"], [\"ranger\", \"Ranger\"], [\"bronco\", \"Bronco\"]];\n  \n  function classify(p) {\n    var t = (p.title || \"\").toLowerCase();\n    var years = [];\n    var m = t.match(\/(19|20)(\\d{2})\\s*-\\s*(19|20)?(\\d{2})\/);\n    if (m) {\n      var y1 = parseInt(m[1] + m[2], 10);\n      var y2 = parseInt((m[3] || m[1]) + m[4], 10);\n      for (var y = y1; y \u003c= Math.min(y2, 2027); y++) years.push(y);\n    } else {\n      var single = t.match(\/\\b(19|20)\\d{2}\\b\/);\n      if (single) years.push(parseInt(single[0], 10));\n    }\n    var models = [];\n    MODEL_TOKENS.forEach(function (tk) { if (t.indexOf(tk[0]) \u003e -1 \u0026\u0026 models.indexOf(tk[1]) === -1) models.push(tk[1]); });\n    return { years: years, models: models, cat: p.product_type || \"Other\" };\n  }\n\n  function money(v) {\n    var n = parseFloat(v);\n    return \"$\" + n.toFixed(2).replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \",\");\n  }\n\n  function load(cb) {\n    if (cache) return cb(cache);\n    fetch(COLLECTION + \"\/products.json?limit=250\")\n      .then(function (r) { return r.json(); })\n      .then(function (d) {\n        cache = (d.products || []).map(function (p, i) {\n          var minP = null, maxCmp = null;\n          (p.variants || []).forEach(function (v) {\n            var pr = parseFloat(v.price);\n            if (minP === null || pr \u003c minP) minP = pr;\n            if (v.compare_at_price) {\n              var ca = parseFloat(v.compare_at_price);\n              if (maxCmp === null || ca \u003e maxCmp) maxCmp = ca;\n            }\n          });\n          var img = p.images \u0026\u0026 p.images.length ? p.images[0].src : \"\";\n          if (img) img += (img.indexOf(\"?\") \u003e -1 ? \"\u0026\" : \"?\") + \"width=480\";\n          return { title: p.title, url: \"\/products\/\" + p.handle, img: img, price: minP, compare: maxCmp, order: i, meta: classify(p) };\n        });\n        buildOptions(cache);\n        cb(cache);\n      })\n      .catch(function () {\n        els.status.innerHTML = \"We could not load the parts list. Please refresh, or call us at \u003ca href=\\\"\" + PHONE_HREF + \"\\\"\u003e\" + PHONE_TEXT + \"\u003c\/a\u003e.\";\n      });\n  }\n\n  function buildOptions(items) {\n    var years = {}, models = {}, cats = {};\n    items.forEach(function (it) {\n      it.meta.years.forEach(function (y) { years[y] = 1; });\n      it.meta.models.forEach(function (mo) { models[mo] = 1; });\n      cats[it.meta.cat] = 1;\n    });\n    Object.keys(years).sort(function (a, b) { return b - a; }).forEach(function (y) {\n      els.year.insertAdjacentHTML(\"beforeend\", \"\u003coption\u003e\" + y + \"\u003c\/option\u003e\");\n    });\n    Object.keys(models).sort().forEach(function (mo) {\n      els.model.insertAdjacentHTML(\"beforeend\", '\u003coption value=\"' + mo + '\"\u003eFord ' + mo + \"\u003c\/option\u003e\");\n    });\n    Object.keys(cats).sort().forEach(function (c) {\n      els.cat.insertAdjacentHTML(\"beforeend\", \"\u003coption\u003e\" + c + \"\u003c\/option\u003e\");\n    });\n  }\n\n  function render() {\n    load(function (items) {\n      var year = els.year.value ? parseInt(els.year.value, 10) : null;\n      var model = els.model.value || null;\n      var cat = els.cat.value || null;\n      var sort = els.sort.value;\n      els.reset.hidden = !(year || model || cat);\n\n      var hits = items.filter(function (it) {\n        if (year \u0026\u0026 it.meta.years.indexOf(year) === -1) return false;\n        if (model \u0026\u0026 it.meta.models.indexOf(model) === -1) return false;\n        if (cat \u0026\u0026 it.meta.cat !== cat) return false;\n        return true;\n      });\n      if (sort === \"price-asc\") hits.sort(function (a, b) { return a.price - b.price; });\n      else if (sort === \"price-desc\") hits.sort(function (a, b) { return b.price - a.price; });\n      else hits.sort(function (a, b) { return a.order - b.order; });\n      \n      if (!hits.length) {\n        els.results.innerHTML = \"\";\n        els.status.innerHTML = \"No Roush parts match that combination yet. We can still help. Call \u003ca href=\\\"\" + PHONE_HREF + \"\\\"\u003e\" + PHONE_TEXT + \"\u003c\/a\u003e and we will find the right setup for your Ford.\";\n        return;\n      }\n      els.status.innerHTML = (year || model || cat)\n        ? \"Showing \u003cstrong\u003e\" + hits.length + \"\u003c\/strong\u003e matching part\" + (hits.length === 1 ? \"\" : \"s\") + \":\"\n        : \"Showing all \u003cstrong\u003e\" + hits.length + \"\u003c\/strong\u003e Roush parts:\";\n      els.results.innerHTML = hits.map(function (it) {\n        var priceHtml = \"From \" + money(it.price) + (it.compare ? \"\u003cs\u003e\" + money(it.compare) + \"\u003c\/s\u003e\" : \"\");\n        return '\u003ca class=\"rsh-card\" href=\"' + it.url + '\"\u003e' +\n          (it.img ? '\u003cimg src=\"' + it.img + '\" alt=\"\" loading=\"lazy\"\u003e' : \"\") +\n          '\u003cdiv class=\"rsh-card-body\"\u003e' +\n          '\u003cspan class=\"rsh-card-cat\"\u003e' + it.meta.cat + \"\u003c\/span\u003e\" +\n          '\u003cp class=\"rsh-card-title\"\u003e' + it.title + \"\u003c\/p\u003e\" +\n          '\u003cspan class=\"rsh-card-price\"\u003e' + priceHtml + \"\u003c\/span\u003e\" +\n          '\u003cspan class=\"rsh-card-btn\"\u003eView Part\u003c\/span\u003e' +\n          \"\u003c\/div\u003e\u003c\/a\u003e\";\n      }).join(\"\");\n    });\n  }\n\n  [\"year\", \"model\", \"cat\", \"sort\"].forEach(function (k) { els[k].addEventListener(\"change\", render); });\n  els.reset.addEventListener(\"click\", function () {\n  els.year.value = \"\";\n  els.model.value = \"\";\n  els.cat.value = \"\";\n  els.sort.value = \"featured\";\n\n  document.querySelectorAll(\".rsh-filter-chip\").forEach(function (btn) {\n    btn.classList.remove(\"rsh-active\");\n  });\n\n  render();\n});\n  function selectCategoryByKeyword(keyword) {\n  var match = \"\";\n  keyword = String(keyword || \"\").toLowerCase();\n\n  Array.prototype.forEach.call(els.cat.options, function (opt) {\n    var text = String(opt.text || opt.value || \"\").toLowerCase();\n\n    if (!match \u0026\u0026 opt.value \u0026\u0026 text.indexOf(keyword) \u003e -1) {\n      match = opt.value;\n    }\n  });\n\n  if (match) {\n    els.cat.value = match;\n    render();\n\n    document.querySelectorAll(\".rsh-filter-chip\").forEach(function (btn) {\n      btn.classList.toggle(\"rsh-active\", btn.getAttribute(\"data-rsh-cat\") === keyword);\n    });\n\n    document.getElementById(\"rsh-finder\").scrollIntoView({\n      behavior: \"smooth\",\n      block: \"start\"\n    });\n  } else {\n    els.status.innerHTML = \"We could not find that category in the current parts list. Try the Part Type dropdown or call \u003ca href=\\\"\" + PHONE_HREF + \"\\\"\u003e\" + PHONE_TEXT + \"\u003c\/a\u003e.\";\n  }\n}\n\ndocument.querySelectorAll(\".rsh-filter-chip\").forEach(function (btn) {\n  btn.addEventListener(\"click\", function () {\n    selectCategoryByKeyword(btn.getAttribute(\"data-rsh-cat\"));\n  });\n});\n  render();\n})();\n\u003c\/script\u003e\n\u003csection class=\"rsh-faq\"\u003e\n  \u003ch2\u003eRoush Parts FAQ\u003c\/h2\u003e\n\n  \u003ch3\u003eDo you ship Roush parts nationwide?\u003c\/h3\u003e\n  \u003cp\u003eYes, we ship to the Lower 48 States.\u003c\/p\u003e\n\n  \u003ch3\u003eCan I install a Roush supercharger locally?\u003c\/h3\u003e\n  \u003cp\u003eYes. Many customers order the parts from us and have a qualified local shop perform the installation.\u003c\/p\u003e\n\n  \u003ch3\u003eCan TCcustoms help confirm fitment before I order?\u003c\/h3\u003e\n  \u003cp\u003eYes. Call us with your year, model, engine, and VIN and we can help confirm the right part.\u003c\/p\u003e\n\n  \u003ch3\u003eAre Roush superchargers emissions legal in every state?\u003c\/h3\u003e\n  \u003cp\u003eEmissions rules vary by product, model year, and state. Contact us before ordering if your vehicle will be registered in California or another emissions-restricted state.\u003c\/p\u003e\n\u003c\/section\u003e","products":[],"url":"https:\/\/www.tccustoms.com\/collections\/roush-parts.oembed","provider":"TCcustoms.com","version":"1.0","type":"link"}