{"id":4160,"date":"2026-03-20T06:20:16","date_gmt":"2026-03-20T06:20:16","guid":{"rendered":"https:\/\/saiweiglass.com\/?page_id=4160"},"modified":"2026-03-20T06:24:39","modified_gmt":"2026-03-20T06:24:39","slug":"tempered-glass-price-estimator","status":"publish","type":"page","link":"https:\/\/saiweiglass.com\/es\/capabilities\/thermal-tempering\/tempered-glass-price-estimator\/","title":{"rendered":"Estimador de precios de vidrio templado"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-181f205\" data-block-id=\"181f205\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-181f205-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-113914a\" data-v=\"4\" data-block-id=\"113914a\"><style>.stk-113914a-container{margin-top:30px !important;margin-right:30px !important;margin-bottom:30px !important;margin-left:30px !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-113914a-container stk--no-background stk--no-padding\"><div class=\"has-text-align-center stk-block-content stk-inner-blocks stk-113914a-inner-blocks\">\n<h1>Tempered Glass Cost Calculator<\/h1>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-7361cb4\" data-block-id=\"7361cb4\"><style>.stk-7361cb4 {margin-bottom:18px !important;}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-center stk-block-content stk-content-align stk-7361cb4-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-0c4254b\" data-v=\"4\" data-block-id=\"0c4254b\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-0c4254b-container stk--no-background stk--no-padding\"><div class=\"has-text-align-center stk-block-content stk-inner-blocks stk-0c4254b-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-fb1bf4b\" data-block-id=\"fb1bf4b\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-fb1bf4b-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-be431e4\" data-v=\"4\" data-block-id=\"be431e4\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-be431e4-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-be431e4-inner-blocks\">\n<!-- Tempered Glass Cost Estimator | bx-temper-cost-v1 -->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Mono:wght@400;600&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n#bx-temper-cost-v1{max-width:1120px;margin:0 auto;padding:0;box-sizing:border-box}\n#bx-temper-cost-v1 *,#bx-temper-cost-v1 *::before,#bx-temper-cost-v1 *::after{box-sizing:border-box}\n#bx-temper-cost-v1 h2{color:#304890;margin:0 0 .25em;font-weight:700;line-height:1.25}\n#bx-temper-cost-v1 .bx-subtitle{color:#555;margin:0 0 2em;font-size:.97em}\n#bx-temper-cost-v1 .bx-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5em 2.5em}\n#bx-temper-cost-v1 .bx-field{display:flex;flex-direction:column;gap:.35em}\n#bx-temper-cost-v1 .bx-field.bx-full{grid-column:1\/-1}\n#bx-temper-cost-v1 label{font-weight:600;font-size:.92em;color:#222}\n#bx-temper-cost-v1 label .bx-hint{font-weight:400;color:#777;font-size:.88em}\n#bx-temper-cost-v1 select,\n#bx-temper-cost-v1 input[type=\"number\"]{\n  font-family:'IBM Plex Mono',monospace;font-size:.95em;\n  padding:.55em .75em;border:1.5px solid #c5ccd6;border-radius:6px;\n  background:#fff;color:#222;width:100%;transition:border-color .2s}\n#bx-temper-cost-v1 select:focus,\n#bx-temper-cost-v1 input[type=\"number\"]:focus{border-color:#1878C0;outline:none;box-shadow:0 0 0 3px rgba(24,120,192,.12)}\n#bx-temper-cost-v1 .bx-dim-row{display:flex;gap:.75em;align-items:center}\n#bx-temper-cost-v1 .bx-dim-row input{flex:1}\n#bx-temper-cost-v1 .bx-dim-x{font-weight:700;color:#999;font-size:1.1em;padding-top:.1em}\n#bx-temper-cost-v1 .bx-checks{display:grid;grid-template-columns:1fr 1fr;gap:.45em .5em}\n#bx-temper-cost-v1 .bx-checks label{font-weight:400;display:flex;align-items:center;gap:.45em;cursor:pointer;font-size:.9em}\n#bx-temper-cost-v1 .bx-checks input[type=\"checkbox\"]{accent-color:#1878C0;width:16px;height:16px;margin:0}\n#bx-temper-cost-v1 .bx-btn-row{grid-column:1\/-1;display:flex;gap:1em;margin-top:.5em}\n#bx-temper-cost-v1 .bx-btn{\n  font-family:inherit;font-size:1em;font-weight:700;padding:.7em 2em;\n  border:none;border-radius:6px;cursor:pointer;transition:background .2s,transform .1s}\n#bx-temper-cost-v1 .bx-btn:active{transform:scale(.97)}\n#bx-temper-cost-v1 .bx-btn-primary{background:#304890;color:#fff}\n#bx-temper-cost-v1 .bx-btn-primary:hover{background:#26397a}\n#bx-temper-cost-v1 .bx-btn-secondary{background:#e9ecf2;color:#304890}\n#bx-temper-cost-v1 .bx-btn-secondary:hover{background:#dce0ea}\n\n\/* Results *\/\n#bx-temper-cost-v1 .bx-results{display:none;margin-top:2.2em;border-top:2px solid #304890;padding-top:1.8em}\n#bx-temper-cost-v1 .bx-results.bx-visible{display:block}\n#bx-temper-cost-v1 .bx-results h3{color:#304890;font-size:1.15em;margin:0 0 1em;font-weight:700}\n#bx-temper-cost-v1 .bx-summary-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2em;margin-bottom:1.8em}\n#bx-temper-cost-v1 .bx-card{background:#f4f6fa;border-radius:8px;padding:1.1em 1.2em;text-align:center;border:1px solid #e2e6ee}\n#bx-temper-cost-v1 .bx-card-label{font-size:.82em;color:#666;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.3em}\n#bx-temper-cost-v1 .bx-card-value{font-family:'IBM Plex Mono',monospace;font-size:1.55em;font-weight:600;color:#304890}\n#bx-temper-cost-v1 .bx-card-value.bx-accent{color:#1878C0}\n#bx-temper-cost-v1 .bx-card-sub{font-family:'IBM Plex Mono',monospace;font-size:.78em;color:#888;margin-top:.15em}\n\n\/* Breakdown table *\/\n#bx-temper-cost-v1 .bx-breakdown{width:100%;border-collapse:collapse;margin-bottom:1.8em;font-size:.92em}\n#bx-temper-cost-v1 .bx-breakdown th{text-align:left;padding:.55em .7em;background:#304890;color:#fff;font-weight:600}\n#bx-temper-cost-v1 .bx-breakdown th:last-child{text-align:right}\n#bx-temper-cost-v1 .bx-breakdown td{padding:.5em .7em;border-bottom:1px solid #e8eaef}\n#bx-temper-cost-v1 .bx-breakdown td:last-child{text-align:right;font-family:'IBM Plex Mono',monospace;font-weight:600}\n#bx-temper-cost-v1 .bx-breakdown tr:last-child td{border-bottom:none;font-weight:700;background:#f0f3f9}\n#bx-temper-cost-v1 .bx-breakdown tr:nth-child(even):not(:last-child) td{background:#fafbfd}\n\n\/* Stacked bar *\/\n#bx-temper-cost-v1 .bx-bar-section{margin-bottom:1.8em}\n#bx-temper-cost-v1 .bx-bar-title{font-size:.88em;font-weight:600;color:#444;margin-bottom:.5em}\n#bx-temper-cost-v1 .bx-bar-track{display:flex;height:32px;border-radius:6px;overflow:hidden;background:#e9ecf2}\n#bx-temper-cost-v1 .bx-bar-seg{display:flex;align-items:center;justify-content:center;\n  font-family:'IBM Plex Mono',monospace;font-size:.72em;font-weight:600;color:#fff;\n  min-width:28px;transition:width .4s ease}\n#bx-temper-cost-v1 .bx-bar-legend{display:flex;flex-wrap:wrap;gap:.6em 1.4em;margin-top:.55em;font-size:.82em}\n#bx-temper-cost-v1 .bx-bar-legend-item{display:flex;align-items:center;gap:.35em}\n#bx-temper-cost-v1 .bx-bar-legend-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}\n\n\/* Discount badge *\/\n#bx-temper-cost-v1 .bx-discount-badge{display:inline-flex;align-items:center;gap:.35em;\n  background:#e6f5ee;color:#1a7a4a;font-family:'IBM Plex Mono',monospace;\n  font-size:.82em;font-weight:600;padding:.3em .7em;border-radius:4px;margin-bottom:1em}\n\n\/* Disclaimer & CTA *\/\n#bx-temper-cost-v1 .bx-disclaimer{font-size:.82em;color:#888;line-height:1.5;margin:1em 0 1.5em;\n  padding:.8em 1em;background:#fafafa;border-left:3px solid #c5ccd6;border-radius:0 4px 4px 0}\n#bx-temper-cost-v1 .bx-cta-row{text-align:center;margin-top:.5em}\n#bx-temper-cost-v1 .bx-btn-cta{\n  font-family:inherit;font-size:1.05em;font-weight:700;padding:.8em 2.5em;\n  background:#1878C0;color:#fff;border:none;border-radius:6px;cursor:pointer;transition:background .2s,transform .1s}\n#bx-temper-cost-v1 .bx-btn-cta:hover{background:#146da8}\n#bx-temper-cost-v1 .bx-btn-cta:active{transform:scale(.97)}\n\n\/* Validation *\/\n#bx-temper-cost-v1 .bx-err{border-color:#d43f3f !important;box-shadow:0 0 0 3px rgba(212,63,63,.12) !important}\n#bx-temper-cost-v1 .bx-err-msg{color:#d43f3f;font-size:.82em;margin-top:.15em;display:none}\n#bx-temper-cost-v1 .bx-err-msg.bx-show{display:block}\n\n\/* Responsive *\/\n@media(max-width:860px){\n  #bx-temper-cost-v1 .bx-grid{grid-template-columns:1fr;gap:1.2em}\n  #bx-temper-cost-v1 .bx-field.bx-full{grid-column:1}\n  #bx-temper-cost-v1 .bx-summary-cards{grid-template-columns:1fr}\n  #bx-temper-cost-v1 .bx-checks{grid-template-columns:1fr}\n  #bx-temper-cost-v1 .bx-btn-row{flex-direction:column}\n  #bx-temper-cost-v1 .bx-btn{width:100%;text-align:center}\n  #bx-temper-cost-v1 .bx-bar-legend{flex-direction:column;gap:.35em}\n}\n<\/style>\n\n<div id=\"bx-temper-cost-v1\">\n  <h2>Tempered Glass Price Estimator<\/h2>\n  <p class=\"bx-subtitle\">Configure your custom tempered glass specifications to get an instant cost estimate.<\/p>\n\n  <div class=\"bx-grid\">\n    <!-- Glass Type -->\n    <div class=\"bx-field\">\n      <label for=\"bx-glass-type\">Glass Type<\/label>\n      <select id=\"bx-glass-type\">\n        <option value=\"clear\">Clear Float<\/option>\n        <option value=\"low-iron\">Low-Iron Ultra-Clear<\/option>\n        <option value=\"tinted-gray\">Tinted &mdash; Gray<\/option>\n        <option value=\"tinted-bronze\">Tinted &mdash; Bronze<\/option>\n        <option value=\"tinted-green\">Tinted &mdash; Green<\/option>\n        <option value=\"tinted-blue\">Tinted &mdash; Blue<\/option>\n      <\/select>\n    <\/div>\n\n    <!-- Thickness -->\n    <div class=\"bx-field\">\n      <label for=\"bx-thickness\">Glass Thickness<\/label>\n      <select id=\"bx-thickness\">\n        <option value=\"3\">3 mm<\/option>\n        <option value=\"4\">4 mm<\/option>\n        <option value=\"5\">5 mm<\/option>\n        <option value=\"6\" selected>6 mm<\/option>\n        <option value=\"8\">8 mm<\/option>\n        <option value=\"10\">10 mm<\/option>\n        <option value=\"12\">12 mm<\/option>\n        <option value=\"15\">15 mm<\/option>\n        <option value=\"19\">19 mm<\/option>\n      <\/select>\n    <\/div>\n\n    <!-- Dimensions -->\n    <div class=\"bx-field bx-full\">\n      <label>Panel Dimensions <span class=\"bx-hint\">(mm)<\/span><\/label>\n      <div class=\"bx-dim-row\">\n        <input type=\"number\" id=\"bx-width\" placeholder=\"Width\" min=\"50\" max=\"6000\" step=\"1\">\n        <span class=\"bx-dim-x\">&times;<\/span>\n        <input type=\"number\" id=\"bx-height\" placeholder=\"Height\" min=\"50\" max=\"6000\" step=\"1\">\n      <\/div>\n      <span class=\"bx-err-msg\" id=\"bx-dim-err\">Enter valid dimensions (50&ndash;6000 mm).<\/span>\n    <\/div>\n\n    <!-- Tempering Level -->\n    <div class=\"bx-field\">\n      <label for=\"bx-temper\">Tempering Level<\/label>\n      <select id=\"bx-temper\">\n        <option value=\"full\">Fully Tempered (most common)<\/option>\n        <option value=\"heat\">Heat Strengthened<\/option>\n      <\/select>\n    <\/div>\n\n    <!-- Edge Finishing -->\n    <div class=\"bx-field\">\n      <label for=\"bx-edge\">Edge Finishing<\/label>\n      <select id=\"bx-edge\">\n        <option value=\"seamed\">Seamed (basic)<\/option>\n        <option value=\"flat\">Flat Polished<\/option>\n        <option value=\"beveled\">Beveled<\/option>\n        <option value=\"pencil\">Pencil Polished<\/option>\n      <\/select>\n    <\/div>\n\n    <!-- Additional Processing -->\n    <div class=\"bx-field bx-full\">\n      <label>Additional Processing <span class=\"bx-hint\">(select all that apply)<\/span><\/label>\n      <div class=\"bx-checks\">\n        <label><input type=\"checkbox\" value=\"holes\"> Holes &amp; Cutouts<\/label>\n        <label><input type=\"checkbox\" value=\"screen\"> Screen Printing<\/label>\n        <label><input type=\"checkbox\" value=\"frit\"> Ceramic Frit<\/label>\n        <label><input type=\"checkbox\" value=\"ar\"> AR Coating<\/label>\n        <label><input type=\"checkbox\" value=\"ag\"> AG Coating<\/label>\n        <label><input type=\"checkbox\" value=\"af\"> AF Coating<\/label>\n        <label><input type=\"checkbox\" value=\"chem\"> Chemical Strengthening<\/label>\n      <\/div>\n    <\/div>\n\n    <!-- Quantity -->\n    <div class=\"bx-field\">\n      <label for=\"bx-qty\">Order Quantity <span class=\"bx-hint\">(panels)<\/span><\/label>\n      <input type=\"number\" id=\"bx-qty\" value=\"100\" min=\"1\" max=\"100000\" step=\"1\">\n      <span class=\"bx-err-msg\" id=\"bx-qty-err\">Enter a quantity of at least 1.<\/span>\n    <\/div>\n\n    <!-- Buttons -->\n    <div class=\"bx-btn-row\">\n      <button type=\"button\" class=\"bx-btn bx-btn-primary\" id=\"bx-calc-btn\">Calculate Estimate<\/button>\n      <button type=\"button\" class=\"bx-btn bx-btn-secondary\" id=\"bx-reset-btn\">Reset<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Results -->\n  <div class=\"bx-results\" id=\"bx-results\">\n    <h3>Cost Estimate<\/h3>\n\n    <div id=\"bx-discount-badge\" class=\"bx-discount-badge\" style=\"display:none\"><\/div>\n\n    <div class=\"bx-summary-cards\">\n      <div class=\"bx-card\">\n        <div class=\"bx-card-label\">Per-Unit Cost<\/div>\n        <div class=\"bx-card-value\" id=\"bx-unit-cost\">\u2014<\/div>\n        <div class=\"bx-card-sub\" id=\"bx-unit-sqft\">\u2014<\/div>\n      <\/div>\n      <div class=\"bx-card\">\n        <div class=\"bx-card-label\">Order Quantity<\/div>\n        <div class=\"bx-card-value bx-accent\" id=\"bx-order-qty\">\u2014<\/div>\n        <div class=\"bx-card-sub\" id=\"bx-discount-pct\">\u2014<\/div>\n      <\/div>\n      <div class=\"bx-card\">\n        <div class=\"bx-card-label\">Total Estimate<\/div>\n        <div class=\"bx-card-value\" id=\"bx-total-cost\">\u2014<\/div>\n        <div class=\"bx-card-sub\" id=\"bx-total-sqft\">\u2014<\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Breakdown Table -->\n    <table class=\"bx-breakdown\" id=\"bx-breakdown-table\">\n      <thead><tr><th>Component<\/th><th>Cost \/ sqft<\/th><\/tr><\/thead>\n      <tbody><\/tbody>\n    <\/table>\n\n    <!-- Stacked Bar -->\n    <div class=\"bx-bar-section\">\n      <div class=\"bx-bar-title\">Cost Composition<\/div>\n      <div class=\"bx-bar-track\" id=\"bx-bar-track\"><\/div>\n      <div class=\"bx-bar-legend\" id=\"bx-bar-legend\"><\/div>\n    <\/div>\n\n    <!-- Disclaimer -->\n    <div class=\"bx-disclaimer\">\n      <strong>Disclaimer:<\/strong> Estimate only. Final pricing depends on specifications, tolerances, and order schedule. Prices shown are mid-range estimates in USD and may vary by region, supplier, and current material costs.\n    <\/div>\n\n    <!-- CTA -->\n    <div class=\"bx-cta-row\">\n      <button type=\"button\" class=\"bx-btn bx-btn-cta\" id=\"bx-cta-btn\">Get Your Exact Quote<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  var scope = document.getElementById('bx-temper-cost-v1');\n  var $ = function(id){ return scope.querySelector('#'+id) || scope.querySelector('.'+id); };\n  var el = {\n    type: $('bx-glass-type'), thick: $('bx-thickness'),\n    w: $('bx-width'), h: $('bx-height'),\n    temper: $('bx-temper'), edge: $('bx-edge'),\n    qty: $('bx-qty'), calcBtn: $('bx-calc-btn'),\n    resetBtn: $('bx-reset-btn'), ctaBtn: $('bx-cta-btn'),\n    results: $('bx-results'), dimErr: $('bx-dim-err'), qtyErr: $('bx-qty-err')\n  };\n\n  \/* --- pricing data --- *\/\n  var glassBase = {\n    'clear':[4,6],'low-iron':[6,9],\n    'tinted-gray':[5,8],'tinted-bronze':[5,8],'tinted-green':[5,8],'tinted-blue':[5,8]\n  };\n  var thickMult = {'3':1,'4':1,'5':1.3,'6':1.3,'8':1.6,'10':2,'12':2.5,'15':3.2,'19':4};\n  var temperCost = {'full':[2,4],'heat':[1.5,3]};\n  var edgeRate = {'seamed':0,'flat':2,'beveled':4,'pencil':3}; \/\/ per linear ft\n  var addons = {\n    'holes':{type:'fixed',cost:10}, \/\/ 2 holes \u00d7 $5\n    'screen':{type:'sqft',range:[3,8]},\n    'frit':{type:'sqft',range:[4,10]},\n    'ar':{type:'sqft',range:[5,8]},\n    'ag':{type:'sqft',range:[3,5]},\n    'af':{type:'sqft',range:[2,4]},\n    'chem':{type:'sqft',range:[8,15]}\n  };\n  var addonLabels = {\n    'holes':'Holes & Cutouts','screen':'Screen Printing','frit':'Ceramic Frit',\n    'ar':'AR Coating','ag':'AG Coating','af':'AF Coating','chem':'Chemical Strengthening'\n  };\n\n  function mid(arr){ return (arr[0]+arr[1])\/2; }\n\n  function getDiscount(qty){\n    if(qty>=5000) return 0.30;\n    if(qty>=1000) return 0.22;\n    if(qty>=500)  return 0.15;\n    if(qty>=100)  return 0.08;\n    return 0;\n  }\n\n  function fmt(n){ return '$'+n.toFixed(2); }\n  function fmtK(n){\n    if(n>=10000) return '$'+Math.round(n).toLocaleString('en-US');\n    return '$'+n.toFixed(2);\n  }\n\n  function validate(){\n    var ok = true;\n    var w = parseFloat(el.w.value), h = parseFloat(el.h.value), q = parseInt(el.qty.value,10);\n    el.w.classList.remove('bx-err'); el.h.classList.remove('bx-err'); el.qty.classList.remove('bx-err');\n    el.dimErr.classList.remove('bx-show'); el.qtyErr.classList.remove('bx-show');\n    if(!w||w<50||w>6000||!h||h<50||h>6000){\n      el.w.classList.add('bx-err'); el.h.classList.add('bx-err');\n      el.dimErr.classList.add('bx-show'); ok=false;\n    }\n    if(!q||q<1){\n      el.qty.classList.add('bx-err'); el.qtyErr.classList.add('bx-show'); ok=false;\n    }\n    return ok;\n  }\n\n  function calculate(){\n    if(!validate()){ el.results.classList.remove('bx-visible'); return; }\n\n    var w_mm = parseFloat(el.w.value), h_mm = parseFloat(el.h.value);\n    var qty = parseInt(el.qty.value,10);\n    var sqft = (w_mm\/304.8)*(h_mm\/304.8); \/\/ per panel\n    var perim_ft = 2*(w_mm+h_mm)\/304.8;\n\n    \/\/ Base glass cost per sqft\n    var basePsf = mid(glassBase[el.type.value]) * thickMult[el.thick.value];\n\n    \/\/ Tempering per sqft\n    var tempPsf = mid(temperCost[el.temper.value]);\n\n    \/\/ Edge cost \u2192 convert to per-sqft equivalent\n    var edgeTotalPerPanel = edgeRate[el.edge.value] * perim_ft;\n    var edgePsf = sqft > 0 ? edgeTotalPerPanel \/ sqft : 0;\n\n    \/\/ Additionals per sqft\n    var addChecks = scope.querySelectorAll('.bx-checks input[type=\"checkbox\"]:checked');\n    var addPsf = 0;\n    var addDetail = [];\n    for(var i=0;i<addChecks.length;i++){\n      var k = addChecks[i].value;\n      var a = addons[k];\n      var cost;\n      if(a.type==='fixed'){\n        cost = a.cost \/ sqft; \/\/ distribute fixed cost over sqft\n        addPsf += cost;\n      } else {\n        cost = mid(a.range);\n        addPsf += cost;\n      }\n      addDetail.push({label:addonLabels[k], psf:cost});\n    }\n\n    var subtotalPsf = basePsf + tempPsf + edgePsf + addPsf;\n    var unitCost = subtotalPsf * sqft;\n\n    \/\/ Discount\n    var disc = getDiscount(qty);\n    var unitAfterDisc = unitCost * (1 - disc);\n    var total = unitAfterDisc * qty;\n\n    \/\/ Render cards\n    $('bx-unit-cost').textContent = fmt(unitAfterDisc);\n    $('bx-unit-sqft').textContent = fmt(subtotalPsf*(1-disc)) + ' \/ sqft';\n    $('bx-order-qty').textContent = qty.toLocaleString('en-US');\n    $('bx-discount-pct').textContent = disc > 0 ? (disc*100)+'% volume discount' : 'No volume discount';\n    $('bx-total-cost').textContent = fmtK(total);\n    $('bx-total-sqft').textContent = (sqft*qty).toFixed(1)+' total sqft';\n\n    \/\/ Discount badge\n    var badge = $('bx-discount-badge');\n    if(disc > 0){\n      badge.style.display = 'inline-flex';\n      badge.innerHTML = '&#10003; '+(disc*100)+'% volume discount applied ('+qty.toLocaleString('en-US')+' panels)';\n    } else { badge.style.display='none'; }\n\n    \/\/ Breakdown table\n    var tbody = scope.querySelector('.bx-breakdown tbody');\n    var rows = [\n      {label:'Base Glass',psf:basePsf},\n      {label:'Tempering',psf:tempPsf},\n      {label:'Edge Finishing',psf:edgePsf}\n    ];\n    for(var j=0;j<addDetail.length;j++) rows.push(addDetail[j]);\n    rows.push({label:'Subtotal (per sqft)',psf:subtotalPsf});\n\n    tbody.innerHTML='';\n    for(var r=0;r<rows.length;r++){\n      var tr=document.createElement('tr');\n      tr.innerHTML='<td>'+rows[r].label+'<\/td><td>'+fmt(rows[r].psf)+'<\/td>';\n      tbody.appendChild(tr);\n    }\n\n    \/\/ Stacked bar\n    var colors = ['#304890','#1878C0','#3aa0d8','#5cb85c','#f0ad4e','#d9534f','#8e6fc0','#2c8c6e','#c06018','#607d8b'];\n    var segments = [\n      {label:'Glass',val:basePsf,color:colors[0]},\n      {label:'Tempering',val:tempPsf,color:colors[1]},\n      {label:'Edge',val:edgePsf,color:colors[2]}\n    ];\n    for(var m=0;m<addDetail.length;m++){\n      segments.push({label:addDetail[m].label,val:addDetail[m].psf,color:colors[3+m]});\n    }\n\n    var barTrack = $('bx-bar-track');\n    var barLegend = $('bx-bar-legend');\n    barTrack.innerHTML=''; barLegend.innerHTML='';\n    for(var s=0;s<segments.length;s++){\n      var pct = subtotalPsf > 0 ? (segments[s].val\/subtotalPsf*100) : 0;\n      if(pct < 0.5) continue;\n      var seg = document.createElement('div');\n      seg.className='bx-bar-seg';\n      seg.style.width = pct+'%';\n      seg.style.background = segments[s].color;\n      seg.textContent = Math.round(pct)+'%';\n      if(pct < 5) seg.textContent = '';\n      barTrack.appendChild(seg);\n\n      var li = document.createElement('span');\n      li.className='bx-bar-legend-item';\n      li.innerHTML='<span class=\"bx-bar-legend-dot\" style=\"background:'+segments[s].color+'\"><\/span>'+segments[s].label+' <span style=\"font-family:\\'IBM Plex Mono\\',monospace;color:#555\">'+Math.round(pct)+'%<\/span>';\n      barLegend.appendChild(li);\n    }\n\n    el.results.classList.add('bx-visible');\n    el.results.scrollIntoView({behavior:'smooth',block:'start'});\n  }\n\n  function reset(){\n    el.type.selectedIndex=0; el.thick.value='6';\n    el.w.value=''; el.h.value='';\n    el.temper.selectedIndex=0; el.edge.selectedIndex=0;\n    el.qty.value='100';\n    var cbs = scope.querySelectorAll('.bx-checks input[type=\"checkbox\"]');\n    for(var i=0;i<cbs.length;i++) cbs[i].checked=false;\n    el.w.classList.remove('bx-err'); el.h.classList.remove('bx-err'); el.qty.classList.remove('bx-err');\n    el.dimErr.classList.remove('bx-show'); el.qtyErr.classList.remove('bx-show');\n    el.results.classList.remove('bx-visible');\n  }\n\n  function openPopup(){\n    var popup = document.getElementById('ct-popup-787');\n    if(popup){\n      if(typeof popup.click==='function') popup.click();\n      try{ popup.style.display='block'; popup.classList.add('active'); } catch(e){}\n    }\n  }\n\n  el.calcBtn.addEventListener('click', calculate);\n  el.resetBtn.addEventListener('click', reset);\n  el.ctaBtn.addEventListener('click', openPopup);\n})();\n<\/script>\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Tempered Glass Price Estimator Configure your custom tempered glass specifications to get an instant cost estimate. Glass Type Clear FloatLow-Iron Ultra-ClearTinted &mdash; GrayTinted &mdash; BronzeTinted &mdash; GreenTinted &mdash; Blue Glass Thickness 3 mm4 mm5 mm6 mm8 mm10 mm12 mm15 mm19 mm Panel Dimensions (mm) &times; Enter valid dimensions (50&ndash;6000 mm). Tempering Level Fully Tempered (most [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":4167,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-4160","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/pages\/4160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/comments?post=4160"}],"version-history":[{"count":0,"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/pages\/4160\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/pages\/4167"}],"wp:attachment":[{"href":"https:\/\/saiweiglass.com\/es\/wp-json\/wp\/v2\/media?parent=4160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}