{"title":"Coffee Tech","description":null,"products":[{"product_id":"acaia-ion-beam-1","title":"Ion Beam","description":"\u003cp\u003e\u003cstrong\u003eNote:\u003c\/strong\u003e For Mahlkonig EK43 owners, we recommend waiting for the release of a special Ion Beam version that is more powerful and comes with a mounted adapter. Our \u003ca title=\"Acaia News and Updates\" href=\"https:\/\/acaia.co\/blogs\/news\"\u003eBlog\u003c\/a\u003e will have more information available soon.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cform method=\"POST\" action=\"https:\/\/acaia.activehosted.com\/proc.php\" id=\"_form_40_\" class=\"_form _form_40 _inline-form  _dark\" novalidate=\"\"\u003e\n\u003cinput type=\"hidden\" name=\"u\" value=\"40\"\u003e \u003cinput type=\"hidden\" name=\"f\" value=\"40\"\u003e \u003cinput type=\"hidden\" name=\"s\"\u003e \u003cinput type=\"hidden\" name=\"c\" value=\"0\"\u003e \u003cinput type=\"hidden\" name=\"m\" value=\"0\"\u003e \u003cinput type=\"hidden\" name=\"act\" value=\"sub\"\u003e \u003cinput type=\"hidden\" name=\"v\" value=\"2\"\u003e \u003cinput type=\"hidden\" name=\"or\" value=\"0c90834741f24c7ccbd201317a01fdb4\"\u003e\n\u003cdiv class=\"_form-content\"\u003e\n\u003cdiv class=\"_form_element _x50006849 _full_width _clear\"\u003e\n\u003cdiv class=\"_form-title\"\u003e🚨 Ion Beam: Sign up for updates and news\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"_form_element _x02201800 _full_width _clear\"\u003e\n\u003cdiv class=\"_html-code\"\u003e\n\u003cp\u003eTo be notified when additional Ion Beam stock arrives, please provide your information below.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"_form_element _x09224981 _full_width\"\u003e\n\u003clabel for=\"fullname\" class=\"_form-label\"\u003e Full Name \u003c\/label\u003e\n\u003cdiv class=\"_field-wrapper\"\u003e\u003cinput type=\"text\" id=\"fullname\" name=\"fullname\" placeholder=\"Type your name\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"_form_element _x17690196 _full_width\"\u003e\n\u003clabel for=\"email\" class=\"_form-label\"\u003e Email* \u003c\/label\u003e\n\u003cdiv class=\"_field-wrapper\"\u003e\u003cinput type=\"text\" id=\"email\" name=\"email\" placeholder=\"Type your email\" required=\"\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"_form_element _x73927935 _full_width\"\u003e\n\u003clabel for=\"field[11]\" class=\"_form-label\"\u003e Country (to be notified when the Ion Beam is available in your region) \u003c\/label\u003e\n\u003cdiv class=\"_field-wrapper\"\u003e\u003cselect name=\"field[11]\" id=\"field[11]\"\u003e\n\u003coption selected\u003e\u003c\/option\u003e\n\u003coption value=\"Afghanistan\"\u003eAfghanistan\u003c\/option\u003e\n\u003coption value=\"Albania\"\u003eAlbania\u003c\/option\u003e\n\u003coption value=\"Algeria\"\u003eAlgeria\u003c\/option\u003e\n\u003coption value=\"American Samoa\"\u003eAmerican Samoa\u003c\/option\u003e\n\u003coption value=\"Andorra\"\u003eAndorra\u003c\/option\u003e\n\u003coption value=\"Angola\"\u003eAngola\u003c\/option\u003e\n\u003coption value=\"Anguilla\"\u003eAnguilla\u003c\/option\u003e\n\u003coption value=\"Antarctica\"\u003eAntarctica\u003c\/option\u003e\n\u003coption value=\"Antigua and Barbuda\"\u003eAntigua and Barbuda\u003c\/option\u003e\n\u003coption value=\"Argentina\"\u003eArgentina\u003c\/option\u003e\n\u003coption value=\"Armenia\"\u003eArmenia\u003c\/option\u003e\n\u003coption value=\"Aruba\"\u003eAruba\u003c\/option\u003e\n\u003coption value=\"Australia\"\u003eAustralia\u003c\/option\u003e\n\u003coption value=\"Austria\"\u003eAustria\u003c\/option\u003e\n\u003coption value=\"Azerbaijan\"\u003eAzerbaijan\u003c\/option\u003e\n\u003coption value=\"Bahamas\"\u003eBahamas\u003c\/option\u003e\n\u003coption value=\"Bahrain\"\u003eBahrain\u003c\/option\u003e\n\u003coption value=\"Bangladesh\"\u003eBangladesh\u003c\/option\u003e\n\u003coption value=\"Barbados\"\u003eBarbados\u003c\/option\u003e\n\u003coption value=\"Belarus\"\u003eBelarus\u003c\/option\u003e\n\u003coption value=\"Belgium\"\u003eBelgium\u003c\/option\u003e\n\u003coption value=\"Belize\"\u003eBelize\u003c\/option\u003e\n\u003coption value=\"Benin\"\u003eBenin\u003c\/option\u003e\n\u003coption value=\"Bermuda\"\u003eBermuda\u003c\/option\u003e\n\u003coption value=\"Bhutan\"\u003eBhutan\u003c\/option\u003e\n\u003coption value=\"Bolivia\"\u003eBolivia\u003c\/option\u003e\n\u003coption value=\"Bosnia and Herzegovina\"\u003eBosnia and Herzegovina\u003c\/option\u003e\n\u003coption value=\"Botswana\"\u003eBotswana\u003c\/option\u003e\n\u003coption value=\"Bouvet Island\"\u003eBouvet Island\u003c\/option\u003e\n\u003coption value=\"Brazil\"\u003eBrazil\u003c\/option\u003e\n\u003coption value=\"British Indian Ocean Territory\"\u003eBritish Indian Ocean Territory\u003c\/option\u003e\n\u003coption value=\"Brunei Darussalam\"\u003eBrunei Darussalam\u003c\/option\u003e\n\u003coption value=\"Bulgaria\"\u003eBulgaria\u003c\/option\u003e\n\u003coption value=\"Burkina Faso\"\u003eBurkina Faso\u003c\/option\u003e\n\u003coption value=\"Burundi\"\u003eBurundi\u003c\/option\u003e\n\u003coption value=\"Cambodia\"\u003eCambodia\u003c\/option\u003e\n\u003coption value=\"Cameroon\"\u003eCameroon\u003c\/option\u003e\n\u003coption value=\"Canada\"\u003eCanada\u003c\/option\u003e\n\u003coption value=\"Cape Verde\"\u003eCape Verde\u003c\/option\u003e\n\u003coption value=\"Cayman Islands\"\u003eCayman Islands\u003c\/option\u003e\n\u003coption value=\"Central African Republic\"\u003eCentral African Republic\u003c\/option\u003e\n\u003coption value=\"Chad\"\u003eChad\u003c\/option\u003e\n\u003coption value=\"Chile\"\u003eChile\u003c\/option\u003e\n\u003coption value=\"China\"\u003eChina\u003c\/option\u003e\n\u003coption value=\"Christmas Island\"\u003eChristmas Island\u003c\/option\u003e\n\u003coption value=\"Cocos (Keeling) Islands\"\u003eCocos (Keeling) Islands\u003c\/option\u003e\n\u003coption value=\"Colombia\"\u003eColombia\u003c\/option\u003e\n\u003coption value=\"Comoros\"\u003eComoros\u003c\/option\u003e\n\u003coption value=\"Congo\"\u003eCongo\u003c\/option\u003e\n\u003coption value=\"Congo, the Democratic Republic of the\"\u003eCongo, the Democratic Republic of the\u003c\/option\u003e\n\u003coption value=\"Cook Islands\"\u003eCook Islands\u003c\/option\u003e\n\u003coption value=\"Costa Rica\"\u003eCosta Rica\u003c\/option\u003e\n\u003coption value=\"Cote D'Ivoire\"\u003eCote D'Ivoire\u003c\/option\u003e\n\u003coption value=\"Croatia\"\u003eCroatia\u003c\/option\u003e\n\u003coption value=\"Cuba\"\u003eCuba\u003c\/option\u003e\n\u003coption value=\"Cyprus\"\u003eCyprus\u003c\/option\u003e\n\u003coption value=\"Czech Republic\"\u003eCzech Republic\u003c\/option\u003e\n\u003coption value=\"Denmark\"\u003eDenmark\u003c\/option\u003e\n\u003coption value=\"Djibouti\"\u003eDjibouti\u003c\/option\u003e\n\u003coption value=\"Dominica\"\u003eDominica\u003c\/option\u003e\n\u003coption value=\"Dominican Republic\"\u003eDominican Republic\u003c\/option\u003e\n\u003coption value=\"Ecuador\"\u003eEcuador\u003c\/option\u003e\n\u003coption value=\"Egypt\"\u003eEgypt\u003c\/option\u003e\n\u003coption value=\"El Salvador\"\u003eEl Salvador\u003c\/option\u003e\n\u003coption value=\"Equatorial Guinea\"\u003eEquatorial Guinea\u003c\/option\u003e\n\u003coption value=\"Eritrea\"\u003eEritrea\u003c\/option\u003e\n\u003coption value=\"Estonia\"\u003eEstonia\u003c\/option\u003e\n\u003coption value=\"Ethiopia\"\u003eEthiopia\u003c\/option\u003e\n\u003coption value=\"Falkland Islands (Malvinas)\"\u003eFalkland Islands (Malvinas)\u003c\/option\u003e\n\u003coption value=\"Faroe Islands\"\u003eFaroe Islands\u003c\/option\u003e\n\u003coption value=\"Fiji\"\u003eFiji\u003c\/option\u003e\n\u003coption value=\"Finland\"\u003eFinland\u003c\/option\u003e\n\u003coption value=\"France\"\u003eFrance\u003c\/option\u003e\n\u003coption value=\"French Guiana\"\u003eFrench Guiana\u003c\/option\u003e\n\u003coption value=\"French Polynesia\"\u003eFrench Polynesia\u003c\/option\u003e\n\u003coption value=\"French Southern Territories\"\u003eFrench Southern Territories\u003c\/option\u003e\n\u003coption value=\"Gabon\"\u003eGabon\u003c\/option\u003e\n\u003coption value=\"Gambia\"\u003eGambia\u003c\/option\u003e\n\u003coption value=\"Georgia\"\u003eGeorgia\u003c\/option\u003e\n\u003coption value=\"Germany\"\u003eGermany\u003c\/option\u003e\n\u003coption value=\"Ghana\"\u003eGhana\u003c\/option\u003e\n\u003coption value=\"Gibraltar\"\u003eGibraltar\u003c\/option\u003e\n\u003coption value=\"Greece\"\u003eGreece\u003c\/option\u003e\n\u003coption value=\"Greenland\"\u003eGreenland\u003c\/option\u003e\n\u003coption value=\"Grenada\"\u003eGrenada\u003c\/option\u003e\n\u003coption value=\"Guadeloupe\"\u003eGuadeloupe\u003c\/option\u003e\n\u003coption value=\"Guam\"\u003eGuam\u003c\/option\u003e\n\u003coption value=\"Guatemala\"\u003eGuatemala\u003c\/option\u003e\n\u003coption value=\"Guinea\"\u003eGuinea\u003c\/option\u003e\n\u003coption value=\"Guinea-Bissau\"\u003eGuinea-Bissau\u003c\/option\u003e\n\u003coption value=\"Guyana\"\u003eGuyana\u003c\/option\u003e\n\u003coption value=\"Haiti\"\u003eHaiti\u003c\/option\u003e\n\u003coption value=\"Heard Island and Mcdonald Islands\"\u003eHeard Island and Mcdonald Islands\u003c\/option\u003e\n\u003coption value=\"Holy See (Vatican City State)\"\u003eHoly See (Vatican City State)\u003c\/option\u003e\n\u003coption value=\"Honduras\"\u003eHonduras\u003c\/option\u003e\n\u003coption value=\"Hong Kong\"\u003eHong Kong\u003c\/option\u003e\n\u003coption value=\"Hungary\"\u003eHungary\u003c\/option\u003e\n\u003coption value=\"Iceland\"\u003eIceland\u003c\/option\u003e\n\u003coption value=\"India\"\u003eIndia\u003c\/option\u003e\n\u003coption value=\"Indonesia\"\u003eIndonesia\u003c\/option\u003e\n\u003coption value=\"Iran, Islamic Republic of\"\u003eIran, Islamic Republic of\u003c\/option\u003e\n\u003coption value=\"Iraq\"\u003eIraq\u003c\/option\u003e\n\u003coption value=\"Ireland\"\u003eIreland\u003c\/option\u003e\n\u003coption value=\"Israel\"\u003eIsrael\u003c\/option\u003e\n\u003coption value=\"Italy\"\u003eItaly\u003c\/option\u003e\n\u003coption value=\"Jamaica\"\u003eJamaica\u003c\/option\u003e\n\u003coption value=\"Japan\"\u003eJapan\u003c\/option\u003e\n\u003coption value=\"Jordan\"\u003eJordan\u003c\/option\u003e\n\u003coption value=\"Kazakhstan\"\u003eKazakhstan\u003c\/option\u003e\n\u003coption value=\"Kenya\"\u003eKenya\u003c\/option\u003e\n\u003coption value=\"Kiribati\"\u003eKiribati\u003c\/option\u003e\n\u003coption value=\"Korea, Democratic People's Republic of\"\u003eKorea, Democratic People's Republic of\u003c\/option\u003e\n\u003coption value=\"Korea, Republic of\"\u003eKorea, Republic of\u003c\/option\u003e\n\u003coption value=\"Kuwait\"\u003eKuwait\u003c\/option\u003e\n\u003coption value=\"Kyrgyzstan\"\u003eKyrgyzstan\u003c\/option\u003e\n\u003coption value=\"Lao People's Democratic Republic\"\u003eLao People's Democratic Republic\u003c\/option\u003e\n\u003coption value=\"Latvia\"\u003eLatvia\u003c\/option\u003e\n\u003coption value=\"Lebanon\"\u003eLebanon\u003c\/option\u003e\n\u003coption value=\"Lesotho\"\u003eLesotho\u003c\/option\u003e\n\u003coption value=\"Liberia\"\u003eLiberia\u003c\/option\u003e\n\u003coption value=\"Libyan Arab Jamahiriya\"\u003eLibyan Arab Jamahiriya\u003c\/option\u003e\n\u003coption value=\"Liechtenstein\"\u003eLiechtenstein\u003c\/option\u003e\n\u003coption value=\"Lithuania\"\u003eLithuania\u003c\/option\u003e\n\u003coption value=\"Luxembourg\"\u003eLuxembourg\u003c\/option\u003e\n\u003coption value=\"Macao\"\u003eMacao\u003c\/option\u003e\n\u003coption value=\"Macedonia, the Former Yugoslav Republic of\"\u003eMacedonia, the Former Yugoslav Republic of\u003c\/option\u003e\n\u003coption value=\"Madagascar\"\u003eMadagascar\u003c\/option\u003e\n\u003coption value=\"Malawi\"\u003eMalawi\u003c\/option\u003e\n\u003coption value=\"Malaysia\"\u003eMalaysia\u003c\/option\u003e\n\u003coption value=\"Maldives\"\u003eMaldives\u003c\/option\u003e\n\u003coption value=\"Mali\"\u003eMali\u003c\/option\u003e\n\u003coption value=\"Malta\"\u003eMalta\u003c\/option\u003e\n\u003coption value=\"Marshall Islands\"\u003eMarshall Islands\u003c\/option\u003e\n\u003coption value=\"Martinique\"\u003eMartinique\u003c\/option\u003e\n\u003coption value=\"Mauritania\"\u003eMauritania\u003c\/option\u003e\n\u003coption value=\"Mauritius\"\u003eMauritius\u003c\/option\u003e\n\u003coption value=\"Mayotte\"\u003eMayotte\u003c\/option\u003e\n\u003coption value=\"Mexico\"\u003eMexico\u003c\/option\u003e\n\u003coption value=\"Micronesia, Federated States of\"\u003eMicronesia, Federated States of\u003c\/option\u003e\n\u003coption value=\"Moldova, Republic of\"\u003eMoldova, Republic of\u003c\/option\u003e\n\u003coption value=\"Monaco\"\u003eMonaco\u003c\/option\u003e\n\u003coption value=\"Mongolia\"\u003eMongolia\u003c\/option\u003e\n\u003coption value=\"Montserrat\"\u003eMontserrat\u003c\/option\u003e\n\u003coption value=\"Morocco\"\u003eMorocco\u003c\/option\u003e\n\u003coption value=\"Mozambique\"\u003eMozambique\u003c\/option\u003e\n\u003coption value=\"Myanmar\"\u003eMyanmar\u003c\/option\u003e\n\u003coption value=\"Namibia\"\u003eNamibia\u003c\/option\u003e\n\u003coption value=\"Nauru\"\u003eNauru\u003c\/option\u003e\n\u003coption value=\"Nepal\"\u003eNepal\u003c\/option\u003e\n\u003coption value=\"Netherlands\"\u003eNetherlands\u003c\/option\u003e\n\u003coption value=\"Netherlands Antilles\"\u003eNetherlands Antilles\u003c\/option\u003e\n\u003coption value=\"New Caledonia\"\u003eNew Caledonia\u003c\/option\u003e\n\u003coption value=\"New Zealand\"\u003eNew Zealand\u003c\/option\u003e\n\u003coption value=\"Nicaragua\"\u003eNicaragua\u003c\/option\u003e\n\u003coption value=\"Niger\"\u003eNiger\u003c\/option\u003e\n\u003coption value=\"Nigeria\"\u003eNigeria\u003c\/option\u003e\n\u003coption value=\"Niue\"\u003eNiue\u003c\/option\u003e\n\u003coption value=\"Norfolk Island\"\u003eNorfolk Island\u003c\/option\u003e\n\u003coption value=\"North Macedonia\"\u003eNorth Macedonia\u003c\/option\u003e\n\u003coption value=\"Northern Mariana Islands\"\u003eNorthern Mariana Islands\u003c\/option\u003e\n\u003coption value=\"Norway\"\u003eNorway\u003c\/option\u003e\n\u003coption value=\"Oman\"\u003eOman\u003c\/option\u003e\n\u003coption value=\"Pakistan\"\u003ePakistan\u003c\/option\u003e\n\u003coption value=\"Palau\"\u003ePalau\u003c\/option\u003e\n\u003coption value=\"Palestinian Territory, Occupied\"\u003ePalestinian Territory, Occupied\u003c\/option\u003e\n\u003coption value=\"Panama\"\u003ePanama\u003c\/option\u003e\n\u003coption value=\"Papua New Guinea\"\u003ePapua New Guinea\u003c\/option\u003e\n\u003coption value=\"Paraguay\"\u003eParaguay\u003c\/option\u003e\n\u003coption value=\"Peru\"\u003ePeru\u003c\/option\u003e\n\u003coption value=\"Philippines\"\u003ePhilippines\u003c\/option\u003e\n\u003coption value=\"Pitcairn\"\u003ePitcairn\u003c\/option\u003e\n\u003coption value=\"Poland\"\u003ePoland\u003c\/option\u003e\n\u003coption value=\"Portugal\"\u003ePortugal\u003c\/option\u003e\n\u003coption value=\"Puerto Rico\"\u003ePuerto Rico\u003c\/option\u003e\n\u003coption value=\"Qatar\"\u003eQatar\u003c\/option\u003e\n\u003coption value=\"Reunion\"\u003eReunion\u003c\/option\u003e\n\u003coption value=\"Romania\"\u003eRomania\u003c\/option\u003e\n\u003coption value=\"Russian Federation\"\u003eRussian Federation\u003c\/option\u003e\n\u003coption value=\"Rwanda\"\u003eRwanda\u003c\/option\u003e\n\u003coption value=\"Saint Helena\"\u003eSaint Helena\u003c\/option\u003e\n\u003coption value=\"Saint Kitts and Nevis\"\u003eSaint Kitts and Nevis\u003c\/option\u003e\n\u003coption value=\"Saint Lucia\"\u003eSaint Lucia\u003c\/option\u003e\n\u003coption value=\"Saint Pierre and Miquelon\"\u003eSaint Pierre and Miquelon\u003c\/option\u003e\n\u003coption value=\"Saint Vincent and the Grenadines\"\u003eSaint Vincent and the Grenadines\u003c\/option\u003e\n\u003coption value=\"Samoa\"\u003eSamoa\u003c\/option\u003e\n\u003coption value=\"San Marino\"\u003eSan Marino\u003c\/option\u003e\n\u003coption value=\"Sao Tome and Principe\"\u003eSao Tome and Principe\u003c\/option\u003e\n\u003coption value=\"Saudi Arabia\"\u003eSaudi Arabia\u003c\/option\u003e\n\u003coption value=\"Senegal\"\u003eSenegal\u003c\/option\u003e\n\u003coption value=\"Serbia and Montenegro\"\u003eSerbia and Montenegro\u003c\/option\u003e\n\u003coption value=\"Seychelles\"\u003eSeychelles\u003c\/option\u003e\n\u003coption value=\"Sierra Leone\"\u003eSierra Leone\u003c\/option\u003e\n\u003coption value=\"Singapore\"\u003eSingapore\u003c\/option\u003e\n\u003coption value=\"Slovakia\"\u003eSlovakia\u003c\/option\u003e\n\u003coption value=\"Slovenia\"\u003eSlovenia\u003c\/option\u003e\n\u003coption value=\"Solomon Islands\"\u003eSolomon Islands\u003c\/option\u003e\n\u003coption value=\"Somalia\"\u003eSomalia\u003c\/option\u003e\n\u003coption value=\"South Africa\"\u003eSouth Africa\u003c\/option\u003e\n\u003coption value=\"South Georgia and the South Sandwich Islands\"\u003eSouth Georgia and the South Sandwich Islands\u003c\/option\u003e\n\u003coption value=\"Spain\"\u003eSpain\u003c\/option\u003e\n\u003coption value=\"Sri Lanka\"\u003eSri Lanka\u003c\/option\u003e\n\u003coption value=\"Sudan\"\u003eSudan\u003c\/option\u003e\n\u003coption value=\"Suriname\"\u003eSuriname\u003c\/option\u003e\n\u003coption value=\"Svalbard and Jan Mayen\"\u003eSvalbard and Jan Mayen\u003c\/option\u003e\n\u003coption value=\"Swaziland\"\u003eSwaziland\u003c\/option\u003e\n\u003coption value=\"Sweden\"\u003eSweden\u003c\/option\u003e\n\u003coption value=\"Switzerland\"\u003eSwitzerland\u003c\/option\u003e\n\u003coption value=\"Syrian Arab Republic\"\u003eSyrian Arab Republic\u003c\/option\u003e\n\u003coption value=\"Taiwan, Province of China\"\u003eTaiwan, Province of China\u003c\/option\u003e\n\u003coption value=\"Tajikistan\"\u003eTajikistan\u003c\/option\u003e\n\u003coption value=\"Tanzania, United Republic of\"\u003eTanzania, United Republic of\u003c\/option\u003e\n\u003coption value=\"Thailand\"\u003eThailand\u003c\/option\u003e\n\u003coption value=\"Timor-Leste\"\u003eTimor-Leste\u003c\/option\u003e\n\u003coption value=\"Togo\"\u003eTogo\u003c\/option\u003e\n\u003coption value=\"Tokelau\"\u003eTokelau\u003c\/option\u003e\n\u003coption value=\"Tonga\"\u003eTonga\u003c\/option\u003e\n\u003coption value=\"Trinidad and Tobago\"\u003eTrinidad and Tobago\u003c\/option\u003e\n\u003coption value=\"Tunisia\"\u003eTunisia\u003c\/option\u003e\n\u003coption value=\"Turkey\"\u003eTurkey\u003c\/option\u003e\n\u003coption value=\"Turkmenistan\"\u003eTurkmenistan\u003c\/option\u003e\n\u003coption value=\"Turks and Caicos Islands\"\u003eTurks and Caicos Islands\u003c\/option\u003e\n\u003coption value=\"Tuvalu\"\u003eTuvalu\u003c\/option\u003e\n\u003coption value=\"Uganda\"\u003eUganda\u003c\/option\u003e\n\u003coption value=\"Ukraine\"\u003eUkraine\u003c\/option\u003e\n\u003coption value=\"United Arab Emirates\"\u003eUnited Arab Emirates\u003c\/option\u003e\n\u003coption value=\"United Kingdom\"\u003eUnited Kingdom\u003c\/option\u003e\n\u003coption value=\"United States\"\u003eUnited States\u003c\/option\u003e\n\u003coption value=\"United States Minor Outlying Islands\"\u003eUnited States Minor Outlying Islands\u003c\/option\u003e\n\u003coption value=\"Uruguay\"\u003eUruguay\u003c\/option\u003e\n\u003coption value=\"Uzbekistan\"\u003eUzbekistan\u003c\/option\u003e\n\u003coption value=\"Vanuatu\"\u003eVanuatu\u003c\/option\u003e\n\u003coption value=\"Venezuela\"\u003eVenezuela\u003c\/option\u003e\n\u003coption value=\"Viet Nam\"\u003eViet Nam\u003c\/option\u003e\n\u003coption value=\"Virgin Islands, British\"\u003eVirgin Islands, British\u003c\/option\u003e\n\u003coption value=\"Virgin Islands, U.s.\"\u003eVirgin Islands, U.s.\u003c\/option\u003e\n\u003coption value=\"Wallis and Futuna\"\u003eWallis and Futuna\u003c\/option\u003e\n\u003coption value=\"Western Sahara\"\u003eWestern Sahara\u003c\/option\u003e\n\u003coption value=\"Yemen\"\u003eYemen\u003c\/option\u003e\n\u003coption value=\"Zambia\"\u003eZambia\u003c\/option\u003e\n\u003coption value=\"Zimbabwe\"\u003eZimbabwe\u003c\/option\u003e\n\u003c\/select\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"_button-wrapper _full_width\"\u003e\u003cbutton id=\"_form_40_submit\" class=\"_submit\" type=\"submit\"\u003e Submit \u003c\/button\u003e\u003c\/div\u003e\n\u003cdiv class=\"_clear-element\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"_form-thank-you\" style=\"display: none;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/form\u003e\n\u003cp\u003e\u003cscript type=\"text\/javascript\"\u003e\nwindow.cfields = {\"11\":\"country\"};\nwindow._show_thank_you = function(id, message, trackcmp_url, email) {\n  var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');\n  form.querySelector('._form-content').style.display = 'none';\n  thank_you.innerHTML = message;\n  thank_you.style.display = 'block';\n  const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n  var visitorObject = window[vgoAlias];\n  if (email \u0026\u0026 typeof visitorObject !== 'undefined') {\n    visitorObject('setEmail', email);\n    visitorObject('update');\n  } else if (typeof(trackcmp_url) != 'undefined' \u0026\u0026 trackcmp_url) {\n    \/\/ Site tracking URL to use after inline form submission.\n    _load_script(trackcmp_url);\n  }\n  if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_error = function(id, message, html) {\n  var form = document.getElementById('_form_' + id + '_'), err = document.createElement('div'), button = form.querySelector('button'), old_error = form.querySelector('._form_error');\n  if (old_error) old_error.parentNode.removeChild(old_error);\n  err.innerHTML = message;\n  err.className = '_error-inner _form_error _no_arrow';\n  var wrapper = document.createElement('div');\n  wrapper.className = '_form-inner';\n  wrapper.appendChild(err);\n  button.parentNode.insertBefore(wrapper, button);\n  document.querySelector('[id^=\"_form\"][id$=\"_submit\"]').disabled = false;\n  if (html) {\n    var div = document.createElement('div');\n    div.className = '_error-html';\n    div.innerHTML = html;\n    err.appendChild(div);\n  }\n};\nwindow._load_script = function(url, callback, isSubmit) {\n  var head = document.querySelector('head'), script = document.createElement('script'), r = false;\n  script.type = 'text\/javascript';\n  script.charset = 'utf-8';\n  script.src = url;\n  if (callback) {\n    script.onload = script.onreadystatechange = function() {\n      if (!r \u0026\u0026 (!this.readyState || this.readyState == 'complete')) {\n        r = true;\n        callback();\n      }\n    };\n  }\n  script.onerror = function() {\n    if (isSubmit) {\n      if (script.src.length \u003e 10000) {\n        _show_error(\"40\", \"Sorry, your submission failed. Please shorten your responses and try again.\");\n      } else {\n        _show_error(\"40\", \"Sorry, your submission failed. Please try again.\");\n      }\n    }\n  }\n\n  head.appendChild(script);\n};\n(function() {\n  if (window.location.search.search(\"excludeform\") !== -1) return false;\n  var getCookie = function(name) {\n    var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));\n    return match ? match[2] : null;\n  }\n  var setCookie = function(name, value) {\n    var now = new Date();\n    var time = now.getTime();\n    var expireTime = time + 1000 * 60 * 60 * 24 * 365;\n    now.setTime(expireTime);\n    document.cookie = name + '=' + value + '; expires=' + now + ';path=\/; Secure; SameSite=Lax;';\/\/ cannot be HttpOnly\n  }\n      var addEvent = function(element, event, func) {\n    if (element.addEventListener) {\n      element.addEventListener(event, func);\n    } else {\n      var oldFunc = element['on' + event];\n      element['on' + event] = function() {\n        oldFunc.apply(this, arguments);\n        func.apply(this, arguments);\n      };\n    }\n  }\n  var _removed = false;\n  var form_to_submit = document.getElementById('_form_40_');\n  var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;\n\n  var getUrlParam = function(name) {\n    var params = new URLSearchParams(window.location.search);\n    return params.get(name) || false;\n  };\n\n  for (var i = 0; i \u003c allInputs.length; i++) {\n    var regexStr = \"field\\\\[(\\\\d+)\\\\]\";\n    var results = new RegExp(regexStr).exec(allInputs[i].name);\n    if (results != undefined) {\n      allInputs[i].dataset.name = window.cfields[results[1]];\n    } else {\n      allInputs[i].dataset.name = allInputs[i].name;\n    }\n    var fieldVal = getUrlParam(allInputs[i].dataset.name);\n\n    if (fieldVal) {\n      if (allInputs[i].dataset.autofill === \"false\") {\n        continue;\n      }\n      if (allInputs[i].type == \"radio\" || allInputs[i].type == \"checkbox\") {\n        if (allInputs[i].value == fieldVal) {\n          allInputs[i].checked = true;\n        }\n      } else {\n        allInputs[i].value = fieldVal;\n      }\n    }\n  }\n\n  var remove_tooltips = function() {\n    for (var i = 0; i \u003c tooltips.length; i++) {\n      tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n    }\n    tooltips = [];\n  };\n  var remove_tooltip = function(elem) {\n    for (var i = 0; i \u003c tooltips.length; i++) {\n      if (tooltips[i].elem === elem) {\n        tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n        tooltips.splice(i, 1);\n        return;\n      }\n    }\n  };\n  var create_tooltip = function(elem, text) {\n    var tooltip = document.createElement('div'), arrow = document.createElement('div'), inner = document.createElement('div'), new_tooltip = {};\n    if (elem.type != 'radio' \u0026\u0026 elem.type != 'checkbox') {\n      tooltip.className = '_error';\n      arrow.className = '_error-arrow';\n      inner.className = '_error-inner';\n      inner.innerHTML = text;\n      tooltip.appendChild(arrow);\n      tooltip.appendChild(inner);\n      elem.parentNode.appendChild(tooltip);\n    } else {\n      tooltip.className = '_error-inner _no_arrow';\n      tooltip.innerHTML = text;\n      elem.parentNode.insertBefore(tooltip, elem);\n      new_tooltip.no_arrow = true;\n    }\n    new_tooltip.tip = tooltip;\n    new_tooltip.elem = elem;\n    tooltips.push(new_tooltip);\n    return new_tooltip;\n  };\n  var resize_tooltip = function(tooltip) {\n    var rect = tooltip.elem.getBoundingClientRect();\n    var doc = document.documentElement, scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));\n    if (scrollPosition \u003c 40) {\n      tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _below';\n    } else {\n      tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _above';\n    }\n  };\n  var resize_tooltips = function() {\n    if (_removed) return;\n    for (var i = 0; i \u003c tooltips.length; i++) {\n      if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);\n    }\n  };\n  var validate_field = function(elem, remove) {\n    var tooltip = null, value = elem.value, no_error = true;\n    remove ? remove_tooltip(elem) : false;\n    if (elem.type != 'checkbox') elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n    if (elem.getAttribute('required') !== null) {\n      if (elem.type == 'radio' || (elem.type == 'checkbox' \u0026\u0026 \/any\/.test(elem.className))) {\n        var elems = form_to_submit.elements[elem.name];\n        if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length \u003c= 1) {\n          no_error = elem.checked;\n        }\n        else {\n          no_error = false;\n          for (var i = 0; i \u003c elems.length; i++) {\n            if (elems[i].checked) no_error = true;\n          }\n        }\n        if (!no_error) {\n          tooltip = create_tooltip(elem, \"Please select an option.\");\n        }\n      } else if (elem.type =='checkbox') {\n        var elems = form_to_submit.elements[elem.name], found = false, err = [];\n        no_error = true;\n        for (var i = 0; i \u003c elems.length; i++) {\n          if (elems[i].getAttribute('required') === null) continue;\n          if (!found \u0026\u0026 elems[i] !== elem) return true;\n          found = true;\n          elems[i].className = elems[i].className.replace(\/ ?_has_error ?\/g, '');\n          if (!elems[i].checked) {\n            no_error = false;\n            elems[i].className = elems[i].className + ' _has_error';\n            err.push(\"Checking %s is required\".replace(\"%s\", elems[i].value));\n          }\n        }\n        if (!no_error) {\n          tooltip = create_tooltip(elem, err.join('\u003cbr\/\u003e'));\n        }\n      } else if (elem.tagName == 'SELECT') {\n        var selected = true;\n        if (elem.multiple) {\n          selected = false;\n          for (var i = 0; i \u003c elem.options.length; i++) {\n            if (elem.options[i].selected) {\n              selected = true;\n              break;\n            }\n          }\n        } else {\n          for (var i = 0; i \u003c elem.options.length; i++) {\n            if (elem.options[i].selected \u0026\u0026 (!elem.options[i].value || (elem.options[i].value.match(\/\\n\/g)))) {\n              selected = false;\n            }\n          }\n        }\n        if (!selected) {\n          elem.className = elem.className + ' _has_error';\n          no_error = false;\n          tooltip = create_tooltip(elem, \"Please select an option.\");\n        }\n      } else if (value === undefined || value === null || value === '') {\n        elem.className = elem.className + ' _has_error';\n        no_error = false;\n        tooltip = create_tooltip(elem, \"This field is required.\");\n      }\n    }\n    if (no_error \u0026\u0026 (elem.id == 'field[]' || elem.id == 'ca[11][v]')) {\n      if (elem.className.includes('phone-input-error')) {\n        elem.className = elem.className + ' _has_error';\n        no_error = false;\n      }\n    }\n    if (no_error \u0026\u0026 elem.name == 'email') {\n      if (!value.match(\/^[\\+_a-z0-9-'\u0026=]+(\\.[\\+_a-z0-9-']+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$\/i)) {\n        elem.className = elem.className + ' _has_error';\n        no_error = false;\n        tooltip = create_tooltip(elem, \"Enter a valid email address.\");\n      }\n    }\n    if (no_error \u0026\u0026 \/date_field\/.test(elem.className)) {\n      if (!value.match(\/^\\d\\d\\d\\d-\\d\\d-\\d\\d$\/)) {\n        elem.className = elem.className + ' _has_error';\n        no_error = false;\n        tooltip = create_tooltip(elem, \"Enter a valid date.\");\n      }\n    }\n    tooltip ? resize_tooltip(tooltip) : false;\n    return no_error;\n  };\n  var needs_validate = function(el) {\n        if(el.getAttribute('required') !== null){\n            return true\n        }\n        if(el.name === 'email' \u0026\u0026 el.value !== \"\"){\n            return true\n        }\n\n    if((el.id == 'field[]' || el.id == 'ca[11][v]') \u0026\u0026 el.className.includes('phone-input-error')){\n            return true\n        }\n\n        return false\n  };\n  var validate_form = function(e) {\n    var err = form_to_submit.querySelector('._form_error'), no_error = true;\n    if (!submitted) {\n      submitted = true;\n      for (var i = 0, len = allInputs.length; i \u003c len; i++) {\n        var input = allInputs[i];\n        if (needs_validate(input)) {\n          if (input.type == 'tel') {\n            addEvent(input, 'blur', function() {\n              this.value = this.value.trim();\n              validate_field(this, true);\n            });\n          }\n          if (input.type == 'text' || input.type == 'number' || input.type == 'time') {\n            addEvent(input, 'blur', function() {\n              this.value = this.value.trim();\n              validate_field(this, true);\n            });\n            addEvent(input, 'input', function() {\n              validate_field(this, true);\n            });\n          } else if (input.type == 'radio' || input.type == 'checkbox') {\n            (function(el) {\n              var radios = form_to_submit.elements[el.name];\n              for (var i = 0; i \u003c radios.length; i++) {\n                addEvent(radios[i], 'click', function() {\n                  validate_field(el, true);\n                });\n              }\n            })(input);\n          } else if (input.tagName == 'SELECT') {\n            addEvent(input, 'change', function() {\n              validate_field(this, true);\n            });\n          } else if (input.type == 'textarea'){\n            addEvent(input, 'input', function() {\n              validate_field(this, true);\n            });\n          }\n        }\n      }\n    }\n    remove_tooltips();\n    for (var i = 0, len = allInputs.length; i \u003c len; i++) {\n      var elem = allInputs[i];\n      if (needs_validate(elem)) {\n        if (elem.tagName.toLowerCase() !== \"select\") {\n          elem.value = elem.value.trim();\n        }\n        validate_field(elem) ? true : no_error = false;\n      }\n    }\n    if (!no_error \u0026\u0026 e) {\n      e.preventDefault();\n    }\n    resize_tooltips();\n    return no_error;\n  };\n  addEvent(window, 'resize', resize_tooltips);\n  addEvent(window, 'scroll', resize_tooltips);\n\n  var hidePhoneInputError = function(inputId) {\n    var errorMessage =  document.getElementById(\"error-msg-\" + inputId);\n    var input = document.getElementById(inputId);\n    errorMessage.classList.remove(\"phone-error\");\n    errorMessage.classList.add(\"phone-error-hidden\");\n    input.classList.remove(\"phone-input-error\");\n  };\n\n  var initializePhoneInput = function(input, defaultCountry) {\n    return window.intlTelInput(input, {\n      utilsScript: \"https:\/\/unpkg.com\/intl-tel-input@17.0.18\/build\/js\/utils.js\",\n      autoHideDialCode: false,\n      separateDialCode: true,\n      initialCountry: defaultCountry,\n      preferredCountries: []\n    });\n  }\n\n  var setPhoneInputEventListeners = function(inputId, input, iti) {\n    input.addEventListener('blur', function() {\n      var errorMessage = document.getElementById(\"error-msg-\" + inputId);\n      if (input.value.trim()) {\n        if (iti.isValidNumber()) {\n          iti.setNumber(iti.getNumber());\n          if (errorMessage.classList.contains(\"phone-error\")){\n            hidePhoneInputError(inputId);\n          }\n        } else {\n          showPhoneInputError(inputId)\n        }\n      } else {\n        if (errorMessage.classList.contains(\"phone-error\")){\n          hidePhoneInputError(inputId);\n        }\n      }\n    });\n\n    input.addEventListener(\"countrychange\", function() {\n      iti.setNumber('');\n    });\n\n    input.addEventListener(\"keydown\", function(e) {\n        var charCode = (e.which) ? e.which : e.keyCode;\n        if (charCode \u003e 31 \u0026\u0026 (charCode \u003c 48 || charCode \u003e 57) \u0026\u0026 charCode !== 8) {\n               e.preventDefault();\n      }\n     });\n  };\n\n  var showPhoneInputError = function(inputId) {\n    var errorMessage =  document.getElementById(\"error-msg-\" + inputId);\n    var input = document.getElementById(inputId);\n    errorMessage.classList.add(\"phone-error\");\n    errorMessage.classList.remove(\"phone-error-hidden\");\n    input.classList.add(\"phone-input-error\");\n  };\n\n\n    var _form_serialize = function(form){if(!form||form.nodeName!==\"FORM\"){return }var i,j,q=[];for(i=0;i\u003cform.elements.length;i++){if(form.elements[i].name===\"\"){continue}switch(form.elements[i].nodeName){case\"INPUT\":switch(form.elements[i].type){case\"tel\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(\" \")+encodeURIComponent(form.elements[i].value));break;case\"text\":case\"number\":case\"date\":case\"time\":case\"hidden\":case\"password\":case\"button\":case\"reset\":case\"submit\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"checkbox\":case\"radio\":if(form.elements[i].checked){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value))}break;case\"file\":break}break;case\"TEXTAREA\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"SELECT\":switch(form.elements[i].type){case\"select-one\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"select-multiple\":for(j=0;j\u003cform.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case\"BUTTON\":switch(form.elements[i].type){case\"reset\":case\"submit\":case\"button\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break}break}}return q.join(\"\u0026\")};\n  var form_submit = function(e) {\n    e.preventDefault();\n    if (validate_form()) {\n      \/\/ use this trick to get the submit button \u0026 disable it using plain javascript\n      document.querySelector('#_form_40_submit').disabled = true;\n            var serialized = _form_serialize(document.getElementById('_form_40_')).replace(\/%0A\/g, '\\\\n');\n      var err = form_to_submit.querySelector('._form_error');\n      err ? err.parentNode.removeChild(err) : false;\n      _load_script('https:\/\/acaia.activehosted.com\/proc.php?' + serialized + '\u0026jsonp=true', null, true);\n    }\n    return false;\n  };\n  addEvent(form_to_submit, 'submit', form_submit);\n})();\n\n\u003c\/script\u003e \u003cbr\u003e\u003c\/p\u003e\n\u003chr\u003e\n\u003cp\u003e\u003cbr\u003e\u003cmeta charset=\"utf-8\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eDesigned to work both as a portable accessory for different grinders, or to be mounted on the Orbit, our latest accessory solves the common problem of static generated during the grinding process.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eThe Acaia Ion Beam is equipped with an industrial-grade ion generator that efficiently minimizes static generated during the grinding process, resulting in reduced retention, less flying chaff, and less clumping. This is accomplished by emitting a continuous flow of charged ions that neutralize the static charge buildup during grinding. The Ion Beam generates negative ions at the front end and positive ions at the back end for either positive or negative static buildup.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eTripod stand not included.\u003c\/em\u003e\u003c\/p\u003e","brand":"5aa538984bd8","offers":[{"title":"Black","offer_id":40700569354286,"sku":"","price":165.0,"currency_code":"USD","in_stock":false},{"title":"Space Gray","offer_id":40700569387054,"sku":"","price":165.0,"currency_code":"USD","in_stock":false},{"title":"White","offer_id":40700569419822,"sku":"","price":165.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0247\/1667\/3070\/files\/ionbeam_1500x1000_01.jpg?v=1711103538"},{"product_id":"horizon","title":"Horizon","description":"\u003cp dir=\"ltr\"\u003e\u003cspan\u003eThe Acaia Horizon represents a new frontier in coffee science, bringing innovation to the post-extraction maturation phase – the critical minutes between extraction and the first sip. Freshly brewed coffee exists in an unsettled state where environmental variables, slow degassing, and oxidation interact with its sensory profile before it reaches drinking temperature.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003eThe Horizon instantly transforms the atmospheric environment inside the cup. It creates a controlled low-pressure environment, removing gases such as oxygen and carbon dioxide while preserving delicate aromatic compounds. This results in smoother mouthfeel, rounded acidity, and enhanced natural sweetness, revealing the coffee’s intrinsic flavor.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003eBy eliminating the atmospheric variables that occur after brewing, the Horizon ensures that the post-extraction maturation phase is precisely controlled. This provides a stable foundation for deepening understanding of a bean's intrinsic flavor and refining recipes with unprecedented precision.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"5aa538984bd8","offers":[{"title":"Default Title","offer_id":42194147999790,"sku":null,"price":195.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0247\/1667\/3070\/files\/ph_horizon_1500x1000_01_2ca97434-0f4d-462d-8b7b-16bf4153d1df.jpg?v=1774593559"}],"url":"https:\/\/5aa538984bd8.myshopify.com\/collections\/coffee-tech.oembed","provider":"5aa538984bd8","version":"1.0","type":"link"}