{"product_id":"master","title":"master","description":"\u003cbody\u003e\n\n\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003eGhostwood Rhodes Pickup Grouping Calculator\u003c\/title\u003e\n    \u003cstyle\u003e\n        :root {\n            --primary-color: #1a4a3a; \/* Deep forest green accent *\/\n            --secondary-color: #2d6a4f; \/* Lighter matching green *\/\n            --bg-color: #121212; \/* Modern soft dark background *\/\n            --card-bg: #1e1e1e; \/* Distinct calculator body container *\/\n            --text-color: #e0e0e0; \/* Off-white for readability *\/\n            --accent-glow: #52b788; \/* Bright green highlighting interactive states *\/\n        }\n\n        body {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n            background-color: var(--bg-color);\n            color: var(--text-color);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            padding: 40px 20px;\n            margin: 0;\n        }\n\n        .calculator-container {\n            width: 100%;\n            max-width: 550px;\n            background-color: var(--card-bg);\n            border-radius: 12px;\n            box-shadow: 0 8px 24px rgba(0,0,0,0.5);\n            overflow: hidden;\n            border: 1px solid #2a2a2a;\n        }\n\n        .header {\n            background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n            padding: 24px;\n            text-align: center;\n            border-bottom: 1px solid #2a2a2a;\n        }\n\n        .header h1 {\n            margin: 0;\n            font-size: 24px;\n            font-weight: 700;\n            letter-spacing: 0.5px;\n            color: #ffffff;\n        }\n\n        .header .brand-subtitle {\n            margin-top: 4px;\n            font-size: 13px;\n            color: var(--accent-glow);\n            text-transform: uppercase;\n            letter-spacing: 2px;\n            font-weight: 600;\n        }\n\n        .instructions {\n            padding: 20px 24px;\n            background-color: rgba(26, 74, 58, 0.15);\n            border-bottom: 1px solid rgba(26, 74, 58, 0.3);\n            font-size: 14px;\n            line-height: 1.5;\n            color: #b0b0b0;\n        }\n\n        .instructions p {\n            margin: 0 0 8px 0;\n        }\n        .instructions ul {\n            margin: 0;\n            padding-left: 20px;\n        }\n\n        .section-title {\n            background-color: #171717;\n            padding: 10px 24px;\n            font-size: 12px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            color: #888;\n            border-bottom: 1px solid #252525;\n        }\n\n        .row {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 16px 24px;\n            border-bottom: 1px solid #252525;\n            transition: background-color 0.2s ease;\n        }\n\n        .row:hover {\n            background-color: #242424;\n        }\n\n        .row label {\n            font-size: 15px;\n            font-weight: 500;\n        }\n\n        .input-wrapper {\n            display: flex;\n            align-items: center;\n            gap: 8px;\n        }\n\n        input {\n            background-color: #151515;\n            color: #ffffff;\n            border: 1px solid #3c3c3c;\n            padding: 8px 12px;\n            width: 100px;\n            text-align: right;\n            font-size: 16px;\n            font-family: inherit;\n            border-radius: 6px;\n            transition: border-color 0.2s, box-shadow 0.2s;\n        }\n\n        input:focus {\n            border-color: var(--accent-glow);\n            box-shadow: 0 0 0 3px rgba(82, 183, 136, 0.2);\n            outline: none;\n        }\n\n        .unit {\n            font-size: 15px;\n            color: #888;\n            width: 20px;\n            display: inline-block;\n        }\n\n        .output-value {\n            font-size: 18px;\n            font-weight: 700;\n            color: #ffffff;\n        }\n\n        .row.total-row {\n            background-color: rgba(82, 183, 136, 0.05);\n        }\n        \n        .row.total-row .output-value {\n            color: var(--accent-glow);\n            font-size: 20px;\n        }\n\n        .footer {\n            padding: 20px;\n            text-align: center;\n            font-size: 12px;\n            color: #666;\n            background-color: #171717;\n            border-top: 1px solid #252525;\n        }\n\n        \/* Hide default spin buttons for cleaner look *\/\n        input::-webkit-outer-spin-button,\n        input::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n        input[type=number] {\n            -moz-appearance: textfield;\n        }\n    \u003c\/style\u003e\n\n\n\n\u003cdiv class=\"calculator-container\"\u003e\n    \u003c!-- Header with Brand Context --\u003e\n    \u003cdiv class=\"header\"\u003e\n        \u003ch1\u003eRhodes Pickup Grouping Calculator\u003c\/h1\u003e\n        \u003cdiv class=\"brand-subtitle\"\u003eGhostwood Audio Engineering\u003c\/div\u003e\n    \u003c\/div\u003e\n    \n    \u003c!-- User Instructions Section --\u003e\n    \u003cdiv class=\"instructions\"\u003e\n        \u003cp\u003e\u003cstrong\u003eHow to use this tool:\u003c\/strong\u003e\u003c\/p\u003e\n        \u003cul\u003e\n            \u003cli\u003eAdjust individual \u003cstrong\u003epickup resistance\u003c\/strong\u003e based on your coil measurements.\u003c\/li\u003e\n            \u003cli\u003eDefine your parallel array block count in \u003cstrong\u003epickups per group\u003c\/strong\u003e.\u003c\/li\u003e\n            \u003cli\u003eEnter your total instrument note layout config (e.g., \u003cstrong\u003e73\u003c\/strong\u003e or \u003cstrong\u003e88\u003c\/strong\u003e keys).\u003c\/li\u003e\n        \u003c\/ul\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Inputs Area --\u003e\n    \u003cdiv class=\"section-title\"\u003eConfiguration Inputs\u003c\/div\u003e\n    \n    \u003cdiv class=\"row\"\u003e\n        \u003clabel for=\"pickupResistance\"\u003eIndividual Pickup Resistance\u003c\/label\u003e\n        \u003cdiv class=\"input-wrapper\"\u003e\n            \u003cinput type=\"number\" id=\"pickupResistance\" value=\"185.00\" step=\"0.01\" min=\"0\"\u003e\n            \u003cspan class=\"unit\"\u003eΩ\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"row\"\u003e\n        \u003clabel for=\"pickupPerGroup\"\u003ePickups Per Parallel Group\u003c\/label\u003e\n        \u003cdiv class=\"input-wrapper\"\u003e\n            \u003cinput type=\"number\" id=\"pickupPerGroup\" value=\"3\" step=\"1\" min=\"1\"\u003e\n            \u003cspan class=\"unit\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"row\"\u003e\n        \u003clabel for=\"numberOfKeys\"\u003eTotal Number of Keys\u003c\/label\u003e\n        \u003cdiv class=\"input-wrapper\"\u003e\n            \u003cinput type=\"number\" id=\"numberOfKeys\" value=\"73\" step=\"1\" min=\"1\"\u003e\n            \u003cspan class=\"unit\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Outputs Area --\u003e\n    \u003cdiv class=\"section-title\"\u003eCalculated Specifications\u003c\/div\u003e\n\n    \u003cdiv class=\"row\"\u003e\n        \u003clabel\u003eResistance Per Group Block\u003c\/label\u003e\n        \u003cdiv class=\"input-wrapper\"\u003e\n            \u003cspan class=\"output-value\" id=\"perGroup\"\u003e61.67\u003c\/span\u003e\n            \u003cspan class=\"unit\"\u003eΩ\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"row\"\u003e\n        \u003clabel\u003eTotal Number of Series Groups\u003c\/label\u003e\n        \u003cdiv class=\"input-wrapper\"\u003e\n            \u003cspan class=\"output-value\" id=\"numGroups\"\u003e24.33\u003c\/span\u003e\n            \u003cspan class=\"unit\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"row total-row\"\u003e\n        \u003clabel\u003eOverall Stage Circuit Resistance\u003c\/label\u003e\n        \u003cdiv class=\"input-wrapper\"\u003e\n            \u003cspan class=\"output-value\" id=\"overall\"\u003e1,500.56\u003c\/span\u003e\n            \u003cspan class=\"unit\" style=\"color: var(--accent-glow);\"\u003eΩ\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Copyright Footer --\u003e\n    \u003cdiv class=\"footer\"\u003e\n        © 2026 Ghostwood. All Rights Reserved. Custom audio tools \u0026amp; restoration utilities.\n    \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n    \/\/ Gather DOM Elements\n    const inputResistance = document.getElementById('pickupResistance');\n    const inputPerGroup = document.getElementById('pickupPerGroup');\n    const inputKeys = document.getElementById('numberOfKeys');\n\n    const outPerGroup = document.getElementById('perGroup');\n    const outNumGroups = document.getElementById('numGroups');\n    const outOverall = document.getElementById('overall');\n\n    function calculate() {\n        \/\/ Read input values safely\n        const r = parseFloat(inputResistance.value) || 0;\n        const pG = parseInt(inputPerGroup.value) || 1;\n        const keys = parseInt(inputKeys.value) || 0;\n\n        \/\/ Prevent division by zero breaking the layout math UI\n        const validatedPg = pG \u003c 1 ? 1 : pG;\n\n        \/\/ Matrix Calculation Logic\n        const perGroupCalc = r \/ validatedPg;\n        const numGroupsCalc = keys \/ validatedPg;\n        const overallCalc = numGroupsCalc * perGroupCalc;\n\n        \/\/ Update Text Elements dynamically \n        outPerGroup.textContent = perGroupCalc.toFixed(2);\n        outNumGroups.textContent = numGroupsCalc.toFixed(2);\n        outOverall.textContent = overallCalc.toLocaleString(undefined, { \n            minimumFractionDigits: 2, \n            maximumFractionDigits: 2 \n        });\n    }\n\n    \/\/ Bind real-time input event evaluation threads\n    inputResistance.addEventListener('input', calculate);\n    inputPerGroup.addEventListener('input', calculate);\n    inputKeys.addEventListener('input', calculate);\n\u003c\/script\u003e\n\n\n\n\u003c\/body\u003e","brand":"Ghostwood Musical Instrument Pickups","offers":[{"title":"Default Title","offer_id":51070265229564,"sku":null,"price":0.0,"currency_code":"USD","in_stock":false}],"url":"https:\/\/ghostwoodpickups.com\/products\/master","provider":"Ghostwood Musical Instrument Pickups","version":"1.0","type":"link"}