1<!doctype html> 2<html lang="en-US" prefix="og: https://ogp.me/ns#" class="no-js" itemtype="https://schema.org/WebPage" itemscope> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"> 6
6<script>document.documentElement.className = document.documentElement.className + ' yes-js js_active js'</script>
6 7
7<script>window.ROCO_AFTER_SALES_CONFIG={"endpoint":"https://roco.pk/wp-json/roco/v1/after-sales"};</script>
7 8 9<!-- Search Engine Optimization by Rank Math PRO - https://rankmath.com/ --> 10<title>Blog - ROCO Interiors</title> 11<meta name="description" content="Explore our blog for expert insights, tips, trends, and ideas on design, creativity, and smart solutions to inspire your next project."/> 12<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/> 13<link rel="canonical" href="https://roco.pk/blog/" /> 14<meta property="og:locale" content="en_US" /> 15<meta property="og:type" content="article" /> 16<meta property="og:title" content="Blog - ROCO Interiors" /> 17<meta property="og:description" content="Explore our blog for expert insights, tips, trends, and ideas on design, creativity, and smart solutions to inspire your next project." /> 18<meta property="og:url" content="https://roco.pk/blog/" /> 19<meta property="og:site_name" content="Roco Interiors" /> 20<meta property="og:updated_time" content="2026-05-07T11:56:26+00:00" /> 21<meta property="og:image" content="https://roco.pk/wp-content/uploads/2025/11/Cloudrest-Sectional-Sofa-Light-Brown_.webp" /> 22<meta property="og:image:secure_url" content="https://roco.pk/wp-content/uploads/2025/11/Cloudrest-Sectional-Sofa-Light-Brown_.webp" /> 23<meta property="og:image:width" content="700" /> 24<meta property="og:image:height" content="700" /> 25<meta property="og:image:alt" content="Blog" /> 26<meta property="og:image:type" content="image/webp" /> 27<meta property="article:published_time" content="2025-03-06T13:14:54+00:00" /> 28<meta property="article:modified_time" content="2026-05-07T11:56:26+00:00" /> 29<meta name="twitter:card" content="summary_large_image" /> 30<meta name="twitter:title" content="Blog - ROCO Interiors" /> 31<meta name="twitter:description" content="Explore our blog for expert insights, tips, trends, and ideas on design, creativity, and smart solutions to inspire your next project." /> 32<meta name="twitter:image" content="https://roco.pk/wp-content/uploads/2025/11/Cloudrest-Sectional-Sofa-Light-Brown_.webp" /> 33<meta name="twitter:label1" content="Time to read" /> 34<meta name="twitter:data1" content="Less than a minute" />
35<script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":"Place","@id":"https://roco.pk/#place","address":{"@type":"PostalAddress","streetAddress":"Opposite Children Complex Hospital Road, Chowk Fawara, Inner City, Multan, 66000","addressLocality":"Multan, Pakistan","addressRegion":"Multan","postalCode":"60000"}},{"@type":["FurnitureStore","Organization"],"@id":"https://roco.pk/#organization","name":"Roco Interiors","url":"https://roco.pk","address":{"@type":"PostalAddress","streetAddress":"Opposite Children Complex Hospital Road, Chowk Fawara, Inner City, Multan, 66000","addressLocality":"Multan, Pakistan","addressRegion":"Multan","postalCode":"60000"},"logo":{"@type":"ImageObject","@id":"https://roco.pk/#logo","url":"https://roco.pk/wp-content/uploads/2025/11/cropped-ROCO-BLACK-COLOR-WITH-TM-scaled-1.webp","contentUrl":"https://roco.pk/wp-content/uploads/2025/11/cropped-ROCO-BLACK-COLOR-WITH-TM-scaled-1.webp","caption":"Roco Interiors","inLanguage":"en-US","width":"2558","height":"707"},"openingHours":["Mo,Tu,We,Th,Fr,Sa,Su 09:00-17:00"],"legalName":"Roco Interiors","location":{"@id":"https://roco.pk/#place"},"image":{"@id":"https://roco.pk/#logo"},"telephone":"(061) 6510205"},{"@type":"WebSite","@id":"https://roco.pk/#website","url":"https://roco.pk","name":"Roco Interiors","alternateName":"Roco Interiors","publisher":{"@id":"https://roco.pk/#organization"},"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https://roco.pk/wp-content/uploads/2025/11/Cloudrest-Sectional-Sofa-Light-Brown_.webp","url":"https://roco.pk/wp-content/uploads/2025/11/Cloudrest-Sectional-Sofa-Light-Brown_.webp","width":"700","height":"700","caption":"Blog","inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://roco.pk/blog/#breadcrumb","itemListElement":[{"@type":"ListItem","position":"1","item":{"@id":"https://roco.pk","name":"Home"}},{"@type":"ListItem","position":"2","item":{"@id":"https://roco.pk/blog/","name":"Blog"}}]},{"@type":"WebPage","@id":"https://roco.pk/blog/#webpage","url":"https://roco.pk/blog/","name":"Blog - ROCO Interiors","datePublished":"2025-03-06T13:14:54+00:00","dateModified":"2026-05-07T11:56:26+00:00","isPartOf":{"@id":"https://roco.pk/#website"},"primaryImageOfPage":{"@id":"https://roco.pk/wp-content/uploads/2025/11/Cloudrest-Sectional-Sofa-Light-Brown_.webp"},"inLanguage":"en-US","breadcrumb":{"@id":"https://roco.pk/blog/#breadcrumb"}},{"@type":"Person","@id":"https://roco.pk/author/maha/","name":"Maha Rafeeq","url":"https://roco.pk/author/maha/","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/b86db65d9f3dad38a3ffb574f4652006957a597d11b9e77d86d752a12f940228?s=96&d=mm&r=g","url":"https://secure.gravatar.com/avatar/b86db65d9f3dad38a3ffb574f4652006957a597d11b9e77d86d752a12f940228?s=96&d=mm&r=g","caption":"Maha Rafeeq","inLanguage":"en-US"},"worksFor":{"@id":"https://roco.pk/#organization"}},{"@type":"Article","headline":"Blog - ROCO Interiors","keywords":"Blog","datePublished":"2025-03-06T13:14:54+00:00","dateModified":"2026-05-07T11:56:26+00:00","author":{"@id":"https://roco.pk/author/maha/","name":"Maha Rafeeq"},"publisher":{"@id":"https://roco.pk/#organization"},"description":"Explore our blog for expert insights, tips, trends, and ideas on design, creativity, and smart solutions to inspire your next project.","name":"Blog - ROCO Interiors","@id":"https://roco.pk/blog/#richSnippet","isPartOf":{"@id":"https://roco.pk/blog/#webpage"},"image":{"@id":"https://roco.pk/wp-content/uploads/2025/11/Cloudrest-Sectional-Sofa-Light-Brown_.webp"},"inLanguage":"en-US","mainEntityOfPage":{"@id":"https://roco.pk/blog/#webpage"}}]}</script>
35 36<!-- /Rank Math WordPress SEO plugin --> 37
38<script type='application/javascript' id='pys-version-script'>console.log('PixelYourSite Free version 11.4.2.1');</script>
38 39<link rel="alternate" type="application/rss+xml" title="ROCO Interiors » Feed" href="https://roco.pk/feed/" /> 40<link rel="alternate" type="application/rss+xml" title="ROCO Interiors » Comments Feed" href="https://roco.pk/comments/feed/" /> 41
41<script>document.documentElement.classList.remove( 'no-js' );</script>
41 42 <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://roco.pk/wp-json/oembed/1.0/embed?url=https%3A%2F%2Froco.pk%2Fblog%2F" /> 43<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://roco.pk/wp-json/oembed/1.0/embed?url=https%3A%2F%2Froco.pk%2Fblog%2F&format=xml" /> 44<style id="wp-img-auto-sizes-contain-inline-css"> 45img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 46/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 47</style> 48<link rel='stylesheet' id='kadence-blocks-column-css' href='https://roco.pk/wp-content/plugins/kadence-blocks/dist/style-blocks-column.css?ver=3.7.12' media='all' /> 49<link rel='stylesheet' id='kadence-blocks-rowlayout-css' href='https://roco.pk/wp-content/plugins/kadence-blocks/dist/style-blocks-rowlayout.css?ver=3.7.12' media='all' /> 50<style id="wp-emoji-styles-inline-css"> 51 52 img.wp-smiley, img.emoji { 53 display: inline !important; 54 border: none !important; 55 box-shadow: none !important; 56 height: 1em !important; 57 width: 1em !important; 58 margin: 0 0.07em !important; 59 vertical-align: -0.1em !important; 60 background: none !important; 61 padding: 0 !important; 62 } 63/*# sourceURL=wp-emoji-styles-inline-css */ 64</style> 65<style id="wp-block-library-inline-css"> 66:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
66--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 67 68/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 69</style> 70<style id="classic-theme-styles-inline-css"> 71/*! This file is auto-generated */ 72.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 73/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 74</style> 75 76<link rel='stylesheet' id='cr-frontend-css-css' href='https://roco.pk/wp-content/plugins/customer-reviews-woocommerce/css/frontend.css?ver=5.124.0' media='all' /> 77<style id="global-styles-inline-css"> 78:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--theme-palette-1: var(--global-palette1);--wp--preset--color--theme-palette-2: var(--global-palette2);--wp--preset--color--theme-palette-3: var(--global-palette3);--wp--preset--color--theme-palette-4: var(--global-palette4);--wp--preset--color--theme-palette-5: var(--global-palette5);--wp--preset--color--theme-palette-6: var(--global-palette6);--wp--preset--color--theme-palette-7: var(--global-palette7);--wp--preset--color--theme-palette-8: var(--global-palette8);--wp--preset--color--theme-palette-9: var(--global-palette9);--wp--preset--color--theme-palette-10: var(--global-palette10);--wp--preset--color--theme-palette-11: var(--global-palette11);--wp--preset--color--theme-palette-12: var(--global-palette12);--wp--preset--color--theme-palette-13: var(--global-palette13);--wp--preset--color--theme-palette-14: var(--global-palette14);--wp--preset--color--theme-palette-15: var(--global-palette15);--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
780) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: var(--global-font-size-small);--wp--preset--font-size--medium: var(--global-font-size-medium);--wp--preset--font-size--large: var(--global-font-size-large);--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--larger: var(--global-font-size-larger);--wp--preset--font-size--xxlarge: var(--global-font-size-xxlarge);--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: var(--global-calc-content-width);--wp--style--global--wide-size: var(--global-calc-wide-content-width); }:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){font-style: inherit;font-weight: inherit;letter-spacing: inherit;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-palette-1-color{color: var(--wp--preset--color--theme-palette-1) !important;}.has-theme-palette-2-color{color: var(--wp--preset--color--theme-palette-2) !important;}.has-theme-palette-3-color{color: var(--wp--preset--color--theme-palette-3) !important;}.has-theme-palette-4-color{color: var(--wp--preset--color--theme-palette-4) !important;}.has-theme-palette-5-color{color: var(--wp--preset--color--theme-palette-5) !important;}.has-theme-palette-6-color{color: var(--wp--preset--color--theme-palette-6) !important;}.has-theme-palette-7-color{color: var(--wp--preset--color--theme-palette-7) !important;}.has-theme-palette-8-color{color: var(--wp--preset--color--theme-palette-8) !important;}.has-theme-palette-9-color{color: var(--wp--preset--color--theme-palette-9) !important;}.has-theme-palette-10-color{color: var(--wp--preset--color--theme-palette-10) !important;}.has-theme-palette-11-color{color: var(--wp--preset--color--theme-palette-11) !important;}.has-theme-palette-12-color{color: var(--wp--preset--color--theme-palette-12) !important;}.has-theme-palette-13-color{color: var(--wp--preset--color--theme-palette-13) !important;}.has-theme-palette-14-color{color: var(--wp--preset--color--theme-palette-14) !important;}.has-theme-palette-15-color{color: var(--wp--preset--color--theme-palette-15) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-palette-1-background-color{background-color: var(--wp--preset--color--theme-palette-1) !important;}.has-theme-palette-2-background-color{background-color: var(--wp--preset--color--theme-palette-2) !important;}.has-theme-palette-3-background-color{background-color: var(--wp--preset--color--theme-palette-3) !important;}.has-theme-palette-4-background-color{background-color: var(--wp--preset--color--theme-palette-4) !important;}.has-theme-palette-5-background-color{background-color: var(--wp--preset--color--theme-palette-5) !important;}.has-theme-palette-6-background-color{background-color: var(--wp--preset--color--theme-palette-6) !important;}.has-theme-palette-7-background-color{background-color: var(--wp--preset--color--theme-palette-7) !important;}.has-theme-palette-8-background-color{background-color: var(--wp--preset--color--theme-palette-8) !important;}.has-theme-palette-9-background-color{background-color: var(--wp--preset--color--theme-palette-9) !important;}.has-theme-palette-10-background-color{background-color: var(--wp--preset--color--theme-palette-10) !important;}.has-theme-palette-11-background-color{background-color: var(--wp--preset--color--theme-palette-11) !important;}.has-theme-palette-12-background-color{background-color: var(--wp--preset--color--theme-palette-12) !important;}.has-theme-palette-13-background-color{background-color: var(--wp--preset--color--theme-palette-13) !important;}.has-theme-palette-14-background-color{background-color: var(--wp--preset--color--theme-palette-14) !important;}.has-theme-palette-15-background-color{background-color: var(--wp--preset--color--theme-palette-15) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-palette-1-border-color{border-color: var(--wp--preset--color--theme-palette-1) !important;}.has-theme-palette-2-border-color{border-color: var(--wp--preset--color--theme-palette-2) !important;}.has-theme-palette-3-border-color{border-color: var(--wp--preset--color--theme-palette-3) !important;}.has-theme-palette-4-border-color{border-color: var(--wp--preset--color--theme-palette-4) !important;}.has-theme-palette-5-border-color{border-color: var(--wp--preset--color--theme-palette-5) !important;}.has-theme-palette-6-border-color{border-color: var(--wp--preset--color--theme-palette-6) !important;}.has-theme-palette-7-border-color{border-color: var(--wp--preset--color--theme-palette-7) !important;}.has-theme-palette-8-border-color{border-color: var(--wp--preset--color--theme-palette-8) !important;}.has-theme-palette-9-border-color{border-color: var(--wp--preset--color--theme-palette-9) !important;}.has-theme-palette-10-border-color{border-color: var(--wp--preset--color--theme-palette-10) !important;}.has-theme-palette-11-border-color{border-color: var(--wp--preset--color--theme-palette-11) !important;}.has-theme-palette-12-border-color{border-color: var(--wp--preset--color--theme-palette-12) !important;}.has-theme-palette-13-border-color{border-color: var(--wp--preset--color--theme-palette-13) !important;}.has-theme-palette-14-border-color{border-color: var(--wp--preset--color--theme-palette-14) !important;}.has-theme-palette-15-border-color{border-color: var(--wp--preset--color--theme-palette-15) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
78.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-larger-font-size{font-size: var(--wp--preset--font-size--larger) !important;}.has-xxlarge-font-size{font-size: var(--wp--preset--font-size--xxlarge) !important;} 79/*# sourceURL=global-styles-inline-css */ 80</style> 81 82<style id="woocommerce-inline-inline-css"> 83.woocommerce form .form-row .required { visibility: hidden; } 84/*# sourceURL=woocommerce-inline-inline-css */ 85</style> 86<link rel='stylesheet' id='jquery-selectBox-css' href='https://roco.pk/wp-content/plugins/yith-woocommerce-wishlist/assets/css/jquery.selectBox.css?ver=1.2.0' media='all' /> 87<link rel='stylesheet' id='woocommerce_prettyPhoto_css-css' href='//roco.pk/wp-content/plugins/woocommerce/assets/css/prettyPhoto.css?ver=3.1.6' media='all' /> 88<link rel='stylesheet' id='yith-wcwl-main-css' href='https://roco.pk/wp-content/plugins/yith-woocommerce-wishlist/assets/css/style.css?ver=4.19.0' media='all' /> 89<style id="yith-wcwl-main-inline-css"> 90 :root { --add-to-wishlist-icon-color: rgb(150,150,150); --added-to-wishlist-icon-color: rgb(147,147,147); --color-add-to-wishlist-background: #333333; --color-add-to-wishlist-text: #FFFFFF; --color-add-to-wishlist-border: #333333; --color-add-to-wishlist-background-hover: #333333; --color-add-to-wishlist-text-hover: #FFFFFF; --color-add-to-wishlist-border-hover: #333333; --rounded-corners-radius: 16px; --color-add-to-cart-background: #333333; --color-add-to-cart-text: #FFFFFF; --color-add-to-cart-border: #333333; --color-add-to-cart-background-hover: #4F4F4F; --color-add-to-cart-text-hover: #FFFFFF; --color-add-to-cart-border-hover: #4F4F4F; --add-to-cart-rounded-corners-radius: 16px; --color-button-style-1-background: #333333; --color-button-style-1-text: #FFFFFF; --color-button-style-1-border: #333333; --color-button-style-1-background-hover: #4F4F4F; --color-button-style-1-text-hover: #FFFFFF; --color-button-style-1-border-hover: #4F4F4F; --color-button-style-2-background: #333333; --color-button-style-2-text: #FFFFFF; --color-button-style-2-border: #333333; --color-button-style-2-background-hover: #4F4F4F; --color-button-style-2-text-hover: #FFFFFF; --color-button-style-2-border-hover: #4F4F4F; --color-wishlist-table-background: #ffffff; --color-wishlist-table-text: #6d6c6c; --color-wishlist-table-border: #cccccc; --color-headers-background: #F4F4F4; --color-share-button-color: #FFFFFF; --color-share-button-color-hover: #FFFFFF; --color-fb-button-background: #39599E; --color-fb-button-background-hover: #595A5A; --color-tw-button-background: #45AFE2; --color-tw-button-background-hover: #595A5A; --color-pr-button-background: #AB2E31; --color-pr-button-background-hover: #595A5A; --color-em-button-background: #FBB102; --color-em-button-background-hover: #595A5A; --color-wa-button-background: #00A901; --color-wa-button-background-hover: #595A5A; --feedback-duration: 3s } 91/*# sourceURL=yith-wcwl-main-inline-css */ 92</style>
93<link rel='stylesheet' id='yith-wcwl-add-to-wishlist-css' href='https://roco.pk/wp-content/plugins/yith-woocommerce-wishlist/assets/css/frontend/add-to-wishlist.css?ver=4.19.0' media='all' /> 94<style id="yith-wcwl-add-to-wishlist-inline-css"> 95 :root { --add-to-wishlist-icon-color: rgb(150,150,150); --added-to-wishlist-icon-color: rgb(147,147,147); --color-add-to-wishlist-background: #333333; --color-add-to-wishlist-text: #FFFFFF; --color-add-to-wishlist-border: #333333; --color-add-to-wishlist-background-hover: #333333; --color-add-to-wishlist-text-hover: #FFFFFF; --color-add-to-wishlist-border-hover: #333333; --rounded-corners-radius: 16px; --color-add-to-cart-background: #333333; --color-add-to-cart-text: #FFFFFF; --color-add-to-cart-border: #333333; --color-add-to-cart-background-hover: #4F4F4F; --color-add-to-cart-text-hover: #FFFFFF; --color-add-to-cart-border-hover: #4F4F4F; --add-to-cart-rounded-corners-radius: 16px; --color-button-style-1-background: #333333; --color-button-style-1-text: #FFFFFF; --color-button-style-1-border: #333333; --color-button-style-1-background-hover: #4F4F4F; --color-button-style-1-text-hover: #FFFFFF; --color-button-style-1-border-hover: #4F4F4F; --color-button-style-2-background: #333333; --color-button-style-2-text: #FFFFFF; --color-button-style-2-border: #333333; --color-button-style-2-background-hover: #4F4F4F; --color-button-style-2-text-hover: #FFFFFF; --color-button-style-2-border-hover: #4F4F4F; --color-wishlist-table-background: #ffffff; --color-wishlist-table-text: #6d6c6c; --color-wishlist-table-border: #cccccc; --color-headers-background: #F4F4F4; --color-share-button-color: #FFFFFF; --color-share-button-color-hover: #FFFFFF; --color-fb-button-background: #39599E; --color-fb-button-background-hover: #595A5A; --color-tw-button-background: #45AFE2; --color-tw-button-background-hover: #595A5A; --color-pr-button-background: #AB2E31; --color-pr-button-background-hover: #595A5A; --color-em-button-background: #FBB102; --color-em-button-background-hover: #595A5A; --color-wa-button-background: #00A901; --color-wa-button-background-hover: #595A5A; --feedback-duration: 3s } 96/*# sourceURL=yith-wcwl-add-to-wishlist-inline-css */ 97</style> 98<link rel='stylesheet' id='kadence-global-css' href='https://roco.pk/wp-content/themes/kadence/assets/css/global.min.css?ver=1.5.2' media='all' /> 99<style id="kadence-global-inline-css"> 100/* Kadence Base CSS */ 101:root{--global-palette1:#191919;--global-palette2:#3b1e32;--global-palette3:#000000;--global-palette4:#1e1e1e;--global-palette5:#696159;--global-palette6:#3b1e32;--global-palette7:#ffffff;--global-palette8:#ffffff;--global-palette9:#ffffff;--global-palette10:oklch(from var(--global-palette1) calc(l + 0.10 * (1 - l)) calc(c * 1.00) calc(h + 180) / 100%);--global-palette11:#13612e;--global-palette12:#1159af;--global-palette13:#b82105;--global-palette14:#f7630c;--global-palette15:#fd9f15;--global-palette9rgb:255, 255, 255;--global-palette-highlight:#2316ae;--global-palette-highlight-alt:var(--global-palette2);--global-palette-highlight-alt2:var(--global-palette9);--global-palette-btn-bg:var(--global-palette1);--global-palette-btn-bg-hover:var(--global-palette3);--global-palette-btn:var(--global-palette9);--global-palette-btn-hover:var(--global-palette9);--global-palette-btn-sec-bg:var(--global-palette3);--global-palette-btn-sec-bg-hover:var(--global-palette2);--global-palette-btn-sec:var(--global-palette9);--global-palette-btn-sec-hover:var(--global-palette9);--global-body-font-family:'DM Sans', sans-serif;--global-heading-font-family:Manrope, sans-serif;--global-primary-nav-font-family:inherit;--global-fallback-font:sans-serif;--global-display-fallback-font:sans-serif;--global-content-width:1500px;--global-content-wide-width:calc(1500px + 230px);--global-content-narrow-width:842px;--global-content-edge-padding:1.5rem;--global-content-boxed-padding:2rem;--global-calc-content-width:calc(1500px - var(--global-content-edge-padding) - var(--global-content-edge-padding) );--wp--style--global--content-size:var(--global-calc-content-width);}.wp-site-blocks{--global-vw:calc( 100vw - ( 0.5 * var(--scrollbar-offset)));}body{background:var(--global-palette9);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}body, input, select, optgroup, textarea{font-style:normal;font-weight:300;font-size:14px;line-height:1.116rem;letter-spacing:0.01rem;font-family:var(--global-body-font-family);color:var(--global-palette4);}.content-bg, body.content-style-unboxed .site{background:var(--global-palette7);}h1,h2,h3,h4,h5,h6{font-family:var(--global-heading-font-family);}h1{font-style:normal;font-weight:normal;font-size:2rem;line-height:1.2;text-transform:capitalize;color:var(--global-palette3);}h2{font-style:normal;font-weight:normal;font-size:35px;line-height:1.2;letter-spacing:1px;text-transform:capitalize;color:var(--global-palette3);}h3{font-style:normal;font-weight:normal;font-size:25px;line-height:1.5;text-transform:capitalize;color:var(--global-palette3);}h4{font-style:normal;font-weight:300;font-size:22px;line-height:1.2rem;text-transform:capitalize;color:var(--global-palette4);}h5{font-style:normal;font-weight:normal;font-size:20px;line-height:1.3;color:var(--global-palette4);}h6{font-style:normal;font-weight:700;font-size:0.75em;line-height:1.5;text-transform:uppercase;color:var(--global-palette5);}@media all and (max-width: 767px){h2{font-size:25px;}}.entry-hero .kadence-breadcrumbs{max-width:1500px;}.site-container, .site-header-row-layout-contained, .site-footer-row-layout-contained, .entry-hero-layout-contained, .comments-area, .alignfull > .wp-block-cover__inner-container, .alignwide > .wp-block-cover__inner-container{max-width:var(--global-content-width);}.content-width-narrow .content-container.site-container, .content-width-narrow .hero-container.site-container{max-width:var(--global-content-narrow-width);}@media all and (min-width: 1730px){.wp-site-blocks .content-container .alignwide{margin-left:-115px;margin-right:-115px;width:unset;max-width:unset;}}@media all and (min-width: 1102px){.content-width-narrow .wp-site-blocks .content-container .alignwide{margin-left:-130px;margin-right:-130px;width:unset;max-width:unset;}}.content-style-boxed .wp-site-blocks .entry-content .alignwide{margin-left:calc( -1 * var( --global-content-boxed-pa
101dding ) );margin-right:calc( -1 * var( --global-content-boxed-padding ) );}.content-area{margin-top:1rem;margin-bottom:1rem;}@media all and (max-width: 1024px){.content-area{margin-top:3rem;margin-bottom:3rem;}}@media all and (max-width: 767px){.content-area{margin-top:2rem;margin-bottom:2rem;}}@media all and (max-width: 1024px){:root{--global-content-boxed-padding:2rem;}}@media all and (max-width: 767px){:root{--global-content-boxed-padding:1.5rem;}}.entry-content-wrap{padding:2rem;}@media all and (max-width: 1024px){.entry-content-wrap{padding:2rem;}}@media all and (max-width: 767px){.entry-content-wrap{padding:1.5rem;}}.entry.single-entry{box-shadow:0px 0px 0px 0px rgba(0,0,0,0.05);}.entry.loop-entry{border-radius:5px 5px 5px 5px;overflow:hidden;box-shadow:0px 0px 0px 0px rgba(0,0,0,0.05);}.loop-entry .entry-content-wrap{padding:2rem;}@media all and (max-width: 1024px){.loop-entry .entry-content-wrap{padding:2rem;}}@media all and (max-width: 767px){.loop-entry .entry-content-wrap{padding:1.5rem;}}button, .button, .wp-block-button__link, input[type="button"], input[type="reset"], input[type="submit"], .fl-button, .elementor-button-wrapper .elementor-button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit{font-style:normal;font-weight:600;font-size:14px;line-height:1.4;font-family:Syne, sans-serif;text-transform:uppercase;border-radius:100px;padding:15px 45px 15px 45px;border:0px solid currentColor;border-color:var(--global-palette1);box-shadow:0px 0px 0px 0px rgba(0,0,0,0);}.wp-block-button.is-style-outline .wp-block-button__link{padding:15px 45px 15px 45px;}button:hover, button:focus, button:active, .button:hover, .button:focus, .button:active, .wp-block-button__link:hover, .wp-block-button__link:focus, .wp-block-button__link:active, input[type="button"]:hover, input[type="button"]:focus, input[type="button"]:active, input[type="reset"]:hover, input[type="reset"]:focus, input[type="reset"]:active, input[type="submit"]:hover, input[type="submit"]:focus, input[type="submit"]:active, .elementor-button-wrapper .elementor-button:hover, .elementor-button-wrapper .elementor-button:focus, .elementor-button-wrapper .elementor-button:active, .wc-block-cart__submit:hover{border-color:var(--global-palette1);box-shadow:0px 0px 0px 0px rgba(0,0,0,0.1);}.kb-button.kb-btn-global-outline.kb-btn-global-inherit{padding-top:calc(15px - 2px);padding-right:calc(45px - 2px);padding-bottom:calc(15px - 2px);padding-left:calc(45px - 2px);}@media all and (max-width: 1024px){button, .button, .wp-block-button__link, input[type="button"], input[type="reset"], input[type="submit"], .fl-button, .elementor-button-wrapper .elementor-button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit{border-color:var(--global-palette1);}}@media all and (max-width: 767px){button, .button, .wp-block-button__link, input[type="button"], input[type="reset"], input[type="submit"], .fl-button, .elementor-button-wrapper .elementor-button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit{padding:15px 20px 15px 20px;border-color:var(--global-palette1);}.wp-block-button.is-style-outline .wp-block-button__link{padding:15px 20px 15px 20px;}.kb-button.kb-btn-global-outline.kb-btn-global-inherit{padding-top:calc(15px - 2px);padding-right:calc(20px - 2px);padding-bottom:calc(15px - 2px);padding-left:calc(20px - 2px);}}button.button-style-secondary, .button.button-style-secondary, .wp-block-button__link.button-style-secondary, input[type="button"].button-style-secondary, input[type="reset"].button-style-secondary, input[type="submit"].button-style-secondary, .fl-button.button-style-secondary, .elementor-button-wrapper .elementor-button.button-style-secondary, .wc-block-components-checkout-place-order-button.button-style-secondary, .wc-block-cart__submit.button-style-secondary{font-style:normal;font-weight:600;font-size:14px;line-height:1.4;font-family:Syne, sans-serif;text-transform:uppercase;border-radius:5px;}@media all and (max-width: 1024px){.mobile-transparent-header .entry-hero .entry-hero-container-inner{padding-top:10px;}}@media all and (max-width: 767px){.mobile-transparent-header .entry-hero .entry-hero-container-inner{padding-top:10px;}}.wp-site-blocks .entry-hero-container-inner{background:var(--global-palette8);}#kt-scroll-up-reader, #kt-scroll-up{border-radius:0px 0px 0px 0px;bottom:30px;font-size:1.2em;padding:0.4em 0.4em 0.4em 0.4em;}#kt-scroll-up-reader.scroll-up-side-right, #kt-scroll-up.scroll-up-side-right{right:30px;}#kt-scroll-up-reader.scroll-up-side-left, #kt-scroll-up.scroll-up-side-left{left:30px;}.entry-hero.page-hero-section .entry-header{min-height:200px;}.loop-entry.type-post h2.entry-title{font-style:normal;font-size:20px;line-height:1.32;color:var(--global-palette2);}.loop-entry.type-post .entry-taxonomies{font-style:normal;}.loop-entry.type-post .entry-meta{font-style:normal;} 102/* Kadence Header CSS */ 103@media all and (max-width: 1024px){.mobile-transparent-header #masthead{position:absolute;
103left:0px;right:0px;z-index:100;}.kadence-scrollbar-fixer.mobile-transparent-header #masthead{right:var(--scrollbar-offset,0);}.mobile-transparent-header #masthead, .mobile-transparent-header .site-top-header-wrap .site-header-row-container-inner, .mobile-transparent-header .site-main-header-wrap .site-header-row-container-inner, .mobile-transparent-header .site-bottom-header-wrap .site-header-row-container-inner{background:transparent;}.site-header-row-tablet-layout-fullwidth, .site-header-row-tablet-layout-standard{padding:0px;}}@media all and (min-width: 1025px){.transparent-header #masthead{position:absolute;left:0px;right:0px;z-index:100;}.transparent-header.kadence-scrollbar-fixer #masthead{right:var(--scrollbar-offset,0);}.transparent-header #masthead, .transparent-header .site-top-header-wrap .site-header-row-container-inner, .transparent-header .site-main-header-wrap .site-header-row-container-inner, .transparent-header .site-bottom-header-wrap .site-header-row-container-inner{background:transparent;}}.site-branding a.brand img{max-width:157px;}.site-branding a.brand img.svg-logo-image{width:157px;}.site-branding{padding:0px 0px 0px 0px;}#masthead, #masthead .kadence-sticky-header.item-is-fixed:not(.item-at-start):not(.site-header-row-container):not(.site-main-header-wrap), #masthead .kadence-sticky-header.item-is-fixed:not(.item-at-start) > .site-header-row-container-inner{background:var(--global-palette9);}.site-main-header-wrap .site-header-row-container-inner{border-bottom:1px solid var(--global-palette7);}.site-main-header-inner-wrap{min-height:10px;}.header-navigation .header-menu-container ul ul.sub-menu, .header-navigation .header-menu-container ul ul.submenu{background:var(--global-palette3);box-shadow:0px 2px 13px 0px rgba(0,0,0,0.1);}.header-navigation .header-menu-container ul ul li.menu-item, .header-menu-container ul.menu > li.kadence-menu-mega-enabled > ul > li.menu-item > a{border-bottom:1px solid rgba(255,255,255,0.1);border-radius:0px 0px 0px 0px;}.header-navigation .header-menu-container ul ul li.menu-item > a{width:200px;padding-top:1em;padding-bottom:1em;color:var(--global-palette8);font-style:normal;font-size:16px;}.header-navigation .header-menu-container ul ul li.menu-item > a:hover{color:var(--global-palette9);background:var(--global-palette4);border-radius:0px 0px 0px 0px;}.header-navigation .header-menu-container ul ul li.menu-item.current-menu-item > a{color:var(--global-palette9);background:var(--global-palette4);border-radius:0px 0px 0px 0px;}.mobile-toggle-open-container .menu-toggle-open, .mobile-toggle-open-container .menu-toggle-open:focus{color:var(--global-palette5);padding:0.4em 0.6em 0.4em 0.6em;font-size:14px;}.mobile-toggle-open-container .menu-toggle-open.menu-toggle-style-bordered{border:1px solid currentColor;}.mobile-toggle-open-container .menu-toggle-open .menu-toggle-icon{font-size:20px;}.mobile-toggle-open-container .menu-toggle-open:hover, .mobile-toggle-open-container .menu-toggle-open:focus-visible{color:var(--global-palette-highlight);}.mobile-navigation ul li{font-size:14px;}.mobile-navigation ul li a{padding-top:1em;padding-bottom:1em;}.mobile-navigation ul li > a, .mobile-navigation ul li.menu-item-has-children > .drawer-nav-drop-wrap{color:var(--global-palette8);}.mobile-navigation ul li.current-menu-item > a, .mobile-navigation ul li.current-menu-item.menu-item-has-children > .drawer-nav-drop-wrap{color:var(--global-palette8);}.mobile-navigation ul li.menu-item-has-children .drawer-nav-drop-wrap, .mobile-navigation ul li:not(.menu-item-has-children) a{border-bottom:1px solid rgba(255,255,255,0.1);}.mobile-navigation:not(.drawer-navigation-parent-toggle-true) ul li.menu-item-has-children .drawer-nav-drop-wrap button{border-left:1px solid rgba(255,255,255,0.1);}#mobile-drawer .drawer-header .drawer-toggle{padding:0.6em 0.15em 0.6em 0.15em;font-size:24px;}.search-toggle-open-container .search-toggle-open{color:var(--global-palette1);margin:2px 3px 0px 0px;}.search-toggle-open-container .search-toggle-open.search-toggle-style-bordered{border:1px solid currentColor;}.search-toggle-open-container .search-toggle-open .search-toggle-icon{font-size:1.2em;}.search-toggle-open-container .search-toggle-open:hover, .search-toggle-open-container .search-toggle-open:focus{color:var(--global-palette2);}#search-drawer .drawer-inner{background:var(--global-palette1);} 104/* Kadence Footer CSS */ 105.site-middle-footer-wrap .site-footer-row-container-inner{background:var(--global-palette3);font-style:normal;color:var(--global-palette9);border-top:1px solid var(--global-palette6);border-bottom:1px solid var(--global-palette6);}
105.site-footer .site-middle-footer-wrap a:where(:not(.button):not(.wp-block-button__link):not(.wp-element-button)){color:var(--global-palette7);}.site-footer .site-middle-footer-wrap a:where(:not(.button):not(.wp-block-button__link):not(.wp-element-button)):hover{color:var(--global-palette9);}.site-middle-footer-inner-wrap{padding-top:88px;padding-bottom:88px;grid-column-gap:30px;grid-row-gap:30px;}.site-middle-footer-inner-wrap .widget{margin-bottom:30px;}.site-middle-footer-inner-wrap .widget-area .widget-title{font-style:normal;color:var(--global-palette9);}.site-middle-footer-inner-wrap .site-footer-section:not(:last-child):after{right:calc(-30px / 2);}.site-top-footer-wrap .site-footer-row-container-inner{background:var(--global-palette3);font-style:normal;color:var(--global-palette9);}.site-footer .site-top-footer-wrap a:not(.button):not(.wp-block-button__link):not(.wp-element-button){color:var(--global-palette7);}.site-top-footer-inner-wrap{padding-top:0px;padding-bottom:0px;grid-column-gap:30px;grid-row-gap:30px;}.site-top-footer-inner-wrap .widget{margin-bottom:30px;}.site-top-footer-inner-wrap .widget-area .widget-title{font-style:normal;color:var(--global-palette9);}.site-top-footer-inner-wrap .site-footer-section:not(:last-child):after{right:calc(-30px / 2);}.site-bottom-footer-wrap .site-footer-row-container-inner{background:var(--global-palette3);font-style:normal;color:var(--global-palette9);border-top:1px none var(--global-palette6);border-bottom:1px none var(--global-palette6);}.site-footer .site-bottom-footer-wrap a:where(:not(.button):not(.wp-block-button__link):not(.wp-element-button)){color:var(--global-palette9);}.site-bottom-footer-inner-wrap{padding-top:30px;padding-bottom:30px;grid-column-gap:30px;}.site-bottom-footer-inner-wrap .widget{margin-bottom:30px;}.site-bottom-footer-inner-wrap .widget-area .widget-title{font-style:normal;color:var(--global-palette9);}.site-bottom-footer-inner-wrap .site-footer-section:not(:last-child):after{border-right:1px none var(--global-palette6);right:calc(-30px / 2);} 106/* Kadence Woo CSS */ 107.woocommerce table.shop_table td.product-quantity{min-width:130px;}.entry-hero.product-hero-section .entry-header{min-height:200px;}.product-title .kadence-breadcrumbs{font-style:normal;font-weight:regular;font-size:18px;line-height:1.65;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";color:var(--global-palette6);}.product-title .single-category{font-weight:700;font-size:32px;line-height:1.5;color:var(--global-palette3);}.wp-site-blocks .product-hero-section .extra-title{font-weight:700;font-size:32px;line-height:1.5;}@media all and (max-width: 767px){.woocommerce ul.products:not(.products-list-view), .wp-site-blocks .wc-block-grid:not(.has-2-columns):not(.has-1-columns) .wc-block-grid__products{grid-template-columns:repeat(2, minmax(0, 1fr));column-gap:0.5rem;grid-row-gap:0.5rem;}}@media all and (max-width: 767px){.entry-hero.product-archive-hero-section .entry-header{min-height:136px;}}.product-archive-title .kadence-breadcrumbs{color:var(--global-palette4);}.product-archive-title .kadence-breadcrumbs a:hover{color:var(--global-palette4);}.woocommerce ul.products li.product h3, .woocommerce ul.products li.product .product-details .woocommerce-loop-product__title, .woocommerce ul.products li.product .product-details .woocommerce-loop-category__title, .wc-block-grid__products .wc-block-grid__product .wc-block-grid__product-title{font-style:normal;color:var(--global-palette6);}.woocommerce ul.products li.product .product-details .price, .wc-block-grid__products .wc-block-grid__product .wc-block-grid__product-price{font-style:normal;color:var(--global-palette6);}.woocommerce ul.products.woo-archive-btn-button .product-action-wrap .button:not(.kb-button), .woocommerce ul.products li.woo-archive-btn-button .button:not(.kb-button), .wc-block-grid__product.woo-archive-btn-button .product-details .wc-block-grid__product-add-to-cart .wp-block-button__link{border:2px none currentColor;box-shadow:0px 0px 0px 0px var(--global-palette9);font-style:normal;}.woocommerce ul.products.woo-archive-btn-button .product-action-wrap .button:not(.kb-button):hover, .woocommerce ul.products li.woo-archive-btn-button .button:not(.kb-button):hover, .wc-block-grid__product.woo-archive-btn-button .product-details .wc-block-grid__product-add-to-cart .wp-block-button__link:hover{box-shadow:0px 0px 0px 0px var(--global-palette9);} 108/* Kadence Pro Header CSS */ 109#filter-drawer.popup-drawer-layout-fullwidth .drawer-content .product-filter-widgets, #filter-drawer.popup-drawer-layout-sidepanel .drawer-inner{max-width:400px;}#filter-drawer.popup-drawer-layout-fullwidth .drawer-content .product-filter-widgets{margin:0 auto;}.filter-toggle-open-container{margin-right:0.5em;}.filter-toggle-open >*:first-child:not(:last-child){margin-right:4px;}.filter-toggle-open{color:inherit;display:flex;align-items:center;background:transparent;box-shadow:none;border-radius:0px;}.filter-toggle-open.filter-toggle-style-default{border:0px;}.filter-toggle-open:hover, .filter-toggle-open:focus{border-color:currentColor;background:transparent;color:inherit;box-shadow:none;}.filter-toggle-open .filter-toggle-icon{display:flex;}.filter-toggle-open >*:first-child:not(:last-child):empty{margin-right:0px;}.filter-toggle-open-container .filter-toggle-open{color:var(--global-palette5);padding:3px 5px 3px 5px;font-size:14px;}.filter-toggle-open-container .filter-toggle-open.filter-toggle-style-bordered{border:1px solid currentColor;}.filter-toggle-open-container .filter-toggle-open .filter-toggle-icon{font-size:20px;}.filter-toggle-open-container .filter-toggle-open:hover, .filter-toggle-open-container .filter-toggle-open:focus{color:var(--global-palette-highlight);}#filter-drawer .drawer-inner{background:var(--global-palette9);}#filter-drawer .drawer-header .drawer-toggle, #filter-drawer .drawer-header .drawer-toggle:focus{color:var(--global-palette5);}#filter-drawer .drawer-header .drawer-toggle:hover, #filter-drawer .drawer-header .drawer-toggle:focus:hover{color:var(--global-palette3);}#filter-drawer .header-filter-2style-normal a:not(.button){text-decoration:underline;}#filter-drawer .header-filter-2style-plain a:not(.button){text-decoration:none;}#filter-drawer .drawer-inner .product-filter-widgets .widget-title{color:var(--global-palette3);}#filter-drawer .drawer-inner .product-filter-widgets{color:var(--global-palette4);}#filter-drawer .drawer-inner .product-filter-widgets a, #filter-drawer .drawer-inner .product-filter-widgets .drawer-sub-toggle{color:var(--global-palette1);}#filter-drawer .drawer-inner .product-filter-widgets a:hover, #filter-drawer .drawer-inner .product-filter-widgets .drawer-sub-toggle:hover{color:var(--global-palette2);}.kadence-shop-active-filters{display:flex;flex-wrap:wrap;}
109.kadence-clear-filters-container a{text-decoration:none;background:var(--global-palette7);color:var(--global-palette5);padding:.6em;font-size:80%;transition:all 0.3s ease-in-out;-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;}.kadence-clear-filters-container ul{margin:0px;padding:0px;border:0px;list-style:none outside;overflow:hidden;zoom:1;}.kadence-clear-filters-container ul li{float:left;padding:0 0 1px 1px;list-style:none;}.kadence-clear-filters-container a:hover{background:var(--global-palette9);color:var(--global-palette3);} 110/*# sourceURL=kadence-global-inline-css */ 111</style> 112<link rel='stylesheet' id='kadence-header-css' href='https://roco.pk/wp-content/themes/kadence/assets/css/header.min.css?ver=1.5.2' media='all' /> 113<link rel='stylesheet' id='kadence-content-css' href='https://roco.pk/wp-content/themes/kadence/assets/css/content.min.css?ver=1.5.2' media='all' /> 114<link rel='stylesheet' id='kadence-woocommerce-css' href='https://roco.pk/wp-content/themes/kadence/assets/css/woocommerce.min.css?ver=1.5.2' media='all' /> 115<link rel='stylesheet' id='kadence-footer-css' href='https://roco.pk/wp-content/themes/kadence/assets/css/footer.min.css?ver=1.5.2' media='all' /> 116<link rel='stylesheet' id='photoswipe-css' href='https://roco.pk/wp-content/plugins/woocommerce/assets/css/photoswipe/photoswipe.min.css?ver=11.1.2' media='all' /> 117<link rel='stylesheet' id='photoswipe-default-skin-css' href='https://roco.pk/wp-content/plugins/woocommerce/assets/css/photoswipe/default-skin/default-skin.min.css?ver=11.1.2' media='all' /> 118<link rel='stylesheet' id='kadence-rankmath-css' href='https://roco.pk/wp-content/themes/kadence/assets/css/rankmath.min.css?ver=1.5.2' media='all' /> 119<link rel='stylesheet' id='kadence_wootemplate-css' href='https://roco.pk/wp-content/plugins/kadence-shop-kit/lib/templates/assets/css/kadence-product-template.css?ver=3.0.5' media='all' /> 120<style id="kadence-blocks-global-variables-inline-css"> 121:root {--global-kb-font-size-sm:clamp(0.8rem, 0.73rem + 0.217vw, 0.9rem);--global-kb-font-size-md:clamp(1.1rem, 0.995rem + 0.326vw, 1.25rem);--global-kb-font-size-lg:clamp(1.75rem, 1.576rem + 0.543vw, 2rem);--global-kb-font-size-xl:clamp(2.25rem, 1.728rem + 1.63vw, 3rem);--global-kb-font-size-xxl:clamp(2.5rem, 1.456rem + 3.26vw, 4rem);--global-kb-font-size-xxxl:clamp(2.75rem, 0.489rem + 7.065vw, 6rem);} 122/*# sourceURL=kadence-blocks-global-variables-inline-css */ 123</style> 124<style id="kadence_blocks_css-inline-css"> 125.kb-row-layout-id1003042_851623-12 > .kt-row-column-wrap{row-gap:var(--global-kb-gap-none, 0rem );padding-top:10px;padding-right:0px;padding-bottom:15px;padding-left:0px;grid-template-columns:minmax(0, 1fr);}.kb-row-layout-id1003042_851623-12{border-top:0px solid rgba(32,32,32,0.44);border-right:0px solid rgba(32,32,32,0.44);border-bottom:0px solid rgba(32,32,32,0.44);border-left:0px solid rgba(32,32,32,0.44);}@media all and (max-width: 1024px){.kb-row-layout-id1003042_851623-12{border-top:0px solid rgba(32,32,32,0.44);border-right:0px solid rgba(32,32,32,0.44);border-bottom:0px solid rgba(32,32,32,0.44);border-left:0px solid rgba(32,32,32,0.44);}}@media all and (max-width: 767px){.kb-row-layout-id1003042_851623-12 > .kt-row-column-wrap{row-gap:var(--global-kb-gap-none, 0rem );padding-top:5px;padding-bottom:0px;grid-template-columns:minmax(0, 1fr);}.kb-row-layout-id1003042_851623-12{border-top:0px solid rgba(32,32,32,0.44);border-right:0px solid rgba(32,32,32,0.44);border-bottom:0px solid rgba(32,32,32,0.44);border-left:0px solid rgba(32,32,32,0.44);}}.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{display:flex;}.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{flex-direction:column;justify-content:flex-end;}.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col > .aligncenter{width:100%;}.kt-row-column-wrap > .kadence-column1003042_f6d56d-2f{align-self:flex-end;}.kt-inner-column-height-full:not(.kt-has-1-columns) > .wp-block-kadence-column.kadence-column1003042_f6d56d-2f{align-self:auto;}.kt-inner-column-height-full:not(.kt-has-1-columns) >
125 .wp-block-kadence-column.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{flex-direction:column;justify-content:flex-end;}@media all and (max-width: 1024px){.kt-row-column-wrap > .kadence-column1003042_f6d56d-2f{align-self:flex-end;}}@media all and (max-width: 1024px){.kt-inner-column-height-full:not(.kt-has-1-columns) > .wp-block-kadence-column.kadence-column1003042_f6d56d-2f{align-self:auto;}}@media all and (max-width: 1024px){.kt-inner-column-height-full:not(.kt-has-1-columns) > .wp-block-kadence-column.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{flex-direction:column;justify-content:flex-end;}}@media all and (max-width: 1024px){.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{flex-direction:column;justify-content:flex-end;}}@media all and (max-width: 767px){.kt-row-column-wrap > .kadence-column1003042_f6d56d-2f{align-self:flex-end;}.kt-inner-column-height-full:not(.kt-has-1-columns) > .wp-block-kadence-column.kadence-column1003042_f6d56d-2f{align-self:auto;}.kt-inner-column-height-full:not(.kt-has-1-columns) > .wp-block-kadence-column.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{flex-direction:column;justify-content:flex-end;}.kadence-column1003042_f6d56d-2f > .kt-inside-inner-col{flex-direction:column;justify-content:flex-end;}}.kb-row-layout-id1816_b6da5b-1c > .kt-row-column-wrap{max-width:var( --global-content-width, 1500px );padding-left:var(--global-content-edge-padding);padding-right:var(--global-content-edge-padding);padding-top:var( --global-kb-row-default-top, var(--global-kb-spacing-sm, 1.5rem) );padding-bottom:var( --global-kb-row-default-bottom, var(--global-kb-spacing-sm, 1.5rem) );grid-template-columns:minmax(0, 1fr);}@media all and (max-width: 767px){.kb-row-layout-id1816_b6da5b-1c > .kt-row-column-wrap{padding-top:20px;padding-right:20px;padding-bottom:20px;padding-left:20px;grid-template-columns:minmax(0, 1fr);}}.kadence-column1816_310623-06 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column1816_310623-06 > .kt-inside-inner-col{flex-direction:column;}.kadence-column1816_310623-06 > .kt-inside-inner-col > .aligncenter{width:100%;}@media all and (max-width: 1024px){.kadence-column1816_310623-06 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column1816_310623-06 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}.kb-posts-id-1816_671d45-48 .entry.loop-entry .entry-header .entry-title{font-size:var(--global-kb-font-size-md, 1.25rem);}.kb-posts-id-1816_671d45-48 .loop-entry{background:transparent;box-shadow:none;}.kb-posts-id-1816_671d45-48 .loop-entry > .entry-content-wrap{padding:0px;}.kb-posts-id-1816_671d45-48 .loop-entry .post-thumbnail{margin-bottom:1em;}.kb-posts-id-1816_671d45-48 .kb-post-list-item{display:grid;} 126/*# sourceURL=kadence_blocks_css-inline-css */ 127</style>
128<script id="jquery-core-js" src="https://roco.pk/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 128
128
129<script id="jquery-migrate-js" src="https://roco.pk/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 129
129
130<script data-wp-strategy="defer" defer id="wc-jquery-blockui-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.11.1.2"></script>
vendor: 1 bytes, line 130
130
131<script id="wc-add-to-cart-js-extra"> 132var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https://roco.pk/checkout/","is_cart":"","cart_redirect_after_add":"no"}; 133//# sourceURL=wc-add-to-cart-js-extra 134</script>
vendor: 1 bytes, line 134
134
135<script data-wp-strategy="defer" defer id="wc-add-to-cart-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 135
135
136<script data-wp-strategy="defer" defer id="wc-js-cookie-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.11.1.2"></script>
vendor: 1 bytes, line 136
136
137<script id="woocommerce-js-extra"> 138var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"}; 139//# sourceURL=woocommerce-js-extra 140</script>
vendor: 1 bytes, line 140
140
141<script data-wp-strategy="defer" defer id="woocommerce-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 141
141
142<script data-wp-strategy="defer" defer id="wc-photoswipe-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/photoswipe/photoswipe.min.js?ver=4.1.1-wc.11.1.2"></script>
vendor: 1 bytes, line 142
142
143<script data-wp-strategy="defer" defer id="wc-photoswipe-ui-default-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/photoswipe/photoswipe-ui-default.min.js?ver=4.1.1-wc.11.1.2"></script>
143 144<link rel="https://api.w.org/" href="https://roco.pk/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://roco.pk/wp-json/wp/v2/pages/1816" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://roco.pk/xmlrpc.php?rsd" /> 145<meta name="generator" content="WordPress 7.1.2" /> 146<link rel='shortlink' href='https://roco.pk/?p=1816' /> 147
147<script type="text/javascript"> 148 (function(c, l, a, r, i, t, y) { 149 c[a] = c[a] || function() { 150 (c[a].q = c[a].q || []).push(arguments) 151 }; 152 t = l.createElement(r); 153 t.async = 1; 154 t.src = "https://www.clarity.ms/tag/" + i + "?ref=wordpress"; 155 y = l.getElementsByTagName(r)[0]; 156 y.parentNode.insertBefore(t, y); 157 })(window, document, "clarity", "script", "xlxsmw8izx"); 158 </script>
158 159 <style> 160 .pay-section .option { 161 position: relative; 162 } 163 164 .pay-section .recommended-pill { 165 position: absolute; 166 top: 0; 167 left: 50%; 168 z-index: 5; 169 170 display: inline-flex; 171 align-items: center; 172 justify-content: center; 173 width: max-content; 174 margin: 0 !important; 175 padding: 6px 9px; 176 177 background: #3b1e32; 178 color: #ffffff !important; 179 border-radius: 999px; 180 181 font-size: 9px; 182 font-weight: 700; 183 line-height: 1; 184 letter-spacing: 0.45px; 185 text-transform: uppercase; 186 white-space: nowrap; 187 188 transform: translate(-50%, -50%); 189 } 190 191 :root{ 192 --ink:#121212; 193 --ink-soft:rgba(18,18,18,.68); 194 --muted:#6b6b6b; 195 --border:rgba(18,18,18,.14); 196 } 197 198.pay-section { 199 width: 100%; 200 margin-bottom: 10px !important; 201 margin-top: 20px !important; 202 203 border-top: 1px solid #d9d9d9; 204 padding-top: 20px; 205} 206 .section-head{ 207 display:flex; 208 justify-content:space-between; 209 align-items:center; 210 padding-bottom:5px; 211 margin-bottom:10px; 212 border-radius: 10px; 213 } 214 215 .label-caps{ 216 font-size:12px; 217 font-weight:500; 218 text-transform: uppercase; 219 } 220 221 .protected{ 222 color:#047018; 223 display:inline-flex; 224 align-items:center; 225 gap:6px; 226 } 227 228 .options{ 229 display:grid; 230 grid-template-columns:1fr 1fr; 231 gap:16px; 232 margin-bottom:20px; 233 } 234 235 .option{ 236 position:relative; 237 background: #fff; 238 border:1px solid var(--border); 239 border-radius:0px; 240 padding:15px 15px; 241 cursor:pointer; 242 transition:border-color .2s; 243 } 244 245 .option.active{ 246 border-color:#3b1e32; 247 border-width:1.5px; 248 } 249 250 .option .check{ 251 position:absolute; 252 top:18px; 253 right:20px; 254 width:18px; 255 height:18px; 256 display:none; 257 align-items:center; 258 justify-content:center; 259 } 260 261 .option.active .check{ 262 display:flex; 263 } 264 265 .option .check::before{ 266 content:""; 267 width:14px; 268 height:8px; 269 border-left:2px solid var(--ink); 270 border-bottom:2px solid var(--ink); 271 transform:rotate(-45deg) translate(2px,-2px); 272 } 273 274 .option .tag{ 275 font-size:.7rem; 276 font-weight:600; 277 letter-spacing:.16em; 278 text-transform:uppercase; 279 color:var(--ink-soft); 280 margin-bottom:5px; 281 } 282 283 .option.dim .tag, 284 .option.dim .price{ 285 color:var(--muted); 286 } 287 288 .option .price{ 289 font-family:'Fraunces',serif; 290 font-size:18px; 291 font-weight:500; 292 margin-bottom:6px; 293 letter-spacing:-.01em; 294 } 295 296 .option .desc{ 297 font-size:12px; 298 color:var(--ink-soft); 299 line-height:1.2; 300 } 301 302 .option.dim .desc{ 303 color:var(--muted); 304 line-height:1.2; 305 } 306 307 .timeline-card{ 308 border:1px solid var(--border); 309 border-radius:0px; 310 padding:10px; 311 background:#fff; 312 } 313 314 .timeline{ 315 position:relative; 316 display:grid; 317 grid-template-columns:repeat(4,1fr); 318 gap:8px; 319 } 320 321 .timeline::before{ 322 content:""; 323 position:absolute; 324 top:9px; 325 left:8%; 326 right:8%; 327 height:1px; 328 background:var(--border); 329 z-index:0; 330 } 331 332 .step{ 333 text-align:center; 334 position:relative; 335 z-index:1; 336 } 337 338 .dot{ 339 width:18px; 340 height:18px; 341 border-radius:50%; 342 margin:0 auto 14px; 343 background:#3b1e32; 344 border:2px solid var(--ink); 345 color:#fff; 346 display:flex; 347 align-items:center; 348 justify-content:center; 349 font-size:10px; 350 font-weight:600; 351 line-height:1; 352 } 353 354 .dot.empty{ 355 background:#F6F2EA; 356 color:var(--ink); 357 } 358 359 .dot.burgundy{ 360 background:#3b1e32; 361 border-color:#3b1e32; 362 color:#fff; 363 } 364 365 .step .step-title{ 366 font-size:12px; 367 font-weight:500; 368 letter-spacing:.16em; 369 text-transform:uppercase; 370 margin-bottom:6px; 371 line-height:1.2; 372 } 373 374 .step.accent .step-title{ 375 color:#3b1e32; 376 } 377 378 .step .step-desc{ 379 font-size:11px; 380 color:var(--ink-soft); 381 line-height:1.2; 382 } 383 384 .footnote{ 385 margin-top:18px; 386 font-size:12px; 387 font-weight:600; 388 color:var(--ink-soft); 389 display:flex; 390 align-items:center; 391 gap:8px; 392 } 393 394 .footnote::before{ 395 content:"i"; 396 display:inline-flex; 397 align-items:center; 398 justify-content:center; 399 width:14px; 400 height:14px; 401 border-radius:50%; 402 border:1px solid var(--ink-soft); 403 font-size:.65rem; 404 font-style:italic; 405 text-transform:none; 406 letter-spacing:0; 407 } 408 409 .dv40-summary-current-price{ 410 display:block; 411 text-align:right; 412 margin-bottom:5px; 413 } 414 415 .dv40-future-payment-badge{ 416 display:inline-block; 417 background:#ddd7cc; 418 color:#222; 419 padding:3px 7px; 420 font-size:12px; 421 line-height:1.2; 422 white-space:nowrap; 423 } 424 425 @media (max-width:620px){ 426 .options{ 427 grid-template-columns:1fr 1fr; 428 } 429 430 .timeline{ 431 grid-template-columns:repeat(2,1fr); 432 row-gap:24px; 433 } 434 435 .timeline::before{ 436 display:none; 437 } 438 439 .footnote{ 440 display:none !important; 441 } 442 443 .dv40-summary-current-price{ 444 text-align:left; 445 } 446 447 .dv40-future-payment-badge{ 448 font-size:11px; 449 white-space:normal; 450 } 451 } 452 453 454</style> 455 <style> 456 .maha-luxe-thankyou { 457 max-width: 1240px; 458 margin: 0 auto; 459 padding: 20px; 460 color: #2c2a29; 461 } 462 463 .maha-luxe-hero { 464 text-align: center; 465 max-width: 620px; 466 margin: 0 auto 56px; 467 } 468 469 .maha-luxe-check { 470 width: 66px; 471 height: 66px; 472 border-radius: 50%; 473 border: 1px solid #845976; 474 background: #f9f1e8; 475 display: flex; 476 align-items: center; 477 justify-content: center; 478 margin: 0 auto 28px; 479 } 480 481 .maha-luxe-check span { 482 font-size: 28px; 483 line-height: 1; 484 color: #845976; 485 font-weight: 300; 486 } 487 488 .maha-luxe-kicker, 489 .maha-luxe-order-number, 490 .maha-luxe-summary-head span, 491 .maha-luxe-total-row span { 492 font-size: 12px; 493 line-height: 1.4; 494 text-transform: uppercase; 495 letter-spacing: 6px; 496 color: #845976; 497 font-weight: 400; 498 } 499 500 .maha-luxe-kicker { 501 margin-bottom: 18px; 502 } 503 504 .maha-luxe-hero h1 { 505 margin: 0 0 18px; 506 font-family: Georgia, "Times New Roman", serif; 507 font-size: clamp(42px, 6vw, 66px); 508 line-height: 1.05; 509 font-weight: 400; 510 letter-spacing: -1.5px; 511 color: #292827; 512 } 513 514 .maha-luxe-hero p { 515 margin: 0 auto 24px; 516 max-width: 560px; 517 font-size: 16px; 518 line-height: 1.7; 519 color: #5f6368; 520 } 521 522 .maha-luxe-order-number { 523 margin-top: 8px; 524 } 525
526 .maha-luxe-bank-details { 527 margin: 0 0 30px; 528 border: 1px solid #e5ddd5; 529 background: #f7f1e8; 530 padding: 18px 24px 0; 531 color: #2c2a29; 532 } 533 534 .maha-luxe-bank-details h2 { 535 margin: 0 0 16px; 536 font-family: Arial, sans-serif; 537 font-size: 15px; 538 line-height: 1.4; 539 font-weight: 700; 540 color: #2c2a29; 541 } 542 543 .maha-luxe-bank-row { 544 display: grid; 545 grid-template-columns: 120px 1fr 28px; 546 align-items: center; 547 gap: 4px; 548 border-top: 1px solid #ddd0c0; 549 padding: 14px 0; 550 } 551 552 .maha-luxe-bank-row span { 553 font-family: Arial, sans-serif; 554 font-size: 13px; 555 line-height: 1.4; 556 color: #6f665f; 557 } 558 559 .maha-luxe-bank-row strong { 560 font-family: Arial, sans-serif; 561 font-size: 13px; 562 line-height: 1.4; 563 font-weight: 600; 564 color: #2c2a29; 565 word-break: break-word; 566 } 567 568 .maha-luxe-copy-btn { 569 width: 24px; 570 height: 24px; 571 border: 0; 572 background: transparent; 573 cursor: pointer; 574 color: #6f665f; 575 padding: 0; 576 display: flex; 577 align-items: center; 578 justify-content: center; 579 font-size: 14px; 580 line-height: 1; 581 } 582 583 .maha-luxe-copy-btn svg { 584 width: 15px; 585 height: 15px; 586 display: block; 587 fill: currentColor; 588 } 589 590 .maha-luxe-copy-btn:hover { 591 color: #2c2a29; 592 } 593 594 .maha-luxe-summary { 595 border: 1px solid #e5ddd5; 596 background: #ffffff; 597 padding: 38px 36px 34px; 598 } 599 600 .maha-luxe-summary-head { 601 display: flex; 602 align-items: center; 603 justify-content: space-between; 604 gap: 24px; 605 margin-bottom: 34px; 606 } 607 608 .maha-luxe-summary-head h2 { 609 margin: 0; 610 font-family: Georgia, "Times New Roman", serif; 611 font-size: 27px; 612 line-height: 1.2; 613 font-weight: 400; 614 color: #1f1c1a; 615 } 616 617 .maha-luxe-items { 618 display: flex; 619 flex-direction: column; 620 gap: 0; 621 } 622 623 .maha-luxe-item { 624 display: flex; 625 align-items: center; 626 justify-content: space-between; 627 gap: 28px; 628 padding: 0 0 24px; 629 } 630 631 .maha-luxe-product-left { 632 display: flex; 633 align-items: center; 634 gap: 16px; 635 min-width: 0; 636 } 637 638 .maha-luxe-product-image { 639 width: 64px; 640 height: 82px; 641 background: #f6f1ec; 642 flex: 0 0 64px; 643 overflow: hidden; 644 } 645 646 .maha-luxe-product-image img { 647 width: 100%; 648 height: 100%; 649 object-fit: cover; 650 display: block; 651 } 652 653 .maha-luxe-product-info h3 { 654 margin: 0 0 4px; 655 font-family: Georgia, "Times New Roman", serif; 656 font-size: 17px; 657 line-height: 1.3; 658 font-weight: 400; 659 color: #301f17; 660 } 661 662 .maha-luxe-product-info p { 663 margin: 0; 664 font-size: 13px; 665 line-height: 1.5; 666 color: #5d6570; 667 } 668 669 .maha-luxe-product-price { 670 font-family: Georgia, "Times New Roman", serif; 671 font-size: 14px; 672 color: #6c4d37; 673 white-space: nowrap; 674 display: flex; 675 flex-direction: column; 676 align-items: flex-end; 677 gap: 6px; 678 } 679 680 .maha-luxe-paid-price { 681 display: block; 682 } 683 684 .maha-luxe-future-payment-badge { 685 display: inline-block; 686 background: #845976; 687 color: #fff; 688 padding: 3px 7px; 689 font-family: Arial, sans-serif; 690 font-size: 12px; 691 line-height: 1.2; 692 white-space: nowrap; 693 } 694 695 .maha-luxe-total-row { 696 border-top: 1px solid #e5ddd5; 697 padding-top: 28px; 698 margin-top: 0; 699 display: flex; 700 align-items: center; 701 justify-content: space-between; 702 gap: 24px; 703 } 704 705 .maha-luxe-total-row strong { 706 font-family: Georgia, "Times New Roman", serif; 707 font-size: 26px; 708 line-height: 1; 709 font-weight: 400; 710 color: #1f1c1a; 711 } 712 713 .maha-luxe-gateway-output { 714 margin-top: 30px; 715 border: 1px solid #e5ddd5; 716 background: #ffffff; 717 padding: 28px 32px; 718 } 719 720 .maha-thankyou-error { 721 text-align: center; 722 padding: 30px; 723 border: 1px solid #ead7d7; 724 background: #fff7f7; 725 color: #7f1d1d; 726 } 727 728 /* Compact mobile thank-you page + clean mobile order summary */ 729@media (max-width: 768px) { 730 .maha-luxe-thankyou { 731 padding: 10px 12px; 732 } 733 734 .maha-luxe-hero { 735 margin: 0 auto 12px; 736 max-width: 100%; 737 } 738 739 .maha-luxe-check { 740 width: 42px; 741 height: 42px; 742 margin-bottom: 10px; 743 } 744 745 .maha-luxe-check span { 746 font-size: 21px; 747 } 748 749 .maha-luxe-kicker { 750 margin-bottom: 7px; 751 } 752 753 .maha-luxe-kicker, 754 .maha-luxe-order-number, 755 .maha-luxe-summary-head span,
756 .maha-luxe-total-row span { 757 font-size: 9px; 758 letter-spacing: 2.5px; 759 } 760 761 .maha-luxe-hero h1 { 762 margin: 0 0 8px; 763 font-size: 28px; 764 line-height: 1.05; 765 letter-spacing: -0.5px; 766 } 767 768 .maha-luxe-hero p { 769 margin: 0 auto 8px; 770 font-size: 12px; 771 line-height: 1.45; 772 max-width: 100%; 773 } 774 775 .maha-luxe-order-number { 776 margin-top: 4px; 777 } 778 779 .maha-luxe-bank-details { 780 margin: 0 0 14px; 781 padding: 10px 14px 0; 782 } 783 784 .maha-luxe-bank-details h2 { 785 margin: 0 0 8px; 786 font-size: 13px; 787 line-height: 1.2; 788 } 789 790 .maha-luxe-bank-row { 791 grid-template-columns: 92px 1fr 22px; 792 padding: 8px 0; 793 gap: 4px; 794 } 795 796 .maha-luxe-bank-row span, 797 .maha-luxe-bank-row strong { 798 font-size: 11px; 799 line-height: 1.25; 800 } 801 802 .maha-luxe-copy-btn { 803 width: 20px; 804 height: 20px; 805 } 806 807 .maha-luxe-copy-btn svg { 808 width: 13px; 809 height: 13px; 810 } 811 812 .maha-luxe-summary { 813 padding: 18px 14px; 814 } 815 816 .maha-luxe-summary-head { 817 display: flex; 818 align-items: center; 819 justify-content: space-between; 820 gap: 12px; 821 margin-bottom: 18px; 822 } 823 824 .maha-luxe-summary-head h2 { 825 font-size: 20px; 826 line-height: 1.2; 827 } 828 829 .maha-luxe-summary-head span { 830 white-space: nowrap; 831 font-size: 9px; 832 letter-spacing: 3px; 833 } 834 835 .maha-luxe-item { 836 display: grid; 837 grid-template-columns: minmax(0, 1fr) auto; 838 align-items: start; 839 gap: 12px; 840 padding: 0 0 18px; 841 } 842 843 .maha-luxe-product-left { 844 display: grid; 845 grid-template-columns: 48px minmax(0, 1fr); 846 align-items: start; 847 gap: 10px; 848 min-width: 0; 849 } 850 851 .maha-luxe-product-image { 852 width: 48px; 853 height: 62px; 854 flex: none; 855 } 856 857 .maha-luxe-product-info { 858 min-width: 0; 859 } 860 861 .maha-luxe-product-info h3 { 862 margin: 0 0 4px; 863 font-size: 15px; 864 line-height: 1.18; 865 max-width: 145px; 866 } 867 868 .maha-luxe-product-info p { 869 font-size: 11px; 870 line-height: 1.3; 871 } 872 873 .maha-luxe-product-price { 874 margin: 0 !important; 875 align-items: flex-end; 876 text-align: right; 877 font-size: 11px; 878 line-height: 1.2; 879 gap: 6px; 880 min-width: 108px; 881 white-space: nowrap; 882 } 883 884 .maha-luxe-paid-price { 885 font-size: 11px; 886 line-height: 1.2; 887 } 888 889 .maha-luxe-future-payment-badge { 890 font-size: 10px; 891 line-height: 1.2; 892 padding: 4px 7px; 893 white-space: nowrap; 894 } 895 896 .maha-luxe-total-row { 897 padding-top: 16px; 898 gap: 12px; 899 align-items: center; 900 } 901 902 .maha-luxe-total-row span { 903 font-size: 9px; 904 letter-spacing: 3px; 905 } 906 907 .maha-luxe-total-row strong { 908 font-size: 12px; 909 letter-spacing: 3px; 910 white-space: nowrap; 911 } 912} 913 914@media (max-width: 520px) { 915 .maha-luxe-bank-row { 916 grid-template-columns: 88px 1fr 20px; 917 gap: 4px; 918 } 919 920 .maha-luxe-bank-row span { 921 grid-column: auto; 922 } 923 924 .maha-luxe-bank-row strong { 925 font-size: 10.5px; 926 } 927 928 .maha-luxe-summary { 929 padding: 16px 12px; 930 } 931 932 .maha-luxe-summary-head { 933 flex-direction: row; 934 align-items: center; 935 margin-bottom: 16px; 936 } 937 938 .maha-luxe-item { 939 grid-template-columns: minmax(0, 1fr) auto; 940 gap: 8px; 941 } 942 943 .maha-luxe-product-left { 944 grid-template-columns: 46px minmax(0, 1fr); 945 gap: 9px; 946 } 947 948 .maha-luxe-product-image { 949 width: 46px; 950 height: 58px; 951 } 952 953 .maha-luxe-product-info h3 { 954 font-size: 14px; 955 line-height: 1.15; 956 max-width: 128px; 957 } 958 959 .maha-luxe-product-price { 960 margin-left: 0 !important; 961 min-width: 104px; 962 font-size: 10.5px; 963 align-items: flex-end; 964 text-align: right; 965 } 966 967 .maha-luxe-future-payment-badge { 968 font-size: 9.5px; 969 padding: 4px 6px; 970 } 971} 972 973@media (max-width: 390px) { 974 .maha-luxe-summary { 975 padding: 15px 10px; 976 } 977 978 .maha-luxe-summary-head h2 { 979 font-size: 19px; 980 } 981 982 .maha-luxe-summary-head span { 983 font-size: 8px; 984 letter-spacing: 2.5px; 985 } 986 987 .maha-luxe-item { 988 grid-template-columns: 1fr; 989 gap: 8px; 990 } 991 992 .maha-luxe-product-info h3 { 993 max-width: none; 994 } 995 996 .maha-luxe-product-price { 997 margin-left: 55px !important; 998 min-width: 0; 999 align-items: flex-start; 1000 text-align: left; 1001 } 1002 1003 .maha-luxe-future-payment-badge { 1004 white-space: normal; 1005 } 1006} 1007 .maha-luxe-gateway-output { 1008 display: none !important; 1009 } 1010 1011 </style> 1012 <style> 1013 1014.roco-shortcode-price, 1015.roco-shortcode-price .amount, 1016.roco-shortcode-price bdi, 1017.roco-shortcode-price .woocommerce-Price-amount, 1018.roco-shortcode-price .woocommerce-Price-currencySymbol{ 1019 font-size:25px !important; 1020 line-height:1.2 !important; 1021 font-weight:500 !important; 1022 color:#3b1e32!important; 1023 letter-spacing:0 !important; 1024} 1025 1026.roco-shortcode-price{ 1027 margin:12px 0 20px; 1028} 1029 1030.roco-shortcode-price del{ 1031 opacity:.55; 1032 margin-right:8px; 1033} 1034 1035.roco-shortcode-price ins{ 1036 text-decoration:none; 1037} 1038 1039@media(max-width:768px){ 1040 1041.roco-shortcode-price, 1042.roco-shortcode-price .amount, 1043.roco-shortcode-price bdi, 1044.roco-shortcode-price .woocommerce-Price-amount, 1045.roco-shortcode-price .woocommerce-Price-currencySymbol{ 1046 font-size:18px !important; 1047} 1048 1049} 1050 1051</style> 1052 <style> 1053 .roco-whatsapp-question-bar { 1054 width: fit-content; 1055 min-height: 36px; 1056 padding: 8px 18px; 1057 1058 display: flex; 1059 align-items: center; 1060 justify-content: center; 1061 gap: 8px; 1062 1063 margin-left: auto; 1064 margin-right: auto; 1065 1066 color: #172033 !important; 1067 1068 font-family: Arial, Helvetica, sans-serif; 1069 font-size: 13px; 1070 font-weight: 400; 1071 line-height: 1.3; 1072 1073 text-decoration: underline !important; 1074 border: 0; 1075 border-radius: 0; 1076 box-shadow: none; 1077 1078 transition: 1079 background-color 0.2s ease, 1080 transform 0.2s ease; 1081} 1082 1083 .roco-whatsapp-question-bar:hover { 1084 color: #172033 !important; 1085 text-decoration: none !important; 1086 transform: translateY(-1px); 1087 } 1088 1089 .roco-whatsapp-question-icon { 1090 width: 17px; 1091 height: 17px; 1092 display: block; 1093 flex: 0 0 17px; 1094 fill: #25d366; 1095 } 1096 1097 .roco-whatsapp-question-bar span { 1098 display: block; 1099 margin: 0; 1100 padding: 0; 1101 white-space: nowrap; 1102 } 1103 1104 @media (max-width: 480px) { 1105 .roco-whatsapp-question-bar { 1106 max-width: 100%; 1107 padding: 8px 14px; 1108 font-size: 12px; 1109 } 1110 1111 .roco-whatsapp-question-bar span { 1112 white-space: normal; 1113 } 1114 } 1115 @media screen and (max-width: 767px) { 1116 1117 body.single-product form.cart .single_add_to_cart_button, 1118 body.single-product form.cart .single_add_to_cart_button .roco-cart-action, 1119 body.single-product form.cart .single_add_to_cart_button .roco-cart-price { 1120 font-size: 12px !important; 1121 } 1122} 1123 1124 1125 .byo { 1126 1127 color: #2b2622; 1128} 1129 1130/* Main accordion */ 1131.byo__panel { 1132 border-top: 1px solid #e2ddd6; 1133 border-bottom: 1px solid #e2ddd6; 1134} 1135 1136/* Accordion header */ 1137.byo__head { 1138 display: flex; 1139 align-items: center; 1140 width: 100%; 1141 gap: 12px; 1142 padding: 16px 0; 1143 cursor: pointer; 1144 list-style: none; 1145} 1146 1147/* Remove default browser dropdown marker */ 1148.byo__head::-webkit-details-marker { 1149 display: none; 1150} 1151 1152.byo__head::marker { 1153 display: none; 1154 content: ""; 1155} 1156 1157/* Accordion title */ 1158.byo__title { 1159 order: 1; 1160 flex: 1; 1161 min-width: 0; 1162 font-size: 12px; 1163 font-weight: 600; 1164 letter-spacing: 0.18em; 1165 text-transform: uppercase; 1166} 1167 1168/* Item count */ 1169.byo__count { 1170 order: 2; 1171 flex-shrink: 0; 1172 margin-left: 0; 1173 font-size: 12px; 1174 color: #8a827a; 1175} 1176 1177/* Accordion arrow */ 1178.byo__chev { 1179 order: 3; 1180 flex: 0 0 auto; 1181 width: 8px; 1182 height: 8px; 1183 margin-left: 0; 1184 margin-right: 3px; 1185 border-right: 1.5px solid #8a827a; 1186 border-bottom: 1.5px solid #8a827a; 1187 transform: rotate(45deg) translateY(-2px); 1188 transition: transform 0.2s ease; 1189} 1190 1191/* Rotate arrow when accordion is open */ 1192.byo__panel[open] .byo__chev { 1193 transform: rotate(-135deg) translateY(-2px); 1194} 1195 1196/* Notes grid */ 1197.byo__grid { 1198 display: grid; 1199 grid-template-columns: repeat(2, minmax(0, 1fr)); 1200 gap: 18px 30px; 1201 margin: 0 0 20px; 1202 padding: 0; 1203 list-style: none; 1204} 1205 1206/* Individual note */ 1207.byo__grid li { 1208 display: flex; 1209 align-items: flex-start; 1210 gap: 10px; 1211 min-width: 0; 1212 font-size: 12px; 1213 line-height: 1.65; 1214 color: #6f6862; 1215} 1216 1217.byo__grid strong { 1218 color: #2b2622; 1219 font-weight: 600; 1220} 1221 1222/* SVG icon container */ 1223.byo__icon { 1224 display: flex; 1225 flex: 0 0 18px; 1226 align-items: center; 1227 justify-content: center; 1228 width: 18px; 1229 height: 18px; 1230 margin-top: 2px; 1231 color: #3b1e32; 1232} 1233 1234/* SVG icon styling */ 1235.byo__icon svg { 1236 display: block; 1237 width: 18px; 1238 height: 18px; 1239 overflow: visible; 1240 fill: none; 1241 stroke: currentColor; 1242 stroke-width: 1.5; 1243 stroke-linecap: round; 1244 stroke-linejoin: round; 1245} 1246 1247/* Text beside icon */ 1248.byo__text { 1249 display: block; 1250 min-width: 0; 1251 flex: 1; 1252} 1253 1254/* Mobile */ 1255@media (max-width: 640px) { 1256 .byo__grid { 1257 grid-template-columns: 1fr; 1258 gap: 16px; 1259 } 1260 1261 .byo__head { 1262 padding: 14px 0; 1263 } 1264 1265 .byo__count { 1266 display: none; 1267 } 1268 1269 .byo__chev { 1270 margin-left: auto; 1271 } 1272} 1273 </style> 1274 <noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript> 1275
1275<script id='nitro-generic' nitro-exclude>(()=>{if(window.NitroPack=window.NitroPack||{coreVersion:"na",isCounted:!1},!window.NitroPack.isCounted){window.NitroPack.isCounted=!0;const e=()=>{let e=performance?.getEntriesByType?.("navigation")?.[0];return document.prerendering||e?.activationStart>0?"_prr":"navigational-prefetch"===e?.deliveryType||void 0===e?.deliveryType&&e&&e.responseStart-e.requestStart<=5?"_pre":"_dow"},i=(e,i)=>{navigator.sendBeacon("https://to.getnitropack.com/p",JSON.stringify({siteId:"FVXIuaLwblGghesbKlkrUSBABxvdkyuX",url:window.location.href,referrer:i||"",isOptimized:!!window.IS_NITROPACK,coreVersion:"na",missReason:window.NPTelemetryMetadata?.missReason||"",pageType:window.NPTelemetryMetadata?.pageType||"",isEligibleForOptimization:!!window.NPTelemetryMetadata?.isEligibleForOptimization||!1,pageLoadMode:e}))};(async()=>{await new Promise(e=>{document.prerendering?document.addEventListener("prerenderingchange",e,{once:!0}):e()}),await new Promise(e=>{"complete"===document.readyState?e():window.addEventListener("load",e)}),i(e(),document.referrer)})(),window.addEventListener("pageshow",e=>{if(e.persisted){let e=document.prerendering||self.performance?.getEntriesByType?.("navigation")[0]?.activationStart>0;"visible"!==document.visibilityState||e||i("_bfr","")}})}})();</script>
1275<link rel='stylesheet' id='kadence-fonts-gfonts-css' href='https://fonts.googleapis.com/css?family=DM%20Sans:300,700,regular%7CManrope:regular,300,700%7CSyne:600&display=swap' media='all' /> 1276<link rel="icon" href="https://roco.pk/wp-content/uploads/2026/05/icon-100x100.webp" sizes="32x32" /> 1277<link rel="icon" href="https://roco.pk/wp-content/uploads/2026/05/icon-300x300.webp" sizes="192x192" /> 1278<link rel="apple-touch-icon" href="https://roco.pk/wp-content/uploads/2026/05/icon-300x300.webp" /> 1279<meta name="msapplication-TileImage" content="https://roco.pk/wp-content/uploads/2026/05/icon-300x300.webp" /> 1280<style id="wp-custom-css"> 1281.wc-backward{ 1282 color: white !important; 1283} 1284.woocommerce-shipping-totals, .shipping{ 1285 display:none !important; 1286 } 1287.woocommerce-cart table.cart td.actions .button:disabled, .woocommerce-checkout table.cart td.actions .button:disabled, #add_payment_method table.cart td.actions .button:disabled{ 1288 display:none !important; 1289} 1290.woocommerce .product .kwt-price-wrap.kwt-price-_30125e-f4, .woocommerce ul.products li.product .kwt-price-wrap.kwt-price-_30125e-f4, .woocommerce-variation-price { 1291 font-family: Manrope !important; 1292} 1293 1294.variations_form .kt-variation-label { 1295 1296 text-transform: uppercase; 1297 font-size: 14px; 1298} 1299.woocommerce div.product form.cart .variations label{ 1300 font-weight: 500; 1301} 1302 1303.woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce #respond input#submit.alt{ 1304 text-transform: uppercase; 1305} 1306 1307.avatar { 1308 width: 100%; 1309 height: auto; 1310} 1311 1312 1313 1314.variations .kad_radio_variations input[type=radio]:checked+label, .variations .kad_radio_variations label.selectedValue { 1315background-color: #fff ; 1316 border: 1px solid #000!important; 1317 border-radius: 0px !important; 1318color: #000 !important 1319} 1320.variations .kad_radio_variations label 1321{ 1322 border: 1px solid #d1d1d1 !important; 1323 padding: 10px 50px; 1324 font-size: 14px; 1325 border-radius: 0px ; 1326 1327} 1328 1329.woocommerce-order-overview__advance-payment strong{ 1330 display:block; 1331} 1332 1333.woocommerce-order-overview__advance-payment span{ 1334 font-weight:700; 1335} 1336@media (max-width: 600px){ 1337 .woocommerce-order-overview__advance-payment{ 1338 width:100%; 1339 1340 } 1341 } 1342 1343.woocommerce-checkout .advance-payment { 1344 clear: both; 1345 margin: 1em 0; 1346 font-size: 1rem; 1347 color: #333; 1348 font-weight: 500; 1349} 1350 1351.woocommerce-checkout .advance-payment strong { 1352 display: block; 1353} 1354 1355@media only screen and (max-width: 768px) { 1356 1357 .woocommerce-checkout .advance-payment { 1358 display: none; 1359 } 1360} 1361 1362.mobile-advance-payment { 1363 display: none; 1364} 1365 1366 1367@media only screen and (max-width: 768px) { 1368 .mobile-advance-payment { 1369 display: block; 1370 margin-top: 0px; 1371 font-size: 16px; 1372 font-weight: bold; 1373 color: #333; 1374 margin-bottom: 10px; 1375 text-align: center; 1376 } 1377} 1378 1379 1380 1381 1382.woocommerce-order-overview__advance-payment { 1383 font-size: 18px !important; 1384 1385} 1386 1387.dull { 1388 opacity: 0.5; 1389 pointer-events: none; /* Disables interaction */ 1390} 1391 1392 1393/* Full width cart */ 1394.wc-block-cart{ 1395 width:100% !important; 1396} 1397 1398 1399 1400</style> 1401</head> 1402 1403<body class="wp-singular page-template-default page page-id-1816 wp-custom-logo wp-embed-responsive wp-theme-kadence theme-kadence woocommerce-no-js footer-on-bottom hide-focus-outline link-style-standard content-title-style-above content-width-fullwidth content-style-unboxed content-vertical-padding-bottom non-transparent-header mobile-non-transparent-header kadence-woo-disable-woo-sale-flash"> 1404<div id="wrapper" class="site wp-site-blocks"> 1405 <a class="skip-link screen-reader-text scroll-ignore" href="#main">Skip to content</a> 1406 <!-- [element-1007109] --> 1407 <style> 1408 :root { 1409 --roco-bg: #f5f1ea; 1410 --roco-charcoal: #2b2a27; 1411 --roco-charcoal-90: rgba(43,42,39,.9); 1412 --roco-charcoal-80: rgba(43,42,39,.8); 1413 --roco-charcoal-60: rgba(43,42,39,.6); 1414 --roco-charcoal-40: rgba(43,42,39,.4); 1415 --roco-charcoal-08: rgba(43,42,39,.08); 1416 --roco-brown: #3b1e32; 1417 --roco-border: rgba(255,255,255,.35); 1418 --roco-shadow: 0 10px 40px -12px rgba(60,40,20,.25); 1419 } 1420 1421 .roco-custom-header-root, 1422 .roco-custom-header-root * { 1423 box-sizing: border-box; 1424 font-family: inherit !important; 1425 } 1426 1427 .roco-header-spacer { 1428 height: 70px; 1429 } 1430 1431 .roco-header-wrap { 1432 position: fixed; 1433 top: 10px; 1434 left: 0; 1435 right: 0; 1436 z-index: 99999; 1437 pointer-events: none; 1438 padding: 0 14px; 1439 } 1440 1441 body.admin-bar .roco-header-wrap { 1442 top: 42px; 1443 } 1444 1445 .roco-header { 1446 pointer-events: auto; 1447 max-width: 1200px; 1448 margin: 0 auto; 1449 min-height: 40px; 1450 padding: 10px 32px; 1451 display: flex; 1452 align-items: center; 1453 justify-content: space-between; 1454 gap: 16px; 1455 background:#FFF; 1456 border: 1px solid transparent; 1457 border-radius: 0; 1458 box-shadow: none; 1459 backdrop-filter: blur(0); 1460 -webkit-backdrop-filter: blur(0); 1461 transition: all .35s ease; 1462 position: relative; 1463 } 1464 1465 .roco-header.roco-scrolled { 1466 margin-top: 8px; 1467 border-radius: 999px; 1468 background: rgba(245,241,234,.58); 1469 border-color: var(--roco-border); 1470 box-shadow: var(--roco-shadow); 1471 backdrop-filter: blur(24px) saturate(150%); 1472 -webkit-backdrop-filter: blur(24px) saturate(150%); 1473 } 1474 1475 .roco-logo { 1476 display: inline-flex; 1477 align-items: center; 1478 text-decoration: none; 1479 color: var(--roco-charcoal); 1480 white-space: nowrap; 1481 line-height: 1; 1482 } 1483 1484 .roco-logo-img { 1485 width: 120px; 1486 height: auto; 1487 display: block; 1488 object-fit: contain; 1489 } 1490 1491 .roco-drawer-logo { 1492 display: inline-flex; 1493 flex-direction: column; 1494 align-items: flex-start; 1495 line-height: 1.1; 1496 text-decoration: none; 1497 color: var(--roco-charcoal); 1498 font-size: 22px; 1499 letter-spacing: .18em; 1500 font-weight: 500; 1501 } 1502 1503 .roco-drawer-logo span { 1504 display: block; 1505 font-size: 12px; 1506 font-weight: 400; 1507 letter-spacing: 1px; 1508 margin-top: 3px; 1509 } 1510 1511 .roco-nav { 1512 display: flex; 1513 gap: 36px; 1514 position: absolute; 1515 left: 50%; 1516 transform: translateX(-50%); 1517 font-size: 13px; 1518 letter-spacing: .04em; 1519 } 1520 1521 .roco-nav a, 1522 .roco-nav button { 1523 background: none; 1524 border: none; 1525 cursor: pointer; 1526 font: inherit; 1527 color: var(--roco-charcoal-80); 1528 font-weight: 500; 1529 padding: 8px 0; 1530 text-decoration: none !important; 1531 position: relative; 1532 transition: color .3s; 1533 line-height: 1; 1534 } 1535 1536 .roco-nav a:hover, 1537 .roco-nav button:hover, 1538 .roco-nav button.roco-active { 1539 color: var(--roco-charcoal); 1540 } 1541 1542 .roco-nav button::after { 1543 content: ''; 1544 position: absolute; 1545 left: 0; 1546 right: 0; 1547 bottom: -2px; 1548 height: 1px; 1549 background: var(--roco-charcoal); 1550 transform: scaleX(0); 1551 transform-origin: left; 1552 transition: transform .35s; 1553 } 1554 1555 .roco-nav button.roco-active::after { 1556 transform: scaleX(1); 1557 } 1558 1559 .roco-actions { 1560 display: flex; 1561 align-items: center; 1562 gap: 20px; 1563 color: var(--roco-charcoal-80); 1564 } 1565 1566 .roco-actions button, 1567 .roco-actions a { 1568 background: none; 1569 border: none; 1570 cursor: pointer; 1571 color: inherit; 1572 display: flex; 1573 align-items: center; 1574 transition: color .3s; 1575 text-decoration: none !important; 1576 padding: 0; 1577 } 1578 1579 .roco-actions button:hover, 1580 .roco-actions a:hover { 1581 color: var(--roco-charcoal); 1582 } 1583 1584 .roco-cart { 1585 position: relative; 1586 } 1587 1588 .roco-cart-count { 1589 position: absolute; 1590 top: -9px; 1591 right: -9px; 1592 min-width: 17px; 1593 height: 17px; 1594 padding: 0 5px; 1595 border-radius: 999px; 1596 background: var(--roco-charcoal); 1597 color: var(--roco-bg); 1598 font-size: 10px; 1599 line-height: 17px; 1600 text-align: center; 1601 font-weight: 600; 1602 } 1603 1604 .roco-cta { 1605 display: none !important; 1606 } 1607 1608 .roco-menu-toggle { 1609 display: none; 1610 } 1611 1612 .roco-panel { 1613 pointer-events: auto; 1614 max-width: 1200px; 1615 margin: 8px auto 0; 1616 background: rgba(245,241,234,.92); 1617 backdrop-filter: blur(24px) saturate(150%); 1618 -webkit-backdrop-filter: blur(24px) saturate(150%); 1619 border: 1px solid transparent; 1620 box-shadow: var(--roco-shadow); 1621 overflow: hidden; 1622 max-height: 0; 1623 opacity: 0; 1624 transition: max-height .45s ease, opacity .35s ease, border-color .35s ease; 1625 } 1626 1627 .roco-panel.roco-open { 1628 opacity: 1; 1629 border-color: var(--roco-border); 1630 } 1631 1632 .roco-panel.roco-search.roco-open { 1633 max-height: 420px; 1634 } 1635 1636 .roco-panel.roco-shop.roco-open, 1637 .roco-panel.roco-collections.roco-open { 1638 max-height: 68vh; 1639 overflow-y: auto; 1640 } 1641 1642 .roco-panel-inner { 1643 padding: 32px 48px; 1644 } 1645 1646 .roco-search-form { 1647 position: relative; 1648 border-bottom: 1px solid var(--roco-charcoal-40); 1649 padding: 8px 0; 1650 } 1651 1652 .roco-search-form input { 1653 width: 100%; 1654 border: none; 1655 background: none; 1656 outline: none; 1657 font-size: 24px; 1658 color: var(--roco-charcoal); 1659 padding: 8px 0 8px 28px; 1660 } 1661 1662 .roco-search-form svg { 1663 position: absolute; 1664 left: 0; 1665 top: 50%; 1666 transform: translateY(-50%); 1667 color: var(--roco-charcoal-60); 1668 } 1669 1670 .roco-popular { 1671 display: flex; 1672 flex-wrap: wrap; 1673 gap: 8px 32px; 1674 margin-top: 24px; 1675 font-size: 11px; 1676 letter-spacing: .18em; 1677 text-transform: uppercase; 1678 color: var(--roco-charcoal-60); 1679 } 1680 1681 .roco-popular a { 1682 color: inherit; 1683 text-decoration: none !important; 1684 } 1685 1686 .roco-popular a:hover { 1687 color: var(--roco-brown); 1688 } 1689 1690 .roco-mega-grid { 1691 display: grid; 1692 grid-template-columns: repeat(4, minmax(0, 1fr)); 1693 gap: 28px 38px; 1694 padding: 34px 46px 38px; 1695 } 1696 1697 .roco-mega-block p { 1698 font-size: 11px; 1699 letter-spacing: .22em; 1700 text-transform: uppercase; 1701 color: #3b1e32; 1702 margin: 0 0 15px; 1703 font-weight: 700; 1704 } 1705 1706 .roco-mega-block ul, 1707 .roco-drawer-body ul, 1708 .roco-mobile-accordion-content ul { 1709 list-style: none; 1710 margin: 0; 1711 padding: 0; 1712 } 1713 1714 .roco-mega-block li { 1715 margin-bottom: 9px; 1716 } 1717 1718 .roco-mega-block a { 1719 font-size: 14px; 1720 color: var(--roco-charcoal-80); 1721 text-decoration: none !important; 1722 transition: color .25s ease, padding-left .25s ease; 1723 display: inline-block; 1724 line-height: 1.35; 1725 } 1726 1727 .roco-mega-block a:hover { 1728 color: var(--roco-brown); 1729 padding-left: 4px; 1730 } 1731 1732 .roco-drawer-bg { 1733 position: fixed; 1734 inset: 0; 1735 z-index: 100000; 1736 background: rgba(43,42,39,.42); 1737 backdrop-filter: blur(4px); 1738 -webkit-backdrop-filter: blur(4px); 1739 opacity: 0; 1740 pointer-events: none; 1741 transition: opacity .35s; 1742 } 1743 1744 .roco-drawer-bg.roco-open { 1745 opacity: 1; 1746 pointer-events: auto; 1747 } 1748 1749 .roco-drawer { 1750 position: fixed; 1751 left: 0; 1752 top: 0; 1753 bottom: 0; 1754 z-index: 100001; 1755 width: 90%; 1756 max-width: 420px; 1757 background: var(--roco-bg); 1758 transform: translateX(-100%); 1759 transition: transform .4s ease; 1760 box-shadow: 0 20px 50px rgba(0,0,0,.2); 1761 display: flex; 1762 flex-direction: column; 1763 } 1764 1765 body.admin-bar .roco-drawer { 1766 top: 32px; 1767 } 1768 1769 .roco-drawer.roco-open { 1770 transform: translateX(0); 1771 } 1772 1773 .roco-drawer-head { 1774 display: flex; 1775 justify-content: space-between; 1776 align-items: center; 1777 padding: 18px; 1778 border-bottom: 1px solid var(--roco-charcoal-08); 1779 flex-shrink: 0; 1780 } 1781 1782 .roco-drawer-close { 1783 background: rgba(43,42,39,.06); 1784 border: 1px solid rgba(43,42,39,.08); 1785 cursor: pointer; 1786 color: var(--roco-charcoal); 1787 font-size: 22px; 1788 line-height: 1; 1789 width: 36px; 1790 height: 36px; 1791 border-radius: 999px; 1792 display: inline-flex; 1793 align-items: center; 1794 justify-content: center; 1795 } 1796 1797 .roco-drawer-body { 1798 padding: 14px 16px 26px; 1799 overflow-y: auto; 1800 -webkit-overflow-scrolling: touch; 1801 } 1802 1803 .roco-mobile-top-links { 1804 display: grid; 1805 grid-template-columns: repeat(2, minmax(0, 1fr)); 1806 gap: 8px; 1807 margin-bottom: 14px; 1808 } 1809 1810 .roco-mobile-top-links a { 1811 display: flex; 1812 align-items: center; 1813 justify-content: center; 1814 min-height: 42px; 1815 border-radius: 999px; 1816 background: rgba(43,42,39,.06); 1817 border: 1px solid rgba(43,42,39,.08); 1818 color: var(--roco-charcoal); 1819 text-decoration: none !important; 1820 font-size: 13px; 1821 font-weight: 600; 1822 letter-spacing: .02em; 1823 } 1824 1825 .roco-mobile-acco
1825rdion { 1826 border-top: 1px solid var(--roco-charcoal-08); 1827 } 1828 1829 .roco-mobile-accordion-item { 1830 border-bottom: 1px solid var(--roco-charcoal-08); 1831 } 1832 1833 .roco-mobile-accordion-toggle { 1834 width: 100%; 1835 min-height: 50px; 1836 border: 0; 1837 background: transparent; 1838 display: flex; 1839 align-items: center; 1840 justify-content: space-between; 1841 gap: 12px; 1842 padding: 0; 1843 cursor: pointer; 1844 color: var(--roco-charcoal); 1845 text-align: left; 1846 font-size: 14px; 1847 font-weight: 700; 1848 letter-spacing: .08em; 1849 text-transform: uppercase; 1850 text-decoration: none; 1851 } 1852 1853 .roco-mobile-accordion-toggle:hover, 1854 .roco-mobile-accordion-toggle:focus { 1855 color: var(--roco-charcoal); 1856 text-decoration: none; 1857 } 1858 1859 .roco-mobile-accordion-toggle span { 1860 font-size: 18px; 1861 font-weight: 300; 1862 transition: transform .25s ease; 1863 } 1864 1865 .roco-mobile-accordion-item.roco-mobile-open .roco-mobile-accordion-toggle span { 1866 transform: rotate(45deg); 1867 } 1868 1869 .roco-mobile-accordion-content { 1870 max-height: 0; 1871 overflow: hidden; 1872 transition: max-height .3s ease; 1873 } 1874 1875 .roco-mobile-accordion-item.roco-mobile-open .roco-mobile-accordion-content { 1876 max-height: 900px; 1877 } 1878 1879 .roco-mobile-accordion-content ul { 1880 display: grid; 1881 grid-template-columns: repeat(2, minmax(0, 1fr)); 1882 gap: 8px; 1883 padding: 0 0 16px; 1884 } 1885 1886 .roco-mobile-accordion-content a { 1887 display: flex; 1888 align-items: center; 1889 min-height: 38px; 1890 padding: 9px 11px; 1891 background: rgba(255,255,255,.35); 1892 border: 1px solid rgba(43,42,39,.07); 1893 border-radius: 12px; 1894 color: var(--roco-charcoal-90); 1895 text-decoration: none !important; 1896 font-size: 13px; 1897 line-height: 1.25; 1898 } 1899 1900 @media (max-width: 1024px) { 1901 .roco-nav { 1902 gap: 24px; 1903 } 1904 1905 .roco-mega-grid { 1906 grid-template-columns: repeat(3, minmax(0, 1fr)); 1907 padding: 30px; 1908 gap: 26px; 1909 } 1910 } 1911 1912 @media (max-width: 782px) { 1913 body.admin-bar .roco-header-wrap { 1914 top: 56px; 1915 } 1916 1917 body.admin-bar .roco-drawer { 1918 top: 46px; 1919 } 1920 } 1921 1922 @media (max-width: 768px) { 1923 .roco-header-spacer { 1924 height: 78px; 1925 } 1926 1927 .roco-header-wrap { 1928 top: 8px; 1929 padding: 0 10px; 1930 } 1931 1932 .roco-header { 1933 padding: 11px 16px; 1934 min-height: 56px; 1935 border-radius: 999px; 1936 background: rgba(245,241,234,.72); 1937 border-color: var(--roco-border); 1938 box-shadow: 0 8px 28px -18px rgba(60,40,20,.45); 1939 backdrop-filter: blur(18px) saturate(145%); 1940 -webkit-backdrop-filter: blur(18px) saturate(145%); 1941 } 1942 1943 .roco-header.roco-scrolled { 1944 margin-top: -2px; 1945 border-radius: 999px; 1946 } 1947 1948 .roco-nav, 1949 .roco-panel { 1950 display: none !important; 1951 } 1952 1953 .roco-desktop-only { 1954 display: none !important; 1955 } 1956 1957 .roco-menu-toggle { 1958 display: inline-flex; 1959 align-items: center; 1960 justify-content: center; 1961 background: none; 1962 border: none; 1963 cursor: pointer; 1964 color: var(--roco-charcoal); 1965 padding: 0; 1966 width: 32px; 1967 height: 32px; 1968 text-decoration: none; 1969 } 1970 1971 .roco-actions { 1972 gap: 14px; 1973 } 1974 1975 .roco-logo-img { 1976 width: 112px; 1977 } 1978 } 1979 1980 @media (max-width: 480px) { 1981 .roco-header { 1982 padding: 10px 14px; 1983 } 1984 1985 .roco-logo-img { 1986 width: 104px; 1987 } 1988 1989 .roco-actions { 1990 gap: 10px; 1991 } 1992 1993 .roco-drawer { 1994 width: 92%; 1995 max-width: none; 1996 } 1997 1998 .roco-mobile-accordion-content ul { 1999 grid-template-columns: 1fr 1fr; 2000 gap: 7px; 2001 } 2002 2003 .roco-mobile-accordion-content a { 2004 font-size: 12.5px; 2005 min-height: 36px; 2006 padding: 8px 9px; 2007 border-radius: 10px; 2008 } 2009 } 2010 2011 @media (max-width: 360px) { 2012 .roco-mobile-accordion-content ul { 2013 grid-template-columns: 1fr; 2014 } 2015 } 2016 2017@media (max-width: 768px) { 2018 .roco-custom-header-root .roco-actions > .roco-search-toggle { 2019 display: none !important; 2020 } 2021} 2022 2023 /* Make room for the additional menu item */ 2024.roco-nav { 2025 gap: 28px; 2026} 2027 2028/* Wedding desktop menu link */ 2029.roco-custom-header-root .roco-wedding-link { 2030 display:none;
2031 align-items: center; 2032 justify-content: center; 2033 gap: 7px; 2034 2035 min-height: 30px; 2036 padding: 8px 12px; 2037 2038 border: 1px solid #3B1E32; 2039 border-radius: 999px; 2040 2041 background: rgba(139, 111, 71, 0.1); 2042 color: var(--roco-charcoal) !important; 2043 2044 font-size: 12px; 2045 font-weight: 700; 2046 line-height: 1; 2047 letter-spacing: 0.08em; 2048 white-space: nowrap; 2049 text-decoration: none !important; 2050 2051 transition: 2052 background-color 0.2s ease, 2053 border-color 0.2s ease, 2054 color 0.2s ease; 2055} 2056 2057.roco-custom-header-root .roco-wedding-link:hover, 2058.roco-custom-header-root .roco-wedding-link:focus-visible { 2059 background: #3B1E32; 2060 border-color: var(--roco-charcoal); 2061 color: #fff !important; 2062 outline: none; 2063} 2064 2065/* Safe pulse animation */ 2066.roco-custom-header-root .roco-wedding-pulse-dot { 2067 display: inline-block; 2068 width: 6px; 2069 height: 6px; 2070 flex: 0 0 6px; 2071 2072 border-radius: 50%; 2073 background: #3B1E32; 2074 opacity: 0.35; 2075 2076 animation: rocoWeddingDotFade 1.5s ease-in-out infinite; 2077} 2078 2079.roco-custom-header-root .roco-wedding-link:hover .roco-wedding-pulse-dot { 2080 background: #ffffff; 2081} 2082 2083@keyframes rocoWeddingDotFade { 2084 0%, 2085 100% { 2086 opacity: 0.35; 2087 } 2088 2089 50% { 2090 opacity: 1; 2091 } 2092} 2093 2094/* Mobile Wedding link */ 2095.roco-custom-header-root .roco-mobile-wedding-link { 2096 grid-column: 1 / -1; 2097 background: rgba(139, 111, 71, 0.12) !important; 2098 border-color: rgba(139, 111, 71, 0.3) !important; 2099 color: var(--roco-charcoal) !important; 2100} 2101 2102.roco-custom-header-root .roco-mobile-wedding-link::after { 2103 content: "NEW"; 2104 display: inline-flex; 2105 align-items: center; 2106 justify-content: center; 2107 2108 margin-left: 8px; 2109 padding: 4px 7px; 2110 2111 border-radius: 999px; 2112 background: var(--roco-charcoal); 2113 color: var(--roco-bg); 2114 2115 font-size: 8px; 2116 font-weight: 700; 2117 line-height: 1; 2118 letter-spacing: 0.09em; 2119} 2120 2121@media (prefers-reduced-motion: reduce) { 2122 .roco-custom-header-root .roco-wedding-pulse-dot { 2123 animation: none; 2124 opacity: 1; 2125 } 2126} 2127 </style> 2128 2129 <div class="roco-custom-header-root"> 2130 2131 <div class="roco-header-wrap"> 2132 <header class="roco-header"> 2133 2134 <a class="roco-menu-toggle" href="#" aria-label="Open Menu"> 2135 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.25"> 2136 <path d="M3 6h18M3 12h18M3 18h18"/> 2137 </svg> 2138 </a> 2139 2140 <a href="https://roco.pk/" class="roco-logo" aria-label="ROCO Interiors"> 2141 <img 2142 src="https://roco.pk/wp-content/uploads/2025/11/cropped-ROCO-BLACK-COLOR-WITH-TM-scaled-1.webp" 2143 alt="ROCO Interiors" 2144 class="roco-logo-img" 2145 > 2146 </a> 2147 2148 <nav class="roco-nav"> 2149 <a href="https://roco.pk/shop/" data-roco-mega="shop"> 2150 SHOP 2151</a> 2152 <button type="button" data-roco-mega="collections">COLLECTIONS</button> 2153 2154<a 2155 href="https://roco.pk/bedroom/bed-sets/" 2156 class="roco-wedding-link" 2157 aria-label="Explore Wedding Bed Sets" 2158> 2159 <span>WEDDING</span> 2160 <span class="roco-wedding-pulse-dot" aria-hidden="true"></span> 2161</a> 2162 2163<a href="https://roco.pk/blog/">BLOG</a> 2164 <a href="https://roco.pk/about/">ABOUT</a> 2165 </nav> 2166 2167 <div class="roco-actions"> 2168 <button type="button" class="roco-search-toggle" aria-label="Search"> 2169 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.25"> 2170 <circle cx="11" cy="11" r="8"/> 2171 <path d="m21 21-4.3-4.3"/> 2172 </svg> 2173 </button> 2174 2175 <a href="https://roco.pk/wishlist/" class="roco-desktop-only" aria-label="Wishlist"> 2176 <svg width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.15" stroke-linecap="round" stroke-linejoin="round"> 2177 <path d="M12 21s-7.5-4.35-9.5-9.15C.85 7.85 3.35 4.5 7.05 4.5c2.05 0 3.55 1.15 4.95 2.85C13.4 5.65 14.9 4.5 16.95 4.5c3.7 0 6.2 3.35 4.55 7.35C19.5 16.65 12 21 12 21z"/> 2178 </svg> 2179 </a> 2180 2181 <a href="https://roco.pk/cart/" class="roco-cart" aria-label="Cart"> 2182 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.25"> 2183 <path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z"/> 2184 <path d="M3 6h18"/> 2185 <path d="M16 10a4 4 0 0 1-8 0"/> 2186 </svg> 2187 2188 </a> 2189 </div> 2190 </header> 2191 2192 <div class="roco-panel roco-search" data-roco-panel="search"> 2193 <div class="roco-panel-inner"> 2194 <form class="roco-search-form" method="get" action="https://roco.pk/"> 2195
2196 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.25"> 2197 <circle cx="11" cy="11" r="8"/> 2198 <path d="m21 21-4.3-4.3"/> 2199 </svg> 2200 2201 <input 2202 type="search" 2203 name="s" 2204 placeholder="Search sofas, chairs, tables..." 2205 autocomplete="off" 2206 required 2207 /> 2208 2209</form> 2210 <div class="roco-popular"> 2211 <span class="roco-label">Popular —</span> 2212 <a href="https://roco.pk/?s=Boucle+Chair">Bouclé Chair</a> 2213 <a href="https://roco.pk/?s=Office+Chair">Office Chair</a> 2214 <a href="https://roco.pk/?s=Sofa">Sofa</a> 2215 <a href="https://roco.pk/?s=Dining+Table">Dining Table</a> 2216 </div> 2217 </div> 2218 </div> 2219 2220 <div class="roco-panel roco-shop" data-roco-panel="shop"> 2221 <div class="roco-mega-grid"> 2222 2223 <div class="roco-mega-block"> 2224 <p>Main Categories</p> 2225 <ul> 2226 <li><a href="https://roco.pk/office/">Office</a></li> 2227 <li><a href="https://roco.pk/bedroom/">Bedroom</a></li> 2228 <li><a href="https://roco.pk/living-room/">Living Room</a></li> 2229 <li><a href="https://roco.pk/kids/">Kids</a></li> 2230 <li><a href="https://roco.pk/outdoor/">Outdoor</a></li> 2231 <li><a href="https://roco.pk/study/">Study</a></li> 2232 <li><a href="https://roco.pk/dining-sets/">Dining Sets</a></li> 2233 </ul> 2234 </div> 2235 2236 <div class="roco-mega-block"> 2237 <p>Bedroom</p> 2238 <ul> 2239 <li><a href="https://roco.pk/bedroom/beds/">Beds</a></li> 2240 <li><a href="https://roco.pk/bedroom/headboards/">Headboards</a></li> 2241 <li><a href="https://roco.pk/bedroom/wardrobes/">Wardrobes</a></li> 2242 <li><a href="https://roco.pk/bedroom/side-tables/">Side Tables</a></li> 2243 <li><a href="https://roco.pk/bedroom/bedroom-chairs/">Bedroom Chairs</a></li> 2244 <li><a href="https://roco.pk/bedroom/dressers/">Dressers</a></li> 2245 <li><a href="https://roco.pk/bedroom/sofa-beds/">Sofa Beds</a></li> 2246 </ul> 2247 </div> 2248 2249 <div class="roco-mega-block"> 2250 <p>Living Room</p> 2251 <ul> 2252 <li><a href="https://roco.pk/living-room/sofas/">Sofas</a></li> 2253 <li><a href="https://roco.pk/living-room/chairs/">Chairs</a></li> 2254 <li><a href="https://roco.pk/living-room/tables/">Tables</a></li> 2255 <li><a href="https://roco.pk/living-room/tables/coffee/">Coffee Tables</a></li> 2256 <li><a href="https://roco.pk/living-room/tables/console/">Console Tables</a></li> 2257 <li><a href="https://roco.pk/living-room/tables/tv-stand/">TV Stands</a></li> 2258 </ul> 2259 </div> 2260 2261 <div class="roco-mega-block"> 2262 <p>Office</p> 2263 <ul> 2264 <li><a href="https://roco.pk/office/office-tables/">Office Tables</a></li> 2265 <li><a href="https://roco.pk/office/office-chairs/">Office Chairs</a></li> 2266 <li><a href="https://roco.pk/office/office-sofas/">Office Sofas</a></li> 2267 <li><a href="https://roco.pk/office/storage/">Office Storage</a></li> 2268 <li><a href="https://roco.pk/office/storage/credenza/">Credenza</a></li> 2269 <li><a href="https://roco.pk/office/storage/cabinets/">Cabinets</a></li> 2270 </ul> 2271 </div> 2272 2273 </div> 2274 </div> 2275 2276 <div class="roco-panel roco-collections" data-roco-panel="collections"> 2277 <div class="roco-mega-grid"> 2278 2279 <div class="roco-mega-block"> 2280 <p>Featured Collections</p> 2281 <ul> 2282 <li><a href="https://roco.pk/collection/">All Collections</a></li> 2283 <li><a href="https://roco.pk/collection/cane-collection/">Cane Collection</a></li> 2284 <li><a href="https://roco.pk/collection/conte/">Conte Collection</a></li> 2285 <li><a href="https://roco.pk/collection/office-packages/">Office Packages</a></li> 2286 </ul> 2287 </div> 2288 2289 <div class="roco-mega-block"> 2290 <p>Sofa Collections</p> 2291 <ul> 2292 <li><a href="https://roco.pk/living-room/sofas/sectional/">Sectional Sofas</a></li> 2293 <li><a href="https://roco.pk/living-room/sofas/boucle/">Boucle Sofas</a></li> 2294 <li><a href="https://roco.pk/living-room/sofas/cane/">Cane Sofas</a></li> 2295 <li><a href="https://roco.pk/living-room/sofas/chaise/">Chaise Sofas</a></li> 2296 <li><a href="https://roco.pk/living-room/sofas/chesterfield/">Chesterfield Sofas</a></li> 2297 </ul> 2298 </div> 2299 2300 <div class="roco-mega-block"> 2301 <p>Chair Collections</p> 2302 <ul> 2303 <li><a href="https://roco.pk/living-room/chairs/accent/">Accent Chairs</a></li> 2304 <li><a href="https://roco.pk/living-room/chairs/cane-arm/">Cane Arm Chairs</a></li> 2305 <li><a href="https://roco.pk/living-room/chairs/stool/">Stools</a></li> 2306 <li><a href="https://roco.pk/living-room/chairs/rocking/">Rocking Chairs</a></li> 2307 <li><a href="https://roco.pk/office/office-chairs/visitor-chairs/">Visitor Chairs</a></li> 2308 <li><a href="https://roco.pk/office/office-chairs/revolving-chairs/">Revolving Chairs</a></li> 2309 </ul> 2310 </div> 2311 2312 <div class="roco-mega-block"> 2313 <p>Study, Kids & Outdoor</p> 2314 <ul> 2315 <li><a href="https://roco.pk/study/bookcases/">Bookcases</a></li> 2316 <li><a href="https://roco.pk/study/gaming-desk/">Gaming Desk</a></li> 2317 <li><a href="https://roco.pk/study/study-table/">Study Table</a></li> 2318 <li><a href="https://roco.pk/study/wall-shelves/">Wall Shelves</a></li> 2319 <li><a href="https://roco.pk/kids/kid-chairs/">Kid Chairs</a></li> 2320 <li><a href="https://roco.pk/kids/kids-wardrobes/">Kids Wardrobes</a></li> 2321 <li><a href="https://roco.pk/outdoor/outdoor-chairs/">Outdoor Chairs</a></li> 2322 <li><a href="https://roco.pk/outdoor/outdoor-tables/">Outdoor Tables</a></li> 2323 <li><a href="https://roco.pk/outdoor/outdoor-sofas/">Outdoor Sofas</a></li> 2324 </ul> 2325 </div> 2326 2327 </div> 2328 </div> 2329 </div> 2330 2331 <div class="roco-drawer-bg"></div> 2332 2333 <aside class="roco-drawer"> 2334 <div class="roco-drawer-head"> 2335 <a href="https://roco.pk/" class="roco-drawer-logo"> 2336 ROCO
2337 <span>Rooms & Comfort</span> 2338 </a> 2339 2340 <button type="button" class="roco-drawer-close" aria-label="Close Menu">×</button> 2341 </div> 2342 2343 <div class="roco-drawer-body"> 2344 2345 <div class="roco-mobile-top-links"> 2346 <a href="https://roco.pk/shop/">Shop All</a> 2347 <a href="https://roco.pk/collection/">Collections</a> 2348 2349 <a href="https://roco.pk/blog/">Blog</a> 2350 <a href="https://roco.pk/about/">About</a> 2351 <a 2352 href="https://roco.pk/bedroom/bed-sets/" 2353 class="roco-mobile-wedding-link" 2354> 2355 Wedding Bed Sets 2356</a> 2357 </div> 2358 2359 <div class="roco-mobile-accordion"> 2360 2361 <div class="roco-mobile-accordion-item roco-mobile-open"> 2362 <a href="#" class="roco-mobile-accordion-toggle"> 2363 Main Categories <span>+</span> 2364 </a> 2365 <div class="roco-mobile-accordion-content"> 2366 <ul> 2367 <li><a href="https://roco.pk/office/">Office</a></li> 2368 <li><a href="https://roco.pk/bedroom/">Bedroom</a></li> 2369 <li><a href="https://roco.pk/living-room/">Living Room</a></li> 2370 <li><a href="https://roco.pk/kids/">Kids</a></li> 2371 <li><a href="https://roco.pk/outdoor/">Outdoor</a></li> 2372 <li><a href="https://roco.pk/study/">Study</a></li> 2373 <li><a href="https://roco.pk/dining-sets/">Dining Sets</a></li> 2374 <li><a href="https://roco.pk/collection/">Collection</a></li> 2375 </ul> 2376 </div> 2377 </div> 2378 2379 <div class="roco-mobile-accordion-item"> 2380 <a href="#" class="roco-mobile-accordion-toggle"> 2381 Bedroom <span>+</span> 2382 </a> 2383 <div class="roco-mobile-accordion-content"> 2384 <ul> 2385 <li><a href="https://roco.pk/bedroom/beds/">Beds</a></li> 2386 <li><a href="https://roco.pk/bedroom/headboards/">Headboards</a></li> 2387 <li><a href="https://roco.pk/bedroom/wardrobes/">Wardrobes</a></li> 2388 <li><a href="https://roco.pk/bedroom/side-tables/">Side Tables</a></li> 2389 <li><a href="https://roco.pk/bedroom/bedroom-chairs/">Bedroom Chairs</a></li> 2390 <li><a href="https://roco.pk/bedroom/dressers/">Dressers</a></li> 2391 <li><a href="https://roco.pk/bedroom/sofa-beds/">Sofa Beds</a></li> 2392 </ul> 2393 </div> 2394 </div> 2395 2396 <div class="roco-mobile-accordion-item"> 2397 <a href="#" class="roco-mobile-accordion-toggle"> 2398 Living Room <span>+</span> 2399 </a> 2400 <div class="roco-mobile-accordion-content"> 2401 <ul> 2402 <li><a href="https://roco.pk/living-room/sofas/">Sofas</a></li> 2403 <li><a href="https://roco.pk/living-room/sofas/sectional/">Sectional Sofas</a></li> 2404 <li><a href="https://roco.pk/living-room/sofas/boucle/">Boucle Sofas</a></li> 2405 <li><a href="https://roco.pk/living-room/sofas/cane/">Cane Sofas</a></li> 2406 <li><a href="https://roco.pk/living-room/sofas/chaise/">Chaise Sofas</a></li> 2407 <li><a href="https://roco.pk/living-room/sofas/chesterfield/">Chesterfield Sofas</a></li> 2408 <li><a href="https://roco.pk/living-room/chairs/">Chairs</a></li> 2409 <li><a href="https://roco.pk/living-room/chairs/accent/">Accent Chairs</a></li> 2410 <li><a href="https://roco.pk/living-room/chairs/cane-arm/">Cane Arm Chairs</a></li> 2411 <li><a href="https://roco.pk/living-room/chairs/stool/">Stools</a></li> 2412 <li><a href="https://roco.pk/living-room/chairs/rocking/">Rocking Chairs</a></li> 2413 <li><a href="https://roco.pk/living-room/tables/">Tables</a></li> 2414 <li><a href="https://roco.pk/living-room/tables/coffee/">Coffee Tables</a></li> 2415 <li><a href="https://roco.pk/living-room/tables/console/">Console Tables</a></li> 2416 <li><a href="https://roco.pk/living-room/tables/tv-stand/">TV Stands</a></li> 2417 </ul> 2418 </div> 2419 </div> 2420 2421 <div class="roco-mobile-accordion-item"> 2422 <a href="#" class="roco-mobile-accordion-toggle"> 2423 Office <span>+</span> 2424 </a> 2425 <div class="roco-mobile-accordion-content"> 2426 <ul> 2427 <li><a href="https://roco.pk/office/office-tables/">Office Tables</a></li> 2428 <li><a href="https://roco.pk/office/office-tables/executive-desk/">Executive Desks</a></li> 2429 <li><a href="https://roco.pk/office/office-tables/meeting-tables/">Meeting Tables</a></li> 2430 <li><a href="https://roco.pk/office/office-tables/reception-counters/">Reception Counters</a></li> 2431 <li><a href="https://roco.pk/office/office-tables/drawer/">Drawer Tables</a></li> 2432 <li><a href="https://roco.pk/office/office-sofas/">Office Sofas</a></li> 2433 <li><a href="https://roco.pk/office/office-chairs/">Office Chairs</a></li> 2434 <li><a href="https://roco.pk/office/office-chairs/visitor-chairs/">Visitor Chairs</a></li> 2435 <li><a href="https://roco.pk/office/office-chairs/revolving-chairs/">Revolving Chairs</a></li> 2436 </ul> 2437 </div> 2438 </div> 2439 2440 <div class="roco-mobile-accordion-item"> 2441 <a href="#" class="roco-mobile-accordion-toggle"> 2442 Storage <span>+</span> 2443 </a> 2444 <div class="roco-mobile-accordion-content"> 2445 <ul> 2446 <li><a href="https://roco.pk/office/storage/">Office Storage</a></li> 2447 <li><a href="https://roco.pk/office/storage/credenza/">Credenza</a></li> 2448 <li><a href="https://roco.pk/office/storage/cabinets/">Cabinets</a></li> 2449 <li><a href="https://roco.pk/office/storage/wall-desks/">Wall Desks</a></li> 2450 <li><a href="https://roco.pk/study/bookcases/">Bookcases</a></li> 2451 <li><a href="https://roco.pk/study/wall-shelves/">Wall Shelves</a></li> 2452 </ul> 2453 </div> 2454 </div> 2455 2456 <div class="roco-mobile-accordion-item"> 2457 <a href="#" class="roco-mobile-accordion-toggle"> 2458 Study, Kids & Outdoor <span>+</span> 2459 </a> 2460 <div class="roco-mobile-accordion-content"> 2461 <ul> 2462 <li><a href="https://roco.pk/study/gaming-desk/">Gaming Desk</a></li> 2463 <li><a href="https://roco.pk/study/study-table/">Study Table</a></li> 2464 <li><a href="https://roco.pk/kids/kid-chairs/">Kid Chairs</a></li> 2465 <li><a href="https://roco.pk/kids/kids-wardrobes/">Kids Wardrobes</a></li> 2466 <li><a href="https://roco.pk/outdoor/outdoor-chairs/">Outdoor Chairs</a></li> 2467 <li><a href="https://roco.pk/outdoor/outdoor-tables/">Outdoor Tables</a></li> 2468 <li><a href="https://roco.pk/outdoor/outdoor-sofas/">Outdoor Sofas</a></li> 2469 </ul> 2470 </div> 2471 </div> 2472 2473 <div class="roco-mobile-accordion-item"> 2474 <a href="#" class="roco-mobile-accordion-toggle"> 2475 Dining & Collections <span>+</span> 2476 </a> 2477 <div class="roco-mobile-accordion-content"> 2478 <ul> 2479 <li><a href="https://roco.pk/dining-sets/">Dining Sets</a></li> 2480 <li><a href="https://roco.pk/dining-sets/dining-tables/">Dining Tables</a></li> 2481 <li><a href="https://roco.pk/dining-sets/dining-chairs/">Dining Chairs</a></li> 2482 <li><a href="https://roco.pk/collection/">All Collections</a></li> 2483 <li><a href="https://roco.pk/collection/cane-collection/">Cane Collection</a></li> 2484 <li><a href="https://roco.pk/collection/conte/">Conte Collection</a></li> 2485 <li><a href="https://roco.pk/collection/office-packages/">Office Packages</a></li> 2486 </ul> 2487 </div> 2488 </div> 2489 2490 </div> 2491 </div> 2492 </aside> 2493 2494 <div class="roco-header-spacer"></div> 2495 </div> 2496 2497
2497<script> 2498 document.addEventListener('DOMContentLoaded', function () { 2499 document.querySelectorAll('.roco-custom-header-root').forEach(function (root) { 2500 const header = root.querySelector('.roco-header'); 2501 const wrap = root.querySelector('.roco-header-wrap'); 2502 const drawer = root.querySelector('.roco-drawer'); 2503 const drawerBg = root.querySelector('.roco-drawer-bg'); 2504 const menuToggle = root.querySelector('.roco-menu-toggle'); 2505 const drawerClose = root.querySelector('.roco-drawer-close'); 2506 const searchToggle = root.querySelector('.roco-search-toggle'); 2507 const navButtons = root.querySelectorAll('[data-roco-mega]'); 2508 const panels = root.querySelectorAll('[data-roco-panel]'); 2509 const mobileAccordionLinks = root.querySelectorAll('.roco-mobile-accordion-toggle'); 2510 2511 let closeTimer; 2512 2513 if (!header || !wrap) return; 2514 2515 function closeAllPanels() { 2516 panels.forEach(function (panel) { 2517 panel.classList.remove('roco-open'); 2518 }); 2519 2520 navButtons.forEach(function (button) { 2521 button.classList.remove('roco-active'); 2522 }); 2523 } 2524 2525 function openPanel(key, button) { 2526 clearTimeout(closeTimer); 2527 closeAllPanels(); 2528 2529 const panel = root.querySelector('[data-roco-panel="' + key + '"]'); 2530 2531 if (panel) { 2532 panel.classList.add('roco-open'); 2533 } 2534 2535 if (button) { 2536 button.classList.add('roco-active'); 2537 } 2538 } 2539 2540 function toggleDrawer(event) { 2541 if (event) { 2542 event.preventDefault(); 2543 } 2544 2545 closeAllPanels(); 2546 2547 if (drawer) drawer.classList.toggle('roco-open'); 2548 if (drawerBg) drawerBg.classList.toggle('roco-open'); 2549 2550 document.body.classList.toggle('roco-menu-is-open', drawer && drawer.classList.contains('roco-open')); 2551 } 2552 2553 function closeDrawer() { 2554 if (drawer) drawer.classList.remove('roco-open'); 2555 if (drawerBg) drawerBg.classList.remove('roco-open'); 2556 document.body.classList.remove('roco-menu-is-open'); 2557 } 2558 2559 window.addEventListener('scroll', function () { 2560 header.classList.toggle('roco-scrolled', window.scrollY > 24); 2561 }, { passive: true }); 2562 2563 navButtons.forEach(function (button) { 2564 button.addEventListener('mouseenter', function () { 2565 openPanel(button.getAttribute('data-roco-mega'), button); 2566 }); 2567 2568 button.addEventListener('click', function () { 2569 const key = button.getAttribute('data-roco-mega'); 2570 const panel = root.querySelector('[data-roco-panel="' + key + '"]'); 2571 2572 if (panel && panel.classList.contains('roco-open')) { 2573 closeAllPanels(); 2574 } else { 2575 openPanel(key, button); 2576 } 2577 }); 2578 }); 2579 2580 wrap.addEventListener('mouseleave', function () { 2581 closeTimer = setTimeout(closeAllPanels, 140); 2582 }); 2583 2584 wrap.addEventListener('mouseenter', function () { 2585 clearTimeout(closeTimer); 2586 }); 2587 2588if (searchToggle) { 2589 searchToggle.addEventListener('click', function (event) { 2590 event.preventDefault(); 2591 2592 const searchPanel = root.querySelector('[data-roco-panel="search"]'); 2593 const isOpen = searchPanel && searchPanel.classList.contains('roco-open'); 2594 2595 closeAllPanels(); 2596 closeDrawer(); 2597 2598 if (searchPanel && !isOpen) { 2599 searchPanel.classList.add('roco-open'); 2600 2601 const searchInput = searchPanel.querySelector('input[type="search"]'); 2602 2603 if (searchInput) { 2604 setTimeout(function () { 2605 searchInput.focus(); 2606 }, 150); 2607 } 2608 } 2609 }); 2610} 2611 2612 if (menuToggle) { 2613 menuToggle.addEventListener('click', toggleDrawer); 2614 } 2615 2616 if (drawerClose) { 2617 drawerClose.addEventListener('click', closeDrawer); 2618 } 2619 2620 if (drawerBg) { 2621 drawerBg.addEventListener('click', closeDrawer); 2622 } 2623 2624 mobileAccordionLinks.forEach(function (link) { 2625 link.addEventListener('click', function (event) { 2626 event.preventDefault(); 2627 2628 const item = link.closest('.roco-mobile-accordion-item'); 2629 2630 if (!item) return; 2631 2632 item.classList.toggle('roco-mobile-open'); 2633 }); 2634 }); 2635 2636 root.querySelectorAll('.roco-drawer a').forEach(function (link) { 2637 if (!link.classList.contains('roco-mobile-accordion-toggle')) { 2638 link.addEventListener('click', closeDrawer); 2639 } 2640 }); 2641 2642 document.addEventListener('keydown', function (event) { 2643 if (event.key === 'Escape') { 2644 closeAllPanels(); 2645 closeDrawer(); 2646 } 2647 }); 2648 }); 2649 }); 2650 </script>
2650 2651 2652 2653<!-- [/element-1007109] --> 2654 <main id="inner-wrap" class="wrap kt-clear" role="main"> 2655 <section class="entry-hero page-hero-section entry-hero-layout-standard"> 2656 <div class="entry-hero-container-inner"> 2657 <div class="hero-section-overlay"></div> 2658 <div class="hero-container site-container"> 2659 <header class="entry-header page-title title-align-inherit title-tablet-align-inherit title-mobile-align-inherit"> 2660 <nav id="kadence-breadcrumbs" aria-label="Breadcrumbs" class="kadence-breadcrumbs"><div class="kadence-breadcrumb-container"><span><a href="https://roco.pk/" itemprop="url" class="kadence-bc-home" ><span>Home</span></a></span> <span class="bc-delimiter">/</span> <span class="kadence-bread-current">Blog</span></div></nav><h1 class="entry-title">Blog</h1> </header><!-- .entry-header --> 2661 </div> 2662 </div> 2663</section><!-- .entry-hero --> 2664<div id="primary" class="content-area"> 2665 <div class="content-container site-container"> 2666 <div id="main" class="site-main"> 2667 <div class="woocommerce kadence-woo-messages-none-woo-pages woocommerce-notices-wrapper"></div> <div class="content-wrap"> 2668 <article id="post-1816" class="entry content-bg single-entry post-1816 page type-page status-publish has-post-thumbnail hentry"> 2669 <div class="entry-content-wrap"> 2670 2671<div class="entry-content single-content"> 2672 <div class="kb-row-layout-wrap kb-row-layout-id1816_b6da5b-1c alignnone wp-block-kadence-rowlayout"><div class="kt-row-column-wrap kt-has-1-columns kt-row-layout-equal kt-tab-layout-inherit kt-mobile-layout-row kt-row-valign-top kb-theme-content-width"> 2673 2674<div class="wp-block-kadence-column kadence-column1816_310623-06"><div class="kt-inside-inner-col"><ul class="wp-block-kadence-posts kb-posts kadence-posts-list kb-posts-id-1816_671d45-48 content-wrap grid-cols kb-posts-style-unboxed grid-sm-col-2 grid-lg-col-3 item-image-style-above"><li class="kb-post-list-item"> 2675 <article class="entry content-bg loop-entry post-1008702 post type-post status-publish format-standard has-post-thumbnail hentry category-guide"> 2676 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/dressing-table-design-in-pakistan/" aria-label="Dressing Table Design in Pakistan: 15 Ideas for 2026"> 2677 <div class="post-thumbnail-inner"> 2678 <img fetchpriority="high" decoding="async" width="1731" height="909" src="https://roco.pk/wp-content/uploads/2026/08/Dressing-Table-Design-in-Pakistan-15-Modern-Ideas.webp" class="attachment-full size-full wp-post-image" alt="Wooden dressing table with quality materials, drawers and large mirror" srcset="https://roco.pk/wp-content/uploads/2026/08/Dressing-Table-Design-in-Pakistan-15-Modern-Ideas.webp 1731w, https://roco.pk/wp-content/uploads/2026/08/Dressing-Table-Design-in-Pakistan-15-Modern-Ideas-700x368.webp 700w, https://roco.pk/wp-content/uploads/2026/08/Dressing-Table-Design-in-Pakistan-15-Modern-Ideas-300x158.webp 300w, https://roco.pk/wp-content/uploads/2026/08/Dressing-Table-Design-in-Pakistan-15-Modern-Ideas-1024x538.webp 1024w, https://roco.pk/wp-content/uploads/2026/08/Dressing-Table-Design-in-Pakistan-15-Modern-Ideas-768x403.webp 768w, https://roco.pk/wp-content/uploads/2026/08/Dressing-Table-Design-in-Pakistan-15-Modern-Ideas-1536x807.webp 1536w" sizes="(max-width: 1731px) 100vw, 1731px" /> </div> 2679 </a><!-- .post-thumbnail --> 2680 <div class="entry-content-wrap"> 2681 <header class="entry-header"> 2682 <div class="entry-taxonomies"> 2683 <span class="category-links term-links category-style-normal"> 2684 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2685 </div><!-- .entry-taxonomies --> 2686 <h2 class="entry-title"><a href="https://roco.pk/guide/dressing-table-design-in-pakistan/" rel="bookmark">Dressing Table Design in Pakistan: 15 Ideas for 2026</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2687 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Arbaz Khan</span></span></span> <span class="updated-on"> 2688 <time class="entry-date published updated" datetime="2026-08-10T08:44:56+00:00">August 10, 2026</time> </span> 2689 </div><!-- .entry-meta --> 2690 </header><!-- .entry-header --> 2691<footer class="entry-footer"> 2692 <div class="entry-actions"> 2693 <p class="more-link-wrap"> 2694 <a href="https://roco.pk/guide/dressing-table-design-in-pakistan/" class="post-more-link">
2695 Read More<span class="screen-reader-text"> Dressing Table Design in Pakistan: 15 Ideas for 2026</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2696 </svg></span> </a> 2697 </p> 2698 </div><!-- .entry-actions --> 2699 </footer><!-- .entry-footer --> </div> 2700 </article> 2701</li> 2702<li class="kb-post-list-item"> 2703 <article class="entry content-bg loop-entry post-1007658 post type-post status-publish format-standard has-post-thumbnail hentry category-guide"> 2704 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/dining-table-price-in-pakistan/" aria-label="Dining Table Price in Pakistan: 2026 Buying Guide for 4, 6 and 8-seater Sets"> 2705 <div class="post-thumbnail-inner"> 2706 <img decoding="async" width="1200" height="630" src="https://roco.pk/wp-content/uploads/2026/07/Dining-Table-Price-in-Pakistan.webp" class="attachment-full size-full wp-post-image" alt="Wooden dining table price in Pakistan - 4, 6 and 8 seater options" srcset="https://roco.pk/wp-content/uploads/2026/07/Dining-Table-Price-in-Pakistan.webp 1200w, https://roco.pk/wp-content/uploads/2026/07/Dining-Table-Price-in-Pakistan-700x368.webp 700w, https://roco.pk/wp-content/uploads/2026/07/Dining-Table-Price-in-Pakistan-300x158.webp 300w, https://roco.pk/wp-content/uploads/2026/07/Dining-Table-Price-in-Pakistan-1024x538.webp 1024w, https://roco.pk/wp-content/uploads/2026/07/Dining-Table-Price-in-Pakistan-768x403.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /> </div> 2707 </a><!-- .post-thumbnail --> 2708 <div class="entry-content-wrap"> 2709 <header class="entry-header"> 2710 <div class="entry-taxonomies"> 2711 <span class="category-links term-links category-style-normal"> 2712 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2713 </div><!-- .entry-taxonomies --> 2714 <h2 class="entry-title"><a href="https://roco.pk/guide/dining-table-price-in-pakistan/" rel="bookmark">Dining Table Price in Pakistan: 2026 Buying Guide for 4, 6 and 8-seater Sets</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2715 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Arbaz Khan</span></span></span> <span class="updated-on"> 2716 <time class="entry-date published updated" datetime="2026-07-15T11:14:12+00:00">July 15, 2026</time> </span> 2717 </div><!-- .entry-meta --> 2718 </header><!-- .entry-header --> 2719<footer class="entry-footer"> 2720 <div class="entry-actions"> 2721 <p class="more-link-wrap"> 2722 <a href="https://roco.pk/guide/dining-table-price-in-pakistan/" class="post-more-link"> 2723 Read More<span class="screen-reader-text"> Dining Table Price in Pakistan: 2026 Buying Guide for 4, 6 and 8-seater Sets</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2724 </svg></span> </a> 2725 </p> 2726 </div><!-- .entry-actions --> 2727 </footer><!-- .entry-footer --> </div> 2728 </article> 2729</li> 2730<li class="kb-post-list-item"> 2731 <article class="entry content-bg loop-entry post-1007630 post type-post status-publish format-standard has-post-thumbnail hentry category-guide">
2732 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/sofa-set-price-in-pakistan/" aria-label="Sofa Set Price in Pakistan: 2026 Buying Guide for Every Home"> 2733 <div class="post-thumbnail-inner"> 2734 <img decoding="async" width="1200" height="630" src="https://roco.pk/wp-content/uploads/2026/06/Sofa-Set-Price-in-Pakistan-2026-Buying-Guide-for-Every-Home.jpg" class="attachment-full size-full wp-post-image" alt="Modern grey sofa set in a Pakistani living room for ROCO Furniture’s 2026 sofa set price guide." srcset="https://roco.pk/wp-content/uploads/2026/06/Sofa-Set-Price-in-Pakistan-2026-Buying-Guide-for-Every-Home.jpg 1200w, https://roco.pk/wp-content/uploads/2026/06/Sofa-Set-Price-in-Pakistan-2026-Buying-Guide-for-Every-Home-700x368.jpg 700w, https://roco.pk/wp-content/uploads/2026/06/Sofa-Set-Price-in-Pakistan-2026-Buying-Guide-for-Every-Home-300x158.jpg 300w, https://roco.pk/wp-content/uploads/2026/06/Sofa-Set-Price-in-Pakistan-2026-Buying-Guide-for-Every-Home-1024x538.jpg 1024w, https://roco.pk/wp-content/uploads/2026/06/Sofa-Set-Price-in-Pakistan-2026-Buying-Guide-for-Every-Home-768x403.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /> </div> 2735 </a><!-- .post-thumbnail --> 2736 <div class="entry-content-wrap"> 2737 <header class="entry-header"> 2738 <div class="entry-taxonomies"> 2739 <span class="category-links term-links category-style-normal"> 2740 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2741 </div><!-- .entry-taxonomies --> 2742 <h2 class="entry-title"><a href="https://roco.pk/guide/sofa-set-price-in-pakistan/" rel="bookmark">Sofa Set Price in Pakistan: 2026 Buying Guide for Every Home</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2743 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Arbaz Khan</span></span></span> <span class="updated-on"> 2744 <time class="entry-date published updated" datetime="2026-07-15T10:55:46+00:00">July 15, 2026</time> </span> 2745 </div><!-- .entry-meta --> 2746 </header><!-- .entry-header --> 2747<footer class="entry-footer"> 2748 <div class="entry-actions"> 2749 <p class="more-link-wrap"> 2750 <a href="https://roco.pk/guide/sofa-set-price-in-pakistan/" class="post-more-link"> 2751 Read More<span class="screen-reader-text"> Sofa Set Price in Pakistan: 2026 Buying Guide for Every Home</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2752 </svg></span> </a> 2753 </p> 2754 </div><!-- .entry-actions --> 2755 </footer><!-- .entry-footer --> </div> 2756 </article> 2757</li> 2758<li class="kb-post-list-item"> 2759 <article class="entry content-bg loop-entry post-1007667 post type-post status-publish format-standard has-post-thumbnail hentry category-guide"> 2760 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/office-chair-price-in-pakistan/" aria-label="Office Chair Price in Pakistan: 2026 Guide to Ergonomic, Revolving and Executive Chairs"> 2761 <div class="post-thumbnail-inner"> 2762 <img loading="lazy" decoding="async" width="1200" height="630" src="https://roco.pk/wp-content/uploads/2026/07/Office-Chair-Price-in-Pakistan.webp" class="attachment-full size-full wp-post-image" alt="Office chair price in Pakistan guide featuring ergonomic mesh office chair" srcset="https://roco.pk/wp-content/uploads/2026/07/Office-Chair-Price-in-Pakistan.webp 1200w, https://roco.pk/wp-content/uploads/2026/07/Office-Chair-Price-in-Pakistan-700x368.webp 700w, https://roco.pk/wp-content/uploads/2026/07/Office-Chair-Price-in-Pakistan-300x158.webp 300w, https://roco.pk/wp-content/uploads/2026/07/Office-Chair-Price-in-Pakistan-1024x538.webp 1024w, https://roco.pk/wp-content/uploads/2026/07/Office-Chair-Price-in-Pakistan-768x403.webp 768w" sizes="auto, (max-width: 1200px) 100v
2762w, 1200px" /> </div> 2763 </a><!-- .post-thumbnail --> 2764 <div class="entry-content-wrap"> 2765 <header class="entry-header"> 2766 <div class="entry-taxonomies"> 2767 <span class="category-links term-links category-style-normal"> 2768 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2769 </div><!-- .entry-taxonomies --> 2770 <h2 class="entry-title"><a href="https://roco.pk/guide/office-chair-price-in-pakistan/" rel="bookmark">Office Chair Price in Pakistan: 2026 Guide to Ergonomic, Revolving and Executive Chairs</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2771 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Arbaz Khan</span></span></span> <span class="updated-on"> 2772 <time class="entry-date published updated" datetime="2026-07-15T10:41:49+00:00">July 15, 2026</time> </span> 2773 </div><!-- .entry-meta --> 2774 </header><!-- .entry-header --> 2775<footer class="entry-footer"> 2776 <div class="entry-actions"> 2777 <p class="more-link-wrap"> 2778 <a href="https://roco.pk/guide/office-chair-price-in-pakistan/" class="post-more-link"> 2779 Read More<span class="screen-reader-text"> Office Chair Price in Pakistan: 2026 Guide to Ergonomic, Revolving and Executive Chairs</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2780 </svg></span> </a> 2781 </p> 2782 </div><!-- .entry-actions --> 2783 </footer><!-- .entry-footer --> </div> 2784 </article> 2785</li> 2786<li class="kb-post-list-item"> 2787 <article class="entry content-bg loop-entry post-992151 post type-post status-publish format-standard has-post-thumbnail hentry category-guide"> 2788 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/how-to-choose-a-comfortable-sofa-find-your-perfect-match/" aria-label="How to choose a comfortable sofa: Find Your Perfect Match"> 2789 <div class="post-thumbnail-inner"> 2790 <img loading="lazy" decoding="async" width="1456" height="816" src="https://roco.pk/wp-content/uploads/2024/12/Featured-Image.webp" class="attachment-full size-full wp-post-image" alt="Choosing a comfortable sofa featured image" srcset="https://roco.pk/wp-content/uploads/2024/12/Featured-Image.webp 1456w, https://roco.pk/wp-content/uploads/2024/12/Featured-Image-700x392.webp 700w, https://roco.pk/wp-content/uploads/2024/12/Featured-Image-64x36.webp 64w, https://roco.pk/wp-content/uploads/2024/12/Featured-Image-300x168.webp 300w, https://roco.pk/wp-content/uploads/2024/12/Featured-Image-1024x574.webp 1024w, https://roco.pk/wp-content/uploads/2024/12/Featured-Image-768x430.webp 768w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /> </div> 2791 </a><!-- .post-thumbnail --> 2792 <div class="entry-content-wrap"> 2793 <header class="entry-header"> 2794 <div class="entry-taxonomies"> 2795 <span class="category-links term-links category-style-normal"> 2796 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2797 </div><!-- .entry-taxonomies --> 2798 <h2 class="entry-title"><a href="https://roco.pk/guide/how-to-choose-a-comfortable-sofa-find-your-perfect-match/" rel="bookmark">How to choose a comfortable sofa: Find Your Perfect Match</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2799 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Abdullah Bhatti</span></span></span> <span class="updated-on"> 2800 <time class="entry-date published updated" datetime="2026-06-12T10:36:59+00:00">June 12, 2026</time> </span> 2801 </div><!-- .entry-meta --> 2802 </header><!-- .entry-header --> 2803<footer class="entry-footer"> 2804 <div class="entry-actions"> 2805 <p class="more-link-wrap"> 2806 <a href="https://roco.pk/guide/how-to-choose-a-comfortable-sofa-find-your-perfect-match/" class="post-more-link">
2807 Read More<span class="screen-reader-text"> How to choose a comfortable sofa: Find Your Perfect Match</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2808 </svg></span> </a> 2809 </p> 2810 </div><!-- .entry-actions --> 2811 </footer><!-- .entry-footer --> </div> 2812 </article> 2813</li> 2814<li class="kb-post-list-item"> 2815 <article class="entry content-bg loop-entry post-989331 post type-post status-publish format-standard has-post-thumbnail hentry category-guide tag-furniture-brands-guide tag-furniture-brands-in-pakistan tag-top-10-furniture-brands"> 2816 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/best-furniture-brands-in-pakistan/" aria-label="Best Furniture Brands in Pakistan (2026): Rated, Compared and Reviewed"> 2817 <div class="post-thumbnail-inner"> 2818 <img loading="lazy" decoding="async" width="2560" height="1396" src="https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-scaled.webp" class="attachment-full size-full wp-post-image" alt="Best Furniture Brands in Pakistan (2026) Rated, Compared and Honestly Reviewed" srcset="https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-scaled.webp 2560w, https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-scaled-700x382.webp 700w, https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-300x164.webp 300w, https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-1024x559.webp 1024w, https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-768x419.webp 768w, https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-1536x838.webp 1536w, https://roco.pk/wp-content/uploads/2024/11/Best-Furniture-Brands-in-Pakistan-2026-Rated-Compared-and-Honestly-Reviewed-1-2048x1117.webp 2048w" sizes="auto, (max-width: 2560px) 100v
2818w, 2560px" /> </div> 2819 </a><!-- .post-thumbnail --> 2820 <div class="entry-content-wrap"> 2821 <header class="entry-header"> 2822 <div class="entry-taxonomies"> 2823 <span class="category-links term-links category-style-normal"> 2824 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2825 </div><!-- .entry-taxonomies --> 2826 <h2 class="entry-title"><a href="https://roco.pk/guide/best-furniture-brands-in-pakistan/" rel="bookmark">Best Furniture Brands in Pakistan (2026): Rated, Compared and Reviewed</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2827 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Abdullah Bhatti</span></span></span> <span class="updated-on"> 2828 <time class="entry-date published updated" datetime="2026-06-12T06:53:02+00:00">June 12, 2026</time> </span> 2829 </div><!-- .entry-meta --> 2830 </header><!-- .entry-header --> 2831<footer class="entry-footer"> 2832 <div class="entry-actions"> 2833 <p class="more-link-wrap"> 2834 <a href="https://roco.pk/guide/best-furniture-brands-in-pakistan/" class="post-more-link"> 2835 Read More<span class="screen-reader-text"> Best Furniture Brands in Pakistan (2026): Rated, Compared and Reviewed</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2836 </svg></span> </a> 2837 </p> 2838 </div><!-- .entry-actions --> 2839 </footer><!-- .entry-footer --> </div> 2840 </article> 2841</li> 2842<li class="kb-post-list-item"> 2843 <article class="entry content-bg loop-entry post-991910 post type-post status-publish format-standard has-post-thumbnail hentry category-guide"> 2844 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/trending-sofa-styles-bold-stylish-and-practical/" aria-label="Trending Sofa Styles for 2024: Bold, Stylish and Practical"> 2845 <div class="post-thumbnail-inner"> 2846 <img loading="lazy" decoding="async" width="1280" height="720" src="https://roco.pk/wp-content/uploads/2024/12/Trending-Sofa-Styles-for-2024-Featured-Image.webp" class="attachment-full size-full wp-post-image" alt="Trending sofa styles for 2024" srcset="https://roco.pk/wp-content/uploads/2024/12/Trending-Sofa-Styles-for-2024-Featured-Image.webp 1280w, https://roco.pk/wp-content/uploads/2024/12/Trending-Sofa-Styles-for-2024-Featured-Image-700x394.webp 700w, https://roco.pk/wp-content/uploads/2024/12/Trending-Sofa-Styles-for-2024-Featured-Image-64x36.webp 64w, https://roco.pk/wp-content/uploads/2024/12/Trending-Sofa-Styles-for-2024-Featured-Image-300x169.webp 300w, https://roco.pk/wp-content/uploads/2024/12/Trending-Sofa-Styles-for-2024-Featured-Image-1024x576.webp 1024w, https://roco.pk/wp-content/uploads/2024/12/Trending-Sofa-Styles-for-2024-Featured-Image-768x432.webp 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /> </div> 2847 </a><!-- .post-thumbnail --> 2848 <div class="entry-content-wrap"> 2849 <header class="entry-header"> 2850 <div class="entry-taxonomies"> 2851 <span class="category-links term-links category-style-normal"> 2852 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2853 </div><!-- .entry-taxonomies --> 2854 <h2 class="entry-title"><a href="https://roco.pk/guide/trending-sofa-styles-bold-stylish-and-practical/" rel="bookmark">Trending Sofa Styles for 2024: Bold, Stylish and Practical</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2855 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Maha Rafeeq</span></span></span> <span class="updated-on"> 2856 <time class="entry-date published updated" datetime="2026-02-07T00:48:55+00:00">February 7, 2026</time> </span> 2857 </div><!-- .entry-meta --> 2858 </header><!-- .entry-header --> 2859<footer class="entry-footer"> 2860 <div class="entry-actions"> 2861 <p class="more-link-wrap"> 2862 <a href="https://roco.pk/guide/trending-sofa-styles-bold-stylish-and-practical/" class="post-more-link">
2863 Read More<span class="screen-reader-text"> Trending Sofa Styles for 2024: Bold, Stylish and Practical</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2864 </svg></span> </a> 2865 </p> 2866 </div><!-- .entry-actions --> 2867 </footer><!-- .entry-footer --> </div> 2868 </article> 2869</li> 2870<li class="kb-post-list-item"> 2871 <article class="entry content-bg loop-entry post-991091 post type-post status-publish format-standard has-post-thumbnail hentry category-guide"> 2872 <a aria-hidden="true" tabindex="-1" role="presentation" class="post-thumbnail kadence-thumbnail-ratio-9-16" href="https://roco.pk/guide/furniture-design-ideas-for-living-room/" aria-label="Furniture Design Ideas for Living Room: Style Meets Function"> 2873 <div class="post-thumbnail-inner"> 2874 <img loading="lazy" decoding="async" width="1456" height="816" src="https://roco.pk/wp-content/uploads/2024/12/Furniture-Ideas-for-Living-Room-Featured-ROCO.webp" class="attachment-full size-full wp-post-image" alt="Featured image for furniture ideas for living room with sofa and center table" srcset="https://roco.pk/wp-content/uploads/2024/12/Furniture-Ideas-for-Living-Room-Featured-ROCO.webp 1456w, https://roco.pk/wp-content/uploads/2024/12/Furniture-Ideas-for-Living-Room-Featured-ROCO-700x392.webp 700w, https://roco.pk/wp-content/uploads/2024/12/Furniture-Ideas-for-Living-Room-Featured-ROCO-64x36.webp 64w, https://roco.pk/wp-content/uploads/2024/12/Furniture-Ideas-for-Living-Room-Featured-ROCO-300x168.webp 300w, https://roco.pk/wp-content/uploads/2024/12/Furniture-Ideas-for-Living-Room-Featured-ROCO-1024x574.webp 1024w, https://roco.pk/wp-content/uploads/2024/12/Furniture-Ideas-for-Living-Room-Featured-ROCO-768x430.webp 768w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /> </div> 2875 </a><!-- .post-thumbnail --> 2876 <div class="entry-content-wrap"> 2877 <header class="entry-header"> 2878 <div class="entry-taxonomies"> 2879 <span class="category-links term-links category-style-normal"> 2880 <a href="https://roco.pk/category/guide/" class="category-link-guide" rel="tag">Guide</a> </span> 2881 </div><!-- .entry-taxonomies --> 2882 <h2 class="entry-title"><a href="https://roco.pk/guide/furniture-design-ideas-for-living-room/" rel="bookmark">Furniture Design Ideas for Living Room: Style Meets Function</a></h2> <div class="entry-meta entry-meta-divider-dot"> 2883 <span class="posted-by"><span class="meta-label">By</span><span class="author vcard"><span class="fn n">Maha Rafeeq</span></span></span> <span class="updated-on"> 2884 <time class="entry-date published updated" datetime="2025-11-14T11:58:23+00:00">November 14, 2025</time> </span> 2885 </div><!-- .entry-meta --> 2886 </header><!-- .entry-header --> 2887<footer class="entry-footer"> 2888 <div class="entry-actions"> 2889 <p class="more-link-wrap"> 2890 <a href="https://roco.pk/guide/furniture-design-ideas-for-living-room/" class="post-more-link"> 2891 Read More<span class="screen-reader-text"> Furniture Design Ideas for Living Room: Style Meets Function</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewBox="0 0 27 28"><title>Continue</title><path d="M27 13.953c0 0.141-0.063 0.281-0.156 0.375l-6 5.531c-0.156 0.141-0.359 0.172-0.547 0.094-0.172-0.078-0.297-0.25-0.297-0.453v-3.5h-19.5c-0.281 0-0.5-0.219-0.5-0.5v-3c0-0.281 0.219-0.5 0.5-0.5h19.5v-3.5c0-0.203 0.109-0.375 0.297-0.453s0.391-0.047 0.547 0.078l6 5.469c0.094 0.094 0.156 0.219 0.156 0.359v0z"></path> 2892 </svg></span> </a> 2893 </p> 2894 </div><!-- .entry-actions --> 2895 </footer><!-- .entry-footer --> </div> 2896 </article> 2897</li> 2898</ul></div></div> 2899 2900</div></div></div><!-- .entry-content --> 2901 </div> 2902</article><!-- #post-1816 --> 2903 2904 </div> 2905 </div><!-- #main --> 2906 </div> 2907</div><!-- #primary -->
2908<script nitro-exclude> 2909 var heartbeatData = new FormData(); heartbeatData.append('nitroHeartbeat', '1'); 2910 fetch(location.href, {method: 'POST', body: heartbeatData, credentials: 'omit'}); 2911 </script>
2911<script nitro-exclude> 2912 document.cookie = 'nitroCachedPage=' + (!window.NITROPACK_STATE ? '0' : '1') + '; path=/; SameSite=Lax'; 2913 </script>
2913 </main><!-- #inner-wrap --> 2914 <!-- [element-1007991] --> 2915<!-- ROCO Custom Image Footer Start --> 2916<footer class="roco-custom-footer"> 2917 2918 <!-- Real Image Background --> 2919 <div class="roco-footer-bg" aria-hidden="true"> 2920 <img decoding="async" src="https://roco.pk/wp-content/uploads/2026/05/Livingroom.webp" alt="" loading="eager"> 2921 </div> 2922 2923 <div class="roco-footer-image-overlay" aria-hidden="true"></div> 2924 <div class="roco-footer-smooth-fade" aria-hidden="true"></div> 2925 2926 <div class="roco-footer-wrap"> 2927 2928 <!-- Big Premium Heading --> 2929 <div class="roco-footer-hero"> 2930 <h2>Rooms & Comfort,<br>Crafted Since 1952.</h2> 2931 </div> 2932 2933 <!-- Desktop Footer Columns --> 2934 <div class="roco-footer-desktop"> 2935 2936 <div class="roco-footer-col"> 2937 <p>Useful Links</p> 2938 <a href="/about/">About Us</a> 2939 <a href="/contact-us/">Contact Us</a> 2940 <a href="/blog/">Blog</a> 2941 <a href="/shop/">Shop</a> 2942 <a href="/terms-conditions/">Terms & Conditions</a> 2943 <a href="https://roco.pk/roco-x-alis-interiors/">Roco Powered by Ali’s Interiors</a> 2944 <a href="/our-projects/">Our Projects</a> 2945 </div> 2946 2947 <div class="roco-footer-col"> 2948 <p>Business Policies</p> 2949 <a href="/business-policies/">Business Policies</a> 2950 <a href="/privacy-policy/">Privacy Policy</a> 2951 <a href="/after-sales-request/">After Sales Support</a> 2952 <a href="/customer-care/">Customer Care</a> 2953 <a href="/partial-payment-policy/">Partial Payment Policy</a> 2954 <a href="/refund-and-returns/">Refund and Returns Policy</a> 2955 <a href="https://roco.pk/roco-interiors-shipping-policy/">Shipping Policy</a> 2956 <a href="/warranty-policy/">Warranty Policy</a> 2957 </div> 2958 2959 <div class="roco-footer-col"> 2960 <p>Resources</p> 2961 <a href="/cart/">Cart</a> 2962 <a href="/checkout/">Checkout</a> 2963 <a href="/track-your-order/">Track Your Order</a> 2964 <a href="/my-account/">My Account</a> 2965 <a href="https://roco.pk/interior-design-services/">Interior Design</a> 2966 <a href="https://roco.pk/customized-orders/">Custom Design</a> 2967 </div> 2968 2969 <div class="roco-footer-col roco-contact-col"> 2970 <p>Contact</p> 2971 <a href="tel:+923176965610">☎ +92 317 6965610</a> 2972 <a href="tel:0616510205">☎ (061) 6510205</a> 2973 2974 <p class="roco-location-heading">Location</p> 2975 2976 <p> 2977 <strong>Workshop & Heritage Location:</strong><br> 2978 Hussain Agahi, Multan. 2979 </p> 2980 2981 <p> 2982 <strong>Showroom & Customer Visit Location:</strong><br> 2983 Opposite Children Complex Hospital Road, Chowk Fawara, Inner City, 2984 Multan, 60000 2985 </p> 2986 </div> 2987 2988 </div> 2989 2990 <!-- Mobile Accordion Footer --> 2991 <div class="roco-footer-mobile"> 2992 2993 <div class="roco-accordion-item"> 2994 <input type="checkbox" id="roco-useful"> 2995 <label for="roco-useful">Useful Links <span>+</span></label> 2996 <div class="roco-accordion-content"> 2997 <a href="/about/">About Us</a> 2998 <a href="/contact-us/">Contact Us</a> 2999 <a href="/blog/">Blog</a> 3000 <a href="/shop/">Shop</a> 3001 <a href="/terms-conditions/">Terms & Conditions</a> 3002 <a href="https://roco.pk/roco-x-alis-interiors/">Roco Powered by Ali’s Interiors</a> 3003 <a href="/our-projects/">Our Projects</a> 3004 </div> 3005 </div> 3006 3007 <div class="roco-accordion-item"> 3008 <input type="checkbox" id="roco-policies"> 3009 <label for="roco-policies">Business Policies <span>+</span></label> 3010 <div class="roco-accordion-content"> 3011 <a href="/business-policies/">Business Policies</a> 3012 <a href="/privacy-policy/">Privacy Policy</a> 3013 <a href="/after-sales-services/">After Sales Services</a> 3014 <a href="/customer-care/">Customer Care</a> 3015 <a href="/partial-payment-policy/">Partial Payment Policy</a> 3016 <a href="/refund-and-returns/">Refund and Returns Policy</a> 3017 <a href="https://roco.pk/roco-interiors-shipping-policy/">Shipping Policy</a> 3018 <a href="/warranty-policy/">Warranty Policy</a> 3019 </div> 3020 </div> 3021 3022 <div class="roco-accordion-item"> 3023 <input type="checkbox" id="roco-resources"> 3024 <label for="roco-resources">Resources <span>+</span></label> 3025 <div class="roco-accordion-content"> 3026 <a href="/cart/">Cart</a> 3027 <a href="/checkout/">Checkout</a> 3028 <a href="/track-your-order/">
3028Track Your Order</a> 3029 <a href="/my-account/">My Account</a> 3030 <a href="https://roco.pk/interior-design-services/">Interior Design</a> 3031 <a href="https://roco.pk/customized-orders/">Custom Design</a> 3032 </div> 3033 </div> 3034 3035 <div class="roco-accordion-item"> 3036 <input type="checkbox" id="roco-contact"> 3037 <label for="roco-contact">Contact & Location <span>+</span></label> 3038 <div class="roco-accordion-content"> 3039 <a href="tel:+923176965610">☎ +92 317 6965610</a> 3040 <a href="tel:0616510205">☎ (061) 6510205</a> 3041 3042 <p> 3043 <strong>Workshop & Heritage Location:</strong><br> 3044 Hussain Agahi, Multan. 3045 </p> 3046 3047 <p> 3048 <strong>Showroom & Customer Visit Location:</strong><br> 3049 Opposite Children Complex Hospital Road, Chowk Fawara, Inner City, 3050 Multan, 66000 3051 </p> 3052 </div> 3053 </div> 3054 3055 </div> 3056 3057 <!-- Bottom Bar --> 3058 <div class="roco-footer-bottom"> 3059 3060 <div class="roco-bottom-brand"> 3061 <a href="/" class="roco-footer-logo" aria-label="ROCO Home"> 3062 <img decoding="async" src="https://roco.pk/wp-content/uploads/2025/06/ROCO-WHITE-COLOR-WITH-TM-300x83.webp" alt="ROCO Furniture"> 3063 </a> 3064 <p>COPYRIGHT © 2026 · ROCO™, ROOTED IN MULTAN SINCE 1952</p> 3065 </div> 3066 3067 <p class="roco-built-text">DESIGNED AND BUILT IN PAKISTAN</p> 3068 3069 <div class="roco-socials"> 3070 3071 <a href="https://www.instagram.com/roco.interiors/" class="roco-social-link" aria-label="Instagram" target="_blank" rel="noopener"> 3072 <svg class="roco-icon-stroke" viewBox="0 0 24 24" aria-hidden="true"> 3073 <rect x="3" y="3" width="18" height="18" rx="5"></rect> 3074 <circle cx="12" cy="12" r="4"></circle> 3075 <circle cx="17.5" cy="6.5" r="0.9"></circle> 3076 </svg> 3077 </a> 3078 3079 <a href="https://www.facebook.com/share/1FeZLbybiv/" class="roco-social-link" aria-label="Facebook" target="_blank" rel="noopener"> 3080 <svg class="roco-icon-fill" viewBox="0 0 24 24" aria-hidden="true"> 3081 <path d="M14.2 8.1h2.4V4.2h-3.1c-3.1 0-5.1 2-5.1 5.2v2.2H6v4.1h2.4V22h4.4v-6.3h3.1l.6-4.1h-3.7V9.8c0-1.1.5-1.7 1.4-1.7Z"></path> 3082 </svg> 3083 </a> 3084 3085 <a href="https://www.linkedin.com/company/roco-interiors/posts/?feedView=all" class="roco-social-link" aria-label="LinkedIn" target="_blank" rel="noopener"> 3086 <svg class="roco-icon-fill" viewBox="0 0 24 24" aria-hidden="true"> 3087 <path d="M4.4 8.9h4V21h-4V8.9ZM6.4 3a2.3 2.3 0 1 1 0 4.6A2.3 2.3 0 0 1 6.4 3ZM10.7 8.9h3.8v1.6h.1c.5-.9 1.8-1.9 3.7-1.9 4 0 4.7 2.6 4.7 6V21h-4v-5.7c0-1.4 0-3.1-1.9-3.1s-2.2 1.5-2.2 3V21h-4.2V8.9Z"></path> 3088 </svg> 3089 </a> 3090 3091 <a href="https://www.youtube.com/@RocoInteriors" class="roco-social-link" aria-label="YouTube" target="_blank" rel="noopener"> 3092 <svg class="roco-icon-fill" viewBox="0 0 24 24" aria-hidden="true"> 3093 <path d="M23.5 6.7c-.3-1.2-1.2-2.1-2.4-2.4C19 3.8 12 3.8 12 3.8s-7 0-9.1.5C1.7 4.6.8 5.5.5 6.7 0 8.9 0 12 0 12s0 3.1.5 5.3c.3 1.2 1.2 2.1 2.4 2.4 2.1.5 9.1.5 9.1.5s7 0 9.1-.5c1.2-.3 2.1-1.2 2.4
3093-2.4.5-2.2.5-5.3.5-5.3s0-3.1-.5-5.3ZM9.6 15.6V8.4l6.3 3.6-6.3 3.6Z"></path> 3094 </svg> 3095 </a> 3096 3097 </div> 3098 3099 </div> 3100 3101 </div> 3102</footer> 3103<!-- ROCO Custom Image Footer End --> 3104 3105 3106<style> 3107.roco-custom-footer { 3108 --roco-black: #000000; 3109 --roco-soft-black: #070707; 3110 --roco-white: #ffffff; 3111 --roco-muted: rgba(255, 255, 255, 0.68); 3112 --roco-muted-strong: rgba(255, 255, 255, 0.84); 3113 --roco-line: rgba(255, 255, 255, 0.34); 3114 --roco-accent: #8B6B4B; 3115 3116 position: relative; 3117 width: 100%; 3118 overflow: hidden; 3119 background: var(--roco-black); 3120 color: var(--roco-white); 3121 font-family: "Inter", "Helvetica Neue", Arial, sans-serif; 3122 isolation: isolate; 3123margin-top: 20px !important; 3124} 3125 3126/* Real Image Background */ 3127.roco-footer-bg { 3128 position: absolute; 3129 inset: 0; 3130 z-index: 1; 3131 overflow: hidden; 3132 background: var(--roco-black); 3133 pointer-events: none; 3134} 3135 3136.roco-footer-bg img { 3137 width: 100%; 3138 height: 100%; 3139 min-height: 100%; 3140 object-fit: cover; 3141 object-position: center top; 3142 display: block; 3143 opacity: 1; 3144 filter: saturate(0.82) contrast(1.05) brightness(0.96); 3145} 3146 3147/* Black cinematic overlay - image visible from top */ 3148.roco-footer-image-overlay { 3149 position: absolute; 3150 inset: 0; 3151 z-index: 2; 3152 background: 3153 radial-gradient(circle at 18% 8%, rgba(255, 255, 255, 0.08), transparent 26%), 3154 linear-gradient( 3155 90deg, 3156 rgba(0, 0, 0, 0.58) 0%, 3157 rgba(0, 0, 0, 0.34) 45%, 3158 rgba(0, 0, 0, 0.68) 100% 3159 ), 3160 rgba(0, 0, 0, 0.18); 3161 pointer-events: none; 3162} 3163 3164/* Smooth image-to-black fade */ 3165.roco-footer-smooth-fade { 3166 position: absolute; 3167 inset: 0; 3168 z-index: 3; 3169 background: 3170 linear-gradient( 3171 to bottom, 3172 rgba(0, 0, 0, 0.00) 0%, 3173 rgba(0, 0, 0, 0.08) 18%, 3174 rgba(0, 0, 0, 0.28) 40%, 3175 rgba(0, 0, 0, 0.68) 66%, 3176 rgba(0, 0, 0, 0.92) 84%, 3177 #000000 100% 3178 ); 3179 pointer-events: none; 3180} 3181 3182.roco-footer-wrap { 3183 position: relative; 3184 z-index: 4; 3185 max-width: 1480px; 3186 min-height: 760px; 3187 margin: 0 auto; 3188 padding: 42px 43px 34px; 3189 display: flex; 3190 flex-direction: column; 3191} 3192 3193/* Big Heading */ 3194.roco-footer-hero { 3195 text-align: left; 3196 padding: 6px 0 132px; 3197} 3198 3199.roco-footer-hero h2 { 3200 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; 3201 font-weight: 300; 3202 margin: 0 auto; 3203 max-width: 1040px; 3204 color: #ffffff; 3205 font-size: 85px !important; 3206 line-height: 0.86; 3207 3208 letter-spacing: -0.075em; 3209 text-wrap: balance; 3210 text-shadow: 0 18px 60px rgba(0, 0, 0, 0.55); 3211} 3212 3213/* Desktop Columns */ 3214.roco-footer-desktop { 3215 display: grid; 3216 grid-template-columns: 1fr 1.1fr 0.85fr 1.35fr; 3217 gap: clamp(36px, 5vw, 82px); 3218 padding-top: 22px; 3219 border-top: 1px solid var(--roco-line); 3220} 3221 3222.roco-footer-col h3 { 3223 margin: 0 0 34px; 3224 color: #ffffff; 3225 font-size: 16px; 3226 line-height: 1.2; 3227 font-weight: 500 !important; 3228 letter-spacing: -0.035em; 3229} 3230 3231.roco-footer-col a { 3232 display: block; 3233 width: fit-content; 3234 margin-bottom: 14px; 3235 color: var(--roco-muted) !important; 3236 text-decoration: none !important; 3237 font-size: 14px; 3238 line-height: 1.25; 3239 font-weight: 430; 3240 letter-spacing: -0.035em; 3241 transition: color 0.22s ease, transform 0.22s ease, opacity 0.22s ease; 3242} 3243 3244.roco-footer-col a:hover { 3245 color: #ffffff !important; 3246 transform: translateX(4px); 3247} 3248 3249.roco-contact-col p { 3250 margin: 0 0 18px; 3251 color: var(--roco-muted); 3252 font-size: 14px; 3253 line-height: 1.55; 3254 font-weight: 420; 3255 letter-spacing: -0.025em; 3256} 3257 3258.roco-contact-col strong { 3259 color: #ffffff; 3260 font-weight: 720; 3261} 3262 3263.roco-location-heading { 3264 margin-top: 34px !important; 3265 margin-bottom: 18px !important; 3266} 3267 3268/* Bottom Bar */ 3269.roco-footer-bottom { 3270 display: grid; 3271 grid-template-columns: 1fr auto 1fr; 3272 align-items: end; 3273 gap: 30px; 3274 margin-top: auto; 3275 padding-top: 64px; 3276} 3277 3278.roco-bottom-brand { 3279 min-width: 0; 3280} 3281 3282.roco-footer-logo { 3283 display: inline-block; 3284 text-decoration: none !important; 3285} 3286 3287.roco-footer-logo img { 3288 width: 162px; 3289 max-width: 100%; 3290 height: auto; 3291 display: block; 3292 margin-bottom: 14px; 3293} 3294 3295.roco-footer-bottom p { 3296 margin: 0; 3297 color: rgba(255, 255, 255, 0.58); 3298 font-size: 12px; 3299 line-height: 1.35; 3300 font-weight: 440; 3301 letter-spacing: -0.025em; 3302} 3303 3304.roco-built-text { 3305 text-align: center; 3306 white-space: nowrap; 3307} 3308 3309/* Social Icons */ 3310.roco-socials { 3311 display: flex; 3312 align-items: center; 3313 justify-content: flex-end; 3314 gap: 9px; 3315 flex-wrap: wrap; 3316} 3317 3318.roco-social-link { 3319 width: 38px; 3320 height: 38px; 3321 border-radius: 999px; 3322 border: 1px solid rgba(255, 255, 255, 0.82); 3323 display: inline-flex; 3324 align-items: center; 3325 justify-content: center; 3326 color: #ffffff !important; 3327 text-decoration: none !important; 3328 background: rgba(0, 0, 0, 0.28); 3329 backdrop-filter: blur(4px); 3330 -webkit-backdrop-filter: blur(4px); 3331 transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease, transform 0.25s ease; 3332} 3333 3334.roco-social-link svg { 3335 width: 17px; 3336 height: 17px; 3337 display: block; 3338} 3339 3340.roco-icon-stroke, 3341.roco-icon-stroke * { 3342 fill: none; 3343 stroke: currentColor; 3344 stroke-width: 1.8; 3345 stroke-linecap: round; 3346 stroke-linejoin: round; 3347} 3348 3349.roco-icon-fill, 3350.roco-icon-fill * { 3351 fill: currentColor; 3352 stroke: none; 3353} 3354 3355.roco-social-link:hover { 3356 background: var(--roco-accent); 3357 border-color: var(--roco-accent); 3358 color: #ffffff !important; 3359 transform: translateY(-3px); 3360} 3361 3362/* Mobile Accordion Hidden on Desktop */ 3363.roco-footer-mobile { 3364 display: none; 3365} 3366 3367/* Tablet */ 3368@media (max-width: 1024px) { 3369 .roco-footer-wrap { 3370 min-height: 720px; 3371 padding: 44px 28px 32px; 3372 } 3373 3374 .roco-footer-hero { 3375 padding-bottom: 92px; 3376 } 3377 3378 .roco-footer-desktop { 3379 grid-template-columns: repeat(2, 1fr); 3380 gap: 48px 58px; 3381 } 3382 3383 .roco-footer-bottom { 3384 grid-template-columns: 1fr;
3385 align-items: start; 3386 gap: 22px; 3387 } 3388 3389 .roco-built-text { 3390 text-align: left; 3391 } 3392 3393 .roco-socials { 3394 justify-content: flex-start; 3395 } 3396} 3397 3398/* Mobile */ 3399@media (max-width: 767px) { 3400 3401 .roco-custom-footer { 3402 background: #000000; 3403 } 3404 3405 /* 3406 Mobile fix: 3407 Background image height stays fixed, so accordion open/close 3408 will not stretch or zoom the image. 3409 */ 3410 .roco-footer-bg { 3411 top: 0; 3412 left: 0; 3413 right: 0; 3414 bottom: auto; 3415 height: 470px; 3416 } 3417 3418 .roco-footer-bg img { 3419 width: 100%; 3420 height: 470px; 3421 min-height: 470px; 3422 object-fit: cover; 3423 object-position: center top; 3424 filter: saturate(0.80) contrast(1.05) brightness(0.92); 3425 } 3426 3427 .roco-footer-image-overlay { 3428 background: 3429 linear-gradient( 3430 90deg, 3431 rgba(0, 0, 0, 0.58) 0%, 3432 rgba(0, 0, 0, 0.32) 48%, 3433 rgba(0, 0, 0, 0.66) 100% 3434 ), 3435 rgba(0, 0, 0, 0.16); 3436 } 3437 3438 .roco-footer-smooth-fade { 3439 background: 3440 linear-gradient( 3441 to bottom, 3442 rgba(0, 0, 0, 0.00) 0%, 3443 rgba(0, 0, 0, 0.12) 24%, 3444 rgba(0, 0, 0, 0.48) 54%, 3445 rgba(0, 0, 0, 0.88) 78%, 3446 #000000 100% 3447 ); 3448 } 3449 3450 .roco-footer-wrap { 3451 min-height: auto; 3452 padding: 42px 16px 28px; 3453 } 3454 3455 .roco-footer-hero { 3456 text-align: left; 3457 padding: 18px 0 92px; 3458 } 3459 3460 .roco-footer-hero h2 { 3461 max-width: 100%; 3462 font-size: 40px !important; 3463 line-height: 0.9; 3464 letter-spacing: -0.075em; 3465 } 3466 3467 .roco-footer-desktop { 3468 display: none; 3469 } 3470 3471 .roco-footer-mobile { 3472 display: block; 3473 margin-top: 0; 3474 border-top: 1px solid var(--roco-line); 3475 } 3476 3477 .roco-accordion-item { 3478 border-bottom: 1px solid rgba(255, 255, 255, 0.32); 3479 } 3480 3481 .roco-accordion-item input { 3482 position: absolute; 3483 opacity: 0; 3484 pointer-events: none; 3485 } 3486 3487 .roco-accordion-item label { 3488 display: flex; 3489 justify-content: space-between; 3490 align-items: center; 3491 gap: 18px; 3492 padding: 18px 0; 3493 cursor: pointer; 3494 color: #ffffff; 3495 font-size: 17px; 3496 line-height: 1.1; 3497 font-weight: 750; 3498 letter-spacing: -0.045em; 3499 } 3500 3501 .roco-accordion-item label span { 3502 font-size: 24px; 3503 line-height: 1; 3504 font-weight: 400; 3505 transition: transform 0.25s ease; 3506 } 3507 3508 .roco-accordion-content { 3509 max-height: 0; 3510 overflow: hidden; 3511 transition: max-height 0.35s ease, padding-bottom 0.35s ease; 3512 } 3513 3514 .roco-accordion-content a { 3515 display: block; 3516 padding: 0 0 13px; 3517 color: var(--roco-muted) !important; 3518 font-size: 14px; 3519 line-height: 1.35; 3520 font-weight: 430; 3521 letter-spacing: -0.03em; 3522 text-decoration: none !important; 3523 } 3524 3525 .roco-accordion-content a:hover { 3526 color: #ffffff !important; 3527 } 3528 3529 .roco-accordion-content p { 3530 margin: 0 0 16px; 3531 color: var(--roco-muted); 3532 font-size: 14px; 3533 line-height: 1.5; 3534 letter-spacing: -0.025em; 3535 } 3536 3537 .roco-accordion-content strong { 3538 color: #ffffff; 3539 } 3540 3541 .roco-accordion-item input:checked ~ .roco-accordion-content { 3542 max-height: 720px; 3543 padding-bottom: 10px; 3544 } 3545 3546 .roco-accordion-item input:checked + label span { 3547 transform: rotate(45deg); 3548 } 3549 3550 .roco-footer-bottom { 3551 display: flex; 3552 flex-direction: column; 3553 align-items: flex-start; 3554 gap: 18px; 3555 padding-top: 40px; 3556 margin-top: 0; 3557 } 3558 3559 .roco-footer-logo img { 3560 width: 142px; 3561 margin-bottom: 12px; 3562 } 3563 3564 .roco-footer-bottom p { 3565 font-size: 11px; 3566 line-height: 1.45; 3567 } 3568 3569 .roco-built-text { 3570 text-align: left; 3571 white-space: normal; 3572 } 3573 3574 .roco-socials { 3575 justify-content: flex-start; 3576 gap: 10px; 3577 padding-top: 2px; 3578 } 3579 3580 .roco-social-link { 3581 width: 40px; 3582 height: 40px; 3583 } 3584 3585 .roco-social-link svg { 3586 width: 17px; 3587 height: 17px; 3588 } 3589} 3590 3591/* Small Mobile */ 3592@media (max-width: 420px) { 3593 .roco-footer-bg, 3594 .roco-footer-bg img { 3595 height: 430px; 3596 min-height: 430px; 3597 } 3598 3599 .roco-footer-wrap { 3600 padding-left: 14px; 3601 padding-right: 14px; 3602 } 3603 3604 .roco-footer-hero { 3605 padding-bottom: 82px; 3606 } 3607 3608 .roco-footer-hero h2 { 3609 font-size: 43px; 3610 } 3611} 3612</style> 3613<!-- [/element-1007991] --></div><!-- #wrapper --> 3614 3615
3615<script>document.documentElement.style.setProperty('--scrollbar-offset', window.innerWidth - document.documentElement.clientWidth + 'px' );</script>
3615 3616
3616<script type="speculationrules"> 3617{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/kadence/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 3618</script>
3618 3619<a id="kt-scroll-up" tabindex="-1" aria-hidden="true" aria-label="Scroll to top" href="#wrapper" class="kadence-scroll-to-top scroll-up-wrap scroll-ignore scroll-up-side-left scroll-up-style-filled vs-lg-true vs-md-true vs-sm-false"><span class="kadence-svg-iconset"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-up-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Scroll to top</title><path d="M5.707 12.707l5.293-5.293v11.586c0 0.552 0.448 1 1 1s1-0.448 1-1v-11.586l5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-7-7c-0.092-0.092-0.202-0.166-0.324-0.217s-0.253-0.076-0.383-0.076c-0.256 0-0.512 0.098-0.707 0.293l-7 7c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0z"></path> 3620 </svg></span></a><button id="kt-scroll-up-reader" href="#wrapper" aria-label="Scroll to top" class="kadence-scroll-to-top scroll-up-wrap scroll-ignore scroll-up-side-left scroll-up-style-filled vs-lg-true vs-md-true vs-sm-false"><span class="kadence-svg-iconset"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-up-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Scroll to top</title><path d="M5.707 12.707l5.293-5.293v11.586c0 0.552 0.448 1 1 1s1-0.448 1-1v-11.586l5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-7-7c-0.092-0.092-0.202-0.166-0.324-0.217s-0.253-0.076-0.383-0.076c-0.256 0-0.512 0.098-0.707 0.293l-7 7c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0z"></path> 3621 </svg></span></button><style> 3622 .woocommerce div.product form.cart .variations 3623 { 3624 margin-bottom: 0px !important; 3625 } 3626 .rfs-product-panel{margin-top:-10px !important; margin-bottom: 10px !important; } 3627 .rfs-product-panel__title{ 3628 font-size: 14px !important; 3629 text-transform: uppercase !important; 3630 font-weight: 400; 3631 } 3632 .kwt-related-wrap.kwt-related-_bc2314-d6 .related.products ul.products { 3633 3634 gap: 1rem !important;} 3635.rfs-product-panel .rfs-active .rfs-swatch-image{border:0px solid #111!important;padding:2px!important;outline:none!important;box-shadow:none!important} 3636 .rfs-app .rfs-detail-meta{ 3637 margin-bottom: 20px; 3638 }.rfs-product-panel .rfs-swatch-price{ 3639 padding-top: 0px !important; 3640 } 3641.product-meta-info { 3642 display: flex; 3643 align-items: center; 3644 gap: 10px; 3645 margin-top: 15px; 3646} 3647 3648.made-to-order-badge { 3649 border: 1px solid #333; 3650 padding: 7px 10px; 3651 font-size: 10px; 3652 letter-spacing: 1px; 3653 text-transform: uppercase; 3654 color: #333; 3655 line-height: 1; 3656 background: transparent; 3657} 3658 3659.product-sku { 3660 font-size: 12px; 3661 color: #555; 3662 letter-spacing: 0.3px; 3663} 3664 @media (max-width: 768px) { 3665 3666 body.page-id-1009330 .roco-mobile-bottom-wrap, 3667 body.page-id-1009330 .roco-mobile-bottom-wrap.roco-nav-shrink, 3668 body.page-id-1009330 .roco-mobile-bottom-wrap .roco-mobile-bottom-nav { 3669 display: none !important; 3670 visibility: hidden !important; 3671 opacity: 0 !important; 3672 height:0 !important; 3673 pointer-events:none !important; 3674 } 3675 3676} 3677 3678 .rfs-app .rfs-mobile-toolbar button{ 3679 color: #000 !important; 3680 } 3681 .rfs-app .rfs-chip{ 3682 color: #000 !important; 3683 } 3684 .rfs-app .rfs-filter-title{ 3685 color: #000 !important; 3686 } 3687@media (max-width: 768px) { 3688 .rfs-app .rfs-grid { 3689 grid-template-columns: repeat(2, minmax(0, 1fr)) !important; 3690 } 3691} 3692 @media (max-width: 768px) { 3693 .rfs-app .rfs-filters, .rfs-app .rfs-cart { 3694 margin-top: 50px !important;} 3695 .rfs-app .rfs-layout { 3696 display: grid; 3697 grid-template-columns: 1fr; 3698 gap: 16px; 3699 max-width: 100%; 3700 margin: 0; 3701 padding: 16px 16px 100px; 3702 } 3703 3704} 3705 .woocommerce div.product div.images img { 3706 width: 900px !important; 3707 max-width: 100% !important; 3708 height: auto !important; 3709} 3710 .kt-blocks-accordion-icon-trigger { 3711 width: 16px !important; 3712 min-width: 16px !important; 3713 height: 16px !important; 3714} 3715 .yith-wcwl-add-to-wishlist-button__label{ 3716 display: none !important; 3717 } 3718 .kadence-product-gallery-thumbnails.splide .splide__arrow{ 3719 height: 2em !important; 3720 width: 2em !important; 3721 } 3722.kt-blocks-accordion-icon-trigger::before, 3723.kt-blocks-accordion-icon-trigger::after { 3724 height: 1px !important; 3725 opacity: 0.7; 3726}
3727 .kadence-product-gallery-thumbnails.splide .splide__arrow svg{ 3728 font-size: 1em !important; 3729 } 3730 #kt-woo-badge-1009101{ 3731 padding: 0px 15px 0px 15px !important; 3732 } 3733 #kt-woo-badge-1009286.kt-woo-badge-singular{ 3734 padding: 0px 15px 0px 15px !important; 3735 } 3736 .kt-woo-badge-singular{ 3737 padding: 0px 15px 0px 15px !important; 3738 } 3739 #reviews { 3740 scroll-margin-top: 90px; 3741} 3742 3743@media (max-width: 767px) { 3744 html { 3745 scroll-behavior: auto; 3746 } 3747} 3748 .woocommerce .kwt-reviews-mobile-layout-columns #reviews #comments{ 3749 width: 100% !important; 3750 padding: 0px !important; 3751 } 3752 .woocommerce .kwt-reviews-mobile-layout-columns #reviews #review_form_wrapper{ 3753 width: 100% !important; 3754 } 3755 .cr-all-reviews-shortcode .cr-review-form-wrap .cr-review-form-buttons .cr-review-form-submit, .cr-ajax-reviews-review-form .cr-review-form-wrap .cr-review-form-buttons .cr-review-form-submit, .cr-reviews-grid .cr-review-form-wrap .cr-review-form-buttons .cr-review-form-submit, .cr-qna-block .cr-review-form-buttons .cr-review-form-submit 3756 { 3757 background-color: #000; 3758 } 3759/* Hide histogram table on mobile only */ 3760 3761/* ========================================= 3762 PREMIUM REVIEW RATING BARS 3763 ========================================= */ 3764 3765/* Outer / empty rating track */ 3766.ivole-meter { 3767 position: relative; 3768 overflow: hidden; 3769 3770 height: 10px !important; 3771 3772 background: #f0ebee !important; 3773 background-image: none !important; 3774 3775 border: none !important; 3776 border-radius: 100px !important; 3777 3778 box-shadow: 3779 inset 0 1px 2px rgba(59, 30, 50, 0.08) !important; 3780 3781 box-sizing: border-box; 3782 3783 transition: all 0.3s ease; 3784} 3785 3786 3787/* Filled rating bar */ 3788.ivole-meter .ivole-meter-bar { 3789 height: 100% !important; 3790 3791 background: linear-gradient( 3792 90deg, 3793 #3b1e32 0%, 3794 #5a304d 100% 3795 ) !important; 3796 3797 border: none !important; 3798 border-radius: 100px !important; 3799 3800 box-shadow: none !important; 3801 3802 transition: width 0.4s ease; 3803} 3804 3805 3806/* Remove any default overlay/effect from plugin */ 3807.ivole-meter .ivole-meter-bar::before, 3808.ivole-meter .ivole-meter-bar:before { 3809 display: none !important; 3810} 3811 3812 3813/* Optional subtle hover */ 3814.ivole-histogramRow:hover .ivole-meter { 3815 background: #e7dfe4 !important; 3816} 3817 3818 3819/* Slightly slimmer on mobile */ 3820@media (max-width: 767px) { 3821 3822 .ivole-meter { 3823 height: 8px !important; 3824 } 3825 3826} 3827 3828/* Add Review Button */ 3829#reviews.cr-reviews-ajax-reviews .cr-ajax-reviews-add-review { 3830 border-radius: 100px; 3831 padding: 10px 35px; 3832 background: #3b1e32; 3833 margin-bottom: 0px !important; 3834 color: #ffffff; 3835 transition: all 0.3s ease; 3836} 3837 3838 3839/* Add Review Button Hover */ 3840#reviews.cr-reviews-ajax-reviews .cr-ajax-reviews-add-review:hover { 3841 background: #ffffff; 3842 color: #3b1e32; 3843 border: 1px solid #3b1e32; 3844 cursor: pointer; 3845} 3846 3847 .woocommerce .product .kwt-price-wrap.kwt-price-_30125e-f4, .woocommerce ul.products li.product .kwt-price-wrap.kwt-price-_30125e-f4, .woocommerce-variation-price{display: none !important;} 3848 /* ========================================= 3849 ROCO Global Content List Styling 3850 ========================================= */ 3851 .woocommerce #reviews #comments h2{ 3852 font-weight: 500 !important; 3853 } 3854:root { 3855 --roco-list-color: #845976; 3856 --roco-list-text: #252525; 3857 --roco-list-soft-color: rgba(139, 107, 75, 0.12); 3858} 3859 3860/* Apply only to normal content lists */ 3861:is( 3862 .entry-content, 3863 .wp-block-post-content, 3864 .page-content, 3865 .post-content, 3866 .product-description, 3867 .woocommerce-product-details__short-description, 3868 .woocommerce-Tabs-panel, 3869 .elementor-widget-text-editor, 3870 .kb-row-layout-wrap 3871) ul:not([class]), 3872:is( 3873 .entry-content, 3874 .wp-block-post-content, 3875 .page-content, 3876 .post-content, 3877 .product-description, 3878 .woocommerce-product-details__short-description, 3879 .woocommerce-Tabs-panel, 3880 .elementor-widget-text-editor, 3881 .kb-row-layout-wrap 3882) ol:not([class]) { 3883 margin: 18px 0 24px; 3884 padding: 0; 3885 list-style: none; 3886} 3887 3888/* ========================================= 3889 Unordered Bullet Lists 3890 ========================================= */ 3891 3892:is( 3893 .entry-content, 3894 .wp-block-post-content, 3895 .page-content, 3896 .post-content, 3897 .product-description, 3898 .woocommerce-product-details__short-description, 3899 .woocommerce-Tabs-panel, 3900 .elementor-widget-text-editor, 3901 .kb-row-layout-wrap 3902) ul:not([class]) > li { 3903 position: relative; 3904 margin: 0 0 11px; 3905 padding-left: 27px; 3906 3907 color: var(--roco-list-text); 3908 font-size: 14px; 3909 font-weight: 400; 3910 line-height: 1.7; 3911} 3912 3913/* ROCO custom bullet */ 3914:is( 3915 .entry-content, 3916 .wp-block-post-content, 3917 .page-content, 3918 .post-content, 3919 .product-description, 3920 .woocommerce-product-details__short-description, 3921 .woocommerce-Tabs-panel, 3922 .elementor-widget-text-editor, 3923 .kb-row-layout-wrap 3924) ul:not([class]) > li::before { 3925 content: ""; 3926 position: absolute; 3927 top: 0.85em; 3928 left: 3px; 3929 3930 width: 8px; 3931 height: 8px; 3932 3933 background: var(--roco-list-color); 3934 border-radius: 50%; 3935 box-shadow: 0 0 0 4px var(--roco-list-soft-color); 3936 3937 transform: translateY(-50%); 3938} 3939 3940/* ========================================= 3941 Ordered Numbered Lists 3942 ========================================= */ 3943 3944:is( 3945 .entry-content, 3946 .wp-block-post-content, 3947 .page-content, 3948 .post-content, 3949 .product-description, 3950 .woocommerce-product-details__short-description, 3951 .woocommerce-Tabs-panel, 3952 .elementor-widget-text-editor, 3953 .kb-row-layout-wrap 3954) ol:not([class]) { 3955 counter-reset: roco-list-counter; 3956} 3957 3958:is( 3959 .entry-content, 3960 .wp-block-post-content, 3961 .page-content, 3962 .post-content, 3963 .product-description, 3964 .woocommerce-product-details__short-description, 3965 .woocommerce-Tabs-panel, 3966 .elementor-widget-text-editor, 3967 .kb-row-layout-wrap 3968) ol:not([class]) > li { 3969 position: relative; 3970 counter-increment: roco-list-counter; 3971 3972 margin: 0 0 13px; 3973 padding-left: 40px; 3974 3975 color: var(--roco-list-text); 3976 font-size: 14px; 3977 font-weight: 400; 3978 line-height: 1.7; 3979} 3980 3981/* Number circle */ 3982:is( 3983 .entry-content, 3984 .wp-block-post-content, 3985 .page-content, 3986 .post-content, 3987 .product-description, 3988 .woocommerce-product-details__short-description, 3989 .woocommerce-Tabs-panel, 3990 .elementor-widget-text-editor, 3991 .kb-row-layout-wrap 3992) ol:not([class]) > li::before { 3993 content: counter(roco-list-counter); 3994 position: absolute; 3995 top: 0; 3996 left: 0; 3997 3998 display: inline-flex; 3999 width: 26px;
4000 height: 26px; 4001 align-items: center; 4002 justify-content: center; 4003 4004 background: var(--roco-list-color); 4005 color: #ffffff; 4006 border-radius: 50%; 4007 4008 font-family: Arial, Helvetica, sans-serif; 4009 font-size: 12px; 4010 font-weight: 700; 4011 line-height: 1; 4012} 4013 4014/* ========================================= 4015 Nested Lists 4016 ========================================= */ 4017 4018:is( 4019 .entry-content, 4020 .wp-block-post-content, 4021 .page-content, 4022 .post-content, 4023 .product-description, 4024 .woocommerce-product-details__short-description, 4025 .woocommerce-Tabs-panel, 4026 .elementor-widget-text-editor, 4027 .kb-row-layout-wrap 4028) li > ul, 4029:is( 4030 .entry-content, 4031 .wp-block-post-content, 4032 .page-content, 4033 .post-content, 4034 .product-description, 4035 .woocommerce-product-details__short-description, 4036 .woocommerce-Tabs-panel, 4037 .elementor-widget-text-editor, 4038 .kb-row-layout-wrap 4039) li > ol { 4040 margin-top: 10px; 4041 margin-bottom: 6px; 4042} 4043 4044/* Slightly smaller nested bullet */ 4045:is( 4046 .entry-content, 4047 .wp-block-post-content, 4048 .page-content, 4049 .post-content, 4050 .product-description, 4051 .woocommerce-product-details__short-description, 4052 .woocommerce-Tabs-panel, 4053 .elementor-widget-text-editor, 4054 .kb-row-layout-wrap 4055) ul:not([class]) ul:not([class]) > li::before { 4056 width: 6px; 4057 height: 6px; 4058 box-shadow: none; 4059} 4060 4061/* ========================================= 4062 Text Styling Inside Lists 4063 ========================================= */ 4064 4065:is( 4066 .entry-content, 4067 .wp-block-post-content, 4068 .page-content, 4069 .post-content, 4070 .product-description, 4071 .woocommerce-product-details__short-description, 4072 .woocommerce-Tabs-panel, 4073 .elementor-widget-text-editor, 4074 .kb-row-layout-wrap 4075) li strong { 4076 color: #111111; 4077 font-weight: 700; 4078} 4079 4080:is( 4081 .entry-content, 4082 .wp-block-post-content, 4083 .page-content, 4084 .post-content, 4085 .product-description, 4086 .woocommerce-product-details__short-description, 4087 .woocommerce-Tabs-panel, 4088 .elementor-widget-text-editor, 4089 .kb-row-layout-wrap 4090) li a { 4091 color: var(--roco-list-color); 4092 text-decoration: underline; 4093 text-underline-offset: 3px; 4094} 4095 4096:is( 4097 .entry-content, 4098 .wp-block-post-content, 4099 .page-content, 4100 .post-content, 4101 .product-description, 4102 .woocommerce-product-details__short-description, 4103 .woocommerce-Tabs-panel, 4104 .elementor-widget-text-editor, 4105 .kb-row-layout-wrap 4106) li a:hover { 4107 color: #000000; 4108} 4109 4110/* ========================================= 4111 Mobile Styling 4112 ========================================= */ 4113 4114@media (max-width: 767px) { 4115 :is( 4116 .entry-content, 4117 .wp-block-post-content, 4118 .page-content, 4119 .post-content, 4120 .product-description, 4121 .woocommerce-product-details__short-description, 4122 .woocommerce-Tabs-panel, 4123 .elementor-widget-text-editor, 4124 .kb-row-layout-wrap 4125 ) ul:not([class]), 4126 :is( 4127 .entry-content, 4128 .wp-block-post-content, 4129 .page-content, 4130 .post-content, 4131 .product-description, 4132 .woocommerce-product-details__short-description, 4133 .woocommerce-Tabs-panel, 4134 .elementor-widget-text-editor, 4135 .kb-row-layout-wrap 4136 ) ol:not([class]) { 4137 margin-top: 15px; 4138 margin-bottom: 20px; 4139 } 4140 4141 :is( 4142 .entry-content, 4143 .wp-block-post-content, 4144 .page-content, 4145 .post-content, 4146 .product-description, 4147 .woocommerce-product-details__short-description, 4148 .woocommerce-Tabs-panel, 4149 .elementor-widget-text-editor, 4150 .kb-row-layout-wrap 4151 ) ul:not([class]) > li { 4152 margin-bottom: 9px; 4153 padding-left: 25px; 4154 font-size: 14px; 4155 line-height: 1.65; 4156 } 4157 4158 :is( 4159 .entry-content, 4160 .wp-block-post-content, 4161 .page-content, 4162 .post-content, 4163 .product-description, 4164 .woocommerce-product-details__short-description, 4165 .woocommerce-Tabs-panel, 4166 .elementor-widget-text-editor, 4167 .kb-row-layout-wrap 4168 ) ol:not([class]) > li { 4169 margin-bottom: 11px; 4170 padding-left: 37px; 4171 font-size: 14px; 4172 line-height: 1.65; 4173 } 4174} 4175 .kb-form-is-dark .kb-adv-form-field select option { 4176 color: #000 !important; 4177 } 4178 .rvx-grid.rvx-grid-cols-6.rvx-gap-\[26px\].rvx-review-form__recommended { 4179 display: none !important; 4180 } 4181 4182 .custom-breadcrumb { 4183 font-size: 12px; 4184 text-transform: uppercase; 4185 color: #777; 4186 align-items: center; 4187 justify-content: center; 4188 gap: 6px; 4189 text-align: center; 4190 line-height: 1.2em; 4191 } 4192 4193 .custom-breadcrumb a { 4194 color: #777; 4195 text-decoration: none; 4196 } 4197 4198 .custom-breadcrumb a:hover { 4199 color: #000; 4200 } 4201 4202 .custom-breadcrumb span { 4203 color: #000; 4204 font-weight: 500; 4205 } 4206 4207 body a { 4208 text-decoration: none !important; 4209 } 4210 4211 /* ========================= READING BAR LIGHT THEME ========================= */ 4212 4213 .reading-bar { 4214 position: fixed; 4215 top: 30px; 4216 left: 0; 4217 right: 0; 4218 margin: 0 auto; 4219 width: 92%; 4220 max-width: 720px; 4221 background: rgba(255, 255, 255, 0.96); 4222 color: #1f1a16; 4223 border: 1px solid rgba(139, 107, 75, 0.22); 4224 border-radius: 10px; 4225 padding: 9px 14px; 4226 display: flex; 4227 align-items: center; 4228 justify-content: space-between; 4229 gap: 10px; 4230 z-index: 9999999; 4231 box-shadow: 0 8px 28px rgba(31, 26, 22, 0.12); 4232 backdrop-filter: blur(14px); 4233 -webkit-backdrop-filter: blur(14px); 4234 opacity: 0; 4235 visibility: hidden; 4236 pointer-events: none; 4237 transform: translateY(-20px); 4238 transition: all 0.35s ease; 4239 } 4240 4241 .reading-bar.show { 4242 opacity: 1; 4243 visibility: visible; 4244 pointer-events: auto; 4245 transform: translateY(0); 4246 } 4247 4248 /* ========================= AUTHOR LOGO ========================= */ 4249 4250 .reading-author { 4251 width: 34px; 4252 height: 34px; 4253 border-radius: 50%; 4254 overflow: hidden; 4255 flex-shrink: 0; 4256 background: #f6f1ec; 4257 border: 1px solid rgba(139, 107, 75, 0.22); 4258 display: flex; 4259 align-items: center; 4260 justify-content: center; 4261 } 4262 4263 .reading-author img { 4264 width: 100%; 4265 height: 100%; 4266 object-fit: cover; 4267 } 4268 4269 /* ========================= CENTER HEADING AREA ========================= */ 4270 4271 .reading-center { 4272 flex: 1; 4273 min-width: 0; 4274 text-align: left; 4275 font-size: 14px; 4276 color: #1f1a16; 4277 font-weight: 600; 4278 cursor: pointer; 4279 position: static; 4280 display: flex; 4281 align-items: center; 4282 justify-content: flex-start; 4283 } 4284 4285 .reading-current { 4286 display: block; 4287 width: 100%; 4288 color: #1f1a16; 4289 white-space: nowrap; 4290 overflow: hidden; 4291 text-overflow: ellipsis; 4292 line-height: 1.2; 4293 } 4294 4295 .reading-current-number { 4296 color: #3b1e32; 4297 font-weight: 800; 4298 margin-right: 6px; 4299 } 4300 4301 .reading-current-title { 4302 color: #1f1a16; 4303 font-weight: 600; 4304 } 4305 4306 /* ========================= TIME TEXT ========================= */ 4307 4308 .reading-time { 4309 font-size: 13px; 4310 color: #1f1a16; 4311 display: flex; 4312 align-items: center; 4313 gap: 5px; 4314 flex-shrink: 0; 4315 font-weight: 600; 4316 background: #f6f1ec; 4317 border: 1px solid rgba(139, 107, 75, 0.18); 4318 border-radius: 100px; 4319 padding: 7px 10px; 4320 } 4321 4322 .reading-minutes { 4323 color: #1f1a16; 4324 white-space: nowrap; 4325 } 4326 4327 /* ========================= DROPDOWN LIGHT ROCO THEME ========================= */ 4328 4329 .toc-dropdown { 4330 position: absolute; 4331 top: calc(100% + 8px); 4332 left: 0; 4333 right: 0; 4334 width: 100%; 4335 max-width: 100vw; 4336 4337 background: #ffffff; 4338 color: #1f1a16; 4339 4340 border: 1px solid rgba(139, 107, 75, 0.18); 4341 border-radius: 18px; 4342 box-shadow: 0 16px 40px rgba(31, 26, 22, 0.16); 4343 padding: 10px; 4344 display: none; 4345 flex-direction: column; 4346 gap: 4px; 4347 z-index: 999999; 4348 4349 max-height: 320px; 4350 overflow-y: auto; 4351 4352 opacity: 0; 4353 transform: translateY(-10px); 4354 transition: all 0.25s ease; 4355 text-align: left; 4356 } 4357 4358 .toc-dropdown.active { 4359 display: flex; 4360 opacity: 1; 4361 transform: translateY(0); 4362 } 4363 4364 /* SCROLLBAR */ 4365 .toc-dropdown::-webkit-scrollbar {
4366 width: 5px; 4367 } 4368 4369 .toc-dropdown::-webkit-scrollbar-track { 4370 background: #f4eee8; 4371 border-radius: 10px; 4372 } 4373 4374 .toc-dropdown::-webkit-scrollbar-thumb { 4375 background: #3b1e32; 4376 border-radius: 10px; 4377 } 4378 4379 .toc-dropdown { 4380 scrollbar-width: thin; 4381 scrollbar-color: #3b1e32 #f4eee8; 4382 } 4383 4384 /* ========================= TOC ITEMS ========================= */ 4385 4386 .toc-item { 4387 display: flex; 4388 align-items: center; 4389 gap: 8px; 4390 width: 100%; 4391 4392 min-height: 40px; 4393 padding: 8px 10px; 4394 4395 border-radius: 12px; 4396 font-size: 13px; 4397 line-height: 1.25; 4398 color: #1f1a16; 4399 cursor: pointer; 4400 transition: all 0.25s ease; 4401 } 4402 4403 .toc-number { 4404 font-size: 12px; 4405 color: #3b1e32; 4406 width: 28px; 4407 min-width: 28px; 4408 font-weight: 800; 4409 } 4410 4411 .toc-title { 4412 flex: 1; 4413 color: #1f1a16; 4414 white-space: nowrap; 4415 overflow: hidden; 4416 text-overflow: ellipsis; 4417 font-weight: 500; 4418 } 4419 4420 .toc-item:hover { 4421 background: #f8f3ee; 4422 } 4423 4424 .toc-item.active { 4425 background: #f4eee8; 4426 font-weight: 700; 4427 position: relative; 4428 } 4429 4430 .toc-item.active .toc-title { 4431 font-weight: 700; 4432 } 4433 4434 .toc-item.active::after { 4435 content: ""; 4436 position: absolute; 4437 right: 12px; 4438 width: 7px; 4439 height: 7px; 4440 background: #3b1e32; 4441 border-radius: 50%; 4442 } 4443 .gslide-desc { 4444 display: none !important; 4445 } 4446 4447 4448 /* ========================= MOBILE ONLY ========================= */ 4449 4450 @media (min-width: 768px) { 4451 .reading-bar { 4452 display: none !important; 4453 } 4454 } 4455 4456 @media (max-width: 480px) { 4457 .reading-bar { 4458 top: 60px; 4459 width: 94%; 4460 padding: 8px 10px; 4461 gap: 8px; 4462 } 4463 4464 .reading-author { 4465 width: 32px; 4466 height: 32px; 4467 } 4468 4469 .reading-center { 4470 font-size: 13px; 4471 } 4472 4473 .reading-time { 4474 font-size: 12px; 4475 padding: 6px 8px; 4476 } 4477 4478 .toc-dropdown { 4479 border-radius: 16px; 4480 max-height: 300px; 4481 } 4482 } 4483 4484 .wc-block-cart__submit, 4485 .wp-block-woocommerce-proceed-to-checkout-block { 4486 border: none !important; 4487 } 4488.rvx-col-span-4.\!rvx-rounded-md.rvx-object-cover.\!rvx-size-\[48px\] { 4489 width: 100px !important; 4490 height: 100px !important; 4491 min-width: 70px !important; 4492 min-height: 70px !important; 4493} 4494</style> 4495
4496<script> 4497document.addEventListener("DOMContentLoaded", function () { 4498 4499 const bar = document.querySelector(".reading-bar"); 4500 const center = document.querySelector(".reading-center"); 4501 const currentText = document.querySelector(".reading-current"); 4502 const timeText = document.querySelector(".reading-minutes"); 4503 4504 if (!bar || !center || !currentText || !timeText) return; 4505 4506 /* ========================= 4507 GET CONTENT AREA 4508 ========================== */ 4509 const contentArea = 4510 document.querySelector(".entry-content") || 4511 document.querySelector(".post-content") || 4512 document.querySelector("article") || 4513 document.body; 4514 4515 /* ========================= 4516 REALISTIC READING TIME 4517 ========================== */ 4518 const wordsPerMinute = 400; 4519 4520 function getArticleWordCount() { 4521 const text = contentArea.innerText || ""; 4522 const words = text.trim().split(/\s+/).filter(Boolean); 4523 return words.length; 4524 } 4525 4526 const wordCount = getArticleWordCount(); 4527 const totalReadTime = Math.max(1, Math.ceil(wordCount / wordsPerMinute)); 4528 4529 timeText.textContent = totalReadTime + " min"; 4530 4531 /* ========================= 4532 SHOW BAR ON SCROLL 4533 ========================== */ 4534 function updateBarVisibility() { 4535 const docHeight = document.body.scrollHeight - window.innerHeight; 4536 const scrollPercent = docHeight > 0 ? window.scrollY / docHeight : 0; 4537 4538 if (scrollPercent > 0.05) { 4539 bar.classList.add("show"); 4540 } else { 4541 bar.classList.remove("show"); 4542 } 4543 } 4544 4545 let headings = Array.from(contentArea.querySelectorAll("h2")); 4546 4547 /* ========================= 4548 FILTER BAD HEADINGS 4549 ========================== */ 4550 headings = headings.filter(h => { 4551 const text = h.innerText.trim().toLowerCase(); 4552 4553 const blacklist = [ 4554 "your cart", 4555 "cart", 4556 "items in cart", 4557 "post navigation", 4558 "products in cart", 4559 "navigation", 4560 "related products", 4561 "you may also like", 4562 "reviews", 4563 "description", 4564 "additional information" 4565 ]; 4566 4567 return text.length > 0 && !blacklist.some(b => text.includes(b)); 4568 }); 4569 4570 if (headings.length === 0) return; 4571 4572 const tocItems = headings; 4573 const totalHeadings = tocItems.length; 4574 4575 /* ========================= 4576 BUILD DROPDOWN 4577 ========================== */ 4578 const dropdown = document.createElement("div"); 4579 dropdown.className = "toc-dropdown"; 4580 4581 tocItems.forEach((h, index) => { 4582 const item = document.createElement("div"); 4583 item.className = "toc-item"; 4584 4585 const number = document.createElement("span"); 4586 number.className = "toc-number"; 4587 number.textContent = String(index + 1).padStart(2, "0"); 4588 4589 const title = document.createElement("span"); 4590 title.className = "toc-title"; 4591 title.textContent = h.innerText.trim(); 4592 4593 item.appendChild(number); 4594 item.appendChild(title); 4595 4596 item.addEventListener("click", function (e) { 4597 e.stopPropagation(); 4598 4599 h.scrollIntoView({ 4600 behavior: "smooth", 4601 block: "start" 4602 }); 4603 4604 dropdown.classList.remove("active"); 4605 }); 4606 4607 dropdown.appendChild(item); 4608 }); 4609 4610 center.appendChild(dropdown); 4611 4612 const dropdownItems = Array.from(dropdown.querySelectorAll(".toc-item")); 4613 4614 /* ========================= 4615 TOGGLE DROPDOWN 4616 ========================== */ 4617 center.addEventListener("click", function (e) { 4618 e.stopPropagation(); 4619 dropdown.classList.toggle("active"); 4620 }); 4621 4622 document.addEventListener("click", function () { 4623 dropdown.classList.remove("active"); 4624 }); 4625 4626 /* ========================= 4627 ARTICLE SCROLL PROGRESS 4628 ========================== */ 4629 function getArticleScrollPercent() { 4630 const articleTop = contentArea.offsetTop; 4631 const articleHeight = contentArea.scrollHeight; 4632 const viewportHeight = window.innerHeight; 4633 4634 const scrollStart = articleTop; 4635 const scrollEnd = articleTop + articleHeight - viewportHeight; 4636 4637 if (scrollEnd <= scrollStart) return 1; 4638 4639 let percent = (window.scrollY - scrollStart) / (scrollEnd - scrollStart); 4640 4641 if (percent < 0) percent = 0; 4642 if (percent > 1) percent = 1; 4643 4644 return percent; 4645 } 4646 4647 /* ========================= 4648 ACTIVE SECTION TRACKING 4649 ========================== */ 4650 function updateActiveSection() { 4651 let activeIndex = 0; 4652 4653 tocItems.forEach((h, i) => { 4654 const rect = h.getBoundingClientRect(); 4655 4656 if (rect.top <= 125) { 4657 activeIndex = i; 4658 } 4659 }); 4660 4661 const activeHeading = tocItems[activeIndex].innerText.trim(); 4662 const activeNumber = String(activeIndex + 1).padStart(2, "0"); 4663
4664 currentText.innerHTML = 4665 '<span class="reading-current-number">' + activeNumber + '</span>' + 4666 '<span class="reading-current-title">' + activeHeading + '</span>'; 4667 4668 dropdownItems.forEach((item, i) => { 4669 if (i === activeIndex) { 4670 item.classList.add("active"); 4671 } else { 4672 item.classList.remove("active"); 4673 } 4674 }); 4675 } 4676 4677 /* ========================= 4678 UPDATE REMAINING TIME 4679 ========================== */ 4680 function updateReadingTime() { 4681 const articleScrollPercent = getArticleScrollPercent(); 4682 4683 let remaining = Math.ceil(totalReadTime * (1 - articleScrollPercent)); 4684 4685 if (remaining < 1) { 4686 remaining = 1; 4687 } 4688 4689 timeText.textContent = remaining + " min"; 4690 } 4691 4692 /* ========================= 4693 MAIN LOOP 4694 ========================== */ 4695 function updateAll() { 4696 updateBarVisibility(); 4697 updateReadingTime(); 4698 updateActiveSection(); 4699 } 4700 4701 updateAll(); 4702 window.addEventListener("scroll", updateAll); 4703 window.addEventListener("resize", updateAll); 4704 4705}); 4706</script>
4706 4707
4707<script> 4708 jQuery(function($) { 4709 4710 // AJAX add to cart redirect 4711 $(document.body).on('added_to_cart', function() { 4712 window.location.href = "https://roco.pk/checkout/"; 4713 }); 4714 4715 // Non-AJAX add to cart fallback 4716 $('form.cart').on('submit', function() { 4717 setTimeout(function() { 4718 window.location.href = "https://roco.pk/checkout/"; 4719 }, 800); 4720 }); 4721 4722 }); 4723 </script>
4723 4724 4725 <a href="#" 4726 class="roco-desktop-whatsapp-float" 4727 id="rocoDesktopWhatsappLink" 4728 target="_blank" 4729 rel="noopener" 4730 aria-label="Chat on WhatsApp"> 4731 4732 <span class="roco-whatsapp-tooltip">Chat on WhatsApp</span> 4733 4734 <!-- Correct WhatsApp Icon --> 4735 <svg class="roco-whatsapp-icon" viewBox="0 0 448 512" aria-hidden="true"> 4736 <path d="M380.9 97.1C339 55.1 283.2 32 223.9 32 101.4 32 1.8 131.6 1.8 254.1c0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.5 0 222.1-99.6 222.1-222.1 0-59.3-23.1-115-65.1-156.9zM223.9 438.7h-.1c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3 18.6-68.1-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.2 82.4-183.6 183.7-183.6 49 0 95 19.1 129.7 53.8 34.6 34.7 53.7 80.8 53.7 129.8 0 101.3-82.4 183.7-183.5 183.7zm101.7-137.4c-5.6-2.8-33.1-16.3-38.2-18.2-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18.2-17.6 21.9-3.2 3.7-6.5 4.2-12.1 1.4-33.1-16.5-54.8-29.5-76.6-66.8-5.8-10 5.8-9.3 16.5-30.9 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2s-9.7 1.4-14.8 6.9c-5.1 5.6-19.4 19-19.4 46.3s19.9 53.7 22.7 57.4c2.8 3.7 39.1 59.7 94.8 83.7 13.2 5.7 23.5 9.1 31.5 11.7 13.2 4.2 25.3 3.6 34.8 2.2 10.6-1.6 33.1-13.5 37.8-26.6 4.7-13 4.7-24.2 3.2-26.6-1.4-2.5-5.1-3.9-10.7-6.6z"/> 4737 </svg> 4738 </a> 4739 4740 <style> 4741 .roco-desktop-whatsapp-float { 4742 display: none !important; 4743 } 4744 4745 @media (min-width: 769px) { 4746 .roco-desktop-whatsapp-float { 4747 position: fixed; 4748 right: 28px; 4749 bottom: 28px; 4750 width: 66px; 4751 height: 66px; 4752 border-radius: 50%; 4753 background: #25D366 !important; 4754 color: #ffffff !important; 4755 display: flex !important; 4756 align-items: center; 4757 justify-content: center; 4758 text-decoration: none !important; 4759 z-index: 999999; 4760 box-shadow: 0 12px 30px rgba(37, 211, 102, 0.42); 4761 overflow: hidden; 4762 isolation: isolate; 4763 transition: transform .22s ease, box-shadow .22s ease; 4764 } 4765 4766 .roco-desktop-whatsapp-float:hover { 4767 transform: translateY(-4px) scale(1.04); 4768 box-shadow: 0 18px 42px rgba(37, 211, 102, 0.52); 4769 } 4770 4771 .roco-whatsapp-icon { 4772 width: 35px; 4773 height: 35px; 4774 display: block; 4775 fill: #ffffff !important; 4776 color: #ffffff !important; 4777 position: relative; 4778 z-index: 2; 4779 flex-shrink: 0; 4780 } 4781 4782 .roco-desktop-whatsapp-float::before { 4783 content: ""; 4784 position: absolute; 4785 top: -50%; 4786 left: -80%; 4787 width: 45%; 4788 height: 200%; 4789 background: linear-gradient( 4790 120deg, 4791 transparent, 4792 rgba(255, 255, 255, 0.75), 4793 transparent 4794 ); 4795 transform: rotate(25deg); 4796 animation: rocoDesktopWhatsappShine 2.8s infinite; 4797 z-index: 1; 4798 pointer-events: none; 4799 } 4800 4801 .roco-whatsapp-tooltip { 4802 position: absolute; 4803 right: 78px; 4804 bottom: 50%; 4805 transform: translateY(50%) translateX(10px); 4806 background: #111111; 4807 color: #ffffff; 4808 font-size: 13px; 4809 font-weight: 500; 4810 line-height: 1; 4811 white-space: nowrap; 4812 padding: 11px 14px; 4813 border-radius: 999px; 4814 opacity: 0; 4815 visibility: hidden; 4816 pointer-events: none; 4817 transition: all .22s ease; 4818 box-shadow: 0 8px 22px rgba(0, 0, 0, 0.18); 4819 } 4820 4821 .roco-desktop-whatsapp-float:hover .roco-whatsapp-tooltip { 4822 opacity: 1; 4823 visibility: visible; 4824 transform: translateY(50%) translateX(0); 4825 } 4826 4827 @keyframes rocoDesktopWhatsappShine { 4828 0% { 4829 left: -80%; 4830 } 4831 4832 45% { 4833 left: 130%; 4834 } 4835 4836 100% { 4837 left: 130%; 4838 } 4839 } 4840 } 4841 4842 .rvx-review-info__date { 4843 display: none !important; 4844} 4845 4846 @media (max-width: 768px) { 4847 .roco-desktop-whatsapp-float { 4848 display: none !important; 4849 } 4850 } 4851 </style> 4852 4853
4853<script> 4854 document.addEventListener('DOMContentLoaded', function () { 4855 const whatsappLink = document.getElementById('rocoDesktopWhatsappLink'); 4856 4857 if (whatsappLink) { 4858 const phone = '923176965610'; 4859 const pageUrl = window.location.href; 4860 4861 const productTitleElement = 4862 document.querySelector('.product_title') || 4863 document.querySelector('h1.entry-title') || 4864 document.querySelector('h1'); 4865 4866 const productName = productTitleElement 4867 ? productTitleElement.textContent.trim() 4868 : document.title.replace('| ROCO', '').trim(); 4869 4870 const text = 4871`Hi ROCO, 4872 4873I'm interested in this and would like to check availability and delivery details. 4874 4875Page: ${productName} 4876 4877Link: ${pageUrl}`; 4878 4879 whatsappLink.href = 'https://web.whatsapp.com/send?phone=' + phone + '&text=' + encodeURIComponent(text); 4880 } 4881 }); 4882 </script>
4882 4883 4884
4884<script> 4885console.log("ROCO JS Loaded"); 4886 4887(() => { 4888'use strict'; 4889// ROCO After-Sales Resolution Request - Polished Interaction & Logic Script 4890// --- GLOBAL APPLICATION STATE --- 4891let state = { 4892 activeStepIndex: -1, // -1 means the Introductory Hero screen 4893 requestType: 'missing', // 'delivery', 'configuration', 'missing', 'repair', 'warranty', 'cancellation', 'refund', 'other' 4894 orderNumber: '', 4895 customerName: '', 4896 customerPhone: '', 4897 customerEmail: '', 4898 products: [ 4899 { 4900 name: "", 4901 category: "", 4902 deliveryDate: "", 4903 deliveryDateUnknown: false 4904 } 4905 ], 4906 timingNoticed: '', // 'delivery', '48h', '7d', 'more7d', 'undelivered', 'not_sure' 4907 selectedIssues: [], // Sub-issue tags 4908 issueDescription: '', 4909 isSafeToUse: '', // 'yes', 'no', 'not_sure', 'not_applicable' 4910 attachments: [], // Attachment metadata; actual File objects are stored separately 4911 noEvidenceRightNow: false, 4912 preferredResolution: '', 4913 streetAddress: '', 4914 city: '', 4915 province: '', 4916 isOriginalAddress: 'yes', 4917 contactMethod: '', 4918 contactPeriod: '', 4919 safeToCollect: '', // 'yes', 'no', 'not_sure', 'not_applicable' 4920 caseId: '', 4921 submittedAt: null 4922}; 4923 4924// Actual File objects are kept separately because localStorage cannot retain file contents. 4925const uploadedFilesById = new Map(); 4926 4927// Requests are sent to the ROCO WordPress REST handler. This removes third-party 4928// email branding and sends evidence as genuine email attachments. 4929const SUBMISSION_ENDPOINT = (window.ROCO_AFTER_SALES_CONFIG && window.ROCO_AFTER_SALES_CONFIG.endpoint) 4930 ? window.ROCO_AFTER_SALES_CONFIG.endpoint 4931 : `${window.location.origin}/wp-json/roco/v1/after-sales`; 4932// --- DATA DEFINITIONS --- 4933const ALL_STEPS_FLOW = [ 4934 { id: 'rcoasr-7v9k-step-type', label: 'Request Type', name: 'Incident Category' }, 4935 { id: 'rcoasr-7v9k-step-order', label: 'Order Details', name: 'Order Verification' }, 4936 { id: 'rcoasr-7v9k-step-product', label: 'Product Selection', name: 'Affected Product' }, 4937 { id: 'rcoasr-7v9k-step-timing', label: 'Timing', name: 'Claim Timeline' }, 4938 { id: 'rcoasr-7v9k-step-issues', label: 'Issue Details', name: 'Defect Details' }, 4939 { id: 'rcoasr-7v9k-step-evidence', label: 'Evidence Upload', name: 'Photo Evidence' }, 4940 { id: 'rcoasr-7v9k-step-resolution', label: 'Preferred Resolution', name: 'Expected Help' }, 4941 { id: 'rcoasr-7v9k-step-contact', label: 'Contact & Location', name: 'Contact & Address' }, 4942 { id: 'rcoasr-7v9k-step-review', label: 'Summary Review', name: 'Final Validation' } 4943]; 4944const ISSUE_OPTIONS = { 4945 warranty: [ 4946 'Frame structural cracking', 'Foam cushioning sag', 'Webbing or spring snap', 4947 'Drawer slide friction', 'Hinge misalignment', 'Upholstery stitching split', 4948 'Fabric tear / leather peeling', 'Polish chip / wood cracking', 'MDF swelling / laminate warp', 4949 'Electrical component failure', 'Rusting on metal frame', 'Marble vein fracture', 'Other structural issue' 4950 ], 4951 repair: [ 4952 'Frame loose joints', 'Cushioning re-stuffing', 'Spring adjustment', 4953 'Drawer runner alignment', 'Cabinet door levelling', 'Stitching repair', 4954 'Fabric tear repair', 'Polish touch-up / wood staining', 'Laminate board re-bonding', 4955 'Mechanism oiling / alignment', 'Hardware replacement', 'Glass top buffer repair', 'Other repair concern' 4956 ], 4957 delivery: [ 4958 'Wood scratch or dent', 'Upholstery tear or stain', 'Broken glass, marble or mirror', 4959 'Structural frame break', 'Cardboard packaging puncture', 'Moisture exposure / dampness', 'Incorrect quantity delivered' 4960 ], 4961 configuration: [ 4962 'Wrong product model delivered', 'Wrong dimensions/size delivered', 'Wrong polish finish/wood color', 4963 'Wrong fabric material/shade', 'Wrong modular layout configuration', 'Wrong quantity supplied', 'Other configuration error' 4964 ], 4965 missing: [ 4966 'Missing hardware assembly bolts', 'Missing scatter cushions', 'Missing wooden legs/base feet', 4967 'Missing cabinet drawers', 'Missing dining glass top', 'Missing assembly manual guide', 'Other missing part' 4968 ], 4969 cancellation: [ 4970 'Ordered by mistake', 'Want to swap for a different item', 'Size adjustments needed', 4971 'Delivery lead time is too long', 'Budget constraints / personal reasons', 'Duplicate order placed', 'Other cancellation reason' 4972 ], 4973 refund: [ 4974 'Fulfillment timeline exceeded', 'Configuration error cannot be corrected', 'Structural defect cannot be repaired', 4975 'Technician repair attempt failed', 'Swap model is out of stock', 'Pre-production cancellation request', 'Other refund scenario' 4976 ],
4977 other: [ 4978 'Care and maintenance guidance', 'Share product feedback', 'Assembly help assistance', 4979 'Requesting wood touch-up marker', 'Fabric cleaning information', 'Other after-sales query' 4980 ] 4981}; 4982const RESOLUTION_OPTIONS = { 4983 cancellation: [ 4984 { value: 'cancel', label: 'Cancel order and process refund (subject to advance terms)' }, 4985 { value: 'store_credit', label: 'Cancel order and issue store credit voucher' }, 4986 { value: 'other', label: 'Other — I would like to speak to a coordinator' } 4987 ], 4988 default: [ 4989 { value: 'technician', label: 'Technician visit for onsite adjustment & alignment' }, 4990 { value: 'repair', label: 'Collect product for factory workshop repair' }, 4991 { value: 'part_replace', label: 'Replace the affected component part (cushion, shelf, leg)' }, 4992 { value: 'product_replace', label: 'Replace the complete furniture product' }, 4993 { value: 'correct_order', label: 'Swap item for correct order configuration' }, 4994 { value: 'refund', label: 'Initiate formal refund review (under terms)' }, 4995 { value: 'recommend', label: 'I’m not sure — recommend the best structural resolution' } 4996 ] 4997}; 4998// --- INITIALIZATION --- 4999const ROOT_ID = 'rcoasr-7v9k-application'; 5000let root = null; 5001let initialized = false; 5002let toastTimer = null; 5003const memoryStorage = new Map(); 5004 5005function getById(id) { 5006 return root ? root.querySelector(`#${id}`) : null; 5007} 5008 5009function storageGet(key) { 5010 try { 5011 const storedValue = window.localStorage.getItem(key); 5012 if (storedValue !== null) return storedValue; 5013 } catch (error) { /* Fall back to in-memory storage. */ } 5014 return memoryStorage.has(key) ? memoryStorage.get(key) : null; 5015} 5016function storageSet(key, value) { 5017 const stringValue = String(value); 5018 memoryStorage.set(key, stringValue); 5019 try { window.localStorage.setItem(key, stringValue); } catch (error) { /* In-memory fallback remains available. */ } 5020 return true; 5021} 5022function storageRemove(key) { 5023 memoryStorage.delete(key); 5024 try { window.localStorage.removeItem(key); } catch (error) { /* Storage may be unavailable. */ } 5025} 5026function getLocalDateString(date = new Date()) { 5027 const year = date.getFullYear();
5028 const month = String(date.getMonth() + 1).padStart(2, '0'); 5029 const day = String(date.getDate()).padStart(2, '0'); 5030 return `${year}-${month}-${day}`; 5031} 5032function escapeHtml(value) { 5033 return String(value ?? '') 5034 .replace(/&/g, '&') 5035 .replace(/</g, '<') 5036 .replace(/>/g, '>') 5037 .replace(/"/g, '"') 5038 .replace(/'/g, '''); 5039} 5040function copyText(text) { 5041 if (navigator.clipboard && window.isSecureContext) return navigator.clipboard.writeText(text); 5042 return new Promise((resolve, reject) => { 5043 const textarea = document.createElement('textarea'); 5044 textarea.value = text; 5045 textarea.setAttribute('readonly', ''); 5046 textarea.style.position = 'fixed'; 5047 textarea.style.opacity = '0'; 5048 document.body.appendChild(textarea); 5049 textarea.select(); 5050 try { document.execCommand('copy') ? resolve() : reject(new Error('Copy failed')); } 5051 catch (error) { reject(error); } 5052 finally { textarea.remove(); } 5053 }); 5054} 5055function scrollComponentToTop() { 5056 if (root) root.scrollIntoView({ behavior: 'smooth', block: 'start' }); 5057} 5058function boot() { 5059 if (initialized) return; 5060 root = document.getElementById(ROOT_ID); 5061 if (!root) return; 5062 initialized = true; 5063 initDOM(); 5064 loadAutosave(); 5065 handleUrlParams(); 5066 updateWizardDisplay(); 5067} 5068if (document.readyState === 'loading') { 5069 document.addEventListener('DOMContentLoaded', boot, { once: true }); 5070} else { 5071 boot(); 5072} 5073// Cache DOM elements 5074let elements = {}; 5075function initDOM() { 5076 elements = { 5077 hero: getById('rcoasr-7v9k-hero-screen'), 5078 wizard: getById('rcoasr-7v9k-wizard-screen'), 5079 success: getById('rcoasr-7v9k-success-screen'), 5080 progressBar: getById('rcoasr-7v9k-progress-fill'), 5081 progressStepText: getById('rcoasr-7v9k-progress-step-text'), 5082 progressLabelText: getById('rcoasr-7v9k-progress-label-text'), 5083 stepContainer: getById('rcoasr-7v9k-step-container'), 5084 btnStart: getById('rcoasr-7v9k-btn-start'), 5085 btnBack: getById('rcoasr-7v9k-btn-back'), 5086 btnContinue: getById('rcoasr-7v9k-btn-continue'), 5087 btnStartOver: getById('rcoasr-7v9k-btn-start-over'), 5088 btnStartOverConfirm: getById('rcoasr-7v9k-btn-start-over-confirm'), 5089 btnStartOverCancel: getById('rcoasr-7v9k-btn-start-over-cancel'), 5090 modalOverlay: getById('rcoasr-7v9k-modal-overlay'), 5091 toast: getById('rcoasr-7v9k-toast'), 5092 toastText: getById('rcoasr-7v9k-toast-text'), 5093 submitAnother: getById('rcoasr-7v9k-btn-submit-another'), 5094 steps: {} 5095 }; 5096 // Add individual step cards to elements 5097 ALL_STEPS_FLOW.forEach(step => { 5098 elements.steps[step.id] = getById(step.id); 5099 }); 5100 // Event Listeners 5101 elements.btnStart.addEventListener('click', startWizard); 5102 elements.btnBack.addEventListener('click', handleBack); 5103 elements.btnContinue.addEventListener('click', handleContinue); 5104 elements.btnStartOver.addEventListener('click', showStartOverModal); 5105 elements.btnStartOverConfirm.addEventListener('click', confirmStartOver); 5106 elements.btnStartOverCancel.addEventListener('click', hideStartOverModal); 5107 elements.submitAnother.addEventListener('click', confirmStartOver); 5108 // Set up inputs binding 5109 setupInputsBinding(); 5110 setupUploadArea(); 5111} 5112// --- KEYBOARD ACCESSIBILITY HELPER --- 5113function bindKeyboardSelect(element, clickCallback) { 5114 element.addEventListener('keydown', (e) => { 5115 if (e.key === ' ' || e.key === 'Enter') { 5116 e.preventDefault(); // Prevent screen scroll 5117 clickCallback(); 5118 } 5119 }); 5120} 5121// --- AUTOSAVE & STATE PERSISTENCE --- 5122function saveState() { 5123 if (state.activeStepIndex >= 0 && state.activeStepIndex < getActiveFlow().length) { 5124 // Clone state and strip previewUrl data to keep localStorage tiny and safe from QuotaExceeded errors 5125 const stateToSave = JSON.parse(JSON.stringify(state)); 5126 stateToSave.attachments.forEach(file => { 5127 delete file.previewUrl; // Strip session-only memory URLs 5128 }); 5129 storageSet('rcoasr-7v9k_after_sales_state_v1', JSON.stringify(stateToSave)); 5130 showToast('Progress saved on this device'); 5131 } 5132} 5133function loadAutosave() { 5134 const saved = storageGet('rcoasr-7v9k_after_sales_state_v1'); 5135 if (saved) { 5136 try { 5137 const parsed = JSON.parse(saved); 5138 if (parsed.caseId && parsed.submittedAt) { 5139 storageRemove('rcoasr-7v9k_after_sales_state_v1'); 5140 return; 5141 } 5142 state = { ...state, ...parsed }; 5143 // File contents cannot be restored from localStorage, so evidence must be selected again. 5144 state.attachments = []; 5145 state.noEvidenceRightNow = false;
5146 uploadedFilesById.clear(); 5147 // Migrate from old single product format if present 5148 if (!state.products || state.products.length === 0) { 5149 let oldName = state.customProductName || ''; 5150 let oldCat = state.customProductCategory || ''; 5151 let oldDate = state.customProductDeliveryDate || ''; 5152 if (state.selectedProduct && state.selectedProduct !== 'custom') { 5153 if (state.selectedProduct === 'desk') { 5154 oldName = 'Alex Desk'; 5155 oldCat = 'desks'; 5156 } else if (state.selectedProduct === 'sofa') { 5157 oldName = 'Custom Upholstered Sofa'; 5158 oldCat = 'sofas'; 5159 } else if (state.selectedProduct === 'dining') { 5160 oldName = 'Wharf Outdoor Dining Set'; 5161 oldCat = 'dining'; 5162 } 5163 oldDate = '2026-07-12'; 5164 } 5165 5166 state.products = [ 5167 { 5168 name: oldName, 5169 category: oldCat, 5170 deliveryDate: oldDate, 5171 deliveryDateUnknown: !oldDate 5172 } 5173 ]; 5174 } 5175 if (state.activeStepIndex >= 0) { 5176 showToast('Restored your unfinished request'); 5177 } 5178 } catch (e) { 5179 console.error('Error parsing saved state', e); 5180 } 5181 } 5182} 5183function showStartOverModal() { 5184 elements.modalOverlay.classList.add('rcoasr-7v9k-state-active'); 5185} 5186function hideStartOverModal() { 5187 elements.modalOverlay.classList.remove('rcoasr-7v9k-state-active'); 5188} 5189function confirmStartOver() { 5190 storageRemove('rcoasr-7v9k_after_sales_state_v1'); 5191 hideStartOverModal(); 5192 // Reset state 5193 state = { 5194 activeStepIndex: -1, 5195 requestType: 'missing', 5196 orderNumber: '', 5197 customerName: '', 5198 customerPhone: '', 5199 customerEmail: '', 5200 products: [ 5201 { 5202 name: "", 5203 category: "", 5204 deliveryDate: "", 5205 deliveryDateUnknown: false 5206 } 5207 ], 5208 timingNoticed: '', 5209 selectedIssues: [], 5210 issueDescription: '', 5211 isSafeToUse: '', 5212 attachments: [], 5213 noEvidenceRightNow: false, 5214 preferredResolution: '', 5215 streetAddress: '', 5216 city: '', 5217 province: '', 5218 isOriginalAddress: 'yes', 5219 contactMethod: '', 5220 contactPeriod: '', 5221 safeToCollect: '', 5222 caseId: '', 5223 submittedAt: null 5224 }; 5225 uploadedFilesById.clear(); 5226 // Reset UI elements 5227 root.querySelectorAll('.rcoasr-7v9k-select-card').forEach(c => { 5228 c.classList.remove('rcoasr-7v9k-state-selected'); 5229 c.setAttribute('aria-checked', 'false'); 5230 }); 5231 const defaultTypeCard = root.querySelector('.rcoasr-7v9k-select-card[data-type="missing"]'); 5232 if (defaultTypeCard) { 5233 defaultTypeCard.classList.add('rcoasr-7v9k-state-selected'); 5234 defaultTypeCard.setAttribute('aria-checked', 'true'); 5235 } 5236 root.querySelectorAll('input[type="text"], input[type="tel"], input[type="email"], textarea, select').forEach(input => { 5237 input.value = ''; 5238 input.classList.remove('rcoasr-7v9k-state-invalid'); 5239 const parent = input.closest('.rcoasr-7v9k-form-group'); 5240 if (parent) parent.classList.remove('rcoasr-7v9k-state-has-error'); 5241 }); 5242 root.querySelectorAll('input[type="checkbox"]').forEach(cb => cb.checked = false); 5243 // Reset file previews 5244 const previewList = getById('rcoasr-7v9k-file-preview-list'); 5245 if (previewList) previewList.innerHTML = ''; 5246 const evidenceCheckbox = getById('rcoasr-7v9k-evidence-checkbox'); 5247 if (evidenceCheckbox) evidenceCheckbox.checked = false; 5248 const uploadContainer = elements.steps['rcoasr-7v9k-step-evidence'] ? elements.steps['rcoasr-7v9k-step-evidence'].querySelector('.rcoasr-7v9k-upload-container') : null; 5249 if (uploadContainer) { 5250 uploadContainer.style.opacity = '1'; 5251 uploadContainer.style.pointerEvents = 'auto'; 5252 } 5253 syncProductFieldsFromState(); 5254 updateWizardDisplay(); 5255} 5256function showToast(text) { 5257 if (!elements.toast || !elements.toastText) return; 5258 elements.toastText.innerText = text; 5259 elements.toast.classList.add('rcoasr-7v9k-state-active'); 5260 if (toastTimer) window.clearTimeout(toastTimer); 5261 toastTimer = window.setTimeout(() => { 5262 elements.toast.classList.remove('rcoasr-7v9k-state-active'); 5263 toastTimer = null; 5264 }, 2200); 5265} 5266// --- URL QUERY PARAMETERS HANDLER --- 5267function handleUrlParams() {
5268 const urlParams = new URLSearchParams(window.location.search); 5269 const type = urlParams.get('type'); 5270 if (type) { 5271 const typeMapping = { 5272 'warranty': 'warranty', 5273 'delivery': 'delivery', 5274 'repair': 'repair', 5275 'cancellation': 'cancellation', 5276 'refund': 'refund' 5277 }; 5278 if (typeMapping[type]) { 5279 state.requestType = typeMapping[type]; 5280 5281 setTimeout(() => { 5282 const card = root.querySelector(`.rcoasr-7v9k-select-card[data-type="${state.requestType}"]`); 5283 if (card) { 5284 card.click(); 5285 } 5286 }, 50); 5287 } 5288 } 5289} 5290// --- ROUTE BRANCHING & CLAMPING --- 5291function getActiveFlow() { 5292 if (state.requestType === 'cancellation') { 5293 return ALL_STEPS_FLOW.filter(step => step.id !== 'rcoasr-7v9k-step-timing' && step.id !== 'rcoasr-7v9k-step-evidence'); 5294 } 5295 return ALL_STEPS_FLOW; 5296} 5297function getCurrentStepId() { 5298 const flow = getActiveFlow(); 5299 if (state.activeStepIndex >= 0 && state.activeStepIndex < flow.length) { 5300 return flow[state.activeStepIndex].id; 5301 } 5302 return null; 5303} 5304// Handles switching routes when user edits requestType card on Step 1 5305function handleRequestTypeChange(newType) { 5306 if (state.requestType === newType) return; 5307 state.requestType = newType; 5308 // Clear type-dependent invalid variables 5309 state.selectedIssues = []; 5310 state.preferredResolution = ''; 5311 // If shifting to cancellation, clear physical collection variables 5312 if (newType === 'cancellation') { 5313 state.attachments = []; 5314 uploadedFilesById.clear(); 5315 state.noEvidenceRightNow = false; 5316 state.timingNoticed = 'undelivered'; 5317 state.safeToCollect = 'not_applicable'; 5318 state.isSafeToUse = 'not_applicable'; 5319 } else { 5320 // Shifting back from cancellation to regular damage requests 5321 if (state.timingNoticed === 'undelivered') { 5322 state.timingNoticed = ''; 5323 } 5324 if (state.safeToCollect === 'not_applicable') { 5325 state.safeToCollect = ''; 5326 } 5327 if (state.isSafeToUse === 'not_applicable') { 5328 state.isSafeToUse = ''; 5329 } 5330 } 5331 // Clamp step bounds just in case 5332 const flow = getActiveFlow(); 5333 if (state.activeStepIndex >= flow.length) { 5334 state.activeStepIndex = flow.length - 1; 5335 } 5336 saveState(); 5337} 5338// --- DISPLAY CONTROL & RENDER --- 5339function startWizard() { 5340 state.activeStepIndex = 0; 5341 updateWizardDisplay(); 5342} 5343function updateWizardDisplay() { 5344 const flow = getActiveFlow(); 5345 // Bounds checking and clamping 5346 if (state.activeStepIndex >= flow.length && !state.caseId) { 5347 state.activeStepIndex = flow.length - 1; 5348 } 5349 if (state.activeStepIndex === -1) { 5350 elements.hero.style.display = 'block'; 5351 elements.wizard.style.display = 'none'; 5352 elements.success.style.display = 'none'; 5353 scrollComponentToTop(); 5354 return; 5355 } 5356 if (state.activeStepIndex >= flow.length) { 5357 elements.hero.style.display = 'none'; 5358 elements.wizard.style.display = 'none'; 5359 elements.success.style.display = 'block'; 5360 renderSuccessScreen(); 5361 scrollComponentToTop(); 5362 return; 5363 } 5364 elements.hero.style.display = 'none'; 5365 elements.wizard.style.display = 'block'; 5366 elements.success.style.display = 'none'; 5367 const currentStepId = getCurrentStepId(); 5368 ALL_STEPS_FLOW.forEach(step => { 5369 const el = elements.steps[step.id]; 5370 if (step.id === currentStepId) { 5371 el.classList.add('rcoasr-7v9k-state-active'); 5372 } else { 5373 el.classList.remove('rcoasr-7v9k-state-active'); 5374 } 5375 }); 5376 renderStepContent(currentStepId); 5377 // Progress UI rendering 5378 const activeStepMeta = flow[state.activeStepIndex]; 5379 const percent = ((state.activeStepIndex + 1) / flow.length) * 100; 5380 elements.progressBar.style.width = `${percent}%`; 5381 getById('rcoasr-7v9k-progressbar').setAttribute('aria-valuenow', Math.round(percent)); 5382 elements.progressStepText.innerText = `Step ${state.activeStepIndex + 1} of ${flow.length}`; 5383 elements.progressLabelText.innerText = activeStepMeta.name || activeStepMeta.label; 5384 elements.btnBack.style.display = 'inline-flex'; 5385 if (currentStepId === 'rcoasr-7v9k-step-review') { 5386 elements.btnContinue.innerHTML = `Submit Request <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>`; 5387 } else {
5388 elements.btnContinue.innerHTML = `Continue <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>`; 5389 } 5390 scrollComponentToTop(); 5391} 5392// --- CONTEXT STEP RENDERING --- 5393function renderStepContent(stepId) { 5394 switch (stepId) { 5395 case 'rcoasr-7v9k-step-product': 5396 syncProductFieldsFromState(); 5397 break; 5398 case 'rcoasr-7v9k-step-timing': 5399 renderTimingMessages(); 5400 break; 5401 case 'rcoasr-7v9k-step-issues': 5402 renderIssuesOptions(); 5403 break; 5404 case 'rcoasr-7v9k-step-resolution': 5405 renderResolutionOptions(); 5406 break; 5407 case 'rcoasr-7v9k-step-contact': 5408 renderContactLocationDetails(); 5409 break; 5410 case 'rcoasr-7v9k-step-review': 5411 renderReviewSummary(); 5412 break; 5413 } 5414} 5415function renderTimingMessages() { 5416 const container = getById('rcoasr-7v9k-timing-notice-container'); 5417 container.innerHTML = ''; 5418 let message = ''; 5419 let title = 'Reporting Timelines'; 5420 if (state.requestType === 'delivery') { 5421 title = 'Visible Delivery Defect Policy'; 5422 message = 'Visible logistics damage, incorrect items, finish blemishes or missing accessories must be reported within 48 hours of delivery. Late submissions are subject to extra management review.'; 5423 } else if (state.requestType === 'repair') { 5424 title = 'Assembly & Fitment Window'; 5425 message = 'Assembly issues, leveling misalignments, loose joints or hardware frictions must normally be reported within 7 days of assembly/handover.'; 5426 } else if (state.requestType === 'warranty') { 5427 title = 'Warranty Coverage Policy'; 5428 message = 'Developing manufacturing wood splits, structural frame cracks, or foam elasticity loss are covered during the product\'s warranty period. There is no 7-day restriction for hidden defects.'; 5429 } else { 5430 message = 'Provide a precise timeline to help our workshop team evaluate details accurately.'; 5431 } 5432 container.innerHTML = ` 5433 <div class="rcoasr-7v9k-notice-box"> 5434 <div class="rcoasr-7v9k-notice-icon"> 5435 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"> 5436 <circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/> 5437 </svg> 5438 </div> 5439 <div class="rcoasr-7v9k-notice-content"> 5440 <h4>${title}</h4> 5441 <p>${message}</p> 5442 </div> 5443 </div> 5444 `; 5445} 5446function renderIssuesOptions() { 5447 const listContainer = getById('rcoasr-7v9k-issues-checkbox-list'); 5448 listContainer.innerHTML = ''; 5449 const options = ISSUE_OPTIONS[state.requestType] || ISSUE_OPTIONS['other']; 5450 options.forEach((opt, idx) => { 5451 const isChecked = state.selectedIssues.includes(opt); 5452 const item = document.createElement('div'); 5453 item.className = 'rcoasr-7v9k-checkbox-group'; 5454 item.innerHTML = ` 5455 <label class="rcoasr-7v9k-label-checkbox" for="rcoasr-7v9k-sub-issue-${idx}"> 5456 <input type="checkbox" id="rcoasr-7v9k-sub-issue-${idx}" name="rcoasr-7v9k_sub_issue" value="${opt}" ${isChecked ? 'checked' : ''}> 5457 <span>${opt}</span> 5458 </label> 5459 `; 5460 listContainer.appendChild(item); 5461 5462 item.querySelector('input').addEventListener('change', (e) => { 5463 if (e.target.checked) { 5464 if (!state.selectedIssues.includes(opt)) { 5465 state.selectedIssues.push(opt); 5466 } 5467 } else { 5468 state.selectedIssues = state.selectedIssues.filter(item => item !== opt); 5469 } 5470 saveState(); 5471 }); 5472 }); 5473 const textarea = getById('rcoasr-7v9k-issue-desc-textarea'); 5474 const counter = getById('rcoasr-7v9k-desc-char-count'); 5475 textarea.value = state.issueDescription; 5476 counter.innerText = `${state.issueDescription.length} characters`; 5477 textarea.oninput = (e) => { 5478 state.issueDescription = e.target.value; 5479 counter.innerText = `${state.issueDescription.length} characters`; 5480 saveState(); 5481 }; 5482 const safetyInputs = root.querySelectorAll('[name="rcoasr-7v9k_safety_status"]'); 5483 safetyInputs.forEach(input => { 5484 input.checked = (input.value === state.isSafeToUse); 5485 input.addEventListener('change', (e) => { 5486 state.isSafeToUse = e.target.value; 5487 renderSafetyNotice(); 5488 saveState(); 5489 }); 5490 }); 5491 renderSafetyNotice(); 5492}
5493function renderSafetyNotice() { 5494 const container = getById('rcoasr-7v9k-safety-notice-container'); 5495 if (state.isSafeToUse === 'no' || state.isSafeToUse === 'not_sure') { 5496 container.innerHTML = ` 5497 <div class="rcoasr-7v9k-notice-box rcoasr-7v9k-variant-safety"> 5498 <div class="rcoasr-7v9k-notice-icon"> 5499 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"> 5500 <path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/> 5501 </svg> 5502 </div> 5503 <div class="rcoasr-7v9k-notice-content"> 5504 <h4>Precautionary Action Required</h4> 5505 <p>Please stop using the affected furniture item immediately. Using unstable structural frames, compromised support webbing, or broken glass fittings could cause product damage or personal hazard.</p> 5506 </div> 5507 </div> 5508 `; 5509 } else { 5510 container.innerHTML = ''; 5511 } 5512} 5513function renderResolutionOptions() { 5514 const container = getById('rcoasr-7v9k-resolutions-radio-list'); 5515 container.innerHTML = ''; 5516 const options = (state.requestType === 'cancellation') 5517 ? RESOLUTION_OPTIONS.cancellation 5518 : RESOLUTION_OPTIONS.default; 5519 options.forEach(opt => { 5520 const isChecked = (state.preferredResolution === opt.value); 5521 const item = document.createElement('div'); 5522 item.className = 'rcoasr-7v9k-select-card'; 5523 item.setAttribute('tabindex', '0'); 5524 item.setAttribute('role', 'radio'); 5525 item.setAttribute('aria-checked', isChecked ? 'true' : 'false'); 5526 if (isChecked) item.classList.add('rcoasr-7v9k-state-selected'); 5527 5528 item.innerHTML = ` 5529 <div class="rcoasr-7v9k-card-checkbox"></div> 5530 <div class="rcoasr-7v9k-card-content"> 5531 <div class="rcoasr-7v9k-card-title" style="font-size: 14.5px; font-weight:500;">${opt.label}</div> 5532 </div> 5533 `; 5534 const clickHandler = () => { 5535 container.querySelectorAll('.rcoasr-7v9k-select-card').forEach(c => { 5536 c.classList.remove('rcoasr-7v9k-state-selected'); 5537 c.setAttribute('aria-checked', 'false'); 5538 }); 5539 item.classList.add('rcoasr-7v9k-state-selected'); 5540 item.setAttribute('aria-checked', 'true'); 5541 state.preferredResolution = opt.value; 5542 saveState(); 5543 }; 5544 item.addEventListener('click', clickHandler); 5545 bindKeyboardSelect(item, clickHandler); 5546 container.appendChild(item); 5547 }); 5548} 5549function renderContactLocationDetails() { 5550 const colContainer = getById('rcoasr-7v9k-collectible-container'); 5551 if (['delivery', 'configuration', 'missing', 'repair', 'warranty'].includes(state.requestType)) { 5552 colContainer.style.display = 'block'; 5553 5554 const collectionInputs = root.querySelectorAll('[name="rcoasr-7v9k_collectible_status"]'); 5555 collectionInputs.forEach(input => { 5556 input.checked = (input.value === state.safeToCollect); 5557 input.addEventListener('change', (e) => { 5558 state.safeToCollect = e.target.value; 5559 saveState(); 5560 }); 5561 }); 5562 } else { 5563 colContainer.style.display = 'none'; 5564 } 5565} 5566function renderReviewSummary() { 5567 const summaryArea = getById('rcoasr-7v9k-review-summary-area'); 5568 summaryArea.innerHTML = ''; 5569 const getStepIndexById = (id) => { 5570 return getActiveFlow().findIndex(s => s.id === id); 5571 }; 5572 // 1. Request Type 5573 const sType = document.createElement('div'); 5574 sType.className = 'rcoasr-7v9k-review-section'; 5575 sType.innerHTML = ` 5576 <div class="rcoasr-7v9k-review-header"> 5577 <h3 class="rcoasr-7v9k-review-title">Request Category</h3> 5578 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-type" aria-label="Edit Request Category">Edit</a> 5579 </div> 5580 <div class="rcoasr-7v9k-review-row"> 5581 <div class="rcoasr-7v9k-review-label">Category Type</div> 5582 <div class="rcoasr-7v9k-review-value" style="text-transform: capitalize;">${state.requestType.replace('cancellation', 'Order Cancellation').replace('delivery', 'Delivery Damage').replace('configuration', 'Wrong Product/Configuration').replace('missing', 'Missing Components').replace('repair', 'Repairs & Adjustments').replace('warranty', 'Warranty Claim').replace('refund', 'Refund Review').replace('other', 'Other Support')}</div> 5583 </div> 5584 `; 5585 summaryArea.appendChild(sType); 5586 // 2. Order Information 5587 const sOrder = document.createElement('div'); 5588 sOrder.className = 'rcoasr-7v9k-review-section'; 5589 sOrder.innerHTML = ` 5590 <div class="rcoasr-7v9k-review-header"> 5591 <h3 class="rcoasr-7v9k-review-title">Order Information</h3> 5592 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-order" aria-label="Edit Order Details">Edit</a> 5593 </div> 5594 <div class="rcoasr-7v9k-review-row"> 5595 <div class="rcoasr-7v9k-review-label">Invoice or Order #</div> 5596 <div class="rcoasr-7v9k-review-value">${escapeHtml(state.orderNumber || '—')}</div> 5597 </div> 5598 <div class="rcoasr-7v9k-review-row"> 5599 <div class="rcoasr-7v9k-review-label">Customer Name</div> 5600 <div class="rcoasr-7v9k-review-value">${escapeHtml(state.customerName || '—')}</div> 5601 </div> 5602 <div class="rcoasr-7v9k-review-row"> 5603 <div class="rcoasr-7v9k-review-label">Phone Number</div> 5604 <div class="rcoasr-7v9k-review-value">${escapeHtml(state.customerPhone || '—')}</div> 5605 </div> 5606 ${state.customerEmail ? ` 5607 <div class="rcoasr-7v9k-review-row"> 5608 <div class="rcoasr-7v9k-review-label">Email Address</div> 5609 <div class="rcoasr-7v9k-review-value">${escapeHtml(state.customerEmail)}</div> 5610 </div>` : ''} 5611 `; 5612 summaryArea.appendChild(sOrder); 5613 // 3. Products List Summary 5614 let prodMarkup = '';
5615 state.products.forEach((prod, index) => { 5616 const catLabel = getCategoryLabel(prod.category); 5617 const dateText = prod.deliveryDateUnknown ? "Date not remembered" : (prod.deliveryDate || '—'); 5618 5619 prodMarkup += ` 5620 <div class="rcoasr-7v9k-review-row" style="${index > 0 ? 'border-top:1px dashed var(--rcoasr-7v9k-bronze-light); padding-top:12px; margin-top:12px;' : ''}"> 5621 <div class="rcoasr-7v9k-review-label">Product ${index + 1}</div> 5622 <div class="rcoasr-7v9k-review-value"> 5623 <strong>${escapeHtml(prod.name || '—')}</strong><br> 5624 <span style="font-size:12px; opacity:0.8;">Category: ${catLabel} | Delivery: ${dateText}</span> 5625 </div> 5626 </div> 5627 `; 5628 }); 5629 const sProduct = document.createElement('div'); 5630 sProduct.className = 'rcoasr-7v9k-review-section'; 5631 sProduct.innerHTML = ` 5632 <div class="rcoasr-7v9k-review-header"> 5633 <h3 class="rcoasr-7v9k-review-title">Affected Products</h3> 5634 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-product" aria-label="Edit Affected Products Details">Edit</a> 5635 </div> 5636 ${prodMarkup} 5637 `; 5638 summaryArea.appendChild(sProduct); 5639 // 4. Timing 5640 if (getActiveFlow().some(s => s.id === 'rcoasr-7v9k-step-timing')) { 5641 const timingMap = { 5642 'delivery': 'At delivery handover', 5643 '48h': 'Within 48 hours after delivery', 5644 '7d': 'Within 7 days after delivery', 5645 'more7d': 'More than 7 days after delivery', 5646 'undelivered': 'Product has not been delivered yet', 5647 'not_sure': 'I’m not sure' 5648 }; 5649 const sTiming = document.createElement('div'); 5650 sTiming.className = 'rcoasr-7v9k-review-section'; 5651 sTiming.innerHTML = ` 5652 <div class="rcoasr-7v9k-review-header"> 5653 <h3 class="rcoasr-7v9k-review-title">Incident Timing</h3> 5654 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-timing" aria-label="Edit Incident Timing Details">Edit</a> 5655 </div> 5656 <div class="rcoasr-7v9k-review-row"> 5657 <div class="rcoasr-7v9k-review-label">Noticed Timeline</div> 5658 <div class="rcoasr-7v9k-review-value">${timingMap[state.timingNoticed] || '—'}</div> 5659 </div> 5660 `; 5661 summaryArea.appendChild(sTiming); 5662 } 5663 // 5. Issues & Description 5664 const sIssues = document.createElement('div'); 5665 sIssues.className = 'rcoasr-7v9k-review-section'; 5666 sIssues.innerHTML = ` 5667 <div class="rcoasr-7v9k-review-header"> 5668 <h3 class="rcoasr-7v9k-review-title">Incident Details</h3> 5669 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-issues" aria-label="Edit Incident Details">Edit</a> 5670 </div> 5671 <div class="rcoasr-7v9k-review-row"> 5672 <div class="rcoasr-7v9k-review-label">Specific Concerns</div> 5673 <div class="rcoasr-7v9k-review-value"> 5674 ${state.selectedIssues.length > 0 ? ` 5675 <ul> 5676 ${state.selectedIssues.map(i => `<li>• ${i}</li>`).join('')} 5677 </ul>` : 'General Concern'} 5678 </div> 5679 </div> 5680 <div class="rcoasr-7v9k-review-row"> 5681 <div class="rcoasr-7v9k-review-label">Detailed Description</div> 5682 <div class="rcoasr-7v9k-review-value" style="white-space: pre-line;">${escapeHtml(state.issueDescription || '—')}</div> 5683 </div> 5684 <div class="rcoasr-7v9k-review-row"> 5685 <div class="rcoasr-7v9k-review-label">Safe to Use?</div> 5686 <div class="rcoasr-7v9k-review-value" style="text-transform: capitalize;">${state.isSafeToUse || '—'}</div> 5687 </div> 5688 `; 5689 summaryArea.appendChild(sIssues); 5690 // 6. Evidence 5691 if (getActiveFlow().some(s => s.id === 'rcoasr-7v9k-step-evidence')) { 5692 const sEvidence = document.createElement('div'); 5693 sEvidence.className = 'rcoasr-7v9k-review-section'; 5694 sEvidence.innerHTML = ` 5695 <div class="rcoasr-7v9k-review-header"> 5696 <h3 class="rcoasr-7v9k-review-title">Visual Evidence</h3> 5697 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-evidence" aria-label="Edit Visual Evidence Uploads">Edit</a> 5698 </div> 5699 <div class="rcoasr-7v9k-review-row"> 5700 <div class="rcoasr-7v9k-review-label">Evidence Uploaded</div> 5701 <div class="rcoasr-7v9k-review-value"> 5702 ${state.noEvidenceRightNow ? 'I cannot upload evidence right now (will provide via WhatsApp coordinator)' : 5703 (state.attachments.length > 0 ? ` 5704 <div class="rcoasr-7v9k-review-attachments"> 5705 ${state.attachments.map(file => ` 5706 <div class="rcoasr-7v9k-review-file-badge"> 5707 <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 5708 <path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"/> 5709 </svg>
5710 <span>${escapeHtml(file.name)} (${(file.size / (1024 * 1024)).toFixed(2)} MB)</span> 5711 </div> 5712 `).join('')} 5713 </div>` : 'No files uploaded')} 5714 </div> 5715 </div> 5716 `; 5717 summaryArea.appendChild(sEvidence); 5718 } 5719 // 7. Resolution 5720 const resMap = { 5721 'cancel': 'Cancel order and process refund', 5722 'store_credit': 'Cancel order and issue store credit', 5723 'technician': 'Technician visit for onsite adjustment', 5724 'repair': 'Collect product for factory workshop repair', 5725 'part_replace': 'Replace the affected component part', 5726 'product_replace': 'Replace the complete product', 5727 'correct_order': 'Swap item for correct order configuration', 5728 'refund': 'Initiate formal refund review', 5729 'recommend': 'I’m not sure — recommend best option', 5730 'other': 'Other post-order support' 5731 }; 5732 const sResolution = document.createElement('div'); 5733 sResolution.className = 'rcoasr-7v9k-review-section'; 5734 sResolution.innerHTML = ` 5735 <div class="rcoasr-7v9k-review-header"> 5736 <h3 class="rcoasr-7v9k-review-title">Preferred Resolution</h3> 5737 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-resolution" aria-label="Edit Preferred Resolution Options">Edit</a> 5738 </div> 5739 <div class="rcoasr-7v9k-review-row"> 5740 <div class="rcoasr-7v9k-review-label">Resolution Path</div> 5741 <div class="rcoasr-7v9k-review-value">${resMap[state.preferredResolution] || '—'}</div> 5742 </div> 5743 `; 5744 summaryArea.appendChild(sResolution); 5745 // 8. Location & Contact 5746 let addrMarkup = ''; 5747 if (['delivery', 'configuration', 'missing', 'repair', 'warranty'].includes(state.requestType)) { 5748 addrMarkup = ` 5749 <div class="rcoasr-7v9k-review-row"> 5750 <div class="rcoasr-7v9k-review-label">Furniture Address</div> 5751 <div class="rcoasr-7v9k-review-value">${escapeHtml(state.streetAddress)}, ${escapeHtml(state.city)}, ${escapeHtml(state.province)}</div> 5752 </div> 5753 <div class="rcoasr-7v9k-review-row"> 5754 <div class="rcoasr-7v9k-review-label">Original Address?</div> 5755 <div class="rcoasr-7v9k-review-value" style="text-transform: capitalize;">${state.isOriginalAddress}</div> 5756 </div> 5757 <div class="rcoasr-7v9k-review-row"> 5758 <div class="rcoasr-7v9k-review-label">Component Packed?</div> 5759 <div class="rcoasr-7v9k-review-value" style="text-transform: capitalize;">${state.safeToCollect || 'Not applicable'}</div> 5760 </div> 5761 `; 5762 } else { 5763 addrMarkup = ` 5764 <div class="rcoasr-7v9k-review-row"> 5765 <div class="rcoasr-7v9k-review-label">Customer City</div> 5766 <div class="rcoasr-7v9k-review-value">${escapeHtml(state.city || '—')} ${state.province ? `, ${state.province}` : ''}</div> 5767 </div> 5768 `; 5769 } 5770 const sContact = document.createElement('div'); 5771 sContact.className = 'rcoasr-7v9k-review-section'; 5772 sContact.innerHTML = ` 5773 <div class="rcoasr-7v9k-review-header"> 5774 <h3 class="rcoasr-7v9k-review-title">Location & Contact</h3> 5775 <a href="#" class="rcoasr-7v9k-review-edit-link" data-step-id="rcoasr-7v9k-step-contact" aria-label="Edit Location and Preferred Contact Options">Edit</a> 5776 </div> 5777 ${addrMarkup} 5778 <div class="rcoasr-7v9k-review-row"> 5779 <div class="rcoasr-7v9k-review-label">Contact Method</div> 5780 <div class="rcoasr-7v9k-review-value" style="text-transform: capitalize;">${state.contactMethod || '—'}</div> 5781 </div> 5782 <div class="rcoasr-7v9k-review-row"> 5783 <div class="rcoasr-7v9k-review-label">Preferred Time</div> 5784 <div class="rcoasr-7v9k-review-value" style="text-transform: capitalize;">${state.contactPeriod || '—'}</div> 5785 </div> 5786 `; 5787 summaryArea.appendChild(sContact); 5788 // Bind change listeners to edit buttons 5789 summaryArea.querySelectorAll('.rcoasr-7v9k-review-edit-link').forEach(link => { 5790 link.addEventListener('click', (e) => { 5791 e.preventDefault(); 5792 const targetStepId = e.target.getAttribute('data-step-id'); 5793 const idx = getStepIndexById(targetStepId); 5794 if (idx !== -1) { 5795 state.activeStepIndex = idx; 5796 updateWizardDisplay(); 5797 } 5798 }); 5799 }); 5800}
5801function renderSuccessScreen() { 5802 getById('rcoasr-7v9k-success-case-id').innerText = state.caseId; 5803 getById('rcoasr-7v9k-success-type').innerText = state.requestType.replace('cancellation', 'Order Cancellation').replace('delivery', 'Delivery Damage').replace('configuration', 'Wrong Product/Configuration').replace('missing', 'Missing Components').replace('repair', 'Repairs & Adjustments').replace('warranty', 'Warranty Claim').replace('refund', 'Refund Review').replace('other', 'Other Support'); 5804 getById('rcoasr-7v9k-success-date').innerText = new Date(state.submittedAt).toLocaleDateString('en-US', { 5805 year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' 5806 }); 5807 getById('rcoasr-7v9k-success-contact').innerText = state.contactMethod.toUpperCase() + ' (' + state.contactPeriod + ')'; 5808 const copyBtn = getById('rcoasr-7v9k-btn-copy'); 5809 copyBtn.onclick = () => { 5810 copyText(state.caseId).then(() => { 5811 showToast('Case ID copied to clipboard'); 5812 copyBtn.innerHTML = ` 5813 <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#1f422b" stroke-width="2.5" style="margin-left:4px;"> 5814 <polyline points="20 6 9 17 4 12"/> 5815 </svg> 5816 `; 5817 setTimeout(() => { 5818 copyBtn.innerHTML = ` 5819 <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="margin-left:4px;"> 5820 <rect x="9" y="9" width="13" height="13" rx="2" ry="2"/> 5821 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/> 5822 </svg> 5823 `; 5824 }, 2000); 5825 }).catch(() => showToast('Copy the Case ID manually')); 5826 }; 5827} 5828// --- INPUTS BINDING --- 5829function setupInputsBinding() { 5830 const typeCards = root.querySelectorAll('#rcoasr-7v9k-step-type .rcoasr-7v9k-select-card'); 5831 typeCards.forEach(card => { 5832 const clickHandler = () => { 5833 typeCards.forEach(c => { 5834 c.classList.remove('rcoasr-7v9k-state-selected'); 5835 c.setAttribute('aria-checked', 'false'); 5836 }); 5837 card.classList.add('rcoasr-7v9k-state-selected'); 5838 card.setAttribute('aria-checked', 'true'); 5839 const newType = card.getAttribute('data-type'); 5840 handleRequestTypeChange(newType); 5841 }; 5842 card.addEventListener('click', clickHandler); 5843 bindKeyboardSelect(card, clickHandler); 5844 }); 5845 const bindTextInput = (id, stateKey) => { 5846 const el = getById(id); 5847 el.value = state[stateKey]; 5848 el.addEventListener('input', (e) => { 5849 state[stateKey] = e.target.value; 5850 el.classList.remove('rcoasr-7v9k-state-invalid'); 5851 const parent = el.closest('.rcoasr-7v9k-form-group'); 5852 if (parent) parent.classList.remove('rcoasr-7v9k-state-has-error'); 5853 saveState(); 5854 }); 5855 }; 5856 bindTextInput('rcoasr-7v9k-input-order', 'orderNumber'); 5857 bindTextInput('rcoasr-7v9k-input-name', 'customerName'); 5858 bindTextInput('rcoasr-7v9k-input-phone', 'customerPhone'); 5859 bindTextInput('rcoasr-7v9k-input-email', 'customerEmail'); 5860 setupProductStepBindings(); 5861 const timingCards = root.querySelectorAll('#rcoasr-7v9k-step-timing .rcoasr-7v9k-select-card'); 5862 const timingNotice = getById('rcoasr-7v9k-timing-context-notice'); 5863 timingCards.forEach(card => { 5864 const timingVal = card.getAttribute('data-timing'); 5865 if (state.timingNoticed === timingVal) { 5866 card.classList.add('rcoasr-7v9k-state-selected'); 5867 card.setAttribute('aria-checked', 'true'); 5868 } 5869 const clickHandler = () => { 5870 timingCards.forEach(c => { 5871 c.classList.remove('rcoasr-7v9k-state-selected'); 5872 c.setAttribute('aria-checked', 'false'); 5873 }); 5874 card.classList.add('rcoasr-7v9k-state-selected'); 5875 card.setAttribute('aria-checked', 'true'); 5876 state.timingNoticed = timingVal; 5877 renderTimingNoticeMessage(timingVal); 5878 saveState(); 5879 }; 5880 card.addEventListener('click', clickHandler); 5881 bindKeyboardSelect(card, clickHandler); 5882 }); 5883 function renderTimingNoticeMessage(val) { 5884 timingNotice.innerHTML = ''; 5885
5886 let isWarning = false; 5887 let message = ''; 5888 let headline = ''; 5889 const isDeliveryIssue = ['delivery', 'configuration', 'missing'].includes(state.requestType); 5890 const isInstallationIssue = ['repair'].includes(state.requestType); 5891 if (val === 'more7d') { 5892 if (isDeliveryIssue) { 5893 isWarning = true; 5894 headline = '48-Hour Report Window Exceeded'; 5895 message = 'Please note: Visible delivery damage or missing components should ideally be reported within 48 hours of delivery under our returns policy. We will still review your request, but our team will need to perform a deeper review and may contact you for further details.'; 5896 } else if (isInstallationIssue) { 5897 isWarning = true; 5898 headline = '7-Day Assembly Window Exceeded'; 5899 message = 'Please note: Installation, assembly, and alignment issues should normally be reported within 7 days of delivery. We will evaluate your request to determine if it is eligible for technician service under our standard repair terms.'; 5900 } 5901 } else if (val === '7d' && isDeliveryIssue) { 5902 isWarning = true; 5903 headline = '48-Hour Report Window Exceeded'; 5904 message = 'Please note: Delivery-related issues (scratches, chips, configuration differences) should be reported within 48 hours of delivery. We will process this request, but it may require extra verification.'; 5905 } 5906 if (isWarning && message) { 5907 timingNotice.innerHTML = ` 5908 <div class="rcoasr-7v9k-notice-box rcoasr-7v9k-variant-warning"> 5909 <div class="rcoasr-7v9k-notice-icon"> 5910 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"> 5911 <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/> 5912 </svg> 5913 </div> 5914 <div class="rcoasr-7v9k-notice-content"> 5915 <h4>${headline}</h4> 5916 <p>${message}</p> 5917 </div> 5918 </div> 5919 `; 5920 } 5921 } 5922 bindTextInput('rcoasr-7v9k-input-address', 'streetAddress'); 5923 bindTextInput('rcoasr-7v9k-input-city', 'city'); 5924 bindTextInput('rcoasr-7v9k-input-province', 'province'); 5925 const addressOriginalInputs = root.querySelectorAll('[name="rcoasr-7v9k_address_original"]'); 5926 addressOriginalInputs.forEach(input => { 5927 input.checked = (input.value === state.isOriginalAddress); 5928 input.addEventListener('change', (e) => { 5929 state.isOriginalAddress = e.target.value; 5930 saveState(); 5931 }); 5932 }); 5933 const contactCards = root.querySelectorAll('#rcoasr-7v9k-contact-method-list .rcoasr-7v9k-select-card'); 5934 contactCards.forEach(card => { 5935 const contactVal = card.getAttribute('data-method'); 5936 if (state.contactMethod === contactVal) { 5937 card.classList.add('rcoasr-7v9k-state-selected'); 5938 card.setAttribute('aria-checked', 'true'); 5939 } 5940 const clickHandler = () => { 5941 contactCards.forEach(c => { 5942 c.classList.remove('rcoasr-7v9k-state-selected'); 5943 c.setAttribute('aria-checked', 'false'); 5944 }); 5945 card.classList.add('rcoasr-7v9k-state-selected'); 5946 card.setAttribute('aria-checked', 'true'); 5947 state.contactMethod = contactVal; 5948 saveState(); 5949 }; 5950 card.addEventListener('click', clickHandler); 5951 bindKeyboardSelect(card, clickHandler); 5952 }); 5953 const periodCards = root.querySelectorAll('#rcoasr-7v9k-contact-period-list .rcoasr-7v9k-select-card'); 5954 periodCards.forEach(card => { 5955 const periodVal = card.getAttribute('data-period'); 5956 if (state.contactPeriod === periodVal) { 5957 card.classList.add('rcoasr-7v9k-state-selected'); 5958 card.setAttribute('aria-checked', 'true'); 5959 } 5960 const clickHandler = () => { 5961 periodCards.forEach(c => { 5962 c.classList.remove('rcoasr-7v9k-state-selected'); 5963 c.setAttribute('aria-checked', 'false'); 5964 }); 5965 card.classList.add('rcoasr-7v9k-state-selected'); 5966 card.setAttribute('aria-checked', 'true'); 5967 state.contactPeriod = periodVal; 5968 saveState(); 5969 }; 5970 card.addEventListener('click', clickHandler); 5971 bindKeyboardSelect(card, clickHandler); 5972 }); 5973} 5974// --- DRAG-AND-DROP FILE UPLOAD --- 5975function setupUploadArea() { 5976 const container = getById('rcoasr-7v9k-drag-drop-area'); 5977 const fileInput = getById('rcoasr-7v9k-file-input'); 5978 const previewList = getById('rcoasr-7v9k-file-preview-list'); 5979 const noEvidenceCheckbox = getById('rcoasr-7v9k-evidence-checkbox'); 5980 if (!container) return; 5981 ['dragenter', 'dragover'].forEach(eventName => { 5982 container.addEventListener(eventName, (e) => { 5983 e.preventDefault(); 5984 container.classList.add('rcoasr-7v9k-state-drag-over'); 5985 }, false); 5986 }); 5987 ['dragleave', 'drop'].forEach(eventName => { 5988 container.addEventListener(eventName, (e) => { 5989 e.preventDefault(); 5990 container.classList.remove('rcoasr-7v9k-state-drag-over'); 5991 }, false); 5992 }); 5993 container.addEventListener('drop', (e) => { 5994 const dt = e.dataTransfer; 5995 const files = dt.files; 5996 handleFiles(files); 5997 }); 5998 fileInput.addEventListener('change', (e) => { 5999 const files = e.target.files; 6000 handleFiles(files); 6001 }); 6002 noEvidenceCheckbox.checked = state.noEvidenceRightNow; 6003 if (state.noEvidenceRightNow) { 6004 container.style.opacity = '0.4'; 6005 container.style.pointerEvents = 'none'; 6006 } 6007 noEvidenceCheckbox.addEventListener('change', (e) => { 6008 state.noEvidenceRightNow = e.target.checked; 6009 if (state.noEvidenceRightNow) { 6010 container.style.opacity = '0.4'; 6011 container.style.pointerEvents = 'none'; 6012 state.attachments = []; 6013 uploadedFilesById.clear(); 6014 previewList.innerHTML = ''; 6015 } else { 6016 container.style.opacity = '1'; 6017 container.style.pointerEvents = 'auto'; 6018 } 6019 saveState(); 6020 }); 6021 renderUploadedFiles(); 6022} 6023function handleFiles(files) { 6024 if (state.noEvidenceRightNow) return; 6025 6026 const fileList = Array.from(files); 6027 const currentCount = state.attachments.length; 6028 6029 if (currentCount + fileList.length > 3) { 6030 alert('You can upload a maximum of 3 files total.'); 6031 return; 6032 } 6033 6034 const maxTotalSize = 10 * 1024 * 1024; 6035 const currentTotalSize = Array.from(uploadedFilesById.values()) 6036 .reduce((total, file) => total + file.size, 0); 6037 const incomingTotalSize = fileList.reduce((total, file) => total + file.size, 0); 6038 6039 if (currentTotalSize + incomingTotalSize > maxTotalSize) { 6040 alert('The combined size of all uploaded files must not exceed 10MB.'); 6041 return; 6042 } 6043 6044 fileList.forEach(file => { 6045 const isImage = file.type.startsWith('image/'); 6046 const isVideo = file.type.startsWith('video/'); 6047 6048 if (!isImage && !isVideo) { 6049 alert(`File "${file.name}" is not a supported image or video.`); 6050 return; 6051 } 6052 6053 const fileId = `file-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`; 6054 const fileRecord = { 6055 id: fileId, 6056 name: file.name, 6057 size: file.size, 6058 type: file.type, 6059 previewUrl: 'https://placehold.co/60x60/8b6b4b/ffffff?text=FILE', 6060 isImage, 6061 isVideo, 6062 uploading: true 6063 }; 6064 6065 uploadedFilesById.set(fileId, file); 6066 state.attachments.push(fileRecord); 6067 renderUploadedFiles(); 6068 6069 const reader = new FileReader(); 6070 reader.onload = (event) => { 6071 const match = state.attachments.find(item => item.id === fileId); 6072 if (match) { 6073 match.previewUrl = isImage 6074 ? event.target.result 6075 : 'https://placehold.co/60x60/8b6b4b/ffffff?text=VIDEO'; 6076 match.uploading = false;
6077 renderUploadedFiles(); 6078 saveState(); 6079 } 6080 }; 6081 reader.onerror = () => { 6082 const match = state.attachments.find(item => item.id === fileId); 6083 if (match) { 6084 match.uploading = false; 6085 renderUploadedFiles(); 6086 } 6087 }; 6088 reader.readAsDataURL(file); 6089 }); 6090 6091 const fileInput = getById('rcoasr-7v9k-file-input'); 6092 if (fileInput) fileInput.value = ''; 6093} 6094function renderUploadedFiles() { 6095 const previewList = getById('rcoasr-7v9k-file-preview-list'); 6096 if (!previewList) return; 6097 previewList.innerHTML = ''; 6098 state.attachments.forEach((file, index) => { 6099 const card = document.createElement('div'); 6100 card.className = `rcoasr-7v9k-file-preview-card ${file.uploading ? 'rcoasr-7v9k-state-uploading' : ''}`; 6101 6102 card.innerHTML = ` 6103 <div class="rcoasr-7v9k-file-thumb"> 6104 <img src="${file.previewUrl || 'https://placehold.co/60x60/8b6b4b/ffffff?text=FILE'}" alt="Uploaded preview"> 6105 </div> 6106 <div class="rcoasr-7v9k-file-info"> 6107 <div class="rcoasr-7v9k-file-name" title="${escapeHtml(file.name)}">${escapeHtml(file.name)}</div> 6108 <div class="rcoasr-7v9k-file-size">${(file.size / (1024 * 1024)).toFixed(2)} MB</div> 6109 </div> 6110 <button type="button" class="rcoasr-7v9k-file-remove" data-index="${index}" aria-label="Remove uploaded file"> 6111 <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 6112 <polyline points="3 6 5 6 21 6"/> 6113 <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/> 6114 </svg> 6115 </button> 6116 `; 6117 card.querySelector('.rcoasr-7v9k-file-remove').addEventListener('click', (e) => { 6118 const idx = parseInt(e.currentTarget.getAttribute('data-index'), 10); 6119 const removed = state.attachments[idx]; 6120 if (removed && removed.id) uploadedFilesById.delete(removed.id); 6121 state.attachments.splice(idx, 1); 6122 renderUploadedFiles(); 6123 saveState(); 6124 }); 6125 previewList.appendChild(card); 6126 }); 6127} 6128// --- STEP TRANSITION & VALIDATION CONTROL --- 6129function handleBack() { 6130 if (state.activeStepIndex > 0) { 6131 state.activeStepIndex--; 6132 updateWizardDisplay(); 6133 } else if (state.activeStepIndex === 0) { 6134 state.activeStepIndex = -1; 6135 updateWizardDisplay(); 6136 } 6137} 6138function handleContinue() { 6139 const currentStepId = getCurrentStepId(); 6140 if (validateStep(currentStepId)) { 6141 if (currentStepId === 'rcoasr-7v9k-step-review') { 6142 submitRequest(); 6143 } else { 6144 state.activeStepIndex++; 6145 updateWizardDisplay(); 6146 } 6147 } 6148} 6149function validateStep(stepId) { 6150 let isValid = true; 6151 root.querySelectorAll('.rcoasr-7v9k-form-group').forEach(el => el.classList.remove('rcoasr-7v9k-state-has-error')); 6152 root.querySelectorAll('.rcoasr-7v9k-state-invalid').forEach(el => el.classList.remove('rcoasr-7v9k-state-invalid')); 6153 const setError = (elementId, message) => { 6154 isValid = false; 6155 const input = getById(elementId); 6156 if (input) { 6157 input.classList.add('rcoasr-7v9k-state-invalid'); 6158 const parent = input.closest('.rcoasr-7v9k-form-group'); 6159 if (parent) { 6160 parent.classList.add('rcoasr-7v9k-state-has-error'); 6161 const errEl = parent.querySelector('.rcoasr-7v9k-input-error'); 6162 if (errEl) errEl.innerText = message; 6163 } 6164 } 6165 }; 6166 switch (stepId) { 6167 case 'rcoasr-7v9k-step-type': 6168 if (!state.requestType) { 6169 alert('Please select the category of your request.'); 6170 isValid = false; 6171 } 6172 break; 6173 case 'rcoasr-7v9k-step-order': 6174 if (!state.orderNumber || state.orderNumber.trim() === '') { 6175 setError('rcoasr-7v9k-input-order', 'Order or invoice number is required.'); 6176 } 6177 6178 if (!state.customerName || state.customerName.trim() === '') { 6179 setError('rcoasr-7v9k-input-name', 'Full customer name is required.'); 6180 } 6181 const phoneClean = state.customerPhone.replace(/[\s\-\(\)\+]/g, ''); 6182 if (!state.customerPhone || state.customerPhone.trim() === '') { 6183 setError('rcoasr-7v9k-input-phone', 'Phone number used for order is required.'); 6184 } else if (phoneClean.length < 10 || phoneClean.length > 13) { 6185 setError('rcoasr-7v9k-input-phone', 'Please enter a valid phone number (e.g. 0300-1234567).'); 6186 } 6187 if (state.customerEmail && state.customerEmail.trim() !== '') { 6188 const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 6189 if (!emailRegex.test(state.customerEmail)) { 6190 setError('rcoasr-7v9k-input-email', 'Please enter a valid email address.'); 6191 } 6192 } 6193 break; 6194 case 'rcoasr-7v9k-step-product': 6195 isValid = true;
6196 state.products.forEach((prod, i) => { 6197 // Validate Product Name/Desc 6198 const nameInputId = `rcoasr-7v9k-product-name-${i + 1}`; 6199 const nameVal = prod.name ? prod.name.trim() : ''; 6200 if (nameVal.length < 2 || nameVal.length > 120) { 6201 setError(nameInputId, 'Product name is required (between 2 and 120 characters).'); 6202 isValid = false; 6203 } 6204 // Validate Category 6205 const catSelectId = `rcoasr-7v9k-product-cat-${i + 1}`; 6206 if (!prod.category || prod.category === '') { 6207 setError(catSelectId, 'Please select a product category.'); 6208 isValid = false; 6209 } 6210 // Validate Delivery Date (if required) 6211 const dateInputId = `rcoasr-7v9k-product-date-${i + 1}`; 6212 const dateRequired = isDeliveryDateRequired(); 6213 if (dateRequired && !prod.deliveryDateUnknown) { 6214 if (!prod.deliveryDate || prod.deliveryDate === '') { 6215 setError(dateInputId, 'Approximate delivery date is required.'); 6216 isValid = false; 6217 } else { 6218 // Check if future date 6219 const today = getLocalDateString(); 6220 if (prod.deliveryDate > today) { 6221 setError(dateInputId, 'Delivery date cannot be in the future.'); 6222 isValid = false; 6223 } 6224 } 6225 } 6226 }); 6227 break; 6228 case 'rcoasr-7v9k-step-timing': 6229 if (!state.timingNoticed) { 6230 alert('Please select when you noticed the concern.'); 6231 isValid = false; 6232 } 6233 break; 6234 case 'rcoasr-7v9k-step-issues': 6235 if (!state.issueDescription || state.issueDescription.trim().length < 15) { 6236 setError('rcoasr-7v9k-issue-desc-textarea', 'Please provide a detailed description (minimum 15 characters).'); 6237 } 6238 if (!state.isSafeToUse) { 6239 alert('Please select whether the product is currently safe to use.'); 6240 isValid = false; 6241 } 6242 break; 6243 case 'rcoasr-7v9k-step-evidence': 6244 if (!state.noEvidenceRightNow && state.attachments.length === 0) { 6245 alert('Please upload photo/video evidence of the issue, or check "I can’t upload evidence right now" to provide it later.'); 6246 isValid = false; 6247 } 6248 break; 6249 case 'rcoasr-7v9k-step-resolution': 6250 if (!state.preferredResolution) { 6251 alert('Please select your preferred resolution option.'); 6252 isValid = false; 6253 } 6254 break; 6255 case 'rcoasr-7v9k-step-contact': 6256 if (!state.city || state.city.trim() === '') { 6257 setError('rcoasr-7v9k-input-city', 'City location is required.'); 6258 } 6259 6260 if (['delivery', 'configuration', 'missing', 'repair', 'warranty'].includes(state.requestType)) { 6261 if (!state.streetAddress || state.streetAddress.trim() === '') { 6262 setError('rcoasr-7v9k-input-address', 'Street address is required for collections or visits.'); 6263 } 6264 if (!state.safeToCollect) { 6265 alert('Please select if the component can be safely packed.'); 6266 isValid = false; 6267 } 6268 } 6269 if (!state.contactMethod) { 6270 alert('Please select your preferred contact method.'); 6271 isValid = false; 6272 } 6273 if (!state.contactPeriod) { 6274 alert('Please select your preferred contact period.'); 6275 isValid = false; 6276 } 6277 break; 6278 case 'rcoasr-7v9k-step-review': 6279 const consent1 = getById('rcoasr-7v9k-consent-accuracy').checked; 6280 const consent2 = getById('rcoasr-7v9k-consent-policy').checked; 6281 if (!consent1 || !consent2) { 6282 alert('Please check both consent boxes to submit your after-sales request.'); 6283 isValid = false; 6284 } 6285 break; 6286 } 6287 return isValid; 6288} 6289// --- REAL EMAIL SUBMISSION --- 6290function formatRequestType(value) { 6291 const labels = { 6292 delivery: 'Product arrived damaged', 6293 configuration: 'Incorrect product or configuration', 6294 missing: 'Something is missing', 6295 repair: 'Repair or adjustment', 6296 warranty: 'Warranty claim', 6297 cancellation: 'Order cancellation', 6298 refund: 'Refund review', 6299 other: 'Other after-sales support' 6300 }; 6301 return labels[value] || value || 'Not provided'; 6302} 6303 6304function formatSimpleValue(value) { 6305 if (value === true) return 'Yes'; 6306 if (value === false) return 'No'; 6307 if (value === null || value === undefined || value === '') return 'Not provided'; 6308 return String(value).replace(/_/g, ' '); 6309} 6310 6311function buildSubmissionFormData() { 6312 const formData = new FormData(); 6313 const products = state.products.map(product => ({ 6314 name: product.name || '', 6315 category: product.category || '', 6316 categoryLabel: getCategoryLabel(product.category) || product.category || '', 6317 deliveryDate: product.deliveryDate || '', 6318 deliveryDateUnknown: Boolean(product.deliveryDateUnknown) 6319 })); 6320 6321 const payload = { 6322 caseId: state.caseId, 6323 submittedAt: state.submittedAt, 6324 requestType: state.requestType, 6325 requestTypeLabel: formatRequestType(state.requestType), 6326 orderNumber: state.orderNumber, 6327 customerName: state.customerName, 6328 customerPhone: state.customerPhone, 6329 customerEmail: state.customerEmail, 6330 products,
6331 timingNoticed: state.timingNoticed, 6332 selectedIssues: state.selectedIssues, 6333 issueDescription: state.issueDescription, 6334 isSafeToUse: state.isSafeToUse, 6335 preferredResolution: state.preferredResolution, 6336 streetAddress: state.streetAddress, 6337 city: state.city, 6338 province: state.province, 6339 isOriginalAddress: state.isOriginalAddress, 6340 contactMethod: state.contactMethod, 6341 contactPeriod: state.contactPeriod, 6342 safeToCollect: state.safeToCollect, 6343 noEvidenceRightNow: state.noEvidenceRightNow, 6344 attachmentNames: state.attachments.map(file => file.name), 6345 sourceUrl: window.location.href, 6346 website: '' // Honeypot. Keep empty. 6347 }; 6348 6349 formData.append('payload', JSON.stringify(payload)); 6350 6351 let appendedFiles = 0; 6352 state.attachments.forEach(attachment => { 6353 const actualFile = uploadedFilesById.get(attachment.id); 6354 if (actualFile) { 6355 formData.append('attachments[]', actualFile, actualFile.name); 6356 appendedFiles++; 6357 } 6358 }); 6359 6360 if (!state.noEvidenceRightNow && appendedFiles !== state.attachments.length) { 6361 throw new Error('One or more selected evidence files are no longer available. Please return to the Evidence Upload step and select them again.'); 6362 } 6363 6364 return formData; 6365} 6366 6367async function submitRequest() { 6368 elements.btnContinue.disabled = true; 6369 elements.btnContinue.innerHTML = `<span aria-hidden="true" style="display:inline-block; width:12px; height:12px; border:2px solid white; border-radius:50%; border-top-color:transparent; animation:rcoasr-7v9k-upload-spin 1s infinite linear; margin-right:8px;"></span> Sending...`; 6370 6371 const randomHex = Math.random().toString(36).substring(2, 6).toUpperCase(); 6372 const dateObj = new Date(); 6373 const yyyy = dateObj.getFullYear(); 6374 const mm = String(dateObj.getMonth() + 1).padStart(2, '0'); 6375 const dd = String(dateObj.getDate()).padStart(2, '0'); 6376 6377 state.caseId = `ROCO-AS-${yyyy}${mm}${dd}-${randomHex}`; 6378 state.submittedAt = dateObj.toISOString(); 6379 6380 try { 6381 const response = await fetch(SUBMISSION_ENDPOINT, { 6382 method: 'POST', 6383 headers: { 6384 Accept: 'application/json' 6385 }, 6386 credentials: 'same-origin', 6387 body: buildSubmissionFormData() 6388 }); 6389 6390 let responseData = null; 6391 try { 6392 responseData = await response.json(); 6393 } catch (parseError) { 6394 responseData = null; 6395 } 6396 6397 if (!response.ok || !responseData || responseData.success !== true) { 6398 const serverMessage = responseData && responseData.message 6399 ? responseData.message 6400 : 'The ROCO mail server could not accept the request.'; 6401 throw new Error(serverMessage); 6402 } 6403 6404 storageRemove('rcoasr-7v9k_after_sales_state_v1'); 6405 state.activeStepIndex++; 6406 updateWizardDisplay(); 6407 } catch (error) { 6408 console.error('ROCO request submission failed:', error); 6409 const message = error && error.message 6410 ? error.message 6411 : 'Your request could not be emailed. Please check your internet connection and try again.'; 6412 state.caseId = ''; 6413 state.submittedAt = null; 6414 alert(`${message}\n\nNo success confirmation has been recorded.`); 6415 updateWizardDisplay(); 6416 } finally { 6417 elements.btnContinue.disabled = false; 6418 } 6419} 6420 6421// --- STEP 3: PRODUCT SELECTION ARRAY LOGIC --- 6422function isDeliveryDateRequired() { 6423 return state.requestType !== 'cancellation' && state.timingNoticed !== 'undelivered'; 6424} 6425function getCategoryLabel(catCode) { 6426 const mapping = { 6427 'sofas': 'Sofas & Loungers', 6428 'chairs': 'Chairs, Recliners & Benches', 6429 'beds': 'Beds & Bedroom Furniture', 6430 'desks': 'Desks & Office Furniture', 6431 'dining': 'Dining Tables & Chairs', 6432 'tables': 'Coffee, Side & Console Tables', 6433 'cabinets': 'Wardrobes, Cabinets & Storage', 6434 'outdoor': 'Outdoor Furniture', 6435 'decor': 'Mirrors & Decorative Furniture', 6436 'custom': 'Custom Piece / Other' 6437 }; 6438 return mapping[catCode] || catCode || '—'; 6439} 6440function setupProductStepBindings() { 6441 const multiCheckbox = getById('rcoasr-7v9k-multi-product-checkbox'); 6442 const addBtn = getById('rcoasr-7v9k-btn-add-product'); 6443 if (!multiCheckbox || !addBtn) return; 6444 // Set max date attribute for static Product 1 delivery date field to block future entries 6445 const todayStr = getLocalDateString(); 6446 const date1 = getById('rcoasr-7v9k-product-date-1'); 6447 if (date1) date1.setAttribute('max', todayStr); 6448 multiCheckbox.addEventListener('change', (e) => { 6449 const isChecked = e.target.checked; 6450 if (isChecked) { 6451 if (state.products.length === 1) { 6452 state.products.push({ 6453 name: "", 6454 category: "", 6455 deliveryDate: "", 6456 deliveryDateUnknown: false 6457 }); 6458 } 6459 } else { 6460 const hasAdditionalContent = state.products.slice(1).some(prod => { 6461 return (prod.name && prod.name.trim() !== '') || 6462 (prod.category && prod.category !== '') || 6463 (prod.deliveryDate && prod.deliveryDate !== ''); 6464 }); 6465 if (hasAdditionalContent) { 6466 if (confirm("Disable multi-product mode? This will permanently remove all additional products and their details.")) { 6467 state.products = [state.products[0]]; 6468 } else { 6469 multiCheckbox.checked = true; 6470 return; 6471 } 6472 } else { 6473 state.products = [state.products[0]]; 6474 } 6475 } 6476 syncProductFieldsFromState(); 6477 saveState(); 6478 }); 6479 addBtn.addEventListener('click', () => { 6480 if (state.products.length >= 5) { 6481 alert("You can add a maximum of 5 products in this resolution request."); 6482 return; 6483 } 6484 state.products.push({ 6485 name: "", 6486 category: "", 6487 deliveryDate: "", 6488 deliveryDateUnknown: false 6489 }); 6490 syncProductFieldsFromState(); 6491 saveState(); 6492 }); 6493} 6494function syncProductFieldsFromState() { 6495 const multiCheckbox = getById('rcoasr-7v9k-multi-product-checkbox'); 6496 const addBtnWrapper = getById('rcoasr-7v9k-add-product-wrapper'); 6497 const additionalContainer = getById('rcoasr-7v9k-additional-products-container'); 6498 if (!multiCheckbox || !addBtnWrapper || !additionalContainer) return; 6499 // First product sync 6500 const prod1 = state.products[0]; 6501 const name1 = getById('rcoasr-7v9k-product-name-1'); 6502 const cat1 = getById('rcoasr-7v9k-product-cat-1'); 6503 const date1 = getById('rcoasr-7v9k-product-date-1'); 6504 const unknown1 = getById('rcoasr-7v9k-product-unknown-1'); 6505 if (name1) name1.value = prod1.name || ''; 6506 if (cat1) cat1.value = prod1.category || ''; 6507 if (date1) { 6508 date1.value = prod1.deliveryDate || ''; 6509 date1.disabled = prod1.deliveryDateUnknown; 6510 } 6511 if (unknown1) unknown1.checked = prod1.deliveryDateUnknown; 6512 // Toggle multi-product displays 6513 const hasMultiple = state.products.length > 1; 6514 multiCheckbox.checked = hasMultiple; 6515 if (hasMultiple) { 6516 addBtnWrapper.style.display = 'block'; 6517 additionalContainer.style.display = 'block'; 6518 } else { 6519 addBtnWrapper.style.display = 'none'; 6520 additionalContainer.style.display = 'none'; 6521 } 6522 // Render dynamic additional products 6523 additionalContainer.innerHTML = ''; 6524 for (let i = 1; i < state.products.length; i++) { 6525 const prod = state.products[i]; 6526 const section = document.createElement('div'); 6527 section.className = 'rcoasr-7v9k-product-section rcoasr-7v9k-reveal-fast'; 6528 section.id = `rcoasr-7v9k-product-${i + 1}-section`; 6529 section.style.marginTop = '24px'; 6530 section.style.borderTop = '1px dashed var(--rcoasr-7v9k-bronze-light)'; 6531 section.style.paddingTop = '24px'; 6532 section.innerHTML = ` 6533 <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;"> 6534 <h4 style="font-family: var(--rcoasr-7v9k-font-body); font-weight: 700; font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--rcoasr-7v9k-bronze-accent);">Product ${i + 1}</h4> 6535 <button type="button" class="rcoasr-7v9k-btn-remove-product" data-index="${i}" style="background:none; border:none;
6535 color:var(--rcoasr-7v9k-warning-burgundy); font-size:11px; font-weight:700; text-transform:uppercase; cursor:pointer; text-decoration:underline;">Remove</button> 6536 </div> 6537 <!-- Product Name --> 6538 <div class="rcoasr-7v9k-form-group"> 6539 <div class="rcoasr-7v9k-input-wrapper"> 6540 <label class="rcoasr-7v9k-input-label" for="rcoasr-7v9k-product-name-${i + 1}">Product Name or Description</label> 6541 <input type="text" id="rcoasr-7v9k-product-name-${i + 1}" class="rcoasr-7v9k-form-input rcoasr-7v9k-product-input-field" data-index="${i}" data-field="name" placeholder="e.g. Alex Desk, three-seater sofa, cane wardrobe" maxlength="120" value="${escapeHtml(prod.name || '')}" aria-required="true"> 6542 <span class="rcoasr-7v9k-input-error">Product name is required (minimum 2 characters).</span> 6543 </div> 6544 </div> 6545 <!-- Product Category --> 6546 <div class="rcoasr-7v9k-form-group"> 6547 <div class="rcoasr-7v9k-input-wrapper"> 6548 <label class="rcoasr-7v9k-input-label" for="rcoasr-7v9k-product-cat-${i + 1}">Product Category</label> 6549 <select id="rcoasr-7v9k-product-cat-${i + 1}" class="rcoasr-7v9k-form-select rcoasr-7v9k-product-select-field" data-index="${i}" data-field="category" aria-required="true"> 6550 <option value="">Select a category</option> 6551 <option value="sofas" ${prod.category === 'sofas' ? 'selected' : ''}>Sofas & Loungers</option> 6552 <option value="chairs" ${prod.category === 'chairs' ? 'selected' : ''}>Chairs, Recliners & Benches</option> 6553 <option value="beds" ${prod.category === 'beds' ? 'selected' : ''}>Beds & Bedroom Furniture</option> 6554 <option value="desks" ${prod.category === 'desks' ? 'selected' : ''}>Desks & Office Furniture</option> 6555 <option value="dining" ${prod.category === 'dining' ? 'selected' : ''}>Dining Tables & Chairs</option> 6556 <option value="tables" ${prod.category === 'tables' ? 'selected' : ''}>Coffee, Side & Console Tables</option> 6557 <option value="cabinets" ${prod.category === 'cabinets' ? 'selected' : ''}>Wardrobes, Cabinets & Storage</option> 6558 <option value="outdoor" ${prod.category === 'outdoor' ? 'selected' : ''}>Outdoor Furniture</option> 6559 <option value="decor" ${prod.category === 'decor' ? 'selected' : ''}>Mirrors & Decorative Furniture</option> 6560 <option value="custom" ${prod.category === 'custom' ? 'selected' : ''}>Custom Piece / Other</option> 6561 </select> 6562 <span class="rcoasr-7v9k-input-error">Category is required.</span> 6563 </div> 6564 </div> 6565 <!-- Delivery Date --> 6566 <div class="rcoasr-7v9k-form-group" id="rcoasr-7v9k-date-group-${i + 1}"> 6567 <div class="rcoasr-7v9k-input-wrapper"> 6568 <label class="rcoasr-7v9k-input-label" for="rcoasr-7v9k-product-date-${i + 1}">Approximate Delivery Date</label> 6569 <input type="date" id="rcoasr-7v9k-product-date-${i + 1}" class="rcoasr-7v9k-form-input rcoasr-7v9k-product-date-field" data-index="${i}" data-field="deliveryDate" value="${prod.deliveryDate || ''}" ${prod.deliveryDateUnknown ? 'disabled' : ''}> 6570 <span class="rcoasr-7v9k-input-error">Delivery date cannot be in the future.</span> 6571 </div> 6572 </div> 6573 <!-- Unknown Date Checkbox --> 6574 <div class="rcoasr-7v9k-checkbox-group" style="margin-bottom: 24px;"> 6575 <label class="rcoasr-7v9k-label-checkbox" for="rcoasr-7v9k-product-unknown-${i + 1}"> 6576 <input type="checkbox" id="rcoasr-7v9k-product-unknown-${i + 1}" class="rcoasr-7v9k-product-unknown-checkbox" data-index="${i}" data-field="deliveryDateUnknown" ${prod.deliveryDateUnknown ? 'checked' : ''}> 6577 <span>I don’t remember the delivery date</span> 6578 </label>
6579 </div> 6580 `; 6581 additionalContainer.appendChild(section); 6582 // Apply max date attribute to prevent future dates 6583 const dateInput = section.querySelector(`[data-field="deliveryDate"]`); 6584 const todayStr = getLocalDateString(); 6585 if (dateInput) dateInput.setAttribute('max', todayStr); 6586 } 6587 bindProductFieldsEvents(); 6588} 6589function bindProductFieldsEvents() { 6590 // Names inputs 6591 root.querySelectorAll('.rcoasr-7v9k-product-input-field').forEach(input => { 6592 input.addEventListener('input', (e) => { 6593 const idx = parseInt(e.target.getAttribute('data-index')); 6594 if (state.products[idx]) { 6595 state.products[idx].name = e.target.value; 6596 e.target.classList.remove('rcoasr-7v9k-state-invalid'); 6597 const parent = e.target.closest('.rcoasr-7v9k-form-group'); 6598 if (parent) parent.classList.remove('rcoasr-7v9k-state-has-error'); 6599 saveState(); 6600 } 6601 }); 6602 }); 6603 // Category select inputs 6604 root.querySelectorAll('.rcoasr-7v9k-product-select-field').forEach(select => { 6605 select.addEventListener('change', (e) => { 6606 const idx = parseInt(e.target.getAttribute('data-index')); 6607 if (state.products[idx]) { 6608 state.products[idx].category = e.target.value; 6609 select.classList.remove('rcoasr-7v9k-state-invalid'); 6610 const parent = select.closest('.rcoasr-7v9k-form-group'); 6611 if (parent) parent.classList.remove('rcoasr-7v9k-state-has-error'); 6612 saveState(); 6613 } 6614 }); 6615 }); 6616 // Date select inputs 6617 root.querySelectorAll('.rcoasr-7v9k-product-date-field').forEach(dateInput => { 6618 dateInput.addEventListener('change', (e) => { 6619 const idx = parseInt(e.target.getAttribute('data-index')); 6620 if (state.products[idx]) { 6621 state.products[idx].deliveryDate = e.target.value; 6622 dateInput.classList.remove('rcoasr-7v9k-state-invalid'); 6623 const parent = dateInput.closest('.rcoasr-7v9k-form-group'); 6624 if (parent) parent.classList.remove('rcoasr-7v9k-state-has-error'); 6625 saveState(); 6626 } 6627 }); 6628 }); 6629 // Unknown checkboxes 6630 root.querySelectorAll('.rcoasr-7v9k-product-unknown-checkbox').forEach(chk => { 6631 chk.addEventListener('change', (e) => { 6632 const idx = parseInt(e.target.getAttribute('data-index')); 6633 if (state.products[idx]) { 6634 const isChecked = e.target.checked; 6635 state.products[idx].deliveryDateUnknown = isChecked; 6636 6637 const dateInput = root.querySelector(`.rcoasr-7v9k-product-date-field[data-index="${idx}"]`); 6638 if (dateInput) { 6639 if (isChecked) { 6640 dateInput.value = ''; 6641 dateInput.disabled = true; 6642 state.products[idx].deliveryDate = ''; 6643 dateInput.classList.remove('rcoasr-7v9k-state-invalid'); 6644 const parent = dateInput.closest('.rcoasr-7v9k-form-group'); 6645 if (parent) parent.classList.remove('rcoasr-7v9k-state-has-error'); 6646 } else { 6647 dateInput.disabled = false; 6648 } 6649 } 6650 saveState(); 6651 } 6652 }); 6653 }); 6654 // Remove buttons 6655 root.querySelectorAll('.rcoasr-7v9k-btn-remove-product').forEach(btn => { 6656 btn.addEventListener('click', (e) => { 6657 const idx = parseInt(e.currentTarget.getAttribute('data-index')); 6658 const prod = state.products[idx]; 6659 6660 const hasContent = (prod.name && prod.name.trim() !== '') || 6661 (prod.category && prod.category !== '') || 6662 (prod.deliveryDate && prod.deliveryDate !== ''); 6663 if (hasContent) { 6664 if (confirm(`Remove Product ${idx + 1} ("${prod.name || 'Untitled'}") and clear all entered details?`)) { 6665 removeProductAtIndex(idx); 6666 } 6667 } else { 6668 removeProductAtIndex(idx); 6669 } 6670 }); 6671 }); 6672} 6673function removeProductAtIndex(idx) { 6674 state.products.splice(idx, 1); 6675 syncProductFieldsFromState(); 6676 saveState(); 6677} 6678})(); 6679</script>
6679 6680<div id='pys_ajax_events'></div>
6680<script> 6681 var node = document.getElementsByClassName('woocommerce-message')[0]; 6682 if(node && document.getElementById('pys_late_event')) { 6683 var messageText = node.textContent.trim(); 6684 if(!messageText) { 6685 node.style.display = 'none'; 6686 } 6687 } 6688 </script>
6688 6689 <noscript><img height="1" width="1" style="display: none;" src="https://www.facebook.com/tr?id=7129042987144785&ev=PageView&noscript=1&cd%5Bpage_title%5D=Blog&cd%5Bpost_type%5D=page&cd%5Bpost_id%5D=1816&cd%5Bplugin%5D=PixelYourSite&cd%5Buser_role%5D=guest&cd%5Bevent_url%5D=roco.pk%2Fblog%2F" alt=""></noscript> 6690 6691<div class="cr-pswp pswp" tabindex="-1" role="dialog" aria-hidden="true"> 6692 <div class="pswp__bg"></div> 6693 <div class="pswp__scroll-wrap"> 6694 <div class="pswp__container"> 6695 <div class="pswp__item"></div> 6696 <div class="pswp__item"></div> 6697 <div class="pswp__item"></div> 6698 </div> 6699 <div class="pswp__ui pswp__ui--hidden"> 6700 <div class="pswp__top-bar"> 6701 <div class="pswp__counter"></div> 6702 <button class="pswp__button pswp__button--close" aria-label="Close (Esc)"></button> 6703 <button class="pswp__button pswp__button--share" aria-label="Share"></button> 6704 <button class="pswp__button pswp__button--fs" aria-label="Toggle fullscreen"></button> 6705 <button class="pswp__button pswp__button--zoom" aria-label="Zoom in/out"></button> 6706 <div class="pswp__preloader"> 6707 <div class="pswp__preloader__icn"> 6708 <div class="pswp__preloader__cut"> 6709 <div class="pswp__preloader__donut"></div> 6710 </div> 6711 </div> 6712 </div> 6713 </div> 6714 <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"> 6715 <div class="pswp__share-tooltip"></div> 6716 </div> 6717 <button class="pswp__button pswp__button--arrow--left" aria-label="Previous (arrow left)"></button> 6718 <button class="pswp__button pswp__button--arrow--right" aria-label="Next (arrow right)"></button> 6719 <div class="pswp__caption"> 6720 <div class="pswp__caption__center"></div> 6721 </div> 6722 </div> 6723 </div> 6724</div> 6725
6725<script> 6726 (function () { 6727 var c = document.body.className; 6728 c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); 6729 document.body.className = c; 6730 })(); 6731 </script>
6731 6732
6732<script id="cr-frontend-js-js-extra"> 6733var cr_ajax_object = {"ajax_url":"https://roco.pk/wp-admin/admin-ajax.php"}; 6734var cr_ajax_object = {"ajax_url":"https://roco.pk/wp-admin/admin-ajax.php","disable_lightbox":"0","flags_url":"https://roco.pk/wp-content/plugins/customer-reviews-woocommerce/img/flags/"}; 6735//# sourceURL=cr-frontend-js-js-extra 6736</script>
vendor: 1 bytes, line 6736
6736
6737<script id="cr-frontend-js-js" src="https://roco.pk/wp-content/plugins/customer-reviews-woocommerce/js/frontend.js?ver=5.124.0"></script>
vendor: 1 bytes, line 6737
6737
6738<script id="cr-colcade-js" src="https://roco.pk/wp-content/plugins/customer-reviews-woocommerce/js/colcade.js?ver=5.124.0"></script>
vendor: 1 bytes, line 6738
6738
6739<script id="rfs-product-swatches-js" src="https://roco.pk/wp-content/plugins/roco-free-swatches/assets/js/product-swatches.js?ver=2.2.5"></script>
vendor: 1 bytes, line 6739
6739
6740<script id="lodash-js" src="https://roco.pk/wp-includes/js/dist/vendor/lodash.min.js?ver=4.18.1"></script>
vendor: 1 bytes, line 6740
6740
6741<script id="lodash-js-after"> 6742window.lodash = _.noConflict(); 6743//# sourceURL=lodash-js-after 6744</script>
vendor: 1 bytes, line 6744
6744
6745<script id="wp-polyfill-js" src="https://roco.pk/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0"></script>
vendor: 1 bytes, line 6745
6745
6746<script id="moment-js" src="https://roco.pk/wp-includes/js/dist/vendor/moment.min.js?ver=2.30.1"></script>
vendor: 1 bytes, line 6746
6746
6747<script id="moment-js-after"> 6748moment.updateLocale( 'en_US', {"months":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthsShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"week":{"dow":1},"longDateFormat":{"LT":"g:i a","LTS":null,"L":null,"LL":"F j, Y","LLL":"F j, Y g:i a","LLLL":null}} ); 6749//# sourceURL=moment-js-after 6750</script>
vendor: 1 bytes, line 6750
6750
6751<script id="wp-hooks-js" src="https://roco.pk/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 6751
6751
6752<script id="wp-deprecated-js" src="https://roco.pk/wp-includes/js/dist/deprecated.min.js?ver=fe587bac92b7d0ef760e"></script>
vendor: 1 bytes, line 6752
6752
6753<script id="wp-date-js" src="https://roco.pk/wp-includes/js/dist/date.min.js?ver=8173fc0fc12b7bb7eaf0"></script>
vendor: 1 bytes, line 6753
6753
6754<script id="wp-date-js-after"> 6755wp.date.setSettings( {"l10n":{"locale":"en_US","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthsShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"meridiem":{"am":"am","pm":"pm","AM":"AM","PM":"PM"},"relative":{"future":"%s from now","past":"%s ago","s":"a second","ss":"%d seconds","m":"a minute","mm":"%d minutes","h":"an hour","hh":"%d hours","d":"a day","dd":"%d days","M":"a month","MM":"%d months","y":"a year","yy":"%d years"},"startOfWeek":1},"formats":{"time":"g:i a","date":"F j, Y","datetime":"F j, Y g:i a","datetimeAbbreviated":"M j, Y g:i a"},"timezone":{"offset":0,"offsetFormatted":"0","string":"","abbr":""}} ); 6756//# sourceURL=wp-date-js-after 6757</script>
vendor: 1 bytes, line 6757
6757
6758<script id="lapilli-ui-date-js" src="https://roco.pk/wp-content/plugins/yith-woocommerce-wishlist/plugin-fw/dist/lapilli-ui/date/index.js?ver=a688abdf8f9c4a18e904"></script>
vendor: 1 bytes, line 6758
6758
6759<script id="lapilli-ui-date-js-after"> 6760lapilliUI.date.setLocale( {"options":{"weekStartsOn":1}} ); 6761 lapilliUI.date.setDateFormats( {"year":"Y","month":"F","dayOfMonth":"j","monthShort":"M","weekday":"l","weekdayShort":"D","fullDate":"F j, Y","inputDate":"Y-m-d","monthAndDate":"F j","monthAndYear":"F Y"} ); 6762 lapilliUI.date.setFormatDate( wp.date.format ); 6763//# sourceURL=lapilli-ui-date-js-after 6764</script>
vendor: 1 bytes, line 6764
6764
6765<script id="react-js" src="https://roco.pk/wp-includes/js/dist/vendor/react.min.js?ver=18.3.1.1"></script>
vendor: 1 bytes, line 6765
6765
6766<script id="lapilli-ui-styles-js" src="https://roco.pk/wp-content/plugins/yith-woocommerce-wishlist/plugin-fw/dist/lapilli-ui/styles/index.js?ver=05a5b5e59191f74ac904"></script>
vendor: 1 bytes, line 6766
6766
6767<script id="react-dom-js" src="https://roco.pk/wp-includes/js/dist/vendor/react-dom.min.js?ver=18.3.1.1"></script>
vendor: 1 bytes, line 6767
6767
6768<script id="lapilli-ui-components-js" src="https://roco.pk/wp-content/plugins/yith-woocommerce-wishlist/plugin-fw/dist/lapilli-ui/components/index.js?ver=fe5275fad0fd47db7c63"></script>
vendor: 1 bytes, line 6768
6768
6769<script id="wp-i18n-js" src="https://roco.pk/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 6769
6769
6770<script id="wp-i18n-js-after"> 6771wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 6772//# sourceURL=wp-i18n-js-after 6773</script>
vendor: 1 bytes, line 6773
6773
6774<script id="wp-private-apis-js" src="https://roco.pk/wp-includes/js/dist/private-apis.min.js?ver=eb85f28c4c729bb4f002"></script>
vendor: 1 bytes, line 6774
6774
6775<script id="wp-url-js" src="https://roco.pk/wp-includes/js/dist/url.min.js?ver=7b0de086d4ae11d55704"></script>
vendor: 1 bytes, line 6775
6775
6776<script id="wp-api-fetch-js" src="https://roco.pk/wp-includes/js/dist/api-fetch.min.js?ver=6f2a4faeee3c722b1e57"></script>
vendor: 1 bytes, line 6776
6776
6777<script id="wp-api-fetch-js-after"> 6778wp.apiFetch.use( wp.apiFetch.createRootURLMiddleware( "https://roco.pk/wp-json/" ) ); 6779wp.apiFetch.nonceMiddleware = wp.apiFetch.createNonceMiddleware( "15800c8613" ); 6780wp.apiFetch.use( wp.apiFetch.nonceMiddleware ); 6781wp.apiFetch.use( wp.apiFetch.mediaUploadMiddleware ); 6782wp.apiFetch.nonceEndpoint = "https://roco.pk/wp-admin/admin-ajax.php?action=rest-nonce"; 6783//# sourceURL=wp-api-fetch-js-after 6784</script>
vendor: 1 bytes, line 6784
6784
6785<script id="yith-wcwl-add-to-wishlist-js-extra"> 6786var yithWcwlAddToWishlist = {"isUserLoggedIn":"","globalOptions":{"wishlist_disabled_for_unauthenticated_users":"no","loop_position":"after_add_to_cart","ajax_loading":"no","icon_type":"default","icon":"heart-outline","custom_icon":"","added_icon_type":"default","added_icon":"heart-outline","custom_added_icon":"","custom_icon_alt":"","custom_icon_width":"25","behaviour":"view","style":"link","popup_title":"Select a wishlist","move_popup_title":"Move to another wishlist","add_label":"Save for later","added_label":"Product added!","remove_label":"Remove from list","browse_label":"Browse wishlist","already_in_label":"The product is already in your wishlist!","default_wishlist_name":"My wishlist"},"buttonClasses":"","feedback_duration":"3000","wishlist_url":"https://roco.pk/wishlist/","containerSelectors":{"productContainer":[".wc-block-grid__product",".wp-block-post.product",".wc-block-product",".add-to-wishlist-before_image"],"thumbnailContainer":["div[data-block-name=\"woocommerce/product-image\"]","div.wc-block-grid__product-image",".woocommerce-loop-product__link [class*=\"image\"]",".astra-shop-thumbnail-wrap",".product-inner .image-wrap","a.woocommerce-loop-product__link","div.t-entry-visual","div.box-image","div.product-image","a.product-image-link"]},"login_wishlist_url":"https://roco.pk/my-account/?wishlist_notice=true&add_to_wishlist=%product_id%","i18n":{"feedbacks":{"added":"{{product_name}} has been added to your {{wishlist_name}} list!","removed":"{{product_name}} has been removed from your {{wishlist_name}} list!"}}}; 6787//# sourceURL=yith-wcwl-add-to-wishlist-js-extra 6788</script>
vendor: 1 bytes, line 6788
6788
6789<script id="yith-wcwl-add-to-wishlist-js" src="https://roco.pk/wp-content/plugins/yith-woocommerce-wishlist/assets/js/dist/components/add-to-wishlist/index.js?ver=74f63692d5dd73780ee4"></script>
vendor: 1 bytes, line 6789
6789
6790<script id="kadence-navigation-js-extra"> 6791var kadenceConfig = {"screenReader":{"expand":"Child menu","expandOf":"Child menu of","collapse":"Child menu","collapseOf":"Child menu of"},"breakPoints":{"desktop":"1024","tablet":768},"scrollOffset":"0"}; 6792//# sourceURL=kadence-navigation-js-extra 6793</script>
vendor: 1 bytes, line 6793
6793
6794<script id="kadence-navigation-js" src="https://roco.pk/wp-content/themes/kadence/assets/js/navigation.min.js?ver=1.5.2" async></script>
vendor: 1 bytes, line 6794
6794
6795<script id="kadence-shop-spinner-js" src="https://roco.pk/wp-content/themes/kadence/assets/js/shop-spinner.min.js?ver=1.5.2" async></script>
vendor: 1 bytes, line 6795
6795
6796<script id="sourcebuster-js-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 6796
6796
6797<script id="wc-order-attribution-js-extra"> 6798var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://roco.pk/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}}; 6799//# sourceURL=wc-order-attribution-js-extra 6800</script>
vendor: 1 bytes, line 6800
6800
6801<script id="wc-order-attribution-js" src="https://roco.pk/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 6801
6801
6802<script id="jquery-bind-first-js" defer src="https://roco.pk/wp-content/plugins/pixelyoursite/dist/scripts/jquery.bind-first-0.2.3.min.js?ver=0.2.3"></script>
vendor: 1 bytes, line 6802
6802
6803<script id="js-cookie-pys-js" defer src="https://roco.pk/wp-content/plugins/pixelyoursite/dist/scripts/js.cookie-2.1.3.min.js?ver=2.1.3"></script>
vendor: 1 bytes, line 6803
6803
6804<script id="js-sha256-js" defer src="https://roco.pk/wp-content/plugins/pixelyoursite/dist/scripts/sha256.js?ver=0.11.0"></script>
vendor: 1 bytes, line 6804
6804
6805<script id="pys-js-extra"> 6806var pysOptions = {"staticEvents":{"facebook":{"init_event":[{"delay":0,"type":"static","ajaxFire":false,"name":"PageView","pixelIds":["7129042987144785"],"eventID":"20c52d2f-56d4-4d1d-a1b4-67e149a0b296","params":{"page_title":"Blog","post_type":"page","post_id":1816,"plugin":"PixelYourSite","user_role":"guest","event_url":"roco.pk/blog/"},"e_id":"init_event","ids":[],"hasTimeWindow":false,"timeWindow":0,"woo_order":"","edd_order":"","order_key":""}]}},"dynamicEvents":[],"triggerEvents":[],"triggerEventTypes":[],"facebook":{"pixelIds":["7129042987144785"],"advancedMatching":[],"advancedMatchingEnabled":false,"removeMetadata":false,"wooVariableAsSimple":false,"serverApiEnabled":false,"metaEnabledCapiPixels":["7129042987144785"],"sendEventId":true,"send_external_id":null,"enabled_medical":false,"do_not_track_medical_param":["event_url","post_title","page_title","landing_page","content_name","categories","category_name","tags"],"meta_ldu":false},"debug":"","siteUrl":"https://roco.pk","ajaxUrl":"https://roco.pk/wp-admin/admin-ajax.php","ajax_event":"ba225c5762","enable_remove_download_url_param":"1","cookie_duration":"7","last_visit_duration":"60","enable_success_send_form":"","ajaxForServerEvent":"1","ajaxForServerStaticEvent":"1","useSendBeacon":"1","send_external_id":"1","external_id_expire":"180","track_cookie_for_subdomains":"1","google_consent_mode":"1","consent_mode_cmp_active":"","data_persistency":"keep_data","gdpr":{"ajax_enabled":true,"all_disabled_by_api":false,"facebook_disabled_by_api":false,"analytics_disabled_by_api":false,"google_ads_disabled_by_api":false,"pinterest_disabled_by_api":false,"bing_disabled_by_api":false,"reddit_disabled_by_api":false,"openai_disabled_by_api":false,"externalID_disabled_by_api":false,"facebook_prior_consent_enabled":true,"analytics_prior_consent_enabled":true,"google_ads_prior_consent_enabled":null,"pinterest_prior_consent_enabled":true,"bing_prior_consent_enabled":true,"openai_prior_consent_enabled":true,"cookiebot_integration_enabled":false,"cookiebot_facebook_consent_category":"marketing","cookiebot_analytics_consent_category":"statistics","cookiebot_tiktok_consent_category":"marketing","cookiebot_google_ads_consent_category":"marketing","cookiebot_pinterest_consent_category":"marketing","cookiebot_bing_consent_category":"marketing","cookiebot_openai_consent_category":"marketing","consent_magic_integration_enabled":false,"real_cookie_banner_integration_enabled":false,"cookie_notice_integration_enabled":false,"cookie_law_info_integration_enabled":false,"analytics_storage":{"enabled":true,"value":"granted","filter":false},"ad_storage":{"enabled":true,"value":"granted","filter":false},"ad_user_data":{"enabled":true,"value":"granted","filter":false},"ad_personalization":{"enabled":true,"value":"granted","filter":false}},"cookie":{"disabled_all_cookie":false,"disabled_start_session_cookie":false,"disabled_advanced_form_data_cookie":false,"disabled_landing_page_cookie":false,"disabled_first_visit_cookie":false,"disabled_trafficsource_cookie":false,"disabled_utmTerms_cookie":false,"disabled_utmId_cookie":false},"tracking_analytics":{"TrafficLanding":"","TrafficUtms":[],"TrafficUtmsId":[]},"GATags":{"ga_datalayer_type":"default","ga_datalayer_name":"dataLayerPYS"},"woo":{"enabled":true,"enabled_save_data_to_orders":true,"addToCartOnButtonEnabled":true,"addToCartOnButtonValueEnabled":true,"addToCartOnButtonValueOption":"price","singleProductId":null,"removeFromCartSelector":"form.woocommerce-cart-form .remove","addToCartCatchMethod":"add_cart_hook","is_order_received_page":false,"containOrderId":false},"edd":{"enabled":false},"cache_bypass":"1791261496"}; 6807//# sourceURL=pys-js-extra 6808</script>
vendor: 1 bytes, line 6808
6808
6809<script id="pys-js" defer src="https://roco.pk/wp-content/plugins/pixelyoursite/dist/scripts/public.js?ver=11.4.2.1"></script>
vendor: 1 bytes, line 6809
6809
6810<script id="kadence-pro-woocommerce-js-extra"> 6811var kadenceProWooConfig = {"openCart":""}; 6812//# sourceURL=kadence-pro-woocommerce-js-extra 6813</script>
vendor: 1 bytes, line 6813
6813
6814<script id="kadence-pro-woocommerce-js" src="https://roco.pk/wp-content/plugins/kadence-pro-1/dist/woocommerce-addons/pro-woocommerce.min.js?ver=1.1.9" async></script>
vendor: 1 bytes, line 6814
6814
6815<script id="wp-emoji-settings" type="application/json"> 6816{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://roco.pk/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 6817</script>
vendor: 1 bytes, line 6817
6817
6818<script type="module"> 6819/*! This file is auto-generated */ 6820var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 6821//# sourceURL=https://roco.pk/wp-includes/js/wp-emoji-loader.min.js 6822</script>
6822 6823 6824 <!-- ===================================================== 6825 MOBILE BOTTOM NAV 6826 ====================================================== --> 6827 <div class="roco-mobile-bottom-wrap" id="rocoMobileBottomNav"> 6828 <nav class="roco-mobile-bottom-nav" aria-label="Mobile bottom navigation"> 6829 6830 <!-- HOME --> 6831 <a href="https://roco.pk/" 6832 class="roco-nav-item" 6833 aria-label="Home"> 6834 <svg viewBox="0 0 24 24" aria-hidden="true"> 6835 <path d="M3 10.8L12 3l9 7.8v9.7a.5.5 0 0 1-.5.5h-5.2v-6.2H8.7V21H3.5a.5.5 0 0 1-.5-.5v-9.7z"/> 6836 </svg> 6837 </a> 6838 6839 <!-- SEARCH --> 6840 <button type="button" 6841 class="roco-nav-item roco-bottom-search-toggle" 6842 aria-label="Search" 6843 aria-controls="rocoBottomSearchOverlay" 6844 aria-expanded="false"> 6845 <svg viewBox="0 0 24 24" aria-hidden="true"> 6846 <path d="M10.8 4a6.8 6.8 0 0 1 5.38 10.96l3.43 3.43-1.41 1.41-3.43-3.43A6.8 6.8 0 1 1 10.8 4zm0 2a4.8 4.8 0 1 0 0 9.6 4.8 4.8 0 0 0 0-9.6z"/> 6847 </svg> 6848 </button> 6849 6850 <!-- WHATSAPP --> 6851 <a href="#" 6852 class="roco-nav-item roco-whatsapp-main" 6853 id="rocoWhatsappLink" 6854 target="_blank" 6855 rel="noopener noreferrer" 6856 aria-label="Chat on WhatsApp"> 6857 <svg viewBox="0 0 32 32" aria-hidden="true"> 6858 <path d="M16.02 3.2A12.68 12.68 0 0 0 5.1 22.34L3.5 28.8l6.63-1.55A12.68 12.68 0 1 0 16.02 3.2zm0 2.35a10.33 10.33 0 1 1-5.28 19.2l-.38-.22-3.9.91.94-3.78-.25-.39A10.33 10.33 0 0 1 16.02 5.55zm-4.3 5.25c-.23 0-.6.09-.91.43-.31.34-1.2 1.17-1.2 2.86s1.23 3.32 1.4 3.55c.17.23 2.37 3.8 5.86 5.17 2.9 1.14 3.49.91 4.12.86.63-.06 2.03-.83 2.32-1.63.29-.8.29-1.49.2-1.63-.09-.14-.31-.23-.66-.4-.34-.17-2.03-1-2.34-1.12-.31-.11-.54-.17-.77.17-.23.34-.89 1.12-1.09 1.35-.2.23-.4.26-.74.09-.34-.17-1.45-.53-2.76-1.69-1.02-.91-1.71-2.03-1.91-2.37-.2-.34-.02-.53.15-.7.16-.16.34-.4.51-.6.17-.2.23-.34.34-.57.11-.23.06-.43-.03-.6-.09-.17-.77-1.86-1.06-2.55-.28-.67-.57-.58-.77-.59h-.66z"/> 6859 </svg> 6860 </a> 6861 6862 <!-- SHARE --> 6863 <button type="button" 6864 class="roco-nav-item roco-share-trigger" 6865 aria-label="Share this page" 6866 aria-controls="rocoShareOverlay" 6867 aria-expanded="false"> 6868 <svg viewBox="0 0 24 24" aria-hidden="true"> 6869 <circle cx="18" cy="5" r="2.5"></circle> 6870 <circle cx="6" cy="12" r="2.5"></circle> 6871 <circle cx="18" cy="19" r="2.5"></circle> 6872 <path d="M8.2 10.8L15.8 6.2"></path> 6873 <path d="M8.2 13.2L15.8 17.8"></path> 6874 </svg> 6875 </button> 6876 6877 <!-- WISHLIST --> 6878 <a href="https://roco.pk/wishlist/" 6879 class="roco-nav-item roco-product-wishlist-icon" 6880 id="rocoWishlistLink" 6881 aria-label="Wishlist" 6882 data-product-page="0" 6883 data-yith-ready="0"> 6884 <svg viewBox="0 0 24 24" aria-hidden="true"> 6885 <path d="M12 20.5S4 16.1 2.6 11.1C1.7 7.8 3.8 5 7.1 5C9.1 5 10.7 6.1 12 7.8C13.3 6.1 14.9 5 16.9 5C20.2 5 22.3 7.8 21.4 11.1C20 16.1 12 20.5 12 20.5Z"/> 6886 </svg> 6887 </a> 6888 6889 </nav> 6890 </div> 6891 6892 6893 <!-- ===================================================== 6894 SEARCH OVERLAY 6895 ====================================================== --> 6896 <div class="roco-bottom-search-overlay" 6897 id="rocoBottomSearchOverlay" 6898 aria-hidden="true"> 6899 6900 <div class="roco-bottom-search-box" 6901 role="dialog" 6902 aria-modal="true" 6903 aria-label="Search products"> 6904 6905 <button type="button" 6906 class="roco-bottom-search-close" 6907 aria-label="Close search">
6907×</button> 6908 6909 <form role="search" 6910 method="get" 6911 action="https://roco.pk/" 6912 class="roco-bottom-search-form"> 6913 6914 <input type="search" 6915 name="s" 6916 placeholder="Search sofas, chairs, tables..." 6917 autocomplete="off" 6918 required> 6919 6920 <button type="submit" 6921 class="roco-bottom-search-submit" 6922 aria-label="Submit search"> 6923 <svg viewBox="0 0 24 24" aria-hidden="true"> 6924 <path d="M10.8 4a6.8 6.8 0 0 1 5.38 10.96l3.43 3.43-1.41 1.41-3.43-3.43A6.8 6.8 0 1 1 10.8 4zm0 2a4.8 4.8 0 1 0 0 9.6 4.8 4.8 0 0 0 0-9.6z"/> 6925 </svg> 6926 </button> 6927 </form> 6928 6929 <div class="roco-bottom-popular"> 6930 <span>Popular —</span> 6931 <a href="https://roco.pk/?s=Boucle+Chair">Bouclé Chair</a> 6932 <a href="https://roco.pk/?s=Office+Chair">Office Chair</a> 6933 <a href="https://roco.pk/?s=Sofa">Sofa</a> 6934 <a href="https://roco.pk/?s=Dining+Table">Dining Table</a> 6935 </div> 6936 6937 </div> 6938 </div> 6939 6940 6941 <!-- ===================================================== 6942 SHARE OVERLAY 6943 ====================================================== --> 6944 <div id="rocoShareOverlay" 6945 class="roco-share-overlay" 6946 aria-hidden="true"> 6947 6948 <div class="roco-share-modal" 6949 role="dialog" 6950 aria-modal="true" 6951 aria-labelledby="rocoShareTitle"> 6952 6953 <button type="button" 6954 class="roco-share-close" 6955 aria-label="Close share popup">×</button> 6956 6957 <div class="roco-share-heading-icon" aria-hidden="true"> 6958 <svg viewBox="0 0 24 24"> 6959 <circle cx="18" cy="5" r="2.5"></circle> 6960 <circle cx="6" cy="12" r="2.5"></circle> 6961 <circle cx="18" cy="19" r="2.5"></circle> 6962 <path d="M8.2 10.8L15.8 6.2"></path> 6963 <path d="M8.2 13.2L15.8 17.8"></path> 6964 </svg> 6965 </div> 6966 6967 <h3 id="rocoShareTitle"> 6968 Share this page </h3> 6969 6970 <p class="roco-share-subtitle"> 6971 Choose where you want to share it. 6972 </p> 6973 6974 <div class="roco-share-options"> 6975 6976 <!-- WhatsApp --> 6977 <button type="button" 6978 class="roco-share-option" 6979 data-share="whatsapp" 6980 aria-label="Share on WhatsApp"> 6981 <span class="roco-share-icon roco-share-whatsapp" aria-hidden="true"> 6982 <svg viewBox="0 0 24 24"> 6983 <path d="M20 11.6a8 8 0 0 1-11.8 7L4 20l1.4-4A8 8 0 1 1 20 11.6Z"></path> 6984 <path d="M8.8 8.2c.6 2.9 2.2 4.6 5.2 5.5"></path> 6985 <path d="m9 8-.8 1.1"></path> 6986 <path d="m14 13.7 1.2-.8"></path> 6987 </svg> 6988 </span> 6989 <span class="roco-share-label">WhatsApp</span> 6990 </button> 6991 6992 <!-- Facebook --> 6993 <button type="button" 6994 class="roco-share-option" 6995 data-share="facebook" 6996 aria-label="Share on Facebook"> 6997 <span class="roco-share-icon roco-share-facebook" aria-hidden="true"> 6998 <svg viewBox="0 0 24 24"> 6999 <path d="M13.5 21v-8h2.8l.42-3H13.5V8.08c0-.87.24-1.46 1.5-1.46h1.82V3.94c-.32-.04-1.4-.13-2.66-.13-2.63 0-4.43 1.6-4.43 4.55V10H6.75v3h2.98v8h3.77Z"></path> 7000 </svg> 7001 </span>
7002 <span class="roco-share-label">Facebook</span> 7003 </button> 7004 7005 <!-- Native share --> 7006 <button type="button" 7007 class="roco-share-option" 7008 data-share="native" 7009 aria-label="Share"> 7010 <span class="roco-share-icon" aria-hidden="true"> 7011 <svg viewBox="0 0 24 24"> 7012 <path d="M12 16V4"></path> 7013 <path d="m7.5 8.5 4.5-4.5 4.5 4.5"></path> 7014 <path d="M5 12.5v5.25A2.25 2.25 0 0 0 7.25 20h9.5A2.25 2.25 0 0 0 19 17.75V12.5"></path> 7015 </svg> 7016 </span> 7017 <span class="roco-share-label">Share</span> 7018 </button> 7019 7020 <!-- Copy link --> 7021 <button type="button" 7022 class="roco-share-option roco-copy-option" 7023 data-share="copy" 7024 aria-label="Copy link"> 7025 <span class="roco-share-icon" aria-hidden="true"> 7026 <svg class="roco-copy-svg" viewBox="0 0 24 24"> 7027 <rect x="8" y="8" width="11" height="11" rx="2"></rect> 7028 <path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"></path> 7029 </svg> 7030 7031 <svg class="roco-copy-check-svg" viewBox="0 0 24 24"> 7032 <path d="m5 12.5 4.2 4.2L19 7"></path> 7033 </svg> 7034 </span> 7035 <span class="roco-share-label roco-copy-label">Copy Link</span> 7036 </button> 7037 7038 </div> 7039 7040 <!-- Good-looking copy confirmation --> 7041 <div class="roco-share-toast" 7042 id="rocoShareToast" 7043 role="status" 7044 aria-live="polite"> 7045 <span class="roco-share-toast-icon" aria-hidden="true"> 7046 <svg viewBox="0 0 24 24"> 7047 <path d="m5 12.5 4.2 4.2L19 7"></path> 7048 </svg> 7049 </span> 7050 <span class="roco-share-toast-text">Link copied successfully</span> 7051 </div> 7052 7053 </div> 7054 </div> 7055 7056 7057 <!-- ===================================================== 7058 HIDDEN YITH BRIDGE - PRODUCT PAGE ONLY 7059 ====================================================== --> 7060 7061 7062 <style id="roco-mobile-bottom-nav-v7-css"> 7063 7064 /* ================================================== 7065 * DESKTOP 7066 * ================================================== */ 7067 @media (min-width: 769px) { 7068 .roco-mobile-bottom-wrap, 7069 .roco-bottom-search-overlay, 7070 .roco-share-overlay, 7071 #rocoYithWishlistBridge { 7072 display: none !important; 7073 } 7074 } 7075 7076 body.page-id-1008475 .roco-mobile-bottom-wrap, 7077 body.page-id-988460 .roco-mobile-bottom-wrap { 7078 display: none !important; 7079 } 7080 7081 /* Hidden but available to YITH's own generated markup */ 7082 #rocoYithWishlistBridge { 7083 position: fixed !important; 7084 left: -10000px !important; 7085 top: -10000px !important; 7086 width: 1px !important; 7087 height: 1px !important; 7088 overflow: hidden !important; 7089 opacity: 0 !important; 7090 pointer-events: none !important; 7091 z-index: -1 !important; 7092 } 7093 7094 7095 /* ================================================== 7096 * MOBILE NAV 7097 * ================================================== */ 7098 @media (max-width: 768px) { 7099 7100 body { 7101 padding-bottom: 100px; 7102 } 7103 7104 body.page-id-1008475, 7105 body.page-id-988460 { 7106 padding-bottom: 0; 7107 } 7108 7109 .roco-mobile-bottom-wrap { 7110 position: fixed; 7111 left: 0; 7112 right: 0; 7113 bottom: 0; 7114 width: 100%; 7115 z-index: 99999; 7116 padding: 10px 8px 14px; 7117 pointer-events: none; 7118 opacity: 0; 7119 visibility: hidden; 7120 transform: translateY(28px); 7121 transition: 7122 opacity .28s ease, 7123 visibility .28s ease, 7124 transform .28s ease, 7125 padding .28s ease; 7126 } 7127 7128 .roco-mobile-bottom-wrap.roco-nav-visible { 7129 opacity: 1; 7130 visibility: visible; 7131 transform: translateY(0); 7132 } 7133 7134 .roco-mobile-bottom-nav { 7135 width: 100%; 7136 max-width: 430px; 7137 height: 66px; 7138 margin: 0 auto; 7139 padding: 0 20px; 7140 border-radius: 999px; 7141 display: flex; 7142 align-items: center; 7143 justify-content: space-between; 7144 position: relative; 7145 pointer-events: auto; 7146 background: rgba(239, 235, 224, .78); 7147 border: 1px solid rgba(255, 255, 255, .72); 7148 box-shadow: 0 14px 38px rgba(34, 28, 18, .20); 7149 backdrop-filter: blur(18px) saturate(130%); 7150 -webkit-backdrop-filter: blur(18px) saturate(130%); 7151 transition: all .28s ease; 7152 } 7153 7154 .roco-mobile-bottom-wrap.roco-nav-shrink { 7155 padding-bottom: 6px; 7156 } 7157 7158 .roco-mobile-bottom-wrap.roco-nav-shrink .roco-mobile-bottom-nav { 7159 max-width: 345px; 7160 height: 48px; 7161 padding: 0 15px; 7162 transform: scale(.90); 7163 background: rgba(239, 235, 224, .66); 7164 box-shadow: 0 10px 26px rgba(34, 28, 18, .16); 7165 } 7166 7167 .roco-nav-item { 7168 width: 42px; 7169 height: 42px; 7170 border: 0; 7171 outline: 0; 7172 padding: 0; 7173 margin: 0; 7174 border-radius: 50%; 7175 background: transparent; 7176 display: inline-flex; 7177 align-items: center; 7178 justify-content: center; 7179 color: rgba(25, 28, 24, .72); 7180 text-decoration: none !important; 7181 cursor: pointer; 7182 transition: 7183 color .2s ease, 7184 background .2s ease, 7185 transform .2s ease, 7186 opacity .2s ease; 7187 -webkit-tap-highlight-color: transparent; 7188 box-shadow: none; 7189 font: inherit; 7190 } 7191 7192 .roco-nav-item svg { 7193 width: 21px; 7194 height: 21px; 7195 display: block; 7196 fill: currentColor; 7197 } 7198 7199 .roco-nav-item:hover, 7200 .roco-nav-item:focus-visible { 7201 color: #111; 7202 background: rgba(255, 255, 255, .58); 7203 } 7204 7205 .roco-mobile-bottom-wrap.roco-nav-shrink .roco-nav-item { 7206 width: 35px; 7207 height: 35px; 7208 } 7209 7210 .roco-mobile-bottom-wrap.roco-nav-shrink .roco-nav-item svg { 7211 width: 18px; 7212 height: 18px; 7213 } 7214 7215 7216 /* SHARE NAV SVG */ 7217 .roco-share-trigger svg { 7218 fill: none !important; 7219 stroke: currentColor !important; 7220 stroke-width: 1.8; 7221 stroke-linecap: round; 7222 stroke-linejoin: round; 7223 } 7224 7225 7226 /* ================================================== 7227 * WISHLIST HEART 7228 * ================================================== */ 7229 .roco-product-wishlist-icon svg { 7230 overflow: visible; 7231 } 7232 7233 .roco-product-wishlist-icon svg path { 7234 fill: transparent !important; 7235 stroke: currentColor !important; 7236 stroke-width: 1.7 !important; 7237 stroke-linecap: round; 7238 stroke-linejoin: round; 7239 transition: 7240 fill .2s ease, 7241 stroke .2s ease, 7242 transform .2s ease; 7243 } 7244
7245 .roco-product-wishlist-icon.is-wishlisted { 7246 color: #e32636 !important; 7247 background: rgba(227, 38, 54, .10) !important; 7248 } 7249 7250 .roco-product-wishlist-icon.is-wishlisted svg path { 7251 fill: #e32636 !important; 7252 stroke: #e32636 !important; 7253 animation: rocoHeartPop .38s ease; 7254 } 7255 7256 .roco-product-wishlist-icon.is-loading { 7257 pointer-events: none; 7258 opacity: .65; 7259 } 7260 7261 .roco-product-wishlist-icon.is-loading svg { 7262 animation: rocoHeartPulse .7s ease-in-out infinite alternate; 7263 } 7264 7265 @keyframes rocoHeartPop { 7266 0% { transform: scale(.82); } 7267 55% { transform: scale(1.22); } 7268 100% { transform: scale(1); } 7269 } 7270 7271 @keyframes rocoHeartPulse { 7272 from { transform: scale(.90); } 7273 to { transform: scale(1.08); } 7274 } 7275 7276 7277 /* ================================================== 7278 * WHATSAPP MAIN 7279 * ================================================== */ 7280 .roco-whatsapp-main { 7281 width: 60px; 7282 height: 60px; 7283 position: relative; 7284 top: -25px; 7285 background: #25D366 !important; 7286 color: #fff !important; 7287 border: 4px solid #f5f0e6; 7288 box-shadow: 0 10px 26px rgba(37, 211, 102, .42); 7289 overflow: hidden; 7290 border-radius: 50%; 7291 isolation: isolate; 7292 } 7293 7294 .roco-whatsapp-main::before { 7295 content: ""; 7296 position: absolute; 7297 top: -50%; 7298 left: -80%; 7299 width: 45%; 7300 height: 200%; 7301 background: linear-gradient( 7302 120deg, 7303 transparent, 7304 rgba(255, 255, 255, .75), 7305 transparent 7306 ); 7307 transform: rotate(25deg); 7308 animation: rocoWhatsappShine 2.8s infinite; 7309 z-index: 1; 7310 pointer-events: none; 7311 } 7312 7313 .roco-whatsapp-main svg { 7314 width: 31px; 7315 height: 31px; 7316 position: relative; 7317 z-index: 2; 7318 } 7319 7320 @keyframes rocoWhatsappShine { 7321 0% { left: -80%; } 7322 45%, 100% { left: 130%; } 7323 } 7324 7325 .roco-mobile-bottom-wrap.roco-nav-shrink .roco-whatsapp-main { 7326 width: 46px; 7327 height: 46px; 7328 top: -17px; 7329 border-width: 3px; 7330 } 7331 7332 .roco-mobile-bottom-wrap.roco-nav-shrink .roco-whatsapp-main svg { 7333 width: 25px; 7334 height: 25px; 7335 } 7336 7337 7338 /* ================================================== 7339 * OVERLAYS 7340 * ================================================== */ 7341 .roco-bottom-search-overlay, 7342 .roco-share-overlay { 7343 position: fixed; 7344 inset: 0; 7345 z-index: 1000000; 7346 opacity: 0; 7347 visibility: hidden; 7348 transition: opacity .22s ease, visibility .22s ease; 7349 } 7350 7351 .roco-bottom-search-overlay.is-open, 7352 .roco-share-overlay.is-open { 7353 opacity: 1; 7354 visibility: visible; 7355 } 7356 7357 7358 /* ================================================== 7359 * SEARCH OVERLAY 7360 * ================================================== */ 7361 .roco-bottom-search-overlay { 7362 padding: 22px; 7363 display: flex; 7364 align-items: flex-end; 7365 justify-content: center; 7366 background: rgba(245, 241, 234, .48); 7367 backdrop-filter: blur(14px); 7368 -webkit-backdrop-filter: blur(14px); 7369 } 7370 7371 .roco-bottom-search-box { 7372 width: 100%; 7373 max-width: 430px; 7374 background: rgba(245, 241, 234, .96); 7375 border: 1px solid rgba(255, 255, 255, .72); 7376 border-radius: 26px; 7377 padding: 22px; 7378 margin-bottom: 82px; 7379 box-shadow: 0 20px 50px rgba(34, 28, 18, .24); 7380 position: relative; 7381 } 7382 7383 .roco-bottom-search-close, 7384 .roco-share-close { 7385 position: absolute; 7386 top: 12px; 7387 right: 14px; 7388 width: 36px; 7389 height: 36px; 7390 border: 0; 7391 border-radius: 50%; 7392 background: #f3f3f3; 7393 color: #2b2a27; 7394 font-size: 25px; 7395 line-height: 1; 7396 display: flex; 7397 align-items: center; 7398 justify-content: center; 7399 cursor: pointer; 7400 box-shadow: none; 7401 z-index: 3; 7402 } 7403 7404 .roco-bottom-search-form { 7405 display: flex; 7406 align-items: center; 7407 gap: 10px; 7408 margin-top: 24px; 7409 } 7410 7411 .roco-bottom-search-form input { 7412 flex: 1; 7413 min-width: 0; 7414 height: 48px; 7415 border-radius: 999px; 7416 border: 1px solid rgba(43, 42, 39, .16); 7417 background: rgba(255, 255, 255, .92); 7418 padding: 0 16px; 7419 font-size: 15px; 7420 color: #2b2a27; 7421 outline: none; 7422 box-shadow: none; 7423 } 7424 7425 .roco-bottom-search-submit { 7426 width: 48px; 7427 height: 48px; 7428 border: 0; 7429 border-radius: 50%; 7430 background: #2b2a27; 7431 color: #f5f1ea; 7432 display: inline-flex; 7433 align-items: center; 7434 justify-content: center; 7435 cursor: pointer; 7436 padding: 0; 7437 box-shadow: none; 7438 } 7439 7440 .roco-bottom-search-submit svg {
7441 width: 20px; 7442 height: 20px; 7443 fill: currentColor; 7444 } 7445 7446 .roco-bottom-popular { 7447 display: flex; 7448 flex-wrap: wrap; 7449 gap: 9px 18px; 7450 margin-top: 20px; 7451 font-size: 11px; 7452 letter-spacing: .12em; 7453 text-transform: uppercase; 7454 color: rgba(43, 42, 39, .58); 7455 } 7456 7457 .roco-bottom-popular a, 7458 .roco-bottom-popular span { 7459 color: inherit; 7460 text-decoration: none !important; 7461 } 7462 7463 7464 /* ================================================== 7465 * SHARE MODAL - REDESIGNED 7466 * ================================================== */ 7467 .roco-share-overlay { 7468 display: flex; 7469 align-items: flex-end; 7470 justify-content: center; 7471 background: rgba(17, 17, 17, .46); 7472 backdrop-filter: blur(5px); 7473 -webkit-backdrop-filter: blur(5px); 7474 } 7475 7476 .roco-share-modal { 7477 position: relative; 7478 width: 100%; 7479 max-width: 430px; 7480 padding: 28px 20px calc(24px + env(safe-area-inset-bottom)); 7481 border-radius: 26px 26px 0 0; 7482 background: #ffffff; 7483 box-shadow: 0 -10px 45px rgba(0, 0, 0, .18); 7484 transform: translateY(18px) scale(.99); 7485 transition: transform .24s cubic-bezier(.2, .8, .2, 1); 7486 } 7487 7488 .roco-share-overlay.is-open .roco-share-modal { 7489 transform: translateY(0) scale(1); 7490 } 7491 7492 .roco-share-heading-icon { 7493 width: 42px; 7494 height: 42px; 7495 border-radius: 14px; 7496 display: flex; 7497 align-items: center; 7498 justify-content: center; 7499 background: #f5f3ee; 7500 color: #4a453f; 7501 margin-bottom: 12px; 7502 } 7503 7504 .roco-share-heading-icon svg { 7505 width: 20px; 7506 height: 20px; 7507 fill: none; 7508 stroke: currentColor; 7509 stroke-width: 1.8; 7510 stroke-linecap: round; 7511 stroke-linejoin: round; 7512 } 7513 7514 .roco-share-modal h3 { 7515 margin: 0 48px 5px 0; 7516 color: #211f1c; 7517 font-size: 21px; 7518 font-weight: 650; 7519 letter-spacing: -.02em; 7520 line-height: 1.25; 7521 } 7522 7523 .roco-share-subtitle { 7524 margin: 0 0 23px; 7525 color: #7a756e; 7526 font-size: 13px; 7527 line-height: 1.45; 7528 } 7529 7530 .roco-share-options { 7531 display: grid; 7532 grid-template-columns: repeat(4, minmax(0, 1fr)); 7533 gap: 10px; 7534 } 7535 7536 .roco-share-option { 7537 appearance: none; 7538 -webkit-appearance: none; 7539 border: 0; 7540 background: transparent; 7541 box-shadow: none; 7542 display: flex; 7543 flex-direction: column; 7544 align-items: center; 7545 justify-content: flex-start; 7546 gap: 9px; 7547 min-width: 0; 7548 padding: 0; 7549 color: #4f4b45; 7550 font: inherit; 7551 cursor: pointer; 7552 -webkit-tap-highlight-color: transparent; 7553 } 7554 7555 .roco-share-option:hover, 7556 .roco-share-option:focus-visible { 7557 background: transparent; 7558 outline: none; 7559 } 7560 7561 .roco-share-icon { 7562 width: 56px; 7563 height: 56px; 7564 border-radius: 18px; 7565 background: #f5f5f4; 7566 color: #35312d; 7567 display: inline-flex; 7568 align-items: center; 7569 justify-content: center; 7570 border: 1px solid #efefed; 7571 transition: 7572 transform .18s ease, 7573 background .18s ease, 7574 color .18s ease, 7575 border-color .18s ease, 7576 box-shadow .18s ease; 7577 } 7578 7579 .roco-share-option:active .roco-share-icon { 7580 transform: scale(.94); 7581 } 7582 7583 .roco-share-icon svg { 7584 width: 24px; 7585 height: 24px; 7586 fill: none; 7587 stroke: currentColor; 7588 stroke-width: 1.8; 7589 stroke-linecap: round; 7590 stroke-linejoin: round; 7591 } 7592 7593 .roco-share-facebook svg path { 7594 fill: currentColor; 7595 stroke: none; 7596 } 7597 7598 .roco-share-whatsapp { 7599 color: #159447; 7600 background: #eefaf2; 7601 border-color: #e1f5e8; 7602 } 7603 7604 .roco-share-facebook { 7605 color: #1877f2; 7606 background: #eef5ff; 7607 border-color: #e1edff; 7608 } 7609 7610 .roco-share-label { 7611 display: block; 7612 max-width: 100%; 7613 color: #5f5b55; 7614 font-size: 10.5px; 7615 font-weight: 550; 7616 line-height: 1.2; 7617 white-space: nowrap; 7618 overflow: hidden; 7619 text-overflow: ellipsis; 7620 } 7621 7622 7623 /* COPY SUCCESS STATE */ 7624 .roco-copy-check-svg { 7625 display: none; 7626 } 7627 7628 .roco-copy-option.is-copied .roco-share-icon { 7629 color: #14833b; 7630 background: #eaf8ef; 7631 border-color: #d5f0df; 7632 box-shadow: 0 7px 18px rgba(20, 131, 59, .13); 7633 transform: translateY(-2px); 7634 } 7635 7636 .roco-copy-option.is-copied .roco-copy-svg { 7637 display: none; 7638 } 7639 7640 .roco-copy-option.is-copied .roco-copy-check-svg { 7641 display: block; 7642 animation: rocoCopyCheckPop .28s ease; 7643 } 7644 7645 .roco-copy-option.is-copied .roco-copy-label { 7646 color: #14833b; 7647 font-weight: 650; 7648 } 7649 7650 @keyframes rocoCopyCheckPop { 7651 0% { transform: scale(.6); opacity: 0; } 7652 70% { transform: scale(1.15); opacity: 1; } 7653 100% { transform: scale(1); opacity: 1; } 7654 } 7655 7656 7657 /* COPY TOAST */ 7658 .roco-share-toast { 7659 width: fit-content; 7660 max-width: 100%; 7661 min-height: 42px; 7662 margin: 19px auto 0; 7663 padding: 9px 14px 9px 10px; 7664 border-radius: 999px; 7665 display: flex; 7666 align-items: center; 7667 justify-content: center; 7668 gap: 9px; 7669 background: #edf8f0; 7670 border: 1px solid #d9efdf; 7671 color: #176d36; 7672 box-shadow: 0 8px 24px rgba(23, 109, 54, .10); 7673 opacity: 0; 7674 visibility: hidden; 7675 transform: translateY(6px) scale(.98); 7676 transition: 7677 opacity .2s ease, 7678 visibility .2s ease, 7679 transform .2s ease; 7680 } 7681 7682 .roco-share-toast.is-visible { 7683 opacity: 1; 7684 visibility: visible; 7685 transform: translateY(0) scale(1); 7686 } 7687 7688 .roco-share-toast-icon { 7689 width: 24px; 7690 height: 24px; 7691 flex: 0 0 24px; 7692 border-radius: 50%; 7693 display: flex; 7694 align-items: center; 7695 justify-content: center; 7696 background: #1f9d4e; 7697 color: #fff; 7698 } 7699 7700 .roco-share-toast-icon svg { 7701 width: 14px; 7702 height: 14px; 7703 fill: none; 7704 stroke: currentColor; 7705 stroke-width: 2.4; 7706 stroke-linecap: round; 7707 stroke-linejoin: round; 7708 } 7709 7710 .roco-share-toast-text { 7711 font-size: 12px; 7712 font-weight: 650; 7713 line-height: 1.25; 7714 } 7715 7716 } 7717 7718 7719 7720 </style> 7721 7722 7723
7723<script id="roco-mobile-bottom-nav-v7-js"> 7724 document.addEventListener('DOMContentLoaded', function () { 7725 7726 const navWrap = document.getElementById('rocoMobileBottomNav'); 7727 const whatsappLink = document.getElementById('rocoWhatsappLink'); 7728 const searchToggle = document.querySelector('.roco-bottom-search-toggle'); 7729 const searchOverlay = document.getElementById('rocoBottomSearchOverlay'); 7730 const searchClose = document.querySelector('.roco-bottom-search-close'); 7731 const shareToggle = document.querySelector('.roco-share-trigger'); 7732 const shareOverlay = document.getElementById('rocoShareOverlay'); 7733 const shareClose = document.querySelector('.roco-share-close'); 7734 const shareToast = document.getElementById('rocoShareToast'); 7735 const copyOption = document.querySelector('.roco-copy-option'); 7736 const copyLabel = document.querySelector('.roco-copy-label'); 7737 const wishlistLink = document.getElementById('rocoWishlistLink'); 7738 const yithBridge = document.getElementById('rocoYithWishlistBridge'); 7739 7740 const pageTitle = "Blog - ROCO Interiors"; 7741 const wishlistUrl = "https:\/\/roco.pk\/wishlist\/"; 7742 const isProduct = false; 7743 7744 let copyTimer = null; 7745 7746 7747 /* ================================================== 7748 * CURRENT URL 7749 * ================================================== */ 7750 function currentUrl() { 7751 return window.location.href; 7752 } 7753 7754 7755 /* ================================================== 7756 * WHATSAPP MAIN BUTTON 7757 * ================================================== */ 7758 if (whatsappLink) { 7759 const phone = '923176965610'; 7760 7761 const message = 7762 'Hi ROCO,\n\n' + 7763 "I'm interested in this and would like to check availability and delivery details.\n\n" + 7764 'Page: ' + pageTitle + '\n\n' + 7765 'Link: ' + currentUrl(); 7766 7767 whatsappLink.href = 7768 'https://wa.me/' + phone + '?text=' + encodeURIComponent(message); 7769 } 7770 7771 7772 /* ================================================== 7773 * NAV SHOW / SHRINK 7774 * ================================================== */ 7775 function getScrollPercent() { 7776 const doc = document.documentElement; 7777 const maxScroll = doc.scrollHeight - window.innerHeight; 7778 7779 return maxScroll > 0 7780 ? (window.scrollY / maxScroll) * 100 7781 : 0; 7782 } 7783 7784 function handleBottomNavScroll() { 7785 if (!navWrap) return; 7786 7787 const percent = getScrollPercent(); 7788 7789 navWrap.classList.toggle('roco-nav-visible', percent >= 5); 7790 navWrap.classList.toggle('roco-nav-shrink', percent >= 7); 7791 } 7792 7793 handleBottomNavScroll(); 7794 7795 window.addEventListener( 7796 'scroll', 7797 handleBottomNavScroll, 7798 { passive: true } 7799 ); 7800 7801 window.addEventListener( 7802 'resize', 7803 handleBottomNavScroll, 7804 { passive: true } 7805 ); 7806 7807 7808 /* ================================================== 7809 * BODY LOCK 7810 * ================================================== */ 7811 function lockBody(locked) { 7812 document.body.style.overflow = locked ? 'hidden' : ''; 7813 } 7814 7815 7816 /* ================================================== 7817 * SEARCH 7818 * ================================================== */ 7819 function openSearch() { 7820 if (!searchOverlay) return; 7821 7822 searchOverlay.classList.add('is-open'); 7823 searchOverlay.setAttribute('aria-hidden', 'false'); 7824 7825 if (searchToggle) { 7826 searchToggle.setAttribute('aria-expanded', 'true'); 7827 } 7828 7829 lockBody(true); 7830 7831 const input = searchOverlay.querySelector('input[type="search"]'); 7832 7833 window.setTimeout(function () { 7834 if (input) input.focus(); 7835 }, 120); 7836 } 7837 7838 function closeSearch() { 7839 if (!searchOverlay) return; 7840 7841 searchOverlay.classList.remove('is-open'); 7842 searchOverlay.setAttribute('aria-hidden', 'true'); 7843 7844 if (searchToggle) { 7845 searchToggle.setAttribute('aria-expanded', 'false'); 7846 } 7847 7848 lockBody(false); 7849 } 7850 7851 7852 /* ================================================== 7853 * SHARE 7854 * ================================================== */ 7855 function openShare() { 7856 if (!shareOverlay) return; 7857 7858 shareOverlay.classList.add('is-open'); 7859 shareOverlay.setAttribute('aria-hidden', 'false'); 7860 7861 if (shareToggle) { 7862 shareToggle.setAttribute('aria-expanded', 'true'); 7863 } 7864 7865 lockBody(true); 7866 } 7867 7868 function closeShare() { 7869 if (!shareOverlay) return; 7870 7871 shareOverlay.classList.remove('is-open'); 7872 shareOverlay.setAttribute('aria-hidden', 'true'); 7873 7874 if (shareToggle) { 7875 shareToggle.setAttribute('aria-expanded', 'false'); 7876 } 7877 7878 lockBody(false); 7879 } 7880 7881 7882 /* ================================================== 7883 * OPEN/CLOSE EVENTS 7884 * ================================================== */ 7885 if (searchToggle) { 7886 searchToggle.addEventListener('click', openSearch); 7887 } 7888 7889 if (searchClose) { 7890 searchClose.addEventListener('click', closeSearch); 7891 } 7892 7893 if (shareToggle) { 7894 shareToggle.addEventListener('click', openShare); 7895 } 7896 7897 if (shareClose) { 7898 shareClose.addEventListener('click', closeShare); 7899 } 7900 7901 if (searchOverlay) { 7902 searchOverlay.addEventListener('click', function (event) { 7903 if (event.target === searchOverlay) { 7904 closeSearch(); 7905 } 7906 }); 7907 } 7908 7909 if (shareOverlay) { 7910 shareOverlay.addEventListener('click', function (event) { 7911 if (event.target === shareOverlay) { 7912 closeShare(); 7913 } 7914 }); 7915 } 7916 7917 document.addEventListener('keydown', function (event) { 7918 if (event.key === 'Escape') { 7919 closeSearch(); 7920 closeShare(); 7921 } 7922 }); 7923 7924 7925 /* ================================================== 7926 * COPY SUCCESS UI 7927 * ================================================== */ 7928 function showCopySuccess() { 7929 if (copyTimer) { 7930 window.clearTimeout(copyTimer); 7931 } 7932 7933 if (copyOption) { 7934 copyOption.classList.add('is-copied'); 7935 } 7936 7937 if (copyLabel) { 7938 copyLabel.textContent = 'Copied'; 7939 } 7940 7941 if (shareToast) { 7942 shareToast.classList.add('is-visible'); 7943 } 7944 7945 copyTimer = window.setTimeout(function () { 7946 if (copyOption) { 7947 copyOption.classList.remove('is-copied'); 7948 } 7949 7950 if (copyLabel) { 7951 copyLabel.textContent = 'Copy Link'; 7952 } 7953 7954 if (shareToast) { 7955 shareToast.classList.remove('is-visible'); 7956 } 7957 }, 1900); 7958 } 7959
7960 function showCopyFailure() { 7961 if (!shareToast) return; 7962 7963 const text = shareToast.querySelector('.roco-share-toast-text'); 7964 7965 if (text) { 7966 text.textContent = 'Unable to copy link'; 7967 } 7968 7969 shareToast.classList.add('is-visible'); 7970 7971 window.setTimeout(function () { 7972 shareToast.classList.remove('is-visible'); 7973 7974 if (text) { 7975 text.textContent = 'Link copied successfully'; 7976 } 7977 }, 1900); 7978 } 7979 7980 7981 /* ================================================== 7982 * COPY LINK 7983 * ================================================== */ 7984 async function copyCurrentLink() { 7985 const url = currentUrl(); 7986 7987 try { 7988 if (navigator.clipboard && window.isSecureContext) { 7989 await navigator.clipboard.writeText(url); 7990 showCopySuccess(); 7991 return true; 7992 } 7993 } catch (error) { 7994 // Continue to fallback below. 7995 } 7996 7997 const textarea = document.createElement('textarea'); 7998 7999 textarea.value = url; 8000 textarea.setAttribute('readonly', ''); 8001 textarea.style.position = 'fixed'; 8002 textarea.style.left = '-9999px'; 8003 textarea.style.top = '-9999px'; 8004 textarea.style.opacity = '0'; 8005 textarea.style.pointerEvents = 'none'; 8006 8007 document.body.appendChild(textarea); 8008 8009 textarea.focus(); 8010 textarea.select(); 8011 textarea.setSelectionRange(0, textarea.value.length); 8012 8013 let success = false; 8014 8015 try { 8016 success = document.execCommand('copy'); 8017 } catch (error) { 8018 success = false; 8019 } 8020 8021 textarea.remove(); 8022 8023 if (success) { 8024 showCopySuccess(); 8025 return true; 8026 } 8027 8028 showCopyFailure(); 8029 return false; 8030 } 8031 8032 8033 /* ================================================== 8034 * SHARE OPTIONS 8035 * ================================================== */ 8036 document.querySelectorAll('[data-share]').forEach(function (button) { 8037 button.addEventListener('click', async function () { 8038 const type = button.dataset.share; 8039 const url = currentUrl(); 8040 8041 if (type === 'whatsapp') { 8042 window.open( 8043 'https://wa.me/?text=' + 8044 encodeURIComponent(pageTitle + '\n' + url), 8045 '_blank', 8046 'noopener,noreferrer' 8047 ); 8048 return; 8049 } 8050 8051 if (type === 'facebook') { 8052 window.open( 8053 'https://www.facebook.com/sharer/sharer.php?u=' + 8054 encodeURIComponent(url), 8055 '_blank', 8056 'width=650,height=550,noopener,noreferrer' 8057 ); 8058 return; 8059 } 8060 8061 if (type === 'native') { 8062 if (navigator.share) { 8063 try { 8064 await navigator.share({ 8065 title: pageTitle, 8066 text: pageTitle, 8067 url: url 8068 }); 8069 return; 8070 } catch (error) { 8071 if (error && error.name === 'AbortError') { 8072 return; 8073 } 8074 } 8075 } 8076 8077 await copyCurrentLink(); 8078 return; 8079 } 8080 8081 if (type === 'copy') { 8082 await copyCurrentLink(); 8083 } 8084 }); 8085 }); 8086 8087 8088 /* ================================================== 8089 * YITH WISHLIST HELPERS 8090 * 8091 * Supports both older PHP-rendered YITH controls and 8092 * newer React-rendered YITH controls. We let YITH handle 8093 * the actual add operation with its own front-end code. 8094 * ================================================== */ 8095 function bridgeElements() { 8096 if (!yithBridge) { 8097 return []; 8098 } 8099 8100 return Array.from( 8101 yithBridge.querySelectorAll('button, a, [role="button"]') 8102 ); 8103 } 8104 8105 function looksLikeWishlistBrowseControl(element) { 8106 if (!element) return false;
8107 8108 const href = ( 8109 element.getAttribute('href') || '' 8110 ).toLowerCase(); 8111 8112 const text = ( 8113 element.textContent || '' 8114 ).trim().toLowerCase(); 8115 8116 const aria = ( 8117 element.getAttribute('aria-label') || '' 8118 ).toLowerCase(); 8119 8120 const className = ( 8121 typeof element.className === 'string' 8122 ? element.className 8123 : '' 8124 ).toLowerCase(); 8125 8126 if ( 8127 className.includes('wishlistaddedbrowse') || 8128 className.includes('wishlistexistsbrowse') 8129 ) { 8130 return true; 8131 } 8132 8133 if ( 8134 href && 8135 href.indexOf('/wishlist') !== -1 && 8136 href.indexOf('add_to_wishlist') === -1 8137 ) { 8138 return true; 8139 } 8140 8141 return ( 8142 text.includes('browse wishlist') || 8143 text.includes('view wishlist') || 8144 text.includes('remove from wishlist') || 8145 text.includes('added to wishlist') || 8146 aria.includes('browse wishlist') || 8147 aria.includes('view wishlist') || 8148 aria.includes('remove from wishlist') || 8149 aria.includes('added to wishlist') 8150 ); 8151 } 8152 8153 function getYithAddControl() { 8154 if (!yithBridge) return null; 8155 8156 /* Legacy / PHP-rendered YITH. */ 8157 const legacy = yithBridge.querySelector( 8158 'a.add_to_wishlist, ' + 8159 'button.add_to_wishlist, ' + 8160 '.single_add_to_wishlist, ' + 8161 '[data-product-id].add_to_wishlist' 8162 ); 8163 8164 if (legacy) { 8165 return legacy; 8166 } 8167 8168 /* React/newer YITH: the shortcode area normally has one action. */ 8169 const elements = bridgeElements(); 8170 8171 for (const element of elements) { 8172 if (looksLikeWishlistBrowseControl(element)) { 8173 continue; 8174 } 8175 8176 const href = ( 8177 element.getAttribute('href') || '' 8178 ).toLowerCase(); 8179 8180 const text = ( 8181 element.textContent || '' 8182 ).trim().toLowerCase(); 8183 8184 const aria = ( 8185 element.getAttribute('aria-label') || '' 8186 ).toLowerCase(); 8187 8188 const title = ( 8189 element.getAttribute('title') || '' 8190 ).toLowerCase(); 8191 8192 const className = ( 8193 typeof element.className === 'string' 8194 ? element.className 8195 : '' 8196 ).toLowerCase(); 8197 8198 if ( 8199 href.includes('add_to_wishlist') || 8200 className.includes('add-to-wishlist') || 8201 className.includes('add_to_wishlist') || 8202 text.includes('add to wishlist') || 8203 aria.includes('add to wishlist') || 8204 title.includes('add to wishlist') 8205 ) { 8206 return element; 8207 } 8208 } 8209 8210 /* 8211 * React templates may use a plain button with an icon and 8212 * no useful text/class. Inside our private shortcode bridge, 8213 * a plain button is therefore a valid final fallback. 8214 */ 8215 return elements.find(function (element) { 8216 return element.tagName === 'BUTTON'; 8217 }) || null; 8218 } 8219 8220 function yithShowsProductAlreadyAdded() { 8221 if (!yithBridge) return false;
8222 8223 if ( 8224 yithBridge.querySelector( 8225 '.yith-wcwl-wishlistaddedbrowse, ' + 8226 '.yith-wcwl-wishlistexistsbrowse' 8227 ) 8228 ) { 8229 return true; 8230 } 8231 8232 return bridgeElements().some( 8233 looksLikeWishlistBrowseControl 8234 ); 8235 } 8236 8237 function refreshHeartStateFromYith() { 8238 if (!wishlistLink || !isProduct) return; 8239 8240 if (yithShowsProductAlreadyAdded()) { 8241 wishlistLink.classList.add('is-wishlisted'); 8242 wishlistLink.setAttribute('aria-label', 'Open Wishlist'); 8243 } 8244 } 8245 8246 function waitForYithReady(maxWait) { 8247 return new Promise(function (resolve) { 8248 const started = Date.now(); 8249 8250 function check() { 8251 if ( 8252 yithShowsProductAlreadyAdded() || 8253 getYithAddControl() 8254 ) { 8255 resolve(true); 8256 return; 8257 } 8258 8259 if (Date.now() - started >= maxWait) { 8260 resolve(false); 8261 return; 8262 } 8263 8264 window.setTimeout(check, 100); 8265 } 8266 8267 check(); 8268 }); 8269 } 8270 8271 refreshHeartStateFromYith(); 8272 window.setTimeout(refreshHeartStateFromYith, 350); 8273 window.setTimeout(refreshHeartStateFromYith, 900); 8274 window.setTimeout(refreshHeartStateFromYith, 1600); 8275 8276 8277 /* ================================================== 8278 * WISHLIST CLICK 8279 * 8280 * PRODUCT PAGE: 8281 * 1. Use YITH's own shortcode/front-end component. 8282 * 2. Block legacy anchor navigation, so the product URL 8283 * never becomes ?add_to_wishlist=... 8284 * 3. Fill the custom heart red immediately. 8285 * 4. Wait for YITH to confirm/update its component. 8286 * 5. Open clean https://roco.pk/wishlist/ 8287 * 8288 * NON-PRODUCT PAGE: 8289 * Open the Wishlist page directly. 8290 * ================================================== */ 8291 if (wishlistLink) { 8292 wishlistLink.addEventListener('click', async function (event) { 8293 event.preventDefault(); 8294 8295 if (!isProduct) { 8296 window.location.assign(wishlistUrl); 8297 return; 8298 } 8299 8300 if (wishlistLink.classList.contains('is-loading')) { 8301 return; 8302 } 8303 8304 /* Give React templates time to mount if needed. */ 8305 await waitForYithReady(2200); 8306 8307 if ( 8308 wishlistLink.classList.contains('is-wishlisted') || 8309 yithShowsProductAlreadyAdded() 8310 ) { 8311 wishlistLink.classList.add('is-wishlisted'); 8312 wishlistLink.setAttribute('aria-label', 'Open Wishlist'); 8313 window.location.assign(wishlistUrl); 8314 return; 8315 } 8316 8317 const addControl = getYithAddControl(); 8318 8319 if (!addControl) { 8320 /* 8321 * YITH is unavailable/not initialized. Do not pretend 8322 * the product was added or send the user to an empty list. 8323 */ 8324 wishlistLink.classList.remove('is-wishlisted'); 8325 wishlistLink.setAttribute('aria-label', 'Add to Wishlist'); 8326 window.alert('Wishlist could not initialize on this product. Please refresh and try again.'); 8327 return; 8328 } 8329 8330 wishlistLink.classList.add('is-loading'); 8331 wishlistLink.classList.add('is-wishlisted'); 8332 wishlistLink.setAttribute('aria-label', 'Adding to Wishlist'); 8333 8334 let finished = false;
8335 let observer = null; 8336 let timeoutId = null; 8337 let legacyJqueryHandler = null; 8338 8339 function cleanup() { 8340 if (observer) { 8341 observer.disconnect(); 8342 observer = null; 8343 } 8344 8345 if (timeoutId) { 8346 window.clearTimeout(timeoutId); 8347 timeoutId = null; 8348 } 8349 8350 if ( 8351 legacyJqueryHandler && 8352 window.jQuery 8353 ) { 8354 window.jQuery(document).off( 8355 'added_to_wishlist.rocoWishlist', 8356 legacyJqueryHandler 8357 ); 8358 } 8359 } 8360 8361 function completeWishlistAdd() { 8362 if (finished) return; 8363 finished = true; 8364 8365 cleanup(); 8366 8367 wishlistLink.classList.remove('is-loading'); 8368 wishlistLink.classList.add('is-wishlisted'); 8369 wishlistLink.setAttribute('aria-label', 'Open Wishlist'); 8370 8371 window.setTimeout(function () { 8372 window.location.assign(wishlistUrl); 8373 }, 320); 8374 } 8375 8376 function failWishlistAdd() { 8377 if (finished) return; 8378 finished = true; 8379 8380 cleanup(); 8381 8382 wishlistLink.classList.remove('is-loading'); 8383 wishlistLink.classList.remove('is-wishlisted'); 8384 wishlistLink.setAttribute('aria-label', 'Add to Wishlist'); 8385 8386 window.alert( 8387 'Could not add this product to your wishlist. Please try again.' 8388 ); 8389 } 8390 8391 /* Legacy YITH versions commonly trigger this event. */ 8392 if (window.jQuery) { 8393 legacyJqueryHandler = function () { 8394 completeWishlistAdd(); 8395 }; 8396 8397 window.jQuery(document).on( 8398 'added_to_wishlist.rocoWishlist', 8399 legacyJqueryHandler 8400 ); 8401 } 8402 8403 /* 8404 * React and PHP templates both update their component after 8405 * a successful add. Observe only our isolated YITH bridge. 8406 */ 8407 if (yithBridge && window.MutationObserver) { 8408 observer = new MutationObserver(function () { 8409 window.setTimeout(function () { 8410 if ( 8411 yithShowsProductAlreadyAdded() || 8412 !document.documentElement.contains(addControl) 8413 ) { 8414 completeWishlistAdd(); 8415 } 8416 }, 80); 8417 }); 8418 8419 observer.observe(yithBridge, { 8420 childList: true, 8421 subtree: true, 8422 attributes: true, 8423 characterData: true 8424 }); 8425 } 8426 8427 /* Hard stop: never leave the heart spinning forever. */ 8428 timeoutId = window.setTimeout(function () { 8429 /* One final state check before reporting failure. */ 8430 if (yithShowsProductAlreadyAdded()) { 8431 completeWishlistAdd(); 8432 } else { 8433 failWishlistAdd(); 8434 } 8435 }, 9000); 8436 8437 /* 8438 * Prevent an old-style YITH anchor from changing the visible 8439 * browser URL. The click still bubbles to YITH's JS handler. 8440 */ 8441 const stopLegacyNavigation = function (clickEvent) { 8442 const target = clickEvent.target.closest 8443 ? clickEvent.target.closest('a') 8444 : null; 8445 8446 if ( 8447 target && 8448 yithBridge && 8449 yithBridge.contains(target) 8450 ) { 8451 clickEvent.preventDefault(); 8452 } 8453 }; 8454 8455 document.addEventListener( 8456 'click', 8457 stopLegacyNavigation, 8458 true 8459 ); 8460 8461 try { 8462 addControl.click(); 8463 } catch (error) { 8464 document.removeEventListener( 8465 'click', 8466 stopLegacyNavigation, 8467 true 8468 ); 8469 8470 failWishlistAdd(); 8471 return; 8472 } 8473 8474 /* Only needed around the synthetic click itself. */ 8475 window.setTimeout(function () { 8476 document.removeEventListener( 8477 'click', 8478 stopLegacyNavigation, 8479 true 8480 ); 8481 }, 500); 8482 }); 8483 } 8484 8485 }); 8486 </script>
8486 8487 8488 8489 </body> 8490</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.