{"id":1682,"date":"2026-04-20T08:18:17","date_gmt":"2026-04-20T08:18:17","guid":{"rendered":"https:\/\/bbpmfg.com\/?page_id=1682"},"modified":"2026-04-21T03:12:24","modified_gmt":"2026-04-21T03:12:24","slug":"gravel-pump-selector","status":"publish","type":"page","link":"https:\/\/bbpmfg.com\/ar\/sand-dredge-pumps\/gravel-pump\/gravel-pump-selector\/","title":{"rendered":"\u0645\u062d\u062f\u062f \u0645\u0636\u062e\u0629 \u0627\u0644\u062d\u0635\u0649"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-527ee6c\" data-block-id=\"527ee6c\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-527ee6c-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-3e2e822\" data-v=\"4\" data-block-id=\"3e2e822\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-3e2e822-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-3e2e822-inner-blocks\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-cb61a7d\" data-block-id=\"cb61a7d\"><style>.stk-cb61a7d {margin-bottom:0px !important;}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-cb61a7d-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-0601a25\" data-v=\"4\" data-block-id=\"0601a25\"><style>.stk-0601a25-container{margin-top:var(--stk--preset--spacing--50, 1.5rem) !important;margin-right:var(--stk--preset--spacing--50, 1.5rem) !important;margin-bottom:var(--stk--preset--spacing--50, 1.5rem) !important;margin-left:var(--stk--preset--spacing--50, 1.5rem) !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-0601a25-container stk--no-background stk--no-padding\"><div class=\"has-text-align-center stk-block-content stk-inner-blocks stk-0601a25-inner-blocks\"><div class=\"ct-breadcrumbs\" data-source=\"rankmath\" ><nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav><\/div><\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>BBP Gravel Pump Selector<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Mono:wght@400;500;600&#038;family=IBM+Plex+Sans:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n<style>\n\/* ============================================================\n   BBP GRAVEL PUMP SELECTOR \u2014 Scoped to #bbp-pump-selector\n   ============================================================ *\/\n#bbp-pump-selector {\n  --primary: #1848C0;\n  --primary-dark: #0f33a0;\n  --primary-light: #e8eefb;\n  --accent: #F0C018;\n  --accent-dark: #c9a010;\n  --text: #0f1923;\n  --text-muted: #4a5568;\n  --border: #cbd5e0;\n  --border-strong: #718096;\n  --bg: #f7f8fc;\n  --bg-white: #ffffff;\n  --success: #0d7a3e;\n  --success-bg: #e6f4ed;\n  --warn: #92400e;\n  --warn-bg: #fef3c7;\n  --error: #b91c1c;\n  --error-bg: #fef2f2;\n  --font-sans: 'IBM Plex Sans', system-ui, sans-serif;\n  --font-mono: 'IBM Plex Mono', 'Courier New', monospace;\n  --radius: 0px;\n  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);\n  --shadow-md: 0 4px 16px rgba(24,72,192,0.10);\n  --shadow-lg: 0 8px 32px rgba(24,72,192,0.14);\n  --transition: 150ms ease;\n\n  font-family: var(--font-sans);\n  color: var(--text);\n  background: var(--bg);\n  box-sizing: border-box;\n  line-height: 1.5;\n}\n\n#bbp-pump-selector *,\n#bbp-pump-selector *::before,\n#bbp-pump-selector *::after {\n  box-sizing: inherit;\n  margin: 0;\n  padding: 0;\n}\n\n\/* ---- Layout ---- *\/\n#bbp-pump-selector .psel-wrap {\n  max-width: 1120px;\n  margin: 0 auto;\n  padding: 0 20px;\n}\n\n#bbp-pump-selector .psel-hero {\n  background: var(--primary);\n  color: #fff;\n  padding: 36px 20px 32px;\n  border-bottom: 4px solid var(--accent);\n}\n\n#bbp-pump-selector .psel-hero-inner {\n  max-width: 1120px;\n  margin: 0 auto;\n  display: flex;\n  align-items: flex-start;\n  gap: 24px;\n}\n\n#bbp-pump-selector .psel-hero-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: var(--accent);\n  color: var(--text);\n  font-family: var(--font-mono);\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  padding: 4px 10px;\n  margin-bottom: 12px;\n}\n\n#bbp-pump-selector .psel-hero h1 {\n  font-size: clamp(22px, 3vw, 32px);\n  font-weight: 700;\n  line-height: 1.2;\n  margin-bottom: 8px;\n  letter-spacing: -0.01em;\n}\n\n#bbp-pump-selector .psel-hero p {\n  font-size: 15px;\n  opacity: 0.85;\n  max-width: 560px;\n}\n\n#bbp-pump-selector .psel-hero-icon {\n  flex-shrink: 0;\n  width: 64px;\n  height: 64px;\n  background: rgba(240,192,24,0.15);\n  border: 2px solid rgba(240,192,24,0.4);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#bbp-pump-selector .psel-hero-icon svg {\n  width: 36px;\n  height: 36px;\n  fill: var(--accent);\n}\n\n\/* ---- Main Grid ---- *\/\n#bbp-pump-selector .psel-main {\n  padding: 32px 20px 48px;\n}\n\n#bbp-pump-selector .psel-grid {\n  max-width: 1120px;\n  margin: 0 auto;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 24px;\n  align-items: start;\n}\n\n\/* ---- Card ---- *\/\n#bbp-pump-selector .psel-card {\n  background: var(--bg-white);\n  border: 1px solid var(--border);\n  border-top: 3px solid var(--primary);\n  box-shadow: var(--shadow-sm);\n}\n\n#bbp-pump-selector .psel-card-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 18px 20px 14px;\n  border-bottom: 1px solid var(--border);\n}\n\n#bbp-pump-selector .psel-card-icon {\n  width: 32px;\n  height: 32px;\n  background: var(--primary-light);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n}\n\n#bbp-pump-selector .psel-card-icon svg {\n  width: 18px;\n  height: 18px;\n  fill: var(--primary);\n}\n\n#bbp-pump-selector .psel-card-title {\n  font-size: 13px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.07em;\n  color: var(--primary);\n}\n\n#bbp-pump-selector .psel-card-body {\n  padding: 20px;\n}\n\n\/* ---- Form ---- *\/\n#bbp-pump-selector .psel-field {\n  margin-bottom: 18px;\n}\n\n#bbp-pump-selector .psel-field:last-child {\n  margin-bottom: 0;\n}\n\n#bbp-pump-selector .psel-label {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: 8px;\n  margin-bottom: 6px;\n}\n\n#bbp-pump-selector .psel-label-text {\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--text);\n}\n\n#bbp-pump-selector .psel-label-range {\n  font-family: var(--font-mono);\n  font-size: 11px;\n  color: var(--text-muted);\n  white-space: nowrap;\n}\n\n#bbp-pump-selector .psel-input-wrap {\n  position: relative;\n  display: flex;\n  align-items: stretch;\n}\n\n#bbp-pump-selector .psel-input-unit {\n  background: var(--bg);\n  border: 1px solid var(--border);\n  border-left: none;\n  padding: 0 12px;\n  font-family: var(--font-mono);\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--text-muted);\n  display: flex;\n  align-items: center;\n  white-space: nowrap;\n}\n\n#bbp-pump-selector input[type=\"number\"],\n#bbp-pump-selector select {\n  width: 100%;\n  font-family: var(--font-mono);\n  font-size: 14px;\n  font-weight: 500;\n  color: var(--text);\n  background: var(--bg-white);\n  border: 1px solid var(--border);\n  padding: 10px 12px;\n  outline: none;\n  transition: border-color var(--transition), box-shadow var(--transition);\n  -webkit-appearance: none;\n  appearance: none;\n  border-radius: 0;\n}\n\n#bbp-pump-selector input[type=\"number\"]:focus,\n#bbp-pump-selector select:focus {\n  border-color: var(--primary);\n  box-shadow: 0 0 0 3px rgba(24,72,192,0.12);\n}\n\n#bbp-pump-selector input[type=\"number\"].psel-input-has-unit {\n  border-right: none;\n}\n\n#bbp-pump-selector input[type=\"number\"].psel-invalid {\n  border-color: var(--error);\n  background: var(--error-bg);\n}\n\n#bbp-pump-selector .psel-select-wrap {\n  position: relative;\n}\n\n#bbp-pump-selector .psel-select-wrap select {\n  padding-right: 36px;\n  font-family: var(--font-sans);\n  font-size: 14px;\n  cursor: pointer;\n}\n\n#bbp-pump-selector .psel-select-wrap::after {\n  content: '';\n  position: absolute;\n  right: 12px;\n  top: 50%;\n  transform: translateY(-50%);\n  width: 0;\n  height: 0;\n  border-left: 5px solid transparent;\n  border-right: 5px solid transparent;\n  border-top: 6px solid var(--text-muted);\n  pointer-events: none;\n}\n\n#bbp-pump-selector .psel-field-hint {\n  font-size: 11px;\n  color: var(--text-muted);\n  margin-top: 4px;\n}\n\n#bbp-pump-selector .psel-validation-msg {\n  font-size: 11px;\n  color: var(--error);\n  margin-top: 4px;\n  display: none;\n}\n\n#bbp-pump-selector .psel-invalid-field .psel-validation-msg {\n  display: block;\n}\n\n\/* ---- Submit Button ---- *\/\n#bbp-pump-selector .psel-btn-primary {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 10px;\n  width: 100%;\n  background: var(--primary);\n  color: #fff;\n  border: none;\n  padding: 14px 24px;\n  font-family: var(--font-sans);\n  font-size: 15px;\n  font-weight: 700;\n  letter-spacing: 0.02em;\n  cursor: pointer;\n  transition: background var(--transition), transform var(--transition);\n  margin-top: 20px;\n  border-radius: 0;\n}\n\n#bbp-pump-selector .psel-btn-primary:hover {\n  background: var(--primary-dark);\n}\n\n#bbp-pump-selector .psel-btn-primary:active {\n  transform: scale(0.99);\n}\n\n#bbp-pump-selector .psel-btn-primary svg {\n  width: 18px;\n  height: 18px;\n  fill: currentColor;\n  flex-shrink: 0;\n}\n\n\/* ---- Result Panel ---- *\/\n#bbp-pump-selector .psel-result {\n  display: none;\n  flex-direction: column;\n  gap: 0;\n}\n\n#bbp-pump-selector .psel-result.psel-visible {\n  display: flex;\n}\n\n\/* Empty state *\/\n#bbp-pump-selector .psel-result-empty {\n  background: var(--bg-white);\n  border: 1px solid var(--border);\n  border-top: 3px solid var(--border-strong);\n  padding: 40px 24px;\n  text-align: center;\n  color: var(--text-muted);\n}\n\n#bbp-pump-selector .psel-result-empty svg {\n  width: 48px;\n  height: 48px;\n  fill: var(--border);\n  margin-bottom: 12px;\n}\n\n#bbp-pump-selector .psel-result-empty p {\n  font-size: 14px;\n}\n\n\/* Result card *\/\n#bbp-pump-selector .psel-rec {\n  background: var(--bg-white);\n  border: 1px solid var(--border);\n  border-top: 4px solid var(--accent);\n  box-shadow: var(--shadow-md);\n}\n\n#bbp-pump-selector .psel-rec-header {\n  padding: 20px 20px 16px;\n  border-bottom: 1px solid var(--border);\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  gap: 12px;\n}\n\n#bbp-pump-selector .psel-rec-series-tag {\n  font-family: var(--font-mono);\n  font-size: 10px;\n  font-weight: 600;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--bg-white);\n  background: var(--primary);\n  padding: 3px 8px;\n  display: inline-block;\n  margin-bottom: 8px;\n}\n\n#bbp-pump-selector .psel-rec-model {\n  font-family: var(--font-mono);\n  font-size: clamp(22px, 3.5vw, 30px);\n  font-weight: 600;\n  color: var(--primary);\n  letter-spacing: -0.01em;\n  line-height: 1.1;\n}\n\n#bbp-pump-selector .psel-rec-badge {\n  flex-shrink: 0;\n  background: var(--accent);\n  color: var(--text);\n  font-family: var(--font-mono);\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.06em;\n  text-transform: uppercase;\n  padding: 5px 10px;\n  white-space: nowrap;\n}\n\n\/* Specs grid *\/\n#bbp-pump-selector .psel-specs {\n  padding: 18px 20px;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 1px;\n  background: var(--border);\n  border-bottom: 1px solid var(--border);\n}\n\n#bbp-pump-selector .psel-spec-item {\n  background: var(--bg-white);\n  padding: 12px 14px;\n}\n\n#bbp-pump-selector .psel-spec-label {\n  font-size: 10px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.08em;\n  color: var(--text-muted);\n  margin-bottom: 4px;\n}\n\n#bbp-pump-selector .psel-spec-value {\n  font-family: var(--font-mono);\n  font-size: 15px;\n  font-weight: 600;\n  color: var(--text);\n}\n\n#bbp-pump-selector .psel-spec-value span {\n  font-size: 11px;\n  color: var(--text-muted);\n  font-weight: 400;\n}\n\n\/* Match indicator *\/\n#bbp-pump-selector .psel-match-bar {\n  padding: 14px 20px;\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  border-bottom: 1px solid var(--border);\n  background: var(--success-bg);\n}\n\n#bbp-pump-selector .psel-match-bar svg {\n  width: 16px;\n  height: 16px;\n  fill: var(--success);\n  flex-shrink: 0;\n}\n\n#bbp-pump-selector .psel-match-text {\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--success);\n}\n\n\/* Logic explanation *\/\n#bbp-pump-selector .psel-logic {\n  padding: 14px 20px;\n  border-bottom: 1px solid var(--border);\n}\n\n#bbp-pump-selector .psel-logic-title {\n  font-size: 11px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.07em;\n  color: var(--text-muted);\n  margin-bottom: 8px;\n}\n\n#bbp-pump-selector .psel-logic-list {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n}\n\n#bbp-pump-selector .psel-logic-list li {\n  display: flex;\n  align-items: flex-start;\n  gap: 8px;\n  font-size: 13px;\n  color: var(--text-muted);\n}\n\n#bbp-pump-selector .psel-logic-list li::before {\n  content: '\u25b8';\n  color: var(--primary);\n  font-size: 10px;\n  margin-top: 2px;\n  flex-shrink: 0;\n}\n\n\/* Disclaimer *\/\n#bbp-pump-selector .psel-disclaimer {\n  padding: 14px 20px;\n  background: var(--warn-bg);\n  border-left: 3px solid var(--accent-dark);\n  font-size: 12px;\n  color: var(--warn);\n  line-height: 1.6;\n}\n\n\/* CTA *\/\n#bbp-pump-selector .psel-cta {\n  padding: 16px 20px;\n}\n\n#bbp-pump-selector .psel-btn-cta {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  width: 100%;\n  background: var(--accent);\n  color: var(--text);\n  border: none;\n  padding: 15px 24px;\n  font-family: var(--font-sans);\n  font-size: 15px;\n  font-weight: 700;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background var(--transition), transform var(--transition);\n  border-radius: 0;\n}\n\n#bbp-pump-selector .psel-btn-cta:hover {\n  background: var(--accent-dark);\n}\n\n#bbp-pump-selector .psel-btn-cta:active {\n  transform: scale(0.99);\n}\n\n#bbp-pump-selector .psel-btn-cta svg {\n  width: 16px;\n  height: 16px;\n  fill: currentColor;\n  flex-shrink: 0;\n}\n\n\/* ---- Series Reference ---- *\/\n#bbp-pump-selector .psel-ref {\n  max-width: 1120px;\n  margin: 0 auto;\n  padding: 0 20px 48px;\n}\n\n#bbp-pump-selector .psel-ref-title {\n  font-size: 13px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.07em;\n  color: var(--text-muted);\n  margin-bottom: 16px;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n#bbp-pump-selector .psel-ref-title::after {\n  content: '';\n  flex: 1;\n  height: 1px;\n  background: var(--border);\n}\n\n#bbp-pump-selector .psel-ref-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n  gap: 1px;\n  background: var(--border);\n  border: 1px solid var(--border);\n}\n\n#bbp-pump-selector .psel-ref-item {\n  background: var(--bg-white);\n  padding: 14px 16px;\n}\n\n#bbp-pump-selector .psel-ref-model {\n  font-family: var(--font-mono);\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--primary);\n  margin-bottom: 6px;\n}\n\n#bbp-pump-selector .psel-ref-series {\n  font-size: 10px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.07em;\n  color: var(--bg-white);\n  background: var(--primary);\n  display: inline-block;\n  padding: 2px 6px;\n  margin-bottom: 8px;\n}\n\n#bbp-pump-selector .psel-ref-series.psel-awn {\n  background: var(--text-muted);\n}\n\n#bbp-pump-selector .psel-ref-specs {\n  font-size: 11px;\n  color: var(--text-muted);\n  line-height: 1.7;\n}\n\n#bbp-pump-selector .psel-ref-specs b {\n  font-weight: 600;\n  color: var(--text);\n}\n\n\/* ---- Responsive ---- *\/\n@media (max-width:690px) {\n  #bbp-pump-selector .psel-hero-inner {\n    flex-direction: column;\n    gap: 16px;\n  }\n\n  #bbp-pump-selector .psel-grid {\n    grid-template-columns: 1fr;\n  }\n\n  #bbp-pump-selector .psel-specs {\n    grid-template-columns: 1fr 1fr;\n    padding: 0;\n  }\n\n  #bbp-pump-selector .psel-result {\n    margin-top: 0;\n  }\n\n  #bbp-pump-selector .psel-ref-grid {\n    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n  }\n}\n\n@media (max-width: 480px) {\n  #bbp-pump-selector .psel-specs {\n    grid-template-columns: 1fr;\n  }\n\n  #bbp-pump-selector .psel-hero {\n    padding: 24px 16px 20px;\n  }\n\n  #bbp-pump-selector .psel-main {\n    padding: 20px 16px 32px;\n  }\n\n  #bbp-pump-selector .psel-ref {\n    padding: 0 16px 32px;\n  }\n}\n<\/style>\n<\/head>\n<body>\n\n<div id=\"bbp-pump-selector\">\n\n  <!-- Hero Header -->\n  <div class=\"psel-hero\">\n    <div class=\"psel-hero-inner\">\n      <div>\n        <div class=\"psel-hero-badge\">BBP Engineering Tool<\/div>\n        <h1>Gravel Pump Model Selector<\/h1>\n        <p>Enter your operating parameters to receive a preliminary pump model recommendation from BBP&#8217;s AMG and AWN series.<\/p>\n      <\/div>\n      <div class=\"psel-hero-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n          <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 14H9V8h2v8zm4 0h-2V8h2v8z\"\/>\n          <path d=\"M19 3H5C3.9 3 3 3.9 3 5v2h18V5c0-1.1-.9-2-2-2zM3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-2H3v2z\"\/>\n        <\/svg>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Main Content -->\n  <div class=\"psel-main\">\n    <div class=\"psel-grid\">\n\n      <!-- INPUT FORM -->\n      <div class=\"psel-card\" role=\"region\" aria-label=\"Pump selection inputs\">\n        <div class=\"psel-card-header\">\n          <div class=\"psel-card-icon\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\/><\/svg>\n          <\/div>\n          <span class=\"psel-card-title\">Operating Parameters<\/span>\n        <\/div>\n        <div class=\"psel-card-body\">\n          <form id=\"psel-form\" novalidate>\n\n            <!-- Flow Rate -->\n            <div class=\"psel-field\" id=\"field-flow\">\n              <div class=\"psel-label\">\n                <label class=\"psel-label-text\" for=\"psel-flow\">Required Flow Rate<\/label>\n                <span class=\"psel-label-range\">36 \u2013 25,000<\/span>\n              <\/div>\n              <div class=\"psel-input-wrap\">\n                <input\n                  type=\"number\"\n                  id=\"psel-flow\"\n                  name=\"flow\"\n                  class=\"psel-input-has-unit\"\n                  min=\"36\"\n                  max=\"25000\"\n                  step=\"1\"\n                  placeholder=\"e.g. 1200\"\n                  aria-describedby=\"flow-hint flow-error\"\n                >\n                <span class=\"psel-input-unit\">m\u00b3\/h<\/span>\n              <\/div>\n              <div class=\"psel-validation-msg\" id=\"flow-error\" role=\"alert\">Enter a value between 36 and 25,000 m\u00b3\/h<\/div>\n              <div class=\"psel-field-hint\" id=\"flow-hint\">Total required volumetric flow rate<\/div>\n            <\/div>\n\n            <!-- Head -->\n            <div class=\"psel-field\" id=\"field-head\">\n              <div class=\"psel-label\">\n                <label class=\"psel-label-text\" for=\"psel-head\">Required Head<\/label>\n                <span class=\"psel-label-range\">7 \u2013 85<\/span>\n              <\/div>\n              <div class=\"psel-input-wrap\">\n                <input\n                  type=\"number\"\n                  id=\"psel-head\"\n                  name=\"head\"\n                  class=\"psel-input-has-unit\"\n                  min=\"7\"\n                  max=\"85\"\n                  step=\"0.1\"\n                  placeholder=\"e.g. 45\"\n                  aria-describedby=\"head-hint head-error\"\n                >\n                <span class=\"psel-input-unit\">m<\/span>\n              <\/div>\n              <div class=\"psel-validation-msg\" id=\"head-error\" role=\"alert\">Enter a value between 7 and 85 m<\/div>\n              <div class=\"psel-field-hint\" id=\"head-hint\">Total dynamic head (TDH) required<\/div>\n            <\/div>\n\n            <!-- Particle Size -->\n            <div class=\"psel-field\" id=\"field-particle\">\n              <div class=\"psel-label\">\n                <label class=\"psel-label-text\" for=\"psel-particle\">Maximum Particle Size<\/label>\n                <span class=\"psel-label-range\">10 \u2013 1,200<\/span>\n              <\/div>\n              <div class=\"psel-input-wrap\">\n                <input\n                  type=\"number\"\n                  id=\"psel-particle\"\n                  name=\"particle\"\n                  class=\"psel-input-has-unit\"\n                  min=\"10\"\n                  max=\"1200\"\n                  step=\"1\"\n                  placeholder=\"e.g. 150\"\n                  aria-describedby=\"particle-hint particle-error\"\n                >\n                <span class=\"psel-input-unit\">mm<\/span>\n              <\/div>\n              <div class=\"psel-validation-msg\" id=\"particle-error\" role=\"alert\">Enter a value between 10 and 1,200 mm<\/div>\n              <div class=\"psel-field-hint\" id=\"particle-hint\">Largest solid particle diameter to be pumped<\/div>\n            <\/div>\n\n            <!-- Application Type -->\n            <div class=\"psel-field\" id=\"field-application\">\n              <div class=\"psel-label\">\n                <label class=\"psel-label-text\" for=\"psel-application\">Application Type<\/label>\n              <\/div>\n              <div class=\"psel-select-wrap\">\n                <select id=\"psel-application\" name=\"application\" aria-describedby=\"app-hint\">\n                  <option value=\"\" disabled selected>\u2014 Select application \u2014<\/option>\n                  <option value=\"mining\">Mining<\/option>\n                  <option value=\"dredging-river\">Dredging (River \/ Harbor)<\/option>\n                  <option value=\"dredging-offshore\">Dredging (Offshore \/ CSD \/ TSHD)<\/option>\n                  <option value=\"tunneling\">Tunneling<\/option>\n                  <option value=\"sugar\">Sugar Processing<\/option>\n                  <option value=\"slag\">Slag Handling<\/option>\n                  <option value=\"other\">Other<\/option>\n                <\/select>\n              <\/div>\n              <div class=\"psel-validation-msg\" id=\"app-error\" role=\"alert\">Please select an application type<\/div>\n              <div class=\"psel-field-hint\" id=\"app-hint\">Determines series routing (AMG vs AWN)<\/div>\n            <\/div>\n\n            <!-- Installation Type -->\n            <div class=\"psel-field\" id=\"field-installation\">\n              <div class=\"psel-label\">\n                <label class=\"psel-label-text\" for=\"psel-installation\">Installation Type<\/label>\n              <\/div>\n              <div class=\"psel-select-wrap\">\n                <select id=\"psel-installation\" name=\"installation\" aria-describedby=\"install-hint\">\n                  <option value=\"\" disabled selected>\u2014 Select installation \u2014<\/option>\n                  <option value=\"land\">Land-based<\/option>\n                  <option value=\"dredger\">Dredger-mounted<\/option>\n                  <option value=\"submersible\">Submersible<\/option>\n                <\/select>\n              <\/div>\n              <div class=\"psel-validation-msg\" id=\"install-error\" role=\"alert\">Please select an installation type<\/div>\n              <div class=\"psel-field-hint\" id=\"install-hint\">Affects mounting and sealing requirements<\/div>\n            <\/div>\n\n            <button type=\"submit\" class=\"psel-btn-primary\" id=\"psel-submit\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"\/><\/svg>\n              Find Recommended Model\n            <\/button>\n\n          <\/form>\n        <\/div>\n      <\/div>\n\n      <!-- RESULT PANEL -->\n      <div id=\"psel-result-wrap\">\n\n        <!-- Empty state (initial) -->\n        <div id=\"psel-empty\" style=\"background: var(--bg-white); border: 1px solid var(--border); border-top: 3px solid var(--border-strong); padding: 48px 24px; text-align: center; color: var(--text-muted);\">\n          <svg viewBox=\"0 0 24 24\" style=\"width:52px;height:52px;fill:var(--border);margin-bottom:14px;display:block;margin-left:auto;margin-right:auto;\" aria-hidden=\"true\">\n            <path d=\"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"\/>\n          <\/svg>\n          <p style=\"font-size:15px;font-weight:600;color:var(--text);margin-bottom:6px;\">Awaiting Parameters<\/p>\n          <p style=\"font-size:13px;\">Complete the form and click <em>Find Recommended Model<\/em> to see your BBP pump recommendation.<\/p>\n        <\/div>\n\n        <!-- Result (shown after submit) -->\n        <div id=\"psel-result\" class=\"psel-result\" role=\"region\" aria-live=\"polite\" aria-label=\"Pump recommendation result\">\n          <!-- Dynamically populated by JS -->\n        <\/div>\n\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n  <!-- Series Reference Table -->\n  <div class=\"psel-ref\">\n    <div class=\"psel-ref-title\">BBP Pump Series Reference<\/div>\n    <div class=\"psel-ref-grid\" role=\"table\" aria-label=\"BBP pump model specifications reference\">\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">6\/4D-AMG<\/div>\n        <span class=\"psel-ref-series\">AMG<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 250 m\u00b3\/h<br>\n          <b>Head:<\/b> up to 56 m<br>\n          <b>Max solid:<\/b> \u2264241 mm<br>\n          Compact land \/ dredger\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">8\/6E-AMG<\/div>\n        <span class=\"psel-ref-series\">AMG<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 540 m\u00b3\/h<br>\n          <b>Head:<\/b> up to 52 m<br>\n          <b>Max solid:<\/b> \u2264241 mm<br>\n          Mining \/ river dredging\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">10\/8F-AMG<\/div>\n        <span class=\"psel-ref-series\">AMG<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 820 m\u00b3\/h<br>\n          <b>Head:<\/b> up to 65 m<br>\n          <b>Max solid:<\/b> \u2264241 mm<br>\n          Medium-duty land \/ dredger\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">12\/10G-AMG<\/div>\n        <span class=\"psel-ref-series\">AMG<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 1,200 m\u00b3\/h<br>\n          <b>Head:<\/b> up to 40 m<br>\n          <b>Max solid:<\/b> \u2264241 mm<br>\n          High-volume flat-head\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">14\/12G-AMG<br>14\/12TU-AMG<\/div>\n        <span class=\"psel-ref-series\">AMG<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 2,750 m\u00b3\/h<br>\n          <b>Head:<\/b> up to 70 m<br>\n          <b>Max solid:<\/b> \u2264241 mm<br>\n          Heavy-duty \/ tunneling\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">200AWN<\/div>\n        <span class=\"psel-ref-series psel-awn\">AWN<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 800 m\u00b3\/h<br>\n          <b>Max solid:<\/b> &gt;241 mm<br>\n          Offshore \/ large gravel\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">300AWN<\/div>\n        <span class=\"psel-ref-series psel-awn\">AWN<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 1,300 m\u00b3\/h<br>\n          <b>Max solid:<\/b> &gt;241 mm<br>\n          Offshore \/ CSD\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">350AWN<\/div>\n        <span class=\"psel-ref-series psel-awn\">AWN<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 3,200 m\u00b3\/h<br>\n          <b>Max solid:<\/b> &gt;241 mm<br>\n          CSD \/ TSHD\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">500AWN \/ 500AWND<\/div>\n        <span class=\"psel-ref-series psel-awn\">AWN<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 5,500 m\u00b3\/h<br>\n          <b>Max solid:<\/b> &gt;241 mm<br>\n          Large CSD \/ TSHD\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">600AWN<\/div>\n        <span class=\"psel-ref-series psel-awn\">AWN<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> up to 9,000 m\u00b3\/h<br>\n          <b>Max solid:<\/b> &gt;241 mm<br>\n          TSHD \/ major dredging\n        <\/div>\n      <\/div>\n\n      <div class=\"psel-ref-item\" role=\"row\">\n        <div class=\"psel-ref-model\">900AWN \/ 1000AWN<\/div>\n        <span class=\"psel-ref-series psel-awn\">AWN<\/span>\n        <div class=\"psel-ref-specs\">\n          <b>Flow:<\/b> &gt;9,000 m\u00b3\/h<br>\n          <b>Max solid:<\/b> &gt;241 mm<br>\n          Ultra-large dredging\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n<\/div><!-- \/#bbp-pump-selector -->\n\n<script>\n(function () {\n  'use strict';\n\n  \/* ============================================================\n     PUMP DATABASE\n     ============================================================ *\/\n  var PUMPS = {\n    AMG: [\n      {\n        model: '6\/4D-AMG',\n        maxFlow: 250,\n        maxHead: 56,\n        specs: {\n          flow: 'Up to 250 m\u00b3\/h',\n          head: 'Up to 56 m',\n          solid: '\u2264 241 mm',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '8\/6E-AMG',\n        maxFlow: 540,\n        maxHead: 52,\n        specs: {\n          flow: 'Up to 540 m\u00b3\/h',\n          head: 'Up to 52 m',\n          solid: '\u2264 241 mm',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '10\/8F-AMG',\n        maxFlow: 820,\n        maxHead: 65,\n        specs: {\n          flow: 'Up to 820 m\u00b3\/h',\n          head: 'Up to 65 m',\n          solid: '\u2264 241 mm',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '12\/10G-AMG',\n        maxFlow: 1200,\n        maxHead: 40,\n        specs: {\n          flow: 'Up to 1,200 m\u00b3\/h',\n          head: 'Up to 40 m',\n          solid: '\u2264 241 mm',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '14\/12G-AMG or 14\/12TU-AMG',\n        maxFlow: 2750,\n        maxHead: 70,\n        specs: {\n          flow: 'Up to 2,750 m\u00b3\/h',\n          head: 'Up to 70 m',\n          solid: '\u2264 241 mm',\n          power: 'Contact BBP for details'\n        }\n      }\n    ],\n    AWN: [\n      {\n        model: '200AWN',\n        maxFlow: 800,\n        specs: {\n          flow: 'Up to 800 m\u00b3\/h',\n          head: 'Contact BBP',\n          solid: '> 241 mm capable',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '300AWN',\n        maxFlow: 1300,\n        specs: {\n          flow: 'Up to 1,300 m\u00b3\/h',\n          head: 'Contact BBP',\n          solid: '> 241 mm capable',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '350AWN',\n        maxFlow: 3200,\n        specs: {\n          flow: 'Up to 3,200 m\u00b3\/h',\n          head: 'Contact BBP',\n          solid: '> 241 mm capable',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '500AWN \/ 500AWND',\n        maxFlow: 5500,\n        specs: {\n          flow: 'Up to 5,500 m\u00b3\/h',\n          head: 'Contact BBP',\n          solid: '> 241 mm capable',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '600AWN',\n        maxFlow: 9000,\n        specs: {\n          flow: 'Up to 9,000 m\u00b3\/h',\n          head: 'Contact BBP',\n          solid: '> 241 mm capable',\n          power: 'Contact BBP for details'\n        }\n      },\n      {\n        model: '900AWN or 1000AWN',\n        maxFlow: Infinity,\n        specs: {\n          flow: '> 9,000 m\u00b3\/h',\n          head: 'Contact BBP',\n          solid: '> 241 mm capable',\n          power: 'Contact BBP for details'\n        }\n      }\n    ]\n  };\n\n  \/* ============================================================\n     SELECTION LOGIC\n     ============================================================ *\/\n  function selectPump(flow, head, particle, application) {\n    var useAWN = particle > 241 || application === 'dredging-offshore';\n    var series, pump, reasons;\n\n    if (useAWN) {\n      series = 'AWN';\n      reasons = [];\n      if (particle > 241) reasons.push('Maximum particle size (' + particle + ' mm) exceeds 241 mm threshold');\n      if (application === 'dredging-offshore') reasons.push('Offshore \/ CSD \/ TSHD application requires AWN series');\n\n      pump = null;\n      for (var i = 0; i < PUMPS.AWN.length; i++) {\n        if (flow <= PUMPS.AWN[i].maxFlow) {\n          pump = PUMPS.AWN[i];\n          break;\n        }\n      }\n      if (!pump) pump = PUMPS.AWN[PUMPS.AWN.length - 1];\n\n    } else {\n      series = 'AMG';\n      reasons = [\n        'Particle size (' + particle + ' mm) within AMG range (\u2264 241 mm)',\n        'Non-offshore application \u2014 AMG series applies'\n      ];\n\n      pump = null;\n      var candidates = [];\n      for (var j = 0; j < PUMPS.AMG.length; j++) {\n        var p = PUMPS.AMG[j];\n        if (flow <= p.maxFlow &#038;&#038; head <= p.maxHead) {\n          candidates.push(p);\n        }\n      }\n\n      if (candidates.length > 0) {\n        \/\/ Pick the smallest (most efficient) match\n        pump = candidates[0];\n      } else {\n        \/\/ Fallback: find best head match first, then closest flow\n        \/\/ Check if head is within any model but flow exceeds\n        var headMatches = [];\n        for (var k = 0; k < PUMPS.AMG.length; k++) {\n          if (head <= PUMPS.AMG[k].maxHead) headMatches.push(PUMPS.AMG[k]);\n        }\n        if (headMatches.length > 0) {\n          pump = headMatches[headMatches.length - 1];\n          reasons.push('Note: flow requirement may exceed standard range \u2014 confirm with BBP engineering');\n        } else {\n          pump = PUMPS.AMG[PUMPS.AMG.length - 1];\n          reasons.push('Note: head or flow may exceed standard range \u2014 confirm with BBP engineering');\n        }\n      }\n    }\n\n    return { series: series, pump: pump, reasons: reasons, useAWN: useAWN };\n  }\n\n  \/* ============================================================\n     RENDER RESULT\n     ============================================================ *\/\n  function renderResult(result, inputs) {\n    var p = result.pump;\n    var series = result.series;\n    var isAWN = result.useAWN;\n    var reasons = result.reasons;\n\n    var reasonsHTML = reasons.map(function (r) {\n      return '<li>' + escapeHTML(r) + '<\/li>';\n    }).join('');\n\n    var html = [\n      '<div class=\"psel-rec\">',\n\n        '<div class=\"psel-rec-header\">',\n          '<div>',\n            '<div class=\"psel-rec-series-tag\">' + escapeHTML(series) + ' Series<\/div>',\n            '<div class=\"psel-rec-model\">' + escapeHTML(p.model) + '<\/div>',\n          '<\/div>',\n          '<div class=\"psel-rec-badge\">Recommended<\/div>',\n        '<\/div>',\n\n        '<div class=\"psel-match-bar\">',\n          '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg>',\n          '<span class=\"psel-match-text\">Model matched to your operating parameters<\/span>',\n        '<\/div>',\n\n        '<div class=\"psel-specs\" role=\"table\" aria-label=\"Recommended model specifications\">',\n          '<div class=\"psel-spec-item\" role=\"row\">',\n            '<div class=\"psel-spec-label\">Flow Range<\/div>',\n            '<div class=\"psel-spec-value\">' + escapeHTML(p.specs.flow) + '<\/div>',\n          '<\/div>',\n          '<div class=\"psel-spec-item\" role=\"row\">',\n            '<div class=\"psel-spec-label\">Head Range<\/div>',\n            '<div class=\"psel-spec-value\">' + escapeHTML(p.specs.head) + '<\/div>',\n          '<\/div>',\n          '<div class=\"psel-spec-item\" role=\"row\">',\n            '<div class=\"psel-spec-label\">Max Solid Size<\/div>',\n            '<div class=\"psel-spec-value\">' + escapeHTML(p.specs.solid) + '<\/div>',\n          '<\/div>',\n          '<div class=\"psel-spec-item\" role=\"row\">',\n            '<div class=\"psel-spec-label\">Max Power<\/div>',\n            '<div class=\"psel-spec-value\">' + escapeHTML(p.specs.power) + '<\/div>',\n          '<\/div>',\n        '<\/div>',\n\n        '<div class=\"psel-logic\">',\n          '<div class=\"psel-logic-title\">Selection Logic<\/div>',\n          '<ul class=\"psel-logic-list\">' + reasonsHTML + '<\/ul>',\n        '<\/div>',\n\n        '<div class=\"psel-disclaimer\">',\n          '<strong>Preliminary recommendation only.<\/strong> This tool provides a first-pass model suggestion based on key parameters. Contact BBP engineers for detailed hydraulic sizing, material selection, drive configuration, and site-specific requirements.',\n        '<\/div>',\n\n        '<div class=\"psel-cta\">',\n          '<a href=\"#ct-popup-820\" class=\"psel-btn-cta\" role=\"button\" aria-label=\"Get detailed pump sizing from BBP engineers\">',\n            '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"\/><\/svg>',\n            'Get Detailed Sizing from BBP',\n          '<\/a>',\n        '<\/div>',\n\n      '<\/div>'\n    ].join('');\n\n    return html;\n  }\n\n  \/* ============================================================\n     UTILITIES\n     ============================================================ *\/\n  function escapeHTML(str) {\n    if (str === null || str === undefined) return '';\n    return String(str)\n      .replace(\/&\/g, '&amp;')\n      .replace(\/<\/g, '&lt;')\n      .replace(\/>\/g, '&gt;')\n      .replace(\/\"\/g, '&quot;');\n  }\n\n  function setFieldError(fieldEl, inputEl, show) {\n    if (show) {\n      fieldEl.classList.add('psel-invalid-field');\n      inputEl.classList.add('psel-invalid');\n      inputEl.setAttribute('aria-invalid', 'true');\n    } else {\n      fieldEl.classList.remove('psel-invalid-field');\n      inputEl.classList.remove('psel-invalid');\n      inputEl.setAttribute('aria-invalid', 'false');\n    }\n  }\n\n  function validateNumber(val, min, max) {\n    var n = parseFloat(val);\n    return !isNaN(n) && n >= min && n <= max;\n  }\n\n  \/* ============================================================\n     FORM LOGIC\n     ============================================================ *\/\n  var form = document.getElementById('psel-form');\n  var resultContainer = document.getElementById('psel-result');\n  var emptyState = document.getElementById('psel-empty');\n\n  var fields = {\n    flow: {\n      input: document.getElementById('psel-flow'),\n      field: document.getElementById('field-flow'),\n      min: 36, max: 25000, type: 'number'\n    },\n    head: {\n      input: document.getElementById('psel-head'),\n      field: document.getElementById('field-head'),\n      min: 7, max: 85, type: 'number'\n    },\n    particle: {\n      input: document.getElementById('psel-particle'),\n      field: document.getElementById('field-particle'),\n      min: 10, max: 1200, type: 'number'\n    },\n    application: {\n      input: document.getElementById('psel-application'),\n      field: document.getElementById('field-application'),\n      type: 'select'\n    },\n    installation: {\n      input: document.getElementById('psel-installation'),\n      field: document.getElementById('field-installation'),\n      type: 'select'\n    }\n  };\n\n  \/\/ Real-time validation on blur\n  Object.keys(fields).forEach(function (key) {\n    var f = fields[key];\n    f.input.addEventListener('blur', function () {\n      if (f.type === 'number') {\n        var invalid = f.input.value !== '' &#038;&#038; !validateNumber(f.input.value, f.min, f.max);\n        setFieldError(f.field, f.input, invalid);\n      }\n    });\n    f.input.addEventListener('input', function () {\n      if (f.field.classList.contains('psel-invalid-field')) {\n        if (f.type === 'number') {\n          var valid = validateNumber(f.input.value, f.min, f.max);\n          if (valid) setFieldError(f.field, f.input, false);\n        } else {\n          if (f.input.value) setFieldError(f.field, f.input, false);\n        }\n      }\n    });\n  });\n\n  form.addEventListener('submit', function (e) {\n    e.preventDefault();\n\n    var valid = true;\n\n    \/\/ Validate number fields\n    ['flow', 'head', 'particle'].forEach(function (key) {\n      var f = fields[key];\n      var ok = f.input.value !== '' &#038;&#038; validateNumber(f.input.value, f.min, f.max);\n      setFieldError(f.field, f.input, !ok);\n      if (!ok) valid = false;\n    });\n\n    \/\/ Validate selects\n    ['application', 'installation'].forEach(function (key) {\n      var f = fields[key];\n      var ok = !!f.input.value;\n      setFieldError(f.field, f.input, !ok);\n      if (!ok) valid = false;\n    });\n\n    if (!valid) {\n      \/\/ Scroll to first error\n      var firstError = form.querySelector('.psel-invalid-field .psel-input-has-unit, .psel-invalid-field select');\n      if (firstError) firstError.focus();\n      return;\n    }\n\n    var flow = parseFloat(fields.flow.input.value);\n    var head = parseFloat(fields.head.input.value);\n    var particle = parseFloat(fields.particle.input.value);\n    var application = fields.application.input.value;\n    var installation = fields.installation.input.value;\n\n    var result = selectPump(flow, head, particle, application);\n\n    \/\/ Show result\n    emptyState.style.display = 'none';\n    resultContainer.classList.add('psel-visible');\n    resultContainer.innerHTML = renderResult(result, { flow: flow, head: head, particle: particle, application: application, installation: installation });\n\n    \/\/ Scroll result into view on mobile\n    if (window.innerWidth <= 768) {\n      resultContainer.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n\n    \/\/ Intercept CTA click for popup handling\n    var ctaBtn = resultContainer.querySelector('.psel-btn-cta');\n    if (ctaBtn) {\n      ctaBtn.addEventListener('click', function (ev) {\n        \/\/ Attempt to trigger WordPress popup if available\n        var popupEl = document.getElementById('ct-popup-820');\n        if (popupEl) {\n          ev.preventDefault();\n          \/\/ Try common popup open methods\n          if (typeof window.jQuery !== 'undefined') {\n            var $ = window.jQuery;\n            if ($(popupEl).data('popup') || $(popupEl).hasClass('ct-popup')) {\n              $(popupEl).addClass('active').trigger('open');\n              return;\n            }\n          }\n          popupEl.style.display = 'flex';\n          popupEl.classList.add('active');\n        }\n        \/\/ Otherwise href=\"#ct-popup-820\" default behavior handles it\n      });\n    }\n  });\n\n})();\n<\/script>\n\n<\/body>\n<\/html>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>BBP Gravel Pump Selector BBP Engineering Tool Gravel Pump Model Selector Enter your operating parameters to receive a preliminary pump model recommendation from BBP&#8217;s AMG and AWN series. Operating Parameters Required Flow Rate 36 \u2013 25,000 m\u00b3\/h Enter a value between 36 and 25,000 m\u00b3\/h Total required volumetric flow rate Required Head 7 \u2013 85 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":879,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-1682","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/pages\/1682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/comments?post=1682"}],"version-history":[{"count":0,"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/pages\/1682\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/pages\/879"}],"wp:attachment":[{"href":"https:\/\/bbpmfg.com\/ar\/wp-json\/wp\/v2\/media?parent=1682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}