{"id":4339,"date":"2026-02-25T07:49:22","date_gmt":"2026-02-25T07:49:22","guid":{"rendered":"https:\/\/idaequipment.com\/?page_id=4339"},"modified":"2026-02-25T08:00:26","modified_gmt":"2026-02-25T08:00:26","slug":"tool-configuration-calculator","status":"publish","type":"page","link":"https:\/\/idaequipment.com\/pt\/ink-production-line\/tool-configuration-calculator\/","title":{"rendered":"Calculadora de configura\u00e7\u00e3o de ferramentas"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-5ccb3c1\" data-block-id=\"5ccb3c1\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-5ccb3c1-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-6d14013\" data-v=\"4\" data-block-id=\"6d14013\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-6d14013-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-6d14013-inner-blocks\">\n<section id=\"ink-calculator-module\" class=\"calc-wrapper\" aria-label=\"Ink Production Line Configuration Calculator\">\n  <style>\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Open+Sans:wght@400;600;700&display=swap');\n\n    \/* --- \u57fa\u7840\u5bb9\u5668\u4e0e\u53d8\u91cf --- *\/\n    .calc-wrapper {\n      --c-primary: #0060A8;\n      --c-primary-dark: #004b87;\n      --c-primary-light: #e6f0f8;\n      --c-text: #333333;\n      --c-text-muted: #666666;\n      --c-border: #dbe4ea;\n      --c-bg: #ffffff;\n      --c-input-bg: #f8fafc;\n      --c-error: #d32f2f;\n      \n      font-family: 'Open Sans', sans-serif;\n      background-color: #fafbfc;\n      padding: 90px 20px;\n      color: var(--c-text);\n      line-height: 1.5;\n      box-sizing: border-box;\n    }\n\n    .calc-wrapper *, .calc-wrapper *::before, .calc-wrapper *::after {\n      box-sizing: inherit;\n    }\n\n    .calc-container {\n      max-width: 1000px;\n      margin: 0 auto;\n      background: var(--c-bg);\n      border-radius: 8px;\n      box-shadow: 0 10px 40px rgba(0, 96, 168, 0.08);\n      border: 1px solid var(--c-border);\n      overflow: hidden;\n    }\n\n    \/* --- \u5934\u90e8\u533a\u57df --- *\/\n    .calc-header {\n      background: var(--c-primary);\n      padding: 40px;\n      text-align: center;\n      color: #ffffff;\n    }\n\n    .calc-title {\n      font-size: 32px;\n      font-weight: 700;\n      margin: 0 0 15px 0;\n      letter-spacing: -0.5px;\n      color: #ffffff;\n    }\n\n    .calc-intro {\n      font-size: 16px;\n      opacity: 0.9;\n      margin: 0 auto;\n      max-width: 700px;\n      line-height: 1.6;\n    }\n\n    \/* --- \u8868\u5355\u63a7\u5236\u53f0\u533a\u57df --- *\/\n    .calc-body {\n      padding: 50px 40px;\n    }\n\n    .calc-grid {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 30px;\n      margin-bottom: 40px;\n    }\n\n    .form-group {\n      display: flex;\n      flex-direction: column;\n      gap: 8px;\n    }\n\n    .form-label {\n      font-size: 14px;\n      font-weight: 700;\n      text-transform: uppercase;\n      color: var(--c-primary);\n      letter-spacing: 0.5px;\n    }\n\n    \/* Select \u6837\u5f0f *\/\n    .form-select {\n      appearance: none;\n      -webkit-appearance: none;\n      width: 100%;\n      height: 50px;\n      padding: 0 20px;\n      font-family: 'Open Sans', sans-serif;\n      font-size: 15px;\n      color: var(--c-text);\n      background-color: var(--c-input-bg);\n      border: 1px solid var(--c-border);\n      border-radius: 4px;\n      cursor: pointer;\n      transition: all 0.3s ease;\n      background-image: url(\"data:image\/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%230060A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\n      background-repeat: no-repeat;\n      background-position: right 20px center;\n    }\n\n    .form-select:hover {\n      border-color: var(--c-primary);\n      background-color: #ffffff;\n    }\n\n    .form-select:focus {\n      outline: none;\n      border-color: var(--c-primary);\n      box-shadow: 0 0 0 3px rgba(0, 96, 168, 0.1);\n    }\n    \n    \/* \u9519\u8bef\u72b6\u6001 *\/\n    .form-select.error {\n      border-color: var(--c-error);\n      background-color: #fff8f8;\n    }\n\n    .form-hint {\n      font-size: 12px;\n      color: var(--c-text-muted);\n    }\n\n    \/* \u5206\u6bb5\u5f00\u5173\u6837\u5f0f *\/\n    .radio-segment-group {\n      display: flex;\n      background: var(--c-input-bg);\n      border: 1px solid var(--c-border);\n      border-radius: 4px;\n      padding: 4px;\n      height: 50px;\n    }\n\n    .radio-option {\n      flex: 1;\n      position: relative;\n    }\n\n    .radio-option input {\n      position: absolute;\n      opacity: 0;\n      cursor: pointer;\n      height: 100%;\n      width: 100%;\n      z-index: 2;\n    }\n\n    .radio-label {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 100%;\n      height: 100%;\n      font-size: 14px;\n      font-weight: 600;\n      color: var(--c-text-muted);\n      cursor: pointer;\n      border-radius: 3px;\n      transition: all 0.2s ease;\n      position: relative;\n      z-index: 1;\n    }\n\n    .radio-option input:checked + .radio-label {\n      background-color: #ffffff;\n      color: var(--c-primary);\n      box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    }\n\n    \/* \u8ba1\u7b97\u6309\u94ae *\/\n    .btn-calculate {\n      display: block;\n      width: 100%;\n      background-color: var(--c-primary);\n      color: #ffffff;\n      font-size: 18px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: 1px;\n      padding: 18px;\n      border: none;\n      border-radius: 4px;\n      cursor: pointer;\n      transition: background 0.3s ease;\n      box-shadow: 0 4px 15px rgba(0, 96, 168, 0.25);\n    }\n\n    .btn-calculate:hover {\n      background-color: var(--c-primary-dark);\n      transform: translateY(-1px);\n    }\n\n    \/* --- \u7ed3\u679c\u9762\u677f --- *\/\n    .calc-results {\n      display: none;\n      margin-top: 50px;\n      border-top: 2px dashed var(--c-border);\n      padding-top: 40px;\n      animation: slideDown 0.5s ease forwards;\n    }\n\n    @keyframes slideDown {\n      from { opacity: 0; transform: translateY(-10px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    .results-header {\n      display: flex;\n      justify-content: space-between;\n      align-items: flex-end;\n      margin-bottom: 30px;\n      flex-wrap: wrap;\n      gap: 15px;\n    }\n\n    .results-title {\n      font-size: 24px;\n      font-weight: 700;\n      color: var(--c-text);\n      margin: 0;\n    }\n\n    .results-badge {\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--c-primary);\n      background: var(--c-primary-light);\n      padding: 6px 12px;\n      border-radius: 20px;\n      text-transform: uppercase;\n    }\n\n    \/* Summary Grid *\/\n    .summary-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 20px;\n      margin-bottom: 30px;\n    }\n\n    .summary-card {\n      background: #ffffff;\n      border: 1px solid var(--c-border);\n      border-left: 4px solid var(--c-primary);\n      padding: 20px;\n      border-radius: 4px;\n    }\n\n    .summary-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      color: var(--c-text-muted);\n      margin-bottom: 5px;\n      display: block;\n    }\n\n    .summary-value {\n      font-size: 20px;\n      font-weight: 700;\n      color: var(--c-primary);\n      display: block;\n      margin-bottom: 4px;\n    }\n\n    .summary-note {\n      font-size: 12px;\n      color: var(--c-text-muted);\n      font-style: italic;\n    }\n\n    \/* Equipment List *\/\n    .equip-list {\n      display: flex;\n      flex-direction: column;\n      gap: 15px;\n      margin-bottom: 30px;\n    }\n\n    .equip-item {\n      display: grid;\n      grid-template-columns: 60px 1fr auto;\n      align-items: center;\n      background: var(--c-input-bg);\n      border: 1px solid var(--c-border);\n      padding: 15px 20px;\n      border-radius: 6px;\n      transition: border-color 0.2s;\n    }\n\n    .equip-item:hover {\n      border-color: var(--c-primary);\n    }\n\n    .equip-icon {\n      font-size: 24px;\n      color: var(--c-primary);\n      background: #ffffff;\n      width: 40px;\n      height: 40px;\n      border-radius: 50%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      border: 1px solid var(--c-border);\n    }\n\n    .equip-info h4 {\n      font-size: 16px;\n      font-weight: 700;\n      margin: 0 0 4px 0;\n      color: var(--c-text);\n    }\n\n    .equip-model {\n      font-size: 14px;\n      color: var(--c-primary);\n      font-weight: 600;\n      margin-right: 10px;\n    }\n\n    .equip-desc {\n      font-size: 13px;\n      color: var(--c-text-muted);\n    }\n\n    .equip-qty {\n      font-size: 18px;\n      font-weight: 700;\n      color: var(--c-text);\n      background: #ffffff;\n      padding: 5px 15px;\n      border-radius: 20px;\n      border: 1px solid var(--c-border);\n    }\n\n    .notes-box {\n      background: #fff8f0;\n      border-left: 4px solid #ff9900;\n      padding: 20px;\n      font-size: 14px;\n      color: #555;\n      margin-bottom: 30px;\n      line-height: 1.6;\n    }\n    \n    .notes-box strong {\n      color: #cc7a00;\n    }\n\n    .result-actions {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 20px;\n      background: var(--c-primary-light);\n      padding: 25px 30px;\n      border-radius: 6px;\n    }\n\n    .cta-text {\n      font-size: 15px;\n      color: var(--c-text);\n      font-weight: 600;\n      margin: 0;\n    }\n\n    .btn-quote {\n      background-color: var(--c-primary);\n      color: #ffffff !important;\n      text-decoration: none;\n      padding: 12px 24px;\n      font-weight: 700;\n      font-size: 14px;\n      border-radius: 4px;\n      transition: background 0.3s;\n      white-space: nowrap;\n    }\n\n    .btn-quote:hover {\n      background-color: var(--c-primary-dark);\n    }\n\n    .btn-reset {\n      background: transparent;\n      border: none;\n      color: var(--c-text-muted);\n      font-size: 14px;\n      cursor: pointer;\n      text-decoration: underline;\n    }\n\n    .btn-reset:hover {\n      color: var(--c-primary);\n    }\n\n    .ex-badge {\n      display: inline-block;\n      background: #ffebe6;\n      color: #d63300;\n      font-size: 11px;\n      font-weight: 700;\n      padding: 2px 6px;\n      border-radius: 3px;\n      margin-left: 8px;\n    }\n\n    @media (max-width:690px) {\n      .calc-wrapper { padding: 50px 15px; }\n      .calc-body { padding: 30px 20px; }\n      .calc-grid { grid-template-columns: 1fr; gap: 20px; }\n      .summary-grid { grid-template-columns: 1fr; }\n      .equip-item { grid-template-columns: 1fr auto; gap: 10px; }\n      .equip-icon { display: none; }\n      .result-actions { flex-direction: column; text-align: center; }\n    }\n  <\/style>\n\n  <div class=\"calc-container\">\n    \n    <div class=\"calc-header\">\n      <h2 class=\"calc-title\">Ink Production Line Configuration Calculator<\/h2>\n      <p class=\"calc-intro\">\n        Select your ink type, output capacity, and requirements below. Our algorithm will generate a recommended IDA equipment list and investment estimate instantly.\n      <\/p>\n    <\/div>\n\n    <div class=\"calc-body\">\n      \n      <div class=\"calc-grid\">\n        \n        <div class=\"form-group\">\n          <label class=\"form-label\" for=\"cc-ink-type\">Ink Type<\/label>\n          <select class=\"form-select\" id=\"cc-ink-type\">\n            <option value=\"\">&#8212; Select ink type &#8212;<\/option>\n            <option value=\"water-flexo\">Water-Based Flexo \/ Gravure<\/option>\n            <option value=\"solvent-gravure\">Solvent-Based Gravure<\/option>\n            <option value=\"uv-curable\">UV-Curable<\/option>\n            <option value=\"offset-paste\">Offset (Paste Ink)<\/option>\n            <option value=\"screen\">Screen Printing<\/option>\n            <option value=\"digital-inkjet\">Digital \/ Inkjet<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"form-label\" for=\"cc-output\">Target Annual Output<\/label>\n          <select class=\"form-select\" id=\"cc-output\">\n            <option value=\"\">&#8212; Select annual output &#8212;<\/option>\n            <option value=\"500\">500 T\/year<\/option>\n            <option value=\"2000\">2,000 T\/year<\/option>\n            <option value=\"5000\">5,000 T\/year<\/option>\n            <option value=\"10000\">10,000 T\/year<\/option>\n            <option value=\"30000\">30,000 T\/year<\/option>\n            <option value=\"50000\">50,000 T\/year<\/option>\n            <option value=\"100000\">100,000 T\/year<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"form-label\" for=\"cc-fineness\">Fineness Requirement<\/label>\n          <select class=\"form-select\" id=\"cc-fineness\">\n            <option value=\"\">&#8212; Select target fineness &#8212;<\/option>\n            <option value=\"25\">Standard (\u2264 25 \u03bcm)<\/option>\n            <option value=\"15\">Fine (\u2264 15 \u03bcm)<\/option>\n            <option value=\"5\">Very Fine (\u2264 5 \u03bcm)<\/option>\n            <option value=\"1\">Ultra-Fine (\u2264 1 \u03bcm)<\/option>\n            <option value=\"0.05\">Nano-Grade (D50 \u2264 50 nm)<\/option>\n          <\/select>\n          <span class=\"form-hint\">Target particle size after grinding process<\/span>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"form-label\">Automation Level<\/label>\n          <div class=\"radio-segment-group\">\n            <div class=\"radio-option\">\n              <input type=\"radio\" name=\"cc-auto\" id=\"cc-auto-manual\" value=\"manual\">\n              <label class=\"radio-label\" for=\"cc-auto-manual\">Manual<\/label>\n            <\/div>\n            <div class=\"radio-option\">\n              <input type=\"radio\" name=\"cc-auto\" id=\"cc-auto-semi\" value=\"semi\" checked>\n              <label class=\"radio-label\" for=\"cc-auto-semi\">Semi-Auto<\/label>\n            <\/div>\n            <div class=\"radio-option\">\n              <input type=\"radio\" name=\"cc-auto\" id=\"cc-auto-full\" value=\"full\">\n              <label class=\"radio-label\" for=\"cc-auto-full\">Fully Auto<\/label>\n            <\/div>\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n      <button type=\"button\" class=\"btn-calculate\" id=\"cc-btn-calculate\">Generate Configuration<\/button>\n\n      <div class=\"calc-results\" id=\"cc-results-panel\">\n        \n        <div class=\"results-header\">\n          <h3 class=\"results-title\">Recommended Configuration<\/h3>\n          <span class=\"results-badge\" id=\"cc-res-badge\">Result<\/span>\n        <\/div>\n\n        <div class=\"summary-grid\" id=\"cc-summary-grid\">\n          <\/div>\n\n        <div class=\"equip-list\" id=\"cc-equip-list\">\n          <\/div>\n\n        <div class=\"notes-box\">\n          <p id=\"cc-notes-text\"><\/p>\n        <\/div>\n\n        <div class=\"result-actions\">\n          <p class=\"cta-text\">Need a detailed proposal with floor plan layout?<\/p>\n          <div style=\"display:flex; gap:15px; align-items:center;\">\n            <button type=\"button\" class=\"btn-reset\" id=\"cc-btn-reset\">Reconfigure<\/button>\n            <a href=\"#ct-popup-1329\" class=\"btn-quote\" id=\"cc-btn-cta\">Request Official Quote<\/a>\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  \n  \/\/ Elements\n  var scope = document.getElementById('ink-calculator-module');\n  var selInk = scope.querySelector('#cc-ink-type');\n  var selOutput = scope.querySelector('#cc-output');\n  var selFine = scope.querySelector('#cc-fineness');\n  var btnCalc = scope.querySelector('#cc-btn-calculate');\n  var resultsPanel = scope.querySelector('#cc-results-panel');\n  var btnReset = scope.querySelector('#cc-btn-reset');\n\n  \/\/ Logic Functions\n  function getAuto(){\n    var r = scope.querySelector('input[name=\"cc-auto\"]:checked');\n    return r ? r.value : 'semi';\n  }\n\n  function outputTier(t){\n    t = parseInt(t);\n    if(t <= 500) return 'micro';\n    if(t <= 2000) return 'small';\n    if(t <= 10000) return 'mid';\n    if(t <= 50000) return 'large';\n    return 'mega';\n  }\n\n  \/\/ Equipment Database\n  var DB = {\n    dispersers: {\n      'IGF-55': {desc:'High-speed disperser, 55 kW', capacity:'Up to 3,000L batch'},\n      'IGF-75': {desc:'High-speed disperser, 75 kW', capacity:'Up to 5,000L batch'},\n      'IGF-90': {desc:'Heavy-duty disperser, 90 kW', capacity:'Up to 8,000L batch'},\n      'IGF-110': {desc:'Heavy-duty disperser, 110 kW', capacity:'Up to 12,000L batch'},\n      'IGF-132': {desc:'Industrial disperser, 132 kW', capacity:'Up to 15,000L batch'},\n      'ISF': {desc:'Lab-scale disperser for R&#038;D', capacity:'0.5 - 5L batch'},\n      'IGF-55-EX': {desc:'Explosion-proof disperser, 55 kW', capacity:'Up to 3,000L batch', exproof:true},\n      'IGF-75-EX': {desc:'Explosion-proof disperser, 75 kW', capacity:'Up to 5,000L batch', exproof:true}\n    },\n    beadmills: {\n      'IWS-15': {type:'Disc', desc:'Horizontal disc bead mill, 15L', fineness:'5-25 \u03bcm'},\n      'IWS-30': {type:'Disc', desc:'Horizontal disc bead mill, 30L', fineness:'5-25 \u03bcm'},\n      'IWS-50': {type:'Disc', desc:'Horizontal disc bead mill, 50L', fineness:'5-25 \u03bcm'},\n      'IWS-100': {type:'Disc', desc:'Horizontal disc bead mill, 100L', fineness:'5-25 \u03bcm'},\n      'IBS-15': {type:'Pin', desc:'Horizontal pin-type bead mill, 15L', fineness:'1-10 \u03bcm'},\n      'IBS-30': {type:'Pin', desc:'Horizontal pin-type bead mill, 30L', fineness:'1-10 \u03bcm'},\n      'IBS-50': {type:'Pin', desc:'Horizontal pin-type bead mill, 50L', fineness:'1-10 \u03bcm'},\n      'INW-5': {type:'Turbine', desc:'Turbine nano-mill, 5L', fineness:'D50 \u2264 50 nm'},\n      'INW-15': {type:'Turbine', desc:'Turbine nano-mill, 15L', fineness:'D50 \u2264 50 nm'},\n      'INW-30': {type:'Turbine', desc:'Turbine nano-mill, 30L', fineness:'D50 \u2264 50 nm'}\n    },\n    basketmills: {\n      'ILS-7.5': {desc:'Basket mill, 7.5 kW', batch:'10L'},\n      'ILS-22': {desc:'Basket mill, 22 kW', batch:'30L'},\n      'ILS-37': {desc:'Basket mill, 37 kW', batch:'40L'}\n    },\n    threeroll: {\n      'IS65': {desc:'Three-roll mill, 65mm dia', mode:'Manual'},\n      'IS65TC': {desc:'Three-roll mill with tight-contact', mode:'Tight-contact'},\n      'SY-150': {desc:'Hydraulic three-roll mill, 150mm', mode:'Hydraulic'},\n      'SY-260': {desc:'Hydraulic three-roll mill, 260mm', mode:'Hydraulic'},\n      'SY-405': {desc:'Hydraulic three-roll mill, 405mm', mode:'Hydraulic'}\n    },\n    mixers: {\n      'IDJ': {desc:'Butterfly mixer', use:'Premix'},\n      'TSJ': {desc:'Dual-shaft mixer', use:'Batch'},\n      'QLF': {desc:'Triple-shaft mixer', use:'Paste'},\n      'XJB': {desc:'Planetary mixer', use:'Vacuum'}\n    }\n  };\n\n  function buildConfig(ink, output, fineness, auto){\n    var tier = outputTier(output);\n    output = parseInt(output);\n    fineness = parseFloat(fineness);\n    var equip = [];\n    var priceMin = 0, priceMax = 0;\n    var capacityNote = '';\n    var notes = '';\n    var lineLabel = '';\n\n    function add(cat, model, qty, role){\n      equip.push({category:cat, model:model, qty:qty, role:role});\n    }\n\n    \/\/ Logic Engine\n    if(ink === 'water-flexo'){\n      lineLabel = 'Water-Based Ink Line';\n      if(tier === 'micro' || tier === 'small'){\n        add('Disperser','IGF-55',1,'Pre-dispersing');\n        add('Bead Mill', fineness <= 5 ? 'IBS-15' : 'IWS-15', 1, 'Grinding');\n        add('Mixer','IDJ',1,'Batch mixing');\n        priceMin=50000; priceMax=150000;\n        capacityNote='500 - 2,000 T\/year (1 shift)';\n      } else if(tier === 'mid'){\n        add('Disperser','IGF-75',1,'Pre-dispersing');\n        add('Bead Mill', fineness <= 5 ? 'IBS-30' : 'IWS-30', 2, 'Parallel Grinding');\n        add('Mixer','TSJ',1,'Dual-shaft mixing');\n        priceMin=150000; priceMax=400000;\n        capacityNote='5k - 10k T\/year (2 shifts)';\n      } else {\n        add('Disperser','IGF-110',2,'Pre-dispersing');\n        add('Bead Mill', fineness <= 5 ? 'IBS-50' : 'IWS-100', 3, 'Multi-pass Grinding');\n        add('Mixer','TSJ',2,'Mixing stations');\n        priceMin=500000; priceMax=2000000;\n        capacityNote='30k+ T\/year (continuous)';\n      }\n      if(fineness <= 0.05) { add('Bead Mill','INW-15',2,'Nano-Grinding'); priceMin+=100000; }\n      notes = '<strong>Water-based inks<\/strong> require SS316L or ceramic contact parts. IDA mills include these as standard.';\n    }\n    else if(ink === 'solvent-gravure'){\n      lineLabel = 'Solvent-Based Line';\n      if(tier === 'micro' || tier === 'small'){\n        add('Disperser','IGF-75-EX',1,'EX-Proof Dispersing');\n        add('Bead Mill', fineness <= 5 ? 'IBS-15' : 'IWS-15', 1, 'EX Grinding');\n        priceMin=80000; priceMax=200000;\n        capacityNote='500 - 2,000 T\/year';\n      } else {\n        add('Disperser','IGF-75-EX',2,'EX Dispersing');\n        add('Bead Mill','IWS-50',2,'EX Grinding');\n        add('Mixer','TSJ',1,'Mixing');\n        priceMin=300000; priceMax=800000;\n        capacityNote='10k+ T\/year';\n      }\n      notes = '<strong>Solvent inks<\/strong> require full ATEX\/Explosion-proof motors and controls. All listed equipment is EX-rated.';\n    }\n    else {\n      \/\/ Default fallback for other types to ensure functionality\n      lineLabel = 'Specialty Ink Line';\n      add('Disperser','IGF-55',1,'Pre-dispersing');\n      add('Bead Mill','IWS-30',1,'Universal Grinding');\n      priceMin=100000; priceMax=300000;\n      capacityNote='Custom Capacity';\n      notes = 'Standard configuration shown. Contact IDA for specialized UV or Offset paste formulations.';\n    }\n\n    if(auto === 'full'){\n      priceMin = Math.round(priceMin * 1.25);\n      priceMax = Math.round(priceMax * 1.25);\n      notes += ' <strong>Full Automation:<\/strong> Includes PLC, auto-batching, and CIP system.';\n    }\n\n    return { lineLabel, equip, priceMin, priceMax, capacityNote, notes, outputVal:output, auto };\n  }\n\n  function iconFor(cat){\n    if(cat.includes('Disperser')) return '\u2699\ufe0f';\n    if(cat.includes('Bead')) return '\u2697\ufe0f';\n    if(cat.includes('Mixer')) return '\ud83c\udf00';\n    return '\ud83d\udd27';\n  }\n\n  function fmtPrice(n){\n    if(n>=1000000) return '$'+(n\/1000000).toFixed(1)+'M';\n    if(n>=1000) return '$'+Math.round(n\/1000)+'K';\n    return '$'+n;\n  }\n\n  function render(cfg){\n    var badge = scope.querySelector('#cc-res-badge');\n    var equipList = scope.querySelector('#cc-equip-list');\n    var summaryGrid = scope.querySelector('#cc-summary-grid');\n    var notesText = scope.querySelector('#cc-notes-text');\n\n    badge.textContent = cfg.lineLabel;\n    \n    \/\/ Summary\n    summaryGrid.innerHTML = `\n      <div class=\"summary-card\">\n        <span class=\"summary-label\">Est. Investment<\/span>\n        <span class=\"summary-value\">${fmtPrice(cfg.priceMin)} \u2013 ${fmtPrice(cfg.priceMax)}<\/span>\n        <span class=\"summary-note\">${cfg.auto === 'full' ? 'Full Automation' : 'Standard'}<\/span>\n      <\/div>\n      <div class=\"summary-card\">\n        <span class=\"summary-label\">Capacity<\/span>\n        <span class=\"summary-value\">${cfg.capacityNote}<\/span>\n        <span class=\"summary-note\">Annual Output<\/span>\n      <\/div>\n      <div class=\"summary-card\">\n        <span class=\"summary-label\">Equipment<\/span>\n        <span class=\"summary-value\">${cfg.equip.length} Units<\/span>\n        <span class=\"summary-note\">Main Machines<\/span>\n      <\/div>\n    `;\n\n    \/\/ Equip List\n    equipList.innerHTML = '';\n    cfg.equip.forEach(function(e){\n      var dbEntry = DB.dispersers[e.model] || DB.beadmills[e.model] || DB.mixers[e.model] || {};\n      var spec = dbEntry.desc || 'Standard Specification';\n      var exHtml = (dbEntry.exproof || e.model.includes('-EX')) ? '<span class=\"ex-badge\">EX-PROOF<\/span>' : '';\n      \n      var div = document.createElement('div');\n      div.className = 'equip-item';\n      div.innerHTML = `\n        <div class=\"equip-icon\">${iconFor(e.category)}<\/div>\n        <div class=\"equip-info\">\n          <h4>${e.category}: ${e.role}<\/h4>\n          <div><span class=\"equip-model\">IDA ${e.model}<\/span>${exHtml}<\/div>\n          <div class=\"equip-desc\">${spec}<\/div>\n        <\/div>\n        <div class=\"equip-qty\">x${e.qty}<\/div>\n      `;\n      equipList.appendChild(div);\n    });\n\n    notesText.innerHTML = cfg.notes;\n    resultsPanel.style.display = 'block';\n    resultsPanel.scrollIntoView({behavior:'smooth', block:'start'});\n  }\n\n  \/\/ Event Listeners\n  btnCalc.addEventListener('click', function(){\n    var ink = selInk.value;\n    var output = selOutput.value;\n    var fineness = selFine.value;\n    \n    \/\/ Validation\n    if(!ink) selInk.classList.add('error');\n    if(!output) selOutput.classList.add('error');\n    if(!fineness) selFine.classList.add('error');\n\n    if(ink && output && fineness){\n      selInk.classList.remove('error');\n      selOutput.classList.remove('error');\n      selFine.classList.remove('error');\n      \n      var cfg = buildConfig(ink, output, fineness, getAuto());\n      render(cfg);\n    }\n  });\n\n  \/\/ Clear errors on change\n  [selInk, selOutput, selFine].forEach(function(el){\n    el.addEventListener('change', function(){ el.classList.remove('error'); });\n  });\n\n  btnReset.addEventListener('click', function(){\n    resultsPanel.style.display = 'none';\n    selInk.value = '';\n    selOutput.value = '';\n    selFine.value = '';\n    scope.scrollIntoView({behavior:'smooth', block:'center'});\n  });\n\n});\n<\/script>\n<\/section>\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ink Production Line Configuration Calculator Select your ink type, output capacity, and requirements below. Our algorithm will generate a recommended IDA equipment list and investment estimate instantly. Ink Type &#8212; Select ink type &#8212;Water-Based Flexo \/ GravureSolvent-Based GravureUV-CurableOffset (Paste Ink)Screen PrintingDigital \/ Inkjet Target Annual Output &#8212; Select annual output &#8212;500 T\/year2,000 T\/year5,000 T\/year10,000 T\/year30,000 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4285,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-4339","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/pages\/4339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/comments?post=4339"}],"version-history":[{"count":0,"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/pages\/4339\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/pages\/4285"}],"wp:attachment":[{"href":"https:\/\/idaequipment.com\/pt\/wp-json\/wp\/v2\/media?parent=4339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}