{"product_id":"4-flute-stainless-steel-carbide-hi-helix-endmills-copy-1","title":"4 Flute Coated Universal Carbide Hi-Helix Endmills","description":"\u003cul\u003e\n\u003cli\u003e35 Degree Variable High Helix Angles\u003c\/li\u003e\n\u003cli\u003eSuitable for Cutting Steel, Cast Iron \u0026amp; Stainless Steel\u003c\/li\u003e\n\u003cli\u003eSuitable for groove milling, side milling \u0026amp; face milling\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!--\nShopify HTML Template (matches your existing \"ck-\" style + calculator)\n\nWhat it does:\n- 3 ISO pills (P \/ M \/ K) at top (click to switch)\n- 3 operation boxes (Face \/ Side \/ Slot) below (click to switch)\n- Shows Vc + fz as RANGES (min–max), per your request\n- Calculator uses the SAME layout as your existing one\n- Auto-fills calculator with MIDPOINT values from the selected range (you can still edit manually)\n\nPaste into Shopify \"Custom liquid\" \/ page HTML.\nEdit CUT_DATA values only if needed.\n--\u003e\n\n\u003cstyle\u003e\n\/* ====== ISO pill colours (your exact hex) ====== *\/\n.ck-isoP{background:#0032d8 !important;color:#fff !important;}\n.ck-isoM{background:#f8e417 !important;color:#111 !important;}\n.ck-isoK{background:#ff0000 !important;color:#fff !important;}\n\n\/* ====== wrapper ====== *\/\n.ck-wrap{max-width:900px;margin:14px 0;font-family:inherit;}\n\n\/* ====== material “box” ====== *\/\n.ck-box{\n  border:2px solid #444 !important;\n  border-radius:18px !important;\n  padding:14px 16px !important;\n  background:#fff !important;\n  margin:12px 0 !important;\n}\n.ck-boxTop{\n  display:flex !important;\n  justify-content:space-between !important;\n  align-items:flex-start !important;\n  gap:12px !important;\n  flex-wrap:wrap !important;\n}\n.ck-left{min-width:240px !important;}\n.ck-right{\n  min-width:220px !important;\n  text-align:right !important;\n  font-weight:900 !important;\n  line-height:1.25 !important;\n}\n\n.ck-title{font-size:18px !important;font-weight:900 !important;margin:6px 0 2px !important;}\n.ck-sub{font-size:14px !important;font-weight:800 !important;opacity:.9 !important;}\n\n.ck-pill{\n  display:inline-block !important;\n  border:1.5px solid rgba(0,0,0,.35) !important;\n  border-radius:999px !important;\n  padding:4px 10px !important;\n  font-weight:900 !important;\n  font-size:12px !important;\n  margin:0 6px 6px 0 !important;\n  white-space:nowrap !important;\n}\n\n\/* ====== clickable selector boxes ====== *\/\n.ck-selRow{\n  display:grid !important;\n  grid-template-columns:repeat(3, 1fr) !important;\n  gap:12px !important;\n  margin-top:10px !important;\n}\n.ck-sel{\n  border:2px solid #444 !important;\n  border-radius:16px !important;\n  padding:12px 14px !important;\n  background:#fff !important;\n  cursor:pointer !important;\n  font-weight:900 !important;\n  user-select:none !important;\n}\n.ck-sel small{\n  display:block !important;\n  margin-top:4px !important;\n  font-size:12px !important;\n  font-weight:800 !important;\n  opacity:.75 !important;\n}\n.ck-selActive{\n  box-shadow:0 10px 20px rgba(0,0,0,.12) !important;\n  transform:translateY(-1px) !important;\n  border-color:#000 !important;\n}\n\n\/* ====== display box for Vc \/ fz ====== *\/\n.ck-mini{\n  border:2px solid #444 !important;\n  border-radius:16px !important;\n  padding:12px 14px !important;\n  background:#fff !important;\n  margin-top:12px !important;\n}\n.ck-miniGrid{\n  display:grid !important;\n  grid-template-columns:1fr 1fr !important;\n  gap:12px !important;\n}\n.ck-miniCell{\n  border:1.5px solid #bdbdbd !important;\n  border-radius:14px !important;\n  padding:12px 14px !important;\n  background:#fff !important;\n}\n.ck-miniLbl{font-size:12px !important;font-weight:900 !important;opacity:.8 !important;}\n.ck-miniVal{font-size:18px !important;font-weight:900 !important;margin-top:6px !important;}\n\n\/* ====== calculator (your exact style) ====== *\/\n.ck-calc{\n  border:2px dashed #666 !important;\n  border-radius:18px !important;\n  padding:18px 18px !important;\n  background:#fff !important;\n  margin:14px 0 !important;\n  max-width:900px !important;\n}\n.ck-calc h3{\n  margin:0 0 14px !important;\n  font-size:22px !important;\n  font-weight:900 !important;\n  line-height:1.15 !important;\n}\n.ck-grid{\n  display:grid !important;\n  grid-template-columns:1fr 1fr !important;\n  gap:16px !important;\n}\n.ck-field label{\n  display:block !important;\n  font-size:13px !important;\n  font-weight:900 !important;\n  margin:0 0 6px !important;\n}\n.ck-field input{\n  width:100% !important;\n  display:block !important;\n  box-sizing:border-box !important;\n  padding:12px 14px !important;\n  border:1.5px solid #bdbdbd !important;\n  border-radius:14px !important;\n  background:#fff !important;\n  font-size:16px !important;\n  line-height:1.2 !important;\n  box-shadow:none !important;\n  -webkit-appearance:none !important;\n  appearance:none !important;\n}\n\n.ck-outRow{\n  display:flex !important;\n  gap:14px !important;\n  flex-wrap:wrap !important;\n  margin-top:16px !important;\n}\n.ck-outPill{\n  border:1.5px solid #bdbdbd !important;\n  border-radius:999px !important;\n  padding:12px 16px !important;\n  font-weight:900 !important;\n  background:#fff !important;\n  min-width:160px !important;\n}\n\n@media (max-width: 700px){\n  .ck-selRow{grid-template-columns:1fr !important;}\n  .ck-miniGrid{grid-template-columns:1fr !important;}\n  .ck-grid{grid-template-columns:1fr !important;}\n  .ck-right{text-align:left !important;}\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"ck-wrap\" id=\"ckMillingSelector\"\u003e\n\n  \u003c!-- ===== Top selector (ISO P\/M\/K) ===== --\u003e\n  \u003cdiv class=\"ck-box\"\u003e\n    \u003cdiv class=\"ck-boxTop\"\u003e\n      \u003cdiv class=\"ck-left\"\u003e\n        \u003cdiv id=\"ckIsoPills\"\u003e\n          \u003cspan class=\"ck-pill ck-isoP ck-isoPick\" data-iso=\"P\"\u003eISO P\u003c\/span\u003e\n          \u003cspan class=\"ck-pill ck-isoM ck-isoPick\" data-iso=\"M\"\u003eISO M\u003c\/span\u003e\n          \u003cspan class=\"ck-pill ck-isoK ck-isoPick\" data-iso=\"K\"\u003eISO K\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ck-title\"\u003eCarbide Milling Cutting Data\u003c\/div\u003e\n        \u003cdiv class=\"ck-sub\" id=\"ckIsoLabel\"\u003eSteel (ISO P)\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ck-right\" id=\"ckQuick\"\u003e\n        Vc: — m\/min\u003cbr\u003e\n        fz: — mm\/tooth\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Operation selector --\u003e\n    \u003cdiv class=\"ck-selRow\" style=\"margin-top:14px;\"\u003e\n      \u003cdiv class=\"ck-sel ck-opPick ck-selActive\" data-op=\"face\"\u003e\n        Face Milling\n        \u003csmall\u003eClick to show data\u003c\/small\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ck-sel ck-opPick\" data-op=\"side\"\u003e\n        Side Milling\n        \u003csmall\u003eClick to show data\u003c\/small\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ck-sel ck-opPick\" data-op=\"slot\"\u003e\n        Slot Milling\n        \u003csmall\u003eClick to show data\u003c\/small\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Display Vc \/ fz --\u003e\n    \u003cdiv class=\"ck-mini\"\u003e\n      \u003cdiv class=\"ck-miniGrid\"\u003e\n        \u003cdiv class=\"ck-miniCell\"\u003e\n          \u003cdiv class=\"ck-miniLbl\"\u003eVc (m\/min)\u003c\/div\u003e\n          \u003cdiv class=\"ck-miniVal\" id=\"ckVcVal\"\u003e—\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ck-miniCell\"\u003e\n          \u003cdiv class=\"ck-miniLbl\"\u003efz (mm\/tooth)\u003c\/div\u003e\n          \u003cdiv class=\"ck-miniVal\" id=\"ckFzVal\"\u003e—\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ========== CALCULATOR (mm\/tooth) ========== --\u003e\n  \u003cdiv class=\"ck-calc\" id=\"ckMillCalc\"\u003e\n    \u003ch3\u003eMilling Calculator\u003cbr\u003e(mm\/tooth)\u003c\/h3\u003e\n\n    \u003cdiv class=\"ck-grid\"\u003e\n      \u003cdiv class=\"ck-field\"\u003e\n        \u003clabel\u003eTool Ø (mm)\u003c\/label\u003e\n        \u003cinput id=\"em_d\" type=\"number\" step=\"0.01\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ck-field\"\u003e\n        \u003clabel\u003eVc (m\/min)\u003c\/label\u003e\n        \u003cinput id=\"em_vc\" type=\"number\" step=\"0.1\" placeholder=\"Auto from selection (midpoint)\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ck-field\"\u003e\n        \u003clabel\u003eFlutes (Z)\u003c\/label\u003e\n        \u003cinput id=\"em_z\" type=\"number\" step=\"1\" value=\"4\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ck-field\"\u003e\n        \u003clabel\u003efz (mm\/tooth)\u003c\/label\u003e\n        \u003cinput id=\"em_fz\" type=\"number\" step=\"0.001\" placeholder=\"Auto from selection (midpoint)\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ck-outRow\"\u003e\n      \u003cdiv class=\"ck-outPill\"\u003eRPM: \u003cspan id=\"em_rpm\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"ck-outPill\"\u003eFeed (mm\/min): \u003cspan id=\"em_feed\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n  const root = document.getElementById(\"ckMillingSelector\");\n  if(!root) return;\n\n  \/\/ =========================\n  \/\/ CUT DATA (RANGES)\n  \/\/ =========================\n  \/\/ Each op has { vc:{min,max}, fz:{min,max} }\n  \/\/ Calculator auto-fills the midpoint of each range.\n  const CUT_DATA = {\n    P: {\n      label: \"Steel (ISO P)\",\n      face: { vc:{min:150, max:220}, fz:{min:0.08, max:0.18} },\n      side: { vc:{min:140, max:200}, fz:{min:0.06, max:0.14} },\n      slot: { vc:{min:100, max:160}, fz:{min:0.04, max:0.10} }\n    },\n    M: {\n      label: \"Stainless Steel (ISO M)\",\n      face: { vc:{min: 90, max:150}, fz:{min:0.06, max:0.14} },\n      side: { vc:{min: 90, max:140}, fz:{min:0.05, max:0.10} },\n      slot: { vc:{min: 70, max:120}, fz:{min:0.03, max:0.08} }\n    },\n    K: {\n      label: \"Cast Iron (ISO K)\",\n      face: { vc:{min:180, max:280}, fz:{min:0.10, max:0.22} },\n      side: { vc:{min:160, max:260}, fz:{min:0.08, max:0.18} },\n      slot: { vc:{min:140, max:220}, fz:{min:0.06, max:0.14} }\n    }\n  };\n\n  let state = { iso:\"P\", op:\"face\" };\n\n  const isoPicks = root.querySelectorAll(\".ck-isoPick\");\n  const opPicks  = root.querySelectorAll(\".ck-opPick\");\n\n  const isoLabel = document.getElementById(\"ckIsoLabel\");\n  const vcVal    = document.getElementById(\"ckVcVal\");\n  const fzVal    = document.getElementById(\"ckFzVal\");\n  const quick    = document.getElementById(\"ckQuick\");\n\n  \/\/ Calculator inputs\/outputs (same IDs as your working calc)\n  const d   = document.getElementById(\"em_d\");\n  const vcI = document.getElementById(\"em_vc\");\n  const z   = document.getElementById(\"em_z\");\n  const fzI = document.getElementById(\"em_fz\");\n  const outR = document.getElementById(\"em_rpm\");\n  const outF = document.getElementById(\"em_feed\");\n\n  function mid(min,max){\n    const a = Number(min), b = Number(max);\n    return (a+b)\/2;\n  }\n\n  function fmt(num, dec){\n    if(num === null || num === undefined || isNaN(Number(num))) return \"—\";\n    return Number(num).toFixed(dec);\n  }\n\n  function fmtRange(r, dec, suffix){\n    return `${fmt(r.min, dec)}–${fmt(r.max, dec)}${suffix||\"\"}`;\n  }\n\n  function applySelectionToUI(){\n    const data = CUT_DATA[state.iso][state.op];\n\n    isoLabel.textContent = CUT_DATA[state.iso].label;\n\n    \/\/ Display ranges\n    vcVal.textContent = fmtRange(data.vc, 0, \"\");\n    fzVal.textContent = fmtRange(data.fz, 2, \"\");\n\n    quick.innerHTML =\n      `Vc: ${fmtRange(data.vc,0,\"\")} m\/min\u003cbr\u003e` +\n      `fz: ${fmtRange(data.fz,2,\"\")} mm\/tooth`;\n\n    \/\/ Auto-fill calculator with midpoint values (overwrite to match selection)\n    const vcMid = mid(data.vc.min, data.vc.max);\n    const fzMid = mid(data.fz.min, data.fz.max);\n\n    vcI.value = vcMid.toFixed(1);\n    fzI.value = fzMid.toFixed(3);\n\n    calc();\n  }\n\n  function setISO(newISO){\n    state.iso = newISO;\n\n    \/\/ Visual cue on selected ISO pill\n    isoPicks.forEach(p=\u003e{\n      const on = p.dataset.iso === newISO;\n      p.style.boxShadow = on ? \"0 10px 18px rgba(0,0,0,.18)\" : \"none\";\n      p.style.transform = on ? \"translateY(-1px)\" : \"none\";\n      p.style.borderColor = on ? \"#000\" : \"rgba(0,0,0,.35)\";\n    });\n\n    applySelectionToUI();\n  }\n\n  function setOP(newOP){\n    state.op = newOP;\n    opPicks.forEach(b=\u003e{\n      b.classList.toggle(\"ck-selActive\", b.dataset.op === newOP);\n    });\n\n    applySelectionToUI();\n  }\n\n  function calc(){\n    const D = parseFloat(d.value);\n    const Vc = parseFloat(vcI.value);\n    const Z = parseFloat(z.value);\n    const Fz = parseFloat(fzI.value);\n\n    const rpm = (D\u003e0 \u0026\u0026 Vc\u003e0) ? (1000*Vc)\/(Math.PI*D) : NaN;\n    const feed = (isFinite(rpm) \u0026\u0026 Z\u003e0 \u0026\u0026 Fz\u003e0) ? rpm*Z*Fz : NaN;\n\n    outR.textContent = isFinite(rpm) ? Math.round(rpm) : \"—\";\n    outF.textContent = isFinite(feed) ? Math.round(feed) : \"—\";\n  }\n\n  \/\/ Bind events\n  isoPicks.forEach(p=\u003ep.addEventListener(\"click\", ()=\u003esetISO(p.dataset.iso)));\n  opPicks.forEach(b=\u003eb.addEventListener(\"click\", ()=\u003esetOP(b.dataset.op)));\n  [d, vcI, z, fzI].forEach(el=\u003eel.addEventListener(\"input\", calc));\n\n  \/\/ Init\n  setISO(\"P\");\n  setOP(\"face\");\n})();\n\u003c\/script\u003e\n","brand":"Carbide King Store","offers":[{"title":"Diameter 2mm x 50mm","offer_id":45223319404601,"sku":"CKP-4F02450","price":11.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 4mm x 50mm","offer_id":45223319437369,"sku":"CKP-4F04450","price":11.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 6mm x 50mm","offer_id":45223319470137,"sku":"CKP-4F06650","price":20.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 8mm x 60mm","offer_id":45223319502905,"sku":"CKP-4F08850","price":35.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 10mm x 75mm","offer_id":45223319535673,"sku":"CKP-4F101075","price":47.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 12mm x 75mm","offer_id":45223319568441,"sku":"CKP-4F121275","price":62.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 16mm x 100mm","offer_id":45223319601209,"sku":"CKP-4F1616100","price":115.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 20mm x 100mm","offer_id":45223319633977,"sku":"CKP-4F2020100","price":168.95,"currency_code":"AUD","in_stock":true},{"title":"Diameter 25mm x 150mm","offer_id":45223319666745,"sku":"CKP-4F2525150","price":277.95,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0759\/8332\/3193\/files\/NORE.jpg?v=1764821246","url":"https:\/\/carbideking.com.au\/products\/4-flute-stainless-steel-carbide-hi-helix-endmills-copy-1","provider":"CARBIDE KING","version":"1.0","type":"link"}