{"product_id":"nitro-pro-front-strut-coil-spring-pair-toyota-hilux-n70-0-2in-lift","title":"Nitro Pro Front Strut \u0026 Coil Spring Pair — Toyota Hilux N70 (0-2in Lift)","description":"\u003cp\u003eCalOffroad Nitro Pro front strut and coil spring pair for the \u003cstrong\u003eToyota Hilux N70\u003c\/strong\u003e (2005-2015). Height adjustable 0-2 inch lift, Medium Duty rating. Everything you need for a complete front lift — sold as a pair (2x strut, 2x coil spring).\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003e0-2in adjustable lift range\u003c\/li\u003e\n\u003cli\u003eMedium Duty — suits light to medium accessory loads (bar, winch)\u003c\/li\u003e\n\u003cli\u003eIncludes 2x front strut and 2x front coil spring\u003c\/li\u003e\n\u003c\/ul\u003e\u003cstyle\u003e\n  .chf-calc {\n    --bg: #f2efe8; --panel: #ffffff; --panel-2: #f8f6f1; --border: #ddd8cc; --border-strong: #c7c1b2;\n    --text: #1b1d22; --text-dim: #6b6e76; --text-faint: #9a9da3; --accent: #c96a1e; --accent-ink: #ffffff;\n    --accent-soft: rgba(201, 106, 30, 0.1); --accent-soft-strong: rgba(201, 106, 30, 0.2);\n    --ok: #5f7a3d; --needle-shadow: rgba(0, 0, 0, 0.18); --track: #e4dfd2; --focus: #1b1d22;\n  }\n  @media (prefers-color-scheme: dark) {\n    .chf-calc { --bg: #14161a; --panel: #1c1f26; --panel-2: #21242c; --border: #33373f; --border-strong: #454a54;\n      --text: #f0ede6; --text-dim: #a9acb3; --text-faint: #6f727a; --accent: #e8842d; --accent-ink: #14161a;\n      --accent-soft: rgba(232, 132, 45, 0.14); --accent-soft-strong: rgba(232, 132, 45, 0.26); --ok: #93b06d;\n      --needle-shadow: rgba(0, 0, 0, 0.5); --track: #2a2e36; --focus: #f0ede6; }\n  }\n  .chf-calc[data-theme=\"dark\"] { --bg: #14161a; --panel: #1c1f26; --panel-2: #21242c; --border: #33373f; --border-strong: #454a54;\n    --text: #f0ede6; --text-dim: #a9acb3; --text-faint: #6f727a; --accent: #e8842d; --accent-ink: #14161a;\n    --accent-soft: rgba(232, 132, 45, 0.14); --accent-soft-strong: rgba(232, 132, 45, 0.26); --ok: #93b06d;\n    --needle-shadow: rgba(0, 0, 0, 0.5); --track: #2a2e36; --focus: #f0ede6; }\n  .chf-calc[data-theme=\"light\"] { --bg: #f2efe8; --panel: #ffffff; --panel-2: #f8f6f1; --border: #ddd8cc; --border-strong: #c7c1b2;\n    --text: #1b1d22; --text-dim: #6b6e76; --text-faint: #9a9da3; --accent: #c96a1e; --accent-ink: #ffffff;\n    --accent-soft: rgba(201, 106, 30, 0.1); --accent-soft-strong: rgba(201, 106, 30, 0.2); --ok: #5f7a3d;\n    --needle-shadow: rgba(0, 0, 0, 0.18); --track: #e4dfd2; --focus: #1b1d22; }\n  .chf-calc, .chf-calc * { box-sizing: border-box; }\n  .chf-calc { background: var(--bg); color: var(--text); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; padding: 40px 16px 64px; border-radius: 6px; }\n  .chf-calc .wrap { width: 100%; max-width: 640px; margin: 0 auto; }\n  .eyebrow { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 11px; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }\n  .eyebrow::before { content: \"\"; width: 16px; height: 1.5px; background: var(--accent); display: inline-block; }\n  .chf-calc h1 { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: 0.01em; font-size: clamp(28px, 6vw, 38px); line-height: 1.05; margin: 0 0 10px; text-wrap: balance; color: var(--text); background: none; border: none; box-shadow: none; }\n  .lede { font-size: 15px; line-height: 1.55; color: var(--text-dim); max-width: 54ch; margin: 0 0 28px; }\n  .lede strong { color: var(--text); font-weight: 600; }\n  .chf-calc section.card { background: var(--panel); border: 1px solid var(--border); border-radius: 4px; padding: 22px 22px 24px; margin-bottom: 16px; }\n  .card-title { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; font-size: 13px; color: var(--text-dim); margin: 0 0 4px; }\n  .card-sub { font-size: 13px; color: var(--text-faint); margin: 0 0 16px; line-height: 1.5; }\n  .seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 6px; background: var(--panel-2); border: 1px solid var(--border); border-radius: 3px; padding: 4px; }\n  .seg label { position: relative; text-align: center; padding: 9px 8px; font-size: 12.5px; font-weight: 600; color: var(--text-dim); border-radius: 2px; cursor: pointer; user-select: none; transition: background 0.15s ease, color 0.15s ease; line-height: 1.3; }\n  .seg label .kg { display: block; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-weight: 400; font-size: 10.5px; color: var(--text-faint); margin-top: 2px; }\n  .seg input { position: absolute; opacity: 0; pointer-events: none; }\n  .seg input:checked + label, .seg label.checked { background: var(--accent); color: var(--accent-ink); }\n  .seg input:checked + label .kg, .seg label.checked .kg { color: var(--accent-ink); opacity: 0.75; }\n  .seg input:focus-visible + label { outline: 2px solid var(--focus); outline-offset: 1px; }\n  .rows { display: flex; flex-direction: column; }\n  .row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 0; border-top: 1px solid var(--border); }\n  .row:first-child { border-top: none; padding-top: 2px; }\n  .row-text { flex: 1; min-width: 0; }\n  .row-label { font-size: 14px; font-weight: 600; }\n  .row-note { font-size: 12px; color: var(--text-faint); margin-top: 2px; line-height: 1.4; }\n  .switch { position: relative; width: 42px; height: 24px; flex: none; }\n  .switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; z-index: 1; }\n  .switch .track { position: absolute; inset: 0; background: var(--track); border: 1px solid var(--border-strong); border-radius: 999px; transition: background 0.15s ease, border-color 0.15s ease; }\n  .switch .thumb { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: var(--panel); box-shadow: 0 1px 2px rgba(0,0,0,0.25); transition: transform 0.18s cubic-bezier(.4,0,.2,1); }\n  .switch input:checked ~ .track { background: var(--accent); border-color: var(--accent); }\n  .switch input:checked ~ .thumb { transform: translateX(18px); background: var(--accent-ink); }\n  .switch input:focus-visible ~ .track { outline: 2px solid var(--focus); outline-offset: 2px; }\n  .chf-calc fieldset { border: none; margin: 0; padding: 0; }\n  .chf-calc legend { padding: 0; }\n  .gauge-card { padding-bottom: 26px; }\n  .readout { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 10px 20px; margin-bottom: 20px; }\n  .readout-main .label { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-faint); margin-bottom: 4px; }\n  .readout-main .value { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; font-weight: 700; font-size: 44px; line-height: 1; color: var(--accent); font-variant-numeric: tabular-nums; }\n  .readout-main .value .unit { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-weight: 600; font-size: 17px; color: var(--text-dim); margin-left: 4px; }\n  .readout-sub { text-align: right; }\n  .readout-sub .label { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-faint); margin-bottom: 4px; }\n  .readout-sub .value { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 20px; font-weight: 500; color: var(--text); font-variant-numeric: tabular-nums; }\n  .scale { position: relative; margin: 0 4px 6px; }\n  .scale-track { position: relative; height: 8px; border-radius: 999px; background: var(--track); border: 1px solid var(--border); overflow: visible; }\n  .scale-fill { position: absolute; top: -1px; bottom: -1px; left: -1px; border-radius: 999px; background: linear-gradient(90deg, var(--ok), var(--accent)); width: 0%; transition: width 0.35s cubic-bezier(.4,0,.2,1); }\n  .scale-needle { position: absolute; top: 50%; left: 0%; width: 3px; height: 26px; background: var(--text); border-radius: 2px; transform: translate(-50%, -50%); transition: left 0.35s cubic-bezier(.4,0,.2,1); box-shadow: 0 2px 5px var(--needle-shadow); }\n  .scale-needle::after { content: \"\"; position: absolute; left: 50%; top: -6px; width: 9px; height: 9px; background: var(--text); border-radius: 50%; transform: translateX(-50%); }\n  .ticks { display: flex; justify-content: space-between; margin-top: 10px; }\n  .ticks span { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 11.5px; font-weight: 500; color: var(--text-faint); position: relative; font-variant-numeric: tabular-nums; }\n  .ticks span.active { color: var(--accent); font-weight: 600; }\n  .ticks span:first-child { text-align: left; }\n  .ticks span:last-child { text-align: right; }\n  .stock-flag { position: absolute; top: -22px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 10px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--text-faint); left: 0%; transform: translateX(-50%); white-space: nowrap; }\n  .lift-note { background: var(--panel-2); border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: 3px; padding: 12px 14px; font-size: 12.5px; line-height: 1.55; color: var(--text-dim); margin-top: 14px; }\n  .lift-note strong { color: var(--text); }\n  .lift-note.warn { border-left-color: var(--text-faint); }\n  .foot-note { font-size: 12px; color: var(--text-faint); line-height: 1.6; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }\n  .callout { display: flex; gap: 12px; align-items: flex-start; background: var(--accent-soft); border: 1px solid var(--accent-soft-strong); border-radius: 4px; padding: 14px 16px; margin: 0 0 28px; }\n  .callout .mark { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; font-weight: 700; font-size: 20px; color: var(--accent); line-height: 1.2; flex: none; }\n  .callout p { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--text); }\n  .callout strong { color: var(--accent); }\n  .divider { display: flex; align-items: center; gap: 12px; margin: 36px 0 20px; }\n  .divider .line { flex: 1; height: 1px; background: var(--border); }\n  .divider .eyebrow { margin-bottom: 0; }\n  .num-field { display: flex; align-items: center; gap: 10px; background: var(--panel-2); border: 1px solid var(--border); border-radius: 3px; padding: 4px 4px 4px 14px; }\n  .num-field label { font-size: 13px; font-weight: 600; flex: 1; }\n  .num-field input { width: 90px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 15px; font-weight: 500; color: var(--text); background: var(--panel); border: 1px solid var(--border-strong); border-radius: 2px; padding: 8px 10px; text-align: right; font-variant-numeric: tabular-nums; }\n  .num-field input:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }\n  .num-field .unit-tag { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size: 12px; color: var(--text-faint); padding-right: 12px; }\n  .gvm-warn { background: var(--panel-2); border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: 3px; padding: 12px 14px; font-size: 12.5px; line-height: 1.55; color: var(--text-dim); margin-top: 14px; display: none; }\n  .gvm-warn.show { display: block; }\n  .gvm-warn strong { color: var(--text); }\n  .tier-name { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; font-weight: 700; font-size: 44px; line-height: 1; color: var(--accent); }\n  .tier-full { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-weight: 600; font-size: 15px; color: var(--text-dim); margin-top: 6px; }\n  .chf-nudge { display:flex; gap:12px; align-items:flex-start; background: var(--panel-2); border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: 4px; padding: 14px 16px; margin: 0 0 22px; font-size: 13.5px; line-height: 1.55; color: var(--text-dim); }\n  .chf-nudge.thanked { border-left-color: var(--ok); }\n  .chf-nudge strong { color: var(--text); }\n  @media (prefers-reduced-motion: reduce) { .scale-fill, .scale-needle { transition: none; } }\n\u003c\/style\u003e\n\u003cdiv class=\"chf-calc\"\u003e\n\u003cdiv class=\"wrap\"\u003e\n  \u003cdiv class=\"eyebrow\"\u003eFront Duty Tier Calculator\u003c\/div\u003e\n  \u003ch1\u003eCheck your front load.\u003c\/h1\u003e\n  \u003cp class=\"lede\"\u003eHilux N70 carries a stock front axle around \u003cstrong\u003e1180kg\u003c\/strong\u003e on a 600lb spring. This kit is built for the Medium Duty range — tell us what's fitted and we'll confirm it fits.\u003c\/p\u003e\n  \u003cdiv class=\"chf-nudge lift-note\" id=\"chf-nudge\"\u003e\n    \u003cspan id=\"chf-nudge-text\"\u003ePlease fill in your setup below before ordering — it helps us make sure we build the right spec for your vehicle. Skipping it is fine, but the details help us get it right the first time.\u003c\/span\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"callout\"\u003e\n    \u003cspan class=\"mark\"\u003e80\/20\u003c\/span\u003e\n    \u003cp\u003eBuild this for \u003cstrong\u003ehow you actually drive\u003c\/strong\u003e — the daily commute, the school run, the odd weekend track — not the one loaded trip you do three times a year. Nobody enjoys a daily-driven brick just so it's ready for a trip it takes twice a summer. If your heavy trips are rare, tell us straight and we'll spec for the other 80%.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n    \u003cdiv class=\"callout\" id=\"chf-accuracy-callout\" style=\"align-items:flex-start;\"\u003e\n    \u003cspan class=\"mark\"\u003e✓\u003c\/span\u003e\n    \u003cdiv\u003e\n      \u003clabel style=\"display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:13.5px;line-height:1.55;color:var(--text);margin:0;\"\u003e\n        \u003cinput type=\"checkbox\" id=\"chf-accuracy-confirm\" style=\"margin-top:3px;width:16px;height:16px;flex:none;\"\u003e\n        \u003cspan\u003e\u003cstrong\u003eI confirm the information above is true and accurate.\u003c\/strong\u003e Your suspension is built to this spec — the more accurate it is, the better the result you'll get.\u003c\/span\u003e\n      \u003c\/label\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eFront-Mounted Accessories\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eBull bar and winch hang off the front overhang, so essentially all of that weight loads the front axle.\u003c\/p\u003e\n    \u003cfieldset\u003e\n      \u003clegend class=\"row-label\" style=\"margin-bottom:8px; display:block;\"\u003eBull bar\u003c\/legend\u003e\n      \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Bull bar\"\u003e\n        \u003cinput type=\"radio\" name=\"bar\" id=\"bar-none\" value=\"0\" checked\u003e\n        \u003clabel for=\"bar-none\"\u003eNone\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"bar\" id=\"bar-alloy\" value=\"35\"\u003e\n        \u003clabel for=\"bar-alloy\"\u003eAlloy\u003cspan class=\"kg\"\u003e~35kg\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"bar\" id=\"bar-steel\" value=\"50\"\u003e\n        \u003clabel for=\"bar-steel\"\u003eSteel\u003cspan class=\"kg\"\u003e~50kg\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"bar\" id=\"bar-hd\" value=\"65\"\u003e\n        \u003clabel for=\"bar-hd\"\u003eHeavy-duty\u003cspan class=\"kg\"\u003e~65kg\u003c\/span\u003e\u003c\/label\u003e\n      \u003c\/div\u003e\n    \u003c\/fieldset\u003e\n    \u003cfieldset style=\"margin-top:16px;\"\u003e\n      \u003clegend class=\"row-label\" style=\"margin-bottom:8px; display:block;\"\u003eWinch\u003c\/legend\u003e\n      \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Winch\"\u003e\n        \u003cinput type=\"radio\" name=\"winch\" id=\"winch-none\" value=\"0\" checked\u003e\n        \u003clabel for=\"winch-none\"\u003eNone\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"winch\" id=\"winch-synth\" value=\"25\"\u003e\n        \u003clabel for=\"winch-synth\"\u003eSynthetic rope\u003cspan class=\"kg\"\u003e~25kg\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"winch\" id=\"winch-steel\" value=\"35\"\u003e\n        \u003clabel for=\"winch-steel\"\u003eSteel cable\u003cspan class=\"kg\"\u003e~35kg\u003c\/span\u003e\u003c\/label\u003e\n      \u003c\/div\u003e\n    \u003c\/fieldset\u003e\n    \u003cdiv class=\"rows\" style=\"margin-top:16px;\"\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eSpot lights\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003eLED bar or driving light pair mounted on the bar — about 100% loads the front axle.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"spotlights\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eUnderbody \u0026amp; Chassis\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eMounted between the axles, so only part of the weight transfers forward.\u003c\/p\u003e\n    \u003cdiv class=\"rows\"\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eRock sliders\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003e~20kg\/side along the chassis rail — about 35% of that reaches the front axle.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"sliders\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eBash \/ skid plates\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003eEngine \u0026amp; transfer case plates sit forward of centre — about 75% transfers to the front.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"bash\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eDual \/ extra battery\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003eEngine bay, ahead of the firewall — about 90% loads the front axle.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"battery\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gvm-warn\" id=\"battery-note\"\u003e\n      An extra\/dual battery sits off to one side of the engine bay, so that side needs a touch of preload dialled in to correct the one-sided weight. We'll set this for you.\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eRear-Mounted Gear\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eTray, canopy, boxes — mounted behind the cab, so this loads mostly onto the rear axle.\u003c\/p\u003e\n    \u003cfieldset\u003e\n      \u003clegend class=\"row-label\" style=\"margin-bottom:8px; display:block;\"\u003eTray\u003c\/legend\u003e\n      \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Tray\"\u003e\n        \u003cinput type=\"radio\" name=\"tray\" id=\"tray-none\" value=\"0\" checked\u003e\n        \u003clabel for=\"tray-none\"\u003eNone\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"tray\" id=\"tray-alloy\" value=\"150\"\u003e\n        \u003clabel for=\"tray-alloy\"\u003eAlloy\u003cspan class=\"kg\"\u003e~150kg\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"tray\" id=\"tray-steel\" value=\"272\"\u003e\n        \u003clabel for=\"tray-steel\"\u003eSteel\u003cspan class=\"kg\"\u003e~272kg\u003c\/span\u003e\u003c\/label\u003e\n      \u003c\/div\u003e\n    \u003c\/fieldset\u003e\n    \u003cfieldset style=\"margin-top:16px;\"\u003e\n      \u003clegend class=\"row-label\" style=\"margin-bottom:8px; display:block;\"\u003eTool Box\u003c\/legend\u003e\n      \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Tool box\"\u003e\n        \u003cinput type=\"radio\" name=\"toolbox\" id=\"toolbox-none\" value=\"0\" checked\u003e\n        \u003clabel for=\"toolbox-none\"\u003eNone\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"toolbox\" id=\"toolbox-one\" value=\"85\"\u003e\n        \u003clabel for=\"toolbox-one\"\u003eOne side\u003cspan class=\"kg\"\u003e~85kg\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"toolbox\" id=\"toolbox-two\" value=\"170\"\u003e\n        \u003clabel for=\"toolbox-two\"\u003eTwo sides\u003cspan class=\"kg\"\u003e~170kg\u003c\/span\u003e\u003c\/label\u003e\n      \u003c\/div\u003e\n    \u003c\/fieldset\u003e\n    \u003cdiv class=\"rows\" style=\"margin-top:16px;\"\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eCanopy\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003e~233kg average, fitted over the tub.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"canopy\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eDog box\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003e~90kg average.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"dogbox\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eRear bar\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003e~57kg average.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"rearbar\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eLong range fuel tank\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003e~200kg loaded.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"fueltank\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eDrawers\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003e~81kg unloaded.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"drawers\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"row-text\"\u003e\n          \u003cdiv class=\"row-label\"\u003eFridge + drop slide\u003c\/div\u003e\n          \u003cdiv class=\"row-note\"\u003e~44kg average.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"switch\"\u003e\n          \u003cinput type=\"checkbox\" id=\"fridge\"\u003e\n          \u003cspan class=\"track\"\u003e\u003c\/span\u003e\n          \u003cspan class=\"thumb\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eTowing\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eTow ball weight loads almost straight onto the rear axle.\u003c\/p\u003e\n    \u003cdiv class=\"num-field\"\u003e\n      \u003clabel for=\"towball\"\u003eTow ball weight\u003c\/label\u003e\n      \u003cinput type=\"number\" id=\"towball\" inputmode=\"numeric\" min=\"0\" max=\"350\" step=\"5\" value=\"0\"\u003e\n      \u003cspan class=\"unit-tag\"\u003ekg\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003cdiv style=\"display:none\"\u003e\n  \u003cdiv class=\"divider\"\u003e\n    \u003cdiv class=\"eyebrow\"\u003eFront Result\u003c\/div\u003e\n    \u003cdiv class=\"line\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"card gauge-card\" id=\"front-gauge\"\u003e\n    \u003cp class=\"card-title\"\u003eRecommended Front Tier\u003c\/p\u003e\n    \u003cdiv class=\"readout\"\u003e\n      \u003cdiv class=\"readout-main\"\u003e\n        \u003cdiv class=\"label\"\u003eSuggested tier\u003c\/div\u003e\n        \u003cdiv class=\"tier-name\" id=\"front-tier-value\"\u003eLD\u003c\/div\u003e\n        \u003cdiv class=\"tier-full\" id=\"front-tier-full\"\u003eLight Duty\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"readout-sub\"\u003e\n        \u003cdiv class=\"label\"\u003eEst. front axle load\u003c\/div\u003e\n        \u003cdiv class=\"value\"\u003e\n\u003cspan id=\"weight-value\"\u003e0\u003c\/span\u003e kg\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"scale\"\u003e\n      \u003cdiv class=\"scale-track\"\u003e\n        \u003cdiv class=\"scale-fill\" id=\"scale-fill\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"scale-needle\" id=\"scale-needle\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ticks\"\u003e\n        \u003cspan data-t=\"LD\"\u003eLD\u003c\/span\u003e\n        \u003cspan data-t=\"MD\"\u003eMD\u003c\/span\u003e\n        \u003cspan data-t=\"HD\"\u003eHD\u003c\/span\u003e\n        \u003cspan data-t=\"XHD\"\u003eXHD\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n  \u003cp class=\"foot-note\"\u003eYour setup has been calculated and attached to this order — we'll confirm the exact spec before we build.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"foot-note\"\u003e\n    Guide only. Your answers attach to your order automatically so we see them at checkout, and we'll sanity-check the spec before we build. We're chasing ride comfort and capability together — not stance for its own sake.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n\/* (c) Cubby House Fabworks. All rights reserved. *\/\n(function(){var FRONT_STOCK_KG=1180;var FRONT_BASE_LB=600;var FRONT_CAL_KG=152;var FRONT_CAL_LB=750;var FRONT_MAX_LB=800;var FRONT_SLOPE=(FRONT_CAL_LB-FRONT_BASE_LB)\/FRONT_CAL_KG;var FRONT_TIERS=[{code:'LD',full:'Light Duty',max:650},{code:'MD',full:'Medium Duty',max:700},{code:'HD',full:'Heavy Duty',max:750},{code:'XHD',full:'Extra Heavy Duty',max:800}];var FRAC={bar:{front:1.00,rear:0.00},winch:{front:1.00,rear:0.00},spotlights:{total:3,front:1.00,rear:0.00},battery:{total:20,front:0.90,rear:0.10},bash:{total:15,front:0.75,rear:0.25},sliders:{total:40,front:0.35,rear:0.65},build:{front:0.20,rear:0.80}};\nvar barInputs=document.querySelectorAll('input[name=\"bar\"]');var winchInputs=document.querySelectorAll('input[name=\"winch\"]');var trayInputs=document.querySelectorAll('input[name=\"tray\"]');var toolboxInputs=document.querySelectorAll('input[name=\"toolbox\"]');var canopy=document.getElementById('canopy');var dogbox=document.getElementById('dogbox');var rearbar=document.getElementById('rearbar');var fueltank=document.getElementById('fueltank');var drawers=document.getElementById('drawers');var fridge=document.getElementById('fridge');var sliders=document.getElementById('sliders');var spotlights=document.getElementById('spotlights');var bash=document.getElementById('bash');var battery=document.getElementById('battery');var towball=document.getElementById('towball');var batteryNote=document.getElementById('battery-note');var frontTierValueEl=document.getElementById('front-tier-value');var frontTierFullEl=document.getElementById('front-tier-full');var weightValueEl=document.getElementById('weight-value');var scaleFill=document.getElementById('scale-fill');var scaleNeedle=document.getElementById('scale-needle');var frontTicks=document.querySelectorAll('#front-gauge .ticks span');\nvar nudgeEl=document.getElementById('chf-nudge');var nudgeTextEl=document.getElementById('chf-nudge-text');var touched=false;var curFrontTier=null,curRearTier=null,curTotalRearKg=0;\nfunction checkedVal(list){for(var i=0;i\u003clist.length;i++)if(list[i].checked)return parseFloat(list[i].value);return 0;}\nfunction label(list){for(var i=0;i\u003clist.length;i++){if(list[i].checked){var lab=document.querySelector('label[for=\"'+list[i].id+'\"]');return lab?lab.childNodes[0].textContent.trim():list[i].value;}}\nreturn'';}\nfunction rearGearTotal(){var t=checkedVal(trayInputs)+checkedVal(toolboxInputs);if(canopy.checked)t+=233;if(dogbox.checked)t+=90;if(rearbar.checked)t+=57;if(fueltank.checked)t+=200;if(drawers.checked)t+=81;if(fridge.checked)t+=44;return t;}\nfunction rearGearSummary(){var parts=[];var trayLabel=label(trayInputs);var toolboxLabel=label(toolboxInputs);if(trayLabel\u0026\u0026trayLabel!=='None')parts.push('Tray: '+trayLabel);if(toolboxLabel\u0026\u0026toolboxLabel!=='None')parts.push('Tool box: '+toolboxLabel);if(canopy.checked)parts.push('Canopy');if(dogbox.checked)parts.push('Dog box');if(rearbar.checked)parts.push('Rear bar');if(fueltank.checked)parts.push('Long range fuel tank');if(drawers.checked)parts.push('Drawers');if(fridge.checked)parts.push('Fridge + drop slide');return parts;}\nfunction accessorySummary(){var parts=[];var barLabel=label(barInputs);var winchLabel=label(winchInputs);if(barLabel\u0026\u0026barLabel!=='None')parts.push('Bull bar: '+barLabel);if(winchLabel\u0026\u0026winchLabel!=='None')parts.push('Winch: '+winchLabel);if(sliders.checked)parts.push('Rock sliders');if(spotlights.checked)parts.push('Spot lights');if(bash.checked)parts.push('Bash plates');if(battery.checked)parts.push('Dual battery');parts=parts.concat(rearGearSummary());return parts.length?parts.join(', '):'Stock, no accessories';}\nfunction computeAdded(){var barTotal=checkedVal(barInputs);var winchTotal=checkedVal(winchInputs);var buildTotal=rearGearTotal();var towballKg=Math.max(0,parseFloat(towball.value)||0);var frontKg=barTotal*FRAC.bar.front+winchTotal*FRAC.winch.front+buildTotal*FRAC.build.front;var rearKg=barTotal*FRAC.bar.rear+winchTotal*FRAC.winch.rear+buildTotal*FRAC.build.rear;if(sliders.checked){frontKg+=FRAC.sliders.total*FRAC.sliders.front;rearKg+=FRAC.sliders.total*FRAC.sliders.rear;}\nif(spotlights.checked){frontKg+=FRAC.spotlights.total*FRAC.spotlights.front;rearKg+=FRAC.spotlights.total*FRAC.spotlights.rear;}\nif(bash.checked){frontKg+=FRAC.bash.total*FRAC.bash.front;rearKg+=FRAC.bash.total*FRAC.bash.rear;}\nif(battery.checked){frontKg+=FRAC.battery.total*FRAC.battery.front;rearKg+=FRAC.battery.total*FRAC.battery.rear;}\nrearKg+=towballKg;return{frontKg:frontKg,rearKg:rearKg,towballKg:towballKg};}\nfunction update(){var added=computeAdded();var totalFrontKg=1180+added.frontKg;var rateRaw=Math.min(FRONT_MAX_LB,Math.max(FRONT_BASE_LB,FRONT_BASE_LB+added.frontKg*FRONT_SLOPE));curFrontTier=FRONT_TIERS[FRONT_TIERS.length-1];for(var i=0;i\u003cFRONT_TIERS.length;i++){if(rateRaw\u003cFRONT_TIERS[i].max){curFrontTier=FRONT_TIERS[i];break;}}\nfrontTierValueEl.textContent=curFrontTier.code;frontTierFullEl.textContent=curFrontTier.full;weightValueEl.textContent=Math.round(totalFrontKg);var frontPct=((rateRaw-FRONT_BASE_LB)\/(FRONT_MAX_LB-FRONT_BASE_LB))*100;scaleFill.style.width=frontPct+'%';scaleNeedle.style.left=frontPct+'%';frontTicks.forEach(function(t){t.classList.toggle('active',t.getAttribute('data-t')===curFrontTier.code);});batteryNote.classList.toggle('show',battery.checked);syncToShopify(added,totalFrontKg);}\nvar chfAccuracyCheckbox=document.getElementById('chf-accuracy-confirm');var chfNoteTimer=null;\nfunction chfBuildNoteText(){var lines=[];lines.push('Suggested Front Duty Tier: '+document.getElementById('front-tier-value').textContent+' ('+document.getElementById('front-tier-full').textContent+')');lines.push('Est. Front Axle Load: '+document.getElementById('weight-value').textContent+'kg');lines.push('Accessories Fitted: '+accessorySummary());lines.push('Extra Battery Preload Needed: '+(document.getElementById('battery').checked?'Yes':'No'));var chfTowball=parseFloat(document.getElementById('towball').value)||0;if(chfTowball\u003e0)lines.push('Tow Ball Weight: '+chfTowball+'kg');lines.push('Customer confirmed info accurate: '+(chfAccuracyCheckbox\u0026\u0026chfAccuracyCheckbox.checked?'Yes':'No'));return lines.join('\\n');}\nfunction syncToShopify(added, totalFrontKg){var text=chfBuildNoteText();if(!chfAccuracyCheckbox||!chfAccuracyCheckbox.checked)return;if(chfNoteTimer)clearTimeout(chfNoteTimer);chfNoteTimer=setTimeout(function(){fetch('\/cart\/update.js',{method:'POST',headers:{'Content-Type':'application\/json'},body:JSON.stringify({note:text})}).catch(function(){});},400);}\nfunction setTouched(){if(touched)return;touched=true;if(nudgeEl){nudgeEl.classList.add('thanked');}\nif(nudgeTextEl){nudgeTextEl.innerHTML='Thanks — we\\'ve got your setup details.';}}\n[].concat([].slice.call(barInputs),[].slice.call(winchInputs),[].slice.call(trayInputs),[].slice.call(toolboxInputs),canopy,dogbox,rearbar,fueltank,drawers,fridge,[sliders,bash,battery,spotlights]).forEach(function(el){el.addEventListener('change',function(){setTouched();update();});});towball.addEventListener('input',function(){setTouched();update();});update();if(chfAccuracyCheckbox){chfAccuracyCheckbox.addEventListener('change',function(){if(typeof update==='function')update();});}document.querySelectorAll('form[action*=\"\/cart\/add\"]').forEach(function(form){form.addEventListener('submit',function(e){if(!chfAccuracyCheckbox||!chfAccuracyCheckbox.checked){e.preventDefault();var cb=document.getElementById('chf-accuracy-callout');if(cb){cb.style.borderColor='#c0392b';cb.scrollIntoView({behavior:'smooth',block:'center'});}if(chfAccuracyCheckbox)chfAccuracyCheckbox.focus();alert('Please confirm the setup information is accurate before ordering.');}});});})();\n\u003c\/script\u003e\n\u003c\/div\u003e","brand":"Cubby House Fabworks","offers":[{"title":"Default","offer_id":58341062869295,"sku":"CORTT003FM-PAIR-CS2001F","price":920.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/nitro_full_kit_4db03c23-ff52-4762-b0fd-ac9d4357bbb7.png?v=1787016299","url":"https:\/\/cubbyhousefabworks.com.au\/products\/nitro-pro-front-strut-coil-spring-pair-toyota-hilux-n70-0-2in-lift","provider":"Cubby House Fabworks","version":"1.0","type":"link"}