{"id":1431,"date":"2026-02-06T07:40:40","date_gmt":"2026-02-06T07:40:40","guid":{"rendered":"https:\/\/saiweiglass.com\/?page_id=1431"},"modified":"2026-02-06T07:56:08","modified_gmt":"2026-02-06T07:56:08","slug":"custom-glass-specification-builder","status":"publish","type":"page","link":"https:\/\/saiweiglass.com\/pt\/products\/af-glass\/custom-glass-specification-builder\/","title":{"rendered":"Construtor personalizado da especifica\u00e7\u00e3o de vidro"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-3dc4951\" data-block-id=\"3dc4951\"><div class=\"stk-row stk-inner-blocks has-text-align-center stk-block-content stk-content-align stk-3dc4951-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-55a403f\" data-v=\"4\" data-block-id=\"55a403f\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-55a403f-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-55a403f-inner-blocks\"><\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-20b33f6\" data-block-id=\"20b33f6\"><div class=\"stk-row stk-inner-blocks has-text-align-center stk-block-content stk-content-align stk-20b33f6-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-f8d231f\" data-v=\"4\" data-block-id=\"f8d231f\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-f8d231f-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-f8d231f-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<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-4747ec6\" data-block-id=\"4747ec6\"><div class=\"stk-row stk-inner-blocks has-text-align-center stk-block-content stk-content-align stk-4747ec6-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-997caed\" data-v=\"4\" data-block-id=\"997caed\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-997caed-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-997caed-inner-blocks\">\n<!-- Custom Glass Specification Builder v2 \u2014 With Pricing Estimation -->\n<!-- WordPress Custom HTML Module | Blocksy \/ Stackable \/ Astra \/ Elementor Compatible -->\n<section id=\"afg-spec-builder\">\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400&family=Newsreader:ital,opsz,wght@0,6..72,300;0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400&display=swap');\n\n#afg-spec-builder {\n  --sb-p: #304890;\n  --sb-p2: #1860A8;\n  --sb-p3: #1878C0;\n  --sb-bg: #F5F6FB;\n  --sb-w: #FFFFFF;\n  --sb-ink: #111827;\n  --sb-ink2: #3F455C;\n  --sb-ink3: #7C829B;\n  --sb-line: #DCDFE9;\n  --sb-line2: #EBEEF6;\n  --sb-r: 14px;\n  --sb-f: 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;\n  --sb-fs: 'Newsreader', Georgia, serif;\n  --sb-green: #0F7B5F;\n  --sb-green-bg: #E8F7F1;\n  --sb-af: #2B7CD4;\n  --sb-ag: #18855F;\n  --sb-ar: #C07B2A;\n  box-sizing: border-box !important;\n  font-family: var(--sb-f) !important;\n  color: var(--sb-ink) !important;\n  width: 100% !important;\n  padding: 48px 24px !important;\n  background: var(--sb-bg) !important;\n  position: relative !important;\n  line-height: 1.5 !important;\n  -webkit-font-smoothing: antialiased !important;\n}\n#afg-spec-builder *, #afg-spec-builder *::before, #afg-spec-builder *::after {\n  box-sizing: border-box !important;\n}\n#afg-spec-builder .sb-inner {\n  max-width: 1240px;\n  margin: 0 auto;\n}\n\n\/* ===== HEADER ===== *\/\n#afg-spec-builder .sb-head {\n  text-align: center;\n  margin-bottom: 36px;\n}\n#afg-spec-builder .sb-kicker {\n  display: inline-block;\n  font-family: var(--sb-f) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 2.5px !important;\n  text-transform: uppercase !important;\n  color: var(--sb-p3) !important;\n  background: rgba(24,120,192,0.08);\n  padding: 6px 18px !important;\n  border-radius: 24px;\n  margin: 0 0 16px 0 !important;\n}\n#afg-spec-builder .sb-h1 {\n  font-family: var(--sb-fs) !important;\n  font-size: 32px !important;\n  font-weight: 400 !important;\n  color: var(--sb-ink) !important;\n  line-height: 1.2 !important;\n  margin: 0 0 12px 0 !important;\n}\n#afg-spec-builder .sb-h1 em { font-style: italic; color: var(--sb-p2); }\n#afg-spec-builder .sb-desc {\n  font-family: var(--sb-f) !important;\n  font-size: 15px !important;\n  color: var(--sb-ink2) !important;\n  line-height: 1.65 !important;\n  max-width: 600px;\n  margin: 0 auto !important;\n}\n\n\/* ===== LAYOUT ===== *\/\n#afg-spec-builder .sb-layout {\n  display: grid;\n  grid-template-columns: 1fr 400px;\n  gap: 24px;\n  align-items: start;\n}\n\n\/* ===== CONFIG PANEL ===== *\/\n#afg-spec-builder .sb-config {\n  background: var(--sb-w);\n  border-radius: var(--sb-r);\n  border: 1px solid var(--sb-line);\n  padding: 28px;\n}\n#afg-spec-builder .sb-sec { margin-bottom: 24px; }\n#afg-spec-builder .sb-sec:last-child { margin-bottom: 0; }\n#afg-spec-builder .sb-sec-title {\n  font-family: var(--sb-f) !important;\n  font-size: 13.5px !important;\n  font-weight: 700 !important;\n  color: var(--sb-ink) !important;\n  margin: 0 0 14px 0 !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n}\n#afg-spec-builder .sb-sec-num {\n  width: 24px; height: 24px;\n  border-radius: 7px;\n  background: var(--sb-p);\n  color: #fff !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-family: var(--sb-f) !important;\n  flex-shrink: 0;\n}\n#afg-spec-builder .sb-divider {\n  height: 1px;\n  background: var(--sb-line2);\n  margin: 22px 0;\n}\n\n\/* Form fields *\/\n#afg-spec-builder .sb-row {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 12px;\n  margin-bottom: 12px;\n}\n#afg-spec-builder .sb-lbl {\n  font-family: var(--sb-f) !important;\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: var(--sb-ink3) !important;\n  margin: 0 0 6px 0 !important;\n  display: block !important;\n}\n#afg-spec-builder .sb-sel-wrap { position: relative; }\n#afg-spec-builder .sb-sel-wrap::after {\n  content: '\u25be';\n  position: absolute;\n  right: 12px;\n  top: 50%;\n  transform: translateY(-50%);\n  font-size: 12px;\n  color: var(--sb-ink3);\n  pointer-events: none;\n}\n#afg-spec-builder select {\n  width: 100% !important;\n  height: 42px !important;\n  padding: 0 32px 0 12px !important;\n  font-family: var(--sb-f) !important;\n  font-size: 13px !important;\n  font-weight: 500 !important;\n  color: var(--sb-ink) !important;\n  background: var(--sb-bg) !important;\n  border: 1.5px solid var(--sb-line) !important;\n  border-radius: 8px !important;\n  appearance: none !important;\n  -webkit-appearance: none !important;\n  cursor: pointer !important;\n  transition: border-color 0.2s ease !important;\n  line-height: 42px !important;\n}\n#afg-spec-builder select:focus {\n  outline: none !important;\n  border-color: var(--sb-p3) !important;\n  box-shadow: 0 0 0 3px rgba(48,72,144,0.08) !important;\n}\n#afg-spec-builder select option {\n  color: var(--sb-ink) !important;\n  background: var(--sb-w) !important;\n  font-family: var(--sb-f) !important;\n}\n#afg-spec-builder input[type=\"number\"] {\n  width: 100% !important;\n  height: 42px !important;\n  padding: 0 12px !important;\n  font-family: var(--sb-f) !important;\n  font-size: 13px !important;\n  font-weight: 500 !important;\n  color: var(--sb-ink) !important;\n  background: var(--sb-bg) !important;\n  border: 1.5px solid var(--sb-line) !important;\n  border-radius: 8px !important;\n  transition: border-color 0.2s ease !important;\n  line-height: normal !important;\n  margin: 0 !important;\n}\n#afg-spec-builder input:focus {\n  outline: none !important;\n  border-color: var(--sb-p3) !important;\n  box-shadow: 0 0 0 3px rgba(48,72,144,0.08) !important;\n}\n#afg-spec-builder input::placeholder {\n  color: #A8AEBF !important;\n  font-weight: 400 !important;\n}\n#afg-spec-builder .sb-input-unit {\n  display: flex;\n  align-items: center;\n}\n#afg-spec-builder .sb-input-unit input {\n  border-radius: 8px 0 0 8px !important;\n  border-right: none !important;\n}\n#afg-spec-builder .sb-unit {\n  height: 42px;\n  padding: 0 12px;\n  background: var(--sb-line2);\n  border: 1.5px solid var(--sb-line);\n  border-left: none;\n  border-radius: 0 8px 8px 0;\n  font-family: var(--sb-f) !important;\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: var(--sb-ink3) !important;\n  display: flex;\n  align-items: center;\n  white-space: nowrap;\n}\n\n\/* Toggle chips *\/\n#afg-spec-builder .sb-chips {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n}\n#afg-spec-builder .sb-chip {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  padding: 8px 14px;\n  border: 1.5px solid var(--sb-line);\n  border-radius: 8px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  font-family: var(--sb-f) !important;\n  font-size: 12.5px !important;\n  font-weight: 500 !important;\n  color: var(--sb-ink3) !important;\n  background: transparent !important;\n  user-select: none;\n  outline: none !important;\n}\n#afg-spec-builder .sb-chip:hover { border-color: var(--sb-p3); }\n#afg-spec-builder .sb-chip.active {\n  border-color: var(--sb-p);\n  background: rgba(48,72,144,0.05) !important;\n  color: var(--sb-p) !important;\n  font-weight: 600 !important;\n}\n#afg-spec-builder .sb-chip .sb-ck {\n  width: 16px; height: 16px;\n  border-radius: 4px;\n  border: 2px solid var(--sb-line);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 10px;\n  transition: all 0.2s ease;\n  flex-shrink: 0;\n}\n#afg-spec-builder .sb-chip.active .sb-ck {\n  background: var(--sb-p);\n  border-color: var(--sb-p);\n  color: #fff;\n}\n\n\/* Shape grid *\/\n#afg-spec-builder .sb-shapes {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 8px;\n}\n#afg-spec-builder .sb-shape {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 6px;\n  padding: 12px 8px;\n  border: 1.5px solid var(--sb-line);\n  border-radius: 8px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  background: transparent;\n  font-family: var(--sb-f) !important;\n  outline: none !important;\n}\n#afg-spec-builder .sb-shape:hover { border-color: var(--sb-p3); }\n#afg-spec-builder .sb-shape.active {\n  border-color: var(--sb-p);\n  background: rgba(48,72,144,0.04);\n}\n#afg-spec-builder .sb-shape svg { width: 36px; height: 36px; }\n#afg-spec-builder .sb-shape-lbl {\n  font-size: 11px !important;\n  font-weight: 500 !important;\n  color: var(--sb-ink3) !important;\n}\n#afg-spec-builder .sb-shape.active .sb-shape-lbl {\n  color: var(--sb-p) !important;\n  font-weight: 600 !important;\n}\n\n\/* ===== PREVIEW PANEL ===== *\/\n#afg-spec-builder .sb-preview {\n  position: sticky;\n  top: 24px;\n}\n#afg-spec-builder .sb-pv-card {\n  background: var(--sb-w);\n  border-radius: var(--sb-r);\n  border: 1px solid var(--sb-line);\n  overflow: hidden;\n}\n#afg-spec-builder .sb-pv-top {\n  background: linear-gradient(135deg, #141C38, #2A3C78, #304890);\n  padding: 24px;\n  color: #fff;\n}\n#afg-spec-builder .sb-pv-kicker {\n  font-family: var(--sb-f) !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  letter-spacing: 2px !important;\n  text-transform: uppercase !important;\n  color: rgba(255,255,255,0.5) !important;\n  margin: 0 0 8px 0 !important;\n  display: block !important;\n}\n#afg-spec-builder .sb-pv-name {\n  font-family: var(--sb-fs) !important;\n  font-size: 20px !important;\n  font-weight: 400 !important;\n  color: #fff !important;\n  margin: 0 0 4px 0 !important;\n}\n#afg-spec-builder .sb-pv-type {\n  font-family: var(--sb-f) !important;\n  font-size: 12.5px !important;\n  color: rgba(255,255,255,0.6) !important;\n  margin: 0 !important;\n}\n\n\/* Spec rows *\/\n#afg-spec-builder .sb-pv-body { padding: 18px 24px; }\n#afg-spec-builder .sb-pv-row {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 10px 0;\n  border-bottom: 1px solid var(--sb-line2);\n  font-family: var(--sb-f) !important;\n}\n#afg-spec-builder .sb-pv-row:last-child { border-bottom: none; }\n#afg-spec-builder .sb-pv-k {\n  font-size: 12.5px !important;\n  color: var(--sb-ink3) !important;\n  font-weight: 400 !important;\n}\n#afg-spec-builder .sb-pv-v {\n  font-size: 13px !important;\n  color: var(--sb-ink) !important;\n  font-weight: 600 !important;\n  text-align: right !important;\n}\n#afg-spec-builder .sb-pv-coats {\n  display: flex;\n  gap: 4px;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n}\n#afg-spec-builder .sb-ctag {\n  font-family: var(--sb-f) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  padding: 3px 8px !important;\n  border-radius: 4px !important;\n}\n#afg-spec-builder .sb-ctag-af { background: rgba(43,124,212,0.1); color: var(--sb-af); }\n#afg-spec-builder .sb-ctag-ag { background: rgba(24,133,95,0.1); color: var(--sb-ag); }\n#afg-spec-builder .sb-ctag-ar { background: rgba(192,123,42,0.1); color: var(--sb-ar); }\n\n\/* ===== PRICE ESTIMATION SECTION ===== *\/\n#afg-spec-builder .sb-price-section {\n  border-top: 2px solid var(--sb-line2);\n  margin: 0;\n}\n#afg-spec-builder .sb-price-head {\n  padding: 18px 24px 0;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n#afg-spec-builder .sb-price-label {\n  font-family: var(--sb-f) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 1.5px !important;\n  text-transform: uppercase !important;\n  color: var(--sb-ink3) !important;\n  margin: 0 !important;\n  display: block !important;\n}\n#afg-spec-builder .sb-price-badge {\n  font-family: var(--sb-f) !important;\n  font-size: 9px !important;\n  font-weight: 700 !important;\n  letter-spacing: 1px !important;\n  text-transform: uppercase !important;\n  color: var(--sb-green) !important;\n  background: var(--sb-green-bg) !important;\n  padding: 3px 8px !important;\n  border-radius: 4px !important;\n}\n#afg-spec-builder .sb-price-main {\n  padding: 14px 24px 4px;\n}\n#afg-spec-builder .sb-price-range {\n  font-family: var(--sb-fs) !important;\n  font-size: 28px !important;\n  font-weight: 500 !important;\n  color: var(--sb-ink) !important;\n  line-height: 1.15 !important;\n  margin: 0 0 2px 0 !important;\n}\n#afg-spec-builder .sb-price-range .sb-price-cur {\n  font-family: var(--sb-f) !important;\n  font-size: 16px !important;\n  font-weight: 700 !important;\n  color: var(--sb-ink2) !important;\n  vertical-align: top;\n  position: relative;\n  top: 3px;\n  margin-right: 1px;\n}\n#afg-spec-builder .sb-price-range .sb-price-sep {\n  font-family: var(--sb-f) !important;\n  font-size: 16px !important;\n  color: var(--sb-ink3) !important;\n  margin: 0 4px;\n}\n#afg-spec-builder .sb-price-per {\n  font-family: var(--sb-f) !important;\n  font-size: 12px !important;\n  color: var(--sb-ink3) !important;\n  margin: 0 0 14px 0 !important;\n  display: block !important;\n}\n\n\/* Price breakdown *\/\n#afg-spec-builder .sb-price-breakdown {\n  padding: 0 24px 16px;\n}\n#afg-spec-builder .sb-pb-toggle {\n  font-family: var(--sb-f) !important;\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: var(--sb-p3) !important;\n  background: none !important;\n  border: none !important;\n  cursor: pointer !important;\n  padding: 0 !important;\n  display: flex;\n  align-items: center;\n  gap: 4px;\n  outline: none !important;\n}\n#afg-spec-builder .sb-pb-toggle:hover { color: var(--sb-p2) !important; }\n#afg-spec-builder .sb-pb-arrow {\n  display: inline-block;\n  transition: transform 0.2s ease;\n  font-size: 10px;\n}\n#afg-spec-builder .sb-pb-toggle.open .sb-pb-arrow { transform: rotate(90deg); }\n#afg-spec-builder .sb-pb-details {\n  display: none;\n  margin-top: 10px;\n  padding: 12px 14px;\n  background: var(--sb-bg);\n  border-radius: 8px;\n}\n#afg-spec-builder .sb-pb-details.open { display: block; }\n#afg-spec-builder .sb-pb-row {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 5px 0;\n  font-family: var(--sb-f) !important;\n  font-size: 12px !important;\n}\n#afg-spec-builder .sb-pb-k { color: var(--sb-ink3) !important; }\n#afg-spec-builder .sb-pb-v { color: var(--sb-ink) !important; font-weight: 600 !important; }\n#afg-spec-builder .sb-pb-divider {\n  height: 1px;\n  background: var(--sb-line);\n  margin: 6px 0;\n}\n#afg-spec-builder .sb-pb-total .sb-pb-k,\n#afg-spec-builder .sb-pb-total .sb-pb-v {\n  font-weight: 700 !important;\n  color: var(--sb-ink) !important;\n  font-size: 13px !important;\n}\n\n\/* Price disclaimer *\/\n#afg-spec-builder .sb-price-note {\n  padding: 0 24px 16px;\n}\n#afg-spec-builder .sb-price-note-inner {\n  font-family: var(--sb-f) !important;\n  font-size: 11px !important;\n  color: var(--sb-ink3) !important;\n  line-height: 1.6 !important;\n  background: #FFF8EE;\n  border: 1px solid #F0DFC0;\n  border-radius: 8px;\n  padding: 10px 12px;\n  margin: 0 !important;\n}\n#afg-spec-builder .sb-price-note-inner strong {\n  color: #A06B1B !important;\n}\n\n\/* ===== CTA ===== *\/\n#afg-spec-builder .sb-pv-cta {\n  padding: 0 24px 24px;\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n}\n#afg-spec-builder .sb-btn {\n  width: 100%;\n  height: 46px;\n  border: none;\n  border-radius: 10px;\n  font-family: var(--sb-f) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  outline: none !important;\n  text-decoration: none !important;\n}\n#afg-spec-builder .sb-btn-primary {\n  background: linear-gradient(135deg, #304890, #1860A8) !important;\n  color: #fff !important;\n  box-shadow: 0 2px 8px rgba(48,72,144,0.25);\n}\n#afg-spec-builder .sb-btn-primary:hover {\n  box-shadow: 0 6px 20px rgba(48,72,144,0.35) !important;\n  transform: translateY(-1px);\n}\n#afg-spec-builder .sb-btn-secondary {\n  background: transparent !important;\n  color: var(--sb-p3) !important;\n  border: 1.5px solid var(--sb-line) !important;\n}\n#afg-spec-builder .sb-btn-secondary:hover {\n  border-color: var(--sb-p3) !important;\n  background: rgba(24,120,192,0.03) !important;\n}\n\n\/* Info note *\/\n#afg-spec-builder .sb-info {\n  margin-top: 14px;\n  padding: 14px 16px;\n  background: rgba(48,72,144,0.03);\n  border-radius: 10px;\n  border-left: 3px solid var(--sb-p);\n  font-family: var(--sb-f) !important;\n  font-size: 12px !important;\n  color: var(--sb-ink2) !important;\n  line-height: 1.65 !important;\n}\n\n\/* ===== RESPONSIVE ===== *\/\n@media (max-width: 900px) {\n  #afg-spec-builder .sb-layout { grid-template-columns: 1fr; }\n  #afg-spec-builder .sb-preview { position: static; }\n}\n@media (max-width: 600px) {\n  #afg-spec-builder { padding: 32px 16px !important; }\n  #afg-spec-builder .sb-h1 { font-size: 26px !important; }\n  #afg-spec-builder .sb-config { padding: 20px 16px; }\n  #afg-spec-builder .sb-row { grid-template-columns: 1fr; }\n  #afg-spec-builder .sb-shapes { grid-template-columns: repeat(2, 1fr); }\n  #afg-spec-builder .sb-price-range { font-size: 24px !important; }\n}\n<\/style>\n\n<div class=\"sb-inner\">\n  <div class=\"sb-head\">\n    <span class=\"sb-kicker\">Product Configuration<\/span>\n    <div class=\"sb-h1\">Custom Glass Specification Builder<\/div>\n    <div class=\"sb-desc\">Configure your cover glass step by step. Get instant estimated pricing and generate a detailed specification sheet for your RFQ.<\/div>\n  <\/div>\n\n  <div class=\"sb-layout\">\n    <!-- ===== CONFIG ===== -->\n    <div class=\"sb-config\">\n      <!-- 1: Glass Substrate -->\n      <div class=\"sb-sec\">\n        <div class=\"sb-sec-title\"><span class=\"sb-sec-num\">1<\/span> Glass Substrate<\/div>\n        <div class=\"sb-row\">\n          <div>\n            <span class=\"sb-lbl\">Glass Type<\/span>\n            <div class=\"sb-sel-wrap\">\n              <select id=\"sbGlass\">\n                <option value=\"soda-lime\">Soda-Lime Glass<\/option>\n                <option value=\"chemically-strengthened\" selected>Chemically Strengthened Glass<\/option>\n                <option value=\"gorilla\">Corning\u00ae Gorilla\u00ae Glass<\/option>\n                <option value=\"dragontrail\">AGC Dragontrail\u2122<\/option>\n                <option value=\"schott\">SCHOTT Xensation\u00ae<\/option>\n                <option value=\"borosilicate\">Borosilicate Glass<\/option>\n                <option value=\"sapphire\">Sapphire Glass<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n          <div>\n            <span class=\"sb-lbl\">Thickness<\/span>\n            <div class=\"sb-sel-wrap\">\n              <select id=\"sbThick\">\n                <option value=\"0.33\">0.33 mm<\/option>\n                <option value=\"0.55\">0.55 mm<\/option>\n                <option value=\"0.7\" selected>0.7 mm<\/option>\n                <option value=\"1.0\">1.0 mm<\/option>\n                <option value=\"1.1\">1.1 mm<\/option>\n                <option value=\"1.5\">1.5 mm<\/option>\n                <option value=\"2.0\">2.0 mm<\/option>\n                <option value=\"3.0\">3.0 mm<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"sb-divider\"><\/div>\n\n      <!-- 2: Dimensions & Shape -->\n      <div class=\"sb-sec\">\n        <div class=\"sb-sec-title\"><span class=\"sb-sec-num\">2<\/span> Dimensions &amp; Shape<\/div>\n        <div class=\"sb-row\">\n          <div>\n            <span class=\"sb-lbl\">Width<\/span>\n            <div class=\"sb-input-unit\">\n              <input type=\"number\" id=\"sbW\" placeholder=\"120\" min=\"5\" max=\"2000\" value=\"120\">\n              <span class=\"sb-unit\">mm<\/span>\n            <\/div>\n          <\/div>\n          <div>\n            <span class=\"sb-lbl\">Height<\/span>\n            <div class=\"sb-input-unit\">\n              <input type=\"number\" id=\"sbH\" placeholder=\"80\" min=\"5\" max=\"2000\" value=\"80\">\n              <span class=\"sb-unit\">mm<\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n        <span class=\"sb-lbl\" style=\"margin-top:10px;\">Shape<\/span>\n        <div class=\"sb-shapes\">\n          <button class=\"sb-shape active\" data-shape=\"rectangle\" type=\"button\">\n            <svg viewBox=\"0 0 36 36\" fill=\"none\"><rect x=\"4\" y=\"8\" width=\"28\" height=\"20\" rx=\"1\" stroke=\"#304890\" stroke-width=\"2\"\/><\/svg>\n            <span class=\"sb-shape-lbl\">Rectangle<\/span>\n          <\/button>\n          <button class=\"sb-shape\" data-shape=\"rounded\" type=\"button\">\n            <svg viewBox=\"0 0 36 36\" fill=\"none\"><rect x=\"4\" y=\"8\" width=\"28\" height=\"20\" rx=\"5\" stroke=\"#304890\" stroke-width=\"2\"\/><\/svg>\n            <span class=\"sb-shape-lbl\">Rounded<\/span>\n          <\/button>\n          <button class=\"sb-shape\" data-shape=\"circle\" type=\"button\">\n            <svg viewBox=\"0 0 36 36\" fill=\"none\"><circle cx=\"18\" cy=\"18\" r=\"14\" stroke=\"#304890\" stroke-width=\"2\"\/><\/svg>\n            <span class=\"sb-shape-lbl\">Circle<\/span>\n          <\/button>\n          <button class=\"sb-shape\" data-shape=\"custom\" type=\"button\">\n            <svg viewBox=\"0 0 36 36\" fill=\"none\"><path d=\"M6 28L4 12L18 4L32 12L30 28Z\" stroke=\"#304890\" stroke-width=\"2\" stroke-linejoin=\"round\"\/><\/svg>\n            <span class=\"sb-shape-lbl\">Custom<\/span>\n          <\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"sb-divider\"><\/div>\n\n      <!-- 3: Surface Treatment -->\n      <div class=\"sb-sec\">\n        <div class=\"sb-sec-title\"><span class=\"sb-sec-num\">3<\/span> Surface Treatment<\/div>\n        <span class=\"sb-lbl\">Coatings (select all that apply)<\/span>\n        <div class=\"sb-chips\" id=\"sbCoatings\">\n          <button class=\"sb-chip active\" data-coat=\"af\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>AF (Anti-Fingerprint)<\/button>\n          <button class=\"sb-chip\" data-coat=\"ag\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>AG (Anti-Glare)<\/button>\n          <button class=\"sb-chip\" data-coat=\"ar\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>AR (Anti-Reflective)<\/button>\n        <\/div>\n        <div style=\"margin-top:12px;\">\n          <span class=\"sb-lbl\">Additional Processing<\/span>\n          <div class=\"sb-chips\" id=\"sbProcess\">\n            <button class=\"sb-chip\" data-proc=\"tempered\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>Tempered<\/button>\n            <button class=\"sb-chip\" data-proc=\"silk-screen\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>Silk-Screen Print<\/button>\n            <button class=\"sb-chip\" data-proc=\"etching\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>Logo Etching<\/button>\n            <button class=\"sb-chip\" data-proc=\"edge\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>Edge Polishing<\/button>\n            <button class=\"sb-chip\" data-proc=\"holes\" type=\"button\"><span class=\"sb-ck\">\u2713<\/span>Drill Holes<\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"sb-divider\"><\/div>\n\n      <!-- 4: Application & Order -->\n      <div class=\"sb-sec\">\n        <div class=\"sb-sec-title\"><span class=\"sb-sec-num\">4<\/span> Application &amp; Order<\/div>\n        <div class=\"sb-row\">\n          <div>\n            <span class=\"sb-lbl\">Application<\/span>\n            <div class=\"sb-sel-wrap\">\n              <select id=\"sbApp\">\n                <option value=\"Smartphone \/ Tablet\">Smartphone \/ Tablet<\/option>\n                <option value=\"Industrial HMI Panel\">Industrial HMI Panel<\/option>\n                <option value=\"Medical Display\">Medical Display<\/option>\n                <option value=\"Automotive Dashboard\">Automotive Dashboard<\/option>\n                <option value=\"Smart Home Panel\">Smart Home Panel<\/option>\n                <option value=\"ATM \/ Kiosk\">ATM \/ Kiosk<\/option>\n                <option value=\"Wearable Device\">Wearable Device<\/option>\n                <option value=\"Other \/ Custom\">Other \/ Custom<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n          <div>\n            <span class=\"sb-lbl\">Estimated Quantity<\/span>\n            <div class=\"sb-sel-wrap\">\n              <select id=\"sbQty\">\n                <option value=\"proto\">&lt; 100 pcs (Prototype)<\/option>\n                <option value=\"100-1k\" selected>100 \u2013 1,000 pcs<\/option>\n                <option value=\"1k-10k\">1,000 \u2013 10,000 pcs<\/option>\n                <option value=\"10k-50k\">10,000 \u2013 50,000 pcs<\/option>\n                <option value=\"50k+\">50,000+ pcs<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- ===== PREVIEW ===== -->\n    <div class=\"sb-preview\">\n      <div class=\"sb-pv-card\">\n        <!-- Top -->\n        <div class=\"sb-pv-top\">\n          <span class=\"sb-pv-kicker\">Your Configuration<\/span>\n          <div class=\"sb-pv-name\" id=\"pvName\">Chemically Strengthened Glass<\/div>\n          <div class=\"sb-pv-type\" id=\"pvType\">Chemically Strengthened \u2022 0.7 mm<\/div>\n        <\/div>\n\n        <!-- Spec rows -->\n        <div class=\"sb-pv-body\">\n          <div class=\"sb-pv-row\"><span class=\"sb-pv-k\">Dimensions<\/span><span class=\"sb-pv-v\" id=\"pvDim\">120 \u00d7 80 mm<\/span><\/div>\n          <div class=\"sb-pv-row\"><span class=\"sb-pv-k\">Shape<\/span><span class=\"sb-pv-v\" id=\"pvShape\">Rectangle<\/span><\/div>\n          <div class=\"sb-pv-row\"><span class=\"sb-pv-k\">Surface Coatings<\/span><span class=\"sb-pv-v\"><div class=\"sb-pv-coats\" id=\"pvCoat\"><span class=\"sb-ctag sb-ctag-af\">AF<\/span><\/div><\/span><\/div>\n          <div class=\"sb-pv-row\"><span class=\"sb-pv-k\">Processing<\/span><span class=\"sb-pv-v\" id=\"pvProc\">\u2014<\/span><\/div>\n          <div class=\"sb-pv-row\"><span class=\"sb-pv-k\">Application<\/span><span class=\"sb-pv-v\" id=\"pvApp\">Smartphone \/ Tablet<\/span><\/div>\n          <div class=\"sb-pv-row\"><span class=\"sb-pv-k\">Quantity<\/span><span class=\"sb-pv-v\" id=\"pvQty\">100 \u2013 1,000 pcs<\/span><\/div>\n          <div class=\"sb-pv-row\"><span class=\"sb-pv-k\">Est. Lead Time<\/span><span class=\"sb-pv-v\" id=\"pvLead\">9\u201314 working days<\/span><\/div>\n        <\/div>\n\n        <!-- PRICE ESTIMATION -->\n        <div class=\"sb-price-section\">\n          <div class=\"sb-price-head\">\n            <span class=\"sb-price-label\">Estimated Unit Price<\/span>\n            <span class=\"sb-price-badge\">Reference Only<\/span>\n          <\/div>\n          <div class=\"sb-price-main\">\n            <div class=\"sb-price-range\" id=\"pvPrice\">\n              <span class=\"sb-price-cur\">$<\/span>1.65<span class=\"sb-price-sep\">\u2013<\/span><span class=\"sb-price-cur\">$<\/span>2.80\n            <\/div>\n            <span class=\"sb-price-per\" id=\"pvPricePer\">per piece at 100 \u2013 1,000 pcs<\/span>\n          <\/div>\n\n          <!-- Breakdown toggle -->\n          <div class=\"sb-price-breakdown\">\n            <button class=\"sb-pb-toggle\" type=\"button\" id=\"pbToggle\"><span class=\"sb-pb-arrow\">\u25b6<\/span> View price breakdown<\/button>\n            <div class=\"sb-pb-details\" id=\"pbDetails\">\n              <div class=\"sb-pb-row\"><span class=\"sb-pb-k\">Glass substrate<\/span><span class=\"sb-pb-v\" id=\"pbGlass\">$1.20 \u2013 $2.00<\/span><\/div>\n              <div class=\"sb-pb-row\"><span class=\"sb-pb-k\">Surface coatings<\/span><span class=\"sb-pb-v\" id=\"pbCoat\">$0.30 \u2013 $0.50<\/span><\/div>\n              <div class=\"sb-pb-row\"><span class=\"sb-pb-k\">Processing<\/span><span class=\"sb-pb-v\" id=\"pbProc\">$0.00<\/span><\/div>\n              <div class=\"sb-pb-row\"><span class=\"sb-pb-k\">Size adjustment<\/span><span class=\"sb-pb-v\" id=\"pbSize\">\u00d71.00<\/span><\/div>\n              <div class=\"sb-pb-row\"><span class=\"sb-pb-k\">Volume discount<\/span><span class=\"sb-pb-v\" id=\"pbVol\">\u2014<\/span><\/div>\n              <div class=\"sb-pb-divider\"><\/div>\n              <div class=\"sb-pb-row sb-pb-total\"><span class=\"sb-pb-k\">Estimated total<\/span><span class=\"sb-pb-v\" id=\"pbTotal\">$1.65 \u2013 $2.80<\/span><\/div>\n            <\/div>\n          <\/div>\n\n          <!-- Price note -->\n          <div class=\"sb-price-note\">\n            <div class=\"sb-price-note-inner\"><strong>\u26a0 Reference pricing only.<\/strong> Final unit price depends on exact specifications, substrate brand, coating process, and order volume. Request a quote for confirmed pricing from our engineering team.<\/div>\n          <\/div>\n        <\/div>\n\n        <!-- CTA -->\n        <div class=\"sb-pv-cta\">\n          <a class=\"sb-btn sb-btn-primary\" href=\"#ct-popup-787\" id=\"sbQuote\">\ud83d\udce9 Request Exact Quote<\/a>\n          <button class=\"sb-btn sb-btn-secondary\" type=\"button\" id=\"sbCopy\">\ud83d\udccb Copy Spec Sheet<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"sb-info\">\n        <strong>How pricing works:<\/strong> Estimates are calculated from published industry data and typical B2B manufacturing costs for cover glass. Actual pricing from AF Glass may be lower due to in-house coating and direct factory pricing.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  'use strict';\n  var R = document.getElementById('afg-spec-builder');\n  if (!R) return;\n\n  \/* ===== PRICING DATA MODEL =====\n     Based on typical B2B cover glass manufacturing costs.\n     Prices in USD per piece at 100-1K qty, ~120\u00d780mm reference size.\n     Sources: industry surveys, Alibaba\/Global Sources published ranges,\n     Shenzhen\/Dongguan factory quotations 2024\u20132025.\n  *\/\n  var GLASS_PRICE = {\n    'soda-lime':                { lo: 0.40, hi: 0.70,  name: 'Soda-Lime Glass' },\n    'chemically-strengthened':  { lo: 1.20, hi: 2.00,  name: 'Chemically Strengthened Glass' },\n    'gorilla':                  { lo: 2.80, hi: 4.50,  name: 'Corning\u00ae Gorilla\u00ae Glass' },\n    'dragontrail':              { lo: 2.50, hi: 4.00,  name: 'AGC Dragontrail\u2122' },\n    'schott':                   { lo: 3.00, hi: 5.00,  name: 'SCHOTT Xensation\u00ae' },\n    'borosilicate':             { lo: 1.50, hi: 2.50,  name: 'Borosilicate Glass' },\n    'sapphire':                 { lo: 10.00, hi: 22.00, name: 'Sapphire Glass' }\n  };\n\n  var THICK_MULT = {\n    '0.33': 0.88, '0.55': 0.94, '0.7': 1.00, '1.0': 1.10,\n    '1.1': 1.15, '1.5': 1.30, '2.0': 1.52, '3.0': 1.85\n  };\n\n  var SHAPE_MULT = {\n    'rectangle': 1.00, 'rounded': 1.10, 'circle': 1.15, 'custom': 1.30\n  };\n\n  \/\/ Coating add-on per piece (USD)\n  var COAT_PRICE = {\n    'af': { lo: 0.25, hi: 0.50 },\n    'ag': { lo: 0.35, hi: 0.70 },\n    'ar': { lo: 0.80, hi: 1.50 }\n  };\n\n  \/\/ Processing add-on per piece (USD)\n  var PROC_PRICE = {\n    'tempered':     { lo: 0.25, hi: 0.45 },\n    'silk-screen':  { lo: 0.35, hi: 0.70 },\n    'etching':      { lo: 0.30, hi: 0.60 },\n    'edge':         { lo: 0.18, hi: 0.35 },\n    'holes':        { lo: 0.20, hi: 0.40 }\n  };\n\n  \/\/ Volume multipliers (relative to 100-1K base)\n  var VOL_MULT = {\n    'proto':   { mult: 2.50, label: '< 100 pcs (Prototype)',  display: '< 100 pcs' },\n    '100-1k':  { mult: 1.00, label: '100 \u2013 1,000 pcs',       display: '100 \u2013 1,000 pcs' },\n    '1k-10k':  { mult: 0.72, label: '1,000 \u2013 10,000 pcs',    display: '1K \u2013 10K pcs' },\n    '10k-50k': { mult: 0.55, label: '10,000 \u2013 50,000 pcs',   display: '10K \u2013 50K pcs' },\n    '50k+':    { mult: 0.42, label: '50,000+ pcs',            display: '50K+ pcs' }\n  };\n\n  \/\/ Reference area (120 \u00d7 80mm = 9600 mm\u00b2)\n  var REF_AREA = 9600;\n\n  function $(id) { return R.querySelector(id); }\n  function $$(sel) { return R.querySelectorAll(sel); }\n\n  \/* ===== PRICE CALCULATION ===== *\/\n  function calcPrice() {\n    var glass = $('#sbGlass').value;\n    var thick = $('#sbThick').value;\n    var w = parseFloat($('#sbW').value) || 120;\n    var h = parseFloat($('#sbH').value) || 80;\n    var shape = (R.querySelector('.sb-shape.active') || {}).getAttribute('data-shape') || 'rectangle';\n    var qty = $('#sbQty').value;\n\n    \/\/ 1) Glass base\n    var gp = GLASS_PRICE[glass] || GLASS_PRICE['chemically-strengthened'];\n    var baseLo = gp.lo;\n    var baseHi = gp.hi;\n\n    \/\/ 2) Thickness multiplier\n    var tm = THICK_MULT[thick] || 1.0;\n    baseLo *= tm;\n    baseHi *= tm;\n\n    \/\/ 3) Size adjustment (area ratio)\n    var area = w * h;\n    var sizeRatio = Math.max(area \/ REF_AREA, 0.5); \/\/ min 0.5x for very small pieces\n    \/\/ For very large pieces, cost scales sub-linearly\n    var sizeMult = sizeRatio <= 1 ? Math.max(sizeRatio, 0.5) : (1 + (sizeRatio - 1) * 0.7);\n    baseLo *= sizeMult;\n    baseHi *= sizeMult;\n\n    \/\/ 4) Shape multiplier\n    var sm = SHAPE_MULT[shape] || 1.0;\n    baseLo *= sm;\n    baseHi *= sm;\n\n    var glassLo = baseLo, glassHi = baseHi;\n\n    \/\/ 5) Coatings\n    var coatLo = 0, coatHi = 0;\n    $$('#sbCoatings .sb-chip.active').forEach(function(c) {\n      var coat = c.getAttribute('data-coat');\n      if (COAT_PRICE[coat]) {\n        coatLo += COAT_PRICE[coat].lo;\n        coatHi += COAT_PRICE[coat].hi;\n      }\n    });\n\n    \/\/ 6) Processing\n    var procLo = 0, procHi = 0;\n    $$('#sbProcess .sb-chip.active').forEach(function(p) {\n      var proc = p.getAttribute('data-proc');\n      if (PROC_PRICE[proc]) {\n        procLo += PROC_PRICE[proc].lo;\n        procHi += PROC_PRICE[proc].hi;\n      }\n    });\n\n    \/\/ Sub-total before volume\n    var subLo = glassLo + coatLo + procLo;\n    var subHi = glassHi + coatHi + procHi;\n\n    \/\/ 7) Volume discount\n    var vol = VOL_MULT[qty] || VOL_MULT['100-1k'];\n    var totalLo = subLo * vol.mult;\n    var totalHi = subHi * vol.mult;\n\n    return {\n      glassLo: glassLo, glassHi: glassHi,\n      coatLo: coatLo, coatHi: coatHi,\n      procLo: procLo, procHi: procHi,\n      sizeMult: sizeMult,\n      volMult: vol.mult,\n      volLabel: vol.display,\n      totalLo: totalLo,\n      totalHi: totalHi\n    };\n  }\n\n  function fmt(n) {\n    if (n >= 100) return n.toFixed(0);\n    if (n >= 10) return n.toFixed(1);\n    return n.toFixed(2);\n  }\n\n  function fmtRange(lo, hi) {\n    return '$' + fmt(lo) + ' \u2013 $' + fmt(hi);\n  }\n\n  \/* ===== UPDATE PREVIEW ===== *\/\n  function update() {\n    var glass = $('#sbGlass').value;\n    var thick = $('#sbThick').value;\n    var w = $('#sbW').value || '\u2014';\n    var h = $('#sbH').value || '\u2014';\n    var shape = R.querySelector('.sb-shape.active');\n    var shapeName = shape ? shape.getAttribute('data-shape') : 'rectangle';\n    var shapeLabel = shapeName.charAt(0).toUpperCase() + shapeName.slice(1);\n    var gp = GLASS_PRICE[glass] || {};\n\n    \/\/ Top header\n    $('#pvName').textContent = gp.name || 'Custom Cover Glass';\n    var shortName = (gp.name || '').split(' ')[0];\n    if (shortName === 'Corning\u00ae') shortName = 'Gorilla\u00ae';\n    if (shortName === 'AGC') shortName = 'Dragontrail\u2122';\n    if (shortName === 'SCHOTT') shortName = 'Xensation\u00ae';\n    $('#pvType').textContent = shortName + ' \u2022 ' + thick + ' mm';\n\n    \/\/ Spec rows\n    $('#pvDim').textContent = w + ' \u00d7 ' + h + ' mm';\n    $('#pvShape').textContent = shapeLabel;\n\n    \/\/ Coatings\n    var coatHtml = '';\n    var activeCoats = $$('#sbCoatings .sb-chip.active');\n    if (activeCoats.length === 0) {\n      coatHtml = '<span style=\"color:var(--sb-ink3)\">None<\/span>';\n    } else {\n      activeCoats.forEach(function(c) {\n        var coat = c.getAttribute('data-coat');\n        coatHtml += '<span class=\"sb-ctag sb-ctag-' + coat + '\">' + coat.toUpperCase() + '<\/span>';\n      });\n    }\n    $('#pvCoat').innerHTML = coatHtml;\n\n    \/\/ Processing\n    var procs = [];\n    $$('#sbProcess .sb-chip.active').forEach(function(p) {\n      procs.push(p.textContent.replace('\u2713', '').trim());\n    });\n    $('#pvProc').textContent = procs.length > 0 ? procs.join(', ') : '\u2014';\n\n    \/\/ App & Qty\n    $('#pvApp').textContent = $('#sbApp').value;\n    var qtyVal = $('#sbQty').value;\n    var vol = VOL_MULT[qtyVal] || VOL_MULT['100-1k'];\n    $('#pvQty').textContent = vol.label;\n\n    \/\/ Lead time\n    $('#pvLead').textContent = getLeadTime();\n\n    \/\/ ===== PRICE UPDATE =====\n    var price = calcPrice();\n\n    \/\/ Main price display\n    $('#pvPrice').innerHTML =\n      '<span class=\"sb-price-cur\">$<\/span>' + fmt(price.totalLo) +\n      '<span class=\"sb-price-sep\"> \u2013 <\/span>' +\n      '<span class=\"sb-price-cur\">$<\/span>' + fmt(price.totalHi);\n\n    $('#pvPricePer').textContent = 'per piece at ' + price.volLabel;\n\n    \/\/ Breakdown\n    $('#pbGlass').textContent = fmtRange(price.glassLo, price.glassHi);\n    $('#pbCoat').textContent = price.coatLo > 0 ? fmtRange(price.coatLo, price.coatHi) : '$0.00';\n    $('#pbProc').textContent = price.procLo > 0 ? fmtRange(price.procLo, price.procHi) : '$0.00';\n    $('#pbSize').textContent = '\u00d7' + price.sizeMult.toFixed(2);\n    if (price.volMult === 1) {\n      $('#pbVol').textContent = '\u2014';\n    } else if (price.volMult > 1) {\n      $('#pbVol').textContent = '\u00d7' + price.volMult.toFixed(2) + ' (prototype premium)';\n      $('#pbVol').style.color = '#B45309';\n    } else {\n      $('#pbVol').textContent = '\u00d7' + price.volMult.toFixed(2) + ' (' + Math.round((1 - price.volMult) * 100) + '% off)';\n      $('#pbVol').style.color = 'var(--sb-green)';\n    }\n    $('#pbTotal').textContent = fmtRange(price.totalLo, price.totalHi);\n  }\n\n  function getLeadTime() {\n    var coats = $$('#sbCoatings .sb-chip.active');\n    var procs = $$('#sbProcess .sb-chip.active');\n    var qty = $('#sbQty').value;\n    var days = 7;\n    days += coats.length * 2;\n    days += procs.length * 1;\n    if (qty === '10k-50k') days += 5;\n    if (qty === '50k+') days += 10;\n    if (qty === 'proto') days = Math.max(days - 2, 5);\n    return days + '\u2013' + (days + 5) + ' working days';\n  }\n\n  \/* ===== EVENT BINDINGS ===== *\/\n\n  \/\/ Toggle chips\n  $$('.sb-chip').forEach(function(chip) {\n    chip.addEventListener('click', function(e) {\n      e.preventDefault();\n      e.stopPropagation();\n      this.classList.toggle('active');\n      update();\n    });\n  });\n\n  \/\/ Shape selector\n  $$('.sb-shape').forEach(function(opt) {\n    opt.addEventListener('click', function(e) {\n      e.preventDefault();\n      e.stopPropagation();\n      $$('.sb-shape').forEach(function(o) { o.classList.remove('active'); });\n      this.classList.add('active');\n      update();\n    });\n  });\n\n  \/\/ All inputs & selects\n  $$('select, input').forEach(function(el) {\n    el.addEventListener('change', update);\n    el.addEventListener('input', update);\n  });\n\n  \/\/ Price breakdown toggle\n  $('#pbToggle').addEventListener('click', function(e) {\n    e.preventDefault();\n    this.classList.toggle('open');\n    $('#pbDetails').classList.toggle('open');\n    var isOpen = this.classList.contains('open');\n    this.innerHTML = '<span class=\"sb-pb-arrow\">\u25b6<\/span> ' + (isOpen ? 'Hide price breakdown' : 'View price breakdown');\n  });\n\n  \/\/ Copy Spec Sheet (includes pricing)\n  $('#sbCopy').addEventListener('click', function(e) {\n    e.preventDefault();\n    var price = calcPrice();\n    var gp = GLASS_PRICE[$('#sbGlass').value] || {};\n    var lines = [\n      '\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550',\n      '   AF GLASS \u2014 Custom Specification Sheet',\n      '\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550',\n      '',\n      'Glass Type:     ' + (gp.name || ''),\n      'Thickness:      ' + $('#sbThick').value + ' mm',\n      'Dimensions:     ' + ($('#sbW').value || '\u2014') + ' \u00d7 ' + ($('#sbH').value || '\u2014') + ' mm',\n      'Shape:          ' + ((R.querySelector('.sb-shape.active') || {}).getAttribute('data-shape') || 'rectangle'),\n      ''\n    ];\n    var coats = [];\n    $$('#sbCoatings .sb-chip.active').forEach(function(c) {\n      coats.push(c.textContent.replace('\u2713', '').trim());\n    });\n    lines.push('Coatings:       ' + (coats.length > 0 ? coats.join(', ') : 'None'));\n    var procs = [];\n    $$('#sbProcess .sb-chip.active').forEach(function(p) {\n      procs.push(p.textContent.replace('\u2713', '').trim());\n    });\n    lines.push('Processing:     ' + (procs.length > 0 ? procs.join(', ') : 'None'));\n    lines.push('');\n    lines.push('Application:    ' + $('#sbApp').value);\n    lines.push('Quantity:       ' + (VOL_MULT[$('#sbQty').value] || {}).label);\n    lines.push('Est. Lead Time: ' + getLeadTime());\n    lines.push('');\n    lines.push('\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500');\n    lines.push('Est. Unit Price: ' + fmtRange(price.totalLo, price.totalHi));\n    lines.push('(Reference pricing only \u2014 request quote for final price)');\n    lines.push('\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500');\n    lines.push('');\n    lines.push('Generated by AF Glass Spec Builder');\n    lines.push('Website: afglasstech.com');\n\n    var text = lines.join('\\n');\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      navigator.clipboard.writeText(text).then(function() {\n        var btn = $('#sbCopy');\n        var orig = btn.innerHTML;\n        btn.innerHTML = '\u2705 Copied to clipboard!';\n        setTimeout(function() { btn.innerHTML = orig; }, 2500);\n      });\n    } else {\n      var ta = document.createElement('textarea');\n      ta.value = text;\n      ta.style.position = 'fixed';\n      ta.style.left = '-9999px';\n      document.body.appendChild(ta);\n      ta.select();\n      try { document.execCommand('copy'); } catch(e) {}\n      document.body.removeChild(ta);\n      var btn = $('#sbCopy');\n      btn.innerHTML = '\u2705 Copied!';\n      setTimeout(function() { btn.innerHTML = '\ud83d\udccb Copy Spec Sheet'; }, 2500);\n    }\n  });\n\n  \/\/ Initial render\n  update();\n\n})();\n<\/script>\n<\/section>\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Product Configuration Custom Glass Specification Builder Configure your cover glass step by step. Get instant estimated pricing and generate a detailed specification sheet for your RFQ. 1 Glass Substrate Glass Type Soda-Lime GlassChemically Strengthened GlassCorning\u00ae Gorilla\u00ae GlassAGC Dragontrail\u2122SCHOTT Xensation\u00aeBorosilicate GlassSapphire Glass Thickness 0.33 mm0.55 mm0.7 mm1.0 mm1.1 mm1.5 mm2.0 mm3.0 mm 2 Dimensions &amp; Shape [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":1054,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-1431","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/pages\/1431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/comments?post=1431"}],"version-history":[{"count":0,"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/pages\/1431\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/pages\/1054"}],"wp:attachment":[{"href":"https:\/\/saiweiglass.com\/pt\/wp-json\/wp\/v2\/media?parent=1431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}