


<style id="elementor-post-21911">.elementor-21911 .elementor-element.elementor-element-0f96c97{--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-21911 .elementor-element.elementor-element-19259af{--display:flex;--justify-content:center;--margin-top:-25px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.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-21911 .elementor-element.elementor-element-95f3a0d > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-21911 .elementor-element.elementor-element-95f3a0d{text-align:center;}.elementor-21911 .elementor-element.elementor-element-95f3a0d .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-21911 .elementor-element.elementor-element-95f3a0d .elementor-heading-title a{transition-duration:0s;}.elementor-21911 .elementor-element.elementor-element-8af63f5{--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-21911 .elementor-element.elementor-element-d192458{--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-21911 .elementor-element.elementor-element-cbda816{--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-21911 .elementor-element.elementor-element-715e576{--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-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 );}.elementor-21911 .elementor-element.elementor-element-2349297{--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-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-21911 .elementor-element.elementor-element-52227bb img{width:100%;border-radius:25px 25px 25px 25px;}@media(max-width:1024px){.elementor-21911 .elementor-element.elementor-element-95f3a0d > .elementor-widget-container{padding:0px 0px 0px 0px;}}@media(max-width:767px){.elementor-21911 .elementor-element.elementor-element-97a2e25 > .elementor-widget-container{margin:97px 0px 0px 0px;}.elementor-21911 .elementor-element.elementor-element-19259af{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-21911 .elementor-element.elementor-element-95f3a0d > .elementor-widget-container{padding:010px 010px 5px 010px;}.elementor-21911 .elementor-element.elementor-element-95f3a0d{text-align:center;}.elementor-21911 .elementor-element.elementor-element-95f3a0d .elementor-heading-title{font-size:17px;-webkit-text-stroke-width:0px;stroke-width:0px;}.elementor-21911 .elementor-element.elementor-element-8af63f5{--margin-top:-25px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}}@media(min-width:768px){.elementor-21911 .elementor-element.elementor-element-19259af{--content-width:1600px;}}</style>{"id":21911,"date":"2026-08-19T18:12:34","date_gmt":"2026-08-19T14:12:34","guid":{"rendered":"https:\/\/datvale.ge\/%e1%83%99%e1%83%9d%e1%83%a2%e1%83%94%e1%83%af%e1%83%94%e1%83%91%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:50:04","modified_gmt":"2026-10-07T14:50:04","slug":"cottage-calculator","status":"publish","type":"page","link":"https:\/\/datvale.ge\/en\/cottage-calculator\/","title":{"rendered":"Cottage Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"21911\" class=\"elementor elementor-21911 elementor-18966\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0f96c97 e-flex e-con-boxed e-con e-parent\" data-id=\"0f96c97\" 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-97a2e25 elementor-widget elementor-widget-html\" data-id=\"97a2e25\" 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-19259af e-flex e-con-boxed e-con e-parent\" data-id=\"19259af\" 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-95f3a0d elementor-widget elementor-widget-heading\" data-id=\"95f3a0d\" 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\">Wooden Cottage Construction Cost 2026 \u2013 Cottage 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-8af63f5 e-flex e-con-boxed e-con e-parent\" data-id=\"8af63f5\" 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-ec1f323 elementor-widget elementor-widget-html\" data-id=\"ec1f323\" 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-cottage-calculator\">\r\n\r\n<style>\r\n#dv-cottage-calculator,\r\n#dv-cottage-calculator *{\r\n  box-sizing:border-box;\r\n}\r\n\r\n#dv-cottage-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  width:100%;\r\n  max-width:1260px;\r\n  margin:26px auto;\r\n  padding:42px 22px;\r\n  border:1px solid var(--dv-border);\r\n  border-radius:24px;\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  color:var(--dv-text);\r\n  font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;\r\n  box-shadow:0 16px 42px rgba(11,58,120,.10);\r\n}\r\n\r\n#dv-cottage-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  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-cottage-calculator .dv-calculator{\r\n  width:100%;\r\n  max-width:1180px;\r\n  margin:0 auto;\r\n}\r\n\r\n#dv-cottage-calculator .dv-input-card,\r\n#dv-cottage-calculator .dv-result-card,\r\n#dv-cottage-calculator .dv-summary,\r\n#dv-cottage-calculator .dv-info-card,\r\n#dv-cottage-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-cottage-calculator .dv-input-card{\r\n  padding:28px;\r\n  margin-bottom:24px;\r\n}\r\n\r\n#dv-cottage-calculator .dv-section-title{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  gap:11px;\r\n  margin:0 0 22px;\r\n  color:var(--dv-text);\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-cottage-calculator .dv-section-number{\r\n  display:inline-flex;\r\n  width:36px;\r\n  height:36px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  flex:0 0 36px;\r\n  border-radius:50%;\r\n  background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  color:#fff;\r\n  font-size:14px;\r\n  font-weight:950;\r\n  box-shadow:0 8px 18px rgba(11,58,120,.18);\r\n}\r\n\r\n#dv-cottage-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#dv-cottage-calculator .dv-field{\r\n  min-width:0;\r\n}\r\n\r\n#dv-cottage-calculator .dv-field label{\r\n  display:block;\r\n  min-height:21px;\r\n  margin-bottom:8px;\r\n  color:var(--dv-text);\r\n  font-size:14px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-cottage-calculator .dv-input-wrap{\r\n  position:relative;\r\n}\r\n\r\n#dv-cottage-calculator .dv-field input,\r\n#dv-cottage-calculator .dv-field select{\r\n  display:block;\r\n  width:100%;\r\n  height:56px;\r\n  margin:0;\r\n  border:1px solid #d8e3ef;\r\n  border-radius:14px;\r\n  outline:none;\r\n  background:#f8fbff;\r\n  color:var(--dv-text);\r\n  font-size:16px;\r\n  font-weight:800;\r\n}\r\n\r\n#dv-cottage-calculator .dv-field input{\r\n  padding:0 52px 0 15px;\r\n}\r\n\r\n#dv-cottage-calculator .dv-field select{\r\n  padding:0 42px 0 15px;\r\n  cursor:pointer;\r\n}\r\n\r\n#dv-cottage-calculator .dv-field input:focus,\r\n#dv-cottage-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-cottage-calculator .dv-unit{\r\n  position:absolute;\r\n  top:50%;\r\n  right:14px;\r\n  transform:translateY(-50%);\r\n  color:var(--dv-muted);\r\n  font-size:13px;\r\n  font-weight:850;\r\n  pointer-events:none;\r\n}\r\n\r\n#dv-cottage-calculator .dv-terrace-area{\r\n  display:none;\r\n}\r\n\r\n#dv-cottage-calculator .dv-terrace-area.dv-show{\r\n  display:block;\r\n}\r\n\r\n#dv-cottage-calculator .dv-note{\r\n  margin-top:20px;\r\n  padding:14px 16px;\r\n  border:1px solid #dce7f2;\r\n  border-radius:14px;\r\n  background:#f8fbff;\r\n  color:#526b84;\r\n  font-size:13px;\r\n  line-height:1.55;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-cottage-calculator .dv-calculate-v2{\r\n  display:flex;\r\n  width:100%;\r\n  min-height:58px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  margin-top:22px;\r\n  padding:14px 24px;\r\n  border:0;\r\n  border-radius:14px;\r\n  cursor:pointer;\r\n  background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  color:#fff;\r\n  font-size:17px;\r\n  font-weight:950;\r\n  box-shadow:0 12px 28px rgba(11,58,120,.22);\r\n}\r\n\r\n#dv-cottage-calculator .dv-error{\r\n  display:none;\r\n  margin-top:14px;\r\n  padding:13px 15px;\r\n  border:1px solid rgba(174,32,32,.18);\r\n  border-radius:12px;\r\n  background:#fff2f2;\r\n  color:#a32020;\r\n  font-size:14px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-cottage-calculator .dv-output{\r\n  display:none;\r\n  scroll-margin-top:150px;\r\n}\r\n\r\n#dv-cottage-calculator .dv-output.dv-show{\r\n  display:block;\r\n}\r\n\r\n#dv-cottage-calculator .dv-results{\r\n  display:grid;\r\n  grid-template-columns:1fr;\r\n  gap:18px;\r\n  max-width:1080px;\r\n  margin:0 auto;\r\n}\r\n\r\n#dv-cottage-calculator .dv-result-card{\r\n  overflow:hidden;\r\n}\r\n\r\n#dv-cottage-calculator .dv-result-head{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:10px;\r\n  padding:17px 20px;\r\n  background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  color:#fff;\r\n}\r\n\r\n#dv-cottage-calculator .dv-result-icon{\r\n  display:inline-flex;\r\n  width:34px;\r\n  height:34px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  flex:0 0 34px;\r\n  border-radius:10px;\r\n  background:rgba(255,255,255,.14);\r\n  font-size:17px;\r\n}\r\n\r\n#dv-cottage-calculator .dv-result-head h3{\r\n  margin:0;\r\n  color:#fff;\r\n  font-size:18px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-cottage-calculator .dv-result-body{\r\n  padding:10px 18px 15px;\r\n}\r\n\r\n#dv-cottage-calculator .dv-row{\r\n  display:grid;\r\n  grid-template-columns:minmax(0,1fr) auto;\r\n  gap:15px;\r\n  align-items:center;\r\n  padding:12px 0;\r\n  border-bottom:1px dashed #d9e4ef;\r\n}\r\n\r\n#dv-cottage-calculator .dv-row:last-child{\r\n  border-bottom:0;\r\n}\r\n\r\n#dv-cottage-calculator .dv-row-name{\r\n  min-width:0;\r\n  color:#425a74;\r\n  font-size:14px;\r\n  line-height:1.45;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-cottage-calculator .dv-row-value{\r\n  color:var(--dv-text);\r\n  text-align:right;\r\n  white-space:nowrap;\r\n  font-size:15px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-cottage-calculator .dv-card-total{\r\n  margin:7px 0 2px;\r\n  padding:14px 15px;\r\n  border:1px solid #d8e3ef;\r\n  border-radius:13px;\r\n  background:#f4f8fd;\r\n  color:var(--dv-text);\r\n  font-size:15px;\r\n  font-weight:950;\r\n  text-align:right;\r\n}\r\n\r\n#dv-cottage-calculator .dv-summary{\r\n  max-width:1080px;\r\n  margin:22px auto 0;\r\n  padding:26px;\r\n}\r\n\r\n#dv-cottage-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-cottage-calculator .dv-summary-item{\r\n  padding:18px;\r\n  border:1px solid #e1e9f3;\r\n  border-radius:16px;\r\n  background:#f8fbff;\r\n  text-align:center;\r\n}\r\n\r\n#dv-cottage-calculator .dv-summary-label{\r\n  display:block;\r\n  margin-bottom:7px;\r\n  color:var(--dv-muted);\r\n  font-size:13px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-cottage-calculator .dv-summary-value{\r\n  color:var(--dv-text);\r\n  font-size:22px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-cottage-calculator .dv-grand-total{\r\n  margin-top:16px;\r\n  padding:29px 20px;\r\n  border-radius:18px;\r\n  background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  color:#fff;\r\n  text-align:center;\r\n  box-shadow:0 14px 30px rgba(11,58,120,.20);\r\n}\r\n\r\n#dv-cottage-calculator .dv-grand-total small{\r\n  display:block;\r\n  margin-bottom:8px;\r\n  color:rgba(255,255,255,.82);\r\n  font-size:14px;\r\n  font-weight:850;\r\n}\r\n\r\n#dv-cottage-calculator .dv-grand-total strong{\r\n  display:block;\r\n  color:#fff;\r\n  font-size:clamp(34px,6vw,52px);\r\n  line-height:1;\r\n  font-weight:1000;\r\n}\r\n\r\n#dv-cottage-calculator .dv-range{\r\n  margin-top:8px;\r\n  color:rgba(255,255,255,.88);\r\n  font-size:14px;\r\n  font-weight:800;\r\n}\r\n\r\n#dv-cottage-calculator .dv-pdf-button{\r\n  display:flex;\r\n  width:100%;\r\n  min-height:56px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  gap:9px;\r\n  margin-top:15px;\r\n  padding:14px 22px;\r\n  border:0;\r\n  border-radius:14px;\r\n  cursor:pointer;\r\n  background:linear-gradient(135deg,#13795b,#0e9a70);\r\n  color:#fff;\r\n  font-size:16px;\r\n  font-weight:950;\r\n  box-shadow:0 12px 28px rgba(19,121,91,.20);\r\n}\r\n\r\n\r\n#dv-cottage-calculator .dv-call-request{\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}\r\n\r\n#dv-cottage-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-cottage-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-cottage-calculator .dv-call-request-row{\r\n  display:grid;\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-cottage-calculator .dv-call-phone{\r\n  width:100%;\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-cottage-calculator .dv-call-phone:focus{\r\n  border-color:var(--dv-blue-2);\r\n  box-shadow:0 0 0 4px rgba(23,100,189,.10);\r\n}\r\n\r\n\r\n#dv-cottage-calculator .dv-call-request-row.dv-has-saved-phone{\r\n  grid-template-columns:1fr;\r\n}\r\n\r\n#dv-cottage-calculator .dv-call-request-row.dv-has-saved-phone .dv-call-phone{\r\n  display:none;\r\n}\r\n\r\n#dv-cottage-calculator .dv-request-call-btn{\r\n  min-height:52px;\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-cottage-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-cottage-calculator .dv-request-call-btn:disabled{\r\n  opacity:.65;\r\n  cursor:wait;\r\n}\r\n\r\n#dv-cottage-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-cottage-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-cottage-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-cottage-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-cottage-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-cottage-calculator .dv-call-phone{\r\n    display:block;\r\n    width:100%;\r\n    max-width:100%;\r\n    min-width:0;\r\n  }\r\n\r\n  #dv-cottage-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#dv-cottage-calculator .dv-info-card{\r\n  max-width:1080px;\r\n  margin:20px auto 0;\r\n  padding:22px;\r\n}\r\n\r\n#dv-cottage-calculator .dv-info-card h3{\r\n  margin:0 0 10px;\r\n  color:var(--dv-text);\r\n  font-size:20px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-cottage-calculator .dv-info-card p{\r\n  margin:0;\r\n  color:#526b84;\r\n  font-size:13px;\r\n  line-height:1.65;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-cottage-calculator .dv-related{\r\n  max-width:1080px;\r\n  margin:20px auto 0;\r\n  padding:22px;\r\n}\r\n\r\n#dv-cottage-calculator .dv-related-grid{\r\n  display:grid;\r\n  grid-template-columns:repeat(3,minmax(0,1fr));\r\n  gap:14px;\r\n}\r\n\r\n#dv-cottage-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;\r\n}\r\n\r\n#dv-cottage-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}\r\n\r\n#dv-cottage-calculator .dv-related-text{\r\n  min-width:0;\r\n  flex:1;\r\n}\r\n\r\n#dv-cottage-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-cottage-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-cottage-calculator .dv-related-arrow{\r\n  font-size:18px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-cottage-calculator .dv-output.dv-show .dv-result-card,\r\n#dv-cottage-calculator .dv-output.dv-show .dv-summary,\r\n#dv-cottage-calculator .dv-output.dv-show .dv-info-card,\r\n#dv-cottage-calculator .dv-output.dv-show .dv-related{\r\n  opacity:0;\r\n  transform:translateY(18px);\r\n  animation:dvCottageReveal .45s ease forwards;\r\n}\r\n\r\n@keyframes dvCottageReveal{\r\n  to{\r\n    opacity:1;\r\n    transform:translateY(0);\r\n  }\r\n}\r\n\r\n@media(max-width:980px){\r\n  #dv-cottage-calculator .dv-input-grid{\r\n    grid-template-columns:repeat(2,minmax(0,1fr));\r\n  }\r\n\r\n  #dv-cottage-calculator .dv-summary-grid{\r\n    grid-template-columns:repeat(2,minmax(0,1fr));\r\n  }\r\n\r\n  #dv-cottage-calculator .dv-related-grid{\r\n    grid-template-columns:1fr;\r\n  }\r\n}\r\n\r\n@media(max-width:760px){\r\n  #dv-cottage-calculator{\r\n    margin:18px auto;\r\n    padding:26px 12px;\r\n    border-radius:18px;\r\n  }\r\n\r\n  #dv-cottage-calculator .dv-input-card,\r\n  #dv-cottage-calculator .dv-summary,\r\n  #dv-cottage-calculator .dv-related{\r\n    padding:18px;\r\n  }\r\n\r\n  #dv-cottage-calculator .dv-input-grid,\r\n  #dv-cottage-calculator .dv-summary-grid{\r\n    grid-template-columns:1fr;\r\n    gap:16px;\r\n  }\r\n\r\n  #dv-cottage-calculator .dv-row{\r\n    gap:9px;\r\n  }\r\n\r\n  #dv-cottage-calculator .dv-row-name{\r\n    font-size:13px;\r\n  }\r\n\r\n  #dv-cottage-calculator .dv-row-value{\r\n    font-size:14px;\r\n  }\r\n}\r\n\r\n\/* After the first free calculation *\/\r\n#dv-cottage-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#dv-cottage-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#dv-cottage-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#dv-cottage-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#dv-cottage-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#dv-cottage-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@media(max-width:760px){\r\n  #dv-cottage-calculator .dv-free-next-step.dv-show{\r\n    grid-template-columns:1fr;\r\n  }\r\n  #dv-cottage-calculator .dv-free-next-step{\r\n    padding:18px;\r\n  }\r\n  #dv-cottage-calculator .dv-free-next-step a{\r\n    width:100%;\r\n    min-width:0;\r\n  }\r\n}\r\n<\/style>\r\n\r\n\r\n<div class=\"dv-calculator\">\r\n\r\n  <div class=\"dv-input-card\">\r\n\r\n    <h3 class=\"dv-section-title\">\r\n      Select Cottage Features\r\n    <\/h3>\r\n\r\n    <div class=\"dv-input-grid\">\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvArea\">Cottage Area<\/label>\r\n        <div class=\"dv-input-wrap\">\r\n          <input id=\"dvArea\" type=\"number\" min=\"20\" max=\"500\" step=\"1\" placeholder=\"e.g. 80\" inputmode=\"decimal\">\r\n          <span class=\"dv-unit\">m\u00b2<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvFloors\">Number of Floors<\/label>\r\n        <select id=\"dvFloors\">\r\n          <option value=\"1\">1 Floor<\/option>\r\n          <option value=\"2\">2 Floors<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvRoof\">Roof Type<\/label>\r\n        <select id=\"dvRoof\">\r\n          <option value=\"gable\">Gable Roof<\/option>\r\n          <option value=\"hip\">Hip Roof<\/option>\r\n          <option value=\"flat\">Flat Roof<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvStage\">Construction Stage<\/label>\r\n        <select id=\"dvStage\">\r\n          <option value=\"frame\">Wood Frame Only<\/option>\r\n          <option value=\"shell\">Shell Construction<\/option>\r\n          <option value=\"finished\" selected>Finished Cottage<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvQuality\">Quality Package<\/label>\r\n        <select id=\"dvQuality\">\r\n          <option value=\"economy\">Economy<\/option>\r\n          <option value=\"standard\" selected>Standard<\/option>\r\n          <option value=\"premium\">Premium<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvTerrace\">Terrace<\/label>\r\n        <select id=\"dvTerrace\">\r\n          <option value=\"no\">No Terrace<\/option>\r\n          <option value=\"yes\">With Terrace<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field dv-terrace-area\" id=\"dvTerraceAreaBox\">\r\n        <label for=\"dvTerraceArea\">Terrace Area<\/label>\r\n        <div class=\"dv-input-wrap\">\r\n          <input id=\"dvTerraceArea\" type=\"number\" min=\"1\" max=\"200\" step=\"1\" placeholder=\"e.g. 15\" inputmode=\"decimal\">\r\n          <span class=\"dv-unit\">m\u00b2<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n<button class=\"dv-calculate-v2\" id=\"dvCalculateFreeFlowV2\" type=\"button\">\r\n      Calculate Cottage Cost\r\n    <\/button>\r\n\r\n    <div class=\"dv-error\" id=\"dvError\">\r\n      Please fill in all required fields correctly.\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"dv-output\" id=\"dvOutput\">\r\n\r\n    <div class=\"dv-free-next-step\" id=\"dvFreeNextStep\">\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>You have used one free calculation. Choose your preferred package for the next calculation.<\/p>\r\n      <\/div>\r\n      <a href=\"https:\/\/datvale.ge\/en\/packages\/\">Choose a Package<\/a>\r\n    <\/div>\r\n\r\n    <div class=\"dv-results\">\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\">\r\n          <span class=\"dv-result-icon\">\ud83c\udfe1<\/span>\r\n          <h3>Selected Cottage<\/h3>\r\n        <\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Cottage Area<\/span><span class=\"dv-row-value\" id=\"rArea\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Floors<\/span><span class=\"dv-row-value\" id=\"rFloors\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Roof<\/span><span class=\"dv-row-value\" id=\"rRoof\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Construction Stage<\/span><span class=\"dv-row-value\" id=\"rStage\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Quality Package<\/span><span class=\"dv-row-value\" id=\"rQuality\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Terrace<\/span><span class=\"dv-row-value\" id=\"rTerrace\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\">\r\n          <span class=\"dv-result-icon\">\u26cf\ufe0f<\/span>\r\n          <h3>Foundation and Earthworks<\/h3>\r\n        <\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Earthworks and Site Preparation<\/span><span class=\"dv-row-value\" id=\"rEarth\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Reinforced Concrete Foundation<\/span><span class=\"dv-row-value\" id=\"rFoundation\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Waterproofing and Additional Works<\/span><span class=\"dv-row-value\" id=\"rFoundationExtra\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Foundation and Earthworks: <span id=\"rFoundationTotal\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\">\r\n          <span class=\"dv-result-icon\">\ud83e\udeb5<\/span>\r\n          <h3>Wood Frame, Walls and Insulation<\/h3>\r\n        <\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Structural Wood Frame<\/span><span class=\"dv-row-value\" id=\"rFrame\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Exterior and Interior Wall Construction<\/span><span class=\"dv-row-value\" id=\"rWalls\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Thermal and Vapor Insulation<\/span><span class=\"dv-row-value\" id=\"rInsulation\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Basic Facade Finishing<\/span><span class=\"dv-row-value\" id=\"rFacade\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Frame and Walls: <span id=\"rFrameTotal\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\">\r\n          <span class=\"dv-result-icon\">\ud83c\udfe0<\/span>\r\n          <h3>Roof<\/h3>\r\n        <\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Roof Structure<\/span><span class=\"dv-row-value\" id=\"rRoofStructure\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Thermal, Vapor and Waterproofing<\/span><span class=\"dv-row-value\" id=\"rRoofInsulation\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Roof Covering and Installation<\/span><span class=\"dv-row-value\" id=\"rRoofCover\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Gutters and Additional Components<\/span><span class=\"dv-row-value\" id=\"rRoofDrain\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Roof: <span id=\"rRoofTotal\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\">\r\n          <span class=\"dv-result-icon\">\ud83e\ude9f<\/span>\r\n          <h3>Windows, Doors and Engineering Systems<\/h3>\r\n        <\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Energy-Efficient Windows and Doors<\/span><span class=\"dv-row-value\" id=\"rWindows\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Electrical System<\/span><span class=\"dv-row-value\" id=\"rElectrical\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Water and Sewerage<\/span><span class=\"dv-row-value\" id=\"rPlumbing\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Basic Heating System<\/span><span class=\"dv-row-value\" id=\"rHeating\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Windows, Doors and Engineering: <span id=\"rEngineeringTotal\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\">\r\n          <span class=\"dv-result-icon\">\u2728<\/span>\r\n          <h3>Interior Finishing, Terrace and Logistics<\/h3>\r\n        <\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Interior Finishing Works<\/span><span class=\"dv-row-value\" id=\"rInterior\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Terrace<\/span><span class=\"dv-row-value\" id=\"rTerraceCost\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Transportation and Logistics<\/span><span class=\"dv-row-value\" id=\"rTransport\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Additional Materials and Minor Works<\/span><span class=\"dv-row-value\" id=\"rExtraWorks\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Finishing and Additional Costs: <span id=\"rFinishTotal\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"dv-summary\">\r\n\r\n      <h3 class=\"dv-section-title\">\r\n        <span class=\"dv-section-number\">2<\/span>\r\n        Cost Summary\r\n      <\/h3>\r\n\r\n      <div class=\"dv-summary-grid\">\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Materials<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rMaterials\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Labor<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rLabor\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Transportation<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rTransportSummary\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Contingency \u2014 5%<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rContingency\">\u2014<\/span>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <div class=\"dv-grand-total\">\r\n        <small>Estimated Total Wooden Cottage Construction Cost<\/small>\r\n        <strong id=\"rTotal\">\u2014<\/strong>\r\n        <div class=\"dv-range\" id=\"rRange\">\u2014<\/div>\r\n      <\/div>\r\n\r\n\r\n      <button class=\"dv-pdf-button\" id=\"dvPdf\" type=\"button\">\r\n        \ud83d\udcc4 Download PDF\r\n      <\/button>\r\n\r\n      <div class=\"dv-call-request\" id=\"dvCottageCallRequest\" style=\"display:none;\">\r\n        <h4 class=\"dv-call-request-title\">Would you like a consultation from a company?<\/h4>\r\n        <p class=\"dv-call-request-text\">\r\n          Request a call from a company and they will contact you with additional information.\r\n        <\/p>\r\n\r\n        <div class=\"dv-call-request-row\" id=\"dvCottageCallRow\">\r\n          <input\r\n            class=\"dv-call-phone\"\r\n            id=\"dvCottageCallPhone\"\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=\"dvCottageRequestCall\"\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=\"dvCottageCallStatus\"\r\n          aria-live=\"polite\"\r\n        ><\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n<div class=\"dv-info-card dv-related\">\r\n      <div class=\"dv-related-grid\">\r\n\r\n        <a class=\"dv-related-link\" href=\"https:\/\/datvale.ge\/en\/construction-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83c\udfd7\ufe0f<\/span>\r\n          <span class=\"dv-related-text\">\r\n            <strong>House Construction Calculator<\/strong>\r\n            <small>Calculate the estimated total cost of house construction<\/small>\r\n          <\/span>\r\n          <span class=\"dv-related-arrow\">\u2192<\/span>\r\n        <\/a>\r\n\r\n        <a class=\"dv-related-link\" href=\"https:\/\/datvale.ge\/en\/pool-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83d\udca7<\/span>\r\n          <span class=\"dv-related-text\">\r\n            <strong>Pool Calculator<\/strong>\r\n            <small>Calculate the estimated total cost of pool construction<\/small>\r\n          <\/span>\r\n          <span class=\"dv-related-arrow\">\u2192<\/span>\r\n        <\/a>\r\n\r\n        <a class=\"dv-related-link\" href=\"https:\/\/datvale.ge\/en\/block-fence-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83e\uddf1<\/span>\r\n          <span class=\"dv-related-text\">\r\n            <strong>Block Fence Calculator<\/strong>\r\n            <small>Calculate the estimated cost of block fence construction<\/small>\r\n          <\/span>\r\n          <span class=\"dv-related-arrow\">\u2192<\/span>\r\n        <\/a>\r\n\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/div>\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\nconst root=document.getElementById(\"dv-cottage-calculator\");\r\nif(!root)return;\r\n\r\nconst $=id=>root.querySelector(\"#\"+id);\r\n\r\nconst names={\r\n  floors:{\"1\":\"1 Floor\",\"2\":\"2 Floors\"},\r\n  roof:{\r\n    gable:\"Gable Roof\",\r\n    hip:\"Hip Roof\",\r\n    flat:\"Flat Roof\"\r\n  },\r\n  stage:{\r\n    frame:\"Wood Frame Only\",\r\n    shell:\"Shell Construction\",\r\n    finished:\"Finished Cottage\"\r\n  },\r\n  quality:{\r\n    economy:\"Economy\",\r\n    standard:\"Standard\",\r\n    premium:\"Premium\"\r\n  }\r\n};\r\n\r\n\r\n\/*\r\n * Base rates for the detailed calculation.\r\n * The quality package multiplies these rates.\r\n *\/\r\n\r\nconst rates={\r\n  earthPerM2:22,\r\n  foundationPerM2:155,\r\n  foundationExtraPerM2:24,\r\n\r\n  framePerM2:175,\r\n  wallsPerM2:155,\r\n  insulationPerM2:95,\r\n  facadePerM2:75,\r\n\r\n  roofStructurePerM2:78,\r\n  roofInsulationPerM2:50,\r\n  roofCoverPerM2:35,\r\n  roofDrainPerM2:9,\r\n\r\n  windowsPerM2:330,\r\n  electricalPerM2:48,\r\n  plumbingPerM2:40,\r\n  heatingPerM2:58,\r\n\r\n  interiorPerM2:560,\r\n  terracePerM2:240,\r\n\r\n  transportBase:1800,\r\n  transportPerM2:18\r\n};\r\n\r\n\r\nconst qualityMultiplier={\r\n  economy:0.86,\r\n  standard:1,\r\n  premium:1.22\r\n};\r\n\r\n\r\nconst floorMultiplier={\r\n  \"1\":1,\r\n  \"2\":1.08\r\n};\r\n\r\n\r\nconst roofMultiplier={\r\n  gable:1,\r\n  hip:1.06,\r\n  flat:1.10\r\n};\r\n\r\n\r\nfunction numberValue(id){\r\n  const el=$(id);\r\n  if(!el)return 0;\r\n  const value=parseFloat(String(el.value||\"\").replace(\",\",\".\"));\r\n  return Number.isFinite(value)?value:0;\r\n}\r\n\r\n\r\nfunction money(value){\r\n  return new Intl.NumberFormat(\"en-US\",{\r\n    minimumFractionDigits:0,\r\n    maximumFractionDigits:0\r\n  }).format(Math.round(value))+\" \u20be\";\r\n}\r\n\r\n\r\nfunction updateTerrace(){\r\n  const hasTerrace=$(\"dvTerrace\").value===\"yes\";\r\n  $(\"dvTerraceAreaBox\").classList.toggle(\"dv-show\",hasTerrace);\r\n\r\n  if(!hasTerrace){\r\n    $(\"dvTerraceArea\").value=\"\";\r\n  }\r\n}\r\n\r\n\r\nlet dvCottageClickBusy=false;\r\n\r\nfunction showCottageFreeNextStep(){\r\n  const box=$(\"dvFreeNextStep\");\r\n  if(box)box.classList.add(\"dv-show\");\r\n}\r\n\r\nfunction openCottageRegistrationPopup(){\r\n  const redirect=\r\n    window.location.pathname+\r\n    window.location.search+\r\n    window.location.hash;\r\n\r\n  if(typeof window.openAuthModal===\"function\"){\r\n    window.openAuthModal(\"register\",redirect);\r\n    return true;\r\n  }\r\n\r\n  const trigger=document.querySelector(\r\n    '.cpdf-auth[data-auth-action=\"register\"]'\r\n  );\r\n\r\n  if(trigger){\r\n    trigger.setAttribute(\"data-redirect\",redirect);\r\n    trigger.click();\r\n    return true;\r\n  }\r\n\r\n  window.location.href=\r\n    \"\/en\/login\/?redirect_to=\"+\r\n    encodeURIComponent(redirect);\r\n\r\n  return false;\r\n}\r\n\r\nfunction openCottagePackagePrompt(){\r\n  if(\r\n    typeof window.jQuery!==\"undefined\" &&\r\n    window.jQuery(\"#membership-modal\").length\r\n  ){\r\n    window.jQuery(\"#membership-modal\").css(\"display\",\"block\");\r\n    return true;\r\n  }\r\n\r\n  const trigger=document.querySelector(\r\n    \"#membership-purchase-btn, .membership-purchase-btn, [data-membership-modal]\"\r\n  );\r\n\r\n  if(trigger){\r\n    trigger.click();\r\n    return true;\r\n  }\r\n\r\n  window.location.href=\"\/en\/packages\/\";\r\n  return false;\r\n}\r\n\r\nasync function authorizeCottageFlow(){\r\n  if(\r\n    !window.DatvaleHtmlAccess ||\r\n    typeof window.DatvaleHtmlAccess.authorize!==\"function\"\r\n  ){\r\n    alert(\"The access system could not be loaded. Refresh the page and try again.\");\r\n    return{allowed:false,mode:\"error\"};\r\n  }\r\n\r\n  const result=await window.DatvaleHtmlAccess.authorize(\"cottage\");\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    return{\r\n      allowed:true,\r\n      mode:result.data.mode||\"membership\"\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  if(data.code===\"login_required\"){\r\n    openCottageRegistrationPopup();\r\n    return{allowed:false,mode:\"login_required\"};\r\n  }\r\n\r\n  if(data.code===\"package_required\"){\r\n    openCottagePackagePrompt();\r\n    return{allowed:false,mode:\"package_required\"};\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  return{allowed:false,mode:\"error\"};\r\n}\r\n\r\nasync function claimCottageFreeCalculation(){\r\n  if(\r\n    !window.DatvaleHtmlAccess ||\r\n    typeof window.DatvaleHtmlAccess.claimFree!==\"function\"\r\n  ){\r\n    return false;\r\n  }\r\n\r\n  const result=await window.DatvaleHtmlAccess.claimFree(\"cottage\");\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\nfunction calculateCottage(showError){\r\n\r\n  const area=numberValue(\"dvArea\");\r\n  const floors=$(\"dvFloors\").value;\r\n  const roof=$(\"dvRoof\").value;\r\n  const stage=$(\"dvStage\").value;\r\n  const quality=$(\"dvQuality\").value;\r\n\r\n  const hasTerrace=$(\"dvTerrace\").value===\"yes\";\r\n  const terraceArea=numberValue(\"dvTerraceArea\");\r\n\r\n  const invalid=\r\n    area<20||\r\n    area>500||\r\n    (hasTerrace&&(terraceArea<1||terraceArea>200));\r\n\r\n  if(invalid){\r\n    $(\"dvError\").style.display=showError?\"block\":\"none\";\r\n    $(\"dvOutput\").classList.remove(\"dv-show\");\r\n    return false;\r\n  }\r\n\r\n  $(\"dvError\").style.display=\"none\";\r\n\r\n  const q=qualityMultiplier[quality];\r\n  const fm=floorMultiplier[floors];\r\n  const rm=roofMultiplier[roof];\r\n\r\n  const footprint=area\/parseInt(floors,10);\r\n  const roofArea=footprint*1.28*rm;\r\n  const exteriorWallArea=4*Math.sqrt(footprint)*2.8*parseInt(floors,10);\r\n  const windowArea=area*.18;\r\n\r\n  \/*\r\n   * Stage logic:\r\n   * frame = foundation + wood frame\r\n   * shell = above + walls, insulation, facade, roof, windows and doors\r\n   * finished = complete package\r\n   *\/\r\n\r\n  const includeShell=stage===\"shell\"||stage===\"finished\";\r\n  const includeFinished=stage===\"finished\";\r\n\r\n  const earth=footprint*rates.earthPerM2*q;\r\n  const foundation=footprint*rates.foundationPerM2*q*fm;\r\n  const foundationExtra=footprint*rates.foundationExtraPerM2*q;\r\n  const foundationTotal=earth+foundation+foundationExtra;\r\n\r\n  const frame=area*rates.framePerM2*q*fm;\r\n\r\n  const walls=includeShell?area*rates.wallsPerM2*q:0;\r\n  const insulation=includeShell?area*rates.insulationPerM2*q:0;\r\n  const facade=includeShell?exteriorWallArea*rates.facadePerM2*q:0;\r\n  const frameTotal=frame+walls+insulation+facade;\r\n\r\n  const roofStructure=includeShell?roofArea*rates.roofStructurePerM2*q:0;\r\n  const roofInsulation=includeShell?roofArea*rates.roofInsulationPerM2*q:0;\r\n  const roofCover=includeShell?roofArea*rates.roofCoverPerM2*q:0;\r\n  const roofDrain=includeShell?roofArea*rates.roofDrainPerM2*q:0;\r\n  const roofTotal=roofStructure+roofInsulation+roofCover+roofDrain;\r\n\r\n  const windows=includeShell?windowArea*rates.windowsPerM2*q:0;\r\n  const electrical=includeFinished?area*rates.electricalPerM2*q:0;\r\n  const plumbing=includeFinished?area*rates.plumbingPerM2*q:0;\r\n  const heating=includeFinished?Math.max(6500,area*rates.heatingPerM2*q):0;\r\n  const engineeringTotal=windows+electrical+plumbing+heating;\r\n\r\n  const interior=includeFinished?area*rates.interiorPerM2*q:0;\r\n  const terrace=hasTerrace?terraceArea*rates.terracePerM2*q:0;\r\n  const transport=rates.transportBase+area*rates.transportPerM2*q;\r\n  const extraWorks=(foundationTotal+frameTotal+roofTotal+engineeringTotal+interior+terrace)*.025;\r\n  const finishTotal=interior+terrace+transport+extraWorks;\r\n\r\n  const subtotal=\r\n    foundationTotal+\r\n    frameTotal+\r\n    roofTotal+\r\n    engineeringTotal+\r\n    finishTotal;\r\n\r\n  const contingency=subtotal*.05;\r\n  const grandTotal=subtotal+contingency;\r\n\r\n  \/*\r\n   * Materials \/ labor distribution.\r\n   * This is a simplified summary for the user,\r\n   * while the detailed sections remain above.\r\n   *\/\r\n  const materials=subtotal*.62;\r\n  const labor=subtotal*.28;\r\n  const transportSummary=transport;\r\n  const summaryKnown=materials+labor+transportSummary;\r\n  const other=Math.max(0,subtotal-summaryKnown);\r\n\r\n  $(\"rArea\").textContent=area+\" m\u00b2\";\r\n  $(\"rFloors\").textContent=names.floors[floors];\r\n  $(\"rRoof\").textContent=names.roof[roof];\r\n  $(\"rStage\").textContent=names.stage[stage];\r\n  $(\"rQuality\").textContent=names.quality[quality];\r\n  $(\"rTerrace\").textContent=hasTerrace?terraceArea+\" m\u00b2\":\"No Terrace\";\r\n\r\n  $(\"rEarth\").textContent=money(earth);\r\n  $(\"rFoundation\").textContent=money(foundation);\r\n  $(\"rFoundationExtra\").textContent=money(foundationExtra);\r\n  $(\"rFoundationTotal\").textContent=money(foundationTotal);\r\n\r\n  $(\"rFrame\").textContent=money(frame);\r\n  $(\"rWalls\").textContent=includeShell?money(walls):\"Not Included at This Stage\";\r\n  $(\"rInsulation\").textContent=includeShell?money(insulation):\"Not Included at This Stage\";\r\n  $(\"rFacade\").textContent=includeShell?money(facade):\"Not Included at This Stage\";\r\n  $(\"rFrameTotal\").textContent=money(frameTotal);\r\n\r\n  $(\"rRoofStructure\").textContent=includeShell?money(roofStructure):\"Not Included at This Stage\";\r\n  $(\"rRoofInsulation\").textContent=includeShell?money(roofInsulation):\"Not Included at This Stage\";\r\n  $(\"rRoofCover\").textContent=includeShell?money(roofCover):\"Not Included at This Stage\";\r\n  $(\"rRoofDrain\").textContent=includeShell?money(roofDrain):\"Not Included at This Stage\";\r\n  $(\"rRoofTotal\").textContent=money(roofTotal);\r\n\r\n  $(\"rWindows\").textContent=includeShell?money(windows):\"Not Included at This Stage\";\r\n  $(\"rElectrical\").textContent=includeFinished?money(electrical):\"Not Included at This Stage\";\r\n  $(\"rPlumbing\").textContent=includeFinished?money(plumbing):\"Not Included at This Stage\";\r\n  $(\"rHeating\").textContent=includeFinished?money(heating):\"Not Included at This Stage\";\r\n  $(\"rEngineeringTotal\").textContent=money(engineeringTotal);\r\n\r\n  $(\"rInterior\").textContent=includeFinished?money(interior):\"Not Included at This Stage\";\r\n  $(\"rTerraceCost\").textContent=hasTerrace?money(terrace):\"No Terrace\";\r\n  $(\"rTransport\").textContent=money(transport);\r\n  $(\"rExtraWorks\").textContent=money(extraWorks+other);\r\n  $(\"rFinishTotal\").textContent=money(finishTotal+other);\r\n\r\n  $(\"rMaterials\").textContent=money(materials);\r\n  $(\"rLabor\").textContent=money(labor);\r\n  $(\"rTransportSummary\").textContent=money(transportSummary);\r\n  $(\"rContingency\").textContent=money(contingency);\r\n\r\n  $(\"rTotal\").textContent=money(grandTotal);\r\n  $(\"rRange\").textContent=\r\n    \"Estimated Range: \"+\r\n    money(grandTotal*.90)+\r\n    \" \u2013 \"+\r\n    money(grandTotal*1.10);\r\n\r\n  $(\"dvOutput\").classList.remove(\"dv-show\");\r\n  void $(\"dvOutput\").offsetWidth;\r\n  $(\"dvOutput\").classList.add(\"dv-show\");\r\n\r\n  window.setTimeout(function(){\r\n    $(\"dvOutput\").scrollIntoView({\r\n      behavior:\"smooth\",\r\n      block:\"start\"\r\n    });\r\n  },120);\r\n\r\n  return true;\r\n}\r\n\r\n\r\n$(\"dvTerrace\").addEventListener(\"change\",updateTerrace);\r\n\r\nconst dvCalculateFreeFlowV2=$(\"dvCalculateFreeFlowV2\");\r\n\r\nif(dvCalculateFreeFlowV2){\r\n\r\n  dvCalculateFreeFlowV2.addEventListener(\"click\",async function(event){\r\n\r\n    \/*\r\n     * Completely block old\/global click handlers.\r\n     * This button is controlled only by this new flow.\r\n     *\/\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    event.stopImmediatePropagation();\r\n\r\n    if(dvCottageClickBusy)return;\r\n    dvCottageClickBusy=true;\r\n\r\n    const button=this;\r\n    const originalText=button.textContent;\r\n\r\n    button.disabled=true;\r\n    button.textContent=\"Checking access...\";\r\n\r\n    try{\r\n      const access=await authorizeCottageFlow();\r\n      if(!access||!access.allowed)return;\r\n\r\n      const success=calculateCottage(true);\r\n      if(!success)return;\r\n\r\n      \/\/ GoSMS: successful cottage calculation.\r\n      triggerCottageCompletedSms();\r\n\r\n      if(access.mode===\"free\"){\r\n        const claimed=await claimCottageFreeCalculation();\r\n\r\n        if(claimed){\r\n          showCottageFreeNextStep();\r\n        }\r\n      }\r\n    }finally{\r\n      button.disabled=false;\r\n      button.textContent=originalText;\r\n      dvCottageClickBusy=false;\r\n    }\r\n\r\n  },true);\r\n\r\n}\r\n\r\n\r\n\r\n\/*\r\n * GoSMS \u2014 Cottage Calculator\r\n *\r\n * 1) \"Request a Company Call\" ON\/OFF is controlled from GoSMS Settings.\r\n * 2) Guests can enter a phone number and send a request without registration.\r\n * 3) For logged-in users, the phone number saved in the profile is used.\r\n * 4) After a successful calculation, the user SMS is triggered separately,\r\n *    once per user, according to the GoSMS Settings.\r\n *\/\r\n\r\nconst dvCottageCallRequest=$(\"dvCottageCallRequest\");\r\nconst dvCottageRequestCall=$(\"dvCottageRequestCall\");\r\nconst dvCottageCallPhone=$(\"dvCottageCallPhone\");\r\nconst dvCottageCallStatus=$(\"dvCottageCallStatus\");\r\nconst dvCottageCallRow=$(\"dvCottageCallRow\");\r\n\r\nlet dvCottageCallConfig={\r\n  enabled:false,\r\n  isLoggedIn:false,\r\n  hasSavedPhone:false\r\n};\r\n\r\nfunction cottageAjaxUrl(){\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 setCottageCallStatus(message,type){\r\n  if(!dvCottageCallStatus)return;\r\n\r\n  dvCottageCallStatus.textContent=message||\"\";\r\n  dvCottageCallStatus.classList.remove(\"dv-success\",\"dv-error\");\r\n\r\n  if(type){\r\n    dvCottageCallStatus.classList.add(\r\n      type===\"success\"?\"dv-success\":\"dv-error\"\r\n    );\r\n  }\r\n}\r\n\r\nfunction syncCottageCallPhoneVisibility(){\r\n  const useSavedPhone=\r\n    dvCottageCallConfig.isLoggedIn &&\r\n    dvCottageCallConfig.hasSavedPhone;\r\n\r\n  if(dvCottageCallRow){\r\n    dvCottageCallRow.classList.toggle(\r\n      \"dv-has-saved-phone\",\r\n      useSavedPhone\r\n    );\r\n  }\r\n\r\n  if(dvCottageCallPhone){\r\n    dvCottageCallPhone.required=!useSavedPhone;\r\n\r\n    if(useSavedPhone){\r\n      dvCottageCallPhone.value=\"\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function loadCottageCallConfig(){\r\n  try{\r\n    const response=await fetch(\r\n      cottageAjaxUrl()+\r\n      \"?action=gosms_call_request_config&calculator=cottage&_=\"+\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    dvCottageCallConfig={\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(dvCottageCallRequest){\r\n      dvCottageCallRequest.style.display=\r\n        dvCottageCallConfig.enabled\r\n          ?\"block\"\r\n          :\"none\";\r\n    }\r\n\r\n    syncCottageCallPhoneVisibility();\r\n\r\n  }catch(error){\r\n    \/\/ Fail closed so an admin-disabled\/stale button never appears accidentally.\r\n    if(dvCottageCallRequest){\r\n      dvCottageCallRequest.style.display=\"none\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function requestCottageCompanyCall(){\r\n  if(!dvCottageRequestCall||!dvCottageCallConfig.enabled)return;\r\n\r\n  const useSavedPhone=\r\n    dvCottageCallConfig.isLoggedIn &&\r\n    dvCottageCallConfig.hasSavedPhone;\r\n\r\n  const phone=\r\n    !useSavedPhone && dvCottageCallPhone\r\n      ?String(dvCottageCallPhone.value||\"\").trim()\r\n      :\"\";\r\n\r\n  if(!useSavedPhone && !phone){\r\n    setCottageCallStatus(\r\n      \"Please enter a phone number, e.g. 599123456\",\r\n      \"error\"\r\n    );\r\n\r\n    if(dvCottageCallPhone){\r\n      dvCottageCallPhone.focus();\r\n    }\r\n    return;\r\n  }\r\n\r\n  const originalText=dvCottageRequestCall.textContent;\r\n\r\n  dvCottageRequestCall.disabled=true;\r\n  dvCottageRequestCall.textContent=\"Sending...\";\r\n  setCottageCallStatus(\"\",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\",\"cottage\");\r\n\r\n    if(phone){\r\n      body.set(\"phone\",phone);\r\n    }\r\n\r\n    const response=await fetch(cottageAjaxUrl(),{\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      setCottageCallStatus(\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      dvCottageCallConfig.enabled=false;\r\n      if(dvCottageCallRequest){\r\n        dvCottageCallRequest.style.display=\"none\";\r\n      }\r\n      return;\r\n    }\r\n\r\n    if(data&&data.need_phone){\r\n      dvCottageCallConfig.hasSavedPhone=false;\r\n      syncCottageCallPhoneVisibility();\r\n\r\n      setCottageCallStatus(\r\n        data.message||\"Please enter a phone number.\",\r\n        \"error\"\r\n      );\r\n\r\n      if(dvCottageCallPhone){\r\n        dvCottageCallPhone.focus();\r\n      }\r\n      return;\r\n    }\r\n\r\n    setCottageCallStatus(\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    setCottageCallStatus(\r\n      \"The request could not be sent. Please try again.\",\r\n      \"error\"\r\n    );\r\n  }finally{\r\n    dvCottageRequestCall.disabled=false;\r\n    dvCottageRequestCall.textContent=originalText;\r\n  }\r\n}\r\n\r\nasync function triggerCottageCompletedSms(){\r\n  try{\r\n    const body=new URLSearchParams();\r\n    body.set(\"action\",\"gosms_calculator_completed\");\r\n    body.set(\"calculator\",\"cottage\");\r\n\r\n    await fetch(cottageAjaxUrl(),{\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 calculation.\r\n  }\r\n}\r\n\r\nloadCottageCallConfig();\r\n\r\nif(dvCottageRequestCall){\r\n  dvCottageRequestCall.addEventListener(\r\n    \"click\",\r\n    requestCottageCompanyCall\r\n  );\r\n}\r\n\r\n\r\n\/*\r\n * Direct PDF download\r\n *\/\r\n\r\nconst pdfButton=$(\"dvPdf\");\r\n\r\nif(pdfButton){\r\n\r\n  pdfButton.addEventListener(\"click\",async function(){\r\n\r\n    if(!$(\"dvOutput\").classList.contains(\"dv-show\")){\r\n      const access=await authorizeCottageFlow();\r\n      if(!access||!access.allowed)return;\r\n\r\n      const success=calculateCottage(true);\r\n      if(!success)return;\r\n\r\n      \/\/ GoSMS: successful cottage calculation.\r\n      triggerCottageCompletedSms();\r\n\r\n      if(access.mode===\"free\"){\r\n        const claimed=await claimCottageFreeCalculation();\r\n\r\n        if(claimed){\r\n          showCottageFreeNextStep();\r\n        }\r\n      }\r\n    }\r\n\r\n    const originalHTML=pdfButton.innerHTML;\r\n\r\n    pdfButton.disabled=true;\r\n    pdfButton.textContent=\"Preparing PDF...\";\r\n\r\n    const jsPDFCtor=\r\n      window.jspdf&&window.jspdf.jsPDF\r\n        ?window.jspdf.jsPDF\r\n        :null;\r\n\r\n    if(!jsPDFCtor){\r\n      pdfButton.disabled=false;\r\n      pdfButton.innerHTML=originalHTML;\r\n      alert(\"The jsPDF generator could not be loaded. Please refresh the page and try again.\");\r\n      return;\r\n    }\r\n\r\n    try{\r\n\r\n      const doc=new jsPDFCtor({\r\n        orientation:\"portrait\",\r\n        unit:\"mm\",\r\n        format:\"a4\",\r\n        compress:true\r\n      });\r\n\r\n      const pageWidth=doc.internal.pageSize.getWidth();\r\n      const pageHeight=doc.internal.pageSize.getHeight();\r\n\r\n      const marginX=10;\r\n      const topMargin=10;\r\n      const bottomMargin=10;\r\n      const contentWidth=pageWidth-marginX*2;\r\n\r\n      let y=topMargin;\r\n\r\n      const blue=[11,58,120];\r\n      const lightBlue=[244,248,253];\r\n      const border=[216,227,239];\r\n\r\n\r\n      async function textToPng(text,options){\r\n\r\n        const opts=Object.assign({\r\n          fontSize:22,\r\n          fontWeight:700,\r\n          color:\"#173558\",\r\n          width:800,\r\n          align:\"left\",\r\n          paddingX:4,\r\n          paddingY:2\r\n        },options||{});\r\n\r\n        const canvas=document.createElement(\"canvas\");\r\n        const scale=2;\r\n\r\n        canvas.width=Math.max(20,Math.ceil(opts.width*scale));\r\n        canvas.height=Math.max(\r\n          28,\r\n          Math.ceil((opts.fontSize*1.8+opts.paddingY*2)*scale)\r\n        );\r\n\r\n        const ctx=canvas.getContext(\"2d\");\r\n\r\n        ctx.scale(scale,scale);\r\n        ctx.clearRect(0,0,canvas.width\/scale,canvas.height\/scale);\r\n\r\n        ctx.fillStyle=opts.color;\r\n        ctx.font=opts.fontWeight+\" \"+opts.fontSize+'px \"Segoe UI\", Arial, sans-serif';\r\n        ctx.textBaseline=\"middle\";\r\n\r\n        let x=opts.paddingX;\r\n\r\n        if(opts.align===\"center\"){\r\n          ctx.textAlign=\"center\";\r\n          x=opts.width\/2;\r\n        }else if(opts.align===\"right\"){\r\n          ctx.textAlign=\"right\";\r\n          x=opts.width-opts.paddingX;\r\n        }else{\r\n          ctx.textAlign=\"left\";\r\n        }\r\n\r\n        ctx.fillText(\r\n          String(text||\"\"),\r\n          x,\r\n          canvas.height\/scale\/2\r\n        );\r\n\r\n        return{\r\n          data:canvas.toDataURL(\"image\/png\"),\r\n          width:opts.width,\r\n          height:canvas.height\/scale\r\n        };\r\n      }\r\n\r\n\r\n      async function addTextImage(text,x,yPos,widthPx,mmWidth,options){\r\n\r\n        const rendered=await textToPng(\r\n          text,\r\n          Object.assign({width:widthPx},options||{})\r\n        );\r\n\r\n        const mmHeight=mmWidth*(rendered.height\/rendered.width);\r\n\r\n        doc.addImage(\r\n          rendered.data,\r\n          \"PNG\",\r\n          x,\r\n          yPos,\r\n          mmWidth,\r\n          mmHeight,\r\n          undefined,\r\n          \"FAST\"\r\n        );\r\n\r\n        return mmHeight;\r\n      }\r\n\r\n\r\n      function ensureSpace(needed){\r\n\r\n        if(y+needed>pageHeight-bottomMargin){\r\n          doc.addPage();\r\n          y=topMargin;\r\n        }\r\n      }\r\n\r\n\r\n      let titleHeight=await addTextImage(\r\n        \"Wooden Cottage Construction Cost Estimate\",\r\n        marginX,\r\n        y,\r\n        900,\r\n        contentWidth,\r\n        {\r\n          fontSize:40,\r\n          fontWeight:800,\r\n          color:\"#0b3a78\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n      y+=titleHeight+2;\r\n\r\n\r\n      let subHeight=await addTextImage(\r\n        \"Datvale.ge\",\r\n        marginX,\r\n        y,\r\n        700,\r\n        contentWidth,\r\n        {\r\n          fontSize:20,\r\n          fontWeight:700,\r\n          color:\"#304a66\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n      y+=subHeight+7;\r\n\r\n\r\n      ensureSpace(75);\r\n\r\n      doc.setFillColor(...blue);\r\n      doc.roundedRect(marginX,y,contentWidth,11,2,2,\"F\");\r\n\r\n      await addTextImage(\r\n        \"Entered Data\",\r\n        marginX+2,\r\n        y+.7,\r\n        850,\r\n        contentWidth-4,\r\n        {\r\n          fontSize:24,\r\n          fontWeight:800,\r\n          color:\"#ffffff\",\r\n          align:\"left\"\r\n        }\r\n      );\r\n\r\n      y+=13;\r\n\r\n\r\n      const selectedText=function(id){\r\n        const select=$(id);\r\n        if(!select||select.selectedIndex<0)return \"\u2014\";\r\n        return select.options[select.selectedIndex].text.trim();\r\n      };\r\n\r\n\r\n      const inputRows=[\r\n        [\"Cottage Area\",numberValue(\"dvArea\")+\" m\u00b2\"],\r\n        [\"Number of Floors\",selectedText(\"dvFloors\")],\r\n        [\"Roof Type\",selectedText(\"dvRoof\")],\r\n        [\"Construction Stage\",selectedText(\"dvStage\")],\r\n        [\"Quality Package\",selectedText(\"dvQuality\")],\r\n        [\"Terrace\",\r\n          $(\"dvTerrace\").value===\"yes\"\r\n            ?numberValue(\"dvTerraceArea\")+\" m\u00b2\"\r\n            :\"No Terrace\"\r\n        ]\r\n      ];\r\n\r\n\r\n      for(const row of inputRows){\r\n\r\n        ensureSpace(16);\r\n\r\n        await addTextImage(\r\n          row[0],\r\n          marginX+3,\r\n          y+.7,\r\n          900,\r\n          contentWidth*.56,\r\n          {\r\n            fontSize:22,\r\n            fontWeight:700,\r\n            color:\"#173558\",\r\n            align:\"left\"\r\n          }\r\n        );\r\n\r\n        await addTextImage(\r\n          row[1],\r\n          marginX+contentWidth*.59,\r\n          y+.7,\r\n          520,\r\n          contentWidth*.38,\r\n          {\r\n            fontSize:22,\r\n            fontWeight:800,\r\n            color:\"#071f39\",\r\n            align:\"left\"\r\n          }\r\n        );\r\n\r\n        doc.setDrawColor(225,233,242);\r\n        doc.line(\r\n          marginX+3,\r\n          y+10,\r\n          marginX+contentWidth-3,\r\n          y+9\r\n        );\r\n\r\n        y+=14;\r\n      }\r\n\r\n      y+=5;\r\n\r\n\r\n      const resultCards=$(\"dvOutput\").querySelectorAll(\r\n        \".dv-results .dv-result-card\"\r\n      );\r\n\r\n\r\n      for(const card of resultCards){\r\n\r\n        const titleSource=card.querySelector(\".dv-result-head h3\");\r\n        const rows=Array.from(card.querySelectorAll(\".dv-row\"));\r\n        const totalSource=card.querySelector(\".dv-card-total\");\r\n\r\n        const estimatedHeight=\r\n          13+\r\n          rows.length*14+\r\n          (totalSource?15:4);\r\n\r\n        ensureSpace(estimatedHeight);\r\n\r\n        doc.setDrawColor(...border);\r\n        doc.roundedRect(\r\n          marginX,\r\n          y,\r\n          contentWidth,\r\n          estimatedHeight,\r\n          2,\r\n          2,\r\n          \"S\"\r\n        );\r\n\r\n        doc.setFillColor(...blue);\r\n        doc.roundedRect(\r\n          marginX,\r\n          y,\r\n          contentWidth,\r\n          9,\r\n          2,\r\n          2,\r\n          \"F\"\r\n        );\r\n\r\n        await addTextImage(\r\n          titleSource?titleSource.textContent.trim():\"\",\r\n          marginX+2,\r\n          y+.7,\r\n          850,\r\n          contentWidth-4,\r\n          {\r\n            fontSize:20,\r\n            fontWeight:800,\r\n            color:\"#ffffff\",\r\n            align:\"left\"\r\n          }\r\n        );\r\n\r\n        y+=13;\r\n\r\n\r\n        for(const row of rows){\r\n\r\n          const nameSource=row.querySelector(\".dv-row-name\");\r\n          const valueSource=row.querySelector(\".dv-row-value\");\r\n\r\n          await addTextImage(\r\n            nameSource?nameSource.textContent.trim():\"\",\r\n            marginX+3,\r\n            y+.7,\r\n            900,\r\n            contentWidth*.56,\r\n            {\r\n              fontSize:22,\r\n              fontWeight:700,\r\n              color:\"#173558\",\r\n              align:\"left\"\r\n            }\r\n          );\r\n\r\n          await addTextImage(\r\n            valueSource?valueSource.textContent.trim():\"\",\r\n            marginX+contentWidth*.59,\r\n            y+.7,\r\n            520,\r\n            contentWidth*.38,\r\n            {\r\n              fontSize:22,\r\n              fontWeight:800,\r\n              color:\"#071f39\",\r\n              align:\"left\"\r\n            }\r\n          );\r\n\r\n          doc.setDrawColor(225,233,242);\r\n          doc.line(\r\n            marginX+3,\r\n            y+10,\r\n            marginX+contentWidth-3,\r\n            y+9\r\n          );\r\n\r\n          y+=14;\r\n        }\r\n\r\n\r\n        if(totalSource){\r\n\r\n          doc.setFillColor(...lightBlue);\r\n          doc.setDrawColor(...border);\r\n\r\n          doc.roundedRect(\r\n            marginX+3,\r\n            y,\r\n            contentWidth-6,\r\n            12,\r\n            1.5,\r\n            1.5,\r\n            \"FD\"\r\n          );\r\n\r\n          await addTextImage(\r\n            totalSource.textContent.replace(\/\\s+\/g,\" \").trim(),\r\n            marginX+4,\r\n            y+.8,\r\n            900,\r\n            contentWidth-8,\r\n            {\r\n              fontSize:22,\r\n              fontWeight:800,\r\n              color:\"#071f39\",\r\n              align:\"right\"\r\n            }\r\n          );\r\n\r\n          y+=14;\r\n        }else{\r\n          y+=3;\r\n        }\r\n\r\n        y+=4;\r\n      }\r\n\r\n\r\n      ensureSpace(50);\r\n\r\n      await addTextImage(\r\n        \"Cost Summary\",\r\n        marginX,\r\n        y,\r\n        850,\r\n        contentWidth,\r\n        {\r\n          fontSize:28,\r\n          fontWeight:800,\r\n          color:\"#071f39\",\r\n          align:\"left\"\r\n        }\r\n      );\r\n\r\n      y+=14;\r\n\r\n\r\n      const summaryItems=Array.from(\r\n        $(\"dvOutput\").querySelectorAll(\".dv-summary-item\")\r\n      );\r\n\r\n      const sGap=5;\r\n      const sBoxWidth=(contentWidth-sGap)\/2;\r\n      const sBoxHeight=24;\r\n\r\n\r\n      for(let i=0;i<summaryItems.length;i++){\r\n\r\n        const item=summaryItems[i];\r\n\r\n        const labelSource=item.querySelector(\".dv-summary-label\");\r\n        const valueSource=item.querySelector(\".dv-summary-value\");\r\n\r\n        const col=i%2;\r\n        const rowIndex=Math.floor(i\/2);\r\n\r\n        const x=marginX+col*(sBoxWidth+sGap);\r\n        const boxY=y+rowIndex*(sBoxHeight+sGap);\r\n\r\n        doc.setFillColor(...lightBlue);\r\n        doc.setDrawColor(...border);\r\n\r\n        doc.roundedRect(\r\n          x,\r\n          boxY,\r\n          sBoxWidth,\r\n          sBoxHeight,\r\n          2,\r\n          2,\r\n          \"FD\"\r\n        );\r\n\r\n        await addTextImage(\r\n          labelSource?labelSource.textContent.trim():\"\",\r\n          x+2,\r\n          boxY+2,\r\n          560,\r\n          sBoxWidth-4,\r\n          {\r\n            fontSize:20,\r\n            fontWeight:800,\r\n            color:\"#425a74\",\r\n            align:\"center\"\r\n          }\r\n        );\r\n\r\n        await addTextImage(\r\n          valueSource?valueSource.textContent.trim():\"\",\r\n          x+2,\r\n          boxY+11,\r\n          560,\r\n          sBoxWidth-4,\r\n          {\r\n            fontSize:26,\r\n            fontWeight:800,\r\n            color:\"#071f39\",\r\n            align:\"center\"\r\n          }\r\n        );\r\n      }\r\n\r\n\r\n      y+=sBoxHeight*2+sGap+6;\r\n\r\n      ensureSpace(25);\r\n\r\n      doc.setFillColor(...blue);\r\n\r\n      doc.roundedRect(\r\n        marginX,\r\n        y,\r\n        contentWidth,\r\n        22,\r\n        2,\r\n        2,\r\n        \"F\"\r\n      );\r\n\r\n      await addTextImage(\r\n        \"Estimated Total Wooden Cottage Construction Cost\",\r\n        marginX+2,\r\n        y+2,\r\n        850,\r\n        contentWidth-4,\r\n        {\r\n          fontSize:17,\r\n          fontWeight:700,\r\n          color:\"#ffffff\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n      await addTextImage(\r\n        $(\"rTotal\").textContent.trim(),\r\n        marginX+2,\r\n        y+10,\r\n        850,\r\n        contentWidth-4,\r\n        {\r\n          fontSize:40,\r\n          fontWeight:800,\r\n          color:\"#ffffff\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n      y+=26;\r\n\r\n\r\n      ensureSpace(12);\r\n\r\n      await addTextImage(\r\n        $(\"rRange\").textContent.trim(),\r\n        marginX,\r\n        y,\r\n        850,\r\n        contentWidth,\r\n        {\r\n          fontSize:19,\r\n          fontWeight:700,\r\n          color:\"#425a74\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n      y+=9;\r\n\r\n\r\n      ensureSpace(10);\r\n\r\n      await addTextImage(\r\n        \"Datvale.ge \u2014 The calculated amount is an estimated cost.\",\r\n        marginX,\r\n        y,\r\n        850,\r\n        contentWidth,\r\n        {\r\n          fontSize:16,\r\n          fontWeight:600,\r\n          color:\"#425a74\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n\r\n      doc.save(\r\n        \"Datvale-kotejis-kharjtagricxva.pdf\"\r\n      );\r\n\r\n    }catch(error){\r\n\r\n      console.error(\r\n        \"Datvale Cottage PDF generation error:\",\r\n        error\r\n      );\r\n\r\n      alert(\r\n        \"The PDF could not be created.\"\r\n      );\r\n\r\n    }finally{\r\n\r\n      pdfButton.disabled=false;\r\n      pdfButton.innerHTML=originalHTML;\r\n    }\r\n\r\n  });\r\n}\r\n\r\n\r\nupdateTerrace();\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-d192458 e-flex e-con-boxed e-con e-parent\" data-id=\"d192458\" 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-3b82a35 elementor-widget elementor-widget-html\" data-id=\"3b82a35\" 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-cbda816 e-flex e-con-boxed e-con e-parent\" data-id=\"cbda816\" 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-9fa60fa elementor-widget elementor-widget-html\" data-id=\"9fa60fa\" 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-715e576 e-flex e-con-boxed e-con e-parent\" data-id=\"715e576\" 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-6b835ec elementor-widget elementor-widget-text-editor\" data-id=\"6b835ec\" 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>Wooden Cottages and Construction Cost in 2026<\/h2>\n<p><strong>Wooden cottages<\/strong> are becoming increasingly popular in Georgia as permanent homes, country houses, and vacation properties. Their main advantages include relatively fast construction, low structural weight, good thermal efficiency, and the ability to adapt the project to different budgets.<\/p>\n<p>If you want to know <strong>how much it costs to build a wooden cottage<\/strong>, knowing only the floor area is not enough. The final cost is affected by the number of floors, foundation, timber frame, wall system, insulation, roof, windows and doors, engineering systems, and the selected quality level.<\/p>\n<p>Datvale.ge\u2019s Cottage Calculator allows you to estimate the <strong>wooden cottage construction cost<\/strong> in just a few steps and plan your budget in advance.<\/p>\n<h2>How Much Does It Cost to Build a Wooden Cottage?<\/h2>\n<p>There is no single universal answer to the question <strong>how much does it cost to build a wooden cottage?<\/strong> Even two cottages with the same floor area can differ significantly in price.<\/p>\n<p>The cost is especially affected by:<\/p>\n<ul>\n<li>Total cottage area<\/li>\n<li>One or two floors<\/li>\n<li>Foundation type<\/li>\n<li>Quality of the timber frame<\/li>\n<li>Wall thickness and insulation<\/li>\n<li>Roof shape<\/li>\n<li>Quality of windows and doors<\/li>\n<li>Interior finishing level<\/li>\n<li>Electrical and plumbing systems<\/li>\n<li>Heating system<\/li>\n<li>Terrace<\/li>\n<li>Transportation and site location<\/li>\n<\/ul>\n<p>For this reason, it is better to calculate the cottage cost using the specific project parameters rather than relying only on an average price per 1 m\u00b2.<\/p>\n<h2>Wooden Cottage Construction<\/h2>\n<p><strong>Wooden cottage construction<\/strong> includes several main stages.<\/p>\n<p>The first stage involves site preparation and foundation work. This is followed by installation of the structural timber frame, wall system, thermal insulation, roof, windows, and doors.<\/p>\n<p>If a finished cottage is selected, the project also includes interior finishing, electrical work, plumbing, heating, and other necessary work.<\/p>\n<p>The calculator allows you to estimate these stages in advance and compare different options.<\/p>\n<h2>Wooden Cottage Frame Cost<\/h2>\n<p>The timber frame is one of the main structural components of a wooden cottage.<\/p>\n<p>Its cost depends on:<\/p>\n<ul>\n<li>Type of timber used<\/li>\n<li>Material quality<\/li>\n<li>Frame thickness<\/li>\n<li>Number of floors<\/li>\n<li>Building shape<\/li>\n<li>Floor and roof structure<\/li>\n<li>Installation complexity<\/li>\n<\/ul>\n<p>A two-story wooden cottage usually requires a more complex structural solution than a one-story building of the same total area.<\/p>\n<p>For this reason, the <strong>wooden cottage construction cost<\/strong> should always be evaluated according to the specific project.<\/p>\n<h2>Wooden Cottage Foundation Cost<\/h2>\n<p>The foundation is one of the most important stages of construction.<\/p>\n<p>Its cost depends on the size of the building, number of floors, soil conditions, and the selected structural solution.<\/p>\n<p>Choosing the wrong foundation type may lead to additional expenses in the future, so it is important to properly assess the project and site conditions before construction begins.<\/p>\n<h2>Wooden Cottage Walls and Thermal Insulation<\/h2>\n<p>The wall system and insulation have a major impact on the energy efficiency of a wooden cottage.<\/p>\n<p>A high-quality system usually includes:<\/p>\n<ul>\n<li>Timber frame<\/li>\n<li>Thermal insulation<\/li>\n<li>Vapor barrier<\/li>\n<li>Protective membranes<\/li>\n<li>Exterior finishing<\/li>\n<li>Interior finishing<\/li>\n<\/ul>\n<p>Saving too much on insulation may seem cheaper at the beginning, but it can increase heating and cooling costs later.<\/p>\n<p>Therefore, <strong>building cottages at a lower cost<\/strong> should not mean reducing the quality of critically important construction materials.<\/p>\n<h2>Building Cottages at a Lower Cost<\/h2>\n<p>The budget can be reduced through proper planning.<\/p>\n<p><strong>Building cottages at a lower cost<\/strong> is more realistic when the building area, number of floors, roof shape, and finishing level are defined correctly from the beginning.<\/p>\n<p>You can reduce costs by choosing:<\/p>\n<ul>\n<li>A simple architectural form<\/li>\n<li>One floor<\/li>\n<li>A relatively simple roof<\/li>\n<li>Standard-sized windows<\/li>\n<li>Materials selected in advance<\/li>\n<li>Properly planned construction stages<\/li>\n<li>Fewer unnecessary decorative elements<\/li>\n<\/ul>\n<p>The key is to save by simplifying the project rather than compromising structural safety or insulation quality.<\/p>\n<h2>Wooden Cottage Roof Cost<\/h2>\n<p>The roof is an important part of the final cottage cost.<\/p>\n<p>The most common options include:<\/p>\n<ul>\n<li>Gable roof<\/li>\n<li>Hip roof<\/li>\n<li>Flat roof<\/li>\n<\/ul>\n<p>A gable roof has a relatively simple structure and is often the more economical option.<\/p>\n<p>A hip roof requires more materials and labor, while a flat roof requires particular attention to waterproofing and drainage.<\/p>\n<p>Datvale\u2019s calculator takes the selected roof type into account in the final calculation.<\/p>\n<h2>Windows, Doors, and Engineering Systems<\/h2>\n<p>Windows and doors, electrical systems, plumbing, and heating can represent a significant part of the cost of a finished wooden cottage.<\/p>\n<p>Energy-efficient windows may have a higher initial cost, but they help reduce heat loss.<\/p>\n<p>The cost of engineering systems also varies depending on the number of connection points, materials used, and selected equipment.<\/p>\n<p>The larger and more complex the project, the greater the share of these systems in the overall budget.<\/p>\n<h2>One-Story or Two-Story Wooden Cottage?<\/h2>\n<p>It is difficult to compare the price of a one-story and two-story cottage based only on total floor area.<\/p>\n<p>A two-story project may reduce the total foundation and roof area, but it increases structural complexity and requires an intermediate floor structure and staircase.<\/p>\n<p>For this reason, the better option depends on the plot size, desired area, layout, and available budget.<\/p>\n<h2>What Affects the Final Wooden Cottage Cost?<\/h2>\n<p>The final <strong>wooden cottage construction cost<\/strong> is mainly affected by:<\/p>\n<ul>\n<li>Floor area<\/li>\n<li>Number of floors<\/li>\n<li>Construction stage<\/li>\n<li>Roof type<\/li>\n<li>Quality package<\/li>\n<li>Terrace area<\/li>\n<li>Insulation<\/li>\n<li>Windows and doors<\/li>\n<li>Engineering systems<\/li>\n<li>Interior finishing<\/li>\n<\/ul>\n<p>Transportation to the site, access for construction equipment, and site conditions should also be taken into account.<\/p>\n<p>Non-standard architectural forms or complex structural solutions can further increase the final cost.<\/p>\n<h2>How Does the Cottage Calculator Work?<\/h2>\n<p>First, enter the cottage area.<\/p>\n<p>Then select:<\/p>\n<ul>\n<li>Number of floors<\/li>\n<li>Roof type<\/li>\n<li>Construction stage<\/li>\n<li>Quality package<\/li>\n<li>Terrace area, if required<\/li>\n<\/ul>\n<p>The system calculates the estimated project cost based on the selected parameters.<\/p>\n<p>The calculation may include site and foundation work, timber frame, walls, insulation, roof, windows and doors, engineering systems, interior finishing, and other necessary work.<\/p>\n<h2>Why Should You Calculate the Cottage Cost in Advance?<\/h2>\n<p><strong>Cottage construction<\/strong> consists of several different stages, and each creates separate expenses.<\/p>\n<p>An advance calculation helps you:<\/p>\n<ul>\n<li>Determine the required budget<\/li>\n<li>Compare one-story and two-story options<\/li>\n<li>See how different roof types affect the price<\/li>\n<li>Compare quality packages<\/li>\n<li>Plan the construction stages in advance<\/li>\n<li>Reduce the risk of unexpected expenses<\/li>\n<\/ul>\n<p><\/p>\n<h2>Frequently Asked Questions About Wooden Cottages<\/h2>\n<p><strong>How much does it cost to build a wooden cottage?<\/strong><\/p>\n<p>The price depends on the area, number of floors, frame, insulation, roof, engineering systems, and finishing quality. For a specific project, it is best to use the Cottage Calculator.<\/p>\n<p><strong>Are wooden cottages cheaper than conventional houses?<\/strong><\/p>\n<p>It depends on the size of the project, structural system, materials, and finishing level. Timber-frame technology can often speed up the construction process and provide opportunities to optimize certain costs.<\/p>\n<p><strong>Is it possible to build cottages at a lower cost?<\/strong><\/p>\n<p>Yes. The budget can be reduced by simplifying the project, choosing an optimal floor area, selecting a simple roof, and planning materials correctly.<\/p>\n<p><strong>How long does it take to build a wooden cottage?<\/strong><\/p>\n<p>The construction time depends on the area, project complexity, construction stage, and working conditions.<\/p>\n<p><strong>Can a wooden cottage be used as a permanent home?<\/strong><\/p>\n<p>A properly designed and well-insulated wooden cottage can be used both seasonally and as a permanent residence.<\/p>\n<h2>Calculate the Wooden Cottage Construction Cost<\/h2>\n<p>With Datvale.ge\u2019s Cottage Calculator, you can estimate the expected project cost in just a few steps.<\/p>\n<p>Enter the area, number of floors, roof type, construction stage, and quality level to receive a preliminary cost estimate.<\/p>\n<p>This will help you better understand <strong>how much it costs to build a wooden cottage<\/strong> and choose the option that best fits your budget.<\/p>\n<p>Follow us on <a href=\"https:\/\/facebook.com\/datvale.ge\">Facebook<\/a> and <a href=\"https:\/\/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<div class=\"elementor-element elementor-element-2349297 e-flex e-con-boxed e-con e-parent\" data-id=\"2349297\" 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-52227bb elementor-widget elementor-widget-image\" data-id=\"52227bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"354\" src=\"https:\/\/datvale.ge\/wp-content\/uploads\/2026\/08\/kotejis-kalkulatori-1024x354.webp\" class=\"attachment-large size-large wp-image-21910\" alt=\"Wooden Cottage Construction Cost\" srcset=\"https:\/\/datvale.ge\/wp-content\/uploads\/2026\/08\/kotejis-kalkulatori-1024x354.webp 1024w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/08\/kotejis-kalkulatori-300x104.webp 300w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/08\/kotejis-kalkulatori-768x265.webp 768w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/08\/kotejis-kalkulatori.webp 1100w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/08\/kotejis-kalkulatori-600x207.webp 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\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>Wooden Cottage Construction Cost 2026 \u2013 Cottage Calculator Select Cottage Features Cottage Area m\u00b2 Number of Floors 1 Floor2 Floors Roof Type Gable RoofHip RoofFlat Roof Construction Stage Wood Frame OnlyShell ConstructionFinished Cottage Quality Package EconomyStandardPremium Terrace No TerraceWith Terrace Terrace Area m\u00b2 Calculate Cottage Cost Please fill in all required fields correctly. \u2713 Free&#8230;<\/p>\n","protected":false},"author":67,"featured_media":0,"parent":0,"menu_order":21,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-21911","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21911","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=21911"}],"version-history":[{"count":1,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21911\/revisions"}],"predecessor-version":[{"id":22129,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21911\/revisions\/22129"}],"wp:attachment":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/media?parent=21911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}