


<style id="elementor-post-21838">.elementor-21838 .elementor-element.elementor-element-95a2c55{--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-21838 .elementor-element.elementor-element-d81f692{--display:flex;}.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-21838 .elementor-element.elementor-element-c5fe62b > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-21838 .elementor-element.elementor-element-c5fe62b{text-align:center;}.elementor-21838 .elementor-element.elementor-element-c5fe62b .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-21838 .elementor-element.elementor-element-c5fe62b .elementor-heading-title a{transition-duration:0s;}.elementor-21838 .elementor-element.elementor-element-06bad53{--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-21838 .elementor-element.elementor-element-f446cb3{--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-21838 .elementor-element.elementor-element-fc754f7{--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-21838 .elementor-element.elementor-element-28aa1c2{--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-21838 .elementor-element.elementor-element-cf31156{--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-21838 .elementor-element.elementor-element-0c32e20 img{width:100%;}@media(max-width:1024px){.elementor-21838 .elementor-element.elementor-element-c5fe62b > .elementor-widget-container{padding:0px 0px 0px 0px;}}@media(max-width:767px){.elementor-21838 .elementor-element.elementor-element-15f0548 > .elementor-widget-container{margin:97px 0px 0px 0px;}.elementor-21838 .elementor-element.elementor-element-d81f692{--margin-top:-20px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-21838 .elementor-element.elementor-element-c5fe62b > .elementor-widget-container{padding:010px 010px 5px 010px;}.elementor-21838 .elementor-element.elementor-element-c5fe62b{text-align:center;}.elementor-21838 .elementor-element.elementor-element-c5fe62b .elementor-heading-title{font-size:17px;-webkit-text-stroke-width:0px;stroke-width:0px;}.elementor-21838 .elementor-element.elementor-element-06bad53{--margin-top:-33px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}}</style>{"id":21838,"date":"2026-09-24T11:14:18","date_gmt":"2026-09-24T07:14:18","guid":{"rendered":"https:\/\/datvale.ge\/%e1%83%98%e1%83%90%e1%83%a2%e1%83%90%e1%83%99%e1%83%98%e1%83%a1-%e1%83%9b%e1%83%9d%e1%83%95%e1%83%9a%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\/"},"modified":"2026-10-07T17:47:13","modified_gmt":"2026-10-07T13:47:13","slug":"floor-care-calculator","status":"publish","type":"page","link":"https:\/\/datvale.ge\/en\/floor-care-calculator\/","title":{"rendered":"Floor Care Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"21838\" class=\"elementor elementor-21838 elementor-20503\">\n\t\t\t\t<div class=\"elementor-element elementor-element-95a2c55 e-flex e-con-boxed e-con e-parent\" data-id=\"95a2c55\" 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-15f0548 elementor-widget elementor-widget-html\" data-id=\"15f0548\" 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-d81f692 e-flex e-con-boxed e-con e-parent\" data-id=\"d81f692\" 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-c5fe62b elementor-widget elementor-widget-heading\" data-id=\"c5fe62b\" 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\">Floor Care Cost 2026 \u2013 Floor Care 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-06bad53 e-flex e-con-boxed e-con e-parent\" data-id=\"06bad53\" 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-a3996a4 elementor-widget elementor-widget-html\" data-id=\"a3996a4\" 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-floor-care-calculator\">\r\n\r\n<style>\r\n#dv-floor-care-calculator,\r\n#dv-floor-care-calculator *{box-sizing:border-box}\r\n\r\n#dv-floor-care-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\r\n  position:relative;\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-floor-care-calculator .dv-calculator{width:100%;max-width:1180px;margin:0 auto}\r\n\r\n#dv-floor-care-calculator .dv-input-card,\r\n#dv-floor-care-calculator .dv-result-card,\r\n#dv-floor-care-calculator .dv-summary,\r\n#dv-floor-care-calculator .dv-info-card,\r\n#dv-floor-care-calculator .dv-related{\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-floor-care-calculator .dv-input-card{padding:28px;margin-bottom:24px}\r\n\r\n#dv-floor-care-calculator .dv-section-title{\r\n  display:inline-flex;align-items:center;gap:11px;margin:0 0 22px;\r\n  color:var(--dv-text);font-size:24px;font-weight:950;line-height:1.18\r\n}\r\n\r\n#dv-floor-care-calculator .dv-section-number{\r\n  display:inline-flex;width:36px;height:36px;align-items:center;justify-content:center;\r\n  flex:0 0 36px;border-radius:50%;background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  color:#fff;font-size:14px;font-weight:950\r\n}\r\n\r\n#dv-floor-care-calculator .dv-input-grid{\r\n  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px\r\n}\r\n\r\n#dv-floor-care-calculator .dv-field label{\r\n  display:block;min-height:21px;margin-bottom:8px;color:var(--dv-text);font-size:14px;font-weight:850\r\n}\r\n\r\n#dv-floor-care-calculator .dv-input-wrap{position:relative}\r\n\r\n#dv-floor-care-calculator input,\r\n#dv-floor-care-calculator select{\r\n  display:block;width:100%;height:56px;margin:0;border:1px solid #d8e3ef;border-radius:14px;\r\n  outline:none;background:#f8fbff;color:var(--dv-text);font-size:16px;font-weight:800\r\n}\r\n\r\n#dv-floor-care-calculator input{padding:0 52px 0 15px}\r\n#dv-floor-care-calculator select{padding:0 42px 0 15px;cursor:pointer}\r\n\r\n#dv-floor-care-calculator input:focus,\r\n#dv-floor-care-calculator select:focus{\r\n  border-color:var(--dv-blue-2);background:#fff;box-shadow:0 0 0 4px rgba(23,100,189,.10)\r\n}\r\n\r\n#dv-floor-care-calculator .dv-unit{\r\n  position:absolute;top:50%;right:14px;transform:translateY(-50%);\r\n  color:var(--dv-muted);font-size:13px;font-weight:850;pointer-events:none\r\n}\r\n\r\n#dv-floor-care-calculator .dv-note{\r\n  margin-top:20px;padding:14px 16px;border:1px solid #dce7f2;border-radius:14px;\r\n  background:#f8fbff;color:#526b84;font-size:13px;line-height:1.55;font-weight:650\r\n}\r\n\r\n#dv-floor-care-calculator .dv-calculate-v2{\r\n  width:100%;min-height:58px;margin-top:22px;padding:14px 24px;border:0;border-radius:14px;\r\n  cursor:pointer;background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  color:#fff;font-size:17px;font-weight:950;box-shadow:0 12px 28px rgba(11,58,120,.22)\r\n}\r\n\r\n#dv-floor-care-calculator .dv-error{\r\n  display:none;margin-top:14px;padding:13px 15px;border:1px solid rgba(174,32,32,.18);\r\n  border-radius:12px;background:#fff2f2;color:#a32020;font-size:14px;font-weight:850\r\n}\r\n\r\n#dv-floor-care-calculator .dv-output{display:none;scroll-margin-top:140px}\r\n#dv-floor-care-calculator .dv-output.dv-show{display:block}\r\n\r\n#dv-floor-care-calculator .dv-results{\r\n  display:grid;grid-template-columns:1fr;gap:18px;max-width:1080px;margin:0 auto\r\n}\r\n\r\n#dv-floor-care-calculator .dv-result-card{overflow:hidden}\r\n\r\n#dv-floor-care-calculator .dv-result-head{\r\n  display:flex;align-items:center;gap:10px;padding:17px 20px;\r\n  background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));color:#fff\r\n}\r\n\r\n#dv-floor-care-calculator .dv-result-icon{\r\n  display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;\r\n  flex:0 0 34px;border-radius:10px;background:rgba(255,255,255,.14);font-size:17px\r\n}\r\n\r\n#dv-floor-care-calculator .dv-result-head h3{margin:0;color:#fff;font-size:18px;font-weight:950}\r\n#dv-floor-care-calculator .dv-result-body{padding:10px 18px 15px}\r\n\r\n#dv-floor-care-calculator .dv-row{\r\n  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:15px;align-items:center;\r\n  padding:12px 0;border-bottom:1px dashed #d9e4ef\r\n}\r\n\r\n#dv-floor-care-calculator .dv-row:last-child{border-bottom:0}\r\n#dv-floor-care-calculator .dv-row-name{color:#425a74;font-size:14px;line-height:1.45;font-weight:650}\r\n#dv-floor-care-calculator .dv-row-value{color:var(--dv-text);text-align:right;white-space:nowrap;font-size:15px;font-weight:950}\r\n\r\n#dv-floor-care-calculator .dv-card-total{\r\n  margin:7px 0 2px;padding:14px 15px;border:1px solid #d8e3ef;border-radius:13px;\r\n  background:#f4f8fd;color:var(--dv-text);font-size:15px;font-weight:950;text-align:right\r\n}\r\n\r\n#dv-floor-care-calculator .dv-summary{max-width:1080px;margin:22px auto 0;padding:26px}\r\n\r\n#dv-floor-care-calculator .dv-summary-grid{\r\n  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px\r\n}\r\n\r\n#dv-floor-care-calculator .dv-summary-item{\r\n  padding:18px;border:1px solid #e1e9f3;border-radius:16px;background:#f8fbff;text-align:center\r\n}\r\n\r\n#dv-floor-care-calculator .dv-summary-label{\r\n  display:block;margin-bottom:7px;color:var(--dv-muted);font-size:13px;font-weight:850\r\n}\r\n\r\n#dv-floor-care-calculator .dv-summary-value{color:var(--dv-text);font-size:22px;font-weight:950}\r\n\r\n#dv-floor-care-calculator .dv-grand-total{\r\n  margin-top:16px;padding:29px 20px;border-radius:18px;\r\n  background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));\r\n  color:#fff;text-align:center;box-shadow:0 14px 30px rgba(11,58,120,.20)\r\n}\r\n\r\n#dv-floor-care-calculator .dv-grand-total small{\r\n  display:block;margin-bottom:8px;color:rgba(255,255,255,.82);font-size:14px;font-weight:850\r\n}\r\n\r\n#dv-floor-care-calculator .dv-grand-total strong{\r\n  display:block;color:#fff;font-size:clamp(34px,6vw,52px);line-height:1;font-weight:1000\r\n}\r\n\r\n#dv-floor-care-calculator .dv-pdf-button{\r\n  width:100%;min-height:56px;margin-top:15px;padding:14px 22px;border:0;border-radius:14px;\r\n  cursor:pointer;background:linear-gradient(135deg,#13795b,#0e9a70);color:#fff;font-size:16px;font-weight:950\r\n}\r\n\r\n#dv-floor-care-calculator .dv-related{max-width:1080px;margin:20px auto 0;padding:22px}\r\n#dv-floor-care-calculator .dv-related-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\r\n\r\n#dv-floor-care-calculator .dv-related-link{\r\n  display:flex;align-items:center;gap:12px;padding:17px 16px;border:1px solid #d8e3ef;\r\n  border-radius:16px;background:#f8fbff;color:var(--dv-blue);text-decoration:none\r\n}\r\n\r\n#dv-floor-care-calculator .dv-related-icon{\r\n  display:inline-flex;width:42px;height:42px;flex:0 0 42px;align-items:center;justify-content:center;\r\n  border-radius:12px;color:#fff;background:linear-gradient(135deg,var(--dv-blue),var(--dv-blue-2));font-size:20px\r\n}\r\n\r\n#dv-floor-care-calculator .dv-related-text{min-width:0;flex:1}\r\n#dv-floor-care-calculator .dv-related-text strong{display:block;margin-bottom:4px;color:var(--dv-blue);font-size:15px;font-weight:950}\r\n#dv-floor-care-calculator .dv-related-text small{display:block;color:var(--dv-muted);font-size:12px;line-height:1.45}\r\n#dv-floor-care-calculator .dv-related-arrow{font-size:18px;font-weight:950}\r\n\r\n@media(max-width:900px){\r\n  #dv-floor-care-calculator .dv-input-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n  #dv-floor-care-calculator .dv-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n  #dv-floor-care-calculator .dv-related-grid{grid-template-columns:1fr}\r\n}\r\n\r\n@media(max-width:600px){\r\n  #dv-floor-care-calculator{margin:18px auto;padding:24px 12px}\r\n  #dv-floor-care-calculator .dv-input-card,\r\n  #dv-floor-care-calculator .dv-summary,\r\n  #dv-floor-care-calculator .dv-related{padding:18px}\r\n  #dv-floor-care-calculator .dv-input-grid,\r\n  #dv-floor-care-calculator .dv-summary-grid{grid-template-columns:1fr}\r\n  #dv-floor-care-calculator .dv-row{grid-template-columns:minmax(0,1fr);gap:5px}\r\n  #dv-floor-care-calculator .dv-row-name,\r\n  #dv-floor-care-calculator .dv-row-value{width:100%;max-width:100%;min-width:0}\r\n  #dv-floor-care-calculator .dv-row-value{\r\n    text-align:left;\r\n    white-space:normal;\r\n    overflow-wrap:anywhere;\r\n    word-break:break-word;\r\n  }\r\n  #dv-floor-care-calculator .dv-card-total{\r\n    text-align:left;\r\n    white-space:normal;\r\n    overflow-wrap:anywhere;\r\n  }\r\n  #dv-floor-care-calculator .dv-summary-item{min-width:0;overflow:hidden}\r\n  #dv-floor-care-calculator .dv-summary-value{\r\n    display:block;\r\n    max-width:100%;\r\n    white-space:normal;\r\n    overflow-wrap:anywhere;\r\n  }\r\n}\r\n\r\n\/* After the first free calculation *\/\r\n#dv-floor-care-calculator .dv-free-next-step{\r\n  display:none;\r\n  max-width:1080px;\r\n  margin:0 auto 20px;\r\n  padding:22px 24px;\r\n  border:1px solid #d7e6f5;\r\n  border-radius:20px;\r\n  background:\r\n    radial-gradient(circle at top right,rgba(23,100,189,.12),transparent 34%),\r\n    linear-gradient(135deg,#ffffff 0%,#eef5fc 100%);\r\n  box-shadow:0 14px 34px rgba(11,58,120,.10);\r\n}\r\n\r\n#dv-floor-care-calculator .dv-free-next-step.dv-show{\r\n  display:grid;\r\n  grid-template-columns:minmax(0,1fr) auto;\r\n  gap:22px;\r\n  align-items:center;\r\n}\r\n\r\n#dv-floor-care-calculator .dv-free-next-step-kicker{\r\n  display:inline-block;\r\n  margin-bottom:6px;\r\n  color:#13795b;\r\n  font-size:12px;\r\n  font-weight:950;\r\n}\r\n\r\n#dv-floor-care-calculator .dv-free-next-step h3{\r\n  margin:0 0 7px;\r\n  color:#173558;\r\n  font-size:22px;\r\n  font-weight:950;\r\n  line-height:1.2;\r\n}\r\n\r\n#dv-floor-care-calculator .dv-free-next-step p{\r\n  margin:0;\r\n  color:#526b84;\r\n  font-size:14px;\r\n  line-height:1.55;\r\n  font-weight:650;\r\n}\r\n\r\n#dv-floor-care-calculator .dv-free-next-step a{\r\n  display:inline-flex;\r\n  min-width:240px;\r\n  min-height:52px;\r\n  align-items:center;\r\n  justify-content:center;\r\n  padding:13px 20px;\r\n  border-radius:13px;\r\n  background:linear-gradient(135deg,#0b3a78,#1764bd);\r\n  color:#fff!important;\r\n  font-size:14px;\r\n  font-weight:950;\r\n  text-decoration:none!important;\r\n  text-align:center;\r\n  box-shadow:0 10px 24px rgba(11,58,120,.20);\r\n}\r\n\r\n@media(max-width:600px){\r\n  #dv-floor-care-calculator .dv-free-next-step.dv-show{\r\n    grid-template-columns:1fr;\r\n  }\r\n\r\n  #dv-floor-care-calculator .dv-free-next-step{\r\n    padding:18px;\r\n  }\r\n\r\n  #dv-floor-care-calculator .dv-free-next-step a{\r\n    width:100%;\r\n    min-width:0;\r\n  }\r\n}\r\n\r\n\r\n\/* Company call request *\/\r\n#dv-floor-care-calculator .dv-call-request{\r\n  display:none;width:100%;max-width:100%;min-width:0;margin-top:14px;padding:18px;\r\n  border:1px solid #d8e3ef;border-radius:16px;background:#f8fbff;overflow:hidden;\r\n}\r\n#dv-floor-care-calculator .dv-call-request-title{margin:0 0 6px;color:var(--dv-text);font-size:17px;font-weight:950}\r\n#dv-floor-care-calculator .dv-call-request-text{margin:0 0 12px;color:var(--dv-muted);font-size:13px;line-height:1.5;font-weight:650}\r\n#dv-floor-care-calculator .dv-call-request-row{\r\n  display:grid;width:100%;max-width:100%;min-width:0;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;\r\n}\r\n#dv-floor-care-calculator .dv-call-phone{\r\n  display:block;width:100%;max-width:100%;min-width:0;height:52px;padding:0 14px;border:1px solid #d8e3ef;\r\n  border-radius:12px;outline:none;background:#fff;color:var(--dv-text);font-size:15px;font-weight:750;\r\n}\r\n#dv-floor-care-calculator .dv-call-phone:focus{border-color:#13795b;box-shadow:0 0 0 4px rgba(19,121,91,.10)}\r\n#dv-floor-care-calculator .dv-call-request-row.dv-has-saved-phone{grid-template-columns:1fr}\r\n#dv-floor-care-calculator .dv-call-request-row.dv-has-saved-phone .dv-call-phone{display:none}\r\n#dv-floor-care-calculator .dv-request-call-btn{\r\n  min-height:52px;max-width:100%;min-width:0;padding:13px 20px;border:0;border-radius:12px;cursor:pointer;\r\n  background:linear-gradient(135deg,#13795b,#0e9a70);color:#fff;font-size:14px;font-weight:950;white-space:nowrap;\r\n  box-shadow:0 10px 24px rgba(19,121,91,.22);\r\n}\r\n#dv-floor-care-calculator .dv-request-call-btn:disabled{opacity:.65;cursor:wait}\r\n#dv-floor-care-calculator .dv-call-request-status{\r\n  display:none;margin-top:10px;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.45;font-weight:800;\r\n}\r\n#dv-floor-care-calculator .dv-call-request-status.dv-success{\r\n  display:block;background:#eefaf5;color:#13795b;border:1px solid rgba(19,121,91,.16);\r\n}\r\n#dv-floor-care-calculator .dv-call-request-status.dv-error{\r\n  display:block;background:#fff2f2;color:#a32020;border:1px solid rgba(174,32,32,.18);\r\n}\r\n\r\n@media(max-width:600px){\r\n  #dv-floor-care-calculator .dv-call-request,\r\n  #dv-floor-care-calculator .dv-call-request-row,\r\n  #dv-floor-care-calculator .dv-call-phone,\r\n  #dv-floor-care-calculator .dv-request-call-btn{\r\n    width:100%;max-width:100%;min-width:0;\r\n  }\r\n  #dv-floor-care-calculator .dv-call-request{overflow:hidden}\r\n  #dv-floor-care-calculator .dv-call-request-row{grid-template-columns:minmax(0,1fr)}\r\n  #dv-floor-care-calculator .dv-request-call-btn{display:block;white-space:normal;overflow-wrap:anywhere}\r\n}\r\n\r\n<\/style>\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\">Select the main floor care details<\/h3>\r\n\r\n    <div class=\"dv-input-grid\">\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvCArea\">Floor area<\/label>\r\n        <div class=\"dv-input-wrap\">\r\n          <input id=\"dvCArea\" type=\"number\" min=\"5\" max=\"1000\" step=\"1\" placeholder=\"e.g. 60\" 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=\"dvCType\">Floor type<\/label>\r\n        <select id=\"dvCType\">\r\n          <option value=\"wood\">Parquet \/ Lacquered Wood Flooring<\/option>\r\n          <option value=\"engineered\">Three-Layer Parquet<\/option>\r\n          <option value=\"oiled\">Oiled Wood Flooring<\/option>\r\n          <option value=\"laminate\">Laminate<\/option>\r\n          <option value=\"vinyl\">Vinyl \/ SPC<\/option>\r\n          <option value=\"tile\">Tile \/ Porcelain Stoneware<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvCFrequency\">Wet Cleaning Frequency<\/label>\r\n        <select id=\"dvCFrequency\">\r\n          <option value=\"1\">Once a Week<\/option>\r\n          <option value=\"2\" selected>Twice a Week<\/option>\r\n          <option value=\"3\">3 Times a Week<\/option>\r\n          <option value=\"5\">5 Times a Week<\/option>\r\n          <option value=\"7\">Daily<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvCUsage\">Usage Intensity<\/label>\r\n        <select id=\"dvCUsage\">\r\n          <option value=\"0.85\">Low<\/option>\r\n          <option value=\"1\" selected>Medium<\/option>\r\n          <option value=\"1.20\">High<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvCDeep\">Periodic Deep Care<\/label>\r\n        <select id=\"dvCDeep\">\r\n          <option value=\"no\" selected>No<\/option>\r\n          <option value=\"yes\">Yes<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvCConsumption\">Cleaner Consumption per Cleaning<\/label>\r\n        <div class=\"dv-input-wrap\">\r\n          <input id=\"dvCConsumption\" type=\"number\" min=\"1\" max=\"30\" step=\"0.5\" value=\"8\" inputmode=\"decimal\">\r\n          <span class=\"dv-unit\">ml\/m\u00b2<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n    <div class=\"dv-note\">\r\n      The calculator uses 1-liter Bona cleaning products available on the Georgian market. 8 ml\/m\u00b2 is an estimated working consumption rate and can be adjusted based on your actual usage.\r\n    <\/div>\r\n\r\n    <button class=\"dv-calculate-v2\" id=\"dvCCalculateFreeFlowV2\" type=\"button\">\r\n      Calculate Floor Care Cost\r\n    <\/button>\r\n\r\n    <div class=\"dv-error\" id=\"dvCError\">\r\n      Please enter the floor area and cleaner consumption correctly.\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n  <div class=\"dv-output\" id=\"dvCOutput\">\r\n\r\n    <div class=\"dv-free-next-step\" id=\"dvCFreeNextStep\">\r\n      <div>\r\n        <span class=\"dv-free-next-step-kicker\">\u2713 Free calculation used<\/span>\r\n        <h3>A package is required for the next calculation<\/h3>\r\n        <p>\r\n          You have used one free calculation.\r\n          Choose a package to make another calculation.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <a href=\"https:\/\/datvale.ge\/en\/packages\/\">\r\n        Choose a Package\r\n      <\/a>\r\n    <\/div>\r\n\r\n    <div class=\"dv-results\">\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\"><span class=\"dv-result-icon\">\ud83d\udcd0<\/span><h3>Selected Details<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Floor area<\/span><span class=\"dv-row-value\" id=\"rCArea\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Floor type<\/span><span class=\"dv-row-value\" id=\"rCType\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Wet Cleaning Frequency<\/span><span class=\"dv-row-value\" id=\"rCFrequency\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Usage Intensity<\/span><span class=\"dv-row-value\" id=\"rCUsage\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\"><span class=\"dv-result-icon\">\ud83e\uddf4<\/span><h3>Recommended Cleaning Product<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Product Type<\/span><span class=\"dv-row-value\" id=\"rCProduct\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Package Size<\/span><span class=\"dv-row-value\">1 L<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Estimated Price<\/span><span class=\"dv-row-value\" id=\"rCProductPrice\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Cleaning Product: <span id=\"rCCleanerUnit\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"dv-result-card\">\r\n        <div class=\"dv-result-head\"><span class=\"dv-result-icon\">\ud83e\uddf9<\/span><h3>Monthly Consumption<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Cleaner Required per Cleaning<\/span><span class=\"dv-row-value\" id=\"rCPerClean\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Number of Cleanings per Month<\/span><span class=\"dv-row-value\" id=\"rCCleansMonth\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Cleaner Required per Month<\/span><span class=\"dv-row-value\" id=\"rCLitersMonth\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Required 1 L Bottles<\/span><span class=\"dv-row-value\" id=\"rCBottlesMonth\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Monthly Cleaning Product Cost: <span id=\"rCCleanerMonth\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"dv-result-card\" id=\"dvCDeepCard\">\r\n        <div class=\"dv-result-head\"><span class=\"dv-result-icon\">\u2728<\/span><h3>Periodic Deep Care<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Care Type<\/span><span class=\"dv-row-value\" id=\"rCDeepType\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Required Quantity<\/span><span class=\"dv-row-value\" id=\"rCDeepQty\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Estimated Cost<\/span><span class=\"dv-row-value\" id=\"rCDeepCost\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Deep Care: <span id=\"rCDeepTotal\">\u2014<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\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\">Cleaner per Month<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rCMonthLitersSummary\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Monthly Cost<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rCMonthCostSummary\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Deep Care<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rCDeepSummary\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Annual Cleaning Cost<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rCYearCost\">\u2014<\/span>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n      <div class=\"dv-grand-total\">\r\n        <small>Estimated Monthly Floor Care Cost<\/small>\r\n        <strong id=\"rCTotal\">\u2014<\/strong>\r\n      <\/div>\r\n\r\n      <button class=\"dv-pdf-button\" id=\"dvCPdf\" type=\"button\">\r\n        \ud83d\udcc4 Download PDF\r\n      <\/button>\r\n\r\n      <div class=\"dv-call-request\" id=\"dvCCallRequest\">\r\n        <h4 class=\"dv-call-request-title\">Would you like a company consultation?<\/h4>\r\n        <p class=\"dv-call-request-text\">Request a company call and they will contact you with additional information.<\/p>\r\n\r\n        <div class=\"dv-call-request-row\" id=\"dvCCallRow\">\r\n          <input class=\"dv-call-phone\" id=\"dvCCallPhone\" type=\"tel\" inputmode=\"tel\" autocomplete=\"tel\" placeholder=\"e.g. 599123456\">\r\n          <button class=\"dv-request-call-btn\" id=\"dvCRequestCall\" type=\"button\">Request a Company Call<\/button>\r\n        <\/div>\r\n\r\n        <div class=\"dv-call-request-status\" id=\"dvCCallStatus\" aria-live=\"polite\"><\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\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\/flooring-calculators\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83c\udfe0<\/span>\r\n          <span class=\"dv-related-text\"><strong>Flooring Calculators<\/strong><small>View other flooring calculators<\/small><\/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\/parquet-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83e\udeb5<\/span>\r\n          <span class=\"dv-related-text\"><strong>Parquet Calculator<\/strong><small>Calculate the estimated cost of parquet installation<\/small><\/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\/laminate-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83d\udccf<\/span>\r\n          <span class=\"dv-related-text\"><strong>Laminate Calculator<\/strong><small>Calculate laminate material and installation costs<\/small><\/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<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-floor-care-calculator\");\r\nif(!root)return;\r\n\r\nconst $=id=>root.querySelector(\"#\"+id);\r\n\r\nconst floorData={\r\n  wood:{\r\n    name:\"Parquet \/ Lacquered Wood Flooring\",\r\n    product:\"Wood Floor Cleaner\",\r\n    price:37.5,\r\n    deepName:\"Wood Floor Polish \/ Care Product\",\r\n    deepPrice:50,\r\n    deepCoverage:50\r\n  },\r\n  engineered:{\r\n    name:\"Three-Layer Parquet\",\r\n    product:\"Wood Floor Cleaner\",\r\n    price:37.5,\r\n    deepName:\"Wood Floor Polish \/ Care Product\",\r\n    deepPrice:50,\r\n    deepCoverage:50\r\n  },\r\n  oiled:{\r\n    name:\"Oiled Wood Flooring\",\r\n    product:\"Oiled Wood Floor Cleaner\",\r\n    price:37.5,\r\n    deepName:\"Periodic Care for Oiled Wood Flooring\",\r\n    deepPrice:58,\r\n    deepCoverage:50\r\n  },\r\n  laminate:{\r\n    name:\"Laminate\",\r\n    product:\"Laminate and Tile Cleaner\",\r\n    price:37.5,\r\n    deepName:\"Laminate Polish\",\r\n    deepPrice:50,\r\n    deepCoverage:50\r\n  },\r\n  vinyl:{\r\n    name:\"Vinyl \/ SPC\",\r\n    product:\"Laminate, Vinyl and Tile Cleaner\",\r\n    price:37.5,\r\n    deepName:\"Periodic Care for Hard Flooring\",\r\n    deepPrice:50,\r\n    deepCoverage:50\r\n  },\r\n  tile:{\r\n    name:\"Tile \/ Porcelain Stoneware\",\r\n    product:\"Laminate and Tile Cleaner\",\r\n    price:37.5,\r\n    deepName:\"Periodic Care for Hard Flooring\",\r\n    deepPrice:50,\r\n    deepCoverage:50\r\n  }\r\n};\r\n\r\nconst usageNames={\r\n  \"0.85\":\"Low\",\r\n  \"1\":\"Medium\",\r\n  \"1.2\":\"High\"\r\n};\r\n\r\nfunction numberValue(id){\r\n  const value=parseFloat(String($(id).value||\"\").replace(\",\",\".\"));\r\n  return Number.isFinite(value)?value:0;\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\nfunction decimal(value,digits){\r\n  return new Intl.NumberFormat(\"en-US\",{\r\n    minimumFractionDigits:digits,\r\n    maximumFractionDigits:digits\r\n  }).format(value);\r\n}\r\n\r\nlet dvFloorCareClickBusy=false;\r\n\r\nfunction showFloorCareFreeNextStep(){\r\n  const box=$(\"dvCFreeNextStep\");\r\n\r\n  if(box){\r\n    box.classList.add(\"dv-show\");\r\n  }\r\n}\r\n\r\nfunction openFloorCareRegistrationPopup(){\r\n\r\n  const redirect=\r\n    window.location.pathname+\r\n    window.location.search+\r\n    window.location.hash;\r\n\r\n  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 openFloorCarePackagePrompt(){\r\n\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 authorizeFloorCareFlow(){\r\n\r\n  if(\r\n    !window.DatvaleHtmlAccess ||\r\n    typeof window.DatvaleHtmlAccess.authorize!==\"function\"\r\n  ){\r\n    alert(\r\n      \"The access system could not be loaded. Refresh the page and try again.\"\r\n    );\r\n\r\n    return{\r\n      allowed:false,\r\n      mode:\"error\"\r\n    };\r\n  }\r\n\r\n  const result=\r\n    await window.DatvaleHtmlAccess.authorize(\r\n      \"floor_care\"\r\n    );\r\n\r\n  if(\r\n    result &&\r\n    result.success &&\r\n    result.data &&\r\n    result.data.allowed===true\r\n  ){\r\n    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    openFloorCareRegistrationPopup();\r\n\r\n    return{\r\n      allowed:false,\r\n      mode:\"login_required\"\r\n    };\r\n  }\r\n\r\n  if(data.code===\"package_required\"){\r\n    openFloorCarePackagePrompt();\r\n\r\n    return{\r\n      allowed:false,\r\n      mode:\"package_required\"\r\n    };\r\n  }\r\n\r\n  alert(\r\n    data.message||\r\n    \"Access could not be verified. Please try again.\"\r\n  );\r\n\r\n  return{\r\n    allowed:false,\r\n    mode:\"error\"\r\n  };\r\n}\r\n\r\nasync function claimFloorCareFreeCalculation(){\r\n\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=\r\n    await window.DatvaleHtmlAccess.claimFree(\r\n      \"floor_care\"\r\n    );\r\n\r\n  return !!(\r\n    result &&\r\n    result.success &&\r\n    result.data &&\r\n    result.data.claimed===true\r\n  );\r\n}\r\n\r\nfunction calculateCare(showError){\r\n\r\n  const area=numberValue(\"dvCArea\");\r\n  const type=$(\"dvCType\").value;\r\n  const frequency=parseInt($(\"dvCFrequency\").value,10)||1;\r\n  const usage=parseFloat($(\"dvCUsage\").value)||1;\r\n  const deep=$(\"dvCDeep\").value===\"yes\";\r\n  const consumption=numberValue(\"dvCConsumption\");\r\n\r\n  if(area<5||area>1000||consumption<=0){\r\n    $(\"dvCError\").style.display=showError?\"block\":\"none\";\r\n    $(\"dvCOutput\").classList.remove(\"dv-show\");\r\n    return false;\r\n  }\r\n\r\n  $(\"dvCError\").style.display=\"none\";\r\n\r\n  const d=floorData[type];\r\n  const cleansMonth=frequency*4.33;\r\n\r\n  const mlPerClean=area*consumption*usage;\r\n  const litersMonth=(mlPerClean*cleansMonth)\/1000;\r\n  const cleanerCostExact=litersMonth*d.price;\r\n  const bottlesMonth=Math.ceil(litersMonth);\r\n  const purchaseCost=bottlesMonth*d.price;\r\n\r\n  let deepQty=0;\r\n  let deepCost=0;\r\n\r\n  if(deep){\r\n    deepQty=Math.ceil(area\/d.deepCoverage);\r\n    deepCost=deepQty*d.deepPrice;\r\n  }\r\n\r\n  const yearlyCleaner=cleanerCostExact*12;\r\n\r\n  $(\"rCArea\").textContent=decimal(area,0)+\" m\u00b2\";\r\n  $(\"rCType\").textContent=d.name;\r\n  $(\"rCFrequency\").textContent=\"\"+frequency+\" times per week\";\r\n  $(\"rCUsage\").textContent=usageNames[String($(\"dvCUsage\").value)]||\"Medium\";\r\n\r\n  $(\"rCProduct\").textContent=d.product;\r\n  $(\"rCProductPrice\").textContent=money(d.price)+\" \/ 1 L\";\r\n  $(\"rCCleanerUnit\").textContent=money(d.price);\r\n\r\n  $(\"rCPerClean\").textContent=decimal(mlPerClean\/1000,2)+\" L\";\r\n  $(\"rCCleansMonth\").textContent=decimal(cleansMonth,1);\r\n  $(\"rCLitersMonth\").textContent=decimal(litersMonth,2)+\" L\";\r\n  $(\"rCBottlesMonth\").textContent=bottlesMonth+\" pcs\";\r\n  $(\"rCCleanerMonth\").textContent=money(cleanerCostExact);\r\n\r\n  $(\"rCDeepType\").textContent=deep?d.deepName:\"Not selected\";\r\n  $(\"rCDeepQty\").textContent=deep?deepQty+\" pcs \u00d7 1 L\":\"\u2014\";\r\n  $(\"rCDeepCost\").textContent=deep?money(deepCost):\"0 \u20be\";\r\n  $(\"rCDeepTotal\").textContent=deep?money(deepCost):\"0 \u20be\";\r\n\r\n  $(\"rCMonthLitersSummary\").textContent=decimal(litersMonth,2)+\" L\";\r\n  $(\"rCMonthCostSummary\").textContent=money(cleanerCostExact);\r\n  $(\"rCDeepSummary\").textContent=deep?money(deepCost):\"0 \u20be\";\r\n  $(\"rCYearCost\").textContent=money(yearlyCleaner);\r\n\r\n  $(\"rCTotal\").textContent=money(cleanerCostExact);\r\n\r\n  $(\"dvCOutput\").classList.remove(\"dv-show\");\r\n  void $(\"dvCOutput\").offsetWidth;\r\n  $(\"dvCOutput\").classList.add(\"dv-show\");\r\n\r\n  window.setTimeout(function(){\r\n    $(\"dvCOutput\").scrollIntoView({behavior:\"smooth\",block:\"start\"});\r\n  },120);\r\n\r\n  return true;\r\n}\r\n\r\nconst dvCCalculateFreeFlowV2=$(\"dvCCalculateFreeFlowV2\");\r\n\r\nif(dvCCalculateFreeFlowV2){\r\n\r\n  dvCCalculateFreeFlowV2.addEventListener(\"click\",async function(event){\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    event.stopImmediatePropagation();\r\n\r\n    if(dvFloorCareClickBusy)return;\r\n\r\n    dvFloorCareClickBusy=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\r\n      const access=await authorizeFloorCareFlow();\r\n\r\n      if(!access||!access.allowed)return;\r\n\r\n      const success=calculateCare(true);\r\n\r\n      if(!success)return;\r\n\r\n      triggerFloorCareCompletedSms();\r\n\r\n      if(access.mode===\"free\"){\r\n        const claimed=\r\n          await claimFloorCareFreeCalculation();\r\n\r\n        if(claimed){\r\n          showFloorCareFreeNextStep();\r\n        }\r\n      }\r\n\r\n    }finally{\r\n\r\n      button.disabled=false;\r\n      button.textContent=originalText;\r\n      dvFloorCareClickBusy=false;\r\n    }\r\n\r\n  },true);\r\n\r\n}\r\n\r\nconst dvCCallRequest=$(\"dvCCallRequest\");\r\nconst dvCRequestCall=$(\"dvCRequestCall\");\r\nconst dvCCallPhone=$(\"dvCCallPhone\");\r\nconst dvCCallStatus=$(\"dvCCallStatus\");\r\nconst dvCCallRow=$(\"dvCCallRow\");\r\n\r\nlet dvCCallConfig={enabled:false,isLoggedIn:false,hasSavedPhone:false};\r\n\r\nfunction floorCareAjaxUrl(){\r\n  return (window.cpdf_auth&&window.cpdf_auth.ajaxurl)\r\n    ?window.cpdf_auth.ajaxurl\r\n    :\"\/wp-admin\/admin-ajax.php\";\r\n}\r\n\r\nfunction setFloorCareCallStatus(message,type){\r\n  if(!dvCCallStatus)return;\r\n\r\n  dvCCallStatus.textContent=message||\"\";\r\n  dvCCallStatus.classList.remove(\"dv-success\",\"dv-error\");\r\n\r\n  if(type){\r\n    dvCCallStatus.classList.add(\r\n      type===\"success\"\r\n        ?\"dv-success\"\r\n        :\"dv-error\"\r\n    );\r\n  }\r\n}\r\n\r\nfunction syncFloorCarePhoneVisibility(){\r\n\r\n  const useSavedPhone=\r\n    dvCCallConfig.isLoggedIn&&\r\n    dvCCallConfig.hasSavedPhone;\r\n\r\n  if(dvCCallRow){\r\n    dvCCallRow.classList.toggle(\r\n      \"dv-has-saved-phone\",\r\n      useSavedPhone\r\n    );\r\n  }\r\n\r\n  if(dvCCallPhone){\r\n    dvCCallPhone.required=!useSavedPhone;\r\n\r\n    if(useSavedPhone){\r\n      dvCCallPhone.value=\"\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function loadFloorCareCallConfig(){\r\n\r\n  try{\r\n\r\n    const response=await fetch(\r\n      floorCareAjaxUrl()+\r\n      \"?action=gosms_call_request_config&calculator=floor_care&_=\"+\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)return;\r\n\r\n    dvCCallConfig={\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(dvCCallRequest){\r\n      dvCCallRequest.style.display=\r\n        dvCCallConfig.enabled\r\n          ?\"block\"\r\n          :\"none\";\r\n    }\r\n\r\n    syncFloorCarePhoneVisibility();\r\n\r\n  }catch(error){\r\n\r\n    if(dvCCallRequest){\r\n      dvCCallRequest.style.display=\"none\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function requestFloorCareCompanyCall(){\r\n\r\n  if(!dvCRequestCall||!dvCCallConfig.enabled)return;\r\n\r\n  const useSavedPhone=\r\n    dvCCallConfig.isLoggedIn&&\r\n    dvCCallConfig.hasSavedPhone;\r\n\r\n  const phone=\r\n    !useSavedPhone&&dvCCallPhone\r\n      ?String(dvCCallPhone.value||\"\").trim()\r\n      :\"\";\r\n\r\n  if(!useSavedPhone&&!phone){\r\n\r\n    setFloorCareCallStatus(\r\n      \"Please enter a phone number, e.g. 599123456\",\r\n      \"error\"\r\n    );\r\n\r\n    if(dvCCallPhone){\r\n      dvCCallPhone.focus();\r\n    }\r\n\r\n    return;\r\n  }\r\n\r\n  const old=dvCRequestCall.textContent;\r\n\r\n  dvCRequestCall.disabled=true;\r\n  dvCRequestCall.textContent=\"Sending...\";\r\n\r\n  setFloorCareCallStatus(\"\",null);\r\n\r\n  try{\r\n\r\n    const body=new URLSearchParams();\r\n\r\n    body.set(\"action\",\"gosms_request_call\");\r\n    body.set(\"calculator\",\"floor_care\");\r\n\r\n    if(phone){\r\n      body.set(\"phone\",phone);\r\n    }\r\n\r\n    const response=await fetch(\r\n      floorCareAjaxUrl(),\r\n      {\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\r\n    const json=await response.json();\r\n\r\n    if(json&&json.success){\r\n\r\n      setFloorCareCallStatus(\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\r\n      return;\r\n    }\r\n\r\n    const data=\r\n      json&&json.data\r\n        ?json.data\r\n        :{};\r\n\r\n    if(data&&data.disabled){\r\n\r\n      dvCCallConfig.enabled=false;\r\n\r\n      if(dvCCallRequest){\r\n        dvCCallRequest.style.display=\"none\";\r\n      }\r\n\r\n      return;\r\n    }\r\n\r\n    if(data&&data.need_phone){\r\n\r\n      dvCCallConfig.hasSavedPhone=false;\r\n\r\n      syncFloorCarePhoneVisibility();\r\n\r\n      setFloorCareCallStatus(\r\n        data.message||\r\n        \"Please enter a phone number.\",\r\n        \"error\"\r\n      );\r\n\r\n      if(dvCCallPhone){\r\n        dvCCallPhone.focus();\r\n      }\r\n\r\n      return;\r\n    }\r\n\r\n    setFloorCareCallStatus(\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\r\n    setFloorCareCallStatus(\r\n      \"The request could not be sent. Please try again.\",\r\n      \"error\"\r\n    );\r\n\r\n  }finally{\r\n\r\n    dvCRequestCall.disabled=false;\r\n    dvCRequestCall.textContent=old;\r\n  }\r\n}\r\n\r\nasync function triggerFloorCareCompletedSms(){\r\n\r\n  try{\r\n\r\n    const body=new URLSearchParams();\r\n\r\n    body.set(\r\n      \"action\",\r\n      \"gosms_calculator_completed\"\r\n    );\r\n\r\n    body.set(\r\n      \"calculator\",\r\n      \"floor_care\"\r\n    );\r\n\r\n    await fetch(\r\n      floorCareAjaxUrl(),\r\n      {\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\r\n  }catch(error){}\r\n}\r\n\r\nloadFloorCareCallConfig();\r\n\r\nif(dvCRequestCall){\r\n  dvCRequestCall.addEventListener(\r\n    \"click\",\r\n    requestFloorCareCompanyCall\r\n  );\r\n}\r\n\r\n$(\"dvCPdf\").addEventListener(\"click\",async function(){\r\n\r\n  if(!$(\"dvCOutput\").classList.contains(\"dv-show\")){\r\n\r\n    const access=\r\n      await authorizeFloorCareFlow();\r\n\r\n    if(!access||!access.allowed)return;\r\n\r\n    const success=\r\n      calculateCare(true);\r\n\r\n    if(!success)return;\r\n\r\n    triggerFloorCareCompletedSms();\r\n\r\n    if(access.mode===\"free\"){\r\n\r\n      const claimed=\r\n        await claimFloorCareFreeCalculation();\r\n\r\n      if(claimed){\r\n        showFloorCareFreeNextStep();\r\n      }\r\n    }\r\n  }\r\n\r\n  const btn=this;\r\n  const old=btn.innerHTML;\r\n\r\n  btn.disabled=true;\r\n  btn.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    btn.disabled=false;\r\n    btn.innerHTML=old;\r\n    alert(\"The jsPDF generator could not be loaded.\");\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=14;\r\n    const topMargin=14;\r\n    const bottomMargin=14;\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    async function textToPng(text,options){\r\n\r\n      const opts=Object.assign({\r\n        fontSize:18,\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(28,Math.ceil((opts.fontSize*1.8+opts.paddingY*2)*scale));\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    async function addTextImage(text,x,yPos,widthPx,mmWidth,options){\r\n\r\n      const rendered=\r\n        await textToPng(\r\n          text,\r\n          Object.assign(\r\n            {width:widthPx},\r\n            options||{}\r\n          )\r\n        );\r\n\r\n      const mmHeight=\r\n        mmWidth*\r\n        (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    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    let h=\r\n      await addTextImage(\r\n        \"Floor Care Cost Estimate\",\r\n        marginX,\r\n        y,\r\n        900,\r\n        contentWidth,\r\n        {\r\n          fontSize:34,\r\n          fontWeight:800,\r\n          color:\"#0b3a78\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n    y+=h+2;\r\n\r\n    h=\r\n      await addTextImage(\r\n        \"Datvale.ge\",\r\n        marginX,\r\n        y,\r\n        700,\r\n        contentWidth,\r\n        {\r\n          fontSize:16,\r\n          fontWeight:700,\r\n          color:\"#304a66\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n    y+=h+7;\r\n\r\n    doc.setFillColor(...blue);\r\n\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      \"Entered Data\",\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+=11;\r\n\r\n    const d=\r\n      floorData[\r\n        $(\"dvCType\").value\r\n      ];\r\n\r\n    const inputRows=[\r\n      [\"Floor area\",numberValue(\"dvCArea\")+\" m\u00b2\"],\r\n      [\"Floor type\",d.name],\r\n      [\"Wet Cleaning\",\"\"+$(\"dvCFrequency\").value+\" times per week\"],\r\n      [\"Deep Care\",$(\"dvCDeep\").value===\"yes\"?\"Yes\":\"No\"]\r\n    ];\r\n\r\n    for(const row of inputRows){\r\n\r\n      ensureSpace(14);\r\n\r\n      await addTextImage(\r\n        row[0],\r\n        marginX+3,\r\n        y+.7,\r\n        900,\r\n        contentWidth*.68,\r\n        {\r\n          fontSize:18,\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*.70,\r\n        y+.7,\r\n        400,\r\n        contentWidth*.27,\r\n        {\r\n          fontSize:18,\r\n          fontWeight:800,\r\n          color:\"#071f39\",\r\n          align:\"right\"\r\n        }\r\n      );\r\n\r\n      doc.setDrawColor(\r\n        225,\r\n        233,\r\n        242\r\n      );\r\n\r\n      doc.line(\r\n        marginX+3,\r\n        y+9,\r\n        marginX+contentWidth-3,\r\n        y+9\r\n      );\r\n\r\n      y+=12;\r\n    }\r\n\r\n    y+=5;\r\n\r\n    const cards=\r\n      $(\"dvCOutput\")\r\n        .querySelectorAll(\r\n          \".dv-result-card\"\r\n        );\r\n\r\n    for(const card of cards){\r\n\r\n      const title=\r\n        card.querySelector(\r\n          \".dv-result-head h3\"\r\n        );\r\n\r\n      const rows=\r\n        Array.from(\r\n          card.querySelectorAll(\r\n            \".dv-row\"\r\n          )\r\n        );\r\n\r\n      const total=\r\n        card.querySelector(\r\n          \".dv-card-total\"\r\n        );\r\n\r\n      const estimated=\r\n        13+\r\n        rows.length*12+\r\n        (total?13:4);\r\n\r\n      ensureSpace(estimated);\r\n\r\n      doc.setDrawColor(...border);\r\n\r\n      doc.roundedRect(\r\n        marginX,\r\n        y,\r\n        contentWidth,\r\n        estimated,\r\n        2,\r\n        2,\r\n        \"S\"\r\n      );\r\n\r\n      doc.setFillColor(...blue);\r\n\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        title\r\n          ?title.textContent.trim()\r\n          :\"\",\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+=11;\r\n\r\n      for(const row of rows){\r\n\r\n        const n=\r\n          row.querySelector(\r\n            \".dv-row-name\"\r\n          );\r\n\r\n        const v=\r\n          row.querySelector(\r\n            \".dv-row-value\"\r\n          );\r\n\r\n        await addTextImage(\r\n          n\r\n            ?n.textContent.trim()\r\n            :\"\",\r\n          marginX+3,\r\n          y+.7,\r\n          900,\r\n          contentWidth*.68,\r\n          {\r\n            fontSize:18,\r\n            fontWeight:700,\r\n            color:\"#173558\",\r\n            align:\"left\"\r\n          }\r\n        );\r\n\r\n        await addTextImage(\r\n          v\r\n            ?v.textContent.trim()\r\n            :\"\",\r\n          marginX+contentWidth*.70,\r\n          y+.7,\r\n          400,\r\n          contentWidth*.27,\r\n          {\r\n            fontSize:18,\r\n            fontWeight:800,\r\n            color:\"#071f39\",\r\n            align:\"right\"\r\n          }\r\n        );\r\n\r\n        doc.setDrawColor(\r\n          225,\r\n          233,\r\n          242\r\n        );\r\n\r\n        doc.line(\r\n          marginX+3,\r\n          y+9,\r\n          marginX+contentWidth-3,\r\n          y+9\r\n        );\r\n\r\n        y+=12;\r\n      }\r\n\r\n      if(total){\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          10,\r\n          1.5,\r\n          1.5,\r\n          \"FD\"\r\n        );\r\n\r\n        await addTextImage(\r\n          total.textContent\r\n            .replace(\/\\s+\/g,\" \")\r\n            .trim(),\r\n          marginX+4,\r\n          y+.8,\r\n          900,\r\n          contentWidth-8,\r\n          {\r\n            fontSize:18,\r\n            fontWeight:800,\r\n            color:\"#071f39\",\r\n            align:\"right\"\r\n          }\r\n        );\r\n\r\n        y+=12;\r\n      }\r\n\r\n      y+=4;\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:23,\r\n        fontWeight:800,\r\n        color:\"#071f39\",\r\n        align:\"left\"\r\n      }\r\n    );\r\n\r\n    y+=12;\r\n\r\n    const items=\r\n      Array.from(\r\n        $(\"dvCOutput\")\r\n          .querySelectorAll(\r\n            \".dv-summary-item\"\r\n          )\r\n      );\r\n\r\n    const gap=3;\r\n    const boxWidth=\r\n      (contentWidth-gap*3)\/4;\r\n\r\n    for(let i=0;i<items.length;i++){\r\n\r\n      const label=\r\n        items[i].querySelector(\r\n          \".dv-summary-label\"\r\n        );\r\n\r\n      const value=\r\n        items[i].querySelector(\r\n          \".dv-summary-value\"\r\n        );\r\n\r\n      const x=\r\n        marginX+\r\n        i*(boxWidth+gap);\r\n\r\n      doc.setFillColor(...lightBlue);\r\n      doc.setDrawColor(...border);\r\n\r\n      doc.roundedRect(\r\n        x,\r\n        y,\r\n        boxWidth,\r\n        18,\r\n        2,\r\n        2,\r\n        \"FD\"\r\n      );\r\n\r\n      await addTextImage(\r\n        label\r\n          ?label.textContent.trim()\r\n          :\"\",\r\n        x+1.5,\r\n        y+1.5,\r\n        420,\r\n        boxWidth-3,\r\n        {\r\n          fontSize:18,\r\n          fontWeight:800,\r\n          color:\"#071f39\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n\r\n      await addTextImage(\r\n        value\r\n          ?value.textContent.trim()\r\n          :\"\",\r\n        x+1.5,\r\n        y+8.5,\r\n        420,\r\n        boxWidth-3,\r\n        {\r\n          fontSize:18,\r\n          fontWeight:800,\r\n          color:\"#071f39\",\r\n          align:\"center\"\r\n        }\r\n      );\r\n    }\r\n\r\n    y+=21;\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      18,\r\n      2,\r\n      2,\r\n      \"F\"\r\n    );\r\n\r\n    await addTextImage(\r\n      \"Estimated Monthly Floor Care Cost\",\r\n      marginX+2,\r\n      y+2,\r\n      850,\r\n      contentWidth-4,\r\n      {\r\n        fontSize:13,\r\n        fontWeight:700,\r\n        color:\"#ffffff\",\r\n        align:\"center\"\r\n      }\r\n    );\r\n\r\n    await addTextImage(\r\n      $(\"rCTotal\")\r\n        .textContent\r\n        .trim(),\r\n      marginX+2,\r\n      y+8,\r\n      850,\r\n      contentWidth-4,\r\n      {\r\n        fontSize:34,\r\n        fontWeight:800,\r\n        color:\"#ffffff\",\r\n        align:\"center\"\r\n      }\r\n    );\r\n\r\n    y+=22;\r\n\r\n    await addTextImage(\r\n      \"Datvale.ge - The calculated amount is an estimated cost.\",\r\n      marginX,\r\n      y,\r\n      850,\r\n      contentWidth,\r\n      {\r\n        fontSize:13,\r\n        fontWeight:600,\r\n        color:\"#425a74\",\r\n        align:\"center\"\r\n      }\r\n    );\r\n\r\n    doc.save(\r\n      \"Datvale-floor-care-cost-estimate.pdf\"\r\n    );\r\n\r\n  }catch(error){\r\n\r\n    console.error(\r\n      \"Datvale floor care PDF error:\",\r\n      error\r\n    );\r\n\r\n    alert(\r\n      \"The PDF could not be generated.\"\r\n    );\r\n\r\n  }finally{\r\n\r\n    btn.disabled=false;\r\n    btn.innerHTML=old;\r\n  }\r\n\r\n});\r\n\r\n})();\r\n<\/script>\r\n\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f446cb3 e-flex e-con-boxed e-con e-parent\" data-id=\"f446cb3\" 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-8a0f307 elementor-widget elementor-widget-html\" data-id=\"8a0f307\" 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-fc754f7 e-flex e-con-boxed e-con e-parent\" data-id=\"fc754f7\" 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-c75367d elementor-widget elementor-widget-html\" data-id=\"c75367d\" 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-28aa1c2 e-flex e-con-boxed e-con e-parent\" data-id=\"28aa1c2\" 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-d5a3774 elementor-widget elementor-widget-text-editor\" data-id=\"d5a3774\" 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>Floor Care and Maintenance Costs<\/h2>\n<p><strong>Floor care<\/strong> is important for parquet, laminate, and other types of flooring. Choosing the right <strong>floor cleaning product<\/strong>, carrying out regular <strong>floor cleaning<\/strong>, and following proper <strong>parquet care<\/strong> and <strong>laminate care<\/strong> practices help maintain the cleanliness, appearance, and durability of the surface.<\/p>\n<p>Datvale\u2019s Floor Care Calculator allows you to estimate the expected cost of floor maintenance. Enter the floor area, flooring type, cleaning frequency, and usage intensity, and the system will calculate the estimated monthly and annual consumption of cleaning products.<\/p>\n<h2>What Determines the Cost of Floor Care?<\/h2>\n<p><strong>Floor care<\/strong> involves more than simply cleaning the surface. The final cost depends on the flooring type, floor area, cleaning frequency, usage intensity, and the selected <strong>floor cleaning product<\/strong>.<\/p>\n<p>For some surfaces, regular cleaning is sufficient, while natural wood flooring may periodically require additional care or a protective treatment.<\/p>\n<p>For this reason, floor care costs should be calculated according to the specific type of flooring.<\/p>\n<h2>Floor Cleaning<\/h2>\n<p><strong>Floor cleaning<\/strong> is one of the main parts of everyday floor maintenance. Cleaning frequency depends on the purpose of the room, the number of people using it, and the level of traffic.<\/p>\n<p>In residential spaces, floor cleaning may be required several times a week, while high-traffic areas may need more frequent cleaning.<\/p>\n<p>The more often <strong>floor cleaning<\/strong> is carried out, the more cleaning product is consumed, which increases monthly maintenance costs.<\/p>\n<p>The calculator uses these details to estimate the consumption and cost of cleaning products.<\/p>\n<h2>Parquet Care<\/h2>\n<p><strong>Parquet care<\/strong> requires special attention because natural wood is sensitive to excessive moisture and incorrectly selected chemical products.<\/p>\n<p>When cleaning parquet, it is recommended to use a <strong>floor cleaning product<\/strong> designed for wooden flooring and a well-wrung cloth or mop.<\/p>\n<p>Proper <strong>parquet care<\/strong> helps preserve the natural texture, color, and protective finish of the wood.<\/p>\n<p>In some cases, periodic deep care or the use of a special protective product may also be required.<\/p>\n<h2>Laminate Care<\/h2>\n<p><strong>Laminate care<\/strong> is relatively simple, although excessive use of water is still not recommended.<\/p>\n<p>Moisture that enters the joints between laminate boards may eventually cause damage or deformation.<\/p>\n<p>Proper <strong>laminate care<\/strong> includes regular cleaning, minimal moisture, and selecting a <strong>floor cleaning product<\/strong> suitable for laminate flooring.<\/p>\n<p>The cost of laminate care mainly depends on the floor area, cleaning frequency, and the price of the cleaning product.<\/p>\n<h2>Three-Layer Parquet Care<\/h2>\n<p>When caring for three-layer parquet, it is important to consider the type of surface finish.<\/p>\n<p>For lacquered three-layer parquet, cleaning products designed for wooden flooring should be used, while oiled surfaces may periodically require a special maintenance product.<\/p>\n<p>Regular <strong>floor cleaning<\/strong> and the use of a product suitable for the surface help keep three-layer parquet in good condition.<\/p>\n<h2>Floor Cleaning Products<\/h2>\n<p>Choosing the right <strong>floor cleaning product<\/strong> is important for both regular cleaning and long-term floor maintenance.<\/p>\n<p>Different products may be required for parquet, laminate, vinyl, and ceramic flooring.<\/p>\n<p>An incorrectly selected <strong>floor cleaning product<\/strong> may leave marks, damage the protective layer, or negatively affect the appearance of the surface.<\/p>\n<p>For this reason, you should always consider the flooring type and the manufacturer\u2019s recommendations when choosing a cleaning product.<\/p>\n<h2>What Affects the Final Cost of Floor Care?<\/h2>\n<p><strong>Floor care<\/strong> can be more or less expensive depending on several factors.<\/p>\n<p>The most important factors are the floor area, flooring type, how often <strong>floor cleaning<\/strong> is carried out each week, usage intensity, and the selected <strong>floor cleaning product<\/strong>.<\/p>\n<p>It also matters whether periodic deep care is required.<\/p>\n<p>For large floor areas or heavily used flooring, cleaning product consumption naturally increases.<\/p>\n<h2>Why Is Proper Floor Care Important?<\/h2>\n<p>Regular <strong>floor care<\/strong> helps maintain the cleanliness and good appearance of the surface.<\/p>\n<p>Proper <strong>parquet care<\/strong> and <strong>laminate care<\/strong> are especially important because excessive moisture or unsuitable cleaning products can cause unwanted damage to these materials.<\/p>\n<p>A suitable cleaning routine and the correct <strong>floor cleaning product<\/strong> help protect the flooring surface during everyday use.<\/p>\n<h2>How to Use the Floor Care Calculator<\/h2>\n<p>First, enter the total floor area. Then select the flooring type and specify how many times <strong>floor cleaning<\/strong> is carried out each week.<\/p>\n<p>Next, select the usage intensity and, if necessary, periodic deep care.<\/p>\n<p>The calculator will automatically estimate the monthly consumption of cleaning products, annual consumption, and the expected cost of floor care.<\/p>\n<p>The result will help you estimate the potential costs associated with <strong>floor care<\/strong> in advance and compare maintenance options for different types of flooring.<\/p>\n<p>Follow us on <a href=\"http:\/\/facebook.com\/datvale.ge\">Facebook<\/a> and <a href=\"http:\/\/youtube.com\/@datvale\" target=\"_blank\" rel=\"noopener\">YouTube<\/a>.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cf31156 e-flex e-con-boxed e-con e-parent\" data-id=\"cf31156\" 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-0c32e20 elementor-widget elementor-widget-image\" data-id=\"0c32e20\" 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=\"345\" src=\"https:\/\/datvale.ge\/wp-content\/uploads\/2026\/09\/iatakis-movlis-kalkulatori-1024x345.webp\" class=\"attachment-large size-large wp-image-21837\" alt=\"Floor Care Cost\" srcset=\"https:\/\/datvale.ge\/wp-content\/uploads\/2026\/09\/iatakis-movlis-kalkulatori-1024x345.webp 1024w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/09\/iatakis-movlis-kalkulatori-300x101.webp 300w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/09\/iatakis-movlis-kalkulatori-768x259.webp 768w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/09\/iatakis-movlis-kalkulatori.webp 1100w, https:\/\/datvale.ge\/wp-content\/uploads\/2026\/09\/iatakis-movlis-kalkulatori-600x202.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>Floor Care Cost 2026 \u2013 Floor Care Calculator Select the main floor care details Floor area m\u00b2 Floor type Parquet \/ Lacquered Wood FlooringThree-Layer ParquetOiled Wood FlooringLaminateVinyl \/ SPCTile \/ Porcelain Stoneware Wet Cleaning Frequency Once a WeekTwice a Week3 Times a Week5 Times a WeekDaily Usage Intensity LowMediumHigh Periodic Deep Care NoYes Cleaner Consumption&#8230;<\/p>\n","protected":false},"author":67,"featured_media":0,"parent":0,"menu_order":15,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-21838","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21838","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=21838"}],"version-history":[{"count":1,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21838\/revisions"}],"predecessor-version":[{"id":22114,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21838\/revisions\/22114"}],"wp:attachment":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/media?parent=21838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}