{"title":"Bilstein 6112 Coilovers","description":"\u003cp\u003eBilstein 6112 big-bore front coilover shock absorbers — the full range across every vehicle we fit them to, from Hilux N70\/N80 to LandCruiser 200 Series and Prado 120\/150\/250. Height-adjustable, monotube design, matched springs. Free spring rate calculator on every kit.\u003c\/p\u003e","products":[{"product_id":"bilstein-6112-front-coilovers-hilux-n70-n80","title":"Bilstein 6112 Front Coilovers (Shock Absorbers) | Toyota Hilux N70 N80 | 2.5in Body \/ Big Bore","description":"\u003cp\u003e\u003cstrong\u003eBilstein 6112 B60 big-bore front coilovers for the Hilux N70 and N80.\u003c\/strong\u003e Pick your lift height above (2in or 3in), then run the calculator below so we can match your spring rate — it attaches to your order automatically, so most builds need no back and forth.\u003c\/p\u003e\n\u003cstyle\u003e\n\n  .chf-calc {\n    --bg: #f2efe8;\n    --panel: #ffffff;\n    --panel-2: #f8f6f1;\n    --border: #ddd8cc;\n    --border-strong: #c7c1b2;\n    --text: #1b1d22;\n    --text-dim: #6b6e76;\n    --text-faint: #9a9da3;\n    --accent: #c96a1e;\n    --accent-ink: #ffffff;\n    --accent-soft: rgba(201, 106, 30, 0.1);\n    --accent-soft-strong: rgba(201, 106, 30, 0.2);\n    --ok: #5f7a3d;\n    --needle-shadow: rgba(0, 0, 0, 0.18);\n    --track: #e4dfd2;\n    --focus: #1b1d22;\n  }\n\n  @media (prefers-color-scheme: dark) {\n    .chf-calc {\n      --bg: #14161a;\n      --panel: #1c1f26;\n      --panel-2: #21242c;\n      --border: #33373f;\n      --border-strong: #454a54;\n      --text: #f0ede6;\n      --text-dim: #a9acb3;\n      --text-faint: #6f727a;\n      --accent: #e8842d;\n      --accent-ink: #14161a;\n      --accent-soft: rgba(232, 132, 45, 0.14);\n      --accent-soft-strong: rgba(232, 132, 45, 0.26);\n      --ok: #93b06d;\n      --needle-shadow: rgba(0, 0, 0, 0.5);\n      --track: #2a2e36;\n      --focus: #f0ede6;\n    }\n  }\n\n  .chf-calc[data-theme=\"dark\"] {\n    --bg: #14161a;\n    --panel: #1c1f26;\n    --panel-2: #21242c;\n    --border: #33373f;\n    --border-strong: #454a54;\n    --text: #f0ede6;\n    --text-dim: #a9acb3;\n    --text-faint: #6f727a;\n    --accent: #e8842d;\n    --accent-ink: #14161a;\n    --accent-soft: rgba(232, 132, 45, 0.14);\n    --accent-soft-strong: rgba(232, 132, 45, 0.26);\n    --ok: #93b06d;\n    --needle-shadow: rgba(0, 0, 0, 0.5);\n    --track: #2a2e36;\n    --focus: #f0ede6;\n  }\n\n  .chf-calc[data-theme=\"light\"] {\n    --bg: #f2efe8;\n    --panel: #ffffff;\n    --panel-2: #f8f6f1;\n    --border: #ddd8cc;\n    --border-strong: #c7c1b2;\n    --text: #1b1d22;\n    --text-dim: #6b6e76;\n    --text-faint: #9a9da3;\n    --accent: #c96a1e;\n    --accent-ink: #ffffff;\n    --accent-soft: rgba(201, 106, 30, 0.1);\n    --accent-soft-strong: rgba(201, 106, 30, 0.2);\n    --ok: #5f7a3d;\n    --needle-shadow: rgba(0, 0, 0, 0.18);\n    --track: #e4dfd2;\n    --focus: #1b1d22;\n  }\n\n  .chf-calc, .chf-calc * { box-sizing: border-box; }\n  .chf-calc {\n    background: var(--bg);\n    color: var(--text);\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n    -webkit-font-smoothing: antialiased;\n    padding: 40px 16px 64px;\n    border-radius: 6px;\n  }\n\n  .chf-calc .wrap { width: 100%; max-width: 640px; margin: 0 auto; }\n\n  .eyebrow {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11px;\n    font-weight: 500;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: var(--accent);\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 10px;\n  }\n  .eyebrow::before {\n    content: \"\";\n    width: 16px;\n    height: 1.5px;\n    background: var(--accent);\n    display: inline-block;\n  }\n\n  .chf-calc h1 {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.01em;\n    font-size: clamp(28px, 6vw, 38px);\n    line-height: 1.05;\n    margin: 0 0 10px;\n    text-wrap: balance;\n    color: var(--text);\n    background: none;\n    border: none;\n    box-shadow: none;\n  }\n\n  .lede {\n    font-size: 15px;\n    line-height: 1.55;\n    color: var(--text-dim);\n    max-width: 54ch;\n    margin: 0 0 28px;\n  }\n  .lede strong { color: var(--text); font-weight: 600; }\n\n  .chf-calc section.card {\n    background: var(--panel);\n    border: 1px solid var(--border);\n    border-radius: 4px;\n    padding: 22px 22px 24px;\n    margin-bottom: 16px;\n  }\n\n  .card-title {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.04em;\n    font-size: 13px;\n    color: var(--text-dim);\n    margin: 0 0 4px;\n  }\n  .card-sub {\n    font-size: 13px;\n    color: var(--text-faint);\n    margin: 0 0 16px;\n    line-height: 1.5;\n  }\n\n  \/* segmented control *\/\n  .seg {\n    display: grid;\n    grid-auto-flow: column;\n    grid-auto-columns: 1fr;\n    gap: 6px;\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-radius: 3px;\n    padding: 4px;\n  }\n  .seg.wide-2 { grid-auto-columns: 1fr; }\n  .seg label {\n    position: relative;\n    text-align: center;\n    padding: 9px 8px;\n    font-size: 12.5px;\n    font-weight: 600;\n    color: var(--text-dim);\n    border-radius: 2px;\n    cursor: pointer;\n    user-select: none;\n    transition: background 0.15s ease, color 0.15s ease;\n    line-height: 1.3;\n  }\n  .seg label .kg {\n    display: block;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-weight: 400;\n    font-size: 10.5px;\n    color: var(--text-faint);\n    margin-top: 2px;\n  }\n  .seg input { position: absolute; opacity: 0; pointer-events: none; }\n  .seg input:checked + label,\n  .seg label.checked {\n    background: var(--accent);\n    color: var(--accent-ink);\n  }\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\n  \/* accessory rows with toggle *\/\n  .rows { display: flex; flex-direction: column; }\n  .row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    padding: 13px 0;\n    border-top: 1px solid var(--border);\n  }\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\n  .switch {\n    position: relative;\n    width: 42px;\n    height: 24px;\n    flex: none;\n  }\n  .switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; z-index: 1; }\n  .switch .track {\n    position: absolute;\n    inset: 0;\n    background: var(--track);\n    border: 1px solid var(--border-strong);\n    border-radius: 999px;\n    transition: background 0.15s ease, border-color 0.15s ease;\n  }\n  .switch .thumb {\n    position: absolute;\n    top: 2px;\n    left: 2px;\n    width: 18px;\n    height: 18px;\n    border-radius: 50%;\n    background: var(--panel);\n    box-shadow: 0 1px 2px rgba(0,0,0,0.25);\n    transition: transform 0.18s cubic-bezier(.4,0,.2,1);\n  }\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\n  .chf-calc fieldset { border: none; margin: 0; padding: 0; }\n  .chf-calc legend { padding: 0; }\n\n  \/* gauge *\/\n  .gauge-card { padding-bottom: 26px; }\n  .readout {\n    display: flex;\n    align-items: baseline;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 10px 20px;\n    margin-bottom: 20px;\n  }\n  .readout-main .label {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11px;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n    color: var(--text-faint);\n    margin-bottom: 4px;\n  }\n  .readout-main .value {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    font-size: 44px;\n    line-height: 1;\n    color: var(--accent);\n    font-variant-numeric: tabular-nums;\n  }\n  .readout-main .value .unit {\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n    font-weight: 600;\n    font-size: 17px;\n    color: var(--text-dim);\n    margin-left: 4px;\n  }\n  .readout-sub { text-align: right; }\n  .readout-sub .label {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11px;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    color: var(--text-faint);\n    margin-bottom: 4px;\n  }\n  .readout-sub .value {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 20px;\n    font-weight: 500;\n    color: var(--text);\n    font-variant-numeric: tabular-nums;\n  }\n\n  .scale { position: relative; margin: 0 4px 6px; }\n  .scale-track {\n    position: relative;\n    height: 8px;\n    border-radius: 999px;\n    background: var(--track);\n    border: 1px solid var(--border);\n    overflow: visible;\n  }\n  .scale-fill {\n    position: absolute;\n    top: -1px; bottom: -1px; left: -1px;\n    border-radius: 999px;\n    background: linear-gradient(90deg, var(--ok), var(--accent));\n    width: 0%;\n    transition: width 0.35s cubic-bezier(.4,0,.2,1);\n  }\n  .scale-needle {\n    position: absolute;\n    top: 50%;\n    left: 0%;\n    width: 3px;\n    height: 26px;\n    background: var(--text);\n    border-radius: 2px;\n    transform: translate(-50%, -50%);\n    transition: left 0.35s cubic-bezier(.4,0,.2,1);\n    box-shadow: 0 2px 5px var(--needle-shadow);\n  }\n  .scale-needle::after {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    top: -6px;\n    width: 9px;\n    height: 9px;\n    background: var(--text);\n    border-radius: 50%;\n    transform: translateX(-50%);\n  }\n  .ticks {\n    display: flex;\n    justify-content: space-between;\n    margin-top: 10px;\n  }\n  .ticks span {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11.5px;\n    font-weight: 500;\n    color: var(--text-faint);\n    position: relative;\n    font-variant-numeric: tabular-nums;\n  }\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\n  .stock-flag {\n    position: absolute;\n    top: -22px;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 10px;\n    letter-spacing: 0.05em;\n    text-transform: uppercase;\n    color: var(--text-faint);\n    left: 0%;\n    transform: translateX(-50%);\n    white-space: nowrap;\n  }\n\n  \/* lift height *\/\n  .lift-note {\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-left: 3px solid var(--accent);\n    border-radius: 3px;\n    padding: 12px 14px;\n    font-size: 12.5px;\n    line-height: 1.55;\n    color: var(--text-dim);\n    margin-top: 14px;\n  }\n  .lift-note strong { color: var(--text); }\n  .lift-note.warn { border-left-color: var(--text-faint); }\n\n  \/* methodology disclosure *\/\n  .chf-calc details.method {\n    background: transparent;\n    border: 1px dashed var(--border-strong);\n    border-radius: 4px;\n    padding: 14px 16px;\n  }\n  details.method summary {\n    cursor: pointer;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11.5px;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    font-weight: 500;\n    color: var(--text-dim);\n    list-style: none;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n  details.method summary::-webkit-details-marker { display: none; }\n  details.method summary::before {\n    content: \"+\";\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-size: 15px;\n    color: var(--accent);\n    width: 14px;\n  }\n  details.method[open] summary::before { content: \"–\"; }\n  .method-body {\n    margin-top: 12px;\n    font-size: 13px;\n    line-height: 1.6;\n    color: var(--text-dim);\n  }\n  .method-body table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 12.5px; }\n  .method-body th, .method-body td {\n    text-align: left;\n    padding: 6px 8px 6px 0;\n    border-bottom: 1px solid var(--border);\n  }\n  .method-body th { color: var(--text-faint); font-weight: 500; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; }\n  .method-body td.num { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-variant-numeric: tabular-nums; color: var(--text); }\n\n  .foot-note {\n    font-size: 12px;\n    color: var(--text-faint);\n    line-height: 1.6;\n    margin-top: 18px;\n    padding-top: 16px;\n    border-top: 1px solid var(--border);\n  }\n\n  \/* philosophy callout *\/\n  .callout {\n    display: flex;\n    gap: 12px;\n    align-items: flex-start;\n    background: var(--accent-soft);\n    border: 1px solid var(--accent-soft-strong);\n    border-radius: 4px;\n    padding: 14px 16px;\n    margin: 0 0 28px;\n  }\n  .callout .mark {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    font-size: 20px;\n    color: var(--accent);\n    line-height: 1.2;\n    flex: none;\n  }\n  .callout p {\n    margin: 0;\n    font-size: 13.5px;\n    line-height: 1.55;\n    color: var(--text);\n  }\n  .callout strong { color: var(--accent); }\n\n  \/* section divider between front and rear *\/\n  .divider {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin: 36px 0 20px;\n  }\n  .divider .line { flex: 1; height: 1px; background: var(--border); }\n  .divider .eyebrow { margin-bottom: 0; }\n\n  .num-field {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-radius: 3px;\n    padding: 4px 4px 4px 14px;\n  }\n  .num-field label { font-size: 13px; font-weight: 600; flex: 1; }\n  .num-field input {\n    width: 90px;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 15px;\n    font-weight: 500;\n    color: var(--text);\n    background: var(--panel);\n    border: 1px solid var(--border-strong);\n    border-radius: 2px;\n    padding: 8px 10px;\n    text-align: right;\n    font-variant-numeric: tabular-nums;\n  }\n  .num-field input:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }\n  .num-field .unit-tag {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 12px;\n    color: var(--text-faint);\n    padding-right: 12px;\n  }\n\n  .gvm-warn {\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-left: 3px solid var(--accent);\n    border-radius: 3px;\n    padding: 12px 14px;\n    font-size: 12.5px;\n    line-height: 1.55;\n    color: var(--text-dim);\n    margin-top: 14px;\n    display: none;\n  }\n  .gvm-warn.show { display: block; }\n  .gvm-warn strong { color: var(--text); }\n\n  .tier-name {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    font-size: 44px;\n    line-height: 1;\n    color: var(--accent);\n  }\n  .tier-full {\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n    font-weight: 600;\n    font-size: 15px;\n    color: var(--text-dim);\n    margin-top: 6px;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .scale-fill, .scale-needle { transition: none; }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"chf-calc\"\u003e\n\u003cdiv class=\"wrap\"\u003e\n  \u003cdiv class=\"eyebrow\"\u003eSpring Rate Calculator\u003c\/div\u003e\n  \u003ch1\u003eDial in your front end.\u003c\/h1\u003e\n  \u003cp class=\"lede\"\u003e\n    A stock front axle sits at \u003cstrong\u003e1180kg\u003c\/strong\u003e and runs a \u003cstrong\u003e600lb\u003c\/strong\u003e coil. Every kilo\n    you bolt on shifts that number — but only the fraction that actually lands on the\n    front axle. Tell us what's fitted and we'll work out the rest, then attach it to your order.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"callout\" id=\"chf-nudge-banner\"\u003e\n    \u003cspan class=\"mark\"\u003e!\u003c\/span\u003e\n    \u003cp 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\/p\u003e\n  \u003c\/div\u003e\n\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\n    odd weekend track — not the one loaded trip you do three times a year. Nobody enjoys\n    a daily-driven brick just so it's ready for a trip it takes twice a summer. If your\n    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\"\u003eLift Height\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eSet above — this reflects whatever you've picked.\u003c\/p\u003e\n    \u003cdiv class=\"lift-note\" id=\"lift-note\"\u003e\n      On the 6112, 2in lands on the \u003cstrong\u003e7th circlip\u003c\/strong\u003e — each clip is 5mm of adjuster travel, worth roughly 10mm of ride height. Nothing above 3in: past that, ride quality falls off fast for no real gain, and that's not what we build.\n    \u003c\/div\u003e\n  \u003c\/section\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\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eOverall Build Weight\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eTray, canopy, tools, general load — sits mostly behind the cab, so only a small share reaches the front axle.\u003c\/p\u003e\n    \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Overall build weight\"\u003e\n      \u003cinput type=\"radio\" name=\"build\" id=\"build-stock\" value=\"0\" checked\u003e\n      \u003clabel for=\"build-stock\"\u003eStock\u003cspan class=\"kg\"\u003etub, no load\u003c\/span\u003e\u003c\/label\u003e\n      \u003cinput type=\"radio\" name=\"build\" id=\"build-mod\" value=\"100\"\u003e\n      \u003clabel for=\"build-mod\"\u003eModerate\u003cspan class=\"kg\"\u003ecanopy + tools, ~100kg\u003c\/span\u003e\u003c\/label\u003e\n      \u003cinput type=\"radio\" name=\"build\" id=\"build-heavy\" value=\"200\"\u003e\n      \u003clabel for=\"build-heavy\"\u003eHeavy\u003cspan class=\"kg\"\u003etray + full kit, ~200kg\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003cdiv style=\"display:none\"\u003e\n\u003csection class=\"card gauge-card\" id=\"front-gauge\"\u003e\n    \u003cp class=\"card-title\"\u003eRecommended Spring Rate\u003c\/p\u003e\n    \u003cdiv class=\"readout\"\u003e\n      \u003cdiv class=\"readout-main\"\u003e\n        \u003cdiv class=\"label\"\u003eSuggested spring\u003c\/div\u003e\n        \u003cdiv class=\"value\"\u003e\n\u003cspan id=\"rate-value\"\u003e600\u003c\/span\u003e\u003cspan class=\"unit\"\u003elb\u003c\/span\u003e\n\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\"\u003e1180\u003c\/span\u003e kg\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"scale\"\u003e\n      \u003cspan class=\"stock-flag\" id=\"stock-flag\" style=\"left:0%;\"\u003estock\u003c\/span\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-r=\"600\"\u003e600\u003c\/span\u003e\n        \u003cspan data-r=\"650\"\u003e650\u003c\/span\u003e\n        \u003cspan data-r=\"700\"\u003e700\u003c\/span\u003e\n        \u003cspan data-r=\"750\"\u003e750\u003c\/span\u003e\n        \u003cspan data-r=\"800\"\u003e800\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e\n\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\n\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 FRAC={bar:{front:1.00},winch:{front:1.00},spotlights:{total:3,front:1.00},battery:{total:20,front:0.90},bash:{total:15,front:0.75},sliders:{total:40,front:0.35},build:{front:0.20}};var barInputs=document.querySelectorAll('input[name=\"bar\"]');var winchInputs=document.querySelectorAll('input[name=\"winch\"]');var buildInputs=document.querySelectorAll('input[name=\"build\"]');var sliders=document.getElementById('sliders');var spotlights=document.getElementById('spotlights');var bash=document.getElementById('bash');var battery=document.getElementById('battery');var rateValueEl=document.getElementById('rate-value');var weightValueEl=document.getElementById('weight-value');var scaleFill=document.getElementById('scale-fill');var scaleNeedle=document.getElementById('scale-needle');var liftNote=document.getElementById('lift-note');var batteryNote=document.getElementById('battery-note');var frontTicks=document.querySelectorAll('#front-gauge .ticks span');var touched=false;var nudgeBanner=document.getElementById('chf-nudge-banner');var nudgeText=document.getElementById('chf-nudge-text');function toggleNudge(){if(!nudgeBanner||!nudgeText)return;if(touched){nudgeText.textContent=\"Thanks — we've got your setup details.\";}else{nudgeText.textContent=\"Please 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.\";}}\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 getLiftHeight(){var radios=document.querySelectorAll('variant-selects input[type=\"radio\"]');for(var i=0;i\u003cradios.length;i++){if(radios[i].name.trim().indexOf('Lift Height')===0\u0026\u0026radios[i].checked){return radios[i].value.trim();}}\nreturn'2in';}\nfunction computeAdded(){var barTotal=checkedVal(barInputs);var winchTotal=checkedVal(winchInputs);var buildTotal=checkedVal(buildInputs);var frontKg=barTotal*FRAC.bar.front+winchTotal*FRAC.winch.front+buildTotal*FRAC.build.front;if(sliders.checked)frontKg+=FRAC.sliders.total*FRAC.sliders.front;if(spotlights.checked)frontKg+=FRAC.spotlights.total*FRAC.spotlights.front;if(bash.checked)frontKg+=FRAC.bash.total*FRAC.bash.front;if(battery.checked)frontKg+=FRAC.battery.total*FRAC.battery.front;return frontKg;}\nfunction accessorySummary(){var parts=[];var barLabel=label(barInputs);var winchLabel=label(winchInputs);var buildLabel=label(buildInputs);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');if(buildLabel\u0026\u0026buildLabel!=='Stock')parts.push('Build: '+buildLabel);return parts.length?parts.join(', '):'Stock, no accessories';}\nfunction update(){var frontKgAdded=computeAdded();var totalFrontKg=FRONT_STOCK_KG+frontKgAdded;var rateRaw=FRONT_BASE_LB+frontKgAdded*FRONT_SLOPE;rateRaw=Math.min(FRONT_MAX_LB,Math.max(FRONT_BASE_LB,rateRaw));var rateRounded=Math.round(rateRaw\/50)*50;rateRounded=Math.min(FRONT_MAX_LB,Math.max(FRONT_BASE_LB,rateRounded));rateValueEl.textContent=rateRounded;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){var r=parseInt(t.getAttribute('data-r'),10);t.classList.toggle('active',r===rateRounded);});var lift=getLiftHeight();if(lift==='2in'){liftNote.innerHTML='On the 6112, 2in lands on the \u003cstrong\u003e7th circlip\u003c\/strong\u003e — each clip is 5mm of adjuster travel, worth roughly 10mm of ride height. Nothing above 3in: past that, ride quality falls off fast for no real gain, and that\\'s not what we build.';liftNote.classList.remove('warn');}else{liftNote.innerHTML='3in is the top of our range — about \u003cstrong\u003e2.5 clips\u003c\/strong\u003e further up from the 6112\\'s 2in setting. We stop here on purpose: taller than this and ride quality drops off fast for no real gain, and chasing stance over how the ute actually drives isn\\'t what we\\'re about.';liftNote.classList.add('warn');}\nbatteryNote.classList.toggle('show',battery.checked);syncToShopify(rateRounded,totalFrontKg,lift);}\nvar chfAccuracyCheckbox=document.getElementById('chf-accuracy-confirm');var chfNoteTimer=null;\nfunction chfBuildNoteText(){var lines=[];lines.push('Lift Height: '+getLiftHeight());lines.push('Suggested Spring Rate: '+document.getElementById('rate-value').textContent+'lb');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'));lines.push('Customer confirmed info accurate: '+(chfAccuracyCheckbox\u0026\u0026chfAccuracyCheckbox.checked?'Yes':'No'));return lines.join('\\n');}\nfunction syncToShopify(rateLb, frontKg, lift){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);}\n[].concat([].slice.call(barInputs),[].slice.call(winchInputs),[].slice.call(buildInputs),[sliders,bash,battery,spotlights]).forEach(function(el){el.addEventListener('change',function(){touched=true;toggleNudge();update();});});document.addEventListener('change',function(e){if(e.target.matches\u0026\u0026e.target.matches('variant-selects input[type=\"radio\"]')\u0026\u0026e.target.name.trim().indexOf('Lift Height')===0){update();}});toggleNudge();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\n\n\u003cp\u003e\u003cstrong\u003eBuilt tough for Aussie roads.\u003c\/strong\u003e Sick of bottoming out or a harsh ride up front? A 2.0in body doesn't cut it once you're loaded. These big-bore 2.5in Bilsteins bring a much larger piston and far more oil volume, which means a smoother ride over corrugations and potholes, better front-end control, and far less fade on long hot trips or hard trails.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhy they hit different.\u003c\/strong\u003e Bilstein's mono-tube gas pressure design keeps oil and nitrogen separated under 200+ psi, virtually eliminating cavitation and shock fade — consistent performance even when things get rowdy. They run vulcanised rubber bushings rather than noisy spherical gear, so the ute stays quiet and comfortable even loaded up or flexing through rough tracks.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAdjustable and properly tuned.\u003c\/strong\u003e Circlip-style height adjustment means no guesswork and no silly preload. A matched spring plus correct valving gives you balance, not just height. Plenty of people get this wrong by running an overly stiff spring purely to make the ute sit tall — that's not how we do it. We're chasing ride comfort and capability together.\u003c\/p\u003e\n\u003cp\u003eI run these on my own ute. That's how much I rate them.\u003c\/p\u003e\n\u003ch3\u003eGood to know\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eYou can transfer the top hat from your factory setup to save a few dollars — or add a note at checkout and we'll assemble with a new one.\u003c\/li\u003e\n\u003cli\u003eLead time is typically 2–4 weeks on these units. Email us if you need it sooner and we'll check current stock.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eShipping:\u003c\/strong\u003e these are big, heavy 2.5in body shocks — an $80 shipping charge applies.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Cubby House Fabworks","offers":[{"title":"2in","offer_id":52033255407919,"sku":null,"price":3050.0,"currency_code":"AUD","in_stock":true},{"title":"3in","offer_id":58287548367151,"sku":null,"price":3050.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/Screenshot_2024-11-10_at_3.17.31_pm.png?v=1750046472"},{"product_id":"big-bore-lift-kit-bilstein-6112-platinum-630-rear-leaf-pack-hilux-n70-n80","title":"Big Bore Lift Kit — Bilstein 6112 2.5in Body + Platinum 630 Rear + Leaf Pack (Hilux N70\/N80)","description":"\u003cp\u003eA complete front-to-rear lift package pairing Bilstein's 6112 B60 2.5in big-bore front coilover with a Bilstein Platinum rear shock, matched to a duty-rated leaf spring pack and fresh leaf spring bushes. Choose your vehicle (N70 or N80), your leaf pack duty tier, and optionally add a CalOffroad Fixed Upper Control Arm Kit (2° caster) to correct geometry at ride height.\u003c\/p\u003e\n\u003cdiv style=\"background:#f8f6f1;border:1px solid #ddd8cc;border-left:4px solid #c96a1e;border-radius:4px;padding:14px 18px;margin:0 0 24px;font-size:14px;line-height:1.6;color:#1b1d22;\"\u003e\n\u003cstrong\u003eSelect the correct Vehicle before ordering.\u003c\/strong\u003e N70 (2005–2015) and N80 (2015-on) Hilux use different rear leaf spring packs and different shackles — they are not interchangeable. Use the \u003cstrong\u003eVehicle\u003c\/strong\u003e option above to pick N70 or N80; the leaf pack duty tier, the calculator below, and the parts we build for you are all matched to that selection.\u003c\/div\u003e\n\u003cmeta charset=\"UTF-8\"\u003e\n\u003ctitle\u003eBig Bore Lift Kit Calculator — Cubby House Fabworks\u003c\/title\u003e\n\u003cstyle\u003e\n\n  .chf-calc {\n    --bg: #f2efe8;\n    --panel: #ffffff;\n    --panel-2: #f8f6f1;\n    --border: #ddd8cc;\n    --border-strong: #c7c1b2;\n    --text: #1b1d22;\n    --text-dim: #6b6e76;\n    --text-faint: #9a9da3;\n    --accent: #c96a1e;\n    --accent-ink: #ffffff;\n    --accent-soft: rgba(201, 106, 30, 0.1);\n    --accent-soft-strong: rgba(201, 106, 30, 0.2);\n    --ok: #5f7a3d;\n    --needle-shadow: rgba(0, 0, 0, 0.18);\n    --track: #e4dfd2;\n    --focus: #1b1d22;\n  }\n\n  @media (prefers-color-scheme: dark) {\n    .chf-calc {\n      --bg: #14161a;\n      --panel: #1c1f26;\n      --panel-2: #21242c;\n      --border: #33373f;\n      --border-strong: #454a54;\n      --text: #f0ede6;\n      --text-dim: #a9acb3;\n      --text-faint: #6f727a;\n      --accent: #e8842d;\n      --accent-ink: #14161a;\n      --accent-soft: rgba(232, 132, 45, 0.14);\n      --accent-soft-strong: rgba(232, 132, 45, 0.26);\n      --ok: #93b06d;\n      --needle-shadow: rgba(0, 0, 0, 0.5);\n      --track: #2a2e36;\n      --focus: #f0ede6;\n    }\n  }\n\n  .chf-calc[data-theme=\"dark\"] {\n    --bg: #14161a;\n    --panel: #1c1f26;\n    --panel-2: #21242c;\n    --border: #33373f;\n    --border-strong: #454a54;\n    --text: #f0ede6;\n    --text-dim: #a9acb3;\n    --text-faint: #6f727a;\n    --accent: #e8842d;\n    --accent-ink: #14161a;\n    --accent-soft: rgba(232, 132, 45, 0.14);\n    --accent-soft-strong: rgba(232, 132, 45, 0.26);\n    --ok: #93b06d;\n    --needle-shadow: rgba(0, 0, 0, 0.5);\n    --track: #2a2e36;\n    --focus: #f0ede6;\n  }\n\n  .chf-calc[data-theme=\"light\"] {\n    --bg: #f2efe8;\n    --panel: #ffffff;\n    --panel-2: #f8f6f1;\n    --border: #ddd8cc;\n    --border-strong: #c7c1b2;\n    --text: #1b1d22;\n    --text-dim: #6b6e76;\n    --text-faint: #9a9da3;\n    --accent: #c96a1e;\n    --accent-ink: #ffffff;\n    --accent-soft: rgba(201, 106, 30, 0.1);\n    --accent-soft-strong: rgba(201, 106, 30, 0.2);\n    --ok: #5f7a3d;\n    --needle-shadow: rgba(0, 0, 0, 0.18);\n    --track: #e4dfd2;\n    --focus: #1b1d22;\n  }\n\n  .chf-calc, .chf-calc * { box-sizing: border-box; }\n  .chf-calc {\n    background: var(--bg);\n    color: var(--text);\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n    -webkit-font-smoothing: antialiased;\n    padding: 40px 16px 64px;\n    border-radius: 6px;\n  }\n\n  .chf-calc .wrap { width: 100%; max-width: 640px; margin: 0 auto; }\n\n  .eyebrow {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11px;\n    font-weight: 500;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: var(--accent);\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 10px;\n  }\n  .eyebrow::before {\n    content: \"\";\n    width: 16px;\n    height: 1.5px;\n    background: var(--accent);\n    display: inline-block;\n  }\n\n  .chf-calc h1 {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.01em;\n    font-size: clamp(28px, 6vw, 38px);\n    line-height: 1.05;\n    margin: 0 0 10px;\n    text-wrap: balance;\n    color: var(--text);\n    background: none;\n    border: none;\n    box-shadow: none;\n  }\n\n  .lede {\n    font-size: 15px;\n    line-height: 1.55;\n    color: var(--text-dim);\n    max-width: 54ch;\n    margin: 0 0 28px;\n  }\n  .lede strong { color: var(--text); font-weight: 600; }\n\n  .chf-calc section.card {\n    background: var(--panel);\n    border: 1px solid var(--border);\n    border-radius: 4px;\n    padding: 22px 22px 24px;\n    margin-bottom: 16px;\n  }\n\n  .card-title {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.04em;\n    font-size: 13px;\n    color: var(--text-dim);\n    margin: 0 0 4px;\n  }\n  .card-sub {\n    font-size: 13px;\n    color: var(--text-faint);\n    margin: 0 0 16px;\n    line-height: 1.5;\n  }\n\n  \/* segmented control *\/\n  .seg {\n    display: grid;\n    grid-auto-flow: column;\n    grid-auto-columns: 1fr;\n    gap: 6px;\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-radius: 3px;\n    padding: 4px;\n  }\n  .seg.wide-2 { grid-auto-columns: 1fr; }\n  .seg label {\n    position: relative;\n    text-align: center;\n    padding: 9px 8px;\n    font-size: 12.5px;\n    font-weight: 600;\n    color: var(--text-dim);\n    border-radius: 2px;\n    cursor: pointer;\n    user-select: none;\n    transition: background 0.15s ease, color 0.15s ease;\n    line-height: 1.3;\n  }\n  .seg label .kg {\n    display: block;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-weight: 400;\n    font-size: 10.5px;\n    color: var(--text-faint);\n    margin-top: 2px;\n  }\n  .seg input { position: absolute; opacity: 0; pointer-events: none; }\n  .seg input:checked + label,\n  .seg label.checked {\n    background: var(--accent);\n    color: var(--accent-ink);\n  }\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\n  \/* accessory rows with toggle *\/\n  .rows { display: flex; flex-direction: column; }\n  .row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    padding: 13px 0;\n    border-top: 1px solid var(--border);\n  }\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\n  .switch {\n    position: relative;\n    width: 42px;\n    height: 24px;\n    flex: none;\n  }\n  .switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; z-index: 1; }\n  .switch .track {\n    position: absolute;\n    inset: 0;\n    background: var(--track);\n    border: 1px solid var(--border-strong);\n    border-radius: 999px;\n    transition: background 0.15s ease, border-color 0.15s ease;\n  }\n  .switch .thumb {\n    position: absolute;\n    top: 2px;\n    left: 2px;\n    width: 18px;\n    height: 18px;\n    border-radius: 50%;\n    background: var(--panel);\n    box-shadow: 0 1px 2px rgba(0,0,0,0.25);\n    transition: transform 0.18s cubic-bezier(.4,0,.2,1);\n  }\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\n  .chf-calc fieldset { border: none; margin: 0; padding: 0; }\n  .chf-calc legend { padding: 0; }\n\n  \/* gauge *\/\n  .gauge-card { padding-bottom: 26px; }\n  .readout {\n    display: flex;\n    align-items: baseline;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 10px 20px;\n    margin-bottom: 20px;\n  }\n  .readout-main .label {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11px;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n    color: var(--text-faint);\n    margin-bottom: 4px;\n  }\n  .readout-main .value {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    font-size: 44px;\n    line-height: 1;\n    color: var(--accent);\n    font-variant-numeric: tabular-nums;\n  }\n  .readout-main .value .unit {\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n    font-weight: 600;\n    font-size: 17px;\n    color: var(--text-dim);\n    margin-left: 4px;\n  }\n  .readout-sub { text-align: right; }\n  .readout-sub .label {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11px;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    color: var(--text-faint);\n    margin-bottom: 4px;\n  }\n  .readout-sub .value {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 20px;\n    font-weight: 500;\n    color: var(--text);\n    font-variant-numeric: tabular-nums;\n  }\n\n  .scale { position: relative; margin: 0 4px 6px; }\n  .scale-track {\n    position: relative;\n    height: 8px;\n    border-radius: 999px;\n    background: var(--track);\n    border: 1px solid var(--border);\n    overflow: visible;\n  }\n  .scale-fill {\n    position: absolute;\n    top: -1px; bottom: -1px; left: -1px;\n    border-radius: 999px;\n    background: linear-gradient(90deg, var(--ok), var(--accent));\n    width: 0%;\n    transition: width 0.35s cubic-bezier(.4,0,.2,1);\n  }\n  .scale-needle {\n    position: absolute;\n    top: 50%;\n    left: 0%;\n    width: 3px;\n    height: 26px;\n    background: var(--text);\n    border-radius: 2px;\n    transform: translate(-50%, -50%);\n    transition: left 0.35s cubic-bezier(.4,0,.2,1);\n    box-shadow: 0 2px 5px var(--needle-shadow);\n  }\n  .scale-needle::after {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    top: -6px;\n    width: 9px;\n    height: 9px;\n    background: var(--text);\n    border-radius: 50%;\n    transform: translateX(-50%);\n  }\n  .ticks {\n    display: flex;\n    justify-content: space-between;\n    margin-top: 10px;\n  }\n  .ticks span {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11.5px;\n    font-weight: 500;\n    color: var(--text-faint);\n    position: relative;\n    font-variant-numeric: tabular-nums;\n  }\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\n  .stock-flag {\n    position: absolute;\n    top: -22px;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 10px;\n    letter-spacing: 0.05em;\n    text-transform: uppercase;\n    color: var(--text-faint);\n    left: 0%;\n    transform: translateX(-50%);\n    white-space: nowrap;\n  }\n\n  \/* lift height *\/\n  .lift-note {\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-left: 3px solid var(--accent);\n    border-radius: 3px;\n    padding: 12px 14px;\n    font-size: 12.5px;\n    line-height: 1.55;\n    color: var(--text-dim);\n    margin-top: 14px;\n  }\n  .lift-note strong { color: var(--text); }\n  .lift-note.warn { border-left-color: var(--text-faint); }\n\n  \/* methodology disclosure *\/\n  .chf-calc details.method {\n    background: transparent;\n    border: 1px dashed var(--border-strong);\n    border-radius: 4px;\n    padding: 14px 16px;\n  }\n  details.method summary {\n    cursor: pointer;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 11.5px;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    font-weight: 500;\n    color: var(--text-dim);\n    list-style: none;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n  details.method summary::-webkit-details-marker { display: none; }\n  details.method summary::before {\n    content: \"+\";\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-size: 15px;\n    color: var(--accent);\n    width: 14px;\n  }\n  details.method[open] summary::before { content: \"–\"; }\n  .method-body {\n    margin-top: 12px;\n    font-size: 13px;\n    line-height: 1.6;\n    color: var(--text-dim);\n  }\n  .method-body table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 12.5px; }\n  .method-body th, .method-body td {\n    text-align: left;\n    padding: 6px 8px 6px 0;\n    border-bottom: 1px solid var(--border);\n  }\n  .method-body th { color: var(--text-faint); font-weight: 500; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; }\n  .method-body td.num { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-variant-numeric: tabular-nums; color: var(--text); }\n\n  .foot-note {\n    font-size: 12px;\n    color: var(--text-faint);\n    line-height: 1.6;\n    margin-top: 18px;\n    padding-top: 16px;\n    border-top: 1px solid var(--border);\n  }\n\n  \/* philosophy callout *\/\n  .callout {\n    display: flex;\n    gap: 12px;\n    align-items: flex-start;\n    background: var(--accent-soft);\n    border: 1px solid var(--accent-soft-strong);\n    border-radius: 4px;\n    padding: 14px 16px;\n    margin: 0 0 28px;\n  }\n  .callout .mark {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    font-size: 20px;\n    color: var(--accent);\n    line-height: 1.2;\n    flex: none;\n  }\n  .callout p {\n    margin: 0;\n    font-size: 13.5px;\n    line-height: 1.55;\n    color: var(--text);\n  }\n  .callout strong { color: var(--accent); }\n\n  \/* section divider between front and rear *\/\n  .divider {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin: 36px 0 20px;\n  }\n  .divider .line { flex: 1; height: 1px; background: var(--border); }\n  .divider .eyebrow { margin-bottom: 0; }\n\n  .num-field {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-radius: 3px;\n    padding: 4px 4px 4px 14px;\n  }\n  .num-field label { font-size: 13px; font-weight: 600; flex: 1; }\n  .num-field input {\n    width: 90px;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 15px;\n    font-weight: 500;\n    color: var(--text);\n    background: var(--panel);\n    border: 1px solid var(--border-strong);\n    border-radius: 2px;\n    padding: 8px 10px;\n    text-align: right;\n    font-variant-numeric: tabular-nums;\n  }\n  .num-field input:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }\n  .num-field .unit-tag {\n    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;\n    font-size: 12px;\n    color: var(--text-faint);\n    padding-right: 12px;\n  }\n\n  .gvm-warn {\n    background: var(--panel-2);\n    border: 1px solid var(--border);\n    border-left: 3px solid var(--accent);\n    border-radius: 3px;\n    padding: 12px 14px;\n    font-size: 12.5px;\n    line-height: 1.55;\n    color: var(--text-dim);\n    margin-top: 14px;\n    display: none;\n  }\n  .gvm-warn.show { display: block; }\n  .gvm-warn strong { color: var(--text); }\n\n  .tier-name {\n    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;\n    font-weight: 700;\n    font-size: 44px;\n    line-height: 1;\n    color: var(--accent);\n  }\n  .tier-full {\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n    font-weight: 600;\n    font-size: 15px;\n    color: var(--text-dim);\n    margin-top: 6px;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .scale-fill, .scale-needle { transition: none; }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"chf-calc\"\u003e\n\u003cdiv class=\"wrap\"\u003e\n  \u003cdiv class=\"eyebrow\"\u003eSpring Rate \u0026amp; Leaf Pack Calculator\u003c\/div\u003e\n  \u003ch1\u003eDial in front and rear.\u003c\/h1\u003e\n  \u003cp class=\"lede\"\u003e\n    A stock front axle sits at \u003cstrong\u003e1180kg\u003c\/strong\u003e on a \u003cstrong\u003e600lb\u003c\/strong\u003e coil, and a stock rear\n    axle sits around \u003cstrong\u003e1000kg\u003c\/strong\u003e on a \u003cstrong\u003eLD\u003c\/strong\u003e leaf pack. Every kilo you bolt on shifts\n    both numbers — but only the fraction that actually lands on each axle. Tell us what's\n    fitted and we'll work out the rest, front and back.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"callout\" id=\"chf-nudge-banner\"\u003e\n    \u003cspan class=\"mark\"\u003e!\u003c\/span\u003e\n    \u003cp 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\/p\u003e\n  \u003c\/div\u003e\n\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\n    odd weekend track — not the one loaded trip you do three times a year. Nobody enjoys\n    a daily-driven brick just so it's ready for a trip it takes twice a summer. If your\n    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\"\u003eLift Height\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eWe only build 2in and 3in kits — see why below.\u003c\/p\u003e\n    \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Lift height\"\u003e\n      \u003cinput type=\"radio\" name=\"lift\" id=\"lift-2\" value=\"2\" checked\u003e\n      \u003clabel for=\"lift-2\"\u003e2in\u003cspan class=\"kg\"\u003e50mm\u003c\/span\u003e\u003c\/label\u003e\n      \u003cinput type=\"radio\" name=\"lift\" id=\"lift-3\" value=\"3\"\u003e\n      \u003clabel for=\"lift-3\"\u003e3in\u003cspan class=\"kg\"\u003e75mm\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n    \u003cp style=\"margin:12px 0 0;font-size:14px;\"\u003e\u003cstrong\u003eSelected lift height: \u003cspan id=\"chf-lift-bold\"\u003e?\u003c\/span\u003e\u003c\/strong\u003e\u003c\/p\u003e\n    \u003cdiv class=\"lift-note\" id=\"lift-note\"\u003e\n      On the 6112, 2in lands on the \u003cstrong\u003e7th circlip\u003c\/strong\u003e — each clip is 5mm of adjuster travel, worth roughly 10mm of ride height. Nothing above 3in: past that, ride quality falls off fast for no real gain, and that's not what we build.\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eRear Shock Length\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eStandard fits the factory bump stop. Long travel has a shorter closed length and needs a bump stop extension.\u003c\/p\u003e\n    \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Rear shock length\"\u003e\n      \u003cinput type=\"radio\" name=\"rearshock\" id=\"rearshock-630\" value=\"630\" checked\u003e\n      \u003clabel for=\"rearshock-630\"\u003eStandard\u003cspan class=\"kg\"\u003e630mm open\u003c\/span\u003e\u003c\/label\u003e\n      \u003cinput type=\"radio\" name=\"rearshock\" id=\"rearshock-660\" value=\"660\"\u003e\n      \u003clabel for=\"rearshock-660\"\u003eLong travel\u003cspan class=\"kg\"\u003e660mm open\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gvm-warn\" id=\"rearshock-warn\"\u003e\n      \u003cstrong\u003eLong-travel shock:\u003c\/strong\u003e shorter closed length — we recommend running a bump stop extension so the shock isn't the first thing to bottom out.\n    \u003c\/div\u003e\n  \u003c\/section\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\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 Spring Rate\u003c\/p\u003e\n    \u003cdiv class=\"readout\"\u003e\n      \u003cdiv class=\"readout-main\"\u003e\n        \u003cdiv class=\"label\"\u003eSuggested spring\u003c\/div\u003e\n        \u003cdiv class=\"value\"\u003e\n\u003cspan id=\"rate-value\"\u003e600\u003c\/span\u003e\u003cspan class=\"unit\"\u003elb\u003c\/span\u003e\n\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\"\u003e1180\u003c\/span\u003e kg\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"scale\"\u003e\n      \u003cspan class=\"stock-flag\" id=\"stock-flag\" style=\"left:0%;\"\u003estock\u003c\/span\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-r=\"600\"\u003e600\u003c\/span\u003e\n        \u003cspan data-r=\"650\"\u003e650\u003c\/span\u003e\n        \u003cspan data-r=\"700\"\u003e700\u003c\/span\u003e\n        \u003cspan data-r=\"750\"\u003e750\u003c\/span\u003e\n        \u003cspan data-r=\"800\"\u003e800\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003cdiv class=\"divider\"\u003e\n    \u003cdiv class=\"eyebrow\"\u003eRear Result\u003c\/div\u003e\n    \u003cdiv class=\"line\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"card gauge-card\"\u003e\n    \u003cp class=\"card-title\"\u003eRecommended Leaf Pack\u003c\/p\u003e\n    \u003cp class=\"card-sub\" id=\"tier-sync-note\"\u003eUses the Vehicle option you picked above — N70 and N80 run different leaf packs and shackles, so getting this right matters. We've set the Leaf Pack Duty Tier option to match — override it up top any time.\u003c\/p\u003e\n    \u003cdiv class=\"readout\"\u003e\n      \u003cdiv class=\"readout-main\"\u003e\n        \u003cdiv class=\"label\"\u003eSuggested duty tier\u003c\/div\u003e\n        \u003cdiv class=\"tier-name\" id=\"tier-value\"\u003eLD\u003c\/div\u003e\n        \u003cdiv class=\"tier-full\" id=\"tier-full\"\u003eLight Duty\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"readout-sub\"\u003e\n        \u003cdiv class=\"label\"\u003eEst. rear axle load\u003c\/div\u003e\n        \u003cdiv class=\"value\"\u003e\n\u003cspan id=\"rear-weight-value\"\u003e1000\u003c\/span\u003e kg\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"scale\"\u003e\n      \u003cspan class=\"stock-flag\" id=\"rear-stock-flag\" style=\"left:0%;\"\u003estock\u003c\/span\u003e\n      \u003cdiv class=\"scale-track\"\u003e\n        \u003cdiv class=\"scale-fill\" id=\"rear-scale-fill\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"scale-needle\" id=\"rear-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    \u003cdiv class=\"gvm-warn\" id=\"gvm-warn\"\u003e\n      This load is over the \u003cstrong id=\"gvm-warn-vehicle\"\u003eN80\u003c\/strong\u003e's rated rear axle capacity\n      (\u003cstrong id=\"gvm-warn-cap\"\u003e1700kg\u003c\/strong\u003e). Talk to us before we spec a pack — a GVM upgrade\n      might be the better fix.\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e\n\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\n\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 REAR_STOCK_KG=1000;var REAR_MAX_KG={n70:1600,n80:1700};var REAR_TIERS=[{code:'LD',full:'Light Duty'},{code:'MD',full:'Medium Duty'},{code:'HD',full:'Heavy Duty'},{code:'XHD',full:'Extra Heavy Duty'}];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}};var TIER_VARIANT_VALUE={LD:'LD (Light Duty)',MD:'MD (Medium Duty)',HD:'HD (Heavy Duty)',XHD:'XHD (Extra Heavy Duty)'};var 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 liftInputs=document.querySelectorAll('input[name=\"lift\"]');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 rateValueEl=document.getElementById('rate-value');var weightValueEl=document.getElementById('weight-value');var scaleFill=document.getElementById('scale-fill');var scaleNeedle=document.getElementById('scale-needle');var liftNote=document.getElementById('lift-note');var batteryNote=document.getElementById('battery-note');var frontTicks=document.querySelectorAll('#front-gauge .ticks span');var tierValueEl=document.getElementById('tier-value');var tierFullEl=document.getElementById('tier-full');var rearWeightEl=document.getElementById('rear-weight-value');var rearScaleFill=document.getElementById('rear-scale-fill');var rearScaleNeedle=document.getElementById('rear-scale-needle');var rearTicks=document.querySelectorAll('[data-t]');var gvmWarn=document.getElementById('gvm-warn');var gvmWarnVehicle=document.getElementById('gvm-warn-vehicle');var gvmWarnCap=document.getElementById('gvm-warn-cap');var tierSyncNote=document.getElementById('tier-sync-note');var tierOverridden=false;var isSyncingTier=false;var touched=false;var nudgeBanner=document.getElementById('chf-nudge-banner');var nudgeText=document.getElementById('chf-nudge-text');function toggleNudge(){if(!nudgeBanner||!nudgeText)return;if(touched){nudgeText.textContent=\"Thanks — we've got your setup details.\";}else{nudgeText.textContent=\"Please 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.\";}}function checkedVal(list){for(var i=0;i\u003clist.length;i++)if(list[i].checked)return parseFloat(list[i].value);return 0;}\nfunction checkedStr(list){for(var i=0;i\u003clist.length;i++)if(list[i].checked)return list[i].value;return'';}\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 getVehicle(){var radios=document.querySelectorAll('variant-selects input[type=\"radio\"]');for(var i=0;i\u003cradios.length;i++){if(radios[i].name.trim().indexOf('Vehicle')===0\u0026\u0026radios[i].checked){return radios[i].value.trim().indexOf('N70')\u003e-1?'n70':'n80';}}\nreturn'n80';}\nfunction selectTierVariant(code){var target=TIER_VARIANT_VALUE[code];var radios=document.querySelectorAll('variant-selects input[type=\"radio\"]');for(var i=0;i\u003cradios.length;i++){var r=radios[i];if(r.name.trim().indexOf('Leaf Pack Duty Tier')===0\u0026\u0026r.value===target\u0026\u0026!r.checked){isSyncingTier=true;r.checked=true;r.dispatchEvent(new Event('change',{bubbles:true}));}}}\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 vehicle=getVehicle();var rearMaxKg=REAR_MAX_KG[vehicle];var totalFrontKg=FRONT_STOCK_KG+added.frontKg;var rateRaw=FRONT_BASE_LB+added.frontKg*FRONT_SLOPE;rateRaw=Math.min(FRONT_MAX_LB,Math.max(FRONT_BASE_LB,rateRaw));var rateRounded=Math.round(rateRaw\/50)*50;rateRounded=Math.min(FRONT_MAX_LB,Math.max(FRONT_BASE_LB,rateRounded));rateValueEl.textContent=rateRounded;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){var r=parseInt(t.getAttribute('data-r'),10);t.classList.toggle('active',r===rateRounded);});var lift=checkedStr(liftInputs);if(lift==='2'){liftNote.innerHTML='On the 6112, 2in lands on the \u003cstrong\u003e7th circlip\u003c\/strong\u003e — each clip is 5mm of adjuster travel, worth roughly 10mm of ride height. Nothing above 3in: past that, ride quality falls off fast for no real gain, and that\\'s not what we build.';liftNote.classList.remove('warn');}else{liftNote.innerHTML='3in is the top of our range — about \u003cstrong\u003e2.5 clips\u003c\/strong\u003e further up from the 6112\\'s 2in setting. We stop here on purpose: taller than this and ride quality drops off fast for no real gain, and chasing stance over how the ute actually drives isn\\'t what we\\'re about.';liftNote.classList.add('warn');}\nvar totalRearKgRaw=REAR_STOCK_KG+added.rearKg;var totalRearKg=Math.min(rearMaxKg,totalRearKgRaw);var rearSpan=rearMaxKg-REAR_STOCK_KG;var rearPct=((totalRearKg-REAR_STOCK_KG)\/rearSpan)*100;rearPct=Math.min(100,Math.max(0,rearPct));var tierIndex=Math.min(3,Math.floor(rearPct\/25));if(rearPct\u003e=100)tierIndex=3;var tier=REAR_TIERS[tierIndex];tierValueEl.textContent=tier.code;tierFullEl.textContent=tier.full;rearWeightEl.textContent=Math.round(totalRearKgRaw);rearScaleFill.style.width=rearPct+'%';rearScaleNeedle.style.left=rearPct+'%';rearTicks.forEach(function(t){t.classList.toggle('active',t.getAttribute('data-t')===tier.code);});if(totalRearKgRaw\u003erearMaxKg){gvmWarn.classList.add('show');gvmWarnVehicle.textContent=vehicle.toUpperCase();gvmWarnCap.textContent=rearMaxKg+'kg';}else{gvmWarn.classList.remove('show');}\nif(tierOverridden){tierSyncNote.textContent='You\\'ve manually set the Leaf Pack Duty Tier above — we\\'ll leave it alone. Change anything below to let us re-suggest it.';}else{tierSyncNote.textContent='Uses the Vehicle option you picked above — N70 and N80 run different leaf packs and shackles, so getting this right matters. We\\'ve set the Leaf Pack Duty Tier option to match — override it up top any time.';selectTierVariant(tier.code);}\nbatteryNote.classList.toggle('show',battery.checked);(function(){var w=document.getElementById('rearshock-warn');if(!w)return;var rs=document.querySelectorAll('input[name=\"rearshock\"]'),v=\"630\";for(var i=0;i\u003crs.length;i++)if(rs[i].checked)v=rs[i].value;w.classList.toggle('show',v===\"660\");})();syncToShopify(rateRounded,totalFrontKg,tier,totalRearKgRaw,added.towballKg);}\nvar chfAccuracyCheckbox=document.getElementById('chf-accuracy-confirm');var chfLiftBoldEl=document.getElementById('chf-lift-bold');var chfNoteTimer=null;\nfunction chfBuildNoteText(){var lines=[];var chfLift=(function(){var ls=document.querySelectorAll('input[name=\"lift\"]');for(var i=0;i\u003cls.length;i++)if(ls[i].checked)return ls[i].value;return '';})();if(chfLift)lines.push('Lift Height: '+chfLift);lines.push('Suggested Rear Duty Tier: '+document.getElementById('tier-value').textContent+' ('+document.getElementById('tier-full').textContent+')');lines.push('Est. Rear Axle Load: '+document.getElementById('rear-weight-value').textContent+'kg');lines.push('Suggested Spring Rate: '+document.getElementById('rate-value').textContent+'lb');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((function(){var rs=document.querySelectorAll('input[name=\"rearshock\"]');var v=\"630\";for(var i=0;i\u003crs.length;i++)if(rs[i].checked)v=rs[i].value;return v===\"660\"?\"Rear shock: Long travel (660mm open) — recommended run bump stop extension\":\"Rear shock: Standard (630mm open)\";})());lines.push('Customer confirmed info accurate: '+(chfAccuracyCheckbox\u0026\u0026chfAccuracyCheckbox.checked?'Yes':'No'));return lines.join('\\n');}\nfunction syncToShopify(rateLb, frontKg, tier, rearKg, towballKg){if(chfLiftBoldEl){var lb=document.querySelectorAll('input[name=\"lift\"]');for(var _i=0;_i\u003clb.length;_i++)if(lb[_i].checked)chfLiftBoldEl.textContent=lb[_i].value;}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);}\n[].concat([].slice.call(document.querySelectorAll('input[name=\"rearshock\"]')),[].slice.call(barInputs),[].slice.call(winchInputs),[].slice.call(trayInputs),[].slice.call(toolboxInputs),canopy,dogbox,rearbar,fueltank,drawers,fridge,[].slice.call(liftInputs),[sliders,bash,battery,spotlights]).forEach(function(el){el.addEventListener('change',function(){touched=true;toggleNudge();tierOverridden=false;update();});});towball.addEventListener('input',function(){touched=true;toggleNudge();tierOverridden=false;update();});document.addEventListener('change',function(e){if(!(e.target.matches\u0026\u0026e.target.matches('variant-selects input[type=\"radio\"]')))return;var name=e.target.name.trim();if(name.indexOf('Vehicle')===0){update();}else if(name.indexOf('Leaf Pack Duty Tier')===0){if(isSyncingTier){isSyncingTier=false;}\nelse{tierOverridden=true;update();}}});function injectTierReassurance(){if(document.getElementById('chf-tier-reassure'))return;var fieldsets=document.querySelectorAll('variant-selects fieldset');for(var i=0;i\u003cfieldsets.length;i++){var legend=fieldsets[i].querySelector('legend');if(legend\u0026\u0026legend.textContent.trim().indexOf('Leaf Pack Duty Tier')===0){var note=document.createElement('p');note.id='chf-tier-reassure';note.textContent=\"Rated for load, not looks — this matches what your rear axle actually carries. A higher tier just means it's set up for the weight you're running, not that we're pushing you toward something extreme. And if you land on XHD and it turns out to be more than you need, dropping a leaf later is a straightforward job for anyone handy with tools — conjuring one out of thin air isn't. When in doubt, size up.\";note.style.cssText='font-size:12.5px;line-height:1.5;margin:8px 0 0;max-width:52ch;opacity:.72;';fieldsets[i].insertAdjacentElement('afterend',note);break;}}}\ntoggleNudge();update();injectTierReassurance();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\n\n\u003ch3\u003eWhat's included\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003eBilstein 6112 B60 Front Coilover (2.5in big bore)\u003c\/li\u003e\n\u003cli\u003eBilstein Platinum Rear Shock — 630mm open\u003c\/li\u003e\n\u003cli\u003eRear leaf spring pack — duty tier selectable, matched to your Vehicle selection (N70 and N80 use different packs)\u003c\/li\u003e\n\u003cli\u003eLeaf spring bush kit\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003e\u003cstrong\u003eNote:\u003c\/strong\u003e N70 and N80 shackles differ too — if you're supplying or reusing your own, check fitment against the Vehicle you selected above.\u003c\/p\u003e\u003cp\u003eOptional add-on: CalOffroad Fixed Upper Control Arm Kit (2° caster) — corrects caster\/camber geometry at this lift height, sold separately or bundled here at a discount off buying individually.\u003c\/p\u003e\u003cp\u003e\u003cem\u003ePrices shown are the sum of individually costed components. This is a made-to-order package — allow standard lead time for the leaf pack and 6112 to be picked and freighted together.\u003c\/em\u003e\u003c\/p\u003e","brand":"Cubby House Fabworks","offers":[{"title":"Hilux N70 \/ LD (Light Duty) \/ None","offer_id":58283707793711,"sku":null,"price":4609.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ LD (Light Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283707826479,"sku":null,"price":5578.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ MD (Medium Duty) \/ None","offer_id":58283707859247,"sku":null,"price":4609.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ MD (Medium Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283707892015,"sku":null,"price":5578.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ HD (Heavy Duty) \/ None","offer_id":58283707924783,"sku":null,"price":4609.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ HD (Heavy Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283707957551,"sku":null,"price":5578.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ XHD (Extra Heavy Duty) \/ None","offer_id":58283707990319,"sku":null,"price":4656.61,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ XHD (Extra Heavy Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283708023087,"sku":null,"price":5625.61,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ LD (Light Duty) \/ None","offer_id":58283708055855,"sku":null,"price":4617.11,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ LD (Light Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283708088623,"sku":null,"price":5586.11,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ MD (Medium Duty) \/ None","offer_id":58283708121391,"sku":null,"price":4609.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ MD (Medium Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283708154159,"sku":null,"price":5578.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ HD (Heavy Duty) \/ None","offer_id":58283708186927,"sku":null,"price":4609.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ HD (Heavy Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283708219695,"sku":null,"price":5578.47,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ XHD (Extra Heavy Duty) \/ None","offer_id":58283708252463,"sku":null,"price":4866.93,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ XHD (Extra Heavy Duty) \/ CalOffroad UCA Fixed 2 Degree (+969)","offer_id":58283708285231,"sku":null,"price":5835.93,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ LD (Light Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709366575,"sku":null,"price":4716.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ MD (Medium Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709399343,"sku":null,"price":4716.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ HD (Heavy Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709432111,"sku":null,"price":4716.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ XHD (Extra Heavy Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709464879,"sku":null,"price":4763.2,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ LD (Light Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709497647,"sku":null,"price":4723.7,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ MD (Medium Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709530415,"sku":null,"price":4716.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ HD (Heavy Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709563183,"sku":null,"price":4716.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ XHD (Extra Heavy Duty) \/ Sway Bar Relocation (+107)","offer_id":58283709595951,"sku":null,"price":4973.52,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ LD (Light Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709628719,"sku":null,"price":5685.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ MD (Medium Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709661487,"sku":null,"price":5685.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ HD (Heavy Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709694255,"sku":null,"price":5685.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N70 \/ XHD (Extra Heavy Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709727023,"sku":null,"price":5732.2,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ LD (Light Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709759791,"sku":null,"price":5692.7,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ MD (Medium Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709792559,"sku":null,"price":5685.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ HD (Heavy Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709825327,"sku":null,"price":5685.06,"currency_code":"AUD","in_stock":true},{"title":"Hilux N80 \/ XHD (Extra Heavy Duty) \/ UCA and Sway Bar Both (+1076)","offer_id":58283709858095,"sku":null,"price":5942.52,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/6112_full_kit.png?v=1787016659"},{"product_id":"bilstein-6112-front-platinum-rear-shock-kit-shocks-only-no-leaf-pack-hilux-n70-n80","title":"Bilstein 6112 2.5in Body Front + Platinum Rear Shock Kit (Shocks Only, No Leaf Pack) — Hilux N70\/N80","description":"\u003cstrong\u003eBilstein 6112 B60 big-bore front coilovers paired with Bilstein Platinum 630mm rear shocks — shocks only, on your existing standard leaf pack.\u003c\/strong\u003e Pick your lift height above (2in or 3in), then run the calculator below so we can match your front spring rate — it attaches to your order automatically, so most builds need no back and forth.\n\u003cdiv style=\"background:#fff3d6;border:1px solid #e0b455;border-radius:6px;padding:12px 16px;margin:0 0 20px;font-size:14px;line-height:1.5;color:#111;\"\u003e\n\u003cstrong\u003eNo leaf pack included.\u003c\/strong\u003e This kit is shocks only — front coilover pair + rear shock pair — for utes staying on their standard leaf pack (no bump stop mod required on the rear). If you also need a leaf pack, see our \u003ca href=\"\/products\/big-bore-lift-kit-bilstein-6112-platinum-630-rear-leaf-pack-hilux-n70-n80\"\u003eBig Bore Lift Kit (with leaf pack)\u003c\/a\u003e instead.\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n\n  .chf-calc {\n    --bg: #f2efe8;\n    --panel: #ffffff;\n    --panel-2: #f8f6f1;\n    --border: #ddd8cc;\n    --border-strong: #c7c1b2;\n    --text: #1b1d22;\n    --text-dim: #6b6e76;\n    --text-faint: #9a9da3;\n    --accent: #c96a1e;\n    --accent-ink: #ffffff;\n    --accent-soft: rgba(201, 106, 30, 0.1);\n    --accent-soft-strong: rgba(201, 106, 30, 0.2);\n    --ok: #5f7a3d;\n    --needle-shadow: rgba(0, 0, 0, 0.18);\n    --track: #e4dfd2;\n    --focus: #1b1d22;\n  }\n\n  .chf-calc, .chf-calc * { box-sizing: border-box; }\n  .chf-calc {\n    background: var(--bg);\n    color: var(--text);\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n    padding: 40px 16px 64px;\n    border-radius: 6px;\n  }\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-weight: 700; text-transform: uppercase; font-size: clamp(28px, 6vw, 38px); line-height: 1.05; margin: 0 0 10px; color: var(--text); }\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-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; line-height: 1.3; }\n  .seg label .kg { display: block; font-family: ui-monospace, 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 { background: var(--accent); color: var(--accent-ink); }\n  .seg input:checked + label .kg { color: var(--accent-ink); opacity: 0.75; }\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; }\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; }\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  .chf-calc fieldset { border: none; margin: 0; 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, monospace; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-faint); margin-bottom: 4px; }\n  .readout-main .value { font-weight: 700; font-size: 44px; line-height: 1; color: var(--accent); }\n  .readout-main .value .unit { 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, 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, monospace; font-size: 20px; font-weight: 500; color: var(--text); }\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; }\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; 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, monospace; font-size: 11.5px; font-weight: 500; color: var(--text-faint); position: relative; }\n  .ticks span.active { color: var(--accent); font-weight: 600; }\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  .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  .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-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\u003c\/style\u003e\n\n\u003cdiv class=\"chf-calc\"\u003e\n\u003cdiv class=\"wrap\"\u003e\n  \u003cdiv class=\"eyebrow\"\u003eSpring Rate Calculator\u003c\/div\u003e\n  \u003ch1\u003eDial in your front end.\u003c\/h1\u003e\n  \u003cp class=\"lede\"\u003eA stock front axle sits at \u003cstrong\u003e1180kg\u003c\/strong\u003e and runs a \u003cstrong\u003e600lb\u003c\/strong\u003e coil. Every kilo you bolt on shifts that number — but only the fraction that actually lands on the front axle. Tell us what's fitted and we'll work out the rest, then attach it to your order.\u003c\/p\u003e\n\n  \u003cdiv class=\"callout\" id=\"chf-nudge-banner\"\u003e\n    \u003cspan class=\"mark\"\u003e!\u003c\/span\u003e\n    \u003cp 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\/p\u003e\n  \u003c\/div\u003e\n\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. 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\"\u003eLift Height\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eSet above — this reflects whatever you've picked.\u003c\/p\u003e\n    \u003cdiv class=\"lift-note\" id=\"lift-note\"\u003eOn the 6112, 2in lands on the \u003cstrong\u003e7th circlip\u003c\/strong\u003e — each clip is 5mm of adjuster travel, worth roughly 10mm of ride height. Nothing above 3in: past that, ride quality falls off fast for no real gain, and that's not what we build.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eRear Shock Length\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eStandard fits the factory bump stop. Long travel has a shorter closed length and needs a bump stop extension.\u003c\/p\u003e\n    \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Rear shock length\"\u003e\n      \u003cinput type=\"radio\" name=\"rearshock\" id=\"rearshock-630\" value=\"630\" checked\u003e\n      \u003clabel for=\"rearshock-630\"\u003eStandard\u003cspan class=\"kg\"\u003e630mm open\u003c\/span\u003e\u003c\/label\u003e\n      \u003cinput type=\"radio\" name=\"rearshock\" id=\"rearshock-660\" value=\"660\"\u003e\n      \u003clabel for=\"rearshock-660\"\u003eLong travel\u003cspan class=\"kg\"\u003e660mm open\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gvm-warn\" id=\"rearshock-warn\"\u003e\n      \u003cstrong\u003eLong-travel shock:\u003c\/strong\u003e shorter closed length — we recommend running a bump stop extension so the shock isn't the first thing to bottom out.\n    \u003c\/div\u003e\n  \u003c\/section\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\u003clabel for=\"bar-none\"\u003eNone\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"bar\" id=\"bar-alloy\" value=\"35\"\u003e\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\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\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\u003clabel for=\"winch-none\"\u003eNone\u003c\/label\u003e\n        \u003cinput type=\"radio\" name=\"winch\" id=\"winch-synth\" value=\"25\"\u003e\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\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\u003cspan class=\"track\"\u003e\u003c\/span\u003e\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\u003cspan class=\"track\"\u003e\u003c\/span\u003e\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\u003cspan class=\"track\"\u003e\u003c\/span\u003e\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\u003cspan class=\"track\"\u003e\u003c\/span\u003e\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\u003cstrong\u003eNote:\u003c\/strong\u003e 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.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"card\"\u003e\n    \u003cp class=\"card-title\"\u003eOverall Build Weight\u003c\/p\u003e\n    \u003cp class=\"card-sub\"\u003eTray, canopy, tools, general load — sits mostly behind the cab, so only a small share reaches the front axle.\u003c\/p\u003e\n    \u003cdiv class=\"seg\" role=\"radiogroup\" aria-label=\"Overall build weight\"\u003e\n      \u003cinput type=\"radio\" name=\"build\" id=\"build-stock\" value=\"0\" checked\u003e\u003clabel for=\"build-stock\"\u003eStock\u003cspan class=\"kg\"\u003etub, no load\u003c\/span\u003e\u003c\/label\u003e\n      \u003cinput type=\"radio\" name=\"build\" id=\"build-mod\" value=\"100\"\u003e\u003clabel for=\"build-mod\"\u003eModerate\u003cspan class=\"kg\"\u003ecanopy + tools, ~100kg\u003c\/span\u003e\u003c\/label\u003e\n      \u003cinput type=\"radio\" name=\"build\" id=\"build-heavy\" value=\"200\"\u003e\u003clabel for=\"build-heavy\"\u003eHeavy\u003cspan class=\"kg\"\u003etray + full kit, ~200kg\u003c\/span\u003e\u003c\/label\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003cdiv style=\"display:none\"\u003e\n\u003csection class=\"card gauge-card\" id=\"front-gauge\"\u003e\n    \u003cp class=\"card-title\"\u003eRecommended Spring Rate\u003c\/p\u003e\n    \u003cdiv class=\"readout\"\u003e\n      \u003cdiv class=\"readout-main\"\u003e\n\u003cdiv class=\"label\"\u003eSuggested spring\u003c\/div\u003e\n\u003cdiv class=\"value\"\u003e\n\u003cspan id=\"rate-value\"\u003e600\u003c\/span\u003e\u003cspan class=\"unit\"\u003elb\u003c\/span\u003e\n\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\"\u003e1180\u003c\/span\u003e kg\u003c\/div\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"scale\"\u003e\n      \u003cspan class=\"stock-flag\" id=\"stock-flag\" style=\"left:0%;\"\u003estock\u003c\/span\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-r=\"600\"\u003e600\u003c\/span\u003e\u003cspan data-r=\"650\"\u003e650\u003c\/span\u003e\u003cspan data-r=\"700\"\u003e700\u003c\/span\u003e\u003cspan data-r=\"750\"\u003e750\u003c\/span\u003e\u003cspan data-r=\"800\"\u003e800\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e\n\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  \u003cp class=\"foot-note\"\u003eGuide 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.\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 FRAC={bar:{front:1.00},winch:{front:1.00},spotlights:{total:3,front:1.00},battery:{total:20,front:0.90},bash:{total:15,front:0.75},sliders:{total:40,front:0.35},build:{front:0.20}};var barInputs=document.querySelectorAll('input[name=\"bar\"]');var winchInputs=document.querySelectorAll('input[name=\"winch\"]');var buildInputs=document.querySelectorAll('input[name=\"build\"]');var sliders=document.getElementById('sliders');var spotlights=document.getElementById('spotlights');var bash=document.getElementById('bash');var battery=document.getElementById('battery');var rateValueEl=document.getElementById('rate-value');var weightValueEl=document.getElementById('weight-value');var scaleFill=document.getElementById('scale-fill');var scaleNeedle=document.getElementById('scale-needle');var liftNote=document.getElementById('lift-note');var batteryNote=document.getElementById('battery-note');var frontTicks=document.querySelectorAll('#front-gauge .ticks span');var touched=false;var nudgeBanner=document.getElementById('chf-nudge-banner');var nudgeText=document.getElementById('chf-nudge-text');function toggleNudge(){if(!nudgeBanner||!nudgeText)return;if(touched){nudgeText.textContent=\"Thanks — we've got your setup details.\";}else{nudgeText.textContent=\"Please 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.\";}}\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 getLiftHeight(){var radios=document.querySelectorAll('variant-selects input[type=\"radio\"]');for(var i=0;i\u003cradios.length;i++){if(radios[i].name.trim().indexOf('Lift Height')===0\u0026\u0026radios[i].checked){return radios[i].value.trim();}}\nreturn'2in';}\nfunction computeAdded(){var barTotal=checkedVal(barInputs);var winchTotal=checkedVal(winchInputs);var buildTotal=checkedVal(buildInputs);var frontKg=barTotal*FRAC.bar.front+winchTotal*FRAC.winch.front+buildTotal*FRAC.build.front;if(sliders.checked)frontKg+=FRAC.sliders.total*FRAC.sliders.front;if(spotlights.checked)frontKg+=FRAC.spotlights.total*FRAC.spotlights.front;if(bash.checked)frontKg+=FRAC.bash.total*FRAC.bash.front;if(battery.checked)frontKg+=FRAC.battery.total*FRAC.battery.front;return frontKg;}\nfunction accessorySummary(){var parts=[];var barLabel=label(barInputs);var winchLabel=label(winchInputs);var buildLabel=label(buildInputs);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');if(buildLabel\u0026\u0026buildLabel!=='Stock')parts.push('Build: '+buildLabel);return parts.length?parts.join(', '):'Stock, no accessories';}\nfunction update(){var frontKgAdded=computeAdded();var totalFrontKg=FRONT_STOCK_KG+frontKgAdded;var rateRaw=FRONT_BASE_LB+frontKgAdded*FRONT_SLOPE;rateRaw=Math.min(FRONT_MAX_LB,Math.max(FRONT_BASE_LB,rateRaw));var rateRounded=Math.round(rateRaw\/50)*50;rateRounded=Math.min(FRONT_MAX_LB,Math.max(FRONT_BASE_LB,rateRounded));rateValueEl.textContent=rateRounded;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){var r=parseInt(t.getAttribute('data-r'),10);t.classList.toggle('active',r===rateRounded);});var lift=getLiftHeight();if(lift==='2in'){liftNote.innerHTML='On the 6112, 2in lands on the \u003cstrong\u003e7th circlip\u003c\/strong\u003e — each clip is 5mm of adjuster travel, worth roughly 10mm of ride height. Nothing above 3in: past that, ride quality falls off fast for no real gain, and that\\'s not what we build.';liftNote.classList.remove('warn');}else{liftNote.innerHTML='3in is the top of our range — about \u003cstrong\u003e2.5 clips\u003c\/strong\u003e further up from the 6112\\'s 2in setting. We stop here on purpose: taller than this and ride quality drops off fast for no real gain, and chasing stance over how the ute actually drives isn\\'t what we\\'re about.';liftNote.classList.add('warn');}\nbatteryNote.classList.toggle('show',battery.checked);(function(){var w=document.getElementById('rearshock-warn');if(!w)return;var rs=document.querySelectorAll('input[name=\"rearshock\"]'),v=\"630\";for(var i=0;i\u003crs.length;i++)if(rs[i].checked)v=rs[i].value;w.classList.toggle('show',v===\"660\");})();syncToShopify(rateRounded,totalFrontKg,lift);}\nvar chfAccuracyCheckbox=document.getElementById('chf-accuracy-confirm');var chfNoteTimer=null;\nfunction chfBuildNoteText(){var lines=[];lines.push('Lift Height: '+getLiftHeight());lines.push('Suggested Spring Rate: '+document.getElementById('rate-value').textContent+'lb');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'));lines.push((function(){var rs=document.querySelectorAll('input[name=\"rearshock\"]');var v=\"630\";for(var i=0;i\u003crs.length;i++)if(rs[i].checked)v=rs[i].value;return v===\"660\"?\"Rear shock: Long travel (660mm open) — recommended run bump stop extension\":\"Rear shock: Standard (630mm open)\";})());lines.push('Customer confirmed info accurate: '+(chfAccuracyCheckbox\u0026\u0026chfAccuracyCheckbox.checked?'Yes':'No'));return lines.join('\\n');}\nfunction syncToShopify(rateLb, frontKg, lift){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);}\n[].concat([].slice.call(document.querySelectorAll('input[name=\"rearshock\"]')),[].slice.call(barInputs),[].slice.call(winchInputs),[].slice.call(buildInputs),[sliders,bash,battery,spotlights]).forEach(function(el){el.addEventListener('change',function(){touched=true;toggleNudge();update();});});document.addEventListener('change',function(e){if(e.target.matches\u0026\u0026e.target.matches('variant-selects input[type=\"radio\"]')\u0026\u0026e.target.name.trim().indexOf('Lift Height')===0){update();}});toggleNudge();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\n\n\u003cp\u003e\u003cstrong\u003eFront: Bilstein 6112 B60 big-bore coilovers.\u003c\/strong\u003e A 2.5in body with a much larger piston and far more oil volume than the stock 2.0in unit — smoother over corrugations, better front-end control, less fade on long hot trips. Mono-tube gas pressure design keeps oil and nitrogen separated under 200+ psi, virtually eliminating cavitation and fade. Circlip-style height adjustment, matched spring, correct valving.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRear: Bilstein Platinum 630mm open shocks.\u003c\/strong\u003e Sold as a pair, fits your existing standard leaf pack — no bump stop modification required.\u003c\/p\u003e\n\u003ch3\u003eGood to know\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShocks only — no leaf pack included. If you're also after a leaf pack, see the \u003ca href=\"\/products\/big-bore-lift-kit-bilstein-6112-platinum-630-rear-leaf-pack-hilux-n70-n80\"\u003eBig Bore Lift Kit\u003c\/a\u003e instead.\u003c\/li\u003e\n\u003cli\u003eYou can transfer the front top hat from your factory setup to save a few dollars — or add a note at checkout and we'll assemble with a new one.\u003c\/li\u003e\n\u003cli\u003eLead time is typically 2–4 weeks. Email us if you need it sooner and we'll check current stock.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eShipping:\u003c\/strong\u003e $80 shipping applies for the big 2.5in body front units, plus $35 for the rear pair.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003ePlease note:\u003c\/strong\u003e this is a made-to-order kit and isn't held in stock.\u003c\/p\u003e","brand":"Cubby House Fabworks","offers":[{"title":"2in","offer_id":58361659130159,"sku":"BIL-6112-PLAT630-KIT-2IN","price":3720.0,"currency_code":"AUD","in_stock":true},{"title":"3in","offer_id":58361659162927,"sku":"BIL-6112-PLAT630-KIT-3IN","price":3720.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/49192944-4A39-49D4-8A6B-323777E633F8.jpg?v=1786491012"},{"product_id":"bilstein-6112-front-coilover-pair-toyota-landcruiser-200-series","title":"Bilstein 6112 2.5in Body Front Coilover Pair — Toyota LandCruiser 200 Series","description":"\u003cp\u003eBilstein B8 6112 front coilover pair for the Toyota LandCruiser 200 Series (2008-2011, 2013-2020).\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003e60mm monotube, snap-ring grooved body\u003c\/li\u003e\n\u003cli\u003e650 lb\/in front spring rate, spring seat included\u003c\/li\u003e\n\u003cli\u003ePiston diameter 60mm, shaft diameter 18mm\u003c\/li\u003e\n\u003cli\u003eExtended length 604mm \/ Collapsed length 434.5mm\u003c\/li\u003e\n\u003cli\u003eSold as a pair\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eThis is a special-order, made-to-order item — lead time is typically 4–16 weeks depending on stock and manufacturing at time of order. We'll confirm an estimated timeframe when you order.\u003c\/p\u003e","brand":"Bilstein","offers":[{"title":"Default","offer_id":58372651352367,"sku":"BIL-6112-LC200-PAIR","price":3050.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/3509719c5a9c2594cd6af31fb2e813f7M_681dcb12-9268-472c-8169-73b16ac5ac80.jpg?v=1787794954"},{"product_id":"bilstein-6112-front-coilover-kit-toyota-landcruiser-prado-250-series","title":"Bilstein 6112 2.5in Body Front Coilover Kit — Toyota LandCruiser Prado 250 Series","description":"\u003cdiv style=\"background:#fff3cd;border:1px solid #e0c46c;border-left:4px solid #b8860b;border-radius:4px;padding:14px 18px;margin:0 0 24px;font-size:14px;line-height:1.6;color:#1b1d22;\"\u003e\n\u003cstrong\u003eFitment note.\u003c\/strong\u003e This kit is sourced against the US-market 2024-26 Toyota Land Cruiser (1958\/Base\/First Edition) and 2025-26 4Runner — both built on the same new-generation TNGA-F mid-size platform that underpins the Australian Prado 250 Series. Confirmed for the 2.4L turbo-hybrid variant; if you're running the 2.8L diesel Prado, check with us before ordering as the spring rate may need to differ.\u003c\/div\u003e\u003cp\u003eBilstein B8 6112 front coilover kit for the Toyota LandCruiser Prado 250 Series.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003e60mm monotube, snap-ring grooved body\u003c\/li\u003e\n\u003cli\u003e350 lb\/in front spring rate, spring seat included\u003c\/li\u003e\n\u003cli\u003ePiston diameter 60mm, shaft diameter 18mm\u003c\/li\u003e\n\u003cli\u003eNon-adjustable\u003c\/li\u003e\n\u003cli\u003eProvides 0-2.75in front lift\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eThis is a special-order, made-to-order item — lead time is typically 4–16 weeks depending on stock and manufacturing at time of order. We'll confirm an estimated timeframe when you order.\u003c\/p\u003e","brand":"Bilstein","offers":[{"title":"Default","offer_id":58372702994735,"sku":"BIL-6112-PRADO250","price":3050.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/b7387b995cdc381bc1ccfe80e89d9f63M.jpg?v=1787795506"},{"product_id":"bilstein-6112-front-coilover-kit-toyota-landcruiser-prado-120-series","title":"Bilstein 6112 2.5in Body Front Coilover Kit — Toyota LandCruiser Prado 120 Series","description":"\u003cdiv style=\"background:#fff3cd;border:1px solid #e0c46c;border-left:4px solid #b8860b;border-radius:4px;padding:14px 18px;margin:0 0 24px;font-size:14px;line-height:1.6;color:#1b1d22;\"\u003e\n\u003cstrong\u003eFitment note.\u003c\/strong\u003e Sourced against the US-market Lexus GX470 (2003-2009) and 4Runner (05-21 Tacoma-shared platform) — the direct badge\/platform twin of the Australian Prado 120 Series (2002-2009). Currently showing out of stock at Bilstein with a dropship fee — check lead time with us before ordering.\u003c\/div\u003e\u003cp\u003eBilstein B8 6112 front coilover kit for the Toyota LandCruiser Prado 120 Series.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003e60mm monotube, snap-ring grooved body\u003c\/li\u003e\n\u003cli\u003eSpring seat included\u003c\/li\u003e\n\u003cli\u003eNon-adjustable\u003c\/li\u003e\n\u003cli\u003eSold as a pair\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eThis is a special-order, made-to-order item — lead time is typically 4–16 weeks depending on stock and manufacturing at time of order. We'll confirm an estimated timeframe when you order.\u003c\/p\u003e","brand":"Bilstein","offers":[{"title":"Default","offer_id":58372784750895,"sku":"BIL-6112-PRADO120","price":3050.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/3509719c5a9c2594cd6af31fb2e813f7M.jpg?v=1787796871"},{"product_id":"bilstein-6112-front-coilover-kit-toyota-landcruiser-prado-150-series","title":"Bilstein 6112 2.5in Body Front Coilover Kit — Toyota LandCruiser Prado 150 Series","description":"\u003cdiv style=\"background:#fff3cd;border:1px solid #e0c46c;border-left:4px solid #b8860b;border-radius:4px;padding:14px 18px;margin:0 0 24px;font-size:14px;line-height:1.6;color:#1b1d22;\"\u003e\n\u003cstrong\u003eFitment note.\u003c\/strong\u003e Sourced against the US-market Lexus GX460 and 4Runner (2010-2022) — the direct badge\/platform twin of the Australian Prado 150 Series (2009-2023).\u003c\/div\u003e\u003cp\u003eBilstein B8 6112 front coilover kit for the Toyota LandCruiser Prado 150 Series.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003e60mm monotube, snap-ring grooved body\u003c\/li\u003e\n\u003cli\u003eSpring seat included\u003c\/li\u003e\n\u003cli\u003eNon-adjustable\u003c\/li\u003e\n\u003cli\u003eSold as a pair\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eThis is a special-order, made-to-order item — lead time is typically 4–16 weeks depending on stock and manufacturing at time of order. We'll confirm an estimated timeframe when you order.\u003c\/p\u003e","brand":"Bilstein","offers":[{"title":"Default","offer_id":58372785340719,"sku":"BIL-6112-PRADO150","price":3050.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0902\/1092\/6895\/files\/3509719c5a9c2594cd6af31fb2e813f7M_b9e6737b-7d14-4ebd-8783-b3ebe7abcded.jpg?v=1787796873"}],"url":"https:\/\/cubbyhousefabworks.com.au\/collections\/bilstein-6112-coilovers.oembed","provider":"Cubby House Fabworks","version":"1.0","type":"link"}