


<style id="elementor-post-21883">.elementor-21883 .elementor-element.elementor-element-4c0d006{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--margin-top:-134px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-21883 .elementor-element.elementor-element-cb84231{--display:flex;--justify-content:center;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-21883 .elementor-element.elementor-element-8029acc > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-21883 .elementor-element.elementor-element-8029acc{text-align:center;}.elementor-21883 .elementor-element.elementor-element-8029acc .elementor-heading-title{font-family:"Roboto", Sans-serif;font-size:29px;font-weight:600;-webkit-text-stroke-color:#000;stroke:#000;text-shadow:0px 0px 0px rgba(0,0,0,0.3);color:#33558B;}.elementor-21883 .elementor-element.elementor-element-8029acc .elementor-heading-title a{transition-duration:0s;}.elementor-21883 .elementor-element.elementor-element-1f7ccd9{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--margin-top:-35px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-21883 .elementor-element.elementor-element-199f09d{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-21883 .elementor-element.elementor-element-338ac64{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-21883 .elementor-element.elementor-element-7a9e4e5{--display:flex;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}@media(max-width:1024px){.elementor-21883 .elementor-element.elementor-element-8029acc > .elementor-widget-container{padding:0px 0px 0px 0px;}}@media(max-width:767px){.elementor-21883 .elementor-element.elementor-element-d13d2e6 > .elementor-widget-container{margin:97px 0px 0px 0px;}.elementor-21883 .elementor-element.elementor-element-cb84231{--margin-top:-20px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-21883 .elementor-element.elementor-element-8029acc > .elementor-widget-container{padding:010px 010px 5px 010px;}.elementor-21883 .elementor-element.elementor-element-8029acc{text-align:center;}.elementor-21883 .elementor-element.elementor-element-8029acc .elementor-heading-title{font-size:17px;-webkit-text-stroke-width:0px;stroke-width:0px;}.elementor-21883 .elementor-element.elementor-element-1f7ccd9{--margin-top:-25px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}}@media(min-width:768px){.elementor-21883 .elementor-element.elementor-element-cb84231{--content-width:1600px;}}</style>{"id":21883,"date":"2026-08-19T18:07:09","date_gmt":"2026-08-19T14:07:09","guid":{"rendered":"https:\/\/datvale.ge\/%e1%83%90%e1%83%a3%e1%83%96%e1%83%98%e1%83%a1-%e1%83%99%e1%83%90%e1%83%9a%e1%83%99%e1%83%a3%e1%83%9a%e1%83%90%e1%83%a2%e1%83%9d%e1%83%a0%e1%83%98\/"},"modified":"2026-10-07T18:32:40","modified_gmt":"2026-10-07T14:32:40","slug":"pool-calculator","status":"publish","type":"page","link":"https:\/\/datvale.ge\/en\/pool-calculator\/","title":{"rendered":"Pool Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"21883\" class=\"elementor elementor-21883 elementor-18959\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4c0d006 e-flex e-con-boxed e-con e-parent\" data-id=\"4c0d006\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d13d2e6 elementor-widget elementor-widget-html\" data-id=\"d13d2e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"dv-kalkulatorebi-banner\">\r\n\r\n  <img decoding=\"async\"\r\n    src=\"https:\/\/datvale.ge\/wp-content\/uploads\/2026\/10\/remontis-kalkulatori-2.webp\"\r\n    alt=\"Datvale Calculators\"\r\n  >\r\n\r\n<\/div>\r\n\r\n<style>\r\n\r\n.dv-kalkulatorebi-banner,\r\n.dv-kalkulatorebi-banner *{\r\n  box-sizing:border-box;\r\n}\r\n\r\n.dv-kalkulatorebi-banner{\r\n  position:relative;\r\n  overflow:hidden;\r\n\r\n  width:100%;\r\n  height:215px;\r\n\r\n  margin:18px 0;\r\n\r\n  border-radius:22px;\r\n\r\n  background:#eef1f4;\r\n}\r\n\r\n.dv-kalkulatorebi-banner img{\r\n  display:block;\r\n\r\n  width:100%;\r\n  height:100%;\r\n\r\n  margin:0;\r\n  padding:0;\r\n\r\n  border:0;\r\n\r\n  object-fit:cover;\r\n  object-position:center;\r\n\r\n  image-rendering:auto;\r\n}\r\n\r\n\r\n\/* TABLET *\/\r\n\r\n@media(max-width:900px){\r\n\r\n  .dv-kalkulatorebi-banner{\r\n    height:190px;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* MOBILE *\/\r\n\r\n@media(max-width:700px){\r\n\r\n  .dv-kalkulatorebi-banner{\r\n    height:183px;\r\n\r\n    margin:10px 0;\r\n\r\n    border-radius:14px;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* SMALL MOBILE *\/\r\n\r\n@media(max-width:380px){\r\n\r\n  .dv-kalkulatorebi-banner{\r\n    height:165px;\r\n  }\r\n\r\n}\r\n\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cb84231 e-flex e-con-boxed e-con e-parent\" data-id=\"cb84231\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8029acc elementor-widget elementor-widget-heading\" data-id=\"8029acc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Pool Construction Cost 2026 \u2013 Pool Calculator<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1f7ccd9 e-flex e-con-boxed e-con e-parent\" data-id=\"1f7ccd9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ce415db elementor-widget elementor-widget-html\" data-id=\"ce415db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"dv-pool-calculator\">\r\n\r\n<style>\r\n#dv-pool-calculator,\r\n#dv-pool-calculator * {\r\n  box-sizing: border-box;\r\n}\r\n\r\n#dv-pool-calculator {\r\n  --dv-blue:#0b3a78;\r\n  --dv-blue-2:#1764bd;\r\n  --dv-text:#173558;\r\n  --dv-muted:#5f7287;\r\n  --dv-border:#e3ebf5;\r\n  --dv-success:#13795b;\r\n\r\n  position:relative;\r\n  isolation:isolate;\r\n\r\n  width:100%;\r\n  max-width:1260px;\r\n\r\n  margin:26px auto;\r\n  padding:42px 22px;\r\n\r\n  border:1px solid var(--dv-border);\r\n  border-radius:24px;\r\n\r\n  background:\r\n    radial-gradient(circle at top right,rgba(52,86,150,.09),transparent 34%),\r\n    linear-gradient(180deg,#f8fbff 0%,#eef4fb 100%);\r\n\r\n  color:var(--dv-text);\r\n\r\n  font-family:\r\n    system-ui,\r\n    -apple-system,\r\n    BlinkMacSystemFont,\r\n    \"Segoe UI\",\r\n    sans-serif;\r\n\r\n  box-shadow:0 16px 42px rgba(11,58,120,.10);\r\n}\r\n\r\n#dv-pool-calculator::before {\r\n  content:\"\";\r\n  position:absolute;\r\n  inset:-180px;\r\n  z-index:-1;\r\n  pointer-events:none;\r\n\r\n  background:\r\n    radial-gradient(circle at 12% 0%,rgba(23,100,189,.12),transparent 30%),\r\n    radial-gradient(circle at 92% 10%,rgba(11,58,120,.10),transparent 28%);\r\n}\r\n\r\n#dv-pool-calculator .dv-calculator {\r\n  width:100%;\r\n  max-width:1180px;\r\n  margin:0 auto;\r\n}\r\n\r\n#dv-pool-calculator .dv-input-card,\r\n#dv-pool-calculator .dv-result-card,\r\n#dv-pool-calculator .dv-summary,\r\n#dv-pool-calculator .dv-info-card,\r\n#dv-pool-calculator .dv-build-link {\r\n  border:1px solid var(--dv-border);\r\n  border-radius:22px;\r\n  background:#fff;\r\n  box-shadow:0 16px 40px rgba(11,58,120,.10);\r\n}\r\n\r\n#dv-pool-calculator .dv-input-card {\r\n  padding:28px;\r\n  margin-bottom:24px;\r\n}\r\n\r\n#dv-pool-calculator .dv-section-title {\r\n  display:inline-flex;\r\n  align-items:center;\r\n  gap:11px;\r\n\r\n  margin:0 0 22px;\r\n\r\n  color:var(--dv-text);\r\n\r\n  font-size:24px;\r\n  font-weight:950;\r\n  line-height:1.18;\r\n  letter-spacing:-.02em;\r\n}\r\n\r\n#dv-pool-calculator .dv-section-number {\r\n  display:inline-flex;\r\n\r\n  width:36px;\r\n  height:36px;\r\n\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  flex:0 0 36px;\r\n\r\n  border-radius:50%;\r\n\r\n  background:linear-gradient(\r\n    135deg,\r\n    var(--dv-blue),\r\n    var(--dv-blue-2)\r\n  );\r\n\r\n  color:#fff;\r\n\r\n  font-size:14px;\r\n  font-weight:950;\r\n\r\n  box-shadow:0 8px 18px rgba(11,58,120,.18);\r\n}\r\n\r\n\r\n\/* DIMENSIONS *\/\r\n\r\n#dv-pool-calculator .dv-input-grid {\r\n  display:grid;\r\n  grid-template-columns:repeat(3,minmax(0,1fr));\r\n  gap:18px;\r\n}\r\n\r\n\r\n\/* THREE MATCHING OPTIONS *\/\r\n\r\n#dv-pool-calculator .dv-options-grid {\r\n  display:grid;\r\n  grid-template-columns:repeat(3,minmax(0,1fr));\r\n  gap:18px;\r\n  margin-top:20px;\r\n}\r\n\r\n#dv-pool-calculator .dv-field {\r\n  min-width:0;\r\n}\r\n\r\n#dv-pool-calculator .dv-field label {\r\n  display:block;\r\n\r\n  min-height:21px;\r\n  margin-bottom:8px;\r\n\r\n  color:var(--dv-text);\r\n\r\n  font-size:14px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-pool-calculator .dv-input-wrap {\r\n  position:relative;\r\n}\r\n\r\n#dv-pool-calculator .dv-field input,\r\n#dv-pool-calculator .dv-field select {\r\n  display:block;\r\n\r\n  width:100%;\r\n  height:56px;\r\n\r\n  margin:0;\r\n\r\n  border:1px solid #d8e3ef;\r\n  border-radius:14px;\r\n\r\n  outline:none;\r\n\r\n  background:#f8fbff;\r\n  color:var(--dv-text);\r\n\r\n  font-size:16px;\r\n  font-weight:800;\r\n\r\n  transition:\r\n    border-color .2s ease,\r\n    box-shadow .2s ease,\r\n    background .2s ease;\r\n}\r\n\r\n#dv-pool-calculator .dv-field input {\r\n  padding:0 52px 0 15px;\r\n}\r\n\r\n#dv-pool-calculator .dv-field select {\r\n  padding:0 42px 0 15px;\r\n  cursor:pointer;\r\n}\r\n\r\n#dv-pool-calculator .dv-field input:focus,\r\n#dv-pool-calculator .dv-field select:focus {\r\n  border-color:var(--dv-blue-2);\r\n  background:#fff;\r\n  box-shadow:0 0 0 4px rgba(23,100,189,.10);\r\n}\r\n\r\n#dv-pool-calculator .dv-field input::placeholder {\r\n  color:#9aabba;\r\n  opacity:1;\r\n}\r\n\r\n#dv-pool-calculator .dv-unit {\r\n  position:absolute;\r\n  top:50%;\r\n  right:14px;\r\n\r\n  transform:translateY(-50%);\r\n\r\n  color:var(--dv-muted);\r\n\r\n  font-size:13px;\r\n  font-weight:850;\r\n\r\n  pointer-events:none;\r\n}\r\n\r\n#dv-pool-calculator .dv-note {\r\n  margin-top:20px;\r\n  padding:14px 16px;\r\n\r\n  border:1px solid #dce7f2;\r\n  border-radius:14px;\r\n\r\n  background:#f8fbff;\r\n  color:#526b84;\r\n\r\n  font-size:13px;\r\n  line-height:1.55;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-pool-calculator .dv-calculate-v2 {\r\n  display:flex;\r\n\r\n  width:100%;\r\n  min-height:58px;\r\n\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  margin-top:22px;\r\n  padding:14px 24px;\r\n\r\n  border:0;\r\n  border-radius:14px;\r\n\r\n  cursor:pointer;\r\n\r\n  background:linear-gradient(\r\n    135deg,\r\n    var(--dv-blue),\r\n    var(--dv-blue-2)\r\n  );\r\n\r\n  color:#fff;\r\n\r\n  font-size:17px;\r\n  font-weight:950;\r\n\r\n  box-shadow:0 12px 28px rgba(11,58,120,.22);\r\n\r\n  transition:\r\n    transform .2s ease,\r\n    box-shadow .2s ease,\r\n    filter .2s ease;\r\n}\r\n\r\n#dv-pool-calculator .dv-calculate-v2:hover {\r\n  transform:translateY(-2px);\r\n  filter:brightness(1.03);\r\n  box-shadow:0 16px 34px rgba(11,58,120,.26);\r\n}\r\n\r\n#dv-pool-calculator .dv-error {\r\n  display:none;\r\n\r\n  margin-top:14px;\r\n  padding:13px 15px;\r\n\r\n  border:1px solid rgba(174,32,32,.18);\r\n  border-radius:12px;\r\n\r\n  background:#fff2f2;\r\n  color:#a32020;\r\n\r\n  font-size:14px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-pool-calculator .dv-output {\r\n  display:none;\r\n\r\n  \/*\r\n   * Due to the sticky header\r\n   * the top of the results will no longer be cut off.\r\n   *\/\r\n  scroll-margin-top:150px;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show {\r\n  display:block;\r\n}\r\n\r\n#dv-pool-calculator .dv-results {\r\n  display:grid;\r\n  grid-template-columns:1fr;\r\n  gap:18px;\r\n\r\n  max-width:1080px;\r\n  margin:0 auto;\r\n}\r\n\r\n#dv-pool-calculator .dv-result-card {\r\n  overflow:hidden;\r\n}\r\n\r\n#dv-pool-calculator .dv-result-head {\r\n  display:flex;\r\n  align-items:center;\r\n  gap:10px;\r\n\r\n  padding:17px 20px;\r\n\r\n  background:linear-gradient(\r\n    135deg,\r\n    var(--dv-blue),\r\n    var(--dv-blue-2)\r\n  );\r\n\r\n  color:#fff;\r\n}\r\n\r\n#dv-pool-calculator .dv-result-icon {\r\n  display:inline-flex;\r\n\r\n  width:34px;\r\n  height:34px;\r\n\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  flex:0 0 34px;\r\n\r\n  border-radius:10px;\r\n\r\n  background:rgba(255,255,255,.14);\r\n\r\n  font-size:17px;\r\n}\r\n\r\n#dv-pool-calculator .dv-result-head h3 {\r\n  margin:0;\r\n\r\n  color:#fff;\r\n\r\n  font-size:18px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-pool-calculator .dv-result-body {\r\n  padding:10px 18px 15px;\r\n}\r\n\r\n#dv-pool-calculator .dv-row {\r\n  display:grid;\r\n\r\n  grid-template-columns:minmax(0,1fr) auto;\r\n\r\n  gap:15px;\r\n  align-items:center;\r\n\r\n  padding:12px 0;\r\n\r\n  border-bottom:1px dashed #d9e4ef;\r\n}\r\n\r\n#dv-pool-calculator .dv-row:last-child {\r\n  border-bottom:0;\r\n}\r\n\r\n#dv-pool-calculator .dv-row-name {\r\n  min-width:0;\r\n\r\n  color:#425a74;\r\n\r\n  font-size:14px;\r\n  line-height:1.45;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-pool-calculator .dv-row-value {\r\n  color:var(--dv-text);\r\n\r\n  text-align:right;\r\n  white-space:nowrap;\r\n\r\n  font-size:15px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-pool-calculator .dv-card-total {\r\n  margin:7px 0 2px;\r\n  padding:14px 15px;\r\n\r\n  border:1px solid #d8e3ef;\r\n  border-radius:13px;\r\n\r\n  background:#f4f8fd;\r\n  color:var(--dv-text);\r\n\r\n  font-size:15px;\r\n  font-weight:950;\r\n  text-align:right;\r\n}\r\n\r\n#dv-pool-calculator .dv-summary {\r\n  max-width:1080px;\r\n\r\n  margin:22px auto 0;\r\n  padding:26px;\r\n}\r\n\r\n#dv-pool-calculator .dv-summary-grid {\r\n  display:grid;\r\n  grid-template-columns:repeat(4,minmax(0,1fr));\r\n  gap:14px;\r\n}\r\n\r\n#dv-pool-calculator .dv-summary-item {\r\n  padding:18px;\r\n\r\n  border:1px solid #e1e9f3;\r\n  border-radius:16px;\r\n\r\n  background:#f8fbff;\r\n\r\n  text-align:center;\r\n}\r\n\r\n#dv-pool-calculator .dv-summary-label {\r\n  display:block;\r\n\r\n  margin-bottom:7px;\r\n\r\n  color:var(--dv-muted);\r\n\r\n  font-size:13px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-pool-calculator .dv-summary-value {\r\n  color:var(--dv-text);\r\n\r\n  font-size:22px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-pool-calculator .dv-grand-total {\r\n  position:relative;\r\n  overflow:hidden;\r\n\r\n  margin-top:16px;\r\n  padding:29px 20px;\r\n\r\n  border-radius:18px;\r\n\r\n  background:\r\n    radial-gradient(\r\n      circle at top right,\r\n      rgba(255,255,255,.18),\r\n      transparent 36%\r\n    ),\r\n    linear-gradient(\r\n      135deg,\r\n      var(--dv-blue),\r\n      var(--dv-blue-2)\r\n    );\r\n\r\n  color:#fff;\r\n\r\n  text-align:center;\r\n\r\n  box-shadow:0 14px 30px rgba(11,58,120,.20);\r\n}\r\n\r\n#dv-pool-calculator .dv-grand-total small {\r\n  display:block;\r\n\r\n  margin-bottom:8px;\r\n\r\n  color:rgba(255,255,255,.82);\r\n\r\n  font-size:14px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-pool-calculator .dv-grand-total strong {\r\n  display:block;\r\n\r\n  color:#fff;\r\n\r\n  font-size:clamp(34px,6vw,52px);\r\n  line-height:1;\r\n  font-weight:1000;\r\n  letter-spacing:-.04em;\r\n}\r\n\r\n#dv-pool-calculator .dv-pdf-button {\r\n  display:flex;\r\n\r\n  width:100%;\r\n  min-height:56px;\r\n\r\n  align-items:center;\r\n  justify-content:center;\r\n  gap:9px;\r\n\r\n  margin-top:15px;\r\n  padding:14px 22px;\r\n\r\n  border:0;\r\n  border-radius:14px;\r\n\r\n  cursor:pointer;\r\n\r\n  background:linear-gradient(\r\n    135deg,\r\n    #13795b,\r\n    #0e9a70\r\n  );\r\n\r\n  color:#fff;\r\n\r\n  font-size:16px;\r\n  font-weight:950;\r\n\r\n  box-shadow:0 12px 28px rgba(19,121,91,.20);\r\n}\r\n\r\n#dv-pool-calculator .dv-info-card {\r\n  max-width:1080px;\r\n\r\n  margin:20px auto 0;\r\n  padding:22px;\r\n}\r\n\r\n#dv-pool-calculator .dv-info-card h3 {\r\n  margin:0 0 10px;\r\n\r\n  color:var(--dv-text);\r\n\r\n  font-size:20px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-pool-calculator .dv-info-card p {\r\n  margin:0;\r\n\r\n  color:#526b84;\r\n\r\n  font-size:13px;\r\n  line-height:1.65;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-pool-calculator .dv-build-link {\r\n  display:grid;\r\n\r\n  grid-template-columns:minmax(0,1fr) auto;\r\n\r\n  align-items:center;\r\n  gap:22px;\r\n\r\n  max-width:1080px;\r\n\r\n  margin:20px auto 0;\r\n  padding:22px 24px;\r\n\r\n  background:linear-gradient(\r\n    135deg,\r\n    #f8fbff,\r\n    #eaf2fb\r\n  );\r\n}\r\n\r\n#dv-pool-calculator .dv-build-link-kicker {\r\n  display:inline-block;\r\n\r\n  margin-bottom:5px;\r\n\r\n  color:#1764bd;\r\n\r\n  font-size:12px;\r\n  font-weight:950;\r\n  letter-spacing:.04em;\r\n}\r\n\r\n#dv-pool-calculator .dv-build-link h3 {\r\n  margin:0 0 6px;\r\n\r\n  color:#173558;\r\n\r\n  font-size:22px;\r\n  font-weight:950;\r\n  line-height:1.18;\r\n}\r\n\r\n#dv-pool-calculator .dv-build-link p {\r\n  margin:0;\r\n\r\n  color:#5f7287;\r\n\r\n  font-size:14px;\r\n  font-weight:650;\r\n  line-height:1.45;\r\n}\r\n\r\n#dv-pool-calculator .dv-build-link a {\r\n  display:inline-flex;\r\n\r\n  min-width:260px;\r\n  min-height:54px;\r\n\r\n  align-items:center;\r\n  justify-content:center;\r\n  gap:9px;\r\n\r\n  padding:13px 20px;\r\n\r\n  border-radius:12px;\r\n\r\n  background:linear-gradient(\r\n    135deg,\r\n    #0b3a78,\r\n    #1764bd\r\n  );\r\n\r\n  color:#fff;\r\n\r\n  font-size:14px;\r\n  font-weight:950;\r\n\r\n  text-align:center;\r\n  text-decoration:none;\r\n\r\n  white-space:nowrap;\r\n\r\n  box-shadow:0 8px 18px rgba(11,58,120,.18);\r\n}\r\n\r\n\r\n\r\n\/* CLEAN RELATED CALCULATOR CARDS *\/\r\n\r\n#dv-pool-calculator .dv-related {\r\n  max-width:1080px;\r\n  margin:20px auto 0;\r\n  padding:22px;\r\n  border:1px solid var(--dv-border);\r\n  border-radius:22px;\r\n  background:#fff;\r\n  box-shadow:0 16px 40px rgba(11,58,120,.10);\r\n}\r\n\r\n#dv-pool-calculator .dv-related-grid {\r\n  display:grid;\r\n  grid-template-columns:repeat(2,minmax(0,1fr));\r\n  gap:14px;\r\n}\r\n\r\n#dv-pool-calculator .dv-related-link {\r\n  display:flex;\r\n  min-width:0;\r\n  align-items:center;\r\n  gap:12px;\r\n  padding:17px 16px;\r\n  border:1px solid #d8e3ef;\r\n  border-radius:16px;\r\n  background:#f8fbff;\r\n  color:var(--dv-blue);\r\n  text-decoration:none!important;\r\n  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background .2s ease;\r\n}\r\n\r\n#dv-pool-calculator .dv-related-link:hover {\r\n  transform:translateY(-2px);\r\n  border-color:rgba(23,100,189,.32);\r\n  background:#fff;\r\n  box-shadow:0 12px 26px rgba(11,58,120,.11);\r\n}\r\n\r\n#dv-pool-calculator .dv-related-icon {\r\n  display:inline-flex;\r\n  width:42px;\r\n  height:42px;\r\n  flex:0 0 42px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  border-radius:12px;\r\n  color:#fff;\r\n  background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  font-size:20px;\r\n  box-shadow:0 8px 18px rgba(11,58,120,.18);\r\n}\r\n\r\n#dv-pool-calculator .dv-related-text {\r\n  min-width:0;\r\n  flex:1;\r\n}\r\n\r\n#dv-pool-calculator .dv-related-text strong {\r\n  display:block;\r\n  margin-bottom:4px;\r\n  color:var(--dv-blue);\r\n  font-size:15px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-pool-calculator .dv-related-text small {\r\n  display:block;\r\n  color:var(--dv-muted);\r\n  font-size:12px;\r\n  line-height:1.45;\r\n}\r\n\r\n#dv-pool-calculator .dv-related-arrow {\r\n  display:inline-flex;\r\n  width:32px;\r\n  height:32px;\r\n  flex:0 0 32px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  border-radius:50%;\r\n  background:#eaf2f8;\r\n  color:var(--dv-blue);\r\n  font-size:18px;\r\n  font-weight:950;\r\n  transition:.2s ease;\r\n}\r\n\r\n#dv-pool-calculator .dv-related-link:hover .dv-related-arrow {\r\n  transform:translateX(3px);\r\n  background:var(--dv-blue);\r\n  color:#fff;\r\n}\r\n\r\n@media(max-width:760px) {\r\n  #dv-pool-calculator .dv-related {\r\n    padding:18px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-related-grid {\r\n    grid-template-columns:1fr;\r\n    gap:10px;\r\n  }\r\n}\r\n\r\n\/* ANIMATION *\/\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card,\r\n#dv-pool-calculator .dv-output.dv-show .dv-summary,\r\n#dv-pool-calculator .dv-output.dv-show .dv-info-card,\r\n#dv-pool-calculator .dv-output.dv-show .dv-build-link,\r\n#dv-pool-calculator .dv-output.dv-show .dv-related {\r\n  opacity:0;\r\n  transform:translateY(18px);\r\n  animation:dvPoolReveal .45s ease forwards;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card:nth-child(1) {\r\n  animation-delay:.03s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card:nth-child(2) {\r\n  animation-delay:.07s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card:nth-child(3) {\r\n  animation-delay:.11s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card:nth-child(4) {\r\n  animation-delay:.15s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card:nth-child(5) {\r\n  animation-delay:.19s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card:nth-child(6) {\r\n  animation-delay:.23s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-result-card:nth-child(7) {\r\n  animation-delay:.27s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-summary {\r\n  animation-delay:.31s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-info-card {\r\n  animation-delay:.35s;\r\n}\r\n\r\n#dv-pool-calculator .dv-output.dv-show .dv-build-link {\r\n  animation-delay:.39s;\r\n}\r\n\r\n@keyframes dvPoolReveal {\r\n  to {\r\n    opacity:1;\r\n    transform:translateY(0);\r\n  }\r\n}\r\n\r\n\r\n\r\n\/* COMPANY CALL REQUEST *\/\r\n#dv-pool-calculator .dv-call-request{\r\n  display:none;\r\n  width:100%;\r\n  max-width:100%;\r\n  min-width:0;\r\n  margin-top:14px;\r\n  padding:18px;\r\n  border:1px solid #d8e3ef;\r\n  border-radius:16px;\r\n  background:#f8fbff;\r\n  overflow:hidden;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-title{\r\n  margin:0 0 6px;\r\n  color:var(--dv-text);\r\n  font-size:17px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-text{\r\n  margin:0 0 12px;\r\n  color:var(--dv-muted);\r\n  font-size:13px;\r\n  line-height:1.5;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-row{\r\n  display:grid;\r\n  width:100%;\r\n  max-width:100%;\r\n  min-width:0;\r\n  grid-template-columns:minmax(0,1fr) auto;\r\n  gap:10px;\r\n  align-items:center;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-phone{\r\n  display:block;\r\n  width:100%;\r\n  max-width:100%;\r\n  min-width:0;\r\n  height:52px;\r\n  padding:0 14px;\r\n  border:1px solid #d8e3ef;\r\n  border-radius:12px;\r\n  outline:none;\r\n  background:#fff;\r\n  color:var(--dv-text);\r\n  font-size:15px;\r\n  font-weight:750;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-phone:focus{\r\n  border-color:var(--dv-success);\r\n  box-shadow:0 0 0 4px rgba(19,121,91,.10);\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-row.dv-has-saved-phone{\r\n  grid-template-columns:1fr;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-row.dv-has-saved-phone .dv-call-phone{\r\n  display:none;\r\n}\r\n\r\n#dv-pool-calculator .dv-request-call-btn{\r\n  min-height:52px;\r\n  max-width:100%;\r\n  min-width:0;\r\n  padding:13px 20px;\r\n  border:0;\r\n  border-radius:12px;\r\n  cursor:pointer;\r\n  background:linear-gradient(135deg,#13795b,#0e9a70);\r\n  color:#fff;\r\n  font-size:14px;\r\n  font-weight:950;\r\n  white-space:nowrap;\r\n  box-shadow:0 10px 24px rgba(19,121,91,.22);\r\n  transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;\r\n}\r\n\r\n#dv-pool-calculator .dv-request-call-btn:hover{\r\n  transform:translateY(-1px);\r\n  box-shadow:0 14px 30px rgba(19,121,91,.26);\r\n  filter:brightness(1.03);\r\n}\r\n\r\n#dv-pool-calculator .dv-request-call-btn:disabled{\r\n  opacity:.65;\r\n  cursor:wait;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-status{\r\n  display:none;\r\n  margin-top:10px;\r\n  padding:10px 12px;\r\n  border-radius:10px;\r\n  font-size:13px;\r\n  line-height:1.45;\r\n  font-weight:800;\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-status.dv-success{\r\n  display:block;\r\n  background:#eefaf5;\r\n  color:#13795b;\r\n  border:1px solid rgba(19,121,91,.16);\r\n}\r\n\r\n#dv-pool-calculator .dv-call-request-status.dv-error{\r\n  display:block;\r\n  background:#fff2f2;\r\n  color:#a32020;\r\n  border:1px solid rgba(174,32,32,.18);\r\n}\r\n\r\n@media(max-width:760px){\r\n  #dv-pool-calculator .dv-call-request{\r\n    width:100%;\r\n    max-width:100%;\r\n    min-width:0;\r\n    overflow:hidden;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-call-request-row{\r\n    width:100%;\r\n    max-width:100%;\r\n    min-width:0;\r\n    grid-template-columns:minmax(0,1fr);\r\n  }\r\n\r\n  #dv-pool-calculator .dv-call-phone{\r\n    width:100%;\r\n    max-width:100%;\r\n    min-width:0;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-request-call-btn{\r\n    display:block;\r\n    width:100%;\r\n    max-width:100%;\r\n    min-width:0;\r\n    white-space:normal;\r\n    overflow-wrap:anywhere;\r\n  }\r\n}\r\n\r\n\r\n\/* TABLET *\/\r\n\r\n@media(max-width:980px) {\r\n\r\n  #dv-pool-calculator {\r\n    padding:34px 18px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-input-grid {\r\n    grid-template-columns:repeat(2,minmax(0,1fr));\r\n  }\r\n\r\n  #dv-pool-calculator .dv-options-grid {\r\n    grid-template-columns:repeat(3,minmax(0,1fr));\r\n  }\r\n\r\n  #dv-pool-calculator .dv-summary-grid {\r\n    grid-template-columns:repeat(2,minmax(0,1fr));\r\n  }\r\n\r\n  #dv-pool-calculator .dv-build-link {\r\n    grid-template-columns:1fr;\r\n    text-align:center;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-build-link a {\r\n    width:100%;\r\n  }\r\n}\r\n\r\n\r\n\/* MOBILE *\/\r\n\r\n@media(max-width:760px) {\r\n\r\n  #dv-pool-calculator {\r\n    margin:18px auto;\r\n    padding:26px 12px;\r\n    border-radius:18px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-input-card,\r\n  #dv-pool-calculator .dv-summary {\r\n    padding:18px;\r\n    border-radius:18px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-input-grid,\r\n  #dv-pool-calculator .dv-options-grid,\r\n  #dv-pool-calculator .dv-summary-grid {\r\n    grid-template-columns:1fr;\r\n    gap:16px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-section-title {\r\n    font-size:21px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-output {\r\n    scroll-margin-top:110px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-row {\r\n    gap:9px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-row-name {\r\n    font-size:13px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-row-value {\r\n    font-size:14px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-build-link {\r\n    gap:15px;\r\n    padding:18px 16px;\r\n    border-radius:16px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-build-link h3 {\r\n    font-size:20px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-build-link a {\r\n    width:100%;\r\n    min-width:0;\r\n    white-space:normal;\r\n  }\r\n}\r\n\r\n@media(max-width:390px) {\r\n\r\n  #dv-pool-calculator {\r\n    padding:20px 8px;\r\n    border-radius:16px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-input-card,\r\n  #dv-pool-calculator .dv-summary {\r\n    padding:15px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-result-head {\r\n    padding:15px 14px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-result-body {\r\n    padding:9px 14px 14px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-grand-total {\r\n    padding:24px 14px;\r\n  }\r\n}\r\n\r\n\r\n\/* PDF *\/\r\n\r\n@media print {\r\n\r\n  body * {\r\n    visibility:hidden!important;\r\n  }\r\n\r\n  #dv-pool-calculator,\r\n  #dv-pool-calculator * {\r\n    visibility:visible!important;\r\n  }\r\n\r\n  #dv-pool-calculator {\r\n    position:absolute;\r\n    inset:0;\r\n\r\n    max-width:none;\r\n\r\n    margin:0;\r\n    padding:0;\r\n\r\n    border:0;\r\n\r\n    box-shadow:none;\r\n    background:#fff;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-input-card,\r\n  #dv-pool-calculator .dv-build-link,\r\n  #dv-pool-calculator .dv-info-card,\r\n  #dv-pool-calculator .dv-related,\r\n  #dv-pool-calculator .dv-pdf-button {\r\n    display:none!important;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-output {\r\n    display:block!important;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-result-card,\r\n  #dv-pool-calculator .dv-summary {\r\n    break-inside:avoid;\r\n    box-shadow:none;\r\n  }\r\n}\r\n\r\n\/* AFTER THE FIRST FREE CALCULATION *\/\r\n#dv-pool-calculator .dv-free-next-step{\r\n  display:none;\r\n  max-width:1080px;\r\n  margin:0 auto 20px;\r\n  padding:22px 24px;\r\n  border:1px solid #d7e6f5;\r\n  border-radius:20px;\r\n  background:\r\n    radial-gradient(circle at top right,rgba(23,100,189,.12),transparent 34%),\r\n    linear-gradient(135deg,#ffffff 0%,#eef5fc 100%);\r\n  box-shadow:0 14px 34px rgba(11,58,120,.10);\r\n}\r\n\r\n#dv-pool-calculator .dv-free-next-step.dv-show{\r\n  display:grid;\r\n  grid-template-columns:minmax(0,1fr) auto;\r\n  gap:22px;\r\n  align-items:center;\r\n}\r\n\r\n#dv-pool-calculator .dv-free-next-step-kicker{\r\n  display:inline-block;\r\n  margin-bottom:6px;\r\n  color:#13795b;\r\n  font-size:12px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-pool-calculator .dv-free-next-step h3{\r\n  margin:0 0 7px;\r\n  color:#173558;\r\n  font-size:22px;\r\n  font-weight:950;\r\n  line-height:1.2;\r\n}\r\n\r\n#dv-pool-calculator .dv-free-next-step p{\r\n  margin:0;\r\n  color:#526b84;\r\n  font-size:14px;\r\n  line-height:1.55;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-pool-calculator .dv-free-next-step a{\r\n  display:inline-flex;\r\n  min-width:240px;\r\n  min-height:52px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  padding:13px 20px;\r\n  border-radius:13px;\r\n  background:linear-gradient(135deg,#0b3a78,#1764bd);\r\n  color:#fff!important;\r\n  font-size:14px;\r\n  font-weight:950;\r\n  text-decoration:none!important;\r\n  text-align:center;\r\n  box-shadow:0 10px 24px rgba(11,58,120,.20);\r\n}\r\n\r\n@media(max-width:760px){\r\n  #dv-pool-calculator .dv-free-next-step.dv-show{\r\n    grid-template-columns:1fr;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-free-next-step{\r\n    padding:18px;\r\n  }\r\n\r\n  #dv-pool-calculator .dv-free-next-step a{\r\n    width:100%;\r\n    min-width:0;\r\n  }\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n\r\n<div class=\"dv-calculator\">\r\n\r\n\r\n<!-- INPUT -->\r\n\r\n<div class=\"dv-input-card\">\r\n\r\n  <h3 class=\"dv-section-title\">\r\n    Enter the Pool Details\r\n  <\/h3>\r\n\r\n\r\n  <div class=\"dv-input-grid\">\r\n\r\n    <div class=\"dv-field\">\r\n\r\n      <label for=\"dvPoolLength\">\r\n        Pool Length\r\n      <\/label>\r\n\r\n      <div class=\"dv-input-wrap\">\r\n\r\n        <input\r\n          type=\"text\"\r\n          id=\"dvPoolLength\"\r\n          min=\"2\"\r\n          max=\"50\"\r\n          step=\"0.1\"\r\n          placeholder=\"e.g. 8\"\r\n          inputmode=\"decimal\"\r\n        >\r\n\r\n        <span class=\"dv-unit\">m<\/span>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-field\">\r\n\r\n      <label for=\"dvPoolWidth\">\r\n        Pool Width\r\n      <\/label>\r\n\r\n      <div class=\"dv-input-wrap\">\r\n\r\n        <input\r\n          type=\"text\"\r\n          id=\"dvPoolWidth\"\r\n          min=\"2\"\r\n          max=\"30\"\r\n          step=\"0.1\"\r\n          placeholder=\"e.g. 4\"\r\n          inputmode=\"decimal\"\r\n        >\r\n\r\n        <span class=\"dv-unit\">m<\/span>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-field\">\r\n\r\n      <label for=\"dvPoolDepth\">\r\n        Average Depth\r\n      <\/label>\r\n\r\n      <div class=\"dv-input-wrap\">\r\n\r\n        <input\r\n          type=\"text\"\r\n          id=\"dvPoolDepth\"\r\n          min=\"0.8\"\r\n          max=\"4\"\r\n          step=\"0.1\"\r\n          placeholder=\"e.g. 1.5\"\r\n          inputmode=\"decimal\"\r\n        >\r\n\r\n        <span class=\"dv-unit\">m<\/span>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n\r\n\r\n  <!-- THREE IDENTICAL OPTION BOXES -->\r\n\r\n  <div class=\"dv-options-grid\">\r\n\r\n\r\n    <div class=\"dv-field\">\r\n\r\n      <label for=\"dvPoolFinish\">\r\n        Pool Finish\r\n      <\/label>\r\n\r\n      <select id=\"dvPoolFinish\">\r\n\r\n        <option value=\"liner\">\r\n          Liner\r\n        <\/option>\r\n\r\n        <option value=\"granite\">\r\n          Granite\r\n        <\/option>\r\n\r\n        <option value=\"mosaic\">\r\n          Mosaic\r\n        <\/option>\r\n\r\n      <\/select>\r\n\r\n    <\/div>\r\n\r\n\r\n\r\n    <div class=\"dv-field\">\r\n\r\n      <label for=\"dvPoolHeating\">\r\n        Water Heating\r\n      <\/label>\r\n\r\n      <select id=\"dvPoolHeating\">\r\n\r\n        <option value=\"no\">\r\n          Without Heating\r\n        <\/option>\r\n\r\n        <option value=\"yes\">\r\n          Heating\r\n        <\/option>\r\n\r\n      <\/select>\r\n\r\n    <\/div>\r\n\r\n\r\n\r\n    <div class=\"dv-field\">\r\n\r\n      <label for=\"dvPoolLighting\">\r\n        Pool Lighting\r\n      <\/label>\r\n\r\n      <select id=\"dvPoolLighting\">\r\n\r\n        <option value=\"no\">\r\n          Without Lighting\r\n        <\/option>\r\n\r\n        <option value=\"yes\">\r\n          Lighting\r\n        <\/option>\r\n\r\n      <\/select>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-note\">\r\n    The calculator estimates a standard in-ground\r\n    monolithic reinforced-concrete skimmer pool.\r\n    The cost includes the main construction materials,\r\n    labor, waterproofing, the selected finish,\r\n    filtration system, and technical installation.\r\n  <\/div>\r\n\r\n\r\n  <button\r\n    type=\"button\"\r\n    class=\"dv-calculate-v2\"\r\n    id=\"dvCalculatePoolFreeFlowV2\"\r\n  >\r\n    Calculate Pool Cost\r\n  <\/button>\r\n\r\n\r\n  <div\r\n    class=\"dv-error\"\r\n    id=\"dvPoolError\"\r\n  >\r\n    Please enter the pool length, width, and depth correctly.\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- RESULTS -->\r\n\r\n<div\r\n  class=\"dv-output\"\r\n  id=\"dvPoolOutput\"\r\n>\r\n\r\n<div class=\"dv-free-next-step\" id=\"dvPoolFreeNextStep\">\r\n  <div>\r\n    <span class=\"dv-free-next-step-kicker\">\u2713 Free Calculation Used<\/span>\r\n    <h3>A Package Is Required for the Next Calculation<\/h3>\r\n    <p>\r\n      You have used one free calculation.\r\n      Choose a package to make another calculation.\r\n    <\/p>\r\n  <\/div>\r\n\r\n  <a href=\"https:\/\/datvale.ge\/en\/packages\/\">\r\n    Choose a Package\r\n  <\/a>\r\n<\/div>\r\n\r\n<div class=\"dv-results\">\r\n\r\n\r\n\r\n<!-- 1 -->\r\n\r\n<div class=\"dv-result-card\">\r\n\r\n  <div class=\"dv-result-head\">\r\n\r\n    <span class=\"dv-result-icon\">\r\n      \ud83d\udcd0\r\n    <\/span>\r\n\r\n    <h3>\r\n      Pool Details\r\n    <\/h3>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-result-body\">\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Water Volume\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvWaterVolume\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Pool Floor Area\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFloorArea\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Interior Wall Area\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvWallArea\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Total Finishing Area\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvInternalArea\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Minimum Filtration Flow Rate\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFilterFlow\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- 2 -->\r\n\r\n<div class=\"dv-result-card\">\r\n\r\n  <div class=\"dv-result-head\">\r\n\r\n    <span class=\"dv-result-icon\">\r\n      \u26cf\ufe0f\r\n    <\/span>\r\n\r\n    <h3>\r\n      Earthworks\r\n    <\/h3>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-result-body\">\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Excavation Volume\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvExcavationVolume\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Excavation \u2014 32 \u20be\/m\u00b3\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvExcavationCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Excess Soil Removal and Transport\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvEarthRemoval\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-card-total\">\r\n      Earthworks:\r\n      <span id=\"dvEarthTotal\">\u2014<\/span>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- 3 -->\r\n\r\n<div class=\"dv-result-card\">\r\n\r\n  <div class=\"dv-result-head\">\r\n\r\n    <span class=\"dv-result-icon\">\r\n      \ud83c\udfd7\ufe0f\r\n    <\/span>\r\n\r\n    <h3>\r\n      Reinforced-Concrete Shell\r\n    <\/h3>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-result-body\">\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        B25 Concrete + 8% Allowance\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvConcreteVolume\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Concrete Material\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvConcreteCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Concrete Transport and Pump\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvConcreteService\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Reinforcement\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvRebarQuantity\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Rebar Material \u2014 2.20 \u20be\/kg\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvRebarMaterial\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Rebar Installation Labor\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvRebarLabor\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Formwork Material\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFormworkMaterial\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Formwork Labor\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFormworkLabor\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Concrete Work\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvConcreteLabor\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-card-total\">\r\n      Reinforced-Concrete Structure:\r\n      <span id=\"dvStructureTotal\">\u2014<\/span>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- 4 -->\r\n\r\n<div class=\"dv-result-card\">\r\n\r\n  <div class=\"dv-result-head\">\r\n\r\n    <span class=\"dv-result-icon\">\r\n      \ud83d\udca7\r\n    <\/span>\r\n\r\n    <h3>\r\n      Waterproofing\r\n    <\/h3>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-result-body\">\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Waterproofing Area + 10%\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvWaterproofArea\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Material, Two-Layer System\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvWaterproofMaterial\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Tapes, Collars, and Auxiliary Materials\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvWaterproofAccessories\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Waterproofing Labor\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvWaterproofLabor\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-card-total\">\r\n      Waterproofing:\r\n      <span id=\"dvWaterproofTotal\">\u2014<\/span>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- 5 -->\r\n\r\n<div class=\"dv-result-card\">\r\n\r\n  <div class=\"dv-result-head\">\r\n\r\n    <span class=\"dv-result-icon\">\r\n      \u25fb\ufe0f\r\n    <\/span>\r\n\r\n    <h3>\r\n      Pool Finish\r\n    <\/h3>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-result-body\">\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Selected Finish\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFinishName\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Purchase Area + 10%\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFinishArea\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Finishing Material\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFinishMaterial\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Adhesive, Grout, and Auxiliary Materials\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFinishAccessories\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Finishing Labor\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvFinishLabor\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-card-total\">\r\n      Finishing:\r\n      <span id=\"dvFinishTotal\">\u2014<\/span>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- 6 -->\r\n\r\n<div class=\"dv-result-card\">\r\n\r\n  <div class=\"dv-result-head\">\r\n\r\n    <span class=\"dv-result-icon\">\r\n      \u2699\ufe0f\r\n    <\/span>\r\n\r\n    <h3>\r\n      Filtration and Technical Equipment\r\n    <\/h3>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-result-body\">\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Required Flow Rate\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvEquipmentFlow\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Pump and Sand Filter\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvPumpFilterCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Skimmer, Inlets, and Main Drain\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvEmbeddedCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        PVC Pipes, Fittings, and Valves\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvPipeCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Control Panel and Electrical Components\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvControlCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Technical System Installation Labor\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvEquipmentLabor\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Stainless-Steel Ladder\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvLadderCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-card-total\">\r\n      Filtration and Equipment:\r\n      <span id=\"dvEquipmentTotal\">\u2014<\/span>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- 7 OPTIONAL SYSTEMS -->\r\n\r\n<div class=\"dv-result-card\">\r\n\r\n  <div class=\"dv-result-head\">\r\n\r\n    <span class=\"dv-result-icon\">\r\n      \u2728\r\n    <\/span>\r\n\r\n    <h3>\r\n      Additional Systems\r\n    <\/h3>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-result-body\">\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Water Heating\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvHeatingType\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Heating Cost\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvHeatingCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Pool Lighting\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvLightingType\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Number of Lights\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvLightCount\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-row\">\r\n\r\n      <span class=\"dv-row-name\">\r\n        Lighting, Transformer, Cable, and Installation\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-row-value\"\r\n        id=\"dvLightingCost\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-card-total\">\r\n      Additional Systems:\r\n      <span id=\"dvOptionsTotal\">\u2014<\/span>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- SUMMARY -->\r\n\r\n<div class=\"dv-summary\">\r\n\r\n  <h3 class=\"dv-section-title\">\r\n\r\n    <span class=\"dv-section-number\">\r\n      2\r\n    <\/span>\r\n\r\n    Cost Summary\r\n\r\n  <\/h3>\r\n\r\n\r\n  <div class=\"dv-summary-grid\">\r\n\r\n\r\n    <div class=\"dv-summary-item\">\r\n\r\n      <span class=\"dv-summary-label\">\r\n        Construction\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-summary-value\"\r\n        id=\"dvConstructionSummary\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-summary-item\">\r\n\r\n      <span class=\"dv-summary-label\">\r\n        Finishing\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-summary-value\"\r\n        id=\"dvFinishSummary\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-summary-item\">\r\n\r\n      <span class=\"dv-summary-label\">\r\n        Equipment\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-summary-value\"\r\n        id=\"dvEquipmentSummary\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-summary-item\">\r\n\r\n      <span class=\"dv-summary-label\">\r\n        Contingency \u2014 5%\r\n      <\/span>\r\n\r\n      <span\r\n        class=\"dv-summary-value\"\r\n        id=\"dvExtraSummary\"\r\n      >\r\n        \u2014\r\n      <\/span>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-grand-total\">\r\n\r\n    <small>\r\n      Estimated Total Pool Construction Cost\r\n    <\/small>\r\n\r\n    <strong id=\"dvGrandTotal\">\r\n      \u2014\r\n    <\/strong>\r\n\r\n  <\/div>\r\n\r\n\r\n  <button\r\n    type=\"button\"\r\n    class=\"dv-pdf-button\"\r\n    id=\"dvDownloadPoolPdf\"\r\n  >\r\n    \ud83d\udcc4 Download PDF\r\n  <\/button>\r\n\r\n  <div class=\"dv-call-request\" id=\"dvPoolCallRequest\">\r\n    <h4 class=\"dv-call-request-title\">Would You Like a Company Consultation?<\/h4>\r\n    <p class=\"dv-call-request-text\">\r\n      Request a call from the company and they will contact you with additional information.\r\n    <\/p>\r\n\r\n    <div class=\"dv-call-request-row\" id=\"dvPoolCallRow\">\r\n      <input\r\n        class=\"dv-call-phone\"\r\n        id=\"dvPoolCallPhone\"\r\n        type=\"tel\"\r\n        inputmode=\"tel\"\r\n        autocomplete=\"tel\"\r\n        placeholder=\"e.g. 599123456\"\r\n      >\r\n\r\n      <button\r\n        class=\"dv-request-call-btn\"\r\n        id=\"dvPoolRequestCall\"\r\n        type=\"button\"\r\n      >\r\n        Request a Company Call\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <div\r\n      class=\"dv-call-request-status\"\r\n      id=\"dvPoolCallStatus\"\r\n      aria-live=\"polite\"\r\n    ><\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n<div class=\"dv-related\">\r\n\r\n  <div class=\"dv-related-grid\">\r\n\r\n    <a\r\n      class=\"dv-related-link\"\r\n      href=\"https:\/\/datvale.ge\/en\/construction-calculator\/\"\r\n      target=\"_blank\"\r\n      rel=\"noopener\"\r\n    >\r\n      <span class=\"dv-related-icon\">\ud83c\udfd7\ufe0f<\/span>\r\n\r\n      <span class=\"dv-related-text\">\r\n        <strong>House Construction Calculator<\/strong>\r\n        <small>Estimate the total cost of building a house<\/small>\r\n      <\/span>\r\n\r\n      <span class=\"dv-related-arrow\">\u2192<\/span>\r\n    <\/a>\r\n\r\n\r\n    <a\r\n      class=\"dv-related-link\"\r\n      href=\"https:\/\/datvale.ge\/en\/block-fence-calculator\/\"\r\n      target=\"_blank\"\r\n      rel=\"noopener\"\r\n    >\r\n      <span class=\"dv-related-icon\">\ud83e\uddf1<\/span>\r\n\r\n      <span class=\"dv-related-text\">\r\n        <strong>Block Fence Calculator<\/strong>\r\n        <small>Estimate the cost of building a block fence<\/small>\r\n      <\/span>\r\n\r\n      <span class=\"dv-related-arrow\">\u2192<\/span>\r\n    <\/a>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<script src=\"https:\/\/datvale.ge\/wp-content\/uploads\/datvale-assets\/jspdf.umd.min.js\"><\/script>\r\n\r\n<script>\r\n(function () {\r\n\r\n\"use strict\";\r\n\r\n\r\nconst root =\r\n  document.getElementById(\"dv-pool-calculator\");\r\n\r\nif (!root) return;\r\n\r\n\r\nconst get = function (id) {\r\n  return root.querySelector(\"#\" + id);\r\n};\r\n\r\n\r\n\r\n\/*\r\n * 2026 market working prices.\r\n *\r\n * Goal:\r\n * A realistic average estimate rather than\r\n * the cheapest possible offer.\r\n *\/\r\n\r\nconst prices = {\r\n\r\n  \/* EARTHWORKS *\/\r\n\r\n  excavationPerM3: 32,\r\n\r\n  earthRemovalPerM3: 60,\r\n\r\n\r\n  \/* CONCRETE *\/\r\n\r\n  concretePerM3: 300,\r\n\r\n  concreteTransportPerM3: 35,\r\n\r\n  concretePumpBase: 1800,\r\n\r\n\r\n  \/* REINFORCEMENT *\/\r\n\r\n  rebarPerKg: 2.20,\r\n\r\n  rebarLaborPerTon: 1000,\r\n\r\n\r\n  \/* FORMWORK *\/\r\n\r\n  formworkMaterialPerM2: 35,\r\n\r\n  formworkLaborPerM2: 40,\r\n\r\n\r\n  \/* CONCRETE WORK *\/\r\n\r\n  concreteLaborPerM3: 150,\r\n\r\n\r\n  \/* WATERPROOFING *\/\r\n\r\n  waterproofMaterialPerM2: 38,\r\n\r\n  waterproofLaborPerM2: 25,\r\n\r\n  waterproofAccessoryBase: 550,\r\n\r\n  waterproofAccessoryPerMeter: 12,\r\n\r\n\r\n  \/* LADDER *\/\r\n\r\n  ladder: 650,\r\n\r\n\r\n  \/* LIGHTING *\/\r\n\r\n  standardLight: 650,\r\n\r\n  lightInstallation: 350,\r\n\r\n  lightingElectricalBase: 900\r\n\r\n};\r\n\r\n\r\n\r\nconst constants = {\r\n\r\n  wallThickness: 0.20,\r\n\r\n  floorThickness: 0.25,\r\n\r\n  excavationSideSpace: 0.80,\r\n\r\n  excavationBottomSpace: 0.40,\r\n\r\n  concreteWaste: 1.08,\r\n\r\n  rebarKgPerConcreteM3: 155,\r\n\r\n  waterproofWaste: 1.10,\r\n\r\n  finishWaste: 1.10,\r\n\r\n  contingency: 0.05\r\n\r\n};\r\n\r\n\r\n\r\n\/*\r\n * FINISHING\r\n *\r\n * Material + auxiliary materials + labor\r\n * are calculated separately.\r\n *\/\r\n\r\nconst finishes = {\r\n\r\n  liner: {\r\n\r\n    name:\"Liner\",\r\n\r\n    materialPerM2:62,\r\n\r\n    accessoryPerM2:15,\r\n\r\n    laborPerM2:55\r\n\r\n  },\r\n\r\n\r\n  granite: {\r\n\r\n    name:\"Granite\",\r\n\r\n    materialPerM2:95,\r\n\r\n    accessoryPerM2:28,\r\n\r\n    laborPerM2:120\r\n\r\n  },\r\n\r\n\r\n  mosaic: {\r\n\r\n    name:\"Mosaic\",\r\n\r\n    materialPerM2:80,\r\n\r\n    accessoryPerM2:30,\r\n\r\n    laborPerM2:120\r\n\r\n  }\r\n\r\n};\r\n\r\n\r\n\r\nfunction numberValue(id) {\r\n\r\n  const input = get(id);\r\n\r\n  if (!input) return 0;\r\n\r\n  const value =\r\n    parseFloat(\r\n      String(input.value).replace(\",\", \".\")\r\n    );\r\n\r\n  return Number.isFinite(value)\r\n    ? value\r\n    : 0;\r\n}\r\n\r\n\r\n\r\nfunction money(value) {\r\n\r\n  return new Intl.NumberFormat(\r\n    \"en-US\",\r\n    {\r\n      minimumFractionDigits:0,\r\n      maximumFractionDigits:0\r\n    }\r\n  ).format(\r\n    Math.round(value)\r\n  ) + \" \u20be\";\r\n}\r\n\r\n\r\n\r\nfunction decimal(value, digits) {\r\n\r\n  return new Intl.NumberFormat(\r\n    \"en-US\",\r\n    {\r\n      minimumFractionDigits:digits,\r\n      maximumFractionDigits:digits\r\n    }\r\n  ).format(value);\r\n}\r\n\r\n\r\n\r\nfunction setText(id,value) {\r\n\r\n  const el = get(id);\r\n\r\n  if (el) {\r\n    el.textContent = value;\r\n  }\r\n\r\n}\r\n\r\n\r\n\r\n\/*\r\n * Filtration and technical system.\r\n *\r\n * The range is intentionally\r\n * more realistic rather than a minimum\r\n * simple sum of retail items.\r\n *\/\r\n\r\nfunction equipmentByVolume(volume) {\r\n\r\n  if (volume <= 25) {\r\n\r\n    return {\r\n\r\n      pumpFilter:2600,\r\n\r\n      embedded:1200,\r\n\r\n      pipes:1200,\r\n\r\n      control:650,\r\n\r\n      labor:1300\r\n\r\n    };\r\n\r\n  }\r\n\r\n\r\n  if (volume <= 40) {\r\n\r\n    return {\r\n\r\n      pumpFilter:3100,\r\n\r\n      embedded:1500,\r\n\r\n      pipes:1500,\r\n\r\n      control:800,\r\n\r\n      labor:1500\r\n\r\n    };\r\n\r\n  }\r\n\r\n\r\n  if (volume <= 60) {\r\n\r\n    return {\r\n\r\n      pumpFilter:3600,\r\n\r\n      embedded:1800,\r\n\r\n      pipes:1900,\r\n\r\n      control:900,\r\n\r\n      labor:1800\r\n\r\n    };\r\n\r\n  }\r\n\r\n\r\n  if (volume <= 90) {\r\n\r\n    return {\r\n\r\n      pumpFilter:4600,\r\n\r\n      embedded:2300,\r\n\r\n      pipes:2500,\r\n\r\n      control:1100,\r\n\r\n      labor:2300\r\n\r\n    };\r\n\r\n  }\r\n\r\n\r\n  if (volume <= 130) {\r\n\r\n    return {\r\n\r\n      pumpFilter:5800,\r\n\r\n      embedded:2900,\r\n\r\n      pipes:3200,\r\n\r\n      control:1400,\r\n\r\n      labor:2800\r\n\r\n    };\r\n\r\n  }\r\n\r\n\r\n  return {\r\n\r\n    pumpFilter:7200,\r\n\r\n    embedded:3600,\r\n\r\n    pipes:4100,\r\n\r\n    control:1800,\r\n\r\n    labor:3500\r\n\r\n  };\r\n\r\n}\r\n\r\n\r\n\r\n\/*\r\n * Heating cost based on water volume.\r\n *\/\r\n\r\nfunction heatingByVolume(volume) {\r\n\r\n  if (volume <= 25) {\r\n    return 6500;\r\n  }\r\n\r\n  if (volume <= 40) {\r\n    return 7500;\r\n  }\r\n\r\n  if (volume <= 60) {\r\n    return 9000;\r\n  }\r\n\r\n  if (volume <= 90) {\r\n    return 11000;\r\n  }\r\n\r\n  if (volume <= 130) {\r\n    return 13500;\r\n  }\r\n\r\n  return 15000;\r\n\r\n}\r\n\r\n\r\n\r\n\/*\r\n * Number of lights\r\n * based on the pool floor area.\r\n *\/\r\n\r\nfunction lightCountByArea(area) {\r\n\r\n  if (area <= 20) {\r\n    return 1;\r\n  }\r\n\r\n  if (area <= 40) {\r\n    return 2;\r\n  }\r\n\r\n  if (area <= 65) {\r\n    return 3;\r\n  }\r\n\r\n  if (area <= 90) {\r\n    return 4;\r\n  }\r\n\r\n  return Math.ceil(area \/ 22);\r\n\r\n}\r\n\r\n\r\n\r\n\/*\r\n * MAIN CALCULATION\r\n *\/\r\n\r\n\r\nfunction validatePoolInputs(showError) {\r\n\r\n  const length = numberValue(\"dvPoolLength\");\r\n  const width = numberValue(\"dvPoolWidth\");\r\n  const depth = numberValue(\"dvPoolDepth\");\r\n\r\n  const error = get(\"dvPoolError\");\r\n  const output = get(\"dvPoolOutput\");\r\n\r\n  const lengthInput = get(\"dvPoolLength\");\r\n  const widthInput = get(\"dvPoolWidth\");\r\n  const depthInput = get(\"dvPoolDepth\");\r\n\r\n  const allFilled =\r\n    lengthInput &&\r\n    widthInput &&\r\n    depthInput &&\r\n    String(lengthInput.value).trim() !== \"\" &&\r\n    String(widthInput.value).trim() !== \"\" &&\r\n    String(depthInput.value).trim() !== \"\";\r\n\r\n  const invalid =\r\n    !allFilled ||\r\n    length < 2 ||\r\n    width < 2 ||\r\n    depth < 0.8 ||\r\n    length > 50 ||\r\n    width > 30 ||\r\n    depth > 4;\r\n\r\n  if (invalid) {\r\n\r\n    if (output) {\r\n      output.classList.remove(\"dv-show\");\r\n    }\r\n\r\n    if (error) {\r\n      error.style.display =\r\n        showError ? \"block\" : \"none\";\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  if (error) {\r\n    error.style.display = \"none\";\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\n\r\nlet dvPoolClickBusy = false;\r\n\r\n\r\nfunction showPoolFreeNextStep() {\r\n\r\n  const box =\r\n    get(\"dvPoolFreeNextStep\");\r\n\r\n  if (box) {\r\n    box.classList.add(\"dv-show\");\r\n  }\r\n\r\n}\r\n\r\n\r\nfunction openPoolRegistrationPopup() {\r\n\r\n  const redirect =\r\n    window.location.pathname +\r\n    window.location.search +\r\n    window.location.hash;\r\n\r\n\r\n  if (\r\n    typeof window.openAuthModal === \"function\"\r\n  ) {\r\n\r\n    window.openAuthModal(\r\n      \"register\",\r\n      redirect\r\n    );\r\n\r\n    return true;\r\n  }\r\n\r\n\r\n  const trigger =\r\n    document.querySelector(\r\n      '.cpdf-auth[data-auth-action=\"register\"]'\r\n    );\r\n\r\n\r\n  if (trigger) {\r\n\r\n    trigger.setAttribute(\r\n      \"data-redirect\",\r\n      redirect\r\n    );\r\n\r\n    trigger.click();\r\n\r\n    return true;\r\n  }\r\n\r\n\r\n  window.location.href =\r\n    \"\/my-account\/?redirect_to=\" +\r\n    encodeURIComponent(redirect);\r\n\r\n  return false;\r\n}\r\n\r\n\r\nfunction openPoolPackagePrompt() {\r\n\r\n  if (\r\n    typeof window.jQuery !== \"undefined\" &&\r\n    window.jQuery(\"#membership-modal\").length\r\n  ) {\r\n\r\n    window.jQuery(\r\n      \"#membership-modal\"\r\n    ).css(\r\n      \"display\",\r\n      \"block\"\r\n    );\r\n\r\n    return true;\r\n  }\r\n\r\n\r\n  const trigger =\r\n    document.querySelector(\r\n      \"#membership-purchase-btn, .membership-purchase-btn, [data-membership-modal]\"\r\n    );\r\n\r\n\r\n  if (trigger) {\r\n\r\n    trigger.click();\r\n\r\n    return true;\r\n  }\r\n\r\n\r\n  window.location.href =\r\n    \"\/packages\/\";\r\n\r\n  return false;\r\n}\r\n\r\n\r\nasync function authorizePoolFlow() {\r\n\r\n  if (\r\n    !window.DatvaleHtmlAccess ||\r\n    typeof window.DatvaleHtmlAccess.authorize !== \"function\"\r\n  ) {\r\n\r\n    alert(\r\n      \"The access system could not be loaded. Refresh the page and try again.\"\r\n    );\r\n\r\n    return {\r\n      allowed:false,\r\n      mode:\"error\"\r\n    };\r\n  }\r\n\r\n\r\n  const result =\r\n    await window.DatvaleHtmlAccess.authorize(\r\n      \"pool\"\r\n    );\r\n\r\n\r\n  if (\r\n    result &&\r\n    result.success &&\r\n    result.data &&\r\n    result.data.allowed === true\r\n  ) {\r\n\r\n    return {\r\n      allowed:true,\r\n      mode:\r\n        result.data.mode ||\r\n        \"membership\"\r\n    };\r\n  }\r\n\r\n\r\n  const data =\r\n    result && result.data\r\n      ? result.data\r\n      : {};\r\n\r\n\r\n  if (\r\n    data.code === \"login_required\"\r\n  ) {\r\n\r\n    openPoolRegistrationPopup();\r\n\r\n    return {\r\n      allowed:false,\r\n      mode:\"login_required\"\r\n    };\r\n  }\r\n\r\n\r\n  if (\r\n    data.code === \"package_required\"\r\n  ) {\r\n\r\n    openPoolPackagePrompt();\r\n\r\n    return {\r\n      allowed:false,\r\n      mode:\"package_required\"\r\n    };\r\n  }\r\n\r\n\r\n  alert(\r\n    data.message ||\r\n    \"Access verification failed. Please try again.\"\r\n  );\r\n\r\n\r\n  return {\r\n    allowed:false,\r\n    mode:\"error\"\r\n  };\r\n}\r\n\r\n\r\nasync function claimPoolFreeCalculation() {\r\n\r\n  if (\r\n    !window.DatvaleHtmlAccess ||\r\n    typeof window.DatvaleHtmlAccess.claimFree !== \"function\"\r\n  ) {\r\n\r\n    return false;\r\n  }\r\n\r\n\r\n  const result =\r\n    await window.DatvaleHtmlAccess.claimFree(\r\n      \"pool\"\r\n    );\r\n\r\n\r\n  return !!(\r\n    result &&\r\n    result.success &&\r\n    result.data &&\r\n    result.data.claimed === true\r\n  );\r\n}\r\n\r\n\r\nfunction calculatePool(showError) {\r\n\r\n  const length =\r\n    numberValue(\"dvPoolLength\");\r\n\r\n  const width =\r\n    numberValue(\"dvPoolWidth\");\r\n\r\n  const depth =\r\n    numberValue(\"dvPoolDepth\");\r\n\r\n\r\n  const finishSelect =\r\n    get(\"dvPoolFinish\");\r\n\r\n  const heatingSelect =\r\n    get(\"dvPoolHeating\");\r\n\r\n  const lightingSelect =\r\n    get(\"dvPoolLighting\");\r\n\r\n\r\n  const error =\r\n    get(\"dvPoolError\");\r\n\r\n  const output =\r\n    get(\"dvPoolOutput\");\r\n\r\n\r\n  const finishKey =\r\n    finishSelect\r\n      ? finishSelect.value\r\n      : \"liner\";\r\n\r\n\r\n  const heatingEnabled =\r\n    heatingSelect &&\r\n    heatingSelect.value === \"yes\";\r\n\r\n\r\n  const lightingEnabled =\r\n    lightingSelect &&\r\n    lightingSelect.value === \"yes\";\r\n\r\n\r\n  const allFilled =\r\n    String(get(\"dvPoolLength\").value).trim() !== \"\" &&\r\n    String(get(\"dvPoolWidth\").value).trim() !== \"\" &&\r\n    String(get(\"dvPoolDepth\").value).trim() !== \"\";\r\n\r\n\r\n  const invalid =\r\n    !allFilled ||\r\n    length < 2 ||\r\n    width < 2 ||\r\n    depth < 0.8 ||\r\n    length > 50 ||\r\n    width > 30 ||\r\n    depth > 4;\r\n\r\n\r\n  if (invalid) {\r\n\r\n    if (output) {\r\n      output.classList.remove(\"dv-show\");\r\n    }\r\n\r\n    if (error) {\r\n      error.style.display =\r\n        showError ? \"block\" : \"none\";\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n\r\n  if (error) {\r\n    error.style.display = \"none\";\r\n  }\r\n\r\n\r\n\r\n  \/*\r\n   * POOL GEOMETRY\r\n   *\/\r\n\r\n  const waterVolume =\r\n    length *\r\n    width *\r\n    depth;\r\n\r\n\r\n  const floorArea =\r\n    length *\r\n    width;\r\n\r\n\r\n  const wallArea =\r\n    2 *\r\n    (length + width) *\r\n    depth;\r\n\r\n\r\n  const internalArea =\r\n    floorArea +\r\n    wallArea;\r\n\r\n\r\n  \/*\r\n   * Full water volume\r\n   * filtered in approximately 4 hours.\r\n   *\/\r\n\r\n  const filterFlow =\r\n    waterVolume \/ 4;\r\n\r\n\r\n\r\n  \/*\r\n   * EXCAVATION\r\n   *\/\r\n\r\n  const excavationLength =\r\n    length +\r\n    constants.excavationSideSpace * 2;\r\n\r\n\r\n  const excavationWidth =\r\n    width +\r\n    constants.excavationSideSpace * 2;\r\n\r\n\r\n  const excavationDepth =\r\n    depth +\r\n    constants.excavationBottomSpace;\r\n\r\n\r\n  const excavationVolume =\r\n    excavationLength *\r\n    excavationWidth *\r\n    excavationDepth;\r\n\r\n\r\n  const excavationCost =\r\n    excavationVolume *\r\n    prices.excavationPerM3;\r\n\r\n\r\n  \/*\r\n   * Not all excavated soil\r\n   * is removed. Part is retained\r\n   * for backfilling.\r\n   *\/\r\n\r\n  const removalVolume =\r\n    excavationVolume * 0.65;\r\n\r\n\r\n  const earthRemoval =\r\n    removalVolume *\r\n    prices.earthRemovalPerM3;\r\n\r\n\r\n  const earthTotal =\r\n    excavationCost +\r\n    earthRemoval;\r\n\r\n\r\n\r\n  \/*\r\n   * MONOLITHIC SHELL\r\n   *\/\r\n\r\n  const externalLength =\r\n    length +\r\n    constants.wallThickness * 2;\r\n\r\n\r\n  const externalWidth =\r\n    width +\r\n    constants.wallThickness * 2;\r\n\r\n\r\n  const floorConcrete =\r\n    externalLength *\r\n    externalWidth *\r\n    constants.floorThickness;\r\n\r\n\r\n  const externalPerimeter =\r\n    2 *\r\n    (\r\n      externalLength +\r\n      externalWidth\r\n    );\r\n\r\n\r\n  const wallConcrete =\r\n    externalPerimeter *\r\n    depth *\r\n    constants.wallThickness;\r\n\r\n\r\n  const concreteNet =\r\n    floorConcrete +\r\n    wallConcrete;\r\n\r\n\r\n  const concreteOrder =\r\n    concreteNet *\r\n    constants.concreteWaste;\r\n\r\n\r\n  const concreteMaterial =\r\n    concreteOrder *\r\n    prices.concretePerM3;\r\n\r\n\r\n  const concreteTransport =\r\n    concreteOrder *\r\n    prices.concreteTransportPerM3;\r\n\r\n\r\n  let pumpCost =\r\n    prices.concretePumpBase;\r\n\r\n\r\n  if (concreteOrder > 22) {\r\n\r\n    pumpCost =\r\n      prices.concretePumpBase * 1.35;\r\n\r\n  }\r\n\r\n\r\n  if (concreteOrder > 35) {\r\n\r\n    pumpCost =\r\n      prices.concretePumpBase * 1.70;\r\n\r\n  }\r\n\r\n\r\n  const concreteService =\r\n    concreteTransport +\r\n    pumpCost;\r\n\r\n\r\n\r\n  \/*\r\n   * REINFORCEMENT\r\n   *\/\r\n\r\n  const rebarKg =\r\n    concreteNet *\r\n    constants.rebarKgPerConcreteM3;\r\n\r\n\r\n  const rebarTons =\r\n    rebarKg \/ 1000;\r\n\r\n\r\n  const rebarMaterial =\r\n    rebarKg *\r\n    prices.rebarPerKg;\r\n\r\n\r\n  const rebarLabor =\r\n    rebarTons *\r\n    prices.rebarLaborPerTon;\r\n\r\n\r\n\r\n  \/*\r\n   * FORMWORK\r\n   *\r\n   * Both sides of the pool walls.\r\n   *\/\r\n\r\n  const formworkArea =\r\n    externalPerimeter *\r\n    depth *\r\n    2;\r\n\r\n\r\n  const formworkMaterial =\r\n    formworkArea *\r\n    prices.formworkMaterialPerM2;\r\n\r\n\r\n  const formworkLabor =\r\n    formworkArea *\r\n    prices.formworkLaborPerM2;\r\n\r\n\r\n\r\n  \/*\r\n   * CONCRETE PLACEMENT LABOR\r\n   *\/\r\n\r\n  const concreteLabor =\r\n    concreteNet *\r\n    prices.concreteLaborPerM3;\r\n\r\n\r\n\r\n  const structureTotal =\r\n    concreteMaterial +\r\n    concreteService +\r\n    rebarMaterial +\r\n    rebarLabor +\r\n    formworkMaterial +\r\n    formworkLabor +\r\n    concreteLabor;\r\n\r\n\r\n\r\n  \/*\r\n   * WATERPROOFING\r\n   *\/\r\n\r\n  const waterproofArea =\r\n    internalArea *\r\n    constants.waterproofWaste;\r\n\r\n\r\n  const waterproofMaterial =\r\n    waterproofArea *\r\n    prices.waterproofMaterialPerM2;\r\n\r\n\r\n  const waterproofLabor =\r\n    waterproofArea *\r\n    prices.waterproofLaborPerM2;\r\n\r\n\r\n  const waterproofAccessories =\r\n    prices.waterproofAccessoryBase +\r\n    (\r\n      2 *\r\n      (length + width)\r\n    ) *\r\n    prices.waterproofAccessoryPerMeter;\r\n\r\n\r\n  const waterproofTotal =\r\n    waterproofMaterial +\r\n    waterproofLabor +\r\n    waterproofAccessories;\r\n\r\n\r\n\r\n  \/*\r\n   * FINISHING\r\n   *\/\r\n\r\n  const selectedFinish =\r\n    finishes[finishKey] ||\r\n    finishes.liner;\r\n\r\n\r\n  const finishArea =\r\n    internalArea *\r\n    constants.finishWaste;\r\n\r\n\r\n  const finishMaterial =\r\n    finishArea *\r\n    selectedFinish.materialPerM2;\r\n\r\n\r\n  const finishAccessories =\r\n    finishArea *\r\n    selectedFinish.accessoryPerM2;\r\n\r\n\r\n  const finishLabor =\r\n    finishArea *\r\n    selectedFinish.laborPerM2;\r\n\r\n\r\n  const finishTotal =\r\n    finishMaterial +\r\n    finishAccessories +\r\n    finishLabor;\r\n\r\n\r\n\r\n  \/*\r\n   * FILTRATION\r\n   *\/\r\n\r\n  const equipment =\r\n    equipmentByVolume(\r\n      waterVolume\r\n    );\r\n\r\n\r\n  const ladderCost =\r\n    prices.ladder;\r\n\r\n\r\n  const equipmentTotal =\r\n    equipment.pumpFilter +\r\n    equipment.embedded +\r\n    equipment.pipes +\r\n    equipment.control +\r\n    equipment.labor +\r\n    ladderCost;\r\n\r\n\r\n\r\n  \/*\r\n   * HEATING\r\n   *\/\r\n\r\n  const heatingCost =\r\n    heatingEnabled\r\n      ? heatingByVolume(waterVolume)\r\n      : 0;\r\n\r\n\r\n\r\n  \/*\r\n   * LIGHTING\r\n   *\/\r\n\r\n  let lightCount = 0;\r\n\r\n  let lightingCost = 0;\r\n\r\n\r\n  if (lightingEnabled) {\r\n\r\n    lightCount =\r\n      lightCountByArea(\r\n        floorArea\r\n      );\r\n\r\n\r\n    lightingCost =\r\n      lightCount *\r\n      (\r\n        prices.standardLight +\r\n        prices.lightInstallation\r\n      ) +\r\n      prices.lightingElectricalBase;\r\n\r\n  }\r\n\r\n\r\n\r\n  const optionsTotal =\r\n    heatingCost +\r\n    lightingCost;\r\n\r\n\r\n\r\n  \/*\r\n   * FULL SUMMARY\r\n   *\/\r\n\r\n  const constructionSummary =\r\n    earthTotal +\r\n    structureTotal +\r\n    waterproofTotal;\r\n\r\n\r\n  const equipmentSummary =\r\n    equipmentTotal +\r\n    optionsTotal;\r\n\r\n\r\n  const subtotal =\r\n    constructionSummary +\r\n    finishTotal +\r\n    equipmentSummary;\r\n\r\n\r\n  const extraCost =\r\n    subtotal *\r\n    constants.contingency;\r\n\r\n\r\n  const grandTotal =\r\n    subtotal +\r\n    extraCost;\r\n\r\n\r\n\r\n  \/*\r\n   * DISPLAY RESULTS\r\n   *\/\r\n\r\n\r\n  setText(\r\n    \"dvWaterVolume\",\r\n    decimal(waterVolume,1) + \" m\u00b3\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFloorArea\",\r\n    decimal(floorArea,1) + \" m\u00b2\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvWallArea\",\r\n    decimal(wallArea,1) + \" m\u00b2\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvInternalArea\",\r\n    decimal(internalArea,1) + \" m\u00b2\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFilterFlow\",\r\n    decimal(filterFlow,1) + \" m\u00b3\/h\"\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvExcavationVolume\",\r\n    decimal(excavationVolume,1) + \" m\u00b3\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvExcavationCost\",\r\n    money(excavationCost)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvEarthRemoval\",\r\n    money(earthRemoval)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvEarthTotal\",\r\n    money(earthTotal)\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvConcreteVolume\",\r\n    decimal(concreteOrder,2) + \" m\u00b3\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvConcreteCost\",\r\n    money(concreteMaterial)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvConcreteService\",\r\n    money(concreteService)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvRebarQuantity\",\r\n    decimal(rebarKg,0) +\r\n    \" kg \/ \" +\r\n    decimal(rebarTons,2) +\r\n    \" t\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvRebarMaterial\",\r\n    money(rebarMaterial)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvRebarLabor\",\r\n    money(rebarLabor)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFormworkMaterial\",\r\n    money(formworkMaterial)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFormworkLabor\",\r\n    money(formworkLabor)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvConcreteLabor\",\r\n    money(concreteLabor)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvStructureTotal\",\r\n    money(structureTotal)\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvWaterproofArea\",\r\n    decimal(waterproofArea,1) + \" m\u00b2\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvWaterproofMaterial\",\r\n    money(waterproofMaterial)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvWaterproofAccessories\",\r\n    money(waterproofAccessories)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvWaterproofLabor\",\r\n    money(waterproofLabor)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvWaterproofTotal\",\r\n    money(waterproofTotal)\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvFinishName\",\r\n    selectedFinish.name\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFinishArea\",\r\n    decimal(finishArea,1) + \" m\u00b2\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFinishMaterial\",\r\n    money(finishMaterial)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFinishAccessories\",\r\n    money(finishAccessories)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFinishLabor\",\r\n    money(finishLabor)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFinishTotal\",\r\n    money(finishTotal)\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvEquipmentFlow\",\r\n    \"min. \" +\r\n    decimal(filterFlow,1) +\r\n    \" m\u00b3\/h\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvPumpFilterCost\",\r\n    money(equipment.pumpFilter)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvEmbeddedCost\",\r\n    money(equipment.embedded)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvPipeCost\",\r\n    money(equipment.pipes)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvControlCost\",\r\n    money(equipment.control)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvEquipmentLabor\",\r\n    money(equipment.labor)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvLadderCost\",\r\n    money(ladderCost)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvEquipmentTotal\",\r\n    money(equipmentTotal)\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvHeatingType\",\r\n    heatingEnabled\r\n      ? \"Heating\"\r\n      : \"Without Heating\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvHeatingCost\",\r\n    money(heatingCost)\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvLightingType\",\r\n    lightingEnabled\r\n      ? \"Lighting\"\r\n      : \"Without Lighting\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvLightCount\",\r\n    lightingEnabled\r\n      ? lightCount + \" pcs\"\r\n      : \"0 pcs\"\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvLightingCost\",\r\n    money(lightingCost)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvOptionsTotal\",\r\n    money(optionsTotal)\r\n  );\r\n\r\n\r\n\r\n  setText(\r\n    \"dvConstructionSummary\",\r\n    money(constructionSummary)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvFinishSummary\",\r\n    money(finishTotal)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvEquipmentSummary\",\r\n    money(equipmentSummary)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvExtraSummary\",\r\n    money(extraCost)\r\n  );\r\n\r\n\r\n  setText(\r\n    \"dvGrandTotal\",\r\n    money(grandTotal)\r\n  );\r\n\r\n\r\n\r\n  if (output) {\r\n\r\n    output.classList.remove(\r\n      \"dv-show\"\r\n    );\r\n\r\n    void output.offsetWidth;\r\n\r\n    output.classList.add(\r\n      \"dv-show\"\r\n    );\r\n\r\n  }\r\n\r\n\r\n  return true;\r\n\r\n}\r\n\r\n\r\n\r\n\/*\r\n * CALCULATE BUTTON\r\n *\/\r\n\r\nconst calculateButton =\r\n  get(\"dvCalculatePoolFreeFlowV2\");\r\n\r\n\r\nif (calculateButton) {\r\n\r\n  calculateButton.addEventListener(\r\n    \"click\",\r\n    async function (event) {\r\n\r\n      \/*\r\n       * Completely block old\/global click handlers.\r\n       * Only this new flow controls this button.\r\n       *\/\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      event.stopImmediatePropagation();\r\n\r\n\r\n      if (dvPoolClickBusy) {\r\n        return;\r\n      }\r\n\r\n\r\n      if (!validatePoolInputs(true)) {\r\n        return;\r\n      }\r\n\r\n\r\n      dvPoolClickBusy = true;\r\n\r\n\r\n      const originalText =\r\n        calculateButton.textContent;\r\n\r\n\r\n      calculateButton.disabled = true;\r\n      calculateButton.textContent =\r\n        \"Checking access...\";\r\n\r\n\r\n      try {\r\n\r\n        const access =\r\n          await authorizePoolFlow();\r\n\r\n\r\n        if (\r\n          !access ||\r\n          !access.allowed\r\n        ) {\r\n          return;\r\n        }\r\n\r\n\r\n        const success =\r\n          calculatePool(true);\r\n\r\n\r\n        if (!success) {\r\n          return;\r\n        }\r\n\r\n        \/\/ GoSMS: successful pool calculation.\r\n        triggerPoolCompletedSms();\r\n\r\n\r\n        if (access.mode === \"free\") {\r\n\r\n          const claimed =\r\n            await claimPoolFreeCalculation();\r\n\r\n\r\n          if (claimed) {\r\n\r\n            showPoolFreeNextStep();\r\n          }\r\n\r\n        }\r\n\r\n\r\n        const output =\r\n          get(\"dvPoolOutput\");\r\n\r\n\r\n        if (output) {\r\n\r\n          window.setTimeout(\r\n            function () {\r\n\r\n              const rect =\r\n                output.getBoundingClientRect();\r\n\r\n\r\n              const headerOffset =\r\n                window.innerWidth <= 760\r\n                  ? 105\r\n                  : 135;\r\n\r\n\r\n              const target =\r\n                window.pageYOffset +\r\n                rect.top -\r\n                headerOffset;\r\n\r\n\r\n              window.scrollTo({\r\n                top:\r\n                  Math.max(\r\n                    0,\r\n                    target\r\n                  ),\r\n                behavior:\r\n                  \"smooth\"\r\n              });\r\n\r\n            },\r\n            120\r\n          );\r\n\r\n        }\r\n\r\n\r\n      } finally {\r\n\r\n        calculateButton.disabled = false;\r\n        calculateButton.textContent =\r\n          originalText;\r\n\r\n        dvPoolClickBusy = false;\r\n      }\r\n\r\n    },\r\n    true\r\n  );\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\/*\r\n * GoSMS \u2014 POOL CONSTRUCTION CALCULATOR\r\n * calculator id: pool\r\n *\/\r\nconst dvPoolCallRequest=get(\"dvPoolCallRequest\");\r\nconst dvPoolRequestCall=get(\"dvPoolRequestCall\");\r\nconst dvPoolCallPhone=get(\"dvPoolCallPhone\");\r\nconst dvPoolCallStatus=get(\"dvPoolCallStatus\");\r\nconst dvPoolCallRow=get(\"dvPoolCallRow\");\r\n\r\nlet dvPoolCallConfig={\r\n  enabled:false,\r\n  isLoggedIn:false,\r\n  hasSavedPhone:false\r\n};\r\n\r\nfunction poolAjaxUrl(){\r\n  return(\r\n    window.cpdf_auth &&\r\n    window.cpdf_auth.ajaxurl\r\n  )\r\n    ?window.cpdf_auth.ajaxurl\r\n    :\"\/wp-admin\/admin-ajax.php\";\r\n}\r\n\r\nfunction setPoolCallStatus(message,type){\r\n  if(!dvPoolCallStatus)return;\r\n\r\n  dvPoolCallStatus.textContent=message||\"\";\r\n  dvPoolCallStatus.classList.remove(\"dv-success\",\"dv-error\");\r\n\r\n  if(type){\r\n    dvPoolCallStatus.classList.add(\r\n      type===\"success\"?\"dv-success\":\"dv-error\"\r\n    );\r\n  }\r\n}\r\n\r\nfunction syncPoolCallPhoneVisibility(){\r\n  const useSavedPhone=\r\n    dvPoolCallConfig.isLoggedIn &&\r\n    dvPoolCallConfig.hasSavedPhone;\r\n\r\n  if(dvPoolCallRow){\r\n    dvPoolCallRow.classList.toggle(\r\n      \"dv-has-saved-phone\",\r\n      useSavedPhone\r\n    );\r\n  }\r\n\r\n  if(dvPoolCallPhone){\r\n    dvPoolCallPhone.required=!useSavedPhone;\r\n\r\n    if(useSavedPhone){\r\n      dvPoolCallPhone.value=\"\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function loadPoolCallConfig(){\r\n  try{\r\n    const response=await fetch(\r\n      poolAjaxUrl()+\r\n      \"?action=gosms_call_request_config&calculator=pool&_=\"+\r\n      Date.now(),\r\n      {\r\n        method:\"GET\",\r\n        credentials:\"same-origin\",\r\n        cache:\"no-store\"\r\n      }\r\n    );\r\n\r\n    const json=await response.json();\r\n\r\n    if(!json||!json.success||!json.data){\r\n      return;\r\n    }\r\n\r\n    dvPoolCallConfig={\r\n      enabled:json.data.enabled===true,\r\n      isLoggedIn:json.data.is_logged_in===true,\r\n      hasSavedPhone:json.data.has_saved_phone===true\r\n    };\r\n\r\n    if(dvPoolCallRequest){\r\n      dvPoolCallRequest.style.display=\r\n        dvPoolCallConfig.enabled?\"block\":\"none\";\r\n    }\r\n\r\n    syncPoolCallPhoneVisibility();\r\n\r\n  }catch(error){\r\n    if(dvPoolCallRequest){\r\n      dvPoolCallRequest.style.display=\"none\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function requestPoolCompanyCall(){\r\n  if(!dvPoolRequestCall||!dvPoolCallConfig.enabled)return;\r\n\r\n  const useSavedPhone=\r\n    dvPoolCallConfig.isLoggedIn &&\r\n    dvPoolCallConfig.hasSavedPhone;\r\n\r\n  const phone=\r\n    !useSavedPhone && dvPoolCallPhone\r\n      ?String(dvPoolCallPhone.value||\"\").trim()\r\n      :\"\";\r\n\r\n  if(!useSavedPhone&&!phone){\r\n    setPoolCallStatus(\r\n      \"Please enter a phone number, e.g. 599123456\",\r\n      \"error\"\r\n    );\r\n\r\n    if(dvPoolCallPhone){\r\n      dvPoolCallPhone.focus();\r\n    }\r\n    return;\r\n  }\r\n\r\n  const originalText=dvPoolRequestCall.textContent;\r\n\r\n  dvPoolRequestCall.disabled=true;\r\n  dvPoolRequestCall.textContent=\"Sending...\";\r\n  setPoolCallStatus(\"\",null);\r\n\r\n  try{\r\n    const body=new URLSearchParams();\r\n    body.set(\"action\",\"gosms_request_call\");\r\n    body.set(\"calculator\",\"pool\");\r\n\r\n    if(phone){\r\n      body.set(\"phone\",phone);\r\n    }\r\n\r\n    const response=await fetch(poolAjaxUrl(),{\r\n      method:\"POST\",\r\n      credentials:\"same-origin\",\r\n      headers:{\r\n        \"Content-Type\":\"application\/x-www-form-urlencoded; charset=UTF-8\"\r\n      },\r\n      body:body.toString()\r\n    });\r\n\r\n    const json=await response.json();\r\n\r\n    if(json&&json.success){\r\n      setPoolCallStatus(\r\n        json.data&&json.data.message\r\n          ?json.data.message\r\n          :\"Your request has been received. You will be contacted soon.\",\r\n        \"success\"\r\n      );\r\n      return;\r\n    }\r\n\r\n    const data=json&&json.data?json.data:{};\r\n\r\n    if(data&&data.disabled){\r\n      dvPoolCallConfig.enabled=false;\r\n      if(dvPoolCallRequest){\r\n        dvPoolCallRequest.style.display=\"none\";\r\n      }\r\n      return;\r\n    }\r\n\r\n    if(data&&data.need_phone){\r\n      dvPoolCallConfig.hasSavedPhone=false;\r\n      syncPoolCallPhoneVisibility();\r\n\r\n      setPoolCallStatus(\r\n        data.message||\"Please enter a phone number.\",\r\n        \"error\"\r\n      );\r\n\r\n      if(dvPoolCallPhone){\r\n        dvPoolCallPhone.focus();\r\n      }\r\n      return;\r\n    }\r\n\r\n    setPoolCallStatus(\r\n      data&&data.message\r\n        ?data.message\r\n        :\"The request could not be sent. Please try again.\",\r\n      \"error\"\r\n    );\r\n\r\n  }catch(error){\r\n    setPoolCallStatus(\r\n      \"The request could not be sent. Please try again.\",\r\n      \"error\"\r\n    );\r\n  }finally{\r\n    dvPoolRequestCall.disabled=false;\r\n    dvPoolRequestCall.textContent=originalText;\r\n  }\r\n}\r\n\r\nasync function triggerPoolCompletedSms(){\r\n  try{\r\n    const body=new URLSearchParams();\r\n    body.set(\"action\",\"gosms_calculator_completed\");\r\n    body.set(\"calculator\",\"pool\");\r\n\r\n    await fetch(poolAjaxUrl(),{\r\n      method:\"POST\",\r\n      credentials:\"same-origin\",\r\n      headers:{\r\n        \"Content-Type\":\"application\/x-www-form-urlencoded; charset=UTF-8\"\r\n      },\r\n      body:body.toString()\r\n    });\r\n  }catch(error){\r\n    \/* SMS must never block or break the calculator. *\/\r\n  }\r\n}\r\n\r\nloadPoolCallConfig();\r\n\r\nif(dvPoolRequestCall){\r\n  dvPoolRequestCall.addEventListener(\r\n    \"click\",\r\n    requestPoolCompanyCall\r\n  );\r\n}\r\n\r\n\r\n\/* PDF \u2014 DIRECT DOWNLOAD WITH jsPDF *\/\r\nconst pdfButton=get(\"dvDownloadPoolPdf\");\r\nif(pdfButton){\r\n  pdfButton.addEventListener(\"click\",async function(){\r\n    const output=get(\"dvPoolOutput\");\r\n    if(!output||!output.classList.contains(\"dv-show\")){\r\n      if(!validatePoolInputs(true))return;\r\n\r\n      const access=await authorizePoolFlow();\r\n\r\n      if(!access||!access.allowed)return;\r\n\r\n      const ok=calculatePool(true);\r\n      if(!ok)return;\r\n\r\n      triggerPoolCompletedSms();\r\n\r\n      if(access.mode===\"free\"){\r\n        const claimed=await claimPoolFreeCalculation();\r\n\r\n        if(claimed){\r\n          showPoolFreeNextStep();\r\n        }\r\n      }\r\n    }\r\n    const old=pdfButton.innerHTML;\r\n    pdfButton.disabled=true; pdfButton.textContent=\"Generating PDF...\";\r\n    const JsPDF=window.jspdf&&window.jspdf.jsPDF?window.jspdf.jsPDF:null;\r\n    if(!JsPDF){pdfButton.disabled=false;pdfButton.innerHTML=old;alert(\"The jsPDF generator could not be loaded. Please refresh the page and try again.\");return;}\r\n    try{\r\n      const doc=new JsPDF({orientation:\"portrait\",unit:\"mm\",format:\"a4\",compress:true});\r\n      const pw=doc.internal.pageSize.getWidth(), ph=doc.internal.pageSize.getHeight();\r\n      const mx=14, top=14, bottom=14, cw=pw-mx*2; let y=top;\r\n      const blue=[11,58,120], pale=[244,248,253], border=[216,227,239];\r\n      async function png(t,o={}){\r\n        const z=Object.assign({fontSize:18,fontWeight:700,color:\"#173558\",width:800,align:\"left\"},o);\r\n        const c=document.createElement(\"canvas\"), s=2;\r\n        c.width=Math.ceil(z.width*s); c.height=Math.ceil(Math.max(28,z.fontSize*1.9)*s);\r\n        const x=c.getContext(\"2d\"); x.scale(s,s); x.clearRect(0,0,c.width\/s,c.height\/s);\r\n        x.fillStyle=z.color; x.font=z.fontWeight+\" \"+z.fontSize+'px \"Segoe UI\",Arial,sans-serif'; x.textBaseline=\"middle\";\r\n        let px=4; x.textAlign=\"left\";\r\n        if(z.align===\"center\"){x.textAlign=\"center\";px=z.width\/2}else if(z.align===\"right\"){x.textAlign=\"right\";px=z.width-4}\r\n        x.fillText(String(t||\"\"),px,c.height\/s\/2);\r\n        return {data:c.toDataURL(\"image\/png\"),w:z.width,h:c.height\/s};\r\n      }\r\n      async function txt(t,x,yy,wp,wm,o){const r=await png(t,Object.assign({width:wp},o||{}));const hm=wm*r.h\/r.w;doc.addImage(r.data,\"PNG\",x,yy,wm,hm,undefined,\"FAST\");return hm;}\r\n      function space(n){if(y+n>ph-bottom){doc.addPage();y=top;}}\r\n      \/\/ title\r\n      space(24); y+=await txt(\"Pool Construction Cost Estimate\",mx,y,900,cw,{fontSize:36,fontWeight:800,color:\"#07356f\",align:\"center\"})+2;\r\n      y+=await txt(\"Datvale.ge\",mx,y,700,cw,{fontSize:16,fontWeight:700,color:\"#304a66\",align:\"center\"})+6;\r\n      \/\/ entered data\r\n      doc.setFillColor(...blue);doc.roundedRect(mx,y,cw,9,2,2,\"F\");\r\n      await txt(\"Entered Details\",mx+2,y+.7,850,cw-4,{fontSize:20,fontWeight:800,color:\"#fff\"});y+=11;\r\n      const st=s=>s&&s.selectedIndex>=0?s.options[s.selectedIndex].text.trim():\"\u2014\";\r\n      const inputs=[\r\n        [\"Pool Length\",numberValue(\"dvPoolLength\")+\" m\"],[\"Pool Width\",numberValue(\"dvPoolWidth\")+\" m\"],[\"Average Depth\",numberValue(\"dvPoolDepth\")+\" m\"],\r\n        [\"Pool Finish\",st(get(\"dvPoolFinish\"))],[\"Water Heating\",st(get(\"dvPoolHeating\"))],[\"Pool Lighting\",st(get(\"dvPoolLighting\"))]\r\n      ];\r\n      for(const r of inputs){space(13);await txt(r[0],mx+3,y+.5,900,cw*.68,{fontSize:18,fontWeight:700,color:\"#173558\"});await txt(r[1],mx+cw*.70,y+.5,400,cw*.27,{fontSize:18,fontWeight:800,color:\"#071f39\",align:\"right\"});doc.setDrawColor(225,233,242);doc.line(mx+3,y+9,mx+cw-3,y+9);y+=12;} y+=5;\r\n      \/\/ all cost cards\r\n      const cards=output.querySelectorAll(\".dv-results .dv-result-card\");\r\n      for(const card of cards){\r\n        const title=card.querySelector(\".dv-result-head h3\"), rows=[...card.querySelectorAll(\".dv-row\")], total=card.querySelector(\".dv-card-total\");\r\n        const h=12+rows.length*12+(total?13:4);space(h);\r\n        doc.setDrawColor(...border);doc.roundedRect(mx,y,cw,h,2,2,\"S\");doc.setFillColor(...blue);doc.roundedRect(mx,y,cw,9,2,2,\"F\");\r\n        await txt(title?title.textContent.trim():\"\",mx+2,y+.7,850,cw-4,{fontSize:20,fontWeight:800,color:\"#fff\"});y+=11;\r\n        for(const row of rows){const n=row.querySelector(\".dv-row-name\"),v=row.querySelector(\".dv-row-value\");await txt(n?n.textContent.trim():\"\",mx+3,y+.5,900,cw*.68,{fontSize:18,fontWeight:700,color:\"#173558\"});await txt(v?v.textContent.trim():\"\",mx+cw*.70,y+.5,400,cw*.27,{fontSize:18,fontWeight:800,color:\"#071f39\",align:\"right\"});doc.setDrawColor(225,233,242);doc.line(mx+3,y+9,mx+cw-3,y+9);y+=12;}\r\n        if(total){doc.setFillColor(...pale);doc.setDrawColor(...border);doc.roundedRect(mx+3,y,cw-6,10,1.5,1.5,\"FD\");await txt(total.textContent.replace(\/\\s+\/g,\" \").trim(),mx+4,y+.8,900,cw-8,{fontSize:18,fontWeight:800,color:\"#071f39\",align:\"right\"});y+=12;}else y+=3;\r\n        y+=4;\r\n      }\r\n      \/\/ summary\r\n      const summary=output.querySelector(\".dv-summary\");\r\n      if(summary){space(50);await txt(\"Cost Summary\",mx,y,850,cw,{fontSize:23,fontWeight:800,color:\"#071f39\"});y+=12;\r\n        const items=[...summary.querySelectorAll(\".dv-summary-item\")], gap=3, bw=(cw-gap*3)\/4;\r\n        items.forEach(()=>{});\r\n        for(let i=0;i<items.length;i++){const it=items[i],lab=it.querySelector(\".dv-summary-label\"),val=it.querySelector(\".dv-summary-value\"),x=mx+i*(bw+gap);doc.setFillColor(...pale);doc.setDrawColor(...border);doc.roundedRect(x,y,bw,18,2,2,\"FD\");await txt(lab?lab.textContent.trim():\"\",x+1.5,y+1.5,420,bw-3,{fontSize:18,fontWeight:800,color:\"#071f39\",align:\"center\"});await txt(val?val.textContent.trim():\"\",x+1.5,y+8.5,420,bw-3,{fontSize:18,fontWeight:800,color:\"#071f39\",align:\"center\"});}\r\n        y+=21;space(24);const grand=summary.querySelector(\"#dvGrandTotal\");doc.setFillColor(...blue);doc.roundedRect(mx,y,cw,18,2,2,\"F\");await txt(\"Estimated Total Pool Construction Cost\",mx+2,y+2,850,cw-4,{fontSize:13,fontWeight:700,color:\"#fff\",align:\"center\"});await txt(grand?grand.textContent.trim():\"\",mx+2,y+8,850,cw-4,{fontSize:34,fontWeight:800,color:\"#fff\",align:\"center\"});y+=22;\r\n      }\r\n      space(10);await txt(\"Datvale.ge \u2014 The calculated amount is an estimated cost.\",mx,y,850,cw,{fontSize:13,fontWeight:600,color:\"#425a74\",align:\"center\"});\r\n      doc.save(\"Datvale-auzis-kharjtagricxva.pdf\");\r\n    }catch(e){console.error(\"Pool PDF error:\",e);alert(\"The PDF could not be created.\");}\r\n    finally{pdfButton.disabled=false;pdfButton.innerHTML=old;}\r\n  });\r\n}\r\n\r\n})();\r\n<\/script>\r\n\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-199f09d e-flex e-con-boxed e-con e-parent\" data-id=\"199f09d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7a58589 elementor-widget elementor-widget-html\" data-id=\"7a58589\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<a\r\n  href=\"https:\/\/datvale.ge\/en\/property-insurance\/\"\r\n  class=\"dv-property-offer\"\r\n  aria-label=\"Calculate the cost of property insurance\"\r\n>\r\n\r\n  <div class=\"dv-property-offer-copy\">\r\n\r\n    <strong>\r\n      Calculate the cost of property insurance\r\n    <\/strong>\r\n\r\n    <span>\r\n      Get a special offer for your apartment or house\r\n    <\/span>\r\n\r\n  <\/div>\r\n\r\n  <div class=\"dv-property-offer-button\">\r\n    Calculate Price\r\n    <b>\u2192<\/b>\r\n  <\/div>\r\n\r\n<\/a>\r\n\r\n\r\n<style>\r\n\r\n.dv-property-offer,\r\n.dv-property-offer *{\r\n  box-sizing:border-box;\r\n}\r\n\r\n.dv-property-offer{\r\n  position:relative;\r\n  overflow:hidden;\r\n\r\n  width:100%;\r\n\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:space-between;\r\n\r\n  gap:20px;\r\n\r\n  padding:18px 20px;\r\n\r\n  border:1px solid rgba(110,73,22,.16);\r\n  border-radius:18px;\r\n\r\n  background:\r\n    radial-gradient(\r\n      circle at 90% 0%,\r\n      rgba(255,255,255,.88),\r\n      transparent 28%\r\n    ),\r\n    linear-gradient(\r\n      135deg,\r\n      #f4dfb4 0%,\r\n      #d6aa5c 48%,\r\n      #b88132 100%\r\n    );\r\n\r\n  box-shadow:\r\n    0 14px 34px rgba(106,70,19,.20),\r\n    inset 0 1px 0 rgba(255,255,255,.58);\r\n\r\n  text-decoration:none !important;\r\n\r\n  transition:\r\n    transform .22s ease,\r\n    box-shadow .22s ease;\r\n}\r\n\r\n.dv-property-offer::before{\r\n  content:\"\";\r\n\r\n  position:absolute;\r\n  top:-80px;\r\n  right:90px;\r\n\r\n  width:170px;\r\n  height:170px;\r\n\r\n  border-radius:50%;\r\n\r\n  background:\r\n    radial-gradient(\r\n      circle,\r\n      rgba(255,255,255,.36),\r\n      transparent 68%\r\n    );\r\n\r\n  pointer-events:none;\r\n}\r\n\r\n.dv-property-offer:hover{\r\n  transform:translateY(-2px);\r\n\r\n  box-shadow:\r\n    0 18px 42px rgba(106,70,19,.27),\r\n    inset 0 1px 0 rgba(255,255,255,.62);\r\n\r\n  text-decoration:none !important;\r\n}\r\n\r\n\r\n.dv-property-offer-copy{\r\n  position:relative;\r\n  z-index:2;\r\n\r\n  min-width:0;\r\n\r\n  display:flex;\r\n  flex-direction:column;\r\n\r\n  gap:4px;\r\n}\r\n\r\n.dv-property-offer-copy strong{\r\n  color:#2e2111;\r\n\r\n  font-size:19px;\r\n  line-height:1.2;\r\n\r\n  font-weight:950;\r\n\r\n  letter-spacing:-.01em;\r\n}\r\n\r\n.dv-property-offer-copy span{\r\n  color:rgba(46,33,17,.78);\r\n\r\n  font-size:13px;\r\n  line-height:1.35;\r\n\r\n  font-weight:700;\r\n}\r\n\r\n\r\n.dv-property-offer-button{\r\n  position:relative;\r\n  z-index:2;\r\n\r\n  flex:0 0 auto;\r\n\r\n  display:inline-flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  gap:7px;\r\n\r\n  min-height:46px;\r\n\r\n  padding:11px 16px;\r\n\r\n  border:1px solid rgba(46,33,17,.10);\r\n  border-radius:11px;\r\n\r\n  background:#21170c;\r\n\r\n  color:#ffffff;\r\n\r\n  font-size:13px;\r\n  line-height:1;\r\n\r\n  font-weight:900;\r\n\r\n  white-space:nowrap;\r\n\r\n  box-shadow:\r\n    0 7px 18px rgba(33,23,12,.20);\r\n}\r\n\r\n.dv-property-offer-button b{\r\n  font-size:15px;\r\n  line-height:1;\r\n\r\n  transition:transform .2s ease;\r\n}\r\n\r\n.dv-property-offer:hover\r\n.dv-property-offer-button b{\r\n  transform:translateX(2px);\r\n}\r\n\r\n\r\n\/* TABLET *\/\r\n\r\n@media(max-width:900px){\r\n\r\n  .dv-property-offer{\r\n    padding:16px 17px;\r\n\r\n    border-radius:15px;\r\n  }\r\n\r\n  .dv-property-offer-copy strong{\r\n    font-size:17px;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* MOBILE *\/\r\n\r\n@media(max-width:600px){\r\n\r\n  .dv-property-offer{\r\n    gap:10px;\r\n\r\n    padding:12px;\r\n\r\n    border-radius:13px;\r\n  }\r\n\r\n  .dv-property-offer-copy{\r\n    gap:2px;\r\n  }\r\n\r\n  .dv-property-offer-copy strong{\r\n    font-size:14px;\r\n    line-height:1.2;\r\n  }\r\n\r\n  .dv-property-offer-copy span{\r\n    font-size:10.5px;\r\n    line-height:1.25;\r\n  }\r\n\r\n  .dv-property-offer-button{\r\n    min-height:37px;\r\n\r\n    padding:8px 10px;\r\n\r\n    border-radius:8px;\r\n\r\n    font-size:10.5px;\r\n  }\r\n\r\n  .dv-property-offer-button b{\r\n    font-size:12px;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* SMALL MOBILE *\/\r\n\r\n@media(max-width:380px){\r\n\r\n  .dv-property-offer{\r\n    gap:8px;\r\n\r\n    padding:10px;\r\n  }\r\n\r\n  .dv-property-offer-copy strong{\r\n    font-size:13px;\r\n  }\r\n\r\n  .dv-property-offer-copy span{\r\n    font-size:9.5px;\r\n  }\r\n\r\n  .dv-property-offer-button{\r\n    padding:7px 8px;\r\n\r\n    font-size:10px;\r\n  }\r\n\r\n}\r\n\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-338ac64 e-flex e-con-boxed e-con e-parent\" data-id=\"338ac64\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-96c8602 elementor-widget elementor-widget-html\" data-id=\"96c8602\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"dv-partners\">\r\n\r\n  <div class=\"dv-partners-head\">\r\n\r\n    <span>DATVALE.GE PARTNERS<\/span>\r\n\r\n    <h2>Special Offers<\/h2>\r\n\r\n    <p>\r\n      Take advantage of special offers from Datvale partner companies\r\n      for renovation, construction and interior projects.\r\n    <\/p>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-partners-grid\">\r\n\r\n\r\n    <!-- NEW LIGHT -->\r\n\r\n    <article class=\"dv-card\">\r\n\r\n      <div class=\"dv-logo\">\r\n\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/datvale.ge\/wp-content\/uploads\/2025\/06\/dbd6fc01-a56b-490f-b2a5-59f3445fe63a.jpg\"\r\n          alt=\"New Light\"\r\n          loading=\"lazy\"\r\n        >\r\n\r\n        <span class=\"dv-badge\">\r\n          -15%\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n\r\n      <button\r\n        class=\"dv-toggle\"\r\n        type=\"button\"\r\n        aria-expanded=\"false\"\r\n      >\r\n        View Offer\r\n      <\/button>\r\n\r\n\r\n      <div class=\"dv-details\">\r\n\r\n        <h3>New Light<\/h3>\r\n\r\n\r\n        <div class=\"dv-type\">\r\n          Lighting Store\r\n        <\/div>\r\n\r\n\r\n        <p>\r\n          A wide selection of international lighting brands, including\r\n          Philips, Eglo, Artemide, Luceplan, Vibia, Osram and more.\r\n        <\/p>\r\n\r\n\r\n        <div class=\"dv-links\">\r\n\r\n          <a href=\"https:\/\/newlight.ge\/\" target=\"_blank\" rel=\"noopener\">\r\n            newlight.ge\r\n          <\/a>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n    <\/article>\r\n\r\n\r\n\r\n    <!-- NOVA -->\r\n\r\n    <article class=\"dv-card\">\r\n\r\n      <div class=\"dv-logo\">\r\n\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/datvale.ge\/wp-content\/uploads\/2025\/08\/\u10da\u10dd\u10d2\u10dd\u10d4\u10d1\u10d8-26-2.png\"\r\n          alt=\"Nova\"\r\n          loading=\"lazy\"\r\n        >\r\n\r\n        <span class=\"dv-badge\">\r\n          Up to 20%\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n\r\n      <button\r\n        class=\"dv-toggle\"\r\n        type=\"button\"\r\n        aria-expanded=\"false\"\r\n      >\r\n        View Offer\r\n      <\/button>\r\n\r\n\r\n      <div class=\"dv-details\">\r\n\r\n        <h3>Nova<\/h3>\r\n\r\n\r\n        <div class=\"dv-type\">\r\n          Construction & Renovation Hypermarket\r\n        <\/div>\r\n\r\n\r\n        <p>\r\n          A wide range of construction and renovation products,\r\n          including own-brand manufacturing and international brands\r\n          for renovation and construction projects.\r\n        <\/p>\r\n\r\n\r\n        <div class=\"dv-links\">\r\n\r\n          <a href=\"https:\/\/nova.ge\/\" target=\"_blank\" rel=\"noopener\">\r\n            nova.ge\r\n          <\/a>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n    <\/article>\r\n\r\n\r\n\r\n    <!-- VITRA -->\r\n\r\n    <article class=\"dv-card\">\r\n\r\n      <div class=\"dv-logo\">\r\n\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/datvale.ge\/wp-content\/uploads\/2025\/06\/\u10da\u10dd\u10d2\u10dd\u10d4\u10d1\u10d8-28.png\"\r\n          alt=\"VitrA Georgia\"\r\n          loading=\"lazy\"\r\n        >\r\n\r\n        <span class=\"dv-badge\">\r\n          -15%\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n\r\n      <button\r\n        class=\"dv-toggle\"\r\n        type=\"button\"\r\n        aria-expanded=\"false\"\r\n      >\r\n        View Offer\r\n      <\/button>\r\n\r\n\r\n      <div class=\"dv-details\">\r\n\r\n        <h3>VitrA Georgia<\/h3>\r\n\r\n\r\n        <div class=\"dv-type\">\r\n          Sanitary Ware & Ceramic Tiles\r\n        <\/div>\r\n\r\n\r\n        <p>\r\n          A wide selection of bathroom sanitary ware and ceramic tiles\r\n          for creating a modern and functional bathroom.\r\n        <\/p>\r\n\r\n\r\n        <div class=\"dv-links\">\r\n\r\n          <a href=\"https:\/\/vitra.com.ge\/ka\/\" target=\"_blank\" rel=\"noopener\">\r\n            vitra.com.ge\r\n          <\/a>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n    <\/article>\r\n\r\n\r\n\r\n    <!-- CAPAROL -->\r\n\r\n    <article class=\"dv-card\">\r\n\r\n      <div class=\"dv-logo\">\r\n\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/datvale.ge\/wp-content\/uploads\/2025\/10\/24.09.2025-33.png\"\r\n          alt=\"Caparol\"\r\n          loading=\"lazy\"\r\n        >\r\n\r\n        <span class=\"dv-badge\">\r\n          -10%\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n\r\n      <button\r\n        class=\"dv-toggle\"\r\n        type=\"button\"\r\n        aria-expanded=\"false\"\r\n      >\r\n        View Offer\r\n      <\/button>\r\n\r\n\r\n      <div class=\"dv-details\">\r\n\r\n        <h3>Caparol<\/h3>\r\n\r\n\r\n        <div class=\"dv-type\">\r\n          Paints & Finishing Materials\r\n        <\/div>\r\n\r\n\r\n        <p>\r\n          An international brand of interior and facade paints,\r\n          decorative coatings and finishing materials.\r\n        <\/p>\r\n\r\n\r\n        <div class=\"dv-address\">\r\n\r\n          <span>\r\n            Tbilisi \u2014 8 Petre Kavtaradze St. \u2022 599 44 55 67\r\n          <\/span>\r\n\r\n          <span>\r\n            Tbilisi \u2014 15 Samtredia St. \u2022 599 58 26 25\r\n          <\/span>\r\n\r\n          <span>\r\n            Batumi \u2014 35 Pushkin St. \u2022 558 04 04 96\r\n          <\/span>\r\n\r\n        <\/div>\r\n\r\n\r\n        <div class=\"dv-links\">\r\n\r\n          <a href=\"https:\/\/caparol.ge\" target=\"_blank\" rel=\"noopener\">\r\n            caparol.ge\r\n          <\/a>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n    <\/article>\r\n\r\n\r\n  <\/div>\r\n\r\n\r\n  <!-- ALL PARTNERS -->\r\n\r\n  <div class=\"dv-all-partners\">\r\n\r\n    <a href=\"https:\/\/datvale.ge\/en\/partners\/\">\r\n      All Partners\r\n    <\/a>\r\n\r\n  <\/div>\r\n\r\n<\/section>\r\n\r\n\r\n<style>\r\n\r\n.dv-partners,\r\n.dv-partners *{\r\n  box-sizing:border-box;\r\n}\r\n\r\n\r\n.dv-partners{\r\n  --blue:#0b4187;\r\n  --blue2:#176bc5;\r\n  --text:#173a61;\r\n  --muted:#65788c;\r\n  --border:#e1e9f2;\r\n  --light:#f7faff;\r\n\r\n  width:100%;\r\n  max-width:1200px;\r\n\r\n  margin:40px auto;\r\n  padding:0 15px;\r\n\r\n  font-family:\r\n    system-ui,\r\n    -apple-system,\r\n    BlinkMacSystemFont,\r\n    \"Segoe UI\",\r\n    sans-serif;\r\n}\r\n\r\n\r\n\/* HEADER *\/\r\n\r\n.dv-partners-head{\r\n  max-width:760px;\r\n\r\n  margin:0 auto 28px;\r\n\r\n  text-align:center;\r\n}\r\n\r\n\r\n.dv-partners-head > span{\r\n  display:block;\r\n\r\n  margin-bottom:7px;\r\n\r\n  color:var(--blue2);\r\n\r\n  font-size:12px;\r\n  font-weight:900;\r\n  letter-spacing:.08em;\r\n}\r\n\r\n\r\n.dv-partners-head h2{\r\n  margin:0 0 9px;\r\n\r\n  color:var(--text);\r\n\r\n  font-size:clamp(27px,4vw,38px);\r\n  line-height:1.15;\r\n  font-weight:950;\r\n}\r\n\r\n\r\n.dv-partners-head p{\r\n  margin:0;\r\n\r\n  color:var(--muted);\r\n\r\n  font-size:15px;\r\n  line-height:1.6;\r\n}\r\n\r\n\r\n\/* GRID *\/\r\n\r\n.dv-partners-grid{\r\n  display:grid;\r\n\r\n  grid-template-columns:\r\n    repeat(4,minmax(0,1fr));\r\n\r\n  gap:16px;\r\n\r\n  align-items:start;\r\n}\r\n\r\n\r\n\/* CARD *\/\r\n\r\n.dv-card{\r\n  position:relative;\r\n\r\n  width:100%;\r\n  height:220px;\r\n\r\n  overflow:hidden;\r\n\r\n  border:\r\n    1px solid var(--border);\r\n\r\n  border-radius:20px;\r\n\r\n  background:#fff;\r\n\r\n  box-shadow:\r\n    0 8px 28px rgba(27,61,98,.08);\r\n\r\n  transition:\r\n    transform .22s ease,\r\n    box-shadow .22s ease,\r\n    border-color .22s ease;\r\n}\r\n\r\n\r\n.dv-card:hover{\r\n  transform:translateY(-3px);\r\n\r\n  border-color:#cfdeed;\r\n\r\n  box-shadow:\r\n    0 15px 36px rgba(27,61,98,.13);\r\n}\r\n\r\n\r\n.dv-card.dv-open{\r\n  height:auto;\r\n  overflow:visible;\r\n}\r\n\r\n\r\n\/* LOGO *\/\r\n\r\n.dv-logo{\r\n  position:relative;\r\n\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  width:100%;\r\n  height:158px;\r\n\r\n  padding:20px;\r\n\r\n  background:#fff;\r\n}\r\n\r\n\r\n.dv-logo img{\r\n  display:block;\r\n\r\n  width:auto;\r\n  height:auto;\r\n\r\n  max-width:100%;\r\n  max-height:105px;\r\n\r\n  object-fit:contain;\r\n}\r\n\r\n\r\n\/* BADGE *\/\r\n\r\n.dv-badge{\r\n  position:absolute;\r\n\r\n  top:12px;\r\n  right:12px;\r\n\r\n  z-index:2;\r\n\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  min-height:31px;\r\n\r\n  padding:6px 10px;\r\n\r\n  border-radius:100px;\r\n\r\n  background:\r\n    linear-gradient(\r\n      135deg,\r\n      var(--blue),\r\n      var(--blue2)\r\n    );\r\n\r\n  color:#fff;\r\n\r\n  font-size:11px;\r\n  line-height:1;\r\n  font-weight:950;\r\n\r\n  box-shadow:\r\n    0 6px 15px rgba(11,65,135,.23);\r\n}\r\n\r\n\r\n\/* BUTTON *\/\r\n\r\n.dv-toggle{\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  width:calc(100% - 28px);\r\n  height:46px;\r\n\r\n  margin:0 14px 16px;\r\n\r\n  padding:10px 12px;\r\n\r\n  border:0;\r\n\r\n  border-radius:12px;\r\n\r\n  background:\r\n    linear-gradient(\r\n      135deg,\r\n      var(--blue),\r\n      var(--blue2)\r\n    );\r\n\r\n  color:#fff;\r\n\r\n  font:inherit;\r\n\r\n  font-size:13px;\r\n  font-weight:900;\r\n\r\n  cursor:pointer;\r\n\r\n  box-shadow:\r\n    0 7px 18px rgba(11,65,135,.18);\r\n\r\n  transition:\r\n    transform .2s ease,\r\n    box-shadow .2s ease,\r\n    background .2s ease;\r\n}\r\n\r\n\r\n.dv-toggle:hover{\r\n  transform:translateY(-1px);\r\n\r\n  box-shadow:\r\n    0 10px 23px rgba(11,65,135,.25);\r\n}\r\n\r\n\r\n\/* DETAILS *\/\r\n\r\n.dv-details{\r\n  display:none;\r\n\r\n  padding:18px;\r\n\r\n  border-top:\r\n    1px solid var(--border);\r\n\r\n  background:var(--light);\r\n}\r\n\r\n\r\n.dv-card.dv-open .dv-details{\r\n  display:block;\r\n}\r\n\r\n\r\n\/* OPEN BUTTON *\/\r\n\r\n.dv-card.dv-open .dv-toggle{\r\n  margin-bottom:14px;\r\n\r\n  background:#eaf2fb;\r\n\r\n  color:var(--blue);\r\n\r\n  box-shadow:none;\r\n}\r\n\r\n\r\n\/* NAME *\/\r\n\r\n.dv-details h3{\r\n  margin:0 0 7px;\r\n\r\n  color:var(--text);\r\n\r\n  font-size:18px;\r\n  line-height:1.3;\r\n  font-weight:950;\r\n}\r\n\r\n\r\n\/* TYPE *\/\r\n\r\n.dv-type{\r\n  display:inline-block;\r\n\r\n  margin-bottom:12px;\r\n\r\n  padding:5px 9px;\r\n\r\n  border-radius:7px;\r\n\r\n  background:#e8f1fb;\r\n\r\n  color:var(--blue);\r\n\r\n  font-size:11px;\r\n  line-height:1.35;\r\n  font-weight:850;\r\n}\r\n\r\n\r\n\/* DESCRIPTION *\/\r\n\r\n.dv-details p{\r\n  margin:0;\r\n\r\n  color:#49637d;\r\n\r\n  font-size:13px;\r\n  line-height:1.62;\r\n}\r\n\r\n\r\n\/* LINKS *\/\r\n\r\n.dv-links{\r\n  display:flex;\r\n  flex-wrap:wrap;\r\n\r\n  gap:8px;\r\n\r\n  margin-top:14px;\r\n}\r\n\r\n\r\n.dv-links a{\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  flex:1 1 auto;\r\n\r\n  min-height:40px;\r\n\r\n  padding:9px 12px;\r\n\r\n  border:\r\n    1px solid #d2dfed;\r\n\r\n  border-radius:10px;\r\n\r\n  background:#fff;\r\n\r\n  color:\r\n    var(--blue)!important;\r\n\r\n  font-size:12px;\r\n  font-weight:900;\r\n\r\n  text-decoration:none!important;\r\n\r\n  transition:\r\n    background .2s ease,\r\n    border-color .2s ease;\r\n}\r\n\r\n\r\n.dv-links a:hover{\r\n  background:#edf5fd;\r\n\r\n  border-color:#bcd2e8;\r\n}\r\n\r\n\r\n\/* CAPAROL ADDRESSES *\/\r\n\r\n.dv-address{\r\n  display:flex;\r\n  flex-direction:column;\r\n\r\n  gap:6px;\r\n\r\n  margin-top:13px;\r\n}\r\n\r\n\r\n.dv-address span{\r\n  display:block;\r\n\r\n  padding:8px 10px;\r\n\r\n  border:\r\n    1px solid #e2eaf3;\r\n\r\n  border-radius:9px;\r\n\r\n  background:#fff;\r\n\r\n  color:#526a82;\r\n\r\n  font-size:11px;\r\n  line-height:1.45;\r\n}\r\n\r\n\r\n\/* ALL PARTNERS BUTTON *\/\r\n\r\n.dv-all-partners{\r\n  display:flex;\r\n  justify-content:center;\r\n\r\n  margin-top:22px;\r\n}\r\n\r\n\r\n.dv-all-partners a{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n\r\n  min-height:46px;\r\n\r\n  padding:10px 22px;\r\n\r\n  border-radius:12px;\r\n\r\n  background:\r\n    linear-gradient(\r\n      135deg,\r\n      var(--blue),\r\n      var(--blue2)\r\n    );\r\n\r\n  color:#fff!important;\r\n\r\n  font-size:13px;\r\n  font-weight:900;\r\n\r\n  text-decoration:none!important;\r\n\r\n  box-shadow:\r\n    0 7px 18px rgba(11,65,135,.18);\r\n\r\n  transition:\r\n    transform .2s ease,\r\n    box-shadow .2s ease;\r\n}\r\n\r\n\r\n.dv-all-partners a:hover{\r\n  transform:translateY(-1px);\r\n\r\n  box-shadow:\r\n    0 10px 23px rgba(11,65,135,.25);\r\n}\r\n\r\n\r\n\/* TABLET *\/\r\n\r\n@media(max-width:950px){\r\n\r\n  .dv-partners-grid{\r\n    grid-template-columns:\r\n      repeat(2,minmax(0,1fr));\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* MOBILE *\/\r\n\r\n@media(max-width:700px){\r\n\r\n  .dv-partners{\r\n    margin:28px auto;\r\n\r\n    padding:0 9px;\r\n  }\r\n\r\n\r\n  .dv-partners-head{\r\n    margin-bottom:20px;\r\n  }\r\n\r\n\r\n  .dv-partners-head p{\r\n    font-size:14px;\r\n  }\r\n\r\n\r\n  .dv-partners-grid{\r\n    grid-template-columns:\r\n      repeat(2,minmax(0,1fr));\r\n\r\n    gap:10px;\r\n  }\r\n\r\n\r\n  .dv-card{\r\n    height:174px;\r\n\r\n    border-radius:15px;\r\n  }\r\n\r\n\r\n  .dv-logo{\r\n    height:120px;\r\n\r\n    padding:12px;\r\n  }\r\n\r\n\r\n  .dv-logo img{\r\n    max-height:82px;\r\n  }\r\n\r\n\r\n  .dv-badge{\r\n    top:7px;\r\n    right:7px;\r\n\r\n    min-height:25px;\r\n\r\n    padding:5px 7px;\r\n\r\n    font-size:9px;\r\n  }\r\n\r\n\r\n  .dv-toggle{\r\n    width:calc(100% - 16px);\r\n    height:40px;\r\n\r\n    margin:0 8px 14px;\r\n\r\n    padding:7px;\r\n\r\n    border-radius:9px;\r\n\r\n    font-size:10.5px;\r\n  }\r\n\r\n\r\n  .dv-details{\r\n    padding:14px 11px;\r\n  }\r\n\r\n\r\n  .dv-details h3{\r\n    font-size:16px;\r\n  }\r\n\r\n\r\n  .dv-type{\r\n    margin-bottom:10px;\r\n\r\n    font-size:10px;\r\n  }\r\n\r\n\r\n  .dv-details p{\r\n    font-size:11.5px;\r\n\r\n    line-height:1.6;\r\n  }\r\n\r\n\r\n  .dv-links{\r\n    flex-direction:column;\r\n  }\r\n\r\n\r\n  .dv-links a{\r\n    width:100%;\r\n  }\r\n\r\n\r\n  .dv-address span{\r\n    font-size:10.5px;\r\n  }\r\n\r\n\r\n  .dv-all-partners{\r\n    margin-top:18px;\r\n  }\r\n\r\n\r\n  .dv-all-partners a{\r\n    min-height:42px;\r\n\r\n    padding:9px 18px;\r\n\r\n    font-size:11px;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* VERY SMALL MOBILE *\/\r\n\r\n@media(max-width:340px){\r\n\r\n  .dv-partners-grid{\r\n    grid-template-columns:1fr;\r\n  }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<script>\r\n\r\n(function(){\r\n\r\n  const section =\r\n    document.querySelector('.dv-partners');\r\n\r\n\r\n  if(!section){\r\n    return;\r\n  }\r\n\r\n\r\n  const buttons =\r\n    section.querySelectorAll('.dv-toggle');\r\n\r\n\r\n  buttons.forEach(function(button){\r\n\r\n    button.addEventListener(\r\n      'click',\r\n      function(){\r\n\r\n        const card =\r\n          button.closest('.dv-card');\r\n\r\n\r\n        const isOpen =\r\n          card.classList.contains('dv-open');\r\n\r\n\r\n        \/*\r\n         * Close all open cards\r\n         *\/\r\n\r\n        section\r\n          .querySelectorAll('.dv-card.dv-open')\r\n          .forEach(function(openCard){\r\n\r\n            openCard\r\n              .classList\r\n              .remove('dv-open');\r\n\r\n\r\n            const openButton =\r\n              openCard.querySelector('.dv-toggle');\r\n\r\n\r\n            if(openButton){\r\n\r\n              openButton.textContent =\r\n                'View Offer';\r\n\r\n\r\n              openButton.setAttribute(\r\n                'aria-expanded',\r\n                'false'\r\n              );\r\n\r\n            }\r\n\r\n          });\r\n\r\n\r\n        \/*\r\n         * Open the selected card\r\n         *\/\r\n\r\n        if(!isOpen){\r\n\r\n          card\r\n            .classList\r\n            .add('dv-open');\r\n\r\n\r\n          button.textContent =\r\n            'Close Offer';\r\n\r\n\r\n          button.setAttribute(\r\n            'aria-expanded',\r\n            'true'\r\n          );\r\n\r\n        }\r\n\r\n      }\r\n    );\r\n\r\n  });\r\n\r\n})();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7a9e4e5 e-flex e-con-boxed e-con e-parent\" data-id=\"7a9e4e5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b35bdc elementor-widget elementor-widget-text-editor\" data-id=\"1b35bdc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Pool Cost in Georgia in 2026<\/h2>\n<p>The cost of a swimming pool depends on its size, depth, construction type, finishing materials, and technical equipment. Building a small pool and constructing a large swimming pool can differ significantly in terms of material quantities, labor costs, and technical systems.<\/p>\n<p>Datvale\u2019s Pool Calculator allows you to estimate the total expected cost of pool construction in advance. Simply enter the pool length, width, average depth, finishing type, and additional systems.<\/p>\n<h2>What Is Included in the Pool Cost?<\/h2>\n<p>The pool cost does not refer only to concrete or finishing materials. A complete estimate includes excavation work, the reinforced concrete pool structure, reinforcement, formwork, waterproofing, interior finishing, the filtration system, and installation labor.<\/p>\n<p>A pump, sand filter, skimmer, nozzles, bottom drain, PVC pipes, fittings, and a control system are also required. For this reason, the pool cost should be evaluated as a complete system rather than based only on the pool area.<\/p>\n<h2>Pool Construction Cost and Dimensions<\/h2>\n<p>The pool construction cost is directly related to the pool volume. As the length, width, and depth increase, more excavation, concrete, reinforcement, and waterproofing materials are required.<\/p>\n<p>For example, the difference in cost between an 8 \u00d7 4 meter pool and a 12 \u00d7 6 meter pool is not limited only to the increase in area. The water volume also increases, which may require a more powerful filtration and pumping system.<\/p>\n<h2>Pool Finishing Cost<\/h2>\n<p>The pool cost can vary significantly depending on the selected interior finish. Common options include liner, granite, and mosaic.<\/p>\n<p>Liner is a relatively economical solution and can also be installed quickly. Granite and mosaic are considered higher-end finishes, and both material and labor costs are typically higher.<\/p>\n<p>When choosing a finish, it is important to consider not only the initial price, but also durability, maintenance requirements, and future operating costs.<\/p>\n<h2>Pool Filtration System Cost<\/h2>\n<p>A good filtration system is one of the most important parts of a swimming pool. The capacity of the pump and filter should be selected according to the water volume.<\/p>\n<p>Insufficient filtration capacity can reduce water quality and increase maintenance costs. Therefore, the pool cost should not be considered complete without including the technical equipment.<\/p>\n<p>Our calculator automatically calculates the required filtration capacity based on the pool volume and estimates the cost of the technical system.<\/p>\n<h2>What Affects the Final Pool Cost?<\/h2>\n<p>The final pool cost is mainly affected by the pool size, average depth, finishing type, ground conditions, and selected technical equipment.<\/p>\n<p>The total price may also increase if heating and lighting systems are added. If the pool is planned for use outside the main season, a heating system can be a significant additional expense.<\/p>\n<h2>How to Use the Pool Calculator<\/h2>\n<p>Enter the pool length, width, and average depth. Then select the desired finishing material and choose whether you want water heating and pool lighting.<\/p>\n<p>The calculator automatically estimates the water volume, construction materials, labor costs, finishing, filtration, and additional systems.<\/p>\n<p>The result will help you estimate your budget in advance and compare the cost of pools with different sizes and configurations.<\/p>\n<p>Follow us on <a href=\"http:\/\/facebook.com\/datvale.ge\">Facebook<\/a> and <a href=\"http:\/\/youtube.com\/@datvale\" target=\"_blank\" rel=\"noopener\">YouTube<\/a>.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Pool Construction Cost 2026 \u2013 Pool Calculator Enter the Pool Details Pool Length m Pool Width m Average Depth m Pool Finish Liner Granite Mosaic Water Heating Without Heating Heating Pool Lighting Without Lighting Lighting The calculator estimates a standard in-ground monolithic reinforced-concrete skimmer pool. The cost includes the main construction materials, labor, waterproofing, the&#8230;<\/p>\n","protected":false},"author":67,"featured_media":0,"parent":0,"menu_order":19,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-21883","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/comments?post=21883"}],"version-history":[{"count":1,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21883\/revisions"}],"predecessor-version":[{"id":22127,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21883\/revisions\/22127"}],"wp:attachment":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/media?parent=21883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}