{"id":35238,"date":"2026-06-01T02:02:44","date_gmt":"2026-06-01T07:02:44","guid":{"rendered":"https:\/\/northwesternhair.com\/?page_id=35238"},"modified":"2026-06-23T00:28:09","modified_gmt":"2026-06-23T05:28:09","slug":"calculadora-de-recuento-de-injertos-de-trasplante-capilar-antiguo","status":"publish","type":"page","link":"https:\/\/northwesternhair.com\/es\/hair-transplant-graft-count-calculator-old\/","title":{"rendered":"Calculadora de Recuento de Injertos de Trasplante Capilar Antiguo"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"35238\" class=\"elementor elementor-35238\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-66335ab e-flex e-con-boxed e-con e-parent\" data-id=\"66335ab\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4ccade9 elementor-widget elementor-widget-html\" data-id=\"4ccade9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"preview-header\">\n  <h1>Northwestern Hair \u2014 Graft Count Calculator<\/h1>\n  <p>Working preview. Click regions on the diagram, answer the four questions, then click Calculate.<\/p>\n<\/div>\n\n<div class=\"gform_wrapper\">\n\n<div class=\"nwh-calc-container\">\n\n  <div class=\"nwh-calc-step\">\n    <div class=\"nwh-calc-step-header\">\n      <span class=\"nwh-calc-step-number\">Step 1<\/span>\n      <h3 class=\"nwh-calc-step-title\">Select Areas for Restoration<\/h3>\n      <p class=\"nwh-calc-step-desc\">Click each region of the scalp you'd like to restore. Click again to deselect. Your base graft count updates as you select.<\/p>\n    <\/div>\n\n    <div class=\"nwh-calc-svg-wrapper\">\n      <svg id=\"nwh-calc-svg\" viewBox=\"0 0 708 879\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Top-down scalp diagram with selectable regions\">\n        <path class=\"nwh-calc-structure\" d=\"M348.627 0.173439C350.649 0.0436868 352.671 -0.0133095 354.693 0.00260569C448.031 0.637646 545.592 33.7698 611.36 101.421C685.238 177.418 699.188 249.125 698.514 350.296C703.835 357.825 706.265 368.105 706.351 377.262C706.633 406.852 714.878 482.686 670.967 485.063C663.546 511.768 656.579 538.595 650.051 565.532C634.588 627.55 617.527 696.011 553.155 725.96C541.509 731.71 523.179 736.239 512.622 743.502C482.874 763.979 457.999 777.965 423.791 790.063C423.211 793.591 421.989 800.749 420.319 804.026C410.006 824.363 397.624 847.451 385.241 866.424C379.951 874.515 368.298 877.518 359.536 878.396C330.258 878.239 325.602 856.217 312.366 835.174C303.604 821.25 295.438 807.836 291.034 791.889C270.509 783.422 253.848 776.429 234.412 765.077C226.959 760.733 211.113 748.774 205.133 745.949C183.95 735.942 163.308 729.862 142.618 717.563C85.5734 683.664 72.0469 618.311 57.243 559.328C50.5659 533.084 43.7556 506.875 36.8121 480.701L35.9422 480.681C-4.35523 479.628 -0.162486 412.681 0.378261 384.904C0.621205 372.018 0.832825 355.012 10.7857 345.912C11.8045 248.805 21.052 186.938 89.9229 111.925C144.186 52.8133 214.679 17.8046 293.792 5.00201C312.797 1.92568 329.599 1.07606 348.627 0.173439Z\" fill=\"#1a1a1a\"\/>\n        <path class=\"nwh-calc-structure\" d=\"M333.205 6.81286C340.572 5.79476 372.954 5.46156 379.631 6.81247C391.739 6.37421 415.492 10.5084 427.961 12.7368C514.167 27.321 591.039 75.6031 641.619 146.94C613.006 212.286 590.875 284.666 585.506 356.019C520.836 364.767 448.776 367.438 383.267 368.021C299.012 368.77 209.656 368.466 126.318 356.211C126.757 279.395 103.56 215.143 69.3203 148.145C80.1901 132.645 90.5191 119.412 103.677 105.685C158.191 48.8113 254.036 7.48835 333.205 6.81286Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-region\" data-region=\"peripheral-crown\" data-grafts=\"4000\" data-label=\"Peripheral Crown\" d=\"M346.512 8.86442C353.103 8.42193 359.71 8.41009 366.293 8.82898C447.937 14.0214 510.735 83.0727 508.211 164.873C505.688 246.673 438.753 311.719 356.943 311.865C275.141 312.012 207.971 247.205 205.15 165.415C202.336 83.6246 264.891 14.3487 346.512 8.86442Z\" fill=\"#1a1a1a\"\/>\n        <path class=\"nwh-calc-region\" data-region=\"central-crown\" data-grafts=\"2500\" data-label=\"Central Crown\" d=\"M348.949 13.914C429.591 9.65904 498.454 71.5101 502.89 152.174C507.325 232.839 445.657 301.873 365.03 306.491C284.153 311.124 214.875 249.189 210.424 168.267C205.98 87.3454 268.049 18.1826 348.949 13.914Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-region\" data-region=\"aggressive-hairline-extension\" data-grafts=\"1600\" data-label=\"Aggressive Hairline Extension\" d=\"M635.873 523.074C636.704 522.913 637.284 523.075 638.185 523.169C640.043 527.146 635.615 563.439 634.729 570.57C595.419 552.098 509.143 573.584 470.671 589.626C431.267 606.056 395.139 641.796 350.437 641.247C331.488 641.014 312.256 632.309 295.022 625.19C220.18 591.309 159.984 548.157 74.4211 573.744L72.1641 563.155C69.1939 550.125 66.7566 536.221 64.0059 523.021C74.2644 524.19 93.3159 528.71 103.026 531.384C128.386 538.415 153.19 547.297 177.249 557.957C245.955 588.036 310.657 626.834 389.7 611.079C422.968 604.448 456.118 585.264 486.439 570.027C532.982 546.644 584.032 529.728 635.873 523.074Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-region\" data-region=\"mid-scalp\" data-grafts=\"2000\" data-label=\"Mid-Scalp\" d=\"M126.168 360.902C162.108 368.191 224.537 371.225 261.292 371.996C366.503 374.201 481.259 374.662 585.419 360.985C582.237 407.045 593.123 457.544 619.666 495.82C623.412 501.223 627.558 506.332 631.03 511.925C613.812 506.348 603.577 503.827 585.779 501.071C543.578 494.248 501.392 494.244 458.798 494.388L368.509 494.619C319.395 494.619 270.203 493.506 221.175 494.004C171.724 494.505 120.525 495.562 72.8457 509.669C109.146 464.704 122.383 417.519 126.168 360.902Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-region\" data-region=\"conservative-hairline\" data-grafts=\"1600\" data-label=\"Conservative Hairline\" d=\"M183.951 499.676C199.139 498.493 221.404 499.029 237.023 499.047C270.533 499.052 304.044 499.247 337.555 499.634C370.846 499.765 404.129 499.659 437.413 499.317C497.89 498.861 577.341 497.088 633.68 518.41C570.617 528.503 532.145 541.672 475.814 569.861C450.845 582.741 420.148 599.241 393.001 605.382C305.572 625.149 233.355 574.098 155.973 543.802C124.116 531.33 99.2262 524.996 66.1074 518.177C97.6118 503.421 148.771 501.087 183.951 499.676Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-region nwh-calc-region-lateral\" data-region=\"lateral-extension\" data-grafts=\"4000\" data-label=\"Lateral Extension\" d=\"M66.9849 155.543C70.7701 161.136 74.72 169.928 77.7137 176.224C125.777 277.267 144.884 397.129 77.8077 494.848C72.8156 501.502 68.9598 506.621 63.4113 512.822C61.6166 490.309 63.4975 464.18 64.2969 441.349C66.7028 372.122 77.5569 301.13 64.289 232.487C60.8408 214.628 55.4569 199.594 49.2422 182.836C53.7563 174.176 61.2639 163.617 66.9849 155.543Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-region nwh-calc-region-lateral\" data-region=\"lateral-extension\" data-grafts=\"0\" data-label=\"Lateral Extension\" d=\"M643.627 155.725C649.607 163.739 656.01 174.499 661.433 183.107C640.226 240.494 643.212 297.701 642.154 357.283C641.261 407.653 642.883 462.977 639.717 512.956C634.662 507.429 630.837 502.422 626.276 496.457C567.304 411.954 591.23 305.921 620.822 215.139C626.786 196.839 635.187 172.893 643.627 155.725Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-structure\" d=\"M495.984 748.816L495.459 750.077C478.288 762.757 443.978 781.212 423.571 785.994C421.502 784.599 421.157 784.129 418.775 783.98C413.305 787.515 416.432 796.257 413.054 802.482C407.842 811.224 403.665 821.259 398.195 829.773C389.778 842.874 383.485 865.273 367.325 870.314C354.332 874.359 342.443 870.361 335.03 859.04C323.329 841.172 313.251 821.823 302.342 803.407C299.387 798.413 300.72 789.428 295.242 786.441C292.781 786.802 292.428 786.833 290.006 786.3C267.475 780.193 237.405 763.611 218.346 750.348C316.487 780.467 398.556 779.244 495.984 748.816Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-structure\" d=\"M9.84457 352.287C11.7489 353.968 12.2505 368.936 12.8461 373.446C15.7928 394.981 20.0325 416.317 25.5497 437.34C27.8616 446.235 34.1624 466.768 35.3458 474.78C34.2173 476.891 34.6327 476.206 31.6154 477.228C2.82262 468.561 3.66908 421.325 4.06092 397.269C4.25685 384.742 3.74745 363.23 9.84457 352.287Z\" fill=\"#FDFDFD\"\/>\n        <path class=\"nwh-calc-structure\" d=\"M697.965 357.922C706.429 368.196 703.976 442.728 697.259 457.556C692.22 468.669 688.772 476.707 676.86 480.703C675.347 480.679 674.462 480.438 673.012 480.131C672.761 479.643 672.518 479.156 672.268 478.668C678.2 455.016 686.46 425.927 691.272 402.626C694.869 385.205 696.256 372.88 697.965 357.922Z\" fill=\"#FDFDFD\"\/>\n      <\/svg>\n    <\/div>\n\n    <div class=\"nwh-calc-legend\">\n      <div class=\"nwh-calc-legend-header\">Selected Areas<\/div>\n      <ul id=\"nwh-calc-selected-list\" class=\"nwh-calc-selected-list\">\n        <li class=\"nwh-calc-empty\">No areas selected yet \u2014 click the diagram above to begin.<\/li>\n      <\/ul>\n      <div class=\"nwh-calc-base-total\">\n        <span>Base Graft Count:<\/span>\n        <strong id=\"nwh-calc-base-total\">0<\/strong>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<!-- ============ STEP 2: HAIR CHARACTERISTICS UMBRELLA HEADER ============ -->\n\n<div class=\"nwh-calc-container\">\n  <div class=\"nwh-calc-step\">\n    <div class=\"nwh-calc-step-header\">\n      <span class=\"nwh-calc-step-number\">Step 2<\/span>\n      <h3 class=\"nwh-calc-step-title\">Select Hair Characteristics<\/h3>\n      <p class=\"nwh-calc-step-desc\">Tell us about your donor hair. These four characteristics determine your Donor Hair Density Factor &mdash; the multiplier that calibrates your graft count to your specific case.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- ============ HAIR CHARACTERISTIC FIELDS (simulated Gravity Forms structure) ============ -->\n\n<div class=\"gfield nwh-calc-field-caliber\" data-nwh-field=\"caliber\">\n  <label class=\"gfield_label\">How thick are your individual hairs?<\/label>\n  <div class=\"gfield_radio\">\n    <div class=\"gchoice\"><input type=\"radio\" id=\"caliber-fine\" name=\"caliber\" value=\"fine\"><label for=\"caliber-fine\">Fine<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"caliber-normal\" name=\"caliber\" value=\"normal\"><label for=\"caliber-normal\">Normal<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"caliber-thick\" name=\"caliber\" value=\"thick\"><label for=\"caliber-thick\">Thick<\/label><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"gfield nwh-calc-field-texture\" data-nwh-field=\"texture\">\n  <label class=\"gfield_label\">What's your hair texture?<\/label>\n  <div class=\"gfield_radio\">\n    <div class=\"gchoice\"><input type=\"radio\" id=\"texture-straight\" name=\"texture\" value=\"straight\"><label for=\"texture-straight\">Straight<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"texture-wavy\" name=\"texture\" value=\"wavy\"><label for=\"texture-wavy\">Wavy<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"texture-curly\" name=\"texture\" value=\"curly\"><label for=\"texture-curly\">Curly<\/label><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"gfield nwh-calc-field-hair-color\" data-nwh-field=\"hair-color\">\n  <label class=\"gfield_label\">What's your hair color?<\/label>\n  <div class=\"gfield_radio\">\n    <div class=\"gchoice\"><input type=\"radio\" id=\"hair-dark\" name=\"hair-color\" value=\"dark\"><label for=\"hair-dark\">Dark<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"hair-medium\" name=\"hair-color\" value=\"medium\"><label for=\"hair-medium\">Medium<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"hair-light\" name=\"hair-color\" value=\"light\"><label for=\"hair-light\">Light<\/label><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"gfield nwh-calc-field-skin-color\" data-nwh-field=\"skin-color\">\n  <label class=\"gfield_label\">What's your skin tone?<\/label>\n  <div class=\"gfield_radio\">\n    <div class=\"gchoice\"><input type=\"radio\" id=\"skin-dark\" name=\"skin-color\" value=\"dark\"><label for=\"skin-dark\">Dark<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"skin-medium\" name=\"skin-color\" value=\"medium\"><label for=\"skin-medium\">Medium<\/label><\/div>\n    <div class=\"gchoice\"><input type=\"radio\" id=\"skin-light\" name=\"skin-color\" value=\"light\"><label for=\"skin-light\">Light<\/label><\/div>\n  <\/div>\n<\/div>\n\n<!-- ============ CALCULATE BUTTON + RESULT ============ -->\n\n<div class=\"nwh-calc-container\">\n\n  <div class=\"nwh-calc-action\">\n    <button type=\"button\" id=\"nwh-calc-button\" class=\"nwh-calc-button\">\n      Calculate My Graft Count\n    <\/button>\n    <p id=\"nwh-calc-validation\" class=\"nwh-calc-validation\" style=\"display:none;\"><\/p>\n  <\/div>\n\n  <div id=\"nwh-calc-result\" class=\"nwh-calc-result\" style=\"display:none;\">\n    <div class=\"nwh-calc-result-header\">\n      <h3>Your Estimated Hair Transplant Graft Count<\/h3>\n    <\/div>\n    <div class=\"nwh-calc-result-number\">\n      <span id=\"nwh-calc-final-count\">\u2014<\/span>\n      <span class=\"nwh-calc-result-label\">grafts*<\/span>\n    <\/div>\n    <div class=\"nwh-calc-result-breakdown\">\n      <div class=\"nwh-calc-breakdown-row\">\n        <span>Base graft count from area:<\/span>\n        <strong id=\"nwh-calc-result-base\">\u2014<\/strong>\n      <\/div>\n      <div class=\"nwh-calc-breakdown-row\">\n        <span>Donor Hair Density Factor:<\/span>\n        <strong id=\"nwh-calc-result-factor\">\u2014<\/strong>\n      <\/div>\n      <div class=\"nwh-calc-breakdown-row nwh-calc-breakdown-total\">\n        <span>Estimated total graft count:<\/span>\n        <strong id=\"nwh-calc-result-total\">\u2014<\/strong>\n      <\/div>\n    <\/div>\n    <p class=\"nwh-calc-disclaimer\">\n      <strong>*This is an estimate.<\/strong> The calculator doesn't account for the number of hairs per graft in your donor zone. Dr. Vinay performs a clinical and trichoscopic examination to determine your exact donor availability and density. Your actual graft count is calibrated in consultation to what your case actually needs \u2014 with no operational bias from clinic, surgeon, team, or technology.\n    <\/p>\n    <div class=\"nwh-calc-ctas\">\n      <div class=\"nwh-calc-cta-card nwh-calc-cta-primary\">\n        <h4>Get a More Detailed Graft Count &amp; Price Estimate \u2014 Free<\/h4>\n        <p>Upload your photos and our team will send you a detailed graft count plan and price estimate, reviewed by Dr. Vinay.<\/p>\n        <a href=\"#\" class=\"nwh-calc-cta-link nwh-calc-cta-link-primary\">\n          Upload Your Photos \u2192\n        <\/a>\n      <\/div>\n      <div class=\"nwh-calc-cta-card nwh-calc-cta-secondary\">\n        <h4>Schedule a Consultation with Dr. Vinay<\/h4>\n        <p>Meet with Dr. Vinay directly to get your accurate graft count and review your candidacy for hair restoration.<\/p>\n        <a href=\"https:\/\/northwesternhair.com\/general-book-a-consult\/\" class=\"nwh-calc-cta-link nwh-calc-cta-link-secondary\">\n          Book a Consultation \u2192\n        <\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<\/div>\n\n<script>\n(function() {\n  const CALIBER_MULTIPLIER = { 'fine': 1.169, 'normal': 1.0, 'thick': 0.866 };\n  const TEXTURE_MULTIPLIER = { 'straight': 1.169, 'wavy': 1.0, 'curly': 0.866 };\n  const COLOR_TIER = { 'dark': 0, 'medium': 1, 'light': 2 };\n  const CONTRAST_MULTIPLIER = { 0: 1.0, 1: 1.08, 2: 1.170 };\n\n  const state = { selectedRegions: new Set(), baseGraftCount: 0 };\n  const svg = document.getElementById('nwh-calc-svg');\n  if (!svg) return;\n  const regions = svg.querySelectorAll('.nwh-calc-region');\n  const selectedList = document.getElementById('nwh-calc-selected-list');\n  const baseTotalDisplay = document.getElementById('nwh-calc-base-total');\n\n  regions.forEach(region => {\n    region.addEventListener('click', function() {\n      toggleRegion(this.dataset.region);\n    });\n    region.addEventListener('keydown', function(e) {\n      if (e.key === 'Enter' || e.key === ' ') {\n        e.preventDefault();\n        toggleRegion(this.dataset.region);\n      }\n    });\n    region.setAttribute('tabindex', '0');\n    region.setAttribute('role', 'button');\n    region.setAttribute('aria-pressed', 'false');\n    region.setAttribute('aria-label', 'Toggle ' + region.dataset.label + ' (' + region.dataset.grafts + ' grafts)');\n  });\n\n  function toggleRegion(regionKey) {\n    if (state.selectedRegions.has(regionKey)) {\n      state.selectedRegions.delete(regionKey);\n    } else {\n      state.selectedRegions.add(regionKey);\n    }\n    updateVisualState();\n    updateBaseCount();\n    updateSelectedList();\n  }\n\n  function updateVisualState() {\n    regions.forEach(region => {\n      const isSelected = state.selectedRegions.has(region.dataset.region);\n      if (isSelected) {\n        region.classList.add('nwh-calc-region-selected');\n        region.setAttribute('aria-pressed', 'true');\n      } else {\n        region.classList.remove('nwh-calc-region-selected');\n        region.setAttribute('aria-pressed', 'false');\n      }\n    });\n  }\n\n  function updateBaseCount() {\n    let total = 0;\n    state.selectedRegions.forEach(regionKey => {\n      const paths = svg.querySelectorAll('[data-region=\"' + regionKey + '\"]');\n      let maxGrafts = 0;\n      paths.forEach(p => {\n        const g = parseInt(p.dataset.grafts, 10);\n        if (g > maxGrafts) maxGrafts = g;\n      });\n      total += maxGrafts;\n    });\n    state.baseGraftCount = total;\n    baseTotalDisplay.textContent = total.toLocaleString();\n  }\n\n  function updateSelectedList() {\n    if (state.selectedRegions.size === 0) {\n      selectedList.innerHTML = '<li class=\"nwh-calc-empty\">No areas selected yet \u2014 click the diagram above to begin.<\/li>';\n      return;\n    }\n    const items = [];\n    state.selectedRegions.forEach(regionKey => {\n      const paths = svg.querySelectorAll('[data-region=\"' + regionKey + '\"]');\n      let label = '';\n      let maxGrafts = 0;\n      paths.forEach(p => {\n        if (!label) label = p.dataset.label;\n        const g = parseInt(p.dataset.grafts, 10);\n        if (g > maxGrafts) maxGrafts = g;\n      });\n      items.push({ label: label, grafts: maxGrafts });\n    });\n    selectedList.innerHTML = items.map(item =>\n      '<li><span>' + item.label + '<\/span><strong>' + item.grafts.toLocaleString() + ' grafts<\/strong><\/li>'\n    ).join('');\n  }\n\n  const calcButton = document.getElementById('nwh-calc-button');\n  const resultEl = document.getElementById('nwh-calc-result');\n  const validationEl = document.getElementById('nwh-calc-validation');\n\n  calcButton.addEventListener('click', function() {\n    const validation = validateInputs();\n    if (!validation.valid) {\n      showValidation(validation.message);\n      return;\n    }\n    hideValidation();\n    runCalculation(validation.inputs);\n  });\n\n  function validateInputs() {\n    const errors = [];\n    if (state.selectedRegions.size === 0) errors.push('Please click at least one scalp area on the diagram.');\n    const caliber = getRadioValue('caliber');\n    const texture = getRadioValue('texture');\n    const hairColor = getRadioValue('hair-color');\n    const skinColor = getRadioValue('skin-color');\n    if (!caliber) errors.push('Please select your hair caliber.');\n    if (!texture) errors.push('Please select your hair texture.');\n    if (!hairColor) errors.push('Please select your hair color.');\n    if (!skinColor) errors.push('Please select your skin color.');\n    if (errors.length > 0) return { valid: false, message: errors.join(' ') };\n    return { valid: true, inputs: { caliber, texture, hairColor, skinColor } };\n  }\n\n  function getRadioValue(fieldKey) {\n    const checked = document.querySelector('[data-nwh-field=\"' + fieldKey + '\"] input[type=\"radio\"]:checked');\n    if (checked) return checked.value.toLowerCase().trim();\n    return null;\n  }\n\n  function showValidation(message) {\n    validationEl.textContent = message;\n    validationEl.style.display = 'block';\n  }\n\n  function hideValidation() {\n    validationEl.style.display = 'none';\n  }\n\n  function runCalculation(inputs) {\n    const caliberMult = CALIBER_MULTIPLIER[inputs.caliber] || 1.0;\n    const textureMult = TEXTURE_MULTIPLIER[inputs.texture] || 1.0;\n    const hairTier = COLOR_TIER[inputs.hairColor];\n    const skinTier = COLOR_TIER[inputs.skinColor];\n    let contrastMult = 1.0;\n    if (hairTier !== undefined && skinTier !== undefined) {\n      const diff = Math.abs(hairTier - skinTier);\n      contrastMult = CONTRAST_MULTIPLIER[diff] || 1.0;\n    }\n    const factor = caliberMult * textureMult * contrastMult;\n    const finalCount = Math.round(state.baseGraftCount * factor);\n    const finalCountRounded = Math.round(finalCount \/ 100) * 100;\n    document.getElementById('nwh-calc-final-count').textContent = finalCountRounded.toLocaleString();\n    document.getElementById('nwh-calc-result-base').textContent = state.baseGraftCount.toLocaleString();\n    document.getElementById('nwh-calc-result-factor').textContent = factor.toFixed(2);\n    document.getElementById('nwh-calc-result-total').textContent = finalCountRounded.toLocaleString() + ' grafts';\n    resultEl.style.display = 'block';\n    setTimeout(() => {\n      resultEl.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }, 50);\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Northwestern Hair \u2014 Graft Count Calculator Working preview. Click regions on the diagram, answer the four questions, then click Calculate. Step 1 Select Areas for Restoration Click each region of the scalp you&#8217;d like to restore. Click again to deselect. Your base graft count updates as you select. Selected Areas No areas selected yet \u2014 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-35238","page","type-page","status-publish","hentry","has-read-time","read-time-2"],"acf":[],"_links":{"self":[{"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/pages\/35238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/comments?post=35238"}],"version-history":[{"count":5,"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/pages\/35238\/revisions"}],"predecessor-version":[{"id":39671,"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/pages\/35238\/revisions\/39671"}],"wp:attachment":[{"href":"https:\/\/northwesternhair.com\/es\/wp-json\/wp\/v2\/media?parent=35238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}