{"id":2163,"date":"2026-03-26T08:18:00","date_gmt":"2026-03-26T08:18:00","guid":{"rendered":"https:\/\/gqlamp.com\/?page_id=2163"},"modified":"2026-03-26T08:22:54","modified_gmt":"2026-03-26T08:22:54","slug":"pool-light-sizing-calculator","status":"publish","type":"page","link":"https:\/\/gqlamp.com\/pt\/pool-water-lighting\/swimming-pool-light\/pool-light-sizing-calculator\/","title":{"rendered":"calculadora de dimensionamento de luz de piscina"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-6f1c681\" data-block-id=\"6f1c681\"><style>.stk-6f1c681 {margin-bottom:0px !important;}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-6f1c681-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-073bf40\" data-v=\"4\" data-block-id=\"073bf40\"><style>.stk-073bf40-container{margin-top:var(--stk--preset--spacing--60, 2.25rem) !important;margin-right:var(--stk--preset--spacing--60, 2.25rem) !important;margin-bottom:var(--stk--preset--spacing--60, 2.25rem) !important;margin-left:var(--stk--preset--spacing--60, 2.25rem) !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-073bf40-container stk--no-background stk--no-padding\"><div class=\"has-text-align-center stk-block-content stk-inner-blocks stk-073bf40-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-1d93ffc\" data-block-id=\"1d93ffc\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-1d93ffc-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-f8ea443\" data-v=\"4\" data-block-id=\"f8ea443\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-f8ea443-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-f8ea443-inner-blocks\">\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>Pool Light Sizing Calculator \u2014 Guangqi Lighting<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Mono:wght@400;500;600;700&#038;family=Inter:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n<style>\n\/* ============================================\n   GUANGQI POOL LIGHT SIZING CALCULATOR\n   All styles scoped under #gq-tool-1\n   ============================================ *\/\n\n#gq-tool-1 {\n  --gq-primary: #183090;\n  --gq-accent: #009048;\n  --gq-dark: #303030;\n  --gq-light: #f4f5f7;\n  --gq-border: #d0d4dc;\n  --gq-white: #ffffff;\n  --gq-warn: #c05020;\n  --gq-font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n  --gq-font-data: 'IBM Plex Mono', 'Courier New', monospace;\n\n  box-sizing: border-box;\n  font-family: var(--gq-font-body);\n  color: var(--gq-dark);\n  background: var(--gq-white);\n  max-width: 900px;\n  margin: 0 auto;\n  padding: 0;\n  line-height: 1.5;\n  -webkit-font-smoothing: antialiased;\n}\n\n#gq-tool-1 *, #gq-tool-1 *::before, #gq-tool-1 *::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n\n\/* --- Header --- *\/\n#gq-tool-1 .gq-header {\n  background: var(--gq-primary);\n  padding: 32px 36px 28px;\n  border-radius: 4px 4px 0 0;\n}\n\n#gq-tool-1 .gq-header h2 {\n  font-family: var(--gq-font-body);\n  font-size: 22px;\n  font-weight: 700;\n  color: var(--gq-white);\n  margin: 0 0 6px 0;\n  letter-spacing: -0.3px;\n  line-height: 1.3;\n}\n\n#gq-tool-1 .gq-header p {\n  font-size: 14px;\n  color: rgba(255,255,255,0.72);\n  margin: 0;\n  font-weight: 400;\n}\n\n\/* --- Body --- *\/\n#gq-tool-1 .gq-body {\n  border: 1px solid var(--gq-border);\n  border-top: none;\n  border-radius: 0 0 4px 4px;\n  padding: 32px 36px 36px;\n  background: var(--gq-white);\n}\n\n\/* --- Form Grid --- *\/\n#gq-tool-1 .gq-form-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px 24px;\n  margin-bottom: 28px;\n}\n\n#gq-tool-1 .gq-field {\n  display: flex;\n  flex-direction: column;\n}\n\n#gq-tool-1 .gq-field.gq-full-width {\n  grid-column: 1 \/ -1;\n}\n\n#gq-tool-1 .gq-field label {\n  font-size: 12px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #606878;\n  margin-bottom: 7px;\n}\n\n#gq-tool-1 .gq-field input,\n#gq-tool-1 .gq-field select {\n  font-family: var(--gq-font-data);\n  font-size: 15px;\n  font-weight: 500;\n  color: var(--gq-dark);\n  background: var(--gq-light);\n  border: 1px solid var(--gq-border);\n  border-radius: 3px;\n  padding: 11px 14px;\n  transition: border-color 0.2s, box-shadow 0.2s;\n  outline: none;\n  width: 100%;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n#gq-tool-1 .gq-field select {\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23606878' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: right 14px center;\n  padding-right: 38px;\n  cursor: pointer;\n}\n\n#gq-tool-1 .gq-field input:focus,\n#gq-tool-1 .gq-field select:focus {\n  border-color: var(--gq-primary);\n  box-shadow: 0 0 0 3px rgba(24,48,144,0.1);\n}\n\n#gq-tool-1 .gq-field input::placeholder {\n  color: #a0a8b4;\n  font-weight: 400;\n}\n\n#gq-tool-1 .gq-input-suffix {\n  position: relative;\n}\n\n#gq-tool-1 .gq-input-suffix input {\n  padding-right: 42px;\n}\n\n#gq-tool-1 .gq-input-suffix .gq-suffix {\n  position: absolute;\n  right: 14px;\n  top: 50%;\n  transform: translateY(-50%);\n  font-family: var(--gq-font-data);\n  font-size: 12px;\n  color: #9098a4;\n  pointer-events: none;\n  font-weight: 500;\n}\n\n\/* --- Unit Toggle --- *\/\n#gq-tool-1 .gq-unit-toggle {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  margin-bottom: 24px;\n  padding-bottom: 20px;\n  border-bottom: 1px solid #e8eaee;\n}\n\n#gq-tool-1 .gq-unit-toggle span {\n  font-size: 12px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #606878;\n}\n\n#gq-tool-1 .gq-toggle-btns {\n  display: flex;\n  gap: 0;\n  border: 1px solid var(--gq-border);\n  border-radius: 3px;\n  overflow: hidden;\n}\n\n#gq-tool-1 .gq-toggle-btns button {\n  font-family: var(--gq-font-data);\n  font-size: 12px;\n  font-weight: 600;\n  padding: 6px 16px;\n  border: none;\n  background: var(--gq-light);\n  color: #606878;\n  cursor: pointer;\n  transition: all 0.2s;\n}\n\n#gq-tool-1 .gq-toggle-btns button.active {\n  background: var(--gq-primary);\n  color: var(--gq-white);\n}\n\n#gq-tool-1 .gq-toggle-btns button:not(:last-child) {\n  border-right: 1px solid var(--gq-border);\n}\n\n\/* --- Calculate Button --- *\/\n#gq-tool-1 .gq-calculate-btn {\n  display: block;\n  width: 100%;\n  font-family: var(--gq-font-body);\n  font-size: 15px;\n  font-weight: 600;\n  color: var(--gq-white);\n  background: var(--gq-primary);\n  border: none;\n  border-radius: 3px;\n  padding: 14px 24px;\n  cursor: pointer;\n  transition: background 0.2s, transform 0.1s;\n  letter-spacing: 0.2px;\n}\n\n#gq-tool-1 .gq-calculate-btn:hover {\n  background: #122574;\n}\n\n#gq-tool-1 .gq-calculate-btn:active {\n  transform: translateY(1px);\n}\n\n\/* --- Results Panel --- *\/\n#gq-tool-1 .gq-results {\n  display: none;\n  margin-top: 32px;\n  border-top: 2px solid var(--gq-primary);\n  padding-top: 28px;\n}\n\n#gq-tool-1 .gq-results.visible {\n  display: block;\n  animation: gqFadeIn 0.35s ease;\n}\n\n@keyframes gqFadeIn {\n  from { opacity: 0; transform: translateY(8px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n\n#gq-tool-1 .gq-results-title {\n  font-size: 13px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  color: var(--gq-primary);\n  margin-bottom: 20px;\n}\n\n\/* --- Summary Cards --- *\/\n#gq-tool-1 .gq-summary-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 16px;\n  margin-bottom: 28px;\n}\n\n#gq-tool-1 .gq-summary-card {\n  background: var(--gq-light);\n  border: 1px solid #e8eaee;\n  border-radius: 3px;\n  padding: 16px;\n  text-align: center;\n}\n\n#gq-tool-1 .gq-summary-card .gq-card-value {\n  font-family: var(--gq-font-data);\n  font-size: 26px;\n  font-weight: 700;\n  color: var(--gq-primary);\n  line-height: 1.2;\n  margin-bottom: 4px;\n}\n\n#gq-tool-1 .gq-summary-card .gq-card-value.accent {\n  color: var(--gq-accent);\n}\n\n#gq-tool-1 .gq-summary-card .gq-card-label {\n  font-size: 11px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #808890;\n}\n\n\/* --- Recommendation Table --- *\/\n#gq-tool-1 .gq-rec-section {\n  margin-bottom: 24px;\n}\n\n#gq-tool-1 .gq-rec-section h4 {\n  font-size: 14px;\n  font-weight: 700;\n  color: var(--gq-dark);\n  margin-bottom: 12px;\n  padding-bottom: 8px;\n  border-bottom: 1px solid #e8eaee;\n}\n\n#gq-tool-1 .gq-rec-table {\n  width: 100%;\n  border-collapse: collapse;\n  font-size: 13px;\n}\n\n#gq-tool-1 .gq-rec-table th {\n  font-size: 11px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #808890;\n  text-align: left;\n  padding: 8px 12px;\n  background: var(--gq-light);\n  border-bottom: 1px solid var(--gq-border);\n}\n\n#gq-tool-1 .gq-rec-table td {\n  padding: 10px 12px;\n  border-bottom: 1px solid #eef0f2;\n  vertical-align: middle;\n}\n\n#gq-tool-1 .gq-rec-table tr:last-child td {\n  border-bottom: none;\n}\n\n#gq-tool-1 .gq-rec-table .gq-model-name {\n  font-family: var(--gq-font-data);\n  font-weight: 600;\n  color: var(--gq-primary);\n  font-size: 13px;\n}\n\n#gq-tool-1 .gq-rec-table .gq-data-cell {\n  font-family: var(--gq-font-data);\n  font-weight: 500;\n  font-size: 13px;\n}\n\n#gq-tool-1 .gq-rec-badge {\n  display: inline-block;\n  font-size: 10px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  padding: 3px 8px;\n  border-radius: 2px;\n  background: var(--gq-accent);\n  color: var(--gq-white);\n  margin-left: 8px;\n  vertical-align: middle;\n}\n\n#gq-tool-1 .gq-rec-badge.alt {\n  background: #e8eaee;\n  color: #606878;\n}\n\n\/* --- Transformer Note --- *\/\n#gq-tool-1 .gq-transformer-note {\n  background: #f8f9fb;\n  border-left: 3px solid var(--gq-primary);\n  padding: 16px 20px;\n  margin-bottom: 24px;\n  font-size: 13px;\n  line-height: 1.6;\n}\n\n#gq-tool-1 .gq-transformer-note strong {\n  font-family: var(--gq-font-data);\n  color: var(--gq-primary);\n}\n\n#gq-tool-1 .gq-transformer-note .gq-note-label {\n  font-size: 11px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: var(--gq-accent);\n  display: block;\n  margin-bottom: 4px;\n}\n\n\/* --- Spec Notes --- *\/\n#gq-tool-1 .gq-spec-notes {\n  font-size: 12px;\n  color: #808890;\n  line-height: 1.7;\n  margin-bottom: 24px;\n}\n\n#gq-tool-1 .gq-spec-notes ul {\n  list-style: none;\n  padding: 0;\n}\n\n#gq-tool-1 .gq-spec-notes li::before {\n  content: \"\u2014\";\n  margin-right: 8px;\n  color: var(--gq-border);\n}\n\n\/* --- CTA Button --- *\/\n#gq-tool-1 .gq-cta-btn {\n  display: block;\n  width: 100%;\n  text-align: center;\n  font-family: var(--gq-font-body);\n  font-size: 15px;\n  font-weight: 600;\n  color: var(--gq-white);\n  background: var(--gq-accent);\n  border: none;\n  border-radius: 3px;\n  padding: 15px 24px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.2s, transform 0.1s;\n  letter-spacing: 0.2px;\n}\n\n#gq-tool-1 .gq-cta-btn:hover {\n  background: #007a3c;\n  color: var(--gq-white);\n  text-decoration: none;\n}\n\n#gq-tool-1 .gq-cta-btn:active {\n  transform: translateY(1px);\n}\n\n\/* --- Validation \/ Error --- *\/\n#gq-tool-1 .gq-error-msg {\n  display: none;\n  color: var(--gq-warn);\n  font-size: 12px;\n  font-weight: 500;\n  margin-top: 4px;\n}\n\n#gq-tool-1 .gq-field.has-error input,\n#gq-tool-1 .gq-field.has-error select {\n  border-color: var(--gq-warn);\n}\n\n#gq-tool-1 .gq-field.has-error .gq-error-msg {\n  display: block;\n}\n\n\/* --- Mobile Responsive --- *\/\n@media (max-width:690px) {\n  #gq-tool-1 .gq-header {\n    padding: 24px 20px 20px;\n  }\n\n  #gq-tool-1 .gq-header h2 {\n    font-size: 18px;\n  }\n\n  #gq-tool-1 .gq-body {\n    padding: 24px 20px 28px;\n  }\n\n  #gq-tool-1 .gq-form-grid {\n    grid-template-columns: 1fr;\n    gap: 16px;\n  }\n\n  #gq-tool-1 .gq-summary-grid {\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n  }\n\n  #gq-tool-1 .gq-summary-card .gq-card-value {\n    font-size: 22px;\n  }\n\n  #gq-tool-1 .gq-rec-table {\n    font-size: 12px;\n  }\n\n  #gq-tool-1 .gq-rec-table th,\n  #gq-tool-1 .gq-rec-table td {\n    padding: 8px 8px;\n  }\n\n  #gq-tool-1 .gq-rec-badge {\n    display: block;\n    margin-left: 0;\n    margin-top: 4px;\n    width: fit-content;\n  }\n}\n\n@media (max-width: 480px) {\n  #gq-tool-1 .gq-summary-grid {\n    grid-template-columns: 1fr;\n  }\n}\n<\/style>\n<\/head>\n<body >\n\n<div id=\"gq-tool-1\">\n  <div class=\"gq-header\">\n    <h2>Pool Light Sizing Calculator<\/h2>\n    <p>Enter your pool dimensions to get fixture recommendations, quantity, and transformer sizing.<\/p>\n  <\/div>\n\n  <div class=\"gq-body\">\n\n    <!-- Unit Toggle -->\n    <div class=\"gq-unit-toggle\">\n      <span>Units<\/span>\n      <div class=\"gq-toggle-btns\">\n        <button type=\"button\" class=\"active\" data-unit=\"ft\" onclick=\"gqSetUnit('ft')\">Feet<\/button>\n        <button type=\"button\" data-unit=\"m\" onclick=\"gqSetUnit('m')\">Meters<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Input Form -->\n    <div class=\"gq-form-grid\">\n      <div class=\"gq-field\">\n        <label for=\"gq-pool-length\">Pool Length<\/label>\n        <div class=\"gq-input-suffix\">\n          <input type=\"number\" id=\"gq-pool-length\" placeholder=\"40\" min=\"1\" step=\"any\">\n          <span class=\"gq-suffix\" id=\"gq-len-unit\">ft<\/span>\n        <\/div>\n        <span class=\"gq-error-msg\">Enter a valid length<\/span>\n      <\/div>\n\n      <div class=\"gq-field\">\n        <label for=\"gq-pool-width\">Pool Width<\/label>\n        <div class=\"gq-input-suffix\">\n          <input type=\"number\" id=\"gq-pool-width\" placeholder=\"20\" min=\"1\" step=\"any\">\n          <span class=\"gq-suffix\" id=\"gq-wid-unit\">ft<\/span>\n        <\/div>\n        <span class=\"gq-error-msg\">Enter a valid width<\/span>\n      <\/div>\n\n      <div class=\"gq-field\">\n        <label for=\"gq-pool-depth\">Average Depth<\/label>\n        <div class=\"gq-input-suffix\">\n          <input type=\"number\" id=\"gq-pool-depth\" placeholder=\"5\" min=\"0.5\" step=\"any\">\n          <span class=\"gq-suffix\" id=\"gq-dep-unit\">ft<\/span>\n        <\/div>\n        <span class=\"gq-error-msg\">Enter a valid depth<\/span>\n      <\/div>\n\n      <div class=\"gq-field\">\n        <label for=\"gq-pool-type\">Pool Type<\/label>\n        <select id=\"gq-pool-type\">\n          <option value=\"inground\">Inground Pool<\/option>\n          <option value=\"aboveground\">Above Ground Pool<\/option>\n          <option value=\"retrofit\">Retrofit \/ Existing Pool<\/option>\n          <option value=\"commercial\">Commercial Pool<\/option>\n          <option value=\"spa\">Spa \/ Hot Tub<\/option>\n          <option value=\"fountain\">Fountain \/ Water Feature<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"gq-field gq-full-width\">\n        <label for=\"gq-pool-usage\">Primary Usage<\/label>\n        <select id=\"gq-pool-usage\">\n          <option value=\"residential\">Residential<\/option>\n          <option value=\"commercial-use\">Commercial \/ Public Facility<\/option>\n          <option value=\"decorative\">Decorative \/ Architectural<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n\n    <button type=\"button\" class=\"gq-calculate-btn\" onclick=\"gqCalculate()\">Calculate Recommendation<\/button>\n\n    <!-- Results Panel -->\n    <div class=\"gq-results\" id=\"gq-results\">\n      <div class=\"gq-results-title\">Sizing Recommendation<\/div>\n\n      <div class=\"gq-summary-grid\" id=\"gq-summary-grid\">\n        <!-- Populated by JS -->\n      <\/div>\n\n      <div class=\"gq-rec-section\">\n        <h4>Recommended Fixtures<\/h4>\n        <table class=\"gq-rec-table\">\n          <thead>\n            <tr>\n              <th>Model<\/th>\n              <th>Wattage<\/th>\n              <th>Size<\/th>\n              <th>Qty<\/th>\n              <th>Subtotal<\/th>\n            <\/tr>\n          <\/thead>\n          <tbody id=\"gq-rec-tbody\">\n            <!-- Populated by JS -->\n          <\/tbody>\n        <\/table>\n      <\/div>\n\n      <div class=\"gq-transformer-note\" id=\"gq-transformer-note\">\n        <!-- Populated by JS -->\n      <\/div>\n\n      <div class=\"gq-spec-notes\" id=\"gq-spec-notes\">\n        <!-- Populated by JS -->\n      <\/div>\n\n      <a href=\"#ct-popup-801\" class=\"gq-cta-btn\" id=\"gq-cta-btn\">Request a Quote for This Configuration<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  'use strict';\n\n  \/* =========================================\n     PRODUCT DATA \u2014 Guangqi actual specs\n     ========================================= *\/\n  var PRODUCTS = {\n    inground: [\n      { model: 'GQ-SS100',  watt: 3,  size: '\\u03C6100mm', category: 'Inground SS', notes: 'Compact niche \u2014 spas, steps, small features' },\n      { model: 'GQ-SS130',  watt: 6,  size: '\\u00D8130mm', category: 'Inground SS', notes: 'Standard small pool light' },\n      { model: 'GQ-SS170',  watt: 12, size: '\\u03C6170mm', category: 'Inground SS', notes: 'Mid-size residential \u2014 most popular' },\n      { model: 'GQ-SS180',  watt: 18, size: '\\u03C6180mm', category: 'Inground SS', notes: 'Large residential pools' }\n    ],\n    surface: [\n      { model: 'GQ-ST180',  watt: 6,  size: '\\u00D8180mm', category: 'Surface-Mount SS', notes: 'Retrofit \u2014 compact' },\n      { model: 'GQ-ST230',  watt: 12, size: '\\u00D8230mm', category: 'Surface-Mount SS', notes: 'Retrofit \u2014 standard residential' },\n      { model: 'GQ-ST290',  watt: 18, size: '\\u00D8290mm', category: 'Surface-Mount SS', notes: 'Retrofit \u2014 large pool, 18W option' },\n      { model: 'GQ-ST290',  watt: 24, size: '\\u00D8290mm', category: 'Surface-Mount SS', notes: 'Retrofit \u2014 large pool, 24W option' }\n    ],\n    aboveground: [\n      { model: 'GQ-PC230',  watt: 9,  size: '\\u00D8230mm', category: 'Above Ground PC', notes: '9W economy option' },\n      { model: 'GQ-PC230',  watt: 12, size: '\\u00D8230mm', category: 'Above Ground PC', notes: '12W standard above-ground' },\n      { model: 'GQ-PC290',  watt: 18, size: '\\u00D8290mm', category: 'Above Ground PC', notes: '18W larger above-ground' },\n      { model: 'GQ-PC290',  watt: 24, size: '\\u00D8290mm', category: 'Above Ground PC', notes: '24W max above-ground' }\n    ],\n    commercial: [\n      { model: 'GQ-ST260',  watt: 36, size: '\\u00D8260mm', category: 'Commercial SS', notes: 'High-output commercial fixture' }\n    ]\n  };\n\n  \/* =========================================\n     UNIT STATE\n     ========================================= *\/\n  var currentUnit = 'ft';\n\n  window.gqSetUnit = function(unit) {\n    currentUnit = unit;\n    var btns = document.querySelectorAll('#gq-tool-1 .gq-toggle-btns button');\n    btns.forEach(function(b) {\n      b.classList.toggle('active', b.getAttribute('data-unit') === unit);\n    });\n    var label = unit === 'ft' ? 'ft' : 'm';\n    document.getElementById('gq-len-unit').textContent = label;\n    document.getElementById('gq-wid-unit').textContent = label;\n    document.getElementById('gq-dep-unit').textContent = label;\n  };\n\n  \/* =========================================\n     CALCULATION ENGINE\n     ========================================= *\/\n  window.gqCalculate = function() {\n    \/\/ Clear errors\n    var fields = document.querySelectorAll('#gq-tool-1 .gq-field');\n    fields.forEach(function(f) { f.classList.remove('has-error'); });\n\n    var lengthVal = parseFloat(document.getElementById('gq-pool-length').value);\n    var widthVal  = parseFloat(document.getElementById('gq-pool-width').value);\n    var depthVal  = parseFloat(document.getElementById('gq-pool-depth').value);\n    var poolType  = document.getElementById('gq-pool-type').value;\n    var usage     = document.getElementById('gq-pool-usage').value;\n\n    \/\/ Validate\n    var valid = true;\n    if (!lengthVal || lengthVal <= 0) {\n      document.getElementById('gq-pool-length').closest('.gq-field').classList.add('has-error');\n      valid = false;\n    }\n    if (!widthVal || widthVal <= 0) {\n      document.getElementById('gq-pool-width').closest('.gq-field').classList.add('has-error');\n      valid = false;\n    }\n    if (!depthVal || depthVal <= 0) {\n      document.getElementById('gq-pool-depth').closest('.gq-field').classList.add('has-error');\n      valid = false;\n    }\n    if (!valid) return;\n\n    \/\/ Convert to feet for calculation\n    var lengthFt = currentUnit === 'm' ? lengthVal * 3.28084 : lengthVal;\n    var widthFt  = currentUnit === 'm' ? widthVal  * 3.28084 : widthVal;\n    var depthFt  = currentUnit === 'm' ? depthVal  * 3.28084 : depthVal;\n\n    var areaSqFt = lengthFt * widthFt;\n    var volumeGal = areaSqFt * depthFt * 7.48;\n\n    \/\/ Determine coverage per fixture\n    var isCommercial = (usage === 'commercial-use' || poolType === 'commercial');\n    var sqFtPerFixture;\n    if (poolType === 'spa' || poolType === 'fountain') {\n      sqFtPerFixture = 40; \/\/ small areas need more light density\n    } else if (isCommercial) {\n      sqFtPerFixture = 110; \/\/ 100-120 range\n    } else {\n      sqFtPerFixture = 175; \/\/ 150-200 range\n    }\n\n    var fixtureCount = Math.max(1, Math.ceil(areaSqFt \/ sqFtPerFixture));\n\n    \/\/ Select product line and best model\n    var recommendation = selectProducts(poolType, areaSqFt, fixtureCount, isCommercial, depthFt);\n\n    \/\/ Render results\n    renderResults(recommendation, areaSqFt, volumeGal, fixtureCount, poolType, isCommercial);\n  };\n\n  function selectProducts(poolType, areaSqFt, count, isCommercial, depthFt) {\n    var primary, alternate;\n    var notes = [];\n\n    if (poolType === 'spa' || poolType === 'fountain') {\n      \/\/ Small: use compact inground\n      if (areaSqFt <= 50) {\n        primary = { product: PRODUCTS.inground[0], qty: count }; \/\/ 3W\n        alternate = { product: PRODUCTS.inground[1], qty: count }; \/\/ 6W\n      } else {\n        primary = { product: PRODUCTS.inground[1], qty: count }; \/\/ 6W\n        alternate = { product: PRODUCTS.inground[2], qty: Math.max(1, Math.ceil(count * 0.6)) }; \/\/ 12W fewer\n      }\n      notes.push('For spas and fountains, compact flush-mount fixtures with IP68 rating recommended.');\n      notes.push('Consider RGB\/RGBW color-changing options for decorative features.');\n\n    } else if (poolType === 'aboveground') {\n      if (areaSqFt <= 200) {\n        primary = { product: PRODUCTS.aboveground[0], qty: count }; \/\/ 9W\n        alternate = { product: PRODUCTS.aboveground[1], qty: count }; \/\/ 12W\n      } else if (areaSqFt <= 400) {\n        primary = { product: PRODUCTS.aboveground[1], qty: count }; \/\/ 12W\n        alternate = { product: PRODUCTS.aboveground[2], qty: Math.max(1, Math.ceil(count * 0.75)) }; \/\/ 18W\n      } else {\n        primary = { product: PRODUCTS.aboveground[2], qty: count }; \/\/ 18W\n        alternate = { product: PRODUCTS.aboveground[3], qty: count }; \/\/ 24W\n      }\n      notes.push('PC-body fixtures are ideal for above-ground pools \u2014 lightweight, corrosion-resistant.');\n      notes.push('Surface-mount design requires no niche \u2014 reduces installation time.');\n\n    } else if (poolType === 'retrofit') {\n      if (areaSqFt <= 300) {\n        primary = { product: PRODUCTS.surface[0], qty: count }; \/\/ ST180 6W\n        alternate = { product: PRODUCTS.surface[1], qty: count }; \/\/ ST230 12W\n      } else if (areaSqFt <= 600) {\n        primary = { product: PRODUCTS.surface[1], qty: count }; \/\/ ST230 12W\n        alternate = { product: PRODUCTS.surface[2], qty: count }; \/\/ ST290 18W\n      } else {\n        primary = { product: PRODUCTS.surface[2], qty: count }; \/\/ ST290 18W\n        alternate = { product: PRODUCTS.surface[3], qty: count }; \/\/ ST290 24W\n      }\n      notes.push('Surface-mount stainless steel fixtures bolt directly to the pool wall \u2014 no niche required.');\n      notes.push('Ideal for retrofitting vinyl, fiberglass, or concrete pools with existing conduit.');\n\n    } else if (isCommercial || poolType === 'commercial') {\n      \/\/ Commercial \u2014 use GQ-ST260 36W as primary\n      var commCount = Math.max(2, count);\n      primary = { product: PRODUCTS.commercial[0], qty: commCount }; \/\/ 36W\n      \/\/ Alternate: more units of 18W inground\n      var altCount = Math.ceil(commCount * 1.5);\n      alternate = { product: PRODUCTS.inground[3], qty: altCount }; \/\/ 18W\n      notes.push('Commercial pools require higher lumen density \u2014 100-120 sq ft per fixture minimum.');\n      notes.push('GQ-ST260 (36W) provides maximum output for large-scale installations.');\n      notes.push('Verify local code compliance for public pool lighting levels.');\n\n    } else {\n      \/\/ Standard inground residential\n      if (areaSqFt <= 250) {\n        primary = { product: PRODUCTS.inground[1], qty: count }; \/\/ 6W\n        alternate = { product: PRODUCTS.inground[2], qty: Math.max(1, count - 1) }; \/\/ 12W fewer\n      } else if (areaSqFt <= 500) {\n        primary = { product: PRODUCTS.inground[2], qty: count }; \/\/ 12W\n        alternate = { product: PRODUCTS.inground[3], qty: Math.max(1, Math.ceil(count * 0.75)) }; \/\/ 18W fewer\n      } else if (areaSqFt <= 900) {\n        primary = { product: PRODUCTS.inground[3], qty: count }; \/\/ 18W\n        alternate = { product: PRODUCTS.inground[2], qty: Math.ceil(count * 1.3) }; \/\/ 12W more\n      } else {\n        \/\/ Very large residential \u2014 use 18W or suggest commercial\n        primary = { product: PRODUCTS.inground[3], qty: count }; \/\/ 18W\n        alternate = { product: PRODUCTS.commercial[0], qty: Math.max(2, Math.ceil(count * 0.6)) }; \/\/ 36W fewer\n        notes.push('Pool exceeds typical residential sizing \u2014 consider commercial-grade GQ-ST260 fixtures.');\n      }\n      notes.push('Flush-mount stainless steel construction rated IP68 for permanent submersion.');\n      if (depthFt >= 6) {\n        notes.push('Deeper pools benefit from higher wattage fixtures for adequate bottom illumination.');\n      }\n    }\n\n    return { primary: primary, alternate: alternate, notes: notes };\n  }\n\n  function getTransformerSize(totalWatts) {\n    \/\/ Standard transformer sizes, recommend 20% headroom\n    var needed = totalWatts * 1.2;\n    var sizes = [60, 100, 150, 200, 300, 500, 600, 900, 1200];\n    for (var i = 0; i < sizes.length; i++) {\n      if (sizes[i] >= needed) return sizes[i];\n    }\n    return Math.ceil(needed \/ 300) * 300; \/\/ round up to 300 increments\n  }\n\n  function renderResults(rec, areaSqFt, volumeGal, fixtureCount, poolType, isCommercial) {\n    var panel = document.getElementById('gq-results');\n    panel.classList.add('visible');\n\n    var pri = rec.primary;\n    var alt = rec.alternate;\n    var priTotal = pri.product.watt * pri.qty;\n    var altTotal = alt.product.watt * alt.qty;\n    var transformer = getTransformerSize(priTotal);\n\n    \/\/ Summary cards\n    var areaTxt = areaSqFt.toFixed(0);\n    var volTxt;\n    if (volumeGal >= 1000) {\n      volTxt = (volumeGal \/ 1000).toFixed(1) + 'k';\n    } else {\n      volTxt = volumeGal.toFixed(0);\n    }\n\n    document.getElementById('gq-summary-grid').innerHTML =\n      '<div class=\"gq-summary-card\">' +\n        '<div class=\"gq-card-value\">' + areaTxt + '<\/div>' +\n        '<div class=\"gq-card-label\">Sq Ft Area<\/div>' +\n      '<\/div>' +\n      '<div class=\"gq-summary-card\">' +\n        '<div class=\"gq-card-value accent\">' + pri.qty + '<\/div>' +\n        '<div class=\"gq-card-label\">Fixtures Needed<\/div>' +\n      '<\/div>' +\n      '<div class=\"gq-summary-card\">' +\n        '<div class=\"gq-card-value\">' + priTotal + 'W<\/div>' +\n        '<div class=\"gq-card-label\">Total Wattage<\/div>' +\n      '<\/div>' +\n      '<div class=\"gq-summary-card\">' +\n        '<div class=\"gq-card-value\">' + transformer + 'W<\/div>' +\n        '<div class=\"gq-card-label\">Transformer Size<\/div>' +\n      '<\/div>';\n\n    \/\/ Recommendation table\n    var tbody = document.getElementById('gq-rec-tbody');\n    tbody.innerHTML =\n      '<tr>' +\n        '<td><span class=\"gq-model-name\">' + pri.product.model + '<\/span><span class=\"gq-rec-badge\">Recommended<\/span><br><span style=\"font-size:11px;color:#808890;\">' + pri.product.category + '<\/span><\/td>' +\n        '<td class=\"gq-data-cell\">' + pri.product.watt + 'W<\/td>' +\n        '<td class=\"gq-data-cell\">' + pri.product.size + '<\/td>' +\n        '<td class=\"gq-data-cell\">' + pri.qty + '<\/td>' +\n        '<td class=\"gq-data-cell\">' + priTotal + 'W<\/td>' +\n      '<\/tr>' +\n      '<tr>' +\n        '<td><span class=\"gq-model-name\">' + alt.product.model + '<\/span><span class=\"gq-rec-badge alt\">Alternative<\/span><br><span style=\"font-size:11px;color:#808890;\">' + alt.product.category + '<\/span><\/td>' +\n        '<td class=\"gq-data-cell\">' + alt.product.watt + 'W<\/td>' +\n        '<td class=\"gq-data-cell\">' + alt.product.size + '<\/td>' +\n        '<td class=\"gq-data-cell\">' + alt.qty + '<\/td>' +\n        '<td class=\"gq-data-cell\">' + altTotal + 'W<\/td>' +\n      '<\/tr>';\n\n    \/\/ Transformer note\n    var xfNote = document.getElementById('gq-transformer-note');\n    xfNote.innerHTML =\n      '<span class=\"gq-note-label\">Transformer Sizing<\/span>' +\n      'Total load for recommended configuration: <strong>' + priTotal + 'W<\/strong>. ' +\n      'With 20% headroom for safe operation, a <strong>' + transformer + 'W low-voltage transformer<\/strong> ' +\n      'is recommended. Use 12V AC output with proper grounding per NEC Article 680.' +\n      (priTotal > 300 ? ' For loads exceeding 300W, consider splitting across multiple transformers.' : '');\n\n    \/\/ Spec notes\n    var notesEl = document.getElementById('gq-spec-notes');\n    var noteItems = rec.notes.map(function(n) { return '<li>' + n + '<\/li>'; }).join('');\n    notesEl.innerHTML = '<ul>' + noteItems + '<\/ul>';\n\n    \/\/ Scroll to results\n    panel.scrollIntoView({ behavior: 'smooth', block: 'start' });\n  }\n\n})();\n<\/script>\n\n<\/body>\n<\/html>\n\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Pool Light Sizing Calculator \u2014 Guangqi Lighting Pool Light Sizing Calculator Enter your pool dimensions to get fixture recommendations, quantity, and transformer sizing. Units Feet Meters Pool Length ft Enter a valid length Pool Width ft Enter a valid width Average Depth ft Enter a valid depth Pool Type Inground PoolAbove Ground PoolRetrofit \/ Existing [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":2041,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-2163","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages\/2163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/comments?post=2163"}],"version-history":[{"count":0,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages\/2163\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages\/2041"}],"wp:attachment":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/media?parent=2163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}