


<style id="elementor-post-21824">.elementor-21824 .elementor-element.elementor-element-bfe5f66{--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-21824 .elementor-element.elementor-element-183096b{--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-21824 .elementor-element.elementor-element-7b678a8 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-21824 .elementor-element.elementor-element-7b678a8{text-align:center;}.elementor-21824 .elementor-element.elementor-element-7b678a8 .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-21824 .elementor-element.elementor-element-7b678a8 .elementor-heading-title a{transition-duration:0s;}.elementor-21824 .elementor-element.elementor-element-cb9a1d5{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--margin-top:-35px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-21824 .elementor-element.elementor-element-36eab78{--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-21824 .elementor-element.elementor-element-daaa0f2{--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:-55px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-21824 .elementor-element.elementor-element-26f5aed{--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-21824 .elementor-element.elementor-element-fa5684a{--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;}@media(max-width:1024px){.elementor-21824 .elementor-element.elementor-element-7b678a8 > .elementor-widget-container{padding:0px 0px 0px 0px;}}@media(max-width:767px){.elementor-21824 .elementor-element.elementor-element-f842cd7 > .elementor-widget-container{margin:96px 0px 0px 0px;}.elementor-21824 .elementor-element.elementor-element-183096b{--margin-top:-25px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-21824 .elementor-element.elementor-element-7b678a8 > .elementor-widget-container{padding:010px 010px 5px 010px;}.elementor-21824 .elementor-element.elementor-element-7b678a8{text-align:center;}.elementor-21824 .elementor-element.elementor-element-7b678a8 .elementor-heading-title{font-size:17px;-webkit-text-stroke-width:0px;stroke-width:0px;}.elementor-21824 .elementor-element.elementor-element-cb9a1d5{--margin-top:-35px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}}</style>{"id":21824,"date":"2026-08-19T19:12:10","date_gmt":"2026-08-19T15:12:10","guid":{"rendered":"https:\/\/datvale.ge\/%e1%83%9e%e1%83%90%e1%83%a0%e1%83%99%e1%83%94%e1%83%a2%e1%83%98%e1%83%a1-%e1%83%99%e1%83%90%e1%83%9a%e1%83%99%e1%83%a3%e1%83%9a%e1%83%90%e1%83%a2%e1%83%9d%e1%83%a0%e1%83%98\/"},"modified":"2026-10-07T17:10:32","modified_gmt":"2026-10-07T13:10:32","slug":"parquet-calculator","status":"publish","type":"page","link":"https:\/\/datvale.ge\/en\/parquet-calculator\/","title":{"rendered":"Parquet Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"21824\" class=\"elementor elementor-21824 elementor-18978\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bfe5f66 e-flex e-con-boxed e-con e-parent\" data-id=\"bfe5f66\" 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-f842cd7 elementor-widget elementor-widget-html\" data-id=\"f842cd7\" 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-183096b e-flex e-con-boxed e-con e-parent\" data-id=\"183096b\" 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-7b678a8 elementor-widget elementor-widget-heading\" data-id=\"7b678a8\" 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\">Parquet Installation Cost - Parquet 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-cb9a1d5 e-flex e-con-boxed e-con e-parent\" data-id=\"cb9a1d5\" 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-ae91d74 elementor-widget elementor-widget-html\" data-id=\"ae91d74\" 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-parquet-calculator\">\r\n\r\n<style>\r\n#dv-parquet-calculator,\r\n#dv-parquet-calculator *{box-sizing:border-box}\r\n\r\n#dv-parquet-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-parquet-calculator .dv-calculator{width:100%;max-width:1180px;margin:0 auto}\r\n\r\n#dv-parquet-calculator .dv-input-card,\r\n#dv-parquet-calculator .dv-result-card,\r\n#dv-parquet-calculator .dv-summary,\r\n#dv-parquet-calculator .dv-info-card,\r\n#dv-parquet-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-parquet-calculator .dv-input-card{padding:28px;margin-bottom:24px}\r\n\r\n#dv-parquet-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-parquet-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-parquet-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-parquet-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-parquet-calculator .dv-input-wrap{position:relative}\r\n\r\n#dv-parquet-calculator input,\r\n#dv-parquet-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-parquet-calculator input{padding:0 52px 0 15px}\r\n#dv-parquet-calculator select{padding:0 42px 0 15px;cursor:pointer}\r\n\r\n#dv-parquet-calculator input:focus,\r\n#dv-parquet-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-parquet-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-parquet-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-parquet-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-parquet-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-parquet-calculator .dv-output{display:none;scroll-margin-top:140px}\r\n#dv-parquet-calculator .dv-output.dv-show{display:block}\r\n\r\n#dv-parquet-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-parquet-calculator .dv-result-card{overflow:hidden}\r\n\r\n#dv-parquet-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-parquet-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-parquet-calculator .dv-result-head h3{margin:0;color:#fff;font-size:18px;font-weight:950}\r\n#dv-parquet-calculator .dv-result-body{padding:10px 18px 15px}\r\n\r\n#dv-parquet-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-parquet-calculator .dv-row:last-child{border-bottom:0}\r\n#dv-parquet-calculator .dv-row-name{color:#425a74;font-size:14px;line-height:1.45;font-weight:650}\r\n#dv-parquet-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-parquet-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-parquet-calculator .dv-summary{max-width:1080px;margin:22px auto 0;padding:26px}\r\n\r\n#dv-parquet-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-parquet-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-parquet-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-parquet-calculator .dv-summary-value{color:var(--dv-text);font-size:22px;font-weight:950}\r\n\r\n#dv-parquet-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-parquet-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-parquet-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-parquet-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-parquet-calculator .dv-info-card{max-width:1080px;margin:20px auto 0;padding:22px}\r\n#dv-parquet-calculator .dv-info-card h3{margin:0 0 10px;color:var(--dv-text);font-size:20px;font-weight:950}\r\n#dv-parquet-calculator .dv-info-card p{margin:0;color:#526b84;font-size:13px;line-height:1.65;font-weight:650}\r\n\r\n#dv-parquet-calculator .dv-related{max-width:1080px;margin:20px auto 0;padding:22px}\r\n#dv-parquet-calculator .dv-related-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\r\n\r\n#dv-parquet-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-parquet-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-parquet-calculator .dv-related-text{min-width:0;flex:1}\r\n#dv-parquet-calculator .dv-related-text strong{display:block;margin-bottom:4px;color:var(--dv-blue);font-size:15px;font-weight:950}\r\n#dv-parquet-calculator .dv-related-text small{display:block;color:var(--dv-muted);font-size:12px;line-height:1.45}\r\n#dv-parquet-calculator .dv-related-arrow{font-size:18px;font-weight:950}\r\n\r\n@media(max-width:900px){\r\n  #dv-parquet-calculator .dv-input-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n  #dv-parquet-calculator .dv-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n  #dv-parquet-calculator .dv-related-grid{grid-template-columns:1fr}\r\n}\r\n\r\n@media(max-width:600px){\r\n  #dv-parquet-calculator{margin:18px auto;padding:24px 12px}\r\n  #dv-parquet-calculator .dv-input-card,\r\n  #dv-parquet-calculator .dv-summary,\r\n  #dv-parquet-calculator .dv-related{padding:18px}\r\n  #dv-parquet-calculator .dv-input-grid,\r\n  #dv-parquet-calculator .dv-summary-grid{grid-template-columns:1fr}\r\n  #dv-parquet-calculator .dv-row{grid-template-columns:minmax(0,1fr);gap:5px}\r\n  #dv-parquet-calculator .dv-row-name,\r\n  #dv-parquet-calculator .dv-row-value{width:100%;max-width:100%;min-width:0}\r\n  #dv-parquet-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-parquet-calculator .dv-card-total{\r\n    text-align:left;\r\n    white-space:normal;\r\n    overflow-wrap:anywhere;\r\n  }\r\n  #dv-parquet-calculator .dv-summary-item{min-width:0;overflow:hidden}\r\n  #dv-parquet-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-parquet-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-parquet-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-parquet-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-parquet-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-parquet-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-parquet-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-parquet-calculator .dv-free-next-step.dv-show{\r\n    grid-template-columns:1fr;\r\n  }\r\n\r\n  #dv-parquet-calculator .dv-free-next-step{\r\n    padding:18px;\r\n  }\r\n\r\n  #dv-parquet-calculator .dv-free-next-step a{\r\n    width:100%;\r\n    min-width:0;\r\n  }\r\n}\r\n\r\n\/* Company call request *\/\r\n#dv-parquet-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\r\n#dv-parquet-calculator .dv-call-request-title{margin:0 0 6px;color:var(--dv-text);font-size:17px;font-weight:950}\r\n#dv-parquet-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-parquet-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\r\n#dv-parquet-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\r\n#dv-parquet-calculator .dv-call-phone:focus{border-color:#13795b;box-shadow:0 0 0 4px rgba(19,121,91,.10)}\r\n#dv-parquet-calculator .dv-call-request-row.dv-has-saved-phone{grid-template-columns:1fr}\r\n#dv-parquet-calculator .dv-call-request-row.dv-has-saved-phone .dv-call-phone{display:none}\r\n\r\n#dv-parquet-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\r\n#dv-parquet-calculator .dv-request-call-btn:disabled{opacity:.65;cursor:wait}\r\n#dv-parquet-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\r\n#dv-parquet-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\r\n#dv-parquet-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-parquet-calculator .dv-call-request,\r\n  #dv-parquet-calculator .dv-call-request-row,\r\n  #dv-parquet-calculator .dv-call-phone,\r\n  #dv-parquet-calculator .dv-request-call-btn{\r\n    width:100%;max-width:100%;min-width:0;\r\n  }\r\n\r\n  #dv-parquet-calculator .dv-call-request{overflow:hidden}\r\n  #dv-parquet-calculator .dv-call-request-row{grid-template-columns:minmax(0,1fr)}\r\n  #dv-parquet-calculator .dv-request-call-btn{display:block;white-space:normal;overflow-wrap:anywhere}\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 parquet details<\/h3>\r\n\r\n    <div class=\"dv-input-grid\">\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvArea\">Floor area<\/label>\r\n        <div class=\"dv-input-wrap\">\r\n          <input id=\"dvArea\" 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=\"dvType\">Parquet type<\/label>\r\n        <select id=\"dvType\">\r\n          <option value=\"classic\">Standard \/ Classic parquet<\/option>\r\n          <option value=\"three\">Three-layer parquet<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvWood\">Wood species<\/label>\r\n        <select id=\"dvWood\">\r\n          <option value=\"oak\">Oak<\/option>\r\n          <option value=\"beech\">Beech<\/option>\r\n          <option value=\"acacia\">Acacia<\/option>\r\n          <option value=\"walnut\">Walnut<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"dv-field\">\r\n        <label for=\"dvPattern\">Installation pattern<\/label>\r\n        <select id=\"dvPattern\">\r\n          <option value=\"straight\">Classic \/ Straight installation<\/option>\r\n          <option value=\"herringbone\">Herringbone<\/option>\r\n          <option value=\"french\">French herringbone<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n    <button class=\"dv-calculate-v2\" id=\"dvCalculateParquetFreeFlowV2\" type=\"button\">\r\n      Calculate parquet cost\r\n    <\/button>\r\n\r\n    <div class=\"dv-error\" id=\"dvError\">\r\n      Please enter the floor area correctly.\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n  <div class=\"dv-output\" id=\"dvOutput\">\r\n\r\n    <div class=\"dv-free-next-step\" id=\"dvParquetFreeNextStep\">\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 Parquet<\/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=\"rArea\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Parquet type<\/span><span class=\"dv-row-value\" id=\"rType\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Wood species<\/span><span class=\"dv-row-value\" id=\"rWood\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Installation pattern<\/span><span class=\"dv-row-value\" id=\"rPattern\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Parquet to Purchase Including Waste<\/span><span class=\"dv-row-value\" id=\"rPurchaseArea\">\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\udeb5<\/span><h3>Parquet Material<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Market Price per 1 m\u00b2<\/span><span class=\"dv-row-value\" id=\"rParquetRate\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Total Parquet Material Cost<\/span><span class=\"dv-row-value\" id=\"rParquetMaterial\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Parquet Material: <span id=\"rParquetTotal\">\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\uddf1<\/span><h3>Plywood Base<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">12 mm Birch Plywood + 10% Allowance<\/span><span class=\"dv-row-value\" id=\"rPlywoodArea\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Plywood Material<\/span><span class=\"dv-row-value\" id=\"rPlywoodMaterial\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Wood Screws and Fasteners<\/span><span class=\"dv-row-value\" id=\"rScrews\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Plywood Installation Labor<\/span><span class=\"dv-row-value\" id=\"rPlywoodLabor\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Plywood Base: <span id=\"rPlywoodTotal\">\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>Adhesive and Auxiliary Chemicals<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Parquet Adhesive \u2014 Average 1.2 kg\/m\u00b2<\/span><span class=\"dv-row-value\" id=\"rGlueKg\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Adhesive Cost<\/span><span class=\"dv-row-value\" id=\"rGlueCost\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Primer<\/span><span class=\"dv-row-value\" id=\"rPrimer\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Filler and Small Auxiliary Materials<\/span><span class=\"dv-row-value\" id=\"rAuxiliary\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Adhesive and Chemicals: <span id=\"rChemistryTotal\">\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\">\ud83d\udd28<\/span><h3>Parquet Installation<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Parquet Installation Labor<\/span><span class=\"dv-row-value\" id=\"rInstallLabor\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Estimated Price per 1 m\u00b2<\/span><span class=\"dv-row-value\" id=\"rInstallRate\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Parquet Installation: <span id=\"rInstallTotal\">\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\">\u2728<\/span><h3>Sanding and Protective Finish<\/h3><\/div>\r\n        <div class=\"dv-result-body\">\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Sanding \/ Final Finishing<\/span><span class=\"dv-row-value\" id=\"rSanding\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">High-Quality Three-Coat Lacquer<\/span><span class=\"dv-row-value\" id=\"rLacquer\">\u2014<\/span><\/div>\r\n          <div class=\"dv-row\"><span class=\"dv-row-name\">Lacquer Application Labor<\/span><span class=\"dv-row-value\" id=\"rLacquerLabor\">\u2014<\/span><\/div>\r\n          <div class=\"dv-card-total\">Sanding and Lacquer: <span id=\"rFinishingTotal\">\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\">Materials<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rMaterialsSummary\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Labor<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rLaborSummary\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Auxiliary Materials<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rAuxSummary\">\u2014<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"dv-summary-item\">\r\n          <span class=\"dv-summary-label\">Contingency \u2014 5%<\/span>\r\n          <span class=\"dv-summary-value\" id=\"rContingency\">\u2014<\/span>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n      <div class=\"dv-grand-total\">\r\n        <small>Estimated Total Cost of Parquet Installation<\/small>\r\n        <strong id=\"rTotal\">\u2014<\/strong>\r\n      <\/div>\r\n\r\n      <button class=\"dv-pdf-button\" id=\"dvPdf\" type=\"button\">\r\n        \ud83d\udcc4 Download PDF\r\n      <\/button>\r\n\r\n      <div class=\"dv-call-request\" id=\"dvParquetCallRequest\">\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=\"dvParquetCallRow\">\r\n          <input class=\"dv-call-phone\" id=\"dvParquetCallPhone\" type=\"tel\" inputmode=\"tel\" autocomplete=\"tel\" placeholder=\"e.g. 599123456\">\r\n          <button class=\"dv-request-call-btn\" id=\"dvParquetRequestCall\" type=\"button\">Request a Company Call<\/button>\r\n        <\/div>\r\n\r\n        <div class=\"dv-call-request-status\" id=\"dvParquetCallStatus\" 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\/renovation-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83d\udee0\ufe0f<\/span>\r\n          <span class=\"dv-related-text\"><strong>Renovation Calculator<\/strong><small>Calculate the estimated total cost of your apartment renovation<\/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\/furniture-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83e\ude91<\/span>\r\n          <span class=\"dv-related-text\"><strong>Furniture Calculator<\/strong><small>Calculate the cost of furniture and built-in appliances<\/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\/bathroom-calculator\/\" target=\"_blank\" rel=\"noopener\">\r\n          <span class=\"dv-related-icon\">\ud83d\udebf<\/span>\r\n          <span class=\"dv-related-text\"><strong>Bathroom Calculator<\/strong><small>Calculate the estimated cost of your bathroom renovation<\/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-parquet-calculator\");\r\nif(!root)return;\r\n\r\nconst $=id=>root.querySelector(\"#\"+id);\r\n\r\nconst names={\r\n  type:{\r\n    classic:\"Standard \/ Classic parquet\",\r\n    three:\"Three-layer parquet\"\r\n  },\r\n  wood:{\r\n    oak:\"Oak\",\r\n    beech:\"Beech\",\r\n    acacia:\"Acacia\",\r\n    walnut:\"Walnut\"\r\n  },\r\n  pattern:{\r\n    straight:\"Classic \/ Straight installation\",\r\n    herringbone:\"Herringbone\",\r\n    french:\"French herringbone\"\r\n  }\r\n};\r\n\r\nconst parquetRates={\r\n  classic:{\r\n    oak:180,\r\n    beech:155,\r\n    acacia:180,\r\n    walnut:250\r\n  },\r\n  three:{\r\n    oak:219,\r\n    beech:185,\r\n    acacia:205,\r\n    walnut:285\r\n  }\r\n};\r\n\r\nconst rates={\r\n  plywoodPerM2:24,\r\n  screwsPerM2:3.5,\r\n  plywoodLaborPerM2:15,\r\n\r\n  glueKgPerM2:1.2,\r\n  gluePerKg:21,\r\n  primerPerM2:4,\r\n  auxiliaryPerM2:4,\r\n\r\n  installClassicPerM2:50,\r\n  installThreePerM2:35,\r\n\r\n  sandingPerM2:22,\r\n  lacquerPerM2:15.6,\r\n  lacquerLaborPerM2:0,\r\n\r\n  contingency:0.05\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 dvParquetClickBusy=false;\r\n\r\nfunction showParquetFreeNextStep(){\r\n  const box=$(\"dvParquetFreeNextStep\");\r\n\r\n  if(box){\r\n    box.classList.add(\"dv-show\");\r\n  }\r\n}\r\n\r\nfunction openParquetRegistrationPopup(){\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 openParquetPackagePrompt(){\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 authorizeParquetFlow(){\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      \"parquet\"\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    openParquetRegistrationPopup();\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    openParquetPackagePrompt();\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 claimParquetFreeCalculation(){\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      \"parquet\"\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 calculateParquet(showError){\r\n\r\n  const area=numberValue(\"dvArea\");\r\n  const type=$(\"dvType\").value;\r\n  const wood=$(\"dvWood\").value;\r\n  const pattern=$(\"dvPattern\").value;\r\n\r\n  if(area<5||area>1000){\r\n    $(\"dvError\").style.display=showError?\"block\":\"none\";\r\n    $(\"dvOutput\").classList.remove(\"dv-show\");\r\n    return false;\r\n  }\r\n\r\n  $(\"dvError\").style.display=\"none\";\r\n\r\n  const wasteRate=\r\n    pattern===\"straight\"\r\n      ?0.07\r\n      :pattern===\"herringbone\"\r\n        ?0.10\r\n        :0.12;\r\n\r\n  const purchaseArea=area*(1+wasteRate);\r\n\r\n  const parquetRate=parquetRates[type][wood];\r\n  const parquetMaterial=purchaseArea*parquetRate;\r\n\r\n  const isClassic=type===\"classic\";\r\n\r\n  const plywoodArea=isClassic?area*1.10:0;\r\n  const plywoodMaterial=plywoodArea*rates.plywoodPerM2;\r\n  const screws=isClassic?area*rates.screwsPerM2:0;\r\n  const plywoodLabor=isClassic?area*rates.plywoodLaborPerM2:0;\r\n  const plywoodTotal=plywoodMaterial+screws+plywoodLabor;\r\n\r\n  const glueKg=area*rates.glueKgPerM2;\r\n  const glueCost=glueKg*rates.gluePerKg;\r\n  const primer=area*rates.primerPerM2;\r\n  const auxiliary=area*rates.auxiliaryPerM2;\r\n  const chemistryTotal=glueCost+primer+auxiliary;\r\n\r\n  const baseInstallRate=isClassic?rates.installClassicPerM2:rates.installThreePerM2;\r\n\r\n  const patternMultiplier=\r\n    pattern===\"straight\"\r\n      ?1\r\n      :pattern===\"herringbone\"\r\n        ?1.20\r\n        :1.40;\r\n\r\n  const installRate=baseInstallRate*patternMultiplier;\r\n  const installLabor=area*installRate;\r\n\r\n  const sanding=isClassic?area*rates.sandingPerM2:0;\r\n  const lacquer=isClassic?area*rates.lacquerPerM2:0;\r\n  const lacquerLabor=isClassic?area*rates.lacquerLaborPerM2:0;\r\n  const finishingTotal=sanding+lacquer+lacquerLabor;\r\n\r\n  const materials=\r\n    parquetMaterial+\r\n    plywoodMaterial+\r\n    glueCost+\r\n    primer+\r\n    lacquer;\r\n\r\n  const labor=\r\n    plywoodLabor+\r\n    installLabor+\r\n    sanding+\r\n    lacquerLabor;\r\n\r\n  const aux=\r\n    screws+\r\n    auxiliary;\r\n\r\n  const subtotal=\r\n    materials+\r\n    labor+\r\n    aux;\r\n\r\n  const contingency=subtotal*rates.contingency;\r\n  const total=subtotal+contingency;\r\n\r\n  $(\"rArea\").textContent=decimal(area,0)+\" m\u00b2\";\r\n  $(\"rType\").textContent=names.type[type];\r\n  $(\"rWood\").textContent=names.wood[wood];\r\n  $(\"rPattern\").textContent=names.pattern[pattern];\r\n\r\n  $(\"rPurchaseArea\").textContent=\r\n    decimal(purchaseArea,1)+\" m\u00b2 \u2022 \"+Math.round(wasteRate*100)+\"% allowance\";\r\n\r\n  $(\"rParquetRate\").textContent=money(parquetRate)+\" \/ m\u00b2\";\r\n  $(\"rParquetMaterial\").textContent=money(parquetMaterial);\r\n  $(\"rParquetTotal\").textContent=money(parquetMaterial);\r\n\r\n  $(\"rPlywoodArea\").textContent=isClassic?decimal(plywoodArea,1)+\" m\u00b2\":\"Not required\";\r\n  $(\"rPlywoodMaterial\").textContent=isClassic?money(plywoodMaterial):\"Not required\";\r\n  $(\"rScrews\").textContent=isClassic?money(screws):\"Not required\";\r\n  $(\"rPlywoodLabor\").textContent=isClassic?money(plywoodLabor):\"Not required\";\r\n  $(\"rPlywoodTotal\").textContent=money(plywoodTotal);\r\n\r\n  $(\"rGlueKg\").textContent=decimal(glueKg,1)+\" kg\";\r\n  $(\"rGlueCost\").textContent=money(glueCost);\r\n  $(\"rPrimer\").textContent=money(primer);\r\n  $(\"rAuxiliary\").textContent=money(auxiliary);\r\n  $(\"rChemistryTotal\").textContent=money(chemistryTotal);\r\n\r\n  $(\"rInstallLabor\").textContent=money(installLabor);\r\n  $(\"rInstallRate\").textContent=money(installRate)+\" \/ m\u00b2\";\r\n  $(\"rInstallTotal\").textContent=money(installLabor);\r\n\r\n  $(\"rSanding\").textContent=isClassic?money(sanding):\"Factory finished\";\r\n  $(\"rLacquer\").textContent=isClassic?money(lacquer):\"Factory finished\";\r\n  $(\"rLacquerLabor\").textContent=isClassic?\"Included in sanding cost\":\"Not required\";\r\n  $(\"rFinishingTotal\").textContent=money(finishingTotal);\r\n\r\n  $(\"rMaterialsSummary\").textContent=money(materials);\r\n  $(\"rLaborSummary\").textContent=money(labor);\r\n  $(\"rAuxSummary\").textContent=money(aux);\r\n  $(\"rContingency\").textContent=money(contingency);\r\n  $(\"rTotal\").textContent=money(total);\r\n\r\n  $(\"dvOutput\").classList.remove(\"dv-show\");\r\n  void $(\"dvOutput\").offsetWidth;\r\n  $(\"dvOutput\").classList.add(\"dv-show\");\r\n\r\n  window.setTimeout(function(){\r\n    $(\"dvOutput\").scrollIntoView({behavior:\"smooth\",block:\"start\"});\r\n  },120);\r\n\r\n  return true;\r\n}\r\n\r\nconst dvCalculateParquetFreeFlowV2=$(\"dvCalculateParquetFreeFlowV2\");\r\n\r\nif(dvCalculateParquetFreeFlowV2){\r\n\r\n  dvCalculateParquetFreeFlowV2.addEventListener(\"click\",async function(event){\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    event.stopImmediatePropagation();\r\n\r\n    if(dvParquetClickBusy)return;\r\n\r\n    dvParquetClickBusy=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 authorizeParquetFlow();\r\n\r\n      if(!access||!access.allowed)return;\r\n\r\n      const success=calculateParquet(true);\r\n\r\n      if(!success)return;\r\n\r\n      triggerParquetCompletedSms();\r\n\r\n      if(access.mode===\"free\"){\r\n        const claimed=\r\n          await claimParquetFreeCalculation();\r\n\r\n        if(claimed){\r\n          showParquetFreeNextStep();\r\n        }\r\n      }\r\n\r\n    }finally{\r\n\r\n      button.disabled=false;\r\n      button.textContent=originalText;\r\n      dvParquetClickBusy=false;\r\n    }\r\n\r\n  },true);\r\n\r\n}\r\n\r\n\/*\r\n * GoSMS \u2014 Parquet Calculator\r\n * calculator id: parquet\r\n *\/\r\nconst dvParquetCallRequest=$(\"dvParquetCallRequest\");\r\nconst dvParquetRequestCall=$(\"dvParquetRequestCall\");\r\nconst dvParquetCallPhone=$(\"dvParquetCallPhone\");\r\nconst dvParquetCallStatus=$(\"dvParquetCallStatus\");\r\nconst dvParquetCallRow=$(\"dvParquetCallRow\");\r\n\r\nlet dvParquetCallConfig={enabled:false,isLoggedIn:false,hasSavedPhone:false};\r\n\r\nfunction parquetAjaxUrl(){\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 setParquetCallStatus(message,type){\r\n  if(!dvParquetCallStatus)return;\r\n  dvParquetCallStatus.textContent=message||\"\";\r\n  dvParquetCallStatus.classList.remove(\"dv-success\",\"dv-error\");\r\n  if(type){\r\n    dvParquetCallStatus.classList.add(type===\"success\"?\"dv-success\":\"dv-error\");\r\n  }\r\n}\r\n\r\nfunction syncParquetCallPhoneVisibility(){\r\n  const useSavedPhone=dvParquetCallConfig.isLoggedIn&&dvParquetCallConfig.hasSavedPhone;\r\n\r\n  if(dvParquetCallRow){\r\n    dvParquetCallRow.classList.toggle(\"dv-has-saved-phone\",useSavedPhone);\r\n  }\r\n\r\n  if(dvParquetCallPhone){\r\n    dvParquetCallPhone.required=!useSavedPhone;\r\n\r\n    if(useSavedPhone){\r\n      dvParquetCallPhone.value=\"\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function loadParquetCallConfig(){\r\n  try{\r\n\r\n    const response=await fetch(\r\n      parquetAjaxUrl()+\"?action=gosms_call_request_config&calculator=parquet&_=\"+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    dvParquetCallConfig={\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(dvParquetCallRequest){\r\n      dvParquetCallRequest.style.display=dvParquetCallConfig.enabled?\"block\":\"none\";\r\n    }\r\n\r\n    syncParquetCallPhoneVisibility();\r\n\r\n  }catch(error){\r\n\r\n    if(dvParquetCallRequest){\r\n      dvParquetCallRequest.style.display=\"none\";\r\n    }\r\n  }\r\n}\r\n\r\nasync function requestParquetCompanyCall(){\r\n\r\n  if(!dvParquetRequestCall||!dvParquetCallConfig.enabled)return;\r\n\r\n  const useSavedPhone=\r\n    dvParquetCallConfig.isLoggedIn&&\r\n    dvParquetCallConfig.hasSavedPhone;\r\n\r\n  const phone=\r\n    !useSavedPhone&&dvParquetCallPhone\r\n      ?String(dvParquetCallPhone.value||\"\").trim()\r\n      :\"\";\r\n\r\n  if(!useSavedPhone&&!phone){\r\n\r\n    setParquetCallStatus(\r\n      \"Please enter a phone number, e.g. 599123456\",\r\n      \"error\"\r\n    );\r\n\r\n    if(dvParquetCallPhone){\r\n      dvParquetCallPhone.focus();\r\n    }\r\n\r\n    return;\r\n  }\r\n\r\n  const originalText=dvParquetRequestCall.textContent;\r\n\r\n  dvParquetRequestCall.disabled=true;\r\n  dvParquetRequestCall.textContent=\"Sending...\";\r\n\r\n  setParquetCallStatus(\"\",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\",\"parquet\");\r\n\r\n    if(phone){\r\n      body.set(\"phone\",phone);\r\n    }\r\n\r\n    const response=await fetch(\r\n      parquetAjaxUrl(),\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      setParquetCallStatus(\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=json&&json.data?json.data:{};\r\n\r\n    if(data&&data.disabled){\r\n\r\n      dvParquetCallConfig.enabled=false;\r\n\r\n      if(dvParquetCallRequest){\r\n        dvParquetCallRequest.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      dvParquetCallConfig.hasSavedPhone=false;\r\n\r\n      syncParquetCallPhoneVisibility();\r\n\r\n      setParquetCallStatus(\r\n        data.message||\r\n        \"Please enter a phone number.\",\r\n        \"error\"\r\n      );\r\n\r\n      if(dvParquetCallPhone){\r\n        dvParquetCallPhone.focus();\r\n      }\r\n\r\n      return;\r\n    }\r\n\r\n    setParquetCallStatus(\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    setParquetCallStatus(\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    dvParquetRequestCall.disabled=false;\r\n    dvParquetRequestCall.textContent=originalText;\r\n  }\r\n}\r\n\r\nasync function triggerParquetCompletedSms(){\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      \"parquet\"\r\n    );\r\n\r\n    await fetch(\r\n      parquetAjaxUrl(),\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\nloadParquetCallConfig();\r\n\r\nif(dvParquetRequestCall){\r\n  dvParquetRequestCall.addEventListener(\r\n    \"click\",\r\n    requestParquetCompanyCall\r\n  );\r\n}\r\n\r\n\/* Direct PDF download *\/\r\n$(\"dvPdf\").addEventListener(\"click\",async function(){\r\n\r\n  if(!$(\"dvOutput\").classList.contains(\"dv-show\")){\r\n\r\n    const access=await authorizeParquetFlow();\r\n\r\n    if(!access||!access.allowed)return;\r\n\r\n    const success=calculateParquet(true);\r\n\r\n    if(!success)return;\r\n\r\n    triggerParquetCompletedSms();\r\n\r\n    if(access.mode===\"free\"){\r\n\r\n      const claimed=\r\n        await claimParquetFreeCalculation();\r\n\r\n      if(claimed){\r\n        showParquetFreeNextStep();\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        \"Parquet Installation Cost Estimate\",\r\n        marginX,\r\n        y,\r\n        900,\r\n        contentWidth,\r\n        {\r\n          fontSize:36,\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 inputRows=[\r\n      [\"Floor area\",numberValue(\"dvArea\")+\" m\u00b2\"],\r\n      [\"Parquet type\",names.type[$(\"dvType\").value]],\r\n      [\"Wood species\",names.wood[$(\"dvWood\").value]],\r\n      [\"Installation pattern\",names.pattern[$(\"dvPattern\").value]]\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(225,233,242);\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      $(\"dvOutput\")\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(225,233,242);\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        $(\"dvOutput\")\r\n          .querySelectorAll(\r\n            \".dv-summary-item\"\r\n          )\r\n      );\r\n\r\n    const gap=3;\r\n\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 Total Cost of Parquet Installation\",\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      $(\"rTotal\")\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-parquet-cost-estimate.pdf\"\r\n    );\r\n\r\n  }catch(error){\r\n\r\n    console.error(\r\n      \"Datvale parquet 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-36eab78 e-flex e-con-boxed e-con e-parent\" data-id=\"36eab78\" 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-f945c59 elementor-widget elementor-widget-html\" data-id=\"f945c59\" 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-daaa0f2 e-flex e-con-boxed e-con e-parent\" data-id=\"daaa0f2\" 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-0fecfb7 elementor-widget elementor-widget-html\" data-id=\"0fecfb7\" 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-26f5aed e-flex e-con-boxed e-con e-parent\" data-id=\"26f5aed\" 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-6d70382 elementor-widget elementor-widget-text-editor\" data-id=\"6d70382\" 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>Parquet Installation Cost in Georgia in 2026<\/h2>\n<p>The cost of parquet installation depends on the type of parquet, wood species, installation pattern, condition of the subfloor, and any additional work that may be required. Classic parquet and three-layer parquet use different installation technologies, so their final costs also differ.<\/p>\n<p>Datvale\u2019s Parquet Calculator allows you to estimate the approximate total cost of parquet installation in advance. Enter the floor area, select the parquet type, wood species, and installation pattern, and the calculator will automatically calculate material and labor costs.<\/p>\n<h2>What Is Included in the Parquet Installation Cost?<\/h2>\n<p>The cost of parquet installation includes more than just laying the parquet itself. For classic parquet, additional work often includes installing plywood, screws, special adhesive, primer, auxiliary materials, parquet installation, sanding, and a protective lacquer system.<\/p>\n<p>With three-layer parquet, the installation process is usually simpler because the material is sold with a factory-finished surface, and additional sanding and lacquering are generally not required.<\/p>\n<p>That is why the parquet installation cost should be calculated based on the full scope of work.<\/p>\n<h2>Classic Parquet Cost<\/h2>\n<p>Classic parquet is one of the most traditional and durable flooring options. Its price depends on the wood species, parquet dimensions, and quality.<\/p>\n<p>Oak parquet is one of the most popular choices. Beech, acacia, and walnut are also commonly used. Different wood species vary in price, durability, color, and visual appearance.<\/p>\n<p>With classic parquet, a significant part of the total cost comes not only from the material itself, but also from subfloor preparation, installation, and final finishing.<\/p>\n<h2>Three-Layer Parquet Cost<\/h2>\n<p>Three-layer parquet is made from several layers, with the top layer consisting of natural wood. One of its main advantages is dimensional stability and faster installation.<\/p>\n<p>The cost of installing three-layer parquet is usually easier to estimate than classic parquet because many products are supplied with a finished surface.<\/p>\n<p>Its final cost depends on the brand, wood species, thickness of the top layer, board dimensions, and installation method.<\/p>\n<h2>Parquet Installation Pattern Cost<\/h2>\n<p>The installation pattern has a significant effect on parquet labor costs.<\/p>\n<p>The simplest option is classic straight installation. Herringbone installation is more complex because it requires greater precision and more cutting.<\/p>\n<p>French herringbone is even more demanding, which means labor costs are also higher. More complex patterns also increase material waste, so the amount of parquet you need to purchase should not be based only on the net floor area.<\/p>\n<h2>Plywood and Adhesive Cost<\/h2>\n<p>When installing classic parquet, 12 mm plywood is often used to create a stable base. The total plywood cost also includes screws and installation labor.<\/p>\n<p>The cost of parquet adhesive depends on the manufacturer and adhesive type. High-quality adhesive is especially important for natural wood flooring because it affects parquet stability and long-term durability.<\/p>\n<p>The Parquet Calculator automatically includes these materials according to the selected parquet type.<\/p>\n<h2>Sanding and Lacquer Cost<\/h2>\n<p>After classic parquet installation, the surface needs to be sanded and finished.<\/p>\n<p>The cost of sanding depends on the condition of the floor, the equipment used, and the complexity of the work. Proper sanding levels the surface and prepares it for lacquer or oil.<\/p>\n<p>The cost of lacquer depends on the product, number of coats, and floor area. Several coats of high-quality lacquer help protect the wood from wear, moisture, and everyday use.<\/p>\n<h2>What Affects the Final Parquet Cost?<\/h2>\n<p>The final cost of parquet is mainly affected by the floor area, parquet type, wood species, and selected installation pattern.<\/p>\n<p>The condition of the existing floor is also important. If the subfloor needs leveling or additional preparation, the total parquet installation cost may increase.<\/p>\n<p>Rooms with complex shapes, many corners, and diagonal or decorative installation patterns also increase both material waste and labor costs.<\/p>\n<h2>How to Use the Parquet Calculator<\/h2>\n<p>Enter the floor area and then select the parquet type. Next, choose the preferred wood species and installation pattern.<\/p>\n<p>The calculator will automatically estimate the required amount of parquet, material cost, plywood, adhesive, auxiliary materials, and the relevant labor costs.<\/p>\n<p>For classic parquet, the calculator will also include sanding and protective finishing costs.<\/p>\n<p>The result will help you estimate your budget in advance and compare different types of <strong>parquet installation costs<\/strong>.<\/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-fa5684a e-flex e-con-boxed e-con e-parent\" data-id=\"fa5684a\" 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-e5717a9 elementor-widget elementor-widget-html\" data-id=\"e5717a9\" 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<h2>Frequently Asked Questions About Parquet Installation<\/h2>\r\n\r\n<h3>How much does parquet installation cost?<\/h3>\r\n<p>\r\nThe cost of parquet installation depends on the type of parquet, floor area, wood species,\r\ninstallation pattern, condition of the subfloor, and any additional work required.\r\nYou can use the Parquet Calculator to estimate the total cost.\r\n<\/p>\r\n\r\n<h3>Which is easier to install, classic parquet or three-layer parquet?<\/h3>\r\n<p>\r\nThree-layer parquet is often sold with a factory-finished surface, so its installation\r\ncan be relatively simpler. Classic parquet often requires additional plywood,\r\nadhesive, sanding, and final finishing.\r\n<\/p>\r\n\r\n<h3>Is plywood necessary when installing parquet?<\/h3>\r\n<p>\r\nThe need for plywood depends on the type of parquet, installation method,\r\nand the condition of the subfloor. For classic parquet, plywood is often used\r\nto create a stable base.\r\n<\/p>\r\n\r\n<h3>What increases the cost of parquet installation?<\/h3>\r\n<p>\r\nThe final price is affected by complex installation patterns, material type,\r\nadditional subfloor preparation, greater material waste, sanding, and protective finishing.\r\n<\/p>\r\n\r\n\r\n<h2>Parquet Care After Installation<\/h2>\r\n\r\n<p>\r\nProper parquet care is important for maintaining the condition of the natural wood surface.\r\nHumidity should be controlled, suitable cleaning products should be used,\r\nand the surface should be protected from mechanical damage.\r\nFor detailed advice, see\r\nParquet Care and Floor Cleaning Guidelines.\r\n<\/p>\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>Parquet Installation Cost &#8211; Parquet Calculator Select the main parquet details Floor area m\u00b2 Parquet type Standard \/ Classic parquetThree-layer parquet Wood species OakBeechAcaciaWalnut Installation pattern Classic \/ Straight installationHerringboneFrench herringbone Calculate parquet cost Please enter the floor area correctly. \u2713 Free calculation used A package is required for the next calculation You have used&#8230;<\/p>\n","protected":false},"author":67,"featured_media":0,"parent":0,"menu_order":12,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-21824","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21824","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=21824"}],"version-history":[{"count":1,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21824\/revisions"}],"predecessor-version":[{"id":22106,"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/pages\/21824\/revisions\/22106"}],"wp:attachment":[{"href":"https:\/\/datvale.ge\/en\/wp-json\/wp\/v2\/media?parent=21824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}