@uniqode/card-templates 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var n={59:function(n,e,t){function o(n){return!(!n||"string"!=typeof n)&&/^#([A-Fa-f0-9]{3}){1,2}$/.test(n)}function a(n,e=.2){return n&&"string"==typeof n?o(n=n.trim())?(3===(n=n.replace("#","")).length&&(n=n.split("").map(n=>n+n).join("")),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${e=Math.max(0,Math.min(1,e))})`):n:"rgba(0, 0, 0, 0)"}function i(n){return o(n)?(3===(n=n.replace("#","")).length&&(n=n.split("").map(n=>n+n).join("")),{r:parseInt(n.substring(0,2),16),g:parseInt(n.substring(2,4),16),b:parseInt(n.substring(4,6),16)}):{r:0,g:0,b:0}}function s(n){const{r:e,g:t,b:o}=i(n);return(.299*e+.587*t+.114*o)/255>.5?"#000000":"#ffffff"}function r(n,e){if(!o(n))return n;const{r:t,g:a,b:s}=i(n),r=n=>{const t=n+e;return Math.max(0,Math.min(255,t))};return`#${r(t).toString(16).padStart(2,"0")}${r(a).toString(16).padStart(2,"0")}${r(s).toString(16).padStart(2,"0")}`}t.r(e),t.d(e,{adjustBrightness:function(){return r},getContrastColor:function(){return s},hexToRGB:function(){return i},hexToRGBA:function(){return a},isHexColorCode:function(){return o}}),e.default={isHexColorCode:o,hexToRGBA:a,hexToRGB:i,getContrastColor:s,adjustBrightness:r}},583:function(n,e,t){t.d(e,{K:function(){return a}});var o=t(640);class a extends o.aR{static get layoutId(){return"layout-12"}connectedCallback(){this.loadFontAwesome(),super.connectedCallback()}loadFontAwesome(){if(document.getElementById("font-awesome-cdn"))return;const n=document.createElement("link");n.id="font-awesome-cdn",n.rel="stylesheet",n.href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css",n.integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==",n.crossOrigin="anonymous",n.referrerPolicy="no-referrer",document.head.appendChild(n)}getLayout12Styles(n={}){const{containerWidth:e="100%",containerMaxWidth:t="500px",containerHeight:o="100%",containerMinHeight:a="auto",containerMargin:i="0 auto",clicksDisabled:s=!1,heroHeight:r="280px",footerClicksDisabled:c=!1,isAnimationMode:l=!1}=n;return`\n /* Import Font Awesome into Shadow DOM */\n @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css');\n \n * {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n }\n\n ${l?"":"\n :host {\n /* CRITICAL: Reset ALL inherited CSS properties from parent/consumer */\n /* This prevents external styles (like text-align: center) from leaking in */\n all: initial;\n \n /* Now explicitly set the styles we need */\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden; /* Prevent parent scrolling */\n position: relative; /* For absolute positioning of footer/form */\n \n /* Reset text properties to ensure consistent rendering */\n text-align: left;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 16px;\n line-height: 1.5;\n color: #000000;\n \n /* Ensure box model is correct */\n box-sizing: border-box;\n }\n "}\n\n .uqc-card-container {\n width: ${e};\n max-width: ${t};\n height: ${o};\n min-height: ${a};\n max-height: 100%; /* Don't exceed host height */\n margin: ${i};\n background: var(--card-bg, #F0EFED);\n position: relative;\n overflow: hidden; /* Container doesn't scroll */\n ${s?"pointer-events: none; user-select: none;":""}\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n \n /* Ensure text alignment is not inherited from consumer */\n text-align: left;\n }\n \n /* Main scrollable area - contains content + stripes, scrolls when needed */\n .uqc-scrollable-area {\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n }\n \n /* Fixed elements wrapper - take full card width */\n .uqc-fixed-btn-container {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n \n /* Lead drawer - take full card width (transform handled by LeadFormMixin) */\n .uqc-lead-drawer {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n\n /* Scrollbar styling for better UX */\n .uqc-scrollable-area::-webkit-scrollbar {\n width: 6px;\n }\n\n .uqc-scrollable-area::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .uqc-scrollable-area::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n }\n\n .uqc-scrollable-area::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n\n /* Responsive behavior */\n @media only screen and (max-width: 500px) {\n .uqc-card-container {\n max-width: 100%;\n }\n }\n\n /* Card content wrapper - takes only the space it needs, doesn't scroll */\n .uqc-card-content-wrapper {\n flex: 0 0 auto; /* Don't grow, don't shrink - take content size */\n display: flex;\n flex-direction: column;\n }\n\n /* Hero Image Section - configurable height */\n .uqc-hero-section {\n position: relative;\n width: 100%;\n height: ${r};\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .uqc-hero-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n /* Logo Section - Positioned on hero image (top left) */\n .uqc-logo-section {\n position: absolute;\n top: 24px;\n left: 16px;\n z-index: 10;\n }\n\n .uqc-logo-circle {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background: #FFFFFF;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n }\n\n .uqc-logo-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n padding: 4px;\n text-transform: uppercase;\n color: #EAEAEA;\n }\n\n /* Content Section - takes only needed space */\n .uqc-content-section {\n padding: 16px;\n flex-shrink: 0;\n }\n\n /* Personal Info Section */\n .uqc-personal-info {\n margin-bottom: 12px;\n }\n\n .uqc-name-line {\n display: flex;\n align-items: baseline;\n gap: 8px;\n margin-bottom: 4px;\n }\n\n .uqc-name {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--personal-info-weight, 700);\n font-size: var(--personal-info-size, 26px);\n line-height: 1.1em;\n letter-spacing: -0.03em;\n text-transform: uppercase;\n color: var(--personal-info-color, var(--user-info-color, #203D99));\n }\n\n .uqc-pronouns {\n font-family: var(--font-family, 'Inter'), sans-serif;\n font-weight: var(--personal-info-weight, 400);\n font-size: calc(var(--personal-info-size, 26px) * 0.5);\n line-height: 1.21em;\n color: var(--personal-info-color, var(--user-info-color, #203D99));\n opacity: 0.8;\n }\n\n .uqc-job-title {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: var(--company-details-size, 14.4px);\n line-height: 1.37em;\n color: var(--company-details-color, var(--user-info-color, #203D99));\n margin-bottom: 4px;\n }\n\n .uqc-company {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--company-details-weight, 600);\n font-size: var(--company-details-size, 14.4px);\n line-height: 1.37em;\n color: var(--company-details-color, var(--user-info-color, #203D99));\n margin-bottom: 4px;\n }\n\n .uqc-department {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: calc(var(--company-details-size, 14.4px) * 0.9);\n line-height: 1.37em;\n color: var(--company-details-color, var(--user-info-color, #203D99));\n opacity: 0.8;\n margin-bottom: 12px;\n }\n\n /* Dividers - color is darker version of card background */\n .uqc-divider-top {\n width: 100%;\n height: 1px;\n background: var(--divider-color, #E0E0E0);\n margin-bottom: 12px;\n }\n\n .uqc-divider-bottom {\n width: 100%;\n height: 1px;\n background: var(--divider-color, #E0E0E0);\n margin: 24px 0 16px 0;\n }\n\n /* Bio Section */\n .uqc-bio-section {\n margin-bottom: 24px;\n }\n\n .uqc-bio-text {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--bio-weight, 400);\n font-size: var(--bio-size, 14.4px);\n line-height: 1.37em;\n color: var(--bio-color, var(--user-info-color, #203D99));\n max-width: 249px;\n }\n\n /* Contact Info Section */\n .uqc-contact-info {\n margin-bottom: 24px;\n }\n\n .uqc-contact-item {\n margin-bottom: 8px;\n cursor: pointer;\n transition: opacity 0.2s;\n }\n\n .contact-item:hover {\n opacity: 0.8;\n }\n\n .contact-item:last-child {\n margin-bottom: 0;\n }\n\n .uqc-contact-value {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--contact-details-weight, 400);\n font-size: var(--contact-details-size, 14.4px);\n line-height: 1.37em;\n color: var(--contact-details-color, var(--user-info-color, #203D99));\n }\n\n /* Social Links Section */\n .uqc-social-section {\n margin-bottom: 32px;\n }\n\n .uqc-social-links {\n display: flex;\n flex-wrap: wrap; /* ✅ Wrap to multiple rows when needed */\n gap: 15px;\n align-items: center;\n }\n\n .uqc-social-icon {\n width: 20px;\n height: 20px;\n cursor: pointer;\n transition: opacity 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .social-icon:hover {\n opacity: 0.7;\n }\n\n .social-icon svg {\n width: 100%;\n height: 100%;\n fill: var(--icon-color, #000000);\n }\n\n .social-icon i {\n font-size: 20px;\n }\n\n /* Color Stripes - Fills remaining space between content and footer */\n .uqc-color-stripes {\n width: 100%;\n display: flex;\n flex-direction: column;\n flex: 1 1 auto; /* Grow to fill remaining space in scrollable area */\n min-height: 40px; /* Minimum 4 stripes × 10px */\n }\n\n .uqc-stripe {\n width: 100%;\n flex: 1; /* Each stripe grows equally to share available space */\n min-height: 10px; /* Minimum height per stripe */\n }\n\n /* Button Section - Fixed at bottom of viewport on server, part of flex on dashboard */\n .uqc-fixed-button-section {\n width: 100%;\n max-width: 500px;\n z-index: 1000;\n pointer-events: none; /* Allow scroll events to pass through */\n box-sizing: border-box;\n }\n \n /* Server/Mobile: Fixed at bottom of viewport */\n .uqc-fixed-button-section.uqc-fixed-position {\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n \n /* Dashboard preview: Part of flex flow (not fixed) */\n .uqc-fixed-button-section.uqc-flex-position {\n position: relative;\n flex: 0 0 auto;\n }\n\n /* Color palette generated from primary color (background_color) */\n .uqc-stripe-1 { background: var(--stripe-color-1); }\n .uqc-stripe-2 { background: var(--stripe-color-2); }\n .uqc-stripe-3 { background: var(--stripe-color-3); }\n .uqc-stripe-4 { background: var(--stripe-color-4); }\n\n /* Button Container - Inside fixed bottom section */\n .uqc-button-container {\n width: 100%;\n padding: 12px 16px 8px 16px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: ${c?"none":"auto"}; /* Disabled in preview mode */\n /* Background color applied dynamically via updateStickyButtons() */\n }\n\n /* Button Styles */\n .uqc-btn, .uqc-btn-exchange {\n background-color: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: var(--button-size, 18px);\n font-weight: var(--button-weight, 400);\n font-family: var(--font-family, 'Inter'), sans-serif;\n pointer-events: auto;\n }\n\n .uqc-btn-connect-container {\n display: none;\n flex-direction: row;\n gap: 8px;\n width: 90%;\n }\n\n .uqc-btn-connect {\n flex: 1;\n width: auto;\n min-width: 0;\n padding: 12px 16px;\n }\n\n /* Footer */\n .uqc-footer-with-exchange {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n margin-top: 8px;\n }\n\n .uqc-created-with-text {\n font-family: 'Inter', sans-serif;\n font-size: 12px;\n color: #6B7280;\n margin: 0;\n }\n\n .uqc-uniqode-logo {\n height: 16px;\n width: auto;\n }\n\n .uqc-hidden {\n display: none !important;\n }\n `}getTemplate(){const n=this._config?.layoutConfig||{},{width:e="100%",maxWidth:t="500px",height:o="100%",minHeight:a="auto",centered:i=!0,fullWidth:s=!1,padding:r="0",clicksDisabled:c=!1,heroHeight:l="280px",footerClicksDisabled:d=!1}=n,u=s?"100%":e,h=s?"none":t,g=o,p=a,f=i?"0 auto":"0";return`\n <style>\n ${this.getLayout12Styles({containerWidth:u,containerMaxWidth:h,containerHeight:g,containerMinHeight:p,containerMargin:f,clicksDisabled:c,heroHeight:l,footerClicksDisabled:d,isAnimationMode:!1})}\n </style>\n \n <div class="uqc-card-container">\n \x3c!-- Language Dropdown (inside card at top right) --\x3e\n ${this.getLanguageDropdownTemplate()}\n \n \x3c!-- Scrollable Area - Contains content + stripes, scrolls when needed --\x3e\n <div class="uqc-scrollable-area">\n \x3c!-- Card content wrapper (hero + content) --\x3e\n <div class="uqc-card-content-wrapper">\n \x3c!-- Hero Image Section (logo positioned inside) --\x3e\n <div class="uqc-hero-section uqc-hidden">\n <img class="uqc-hero-image uqc-hidden" alt="Hero" />\n \n \x3c!-- Company Logo on top of hero (top left circle) --\x3e\n <div class="uqc-logo-section uqc-hidden">\n <div class="uqc-logo-circle">\n <img class="uqc-logo-image uqc-hidden" alt="Company Logo" />\n </div>\n </div>\n </div>\n\n \x3c!-- Content Section --\x3e\n <div class="uqc-content-section">\n \x3c!-- Personal Info --\x3e\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name"></div>\n <div class="uqc-pronouns uqc-hidden"></div>\n </div>\n <div class="uqc-job-title uqc-hidden"></div>\n <div class="uqc-company uqc-hidden"></div>\n <div class="uqc-department uqc-hidden"></div>\n </div>\n\n \x3c!-- Divider --\x3e\n <div class="uqc-divider-top"></div>\n\n \x3c!-- Bio --\x3e\n <div class="uqc-bio-section uqc-hidden">\n <div class="uqc-bio-text"></div>\n </div>\n\n \x3c!-- Divider --\x3e\n <div class="uqc-divider-bottom"></div>\n\n \x3c!-- Contact Info --\x3e\n <div class="uqc-contact-info"></div>\n\n \x3c!-- Social Links --\x3e\n <div class="uqc-social-section">\n <div class="uqc-social-links"></div>\n </div>\n </div>\n </div>\n\n \x3c!-- Color Stripes - Fills remaining space between content and footer --\x3e\n <div class="uqc-color-stripes">\n <div class="uqc-stripe uqc-stripe-1"></div>\n <div class="uqc-stripe uqc-stripe-2"></div>\n <div class="uqc-stripe uqc-stripe-3"></div>\n <div class="uqc-stripe uqc-stripe-4"></div>\n </div>\n </div>\n \n \x3c!-- Fixed Button Section - Always at bottom of card container --\x3e\n <div class="uqc-fixed-button-section">\n <div class="uqc-button-container">\n ${this.getButtonsHTML()}\n </div>\n </div>\n </div>\n \n \x3c!-- Lead Collection Form (outside scrolling container, fixed to :host) --\x3e\n ${!1!==this._config?.leadCollection?this.getLeadFormTemplate():""}\n \n \x3c!-- Card Exchange Animation (outside card, full screen overlay) --\x3e\n ${!1!==this._config?.enableAnimation?this.getAnimationFrameTemplate():""}\n \n \x3c!-- Success Drawer (post-lead-collection feedback) --\x3e\n ${!1!==this._config?.enableSuccessDrawer?this.getSuccessDrawerTemplate():""}\n `}getButtonsHTML(){const n=this._cardData||{},e=this._config||{},t=(n.lead_collection,e.showConnectButtons,n.autodownload_url||"#"),o=n.slug||"slug";return e.hideFooter,n.branding_footer,`\n <a class="uqc-btn" id="uqc-btn-add-to-contact" href="${t}" data-add-to-contact style="text-decoration: none;">\n <i class="fas fa-user-plus" style="font-size: 20px;"></i>\n Add to Contacts\n </a>\n \n <button class="uqc-btn-exchange" id="uqc-btn-exchange" data-exchange-contacts>\n <i class="fas fa-exchange-alt" style="font-size: 20px;"></i>\n Exchange Contacts\n </button>\n \n <div class="uqc-btn-connect-container" id="uqc-btn-connect-container">\n <button class="uqc-btn uqc-btn-connect" data-connect>\n <i class="fas fa-link" style="font-size: 20px;"></i>\n Connect\n </button>\n <button class="uqc-btn uqc-btn-connect" data-create-card data-card-slug="${o}">\n <i class="fas fa-plus-circle" style="font-size: 20px;"></i>\n Create Now\n </button>\n </div>\n `}getCardPreviewHTML(n,e={}){const{isAnimationMode:t=!0,hideEmptySections:o=!0}=e,a=`${n.first_name||""} ${n.last_name||""}`.trim(),i=n.pronouns_v2||"",s=n.designation||"",r=n.company||"",c=n.department||"",l=n.summary||"",d=n.user_image_url||"",u=n.logo_url||"",h=n.logo_size||50,g=n.customizations||this._cardData?.customizations||{},p=g.background_color||"#203D99",f=g.button_color||"#F1C98E",m=g.icon_color||p,v=g.background?.value||"#F0EFED",b=n.phone_v2?.[0]?.value||"",y=n.email_v2?.[0]?.value||"",x=n.address_v2||"",w=n.social_links||{},q=Object.values(w).some(n=>n&&n.trim()),C=this.generateStripeColorsFromPrimary(p),_=`\n --card-bg: ${v};\n --user-info-color: ${p};\n --personal-info-color: ${p};\n --company-details-color: ${p};\n --contact-details-color: ${p};\n --bio-color: ${p};\n --icon-color: ${m};\n --button-color: ${f};\n --divider-color: #E0E0E0;\n `,k=this.getLayout12Styles({containerWidth:"100%",containerMaxWidth:"500px",containerHeight:"100%",containerMinHeight:"auto",containerMargin:"0 auto",clicksDisabled:!0,heroHeight:d?"200px":u?"98px":"0",footerClicksDisabled:!0,isAnimationMode:!0}),S=d||u?`\n <div class="uqc-hero-section" style="height: ${d?"200px":"98px"};">\n ${d?`<img class="uqc-hero-image" src="${d}" alt="Profile" />`:""}\n ${u?`\n <div class="uqc-logo-section">\n <div class="uqc-logo-circle" style="width: ${h}px; height: ${h}px;">\n <img class="uqc-logo-image" src="${u}" alt="Logo" />\n </div>\n </div>\n `:""}\n </div>\n `:"",L=i?`<div class="uqc-pronouns">(${i})</div>`:"",F=s?`<div class="uqc-job-title">${s}</div>`:"",E=r?`<div class="uqc-company">${r}</div>`:"",M=c?`<div class="uqc-department">${c}</div>`:"",$=l?`\n <div class="uqc-divider-top"></div>\n <div class="uqc-bio-section">\n <div class="uqc-bio-text">${l}</div>\n </div>\n <div class="uqc-divider-bottom"></div>\n `:"";let A="";b&&(A+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label" style="font-size: 12px; color: ${p}; margin-bottom: 4px;">Phone</div>\n <div class="uqc-contact-value">${b}</div>\n </div>\n `),y&&(A+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label" style="font-size: 12px; color: ${p}; margin-bottom: 4px;">Email</div>\n <div class="uqc-contact-value">${y}</div>\n </div>\n `),x&&(A+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label" style="font-size: 12px; color: ${p}; margin-bottom: 4px;">Address</div>\n <div class="uqc-contact-value">${x}</div>\n </div>\n `);const D=A?`\n <div class="uqc-contact-info">${A}</div>\n `:"";let T="";return q&&["facebook","instagram","twitter","linkedin","tiktok","snapchat","whatsapp","telegram","youtube","github"].forEach(n=>{w[n]&&(T+=`<div class="uqc-social-icon">${this.getSocialIconForPreview(n,m)}</div>`)}),`\n <style>${k}</style>\n <div class="uqc-card-container" style="${_}">\n <div class="uqc-scrollable-area">\n <div class="uqc-card-content-wrapper">\n ${S}\n <div class="uqc-content-section">\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name">${a||"Name"}</div>\n ${L}\n </div>\n ${F}\n ${E}\n ${M}\n </div>\n ${$}\n ${D}\n ${T?`\n <div class="uqc-social-section">\n <div class="uqc-social-links">${T}</div>\n </div>\n `:""}\n </div>\n </div>\n \n <div class="uqc-color-stripes">\n <div class="uqc-stripe" style="background: ${C[0]};"></div>\n <div class="uqc-stripe" style="background: ${C[1]};"></div>\n <div class="uqc-stripe" style="background: ${C[2]};"></div>\n <div class="uqc-stripe" style="background: ${C[3]};"></div>\n </div>\n \n </div>\n </div>\n `}generateStripeColorsFromPrimary(n){const e=this.hexToHSL(n),t=e.l,o=Math.min(95,t+55),a=Math.min(95,t+48),i=Math.min(95,t+35),s=Math.min(95,t+15);return[`hsl(${e.h}, ${e.s}%, ${o}%)`,`hsl(${e.h}, ${e.s}%, ${a}%)`,`hsl(${e.h}, ${e.s}%, ${i}%)`,`hsl(${e.h}, ${e.s}%, ${s}%)`]}getSocialIconForPreview(n,e){return{facebook:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>`,instagram:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg>`,twitter:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>`,linkedin:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>`,youtube:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>`,github:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>`,whatsapp:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>`,telegram:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>`,tiktok:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"/></svg>`,snapchat:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12.206.793c.99 0 4.347.276 5.93 3.821.529 1.193.403 3.219.299 4.847l-.003.06c-.012.18-.022.345-.03.51.075.045.203.09.401.09.3-.016.659-.12 1.033-.301.165-.088.344-.104.464-.104.182 0 .359.029.509.09.45.149.734.479.734.838.015.449-.39.839-1.213 1.168-.089.029-.209.075-.344.119-.45.135-1.139.36-1.333.81-.09.224-.061.524.12.868l.015.015c.06.136 1.526 3.475 4.791 4.014.255.044.435.27.42.509 0 .075-.015.149-.045.225-.24.569-1.273.988-3.146 1.271-.059.091-.12.375-.164.57-.029.179-.074.36-.134.553-.076.271-.27.405-.555.405h-.03c-.135 0-.313-.031-.538-.074-.36-.075-.765-.135-1.273-.135-.3 0-.599.015-.913.074-.6.104-1.123.464-1.723.884-.853.599-1.826 1.288-3.294 1.288-.06 0-.119-.015-.18-.015h-.149c-1.468 0-2.427-.675-3.279-1.288-.599-.42-1.107-.779-1.707-.884-.314-.045-.629-.074-.928-.074-.54 0-.958.089-1.272.149-.211.043-.391.074-.54.074-.374 0-.523-.224-.583-.42-.061-.192-.09-.389-.135-.567-.046-.181-.105-.494-.166-.57-1.918-.222-2.95-.642-3.189-1.226-.031-.063-.052-.15-.055-.225-.015-.243.165-.465.42-.509 3.264-.54 4.73-3.879 4.791-4.02l.016-.029c.18-.345.224-.645.119-.869-.195-.434-.884-.658-1.332-.809-.121-.029-.24-.074-.346-.119-1.107-.435-1.257-.93-1.197-1.273.09-.479.674-.793 1.168-.793.146 0 .27.029.383.074.42.194.789.3 1.104.3.234 0 .384-.06.465-.105l-.046-.569c-.098-1.626-.225-3.651.307-4.837C7.392 1.077 10.739.807 11.727.807l.419-.015h.06z"/></svg>`}[n]||`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><circle cx="12" cy="12" r="10" stroke="${e}" stroke-width="2" fill="none"/></svg>`}render(){this._cardData&&(this.applyCustomColors(),this.applyStripeColorPalette(),this.applyButtonPosition(),this.renderLanguageDropdown(),this.renderHeroImage(),this.renderLogo(),this.renderPersonalInfo(),this.renderBio(),this.renderContactInfo(),this.renderSocialLinks(),this.updateStickyButtons(),this.updateLeadFormFields(),this._listenersAttached||(this.attachEventListeners(),this.attachStickyButtonFooterListeners(),!1!==this._config?.leadCollection&&this.attachLeadFormListeners(),!1!==this._config?.enableSuccessDrawer&&this.attachSuccessDrawerListeners(),this._listenersAttached=!0))}applyStripeColorPalette(){const n=this.getColor("primary-color"),e=this._shadowRoot?.querySelector(".uqc-color-stripes");if(!e||!n)return void console.warn("[CardLayout12] Cannot apply stripe colors - missing primary color or stripes container");const t=this.hexToHSL(n).l,o=Math.min(95,t+15),a=Math.min(95,t+35),i=Math.min(95,t+48),s=[Math.min(95,t+55),i,a,o],r=this.generateColorPalette(n,s);e.querySelectorAll(".uqc-stripe").forEach((n,e)=>{r[e]&&(n.style.backgroundColor=r[e],console.log(`[CardLayout12] Stripe ${e+1}: ${r[e]} (L: ${s[e].toFixed(0)}%)`))}),console.log("[CardLayout12] Applied stripe colors from primary:",n,"(L:",t.toFixed(0)+"%)")}applyButtonPosition(){const n=this._shadowRoot?.querySelector(".uqc-fixed-button-section");if(!n)return;const e=this._config?.platform||"web",t="server"===e||"mobile"===e;n.classList.remove("uqc-fixed-position","uqc-flex-position"),t?(n.classList.add("uqc-fixed-position"),console.log("[CardLayout12] Button position: FIXED (server/mobile)")):(n.classList.add("uqc-flex-position"),console.log("[CardLayout12] Button position: FLEX (dashboard/web)"))}renderHeroImage(){const n=this.getImages(),e=this._shadowRoot.querySelector(".uqc-hero-image"),t=this._shadowRoot.querySelector(".uqc-hero-section"),o=!!n.profile,a=!!n.logo,i=this._config?.platform||"web",s=this._config?.layoutConfig||{};let r;if(r=!o||"server"!==i&&"mobile"!==i?s.heroHeight||"280px":"45vh",o)e.src=n.profile,e.classList.remove("uqc-hidden"),t.classList.remove("uqc-hidden"),t.style.height=r,console.log(`[CardLayout12] Hero image height: ${r} (platform: ${i})`);else if(a){e.classList.add("uqc-hidden"),t.classList.remove("uqc-hidden");const o=n.logoSize||50,a=24,i=24;t.style.height=`${a+o+i}px`}else e.classList.add("uqc-hidden"),t.classList.add("uqc-hidden")}renderLogo(){const n=this.getImages(),e=this._shadowRoot.querySelector(".uqc-logo-image"),t=this._shadowRoot.querySelector(".uqc-logo-section"),o=this._shadowRoot.querySelector(".uqc-logo-circle");if(n.logo){e.src=n.logo,e.classList.remove("uqc-hidden"),t.classList.remove("uqc-hidden");const a=n.logoSize||50;o&&(o.style.width=`${a}px`,o.style.height=`${a}px`)}else t.classList.add("uqc-hidden")}renderPersonalInfo(){const n=this.getPersonalInfo();console.log("%c[CardLayout12] Personal Info:","color: #10b981; font-weight: bold",n),this._shadowRoot.querySelector(".uqc-name").textContent=n.fullName;const e=this._shadowRoot.querySelector(".uqc-pronouns");n.pronouns?(e.textContent=`(${n.pronouns})`,e.classList.remove("uqc-hidden")):e.classList.add("uqc-hidden");const t=this._shadowRoot.querySelector(".uqc-job-title");n.designation?(t.textContent=n.designation,t.classList.remove("uqc-hidden")):t.classList.add("uqc-hidden");const o=this._shadowRoot.querySelector(".uqc-company");n.company?(o.textContent=n.company,o.classList.remove("uqc-hidden")):o.classList.add("uqc-hidden");const a=this._shadowRoot.querySelector(".uqc-department");n.department?(a.textContent=n.department,a.classList.remove("uqc-hidden")):a.classList.add("uqc-hidden")}renderBio(){const n=this.getPersonalInfo(),e=this._shadowRoot.querySelector(".uqc-bio-section"),t=this._shadowRoot.querySelector(".uqc-bio-text"),o=this._shadowRoot.querySelector(".uqc-divider-top"),a=this._shadowRoot.querySelector(".uqc-divider-bottom");n.summary?(t.textContent=n.summary,e.classList.remove("uqc-hidden"),o&&o.classList.remove("uqc-hidden"),a&&a.classList.remove("uqc-hidden")):(e.classList.add("uqc-hidden"),o&&o.classList.add("uqc-hidden"),a&&a.classList.add("uqc-hidden"))}renderContactInfo(){const n=this.getContactInfo(),e=this.getColor("contact-details-color");console.log("%c[CardLayout12] 📞 Contact Info:","color: #10b981; font-weight: bold",n),console.log("%c[CardLayout12] 📍 address_v2 from cardData:","color: #f59e0b;",this._cardData?.address_v2);const t=JSON.stringify({contactInfo:n,contactColor:e});if(this._lastContactKey===t)return;this._lastContactKey=t;const o=this._shadowRoot.querySelector(".uqc-contact-info");o.innerHTML="";const a=(n,e)=>{e&&Array.isArray(e)&&0!==e.length&&e.forEach(e=>{if(e&&e.value){const t=this.createContactItem(n,e.value,e.label);o.appendChild(t)}})};Array.isArray(n)?n.forEach(({type:n,items:e})=>{const t=n.replace("_v2","");if("address_v2"===n&&"string"==typeof e){const n=this.createContactItem("address",e,"Address");o.appendChild(n)}else a("custom_fields"===n?"custom":t,e)}):Object.entries(n).forEach(([n,e])=>{const t=n.replace("_v2","");if("address_v2"===n&&"string"==typeof e){const n=this.createContactItem("address",e,"Address");o.appendChild(n)}else a("custom_fields"===n?"custom":t,e)})}createContactItem(n,e,t){const o=document.createElement("div");return o.className="uqc-contact-item",o.innerHTML=t?`\n <div class="uqc-contact-label" style="font-size: 12px; color: var(--contact-details-color, var(--user-info-color, #203D99)); margin-bottom: 4px;">${t}</div>\n <div class="uqc-contact-value">${e}</div>\n `:`<div class="contact-value">${e}</div>`,o.addEventListener("click",()=>{this.handleContactClick(n,e)}),o}renderSocialLinks(){const n=this.getSocialLinks(),e=this.getColor("icon-color"),t=JSON.stringify({socialLinks:n,iconColor:e});if(this._lastSocialKey===t)return;this._lastSocialKey=t;const o=this._shadowRoot.querySelector(".uqc-social-links");o.innerHTML="",n.forEach(({platform:n,url:e})=>{const t=document.createElement("div");t.className="uqc-social-icon",t.innerHTML=this.getSocialIcon(n),t.addEventListener("click",()=>{this.handleSocialClick(n,e)}),o.appendChild(t)})}getSocialIcon(n){const e={yelp:"fab fa-yelp",vimeo:"fab fa-vimeo",github:"fab fa-github",paypal:"fab fa-paypal",tiktok:"fab fa-tiktok",twitch:"fab fa-twitch",behance:"fab fa-behance",discord:"fab fa-discord",shopify:"fab fa-shopify",youtube:"fab fa-youtube",dribbble:"fab fa-dribbble",facebook:"fab fa-facebook",linkedin:"fab fa-linkedin",snapchat:"fab fa-snapchat",telegram:"fab fa-telegram",whatsapp:"fab fa-whatsapp",instagram:"fab fa-instagram",pinterest:"fab fa-pinterest"},t=this.getColor("icon-color");return console.log("%c[CardLayout12] Icon color for","color: #f59e0b;",n,":",t,"| From customizations:",this._cardData?.customizations?.icon_color),e[n]?`<i class="${e[n]}" style="color: ${t}; font-size: 20px;"></i>`:this.getCustomColoredSocialIconSvg(n,t)}getCustomColoredSocialIconSvg(n,e){switch(n){case"twitter":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" fill="${e}"/>\n </svg>`;case"wistia":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 31 30" fill="none">\n <path d="M9.5 13V17H12.5V24H16.5V17H19.5L20.5 13H16.5V11C16.5 10.7348 16.6054 10.4804 16.7929 10.2929C16.9804 10.1054 17.2348 10 17.5 10H20.5V6H17.5C16.1739 6 14.9021 6.52678 13.9645 7.46447C13.0268 8.40215 12.5 9.67392 12.5 11V13H9.5Z" stroke="${e}" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>`;case"custom_url":default:return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 121 120" fill="none">\n <circle cx="60.1324" cy="60" r="56.4849" stroke="${e}" stroke-width="7.03025"/>\n <path d="M60.1324 115.055C75.3964 115.055 87.7703 90.4061 87.7703 60C87.7703 29.5938 75.3964 4.94482 60.1324 4.94482" stroke="${e}" stroke-width="7.03025"/>\n <path d="M60.1324 4.94482C44.8685 4.94482 32.4946 29.5938 32.4946 60C32.4946 90.4061 44.8685 115.055 60.1324 115.055" stroke="${e}" stroke-width="7.03025"/>\n <path d="M7.73383 60H112.531" stroke="${e}" stroke-width="7.03025"/>\n <path d="M13.6699 35.2739H106.595" stroke="${e}" stroke-width="7.03025"/>\n <path d="M13.6699 84.7261H106.595" stroke="${e}" stroke-width="7.03025"/>\n </svg>`;case"calendly":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M19 4h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z" fill="${e}"/>\n </svg>`;case"venmo":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M21.5 2h-19C1.67 2 1 2.67 1 3.5v17c0 .83.67 1.5 1.5 1.5h19c.83 0 1.5-.67 1.5-1.5v-17c0-.83-.67-1.5-1.5-1.5zM13.5 17h-3L8 7h3l1.5 7 2-7h3l-4 10z" fill="${e}"/>\n </svg>`;case"cashapp":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M21 5H3c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-5 10h-2v-2h2v2zm0-4h-2V9h2v2z" fill="${e}"/>\n </svg>`}}getInvertedColor(n){return n=n.replace("#",""),(.299*parseInt(n.substr(0,2),16)+.587*parseInt(n.substr(2,2),16)+.114*parseInt(n.substr(4,2),16))/255>.5?"#000000":"#FFFFFF"}attachEventListeners(){this.attachLanguageDropdownListeners()}}customElements.define("uniqode-layout-12",a)},640:function(n,e,t){t.d(e,{aR:function(){return m}});var o=t(688),a=t(750),i=t(59);const s={CARD_READY:"card-ready",CARD_UPDATED:"card-updated",CONTACT_CLICK:"contact-click",SAVE_CONTACT:"save-contact",SOCIAL_CLICK:"social-click",SHARE:"share",LANGUAGE_CHANGE:"language-change",LEAD_FORM_OPEN:"lead-form-open",LEAD_FORM_CLOSE:"lead-form-close",LEAD_FORM_SUBMIT:"lead-form-submit",LEAD_FORM_SUCCESS:"lead-form-success",LEAD_FORM_ERROR:"lead-form-error",LEAD_COLLECT:"lead-collect",ADD_TO_CONTACT_CLICK:"add-to-contact-click",EXCHANGE_CONTACTS_CLICK:"exchange-contacts-click",CONNECT_CLICK:"connect-click",CREATE_NOW_CLICK:"create-now-click",FOOTER_CTA_CLICK:"footer-cta-click",FOOTER_LOGO_CLICK:"footer-logo-click",ANIMATION_STARTED:"animation-started",ANIMATION_ENDED:"animation-ended"},r={ab:"Abkhazian",aa:"Afar",af:"Afrikaans","af-NA":"Afrikaans (Namibia)","af-ZA":"Afrikaans (South Africa)",ak:"Akan","ak-GH":"Akan (Ghana)",sq:"Albanian","sq-AL":"Albanian (Albania)",am:"Amharic","am-ET":"Amharic (Ethiopia)",ar:"Arabic","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SD":"Arabic (Sudan)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (United Arab Emirates)","ar-YE":"Arabic (Yemen)",hy:"Armenian","hy-AM":"Armenian (Armenia)",as:"Assamese","as-IN":"Assamese (India)",asa:"Asu","asa-TZ":"Asu (Tanzania)",ay:"Aymara",az:"Azerbaijani","az-Cyrl":"Azerbaijani (Cyrillic)","az-Cyrl_AZ":"Azerbaijani (Cyrillic, Azerbaijan)","az-Latn":"Azerbaijani (Latin)","az-Latn_AZ":"Azerbaijani (Latin, Azerbaijan)",bm:"Bambara","bm-ML":"Bambara (Mali)",ba:"Bashkir",eu:"Basque","eu-ES":"Basque (Spain)",be:"Belarusian","be-BY":"Belarusian (Belarus)",bem:"Bemba","bem-ZM":"Bemba (Zambia)",bez:"Bena","bez-TZ":"Bena (Tanzania)",bn:"Bengali","bn-BD":"Bengali (Bangladesh)","bn-IN":"Bengali (India)",dz:"Bhutani",bh:"Bihari",bi:"Bislama",bs:"Bosnian","bs-BA":"Bosnian (Bosnia and Herzegovina)",br:"Breton",bg:"Bulgarian","bg-BG":"Bulgarian (Bulgaria)",my:"Burmese","my-MM":"Burmese (Myanmar [Burma])",be:"Byelorussian",km:"Cambodian","yue-Hant_HK":"Cantonese (Traditional, Hong Kong SAR China)",ca:"Catalan","ca-ES":"Catalan (Spain)",tzm:"Central Morocco Tamazight","tzm-Latn":"Central Morocco Tamazight (Latin)","tzm-Latn_MA":"Central Morocco Tamazight (Latin, Morocco)",chr:"Cherokee","chr-US":"Cherokee (United States)",cgg:"Chiga","cgg-UG":"Chiga (Uganda)",zh:"Chinese","zh-Hans":"Chinese (Simplified Han)","zh-Hans_CN":"Chinese (Simplified Han, China)","zh-Hans_HK":"Chinese (Simplified Han, Hong Kong SAR China)","zh-Hans_MO":"Chinese (Simplified Han, Macau SAR China)","zh-Hans_SG":"Chinese (Simplified Han, Singapore)","zh-Hant":"Chinese (Traditional Han)","zh-Hant_HK":"Chinese (Traditional Han, Hong Kong SAR China)","zh-Hant_MO":"Chinese (Traditional Han, Macau SAR China)","zh-Hant_TW":"Chinese (Traditional Han, Taiwan)",kw:"Cornish","kw-GB":"Cornish (United Kingdom)",co:"Corsican",hr:"Croatian","hr-HR":"Croatian (Croatia)",cs:"Czech","cs-CZ":"Czech (Czech Republic)",da:"Danish","da-DK":"Danish (Denmark)",nl:"Dutch","nl-BE":"Dutch (Belgium)","nl-NL":"Dutch (Netherlands)",ebu:"Embu","ebu-KE":"Embu (Kenya)",en:"English","en-AS":"English (American Samoa)","en-AU":"English (Australia)","en-BE":"English (Belgium)","en-BZ":"English (Belize)","en-BW":"English (Botswana)","en-CA":"English (Canada)","en-GU":"English (Guam)","en-HK":"English (Hong Kong SAR China)","en-IN":"English (India)","en-IE":"English (Ireland)","en-IL":"English (Israel)","en-JM":"English (Jamaica)","en-MY":"English (Malaysia)","en-MT":"English (Malta)","en-MH":"English (Marshall Islands)","en-MU":"English (Mauritius)","en-NA":"English (Namibia)","en-NZ":"English (New Zealand)","en-MP":"English (Northern Mariana Islands)","en-PK":"English (Pakistan)","en-PH":"English (Philippines)","en-SG":"English (Singapore)","en-ZA":"English (South Africa)","en-TT":"English (Trinidad and Tobago)","en-UM":"English (U.S. Minor Outlying Islands)","en-VI":"English (U.S. Virgin Islands)","en-GB":"English (United Kingdom)","en-US":"English (United States)","en-ZW":"English (Zimbabwe)",eo:"Esperanto",et:"Estonian","et-EE":"Estonian (Estonia)",ee:"Ewe","ee-GH":"Ewe (Ghana)","ee-TG":"Ewe (Togo)",fo:"Faeroese",fo:"Faroese","fo-FO":"Faroese (Faroe Islands)",fj:"Fiji",fil:"Filipino","fil-PH":"Filipino (Philippines)",fi:"Finnish","fi-FI":"Finnish (Finland)",fr:"French","fr-BE":"French (Belgium)","fr-BJ":"French (Benin)","fr-BF":"French (Burkina Faso)","fr-BI":"French (Burundi)","fr-CM":"French (Cameroon)","fr-CA":"French (Canada)","fr-CF":"French (Central African Republic)","fr-TD":"French (Chad)","fr-KM":"French (Comoros)","fr-CG":"French (Congo - Brazzaville)","fr-CD":"French (Congo - Kinshasa)","fr-CI":"French (Côte dIvoire)","fr-DJ":"French (Djibouti)","fr-GQ":"French (Equatorial Guinea)","fr-FR":"French (France)","fr-GA":"French (Gabon)","fr-GP":"French (Guadeloupe)","fr-GN":"French (Guinea)","fr-LU":"French (Luxembourg)","fr-MG":"French (Madagascar)","fr-ML":"French (Mali)","fr-MQ":"French (Martinique)","fr-MC":"French (Monaco)","fr-NE":"French (Niger)","fr-RW":"French (Rwanda)","fr-RE":"French (Réunion)","fr-BL":"French (Saint Barthélemy)","fr-MF":"French (Saint Martin)","fr-SN":"French (Senegal)","fr-CH":"French (Switzerland)","fr-TG":"French (Togo)",fy:"Frisian",ff:"Fulah","ff-SN":"Fulah (Senegal)",gl:"Galician","gl-ES":"Galician (Spain)",lg:"Ganda","lg-UG":"Ganda (Uganda)",ka:"Georgian","ka-GE":"Georgian (Georgia)",de:"German","de-AT":"German (Austria)","de-BE":"German (Belgium)","de-DE":"German (Germany)","de-LI":"German (Liechtenstein)","de-LU":"German (Luxembourg)","de-CH":"German (Switzerland)",el:"Greek","el-CY":"Greek (Cyprus)","el-GR":"Greek (Greece)",kl:"Greenlandic",gn:"Guarani",gu:"Gujarati","gu-IN":"Gujarati (India)",guz:"Gusii","guz-KE":"Gusii (Kenya)",ha:"Hausa","ha-Latn":"Hausa (Latin)","ha-Latn_GH":"Hausa (Latin, Ghana)","ha-Latn_NE":"Hausa (Latin, Niger)","ha-Latn_NG":"Hausa (Latin, Nigeria)",haw:"Hawaiian","haw-US":"Hawaiian (United States)",he:"Hebrew","he-IL":"Hebrew (Israel)",hi:"Hindi","hi-IN":"Hindi (India)",hu:"Hungarian","hu-HU":"Hungarian (Hungary)",is:"Icelandic","is-IS":"Icelandic (Iceland)",ig:"Igbo","ig-NG":"Igbo (Nigeria)",id:"Indonesian","id-ID":"Indonesian (Indonesia)",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish","ga-IE":"Irish (Ireland)",it:"Italian","it-IT":"Italian (Italy)","it-CH":"Italian (Switzerland)",ja:"Japanese","ja-JP":"Japanese (Japan)",jw:"Javanese",kea:"Kabuverdianu","kea-CV":"Kabuverdianu (Cape Verde)",kab:"Kabyle","kab-DZ":"Kabyle (Algeria)",kl:"Kalaallisut","kl-GL":"Kalaallisut (Greenland)",kln:"Kalenjin","kln-KE":"Kalenjin (Kenya)",kam:"Kamba","kam-KE":"Kamba (Kenya)",kn:"Kannada","kn-IN":"Kannada (India)",ks:"Kashmiri",kk:"Kazakh","kk-Cyrl":"Kazakh (Cyrillic)","kk-Cyrl_KZ":"Kazakh (Cyrillic, Kazakhstan)",km:"Khmer","km-KH":"Khmer (Cambodia)",ki:"Kikuyu","ki-KE":"Kikuyu (Kenya)",rw:"Kinyarwanda","rw-RW":"Kinyarwanda (Rwanda)",ky:"Kirghiz",rn:"Kirundi",kok:"Konkani","kok-IN":"Konkani (India)",ko:"Korean","ko-KR":"Korean (South Korea)",khq:"Koyra Chiini","khq-ML":"Koyra Chiini (Mali)",ses:"Koyraboro Senni","ses-ML":"Koyraboro Senni (Mali)",ku:"Kurdish",lag:"Langi","lag-TZ":"Langi (Tanzania)",lo:"Laothian",la:"Latin",lv:"Latvian","lv-LV":"Latvian (Latvia)",lv:"Lettish",ln:"Lingala",lt:"Lithuanian","lt-LT":"Lithuanian (Lithuania)",luo:"Luo","luo-KE":"Luo (Kenya)",luy:"Luyia","luy-KE":"Luyia (Kenya)",mk:"Macedonian","mk-MK":"Macedonian (Macedonia)",jmc:"Machame","jmc-TZ":"Machame (Tanzania)",kde:"Makonde","kde-TZ":"Makonde (Tanzania)",mg:"Malagasy","mg-MG":"Malagasy (Madagascar)",ms:"Malay","ms-BN":"Malay (Brunei)","ms-MY":"Malay (Malaysia)",ml:"Malayalam","ml-IN":"Malayalam (India)",mt:"Maltese","mt-MT":"Maltese (Malta)",gv:"Manx","gv-GB":"Manx (United Kingdom)",mi:"Maori",mr:"Marathi","mr-IN":"Marathi (India)",mas:"Masai","mas-KE":"Masai (Kenya)","mas-TZ":"Masai (Tanzania)",mer:"Meru","mer-KE":"Meru (Kenya)",mo:"Moldavian",mn:"Mongolian",mfe:"Morisyen","mfe-MU":"Morisyen (Mauritius)",naq:"Nama","naq-NA":"Nama (Namibia)",na:"Nauru",ne:"Nepali","ne-IN":"Nepali (India)","ne-NP":"Nepali (Nepal)",nd:"North Ndebele","nd-ZW":"North Ndebele (Zimbabwe)",no:"Norwegian",nb:"Norwegian Bokmål","nb-NO":"Norwegian Bokmål (Norway)",nn:"Norwegian Nynorsk","nn-NO":"Norwegian Nynorsk (Norway)",nyn:"Nyankole","nyn-UG":"Nyankole (Uganda)",oc:"Occitan",or:"Oriya","or-IN":"Oriya (India)",om:"Oromo","om-ET":"Oromo (Ethiopia)","om-KE":"Oromo (Kenya)",ps:"Pashto","ps-AF":"Pashto (Afghanistan)",fa:"Persian","fa-AF":"Persian (Afghanistan)","fa-IR":"Persian (Iran)",pl:"Polish","pl-PL":"Polish (Poland)",pt:"Portuguese","pt-BR":"Portuguese (Brazil)","pt-GW":"Portuguese (Guinea-Bissau)","pt-MZ":"Portuguese (Mozambique)","pt-PT":"Portuguese (Portugal)",pa:"Punjabi","pa-Arab":"Punjabi (Arabic)","pa-Arab_PK":"Punjabi (Arabic, Pakistan)","pa-Guru":"Punjabi (Gurmukhi)","pa-Guru_IN":"Punjabi (Gurmukhi, India)",ps:"Pushto",qu:"Quechua",rm:"Rhaeto",ro:"Romanian","ro-MD":"Romanian (Moldova)","ro-RO":"Romanian (Romania)",rm:"Romansh","rm-CH":"Romansh (Switzerland)",rof:"Rombo","rof-TZ":"Rombo (Tanzania)",ru:"Russian","ru-MD":"Russian (Moldova)","ru-RU":"Russian (Russia)","ru-UA":"Russian (Ukraine)",rwk:"Rwa","rwk-TZ":"Rwa (Tanzania)",saq:"Samburu","saq-KE":"Samburu (Kenya)",sm:"Samoan",sg:"Sango","sg-CF":"Sango (Central African Republic)",sg:"Sangro",sa:"Sanskrit",gd:"Scots",seh:"Sena","seh-MZ":"Sena (Mozambique)",sr:"Serbian","sr-Cyrl":"Serbian (Cyrillic)","sr-Cyrl_BA":"Serbian (Cyrillic, Bosnia and Herzegovina)","sr-Cyrl_ME":"Serbian (Cyrillic, Montenegro)","sr-Cyrl_RS":"Serbian (Cyrillic, Serbia)","sr-Latn":"Serbian (Latin)","sr-Latn_BA":"Serbian (Latin, Bosnia and Herzegovina)","sr-Latn_ME":"Serbian (Latin, Montenegro)","sr-Latn_RS":"Serbian (Latin, Serbia)",sh:"Serbo",st:"Sesotho",tn:"Setswana",sn:"Shona","sn-ZW":"Shona (Zimbabwe)",ii:"Sichuan Yi","ii-CN":"Sichuan Yi (China)",sd:"Sindhi",si:"Singhalese",si:"Sinhala","si-LK":"Sinhala (Sri Lanka)",ss:"Siswati",sk:"Slovak","sk-SK":"Slovak (Slovakia)",sl:"Slovenian","sl-SI":"Slovenian (Slovenia)",xog:"Soga","xog-UG":"Soga (Uganda)",so:"Somali","so-DJ":"Somali (Djibouti)","so-ET":"Somali (Ethiopia)","so-KE":"Somali (Kenya)","so-SO":"Somali (Somalia)",es:"Spanish","es-AR":"Spanish (Argentina)","es-BO":"Spanish (Bolivia)","es-CL":"Spanish (Chile)","es-CO":"Spanish (Colombia)","es-CR":"Spanish (Costa Rica)","es-DO":"Spanish (Dominican Republic)","es-EC":"Spanish (Ecuador)","es-SV":"Spanish (El Salvador)","es-GQ":"Spanish (Equatorial Guinea)","es-GT":"Spanish (Guatemala)","es-HN":"Spanish (Honduras)","es-419":"Spanish (Latin America)","es-MX":"Spanish (Mexico)","es-NI":"Spanish (Nicaragua)","es-PA":"Spanish (Panama)","es-PY":"Spanish (Paraguay)","es-PE":"Spanish (Peru)","es-PR":"Spanish (Puerto Rico)","es-ES":"Spanish (Spain)","es-US":"Spanish (United States)","es-UY":"Spanish (Uruguay)","es-VE":"Spanish (Venezuela)",su:"Sudanese",sw:"Swahili","sw-KE":"Swahili (Kenya)","sw-TZ":"Swahili (Tanzania)",sv:"Swedish","sv-FI":"Swedish (Finland)","sv-SE":"Swedish (Sweden)",gsw:"Swiss German","gsw-CH":"Swiss German (Switzerland)",shi:"Tachelhit","shi-Latn":"Tachelhit (Latin)","shi-Latn_MA":"Tachelhit (Latin, Morocco)","shi-Tfng":"Tachelhit (Tifinagh)","shi-Tfng_MA":"Tachelhit (Tifinagh, Morocco)",tl:"Tagalog",dav:"Taita","dav-KE":"Taita (Kenya)",tg:"Tajik",ta:"Tamil","ta-IN":"Tamil (India)","ta-LK":"Tamil (Sri Lanka)",tt:"Tatar",te:"Telugu","te-IN":"Telugu (India)",teo:"Teso","teo-KE":"Teso (Kenya)","teo-UG":"Teso (Uganda)",th:"Thai","th-TH":"Thai (Thailand)",bo:"Tibetan","bo-CN":"Tibetan (China)","bo-IN":"Tibetan (India)",ti:"Tigrinya","ti-ER":"Tigrinya (Eritrea)","ti-ET":"Tigrinya (Ethiopia)",to:"Tonga","to-TO":"Tonga (Tonga)",ts:"Tsonga",tr:"Turkish","tr-TR":"Turkish (Turkey)",tk:"Turkmen",tw:"Twi",ug:"Uigur",uk:"Ukrainian","uk-UA":"Ukrainian (Ukraine)",ur:"Urdu","ur-IN":"Urdu (India)","ur-PK":"Urdu (Pakistan)",uz:"Uzbek","uz-Arab":"Uzbek (Arabic)","uz-Arab_AF":"Uzbek (Arabic, Afghanistan)","uz-Cyrl":"Uzbek (Cyrillic)","uz-Cyrl_UZ":"Uzbek (Cyrillic, Uzbekistan)","uz-Latn":"Uzbek (Latin)","uz-Latn_UZ":"Uzbek (Latin, Uzbekistan)",vi:"Vietnamese","vi-VN":"Vietnamese (Vietnam)",vo:"Volapuk",vun:"Vunjo","vun-TZ":"Vunjo (Tanzania)",cy:"Welch",cy:"Welsh","cy-GB":"Welsh (United Kingdom)",wo:"Wolof",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba","yo-NG":"Yoruba (Nigeria)",za:"Zhuang",zu:"Zulu","zu-ZA":"Zulu (South Africa)"},c={getLanguageDropdownTemplate:function(){return'\n <style>\n /* Language dropdown - positioned at top right inside card */\n .uqc-language-dropdown-container {\n position: absolute;\n top: 16px;\n right: 16px;\n z-index: 1000;\n background-color: rgba(0, 0, 0, 0.4);\n border: 0;\n border-radius: 4px;\n }\n\n .uqc-language-dropdown-container.hidden {\n display: none;\n }\n\n .uqc-language-select {\n background-color: transparent;\n color: #FFFFFF;\n font-family: \'Work Sans\', sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n text-align: center;\n text-align-last: center;\n text-overflow: ellipsis;\n max-width: 20ch;\n border: 0;\n padding: 8px;\n padding-right: 32px;\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n user-select: none;\n cursor: pointer;\n position: relative;\n z-index: 1;\n }\n\n .uqc-language-select:focus {\n outline: none;\n }\n\n .uqc-language-select:focus-visible {\n outline: none;\n }\n\n /* Dropdown arrow */\n .uqc-language-dropdown-container::after {\n content: \'\';\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #FFFFFF;\n pointer-events: none;\n z-index: 0;\n }\n </style>\n\n <div class="uqc-language-dropdown-container hidden" id="uqc-language-dropdown">\n <select class="uqc-language-select" id="uqc-language-select">\n \x3c!-- Options will be populated dynamically --\x3e\n </select>\n </div>\n '},renderLanguageDropdown:function(){const{language_data:n,default_language:e}=this._cardData||{},{showLanguageDropdown:t}=this._config||{},o=this._shadowRoot.querySelector("#uqc-language-dropdown"),a=this._shadowRoot.querySelector("#uqc-language-select");if(!o||!a)return;const i=n&&Object.keys(n).length>0;if(!(t??i))return void o.classList.add("hidden");o.classList.remove("hidden");const s=this._currentLanguage||"",c=this.getAvailableLanguages();a.innerHTML="";const l=e||"en",d=document.createElement("option");d.value="",d.textContent=r[l]||l.toUpperCase(),d.selected=""===s,a.appendChild(d),c.forEach(n=>{const e=document.createElement("option");e.value=n.code,e.textContent=n.label,e.selected=s===n.code,a.appendChild(e)}),console.log("%c[LanguageDropdown] Dropdown rendered with languages:","color: #3b82f6",c),console.log("%c[LanguageDropdown] Current selection:","color: #3b82f6",s||"default")},getAvailableLanguages:function(){const{language_data:n,default_language:e}=this._cardData||{};if(!n)return[];const t=e||"en";return Object.keys(n).filter(n=>n!==t).map(n=>({code:n,label:`${r[n]||n.toUpperCase()}`}))},getLanguageData:function(n){const e=this._originalCardData||this._cardData||{},{language_data:t,default_language:o,...a}=e;return n&&t&&t[n]?{...a,...t[n],language_data:t,default_language:o}:a},attachLanguageDropdownListeners:function(){const n=this._shadowRoot.querySelector("#uqc-language-select");n&&n.addEventListener("change",n=>{const e=n.target.value;this.setLanguage(e,!0)})},setLanguage:function(n,e=!0){const t=n||"";console.log("%c[LanguageDropdown] Language set to:","color: #3b82f6",t||"default"),this._currentLanguage=t;const o=this._shadowRoot.querySelector("#uqc-language-select");o&&(o.value=t);const a=this.getLanguageData(t);this._originalCardData||(this._originalCardData={...this._cardData}),this._cardData={...this._originalCardData,...a},this.render(),e&&this.emitEvent(s.LANGUAGE_CHANGE,{language:t||this._cardData.default_language||"en",cardData:a})},getCurrentLanguage:function(){return this._currentLanguage||""}},l={getLeadFormTemplate:function(){this._config;const n=this._cardData||{},e=n.lead_attribute||{};return`\n <style>\n /* Lead Form Overlay */\n .uqc-lead-overlay {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 2147483003;\n display: none;\n }\n \n .uqc-lead-overlay.show {\n display: block;\n }\n \n /* Lead Form Drawer - Absolute positioned, overlays on card */\n /* Note: Width, left, right are controlled by CardLayout12.js */\n .uqc-lead-drawer {\n display: flex;\n flex-direction: column;\n gap: 0.4rem;\n padding: 24px;\n position: absolute;\n bottom: 0;\n z-index: 2147483004;\n background-color: white;\n transition: transform 0.3s ease-in-out;\n transform: translateY(100%);\n box-sizing: border-box;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n max-height: 85%;\n font-family: 'Work Sans', sans-serif;\n pointer-events: auto;\n }\n \n .uqc-lead-drawer.show {\n width: 100%;\n transform: translateY(0);\n transition: transform 0.3s ease-in-out;\n min-height: 100px;\n }\n \n /* Form Title */\n .uqc-owner-info {\n font-weight: 300;\n font-size: 20px;\n font-family: "Work Sans", sans-serif;\n line-height: 28px;\n color: #16212F;\n margin-bottom: 24px;\n display: flex;\n flex-wrap: wrap;\n white-space: nowrap;\n }\n \n .uqc-owner-name {\n font-style: italic;\n font-weight: 600;\n }\n \n /* Form Container */\n .uqc-form-container {\n max-height: 150px;\n overflow: scroll;\n margin-bottom: 16px;\n font-family: "Work Sans", sans-serif;\n padding-right: 8px;\n row-gap: 16px;\n display: grid;\n }\n \n /* Form Field Container */\n .uqc-lead-field-container {\n margin-bottom: 0;\n }\n \n .uqc-lead-field-container.uqc-hidden {\n display: none !important;\n }\n \n /* Name Grid (First + Last) */\n .uqc-name-grid {\n display: flex;\n flex-direction: row;\n }\n \n #uqc-lead-first-name {\n border-radius: 5px 0px 0px 5px;\n border-right-width: 0.5px !important;\n width: 50%;\n }\n \n #uqc-lead-last-name {\n border-radius: 0px 5px 5px 0px;\n border-left-width: 0.5px !important;\n width: 50%;\n }\n \n /* Form Input (Matching server exactly) */\n .uqc-lead-input {\n background: #FAFAFA;\n border: 1px solid #E4E5E7;\n border-radius: 4px;\n padding: 12px;\n gap: 8px;\n height: 44px;\n font-size: 16px;\n width: -webkit-fill-available;\n font-family: "Work Sans", sans-serif;\n box-sizing: border-box;\n }\n \n .uqc-lead-input:focus {\n outline: none !important;\n border: 1px solid #2595FF !important;\n }\n \n .uqc-lead-input.error {\n border-color: #FF445E;\n }\n \n /* Textarea */\n .uqc-lead-textarea {\n height: 80px;\n resize: none;\n font-size: 16px;\n }\n \n /* Error Message (Matching server exactly) */\n .uqc-lead-error-message {\n display: none;\n padding: 0;\n padding-top: 8px;\n margin: 0;\n color: #FF445E;\n font-size: 13px;\n }\n \n .uqc-lead-error-message.show {\n display: block;\n }\n \n /* Marketing Consent (Matching server exactly) */\n .uqc-disclaimer {\n width: 100%;\n font-weight: 400;\n font-family: "Open Sans", sans-serif;\n font-size: 12px;\n color: #979797;\n margin-top: 16px;\n display: flex;\n align-items: start;\n }\n \n .uqc-lead-consent-checkbox {\n margin-right: 10px;\n cursor: pointer;\n }\n \n .uqc-tos-text {\n color: #979797;\n font-size: 12px;\n font-style: normal;\n font-family: "Open Sans", sans-serif;\n font-weight: 400;\n line-height: normal;\n text-align: start;\n letter-spacing: -0.33px;\n }\n \n .uqc-tos-anchor-links {\n color: #979797;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n letter-spacing: -0.33px;\n text-decoration-line: underline;\n }\n \n /* Submit Button Container */\n #uqc-submit-container {\n margin-top: 16px;\n }\n \n /* Submit Button (Matching server exactly) */\n .uqc-lead-submit-btn {\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 4px;\n height: 48px;\n padding: 0px;\n width: -webkit-fill-available;\n border: 0;\n cursor: pointer;\n background: #2595FF;\n min-height: 40px;\n font-family: 'Work Sans', sans-serif;\n font-size: 15px;\n font-weight: lighter;\n }\n \n .uqc-lead-submit-btn:hover {\n opacity: 0.95;\n }\n \n .uqc-lead-submit-btn:disabled {\n cursor: not-allowed;\n opacity: 0.7;\n }\n \n .uqc-lead-submit-btn .submitLead {\n color: #ffffff !important;\n }\n \n .uqc-connect-btn-cta {\n padding-left: 12px;\n color: #ffffff;\n }\n \n #uqc-lead-exchange-contact-icon {\n color: #ffffff;\n }\n \n /* Loading Spinner (Matching server exactly) */\n .uqc-lead-spinner {\n border: 3px solid #f3f3f3;\n border-radius: 50%;\n border-top: 3px solid #3498db;\n width: 14px;\n height: 14px;\n -webkit-animation: spin 2s linear infinite;\n animation: spin 2s linear infinite;\n display: none;\n }\n \n .uqc-lead-spinner.show {\n display: inline-block;\n }\n \n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n \n /* Add to Contacts Button (below Connect) */\n .uqc-lead-add-contact-btn {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #2595FF;\n background: none;\n border: none;\n cursor: pointer;\n width: 100%;\n margin-top: 8px;\n font-family: 'Work Sans', sans-serif;\n padding: 8px;\n }\n \n .uqc-lead-add-contact-btn:hover {\n opacity: 0.8;\n }\n \n .uqc-lead-add-contact-text {\n color: #2595FF;\n font-size: 15px;\n padding-left: 8px;\n text-decoration: none;\n }\n \n /* Preview mode - disable Connect button and Add to Contacts button */\n .uqc-lead-submit-btn.uqc-preview-mode,\n .uqc-lead-add-contact-btn.uqc-preview-mode {\n pointer-events: none;\n opacity: 0.6;\n cursor: not-allowed;\n }\n \n @-webkit-keyframes spin {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n </style>\n\n \x3c!-- Lead Form Overlay --\x3e\n <div id="uqc-lead-overlay" class="uqc-lead-overlay"></div>\n\n \x3c!-- Lead Form Drawer --\x3e\n <div id="uqc-lead-drawer" class="uqc-lead-drawer">\n \x3c!-- Title --\x3e\n <div class="uqc-owner-info">\n Exchange contacts with&nbsp;<br />\n <span class="uqc-owner-name">${n.consent_placeholder||`${n.first_name||""} ${n.last_name||""}`.trim()||n.first_name||"card owner"}</span>\n </div>\n \n \x3c!-- Form --\x3e\n <form id="uqc-lead-form" onsubmit="return false">\n <div class="uqc-form-container">\n \x3c!-- Name Fields (Side by side) --\x3e\n <div class="uqc-lead-field-container">\n <div class="uqc-name-grid">\n <input \n type="text" \n id="uqc-lead-first-name" \n class="uqc-lead-input" \n placeholder="First name" \n required\n maxlength="128"\n />\n <input \n type="text" \n id="uqc-lead-last-name" \n class="uqc-lead-input" \n placeholder="Last name" \n required\n maxlength="128"\n />\n </div>\n <p class="uqc-lead-error-message" id="uqc-lead-first-name-error">Please enter full name</p>\n </div>\n\n \x3c!-- Email (Required) --\x3e\n <div class="uqc-lead-field-container">\n <input \n type="email" \n id="uqc-lead-email" \n class="uqc-lead-input" \n placeholder="Email" \n required\n maxlength="254"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-email-error">Please enter a valid email address</p>\n </div>\n\n \x3c!-- Company (Conditional - hidden when lead_attribute.company is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.company||"False"===e.company?"uqc-hidden":""}" id="uqc-lead-company-container">\n <input \n type="text" \n id="uqc-lead-company" \n class="uqc-lead-input" \n placeholder="Company" \n maxlength="128"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-company-error"></p>\n </div>\n\n \x3c!-- Phone (Conditional - hidden when lead_attribute.phone is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.phone||"False"===e.phone?"uqc-hidden":""}" id="uqc-lead-phone-container">\n <input \n type="tel" \n id="uqc-lead-phone" \n class="uqc-lead-input" \n placeholder="Phone number" \n maxlength="30"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-phone-error">Please enter a valid phone number</p>\n </div>\n\n \x3c!-- Designation (Conditional - hidden when lead_attribute.designation is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.designation||"False"===e.designation?"uqc-hidden":""}" id="uqc-lead-designation-container">\n <input \n type="text" \n id="uqc-lead-designation" \n class="uqc-lead-input" \n placeholder="Designation" \n maxlength="128"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-designation-error"></p>\n </div>\n\n \x3c!-- Notes (Conditional - hidden when lead_attribute.notes is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.notes||"False"===e.notes?"uqc-hidden":""}" id="uqc-lead-notes-container">\n <textarea \n id="uqc-lead-notes" \n class="uqc-lead-input uqc-lead-textarea" \n placeholder="Message"\n maxlength="500"\n ></textarea>\n </div>\n </div>\n \n \x3c!-- Marketing Consent --\x3e\n <div class="uqc-disclaimer">\n <input \n type="checkbox" \n id="uqc-lead-marketing-consent" \n class="uqc-lead-consent-checkbox"\n checked\n />\n <div class="uqc-tos-text" id="uqc-lead-consent-text"></div>\n </div>\n\n \x3c!-- Submit Button --\x3e\n <div id="uqc-submit-container">\n <button type="submit" class="uqc-lead-submit-btn" id="uqc-lead-submit-btn">\n <i id="uqc-lead-exchange-contact-icon" class="fas fa-exchange-alt"></i>\n <i id="uqc-lead-spinner" class="uqc-lead-spinner"></i>\n <span class="submitLead uqc-connect-btn-cta">Connect</span>\n </button>\n </div>\n \n \x3c!-- Add to Contacts Button (below Connect) --\x3e\n <button type="button" class="uqc-lead-add-contact-btn" id="uqc-lead-add-contact-btn">\n <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <g clip-path="url(#clip0_lead_add)">\n <path d="M10.6667 14V12.6667C10.6667 11.9594 10.3857 11.2811 9.88564 10.781C9.38554 10.281 8.70726 10 8.00002 10H3.33335C2.62611 10 1.94783 10.281 1.44774 10.781C0.947639 11.2811 0.666687 11.9594 0.666687 12.6667V14M13.3334 5.33333V9.33333M15.3334 7.33333H11.3334M8.33335 4.66667C8.33335 6.13943 7.13945 7.33333 5.66669 7.33333C4.19393 7.33333 3.00002 6.13943 3.00002 4.66667C3.00002 3.19391 4.19393 2 5.66669 2C7.13945 2 8.33335 3.19391 8.33335 4.66667Z" stroke="#2595FF" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>\n </g>\n <defs>\n <clipPath id="clip0_lead_add">\n <rect width="16" height="16" fill="white"/>\n </clipPath>\n </defs>\n </svg>\n <span class="uqc-lead-add-contact-text">Add to Contacts</span>\n </button>\n </form>\n </div>\n `},generateTOSString:function(){const n=this._cardData||{};let e=`I agree to receive communications from ${n.consent_placeholder||`${n.first_name||""} ${n.last_name||""}`.trim()||n.first_name||"card owner"}.`;const t=n.lead_user_agreement_attribute?.user_agreement_urls||[];console.log("[LeadForm] generateTOSString - cardData.lead_user_agreement_attribute:",n.lead_user_agreement_attribute),console.log("[LeadForm] generateTOSString - links:",t);const o=[];t.length>0&&t[0].label&&t[0].url&&o.push(`<a class="uqc-tos-anchor-links" href="${t[0].url}" target="_blank">${t[0].label}</a>`),t.length>1&&t[1].label&&t[1].url&&o.push(`<a class="uqc-tos-anchor-links" href="${t[1].url}" target="_blank">${t[1].label}</a>`),t.length>2&&t[2].label&&t[2].url&&o.push(`<a class="uqc-tos-anchor-links" href="${t[2].url}" target="_blank">${t[2].label}</a>`),o.length>0&&(e+=" "+o.join(", ")+".");const a=this._shadowRoot.querySelector("#uqc-lead-consent-text");a&&(a.innerHTML=e)},openLeadForm:function(){const n=this._shadowRoot.querySelector("#uqc-lead-overlay"),e=this._shadowRoot.querySelector("#uqc-lead-drawer");n&&e&&(this.generateTOSString(),n.classList.add("show"),setTimeout(()=>{e.classList.add("show")},10),console.log("[LeadForm] Form opened"),this.emitEvent(s.LEAD_FORM_OPEN))},closeLeadForm:function(){const n=this._shadowRoot.querySelector("#uqc-lead-overlay"),e=this._shadowRoot.querySelector("#uqc-lead-drawer");if(n&&e){e.classList.remove("show"),setTimeout(()=>{n.classList.remove("show")},300);const t=this._shadowRoot.querySelector("#uqc-lead-form");t&&(t.reset(),this.clearFormErrors()),console.log("[LeadForm] Form closed"),this.emitEvent(s.LEAD_FORM_CLOSE)}},validateField:function(n,e){const t=e.trim();switch(n){case"uqc-lead-first-name":return t?t.length>128?{valid:!1,error:"First name too long"}:{valid:!0}:{valid:!1,error:"First name is required"};case"uqc-lead-last-name":return t?t.length>128?{valid:!1,error:"Last name too long"}:{valid:!0}:{valid:!1,error:"Last name is required"};case"uqc-lead-email":return t?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?t.length>254?{valid:!1,error:"Email too long"}:{valid:!0}:{valid:!1,error:"Invalid email format"}:{valid:!1,error:"Email is required"};case"uqc-lead-phone":return t&&t.length>30?{valid:!1,error:"Phone number too long"}:{valid:!0};case"uqc-lead-company":return t.length>128?{valid:!1,error:"Company name too long"}:{valid:!0};case"uqc-lead-designation":return t.length>128?{valid:!1,error:"Designation too long"}:{valid:!0};default:return{valid:!0}}},showFieldError:function(n,e){const t=this._shadowRoot.querySelector(`#${n}`),o=this._shadowRoot.querySelector(`#${n}-error`);t&&t.classList.add("error"),o&&(o.textContent=e,o.classList.add("show"))},clearFieldError:function(n){const e=this._shadowRoot.querySelector(`#${n}`),t=this._shadowRoot.querySelector(`#${n}-error`);e&&e.classList.remove("error"),t&&t.classList.remove("show")},clearFormErrors:function(){const n=this._shadowRoot.querySelectorAll(".uqc-lead-error-message"),e=this._shadowRoot.querySelectorAll(".uqc-lead-input");n.forEach(n=>n.classList.remove("show")),e.forEach(n=>n.classList.remove("error"))},updateLeadFormFields:function(){const n=this._cardData||{},e=this._config||{},t=n.lead_attribute||{};[{field:"phone",containerId:"uqc-lead-phone-container"},{field:"company",containerId:"uqc-lead-company-container"},{field:"designation",containerId:"uqc-lead-designation-container"},{field:"notes",containerId:"uqc-lead-notes-container"}].forEach(({field:n,containerId:e})=>{const o=this._shadowRoot?.querySelector(`#${e}`);if(o){const e=(n=>!1===t[n]||"False"===t[n])(n);e?o.classList.add("uqc-hidden"):o.classList.remove("uqc-hidden")}});const o="dashboard"===e.platform||!0===e.previewMode,a=this._shadowRoot?.querySelector("#uqc-lead-submit-btn"),i=this._shadowRoot?.querySelector("#uqc-lead-add-contact-btn");o?(a&&(a.classList.add("uqc-preview-mode"),a.disabled=!0),i&&(i.classList.add("uqc-preview-mode"),i.disabled=!0),console.log("[LeadForm] Preview mode: Connect and Add to Contacts buttons disabled")):(a&&(a.classList.remove("uqc-preview-mode"),a.disabled=!1),i&&(i.classList.remove("uqc-preview-mode"),i.disabled=!1))},validateForm:function(){const n=this._shadowRoot.querySelector("#uqc-lead-form");if(!n)return{valid:!1,errors:["Form not found"]};const e=(this._cardData||{}).lead_attribute||{},t={first_name:n.querySelector("#uqc-lead-first-name")?.value||"",last_name:n.querySelector("#uqc-lead-last-name")?.value||"",email:n.querySelector("#uqc-lead-email")?.value||"",marketing_consent:n.querySelector("#uqc-lead-marketing-consent")?.checked||!1},o=n=>!1!==e[n]&&"False"!==e[n];if(o("phone")){const e=n.querySelector("#uqc-lead-phone")?.value||"";e.trim()&&(t.phone_number=e)}if(o("company")){const e=n.querySelector("#uqc-lead-company")?.value||"";e.trim()&&(t.company_name=e)}if(o("designation")){const e=n.querySelector("#uqc-lead-designation")?.value||"";e.trim()&&(t.designation=e)}if(o("notes")){const e=n.querySelector("#uqc-lead-notes")?.value||"";e.trim()&&(t.notes=e)}const a=[];let i=!0;const s=this.validateField("uqc-lead-first-name",t.first_name);s.valid||(this.showFieldError("uqc-lead-first-name",s.error),a.push(s.error),i=!1);const r=this.validateField("uqc-lead-last-name",t.last_name);r.valid||(this.showFieldError("uqc-lead-last-name",r.error),a.push(r.error),i=!1);const c=this.validateField("uqc-lead-email",t.email);if(c.valid||(this.showFieldError("uqc-lead-email",c.error),a.push(c.error),i=!1),t.phone_number){const n=this.validateField("uqc-lead-phone",t.phone_number);n.valid||(this.showFieldError("uqc-lead-phone",n.error),a.push(n.error),i=!1)}return{valid:i,data:t,errors:a}},setFormLoading:function(n){const e=this._shadowRoot.querySelector("#uqc-lead-submit-btn"),t=this._shadowRoot.querySelector("#uqc-lead-icon"),o=this._shadowRoot.querySelector("#uqc-lead-submit-text"),a=this._shadowRoot.querySelector("#uqc-lead-spinner");n?(e&&(e.disabled=!0),t&&(t.style.display="none"),o&&(o.style.display="none"),a&&a.classList.add("show")):(e&&(e.disabled=!1),t&&(t.style.display="inline"),o&&(o.style.display="inline"),a&&a.classList.remove("show"))},attachLeadFormListeners:function(){const n=this._shadowRoot.querySelector("#uqc-lead-close-btn");n&&n.addEventListener("click",()=>{this.closeLeadForm()});const e=this._shadowRoot.querySelector("#uqc-lead-overlay");e&&e.addEventListener("click",()=>{this.closeLeadForm()}),["uqc-lead-first-name","uqc-lead-last-name","uqc-lead-email","uqc-lead-phone"].forEach(n=>{const e=this._shadowRoot.querySelector(`#${n}`);e&&e.addEventListener("input",e=>{this.validateField(n,e.target.value).valid&&this.clearFieldError(n)})});const t=this._shadowRoot.querySelector("#uqc-lead-form");t&&t.addEventListener("submit",n=>{n.preventDefault();const e="dashboard"===this._config?.platform||!0===this._config?.previewMode;console.log("[LeadForm] Form submitted, previewMode:",e),this.clearFormErrors();const t=this.validateForm();t.valid?(console.log("[LeadForm] Validation passed, emitting event"),this.setFormLoading(!0),this.emitEvent(s.LEAD_FORM_SUBMIT,t.data)):console.log("[LeadForm] Validation failed:",t.errors)});const o=this._shadowRoot.querySelector("#uqc-lead-add-contact-btn");o&&o.addEventListener("click",n=>{if("dashboard"===this._config?.platform||!0===this._config?.previewMode)return console.log("[LeadForm] Add to Contacts click blocked (preview mode)"),n.preventDefault(),void n.stopPropagation();const e=this._cardData?.autodownload_url;console.log("[LeadForm] Add to Contacts clicked:",e),this.emitEvent(s.ADD_TO_CONTACT_CLICK,{url:e,source:"lead_form"}),e&&(this.closeLeadForm(),window.location.href=e,this.showSuccessDrawer&&setTimeout(()=>{this.showSuccessDrawer({type:"add-to-contact"})},1500))}),console.log("[LeadForm] Event listeners attached")},showLeadFormSuccess:function(){this.setFormLoading(!1),this.closeLeadForm()},showLeadFormError:function(n){this.setFormLoading(!1),console.error("[LeadForm] ❌ Submission failed:",n||"Failed to submit form. Please try again.")}},d={getStickyButtonFooterTemplate:function(){const n=this._config||{},e=this._cardData||{},t=(e.lead_collection,n.showConnectButtons??!1),o=n.hideFooter??!1,a=e.branding_footer??!1,i=e.pwa_preview??!1,s=e.autodownload_url||"#",r=e.slug||"slug",c=e.static_assets_url||"";return`\n <style>\n /* Sticky Button Container - Fixed at bottom with primary color background */\n /* Background color is applied dynamically via updateStickyButtons() */\n .uqc-fixed-btn-container {\n position: absolute;\n display: ${i?"none":"flex"};\n flex-direction: column;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n padding: 12px 16px 8px 16px; /* top right bottom left - button at very bottom */\n box-sizing: border-box;\n align-items: center;\n z-index: 1000;\n pointer-events: none;\n }\n \n .uqc-fixed-btn-container > * {\n pointer-events: auto;\n }\n\n .uqc-btn, .uqc-btn-exchange {\n background-color: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: var(--button-size, 18px);\n font-weight: var(--button-weight, 400);\n font-family: var(--font-family, 'Inter'), sans-serif;\n }\n\n .uqc-btn:hover, .uqc-btn-exchange:hover {\n opacity: 0.9;\n }\n \n /* Preview mode - disable buttons visually */\n .uqc-btn.uqc-preview-mode, \n .uqc-btn-exchange.uqc-preview-mode,\n .uqc-btn-connect.uqc-preview-mode {\n pointer-events: none;\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .uqc-btn-connect-container {\n display: ${t?"flex":"none"};\n flex-direction: row;\n gap: 8px;\n width: 90%;\n }\n\n .uqc-btn-connect {\n flex: 1;\n width: auto;\n min-width: 0;\n padding: 12px 16px;\n }\n\n /* Footer - Created with Uniqode */\n .uqc-footer-with-exchange {\n display: ${o||a?"none":"flex"};\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n }\n\n .uqc-created-with-text {\n font-family: 'Inter', sans-serif;\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n color: #6B7280;\n margin: 0;\n white-space: nowrap;\n }\n \n .uqc-uniqode-logo {\n height: 16px;\n width: auto;\n }\n\n .uqc-hidden {\n display: none !important;\n }\n </style>\n\n \x3c!-- Sticky Button Container --\x3e\n \x3c!-- All buttons rendered initially, visibility controlled by updateStickyButtons() --\x3e\n <div class="uqc-fixed-btn-container">\n ${this.getAddToContactHTML(s)}\n ${this.getExchangeButtonsHTML(t,r)}\n ${this.getFooterHTML(o||a,r,c)}\n </div>\n `},getAddToContactHTML:function(n){return`\n <a \n class="uqc-btn" \n id="uqc-btn-add-to-contact"\n href="${n}"\n data-add-to-contact\n style="text-decoration: none;"\n >\n <i class="fas fa-user-plus" style="font-size: 20px;"></i>\n Add to Contacts\n </a>\n `},getExchangeButtonsHTML:function(n,e){return`\n <button \n class="uqc-btn-exchange" \n id="uqc-btn-exchange"\n data-exchange-contacts\n style="display: ${n?"none":"flex"};"\n >\n <i class="fas fa-exchange-alt" style="font-size: 20px;"></i>\n Exchange Contacts\n </button>\n \n <div class="uqc-btn-connect-container" id="uqc-btn-connect-container" style="display: ${n?"flex":"none"};">\n <button \n class="uqc-btn uqc-btn-connect" \n data-connect\n >\n <i class="fas fa-link" style="font-size: 20px;"></i>\n Connect\n </button>\n <button \n class="uqc-btn uqc-btn-connect" \n data-create-card\n data-card-slug="${e}"\n >\n <i class="fas fa-plus-circle" style="font-size: 20px;"></i>\n Create Now\n </button>\n </div>\n `},getFooterHTML:function(n,e,t){return""},getButtonTextColor:function(n){const e=n.replace("#","");return(.299*parseInt(e.substr(0,2),16)+.587*parseInt(e.substr(2,2),16)+.114*parseInt(e.substr(4,2),16))/255>.5?"#000000":"#FFFFFF"},updateStickyButtons:function(){const n=this._cardData||{},e=this._config||{},t=n.lead_collection??!1,o=e.showConnectButtons??!1,a=this._shadowRoot.querySelector("#uqc-btn-add-to-contact"),i=this._shadowRoot.querySelector("#uqc-btn-exchange"),s=this._shadowRoot.querySelector("#uqc-btn-connect-container"),r=this._shadowRoot.querySelector(".uqc-fixed-btn-container")||this._shadowRoot.querySelector(".uqc-button-container");if(r){const e=n.customizations?.background_color;e&&(r.style.backgroundColor=e)}const c="dashboard"===e.platform||!0===e.previewMode;t?(a&&(a.style.display="none"),o?(i&&(i.style.display="none"),s&&(s.style.display="flex")):(i&&(i.style.display="flex"),s&&(s.style.display="none"))):(a&&(a.style.display="flex"),i&&(i.style.display="none"),s&&(s.style.display="none"));const l=s?.querySelector("[data-connect]"),d=s?.querySelector("[data-create-card]");c?(a&&a.classList.add("uqc-preview-mode"),i&&i.classList.add("uqc-preview-mode"),l&&l.classList.add("uqc-preview-mode"),d&&d.classList.add("uqc-preview-mode")):(a&&a.classList.remove("uqc-preview-mode"),i&&i.classList.remove("uqc-preview-mode"),l&&l.classList.remove("uqc-preview-mode"),d&&d.classList.remove("uqc-preview-mode"))},attachStickyButtonFooterListeners:function(){const n=this._config||{},e=n.layoutConfig?.footerClicksDisabled||!1,t=this._shadowRoot.querySelector("[data-add-to-contact]");t&&t.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Add to Contact click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();const o=this._cardData?.autodownload_url;console.log("[StickyButton] Add to Contact clicked:",o),this.emitEvent(s.ADD_TO_CONTACT_CLICK,{url:o}),this.showSuccessDrawer&&setTimeout(()=>{this.showSuccessDrawer({type:"add-to-contact"})},1500)});const o=this._shadowRoot.querySelector("[data-exchange-contacts]");o&&o.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Exchange Contacts click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();console.log("[StickyButton] Exchange Contacts clicked"),this.openLeadForm&&this.openLeadForm(),this.emitEvent(s.EXCHANGE_CONTACTS_CLICK)});const a=this._shadowRoot.querySelector("[data-connect]");a&&a.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Connect click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();console.log("[StickyButton] Connect clicked"),this.emitEvent(s.CONNECT_CLICK)});const i=this._shadowRoot.querySelector("[data-create-card]");i&&i.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Create Now click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();const o=n.target.getAttribute("data-card-slug")||this._cardData?.slug||"slug";console.log("[StickyButton] Create Now clicked:",o),this.emitEvent(s.CREATE_NOW_CLICK,{slug:o})});const r=this._shadowRoot.querySelector("[data-footer-cta]");r&&r.addEventListener("click",n=>{n.preventDefault();const e=n.target.getAttribute("data-card-slug")||this._cardData?.slug||"slug";console.log("[StickyButton] Footer CTA clicked:",e),this.emitEvent(s.FOOTER_CTA_CLICK,{slug:e})});const c=this._shadowRoot.querySelector("[data-footer-logo]");c&&c.addEventListener("click",()=>{console.log("[StickyButton] Footer logo clicked"),this.emitEvent(s.FOOTER_LOGO_CLICK)}),console.log("[StickyButton] Event listeners attached")},showConnectButtons:function(){this._config.showConnectButtons=!0,this._config.hideFooter=!0;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="none"),e&&(e.style.display="flex"),t&&(t.style.display="none"),console.log("[StickyButton] State changed: showing Connect + Create Now buttons")},resetToExchangeButton:function(){this._config.showConnectButtons=!1,this._config.hideFooter=!1;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="flex"),e&&(e.style.display="none"),t&&(t.style.display="flex"),console.log("[StickyButton] State reset: showing Exchange Contacts button")}},u={getAnimationFrameTemplate:function(){return'\n <style>\n /* Animation Container - Full viewport overlay */\n .uqc-animation-container {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100vh;\n display: none;\n justify-content: center;\n align-items: center;\n background: white;\n z-index: 2147483005;\n overflow: hidden;\n }\n \n .uqc-animation-container.show {\n display: flex !important;\n }\n \n /* Cards Wrapper - Contains both cards */\n .uqc-animation-cards-wrapper {\n position: relative;\n width: 100%;\n max-width: 500px;\n height: 100vh;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n }\n \n /* Lead Card (slides right) - Shows lead\'s data */\n .uqc-lead-card-slide {\n width: 100%;\n max-width: 500px;\n height: 100vh;\n position: absolute;\n top: 0;\n animation: 3s uqc-slide-right;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n border-radius: 16px;\n box-shadow: 8px 4px 48px 0px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n z-index: 2;\n }\n \n @keyframes uqc-slide-right {\n 0% {\n top: 0px;\n transform: rotate(-5deg);\n }\n 25% {\n top: 80px;\n transform: translateX(-50%) rotate(-5deg);\n }\n 80% {\n transform: translateX(50%) rotate(5deg);\n }\n 100% {\n transform: translateX(100%) rotate(5deg);\n top: 80px;\n }\n }\n \n /* Owner Card (slides left) - Shows actual card owner\'s data */\n .uqc-owner-card-slide {\n width: 100%;\n max-width: 500px;\n height: 100vh;\n position: absolute;\n top: 0;\n animation: 3s uqc-slide-left;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n border-radius: 16px;\n box-shadow: 8px 4px 48px 0px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n z-index: 1;\n }\n \n @keyframes uqc-slide-left {\n 0% {\n top: 0px;\n transform: rotate(5deg);\n }\n 25% {\n top: 80px;\n transform: translateX(50%) rotate(5deg);\n }\n 80% {\n transform: translateX(-50%) rotate(-5deg);\n }\n 100% {\n transform: translateX(-100%) rotate(-5deg);\n top: 80px;\n }\n }\n \n /* Card Content Wrapper - Full height */\n .uqc-animation-card-content {\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n \n /* ========================================== */\n /* Lead Card Styles (simplified card layout) */\n /* ========================================== */\n .uqc-lead-card-inner {\n background: #ffffff;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n \n .uqc-lead-header {\n padding: 60px 24px 90px;\n background-color: var(--uqc-anim-primary-color, #3370f9);\n text-align: center;\n }\n \n .uqc-lead-body {\n flex: 1;\n background: var(--uqc-anim-bg-color, #ffffff);\n margin-top: -50px;\n border-radius: 16px 16px 0 0;\n position: relative;\n }\n \n .uqc-lead-profile {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: -40px;\n margin-bottom: 16px;\n }\n \n .uqc-lead-avatar {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background-color: rgba(51, 112, 249, 0.15);\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 32px;\n font-weight: 600;\n color: var(--uqc-anim-primary-color, #3370f9);\n border: 4px solid white;\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .uqc-lead-avatar-img {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n object-fit: cover;\n border: 4px solid white;\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .uqc-lead-info {\n padding: 0 24px 24px;\n text-align: center;\n }\n \n .uqc-lead-name {\n font-family: \'Open Sans\', sans-serif;\n font-weight: 600;\n font-size: 24px;\n color: #000000;\n margin-bottom: 8px;\n }\n \n .uqc-lead-designation {\n font-family: \'Open Sans\', sans-serif;\n font-weight: 400;\n font-size: 16px;\n color: #333333;\n margin-bottom: 4px;\n }\n \n .uqc-lead-company {\n font-family: \'Open Sans\', sans-serif;\n font-weight: 400;\n font-size: 16px;\n color: #666666;\n margin-bottom: 16px;\n }\n \n .uqc-lead-contacts {\n padding: 0 24px;\n }\n \n .uqc-lead-contact-item {\n display: flex;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid #f0f0f0;\n }\n \n .uqc-lead-contact-item:last-child {\n border-bottom: none;\n }\n \n .uqc-lead-contact-icon {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background-color: rgba(51, 112, 249, 0.1);\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 12px;\n }\n \n .uqc-lead-contact-icon svg {\n width: 20px;\n height: 20px;\n }\n \n .uqc-lead-contact-text {\n font-family: \'Open Sans\', sans-serif;\n font-size: 14px;\n color: #333333;\n }\n \n .uqc-lead-contact-label {\n font-family: \'Open Sans\', sans-serif;\n font-size: 12px;\n color: #999999;\n margin-top: 2px;\n }\n \n /* Footer Button */\n .uqc-lead-footer {\n padding: 16px 24px;\n background-color: var(--uqc-anim-primary-color, #3370f9);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n \n .uqc-lead-footer-btn {\n display: flex;\n align-items: center;\n color: white;\n font-family: \'Open Sans\', sans-serif;\n font-size: 16px;\n font-weight: 500;\n }\n \n .uqc-lead-footer-btn svg {\n margin-right: 8px;\n }\n </style>\n\n \x3c!-- Animation Container --\x3e\n <div id="uqc-animation-container" class="uqc-animation-container">\n <div class="uqc-animation-cards-wrapper">\n \x3c!-- Owner Card (slides left) - Shows actual card owner\'s data --\x3e\n <div class="uqc-owner-card-slide" id="uqc-owner-card-slide">\n <div class="uqc-animation-card-content" id="uqc-owner-card-content">\n \x3c!-- Owner card content will be populated dynamically --\x3e\n </div>\n </div>\n \n \x3c!-- Lead Card (slides right) - Shows lead\'s data --\x3e\n <div class="uqc-lead-card-slide" id="uqc-lead-card-slide">\n <div class="uqc-animation-card-content" id="uqc-lead-card-content">\n \x3c!-- Lead card content will be populated dynamically --\x3e\n </div>\n </div>\n </div>\n </div>\n '},showCardExchangeAnimation:function(n,e=3e3){if(!n)return void console.error("[Animation] No lead data provided");const t=this._shadowRoot.querySelector("#uqc-animation-container"),o=this._shadowRoot.querySelector("#uqc-lead-card-content"),a=this._shadowRoot.querySelector("#uqc-owner-card-content");if(!t||!o||!a)return void console.error("[Animation] Animation elements not found");const i=this._cardData||{},r=i.customizations||{},c=r.background_color||"#3370f9",l=r.button_color||c,d=r.background?.value||"#ffffff";if(t.style.setProperty("--uqc-anim-primary-color",c),t.style.setProperty("--uqc-anim-button-color",l),t.style.setProperty("--uqc-anim-bg-color",d),"function"==typeof this.getCardPreviewHTML){console.log("[Animation] Using layout-specific getCardPreviewHTML()"),a.innerHTML=this.getCardPreviewHTML(i,{isAnimationMode:!0,hideEmptySections:!0});const e=this.transformLeadToCardData(n);o.innerHTML=this.getCardPreviewHTML(e,{isAnimationMode:!0,hideEmptySections:!0})}else{console.log("[Animation] Using generic fallback rendering");const e=this.generateOwnerCardHTML(i,c,d);a.innerHTML=e;const t=this.generateLeadCardHTML(n,c,d);o.innerHTML=t}const u=this._shadowRoot.querySelector("#uqc-owner-card-slide"),h=this._shadowRoot.querySelector("#uqc-lead-card-slide");u&&h&&(u.style.animation="none",h.style.animation="none",u.offsetHeight,h.offsetHeight,u.style.animation="",h.style.animation=""),t.classList.add("show"),console.log("[Animation] Card exchange animation started with both cards"),console.log("[Animation] Owner data:",{name:`${i.first_name} ${i.last_name}`,company:i.company}),console.log("[Animation] Lead data:",n),this.emitEvent(s.ANIMATION_STARTED,{leadData:n,ownerData:i}),setTimeout(()=>{this.hideCardExchangeAnimation()},e)},transformLeadToCardData:function(n){return{first_name:n.first_name||"",last_name:n.last_name||"",designation:n.designation||"",company:n.company_name||n.company||"",department:"",summary:"",pronouns_v2:"",email_v2:n.email?[{value:n.email,label:"Email"}]:[],phone_v2:n.phone_number||n.phone?[{value:n.phone_number||n.phone,label:"Phone"}]:[],user_image_url:"",logo_url:"",customizations:this._cardData?.customizations||{},social_links:{}}},hideCardExchangeAnimation:function(){const n=this._shadowRoot.querySelector("#uqc-animation-container");n&&(n.classList.remove("show"),console.log("[Animation] Card exchange animation ended"),this.emitEvent(s.ANIMATION_ENDED))},generateOwnerCardHTML:function(n,e,t){const o=n.first_name||"",a=n.last_name||"",i=`${o} ${a}`.trim(),s=n.designation||"",r=n.company||"",c=n.email_v2?.[0]?.value||n.email||"",l=n.phone_v2?.[0]?.value||n.phone?.mobile||"",d=n.user_image_url||"",u=this.getInitialsFromName(o,a);return`\n <div class="uqc-lead-card-inner">\n <div class="uqc-lead-header" style="background-color: ${e}"></div>\n <div class="uqc-lead-body" style="background-color: ${t}">\n <div class="uqc-lead-profile">\n ${d?`<img class="uqc-lead-avatar-img" src="${d}" alt="${i}" />`:`<div class="uqc-lead-avatar" style="color: ${e}; background-color: ${this.hexToRgba(e,.15)}">${u}</div>`}\n </div>\n <div class="uqc-lead-info">\n <div class="uqc-lead-name">${i}</div>\n ${s?`<div class="uqc-lead-designation">${s}</div>`:""}\n ${r?`<div class="uqc-lead-company">${r}</div>`:""}\n </div>\n <div class="uqc-lead-contacts">\n ${l?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M13.388 4.82261C14.3232 5.00472 15.1827 5.46123 15.8565 6.1337C16.5302 6.80617 16.9876 7.66402 17.1701 8.59743M13.388 1C15.331 1.21544 17.1429 2.08388 18.5261 3.46272C19.9093 4.84157 20.7817 6.64887 21 8.58788M20.0425 16.214V19.0809C20.0436 19.3471 19.989 19.6105 19.8821 19.8544C19.7753 20.0983 19.6186 20.3172 19.4221 20.4971C19.2256 20.677 18.9937 20.814 18.7411 20.8993C18.4885 20.9845 18.2208 21.0162 17.9552 20.9922C15.0089 20.6727 12.1787 19.6678 9.69214 18.0584C7.37869 16.5911 5.4173 14.6335 3.94724 12.3245C2.32908 9.83138 1.32206 6.99289 1.00777 4.03897C0.983845 3.7747 1.01531 3.50836 1.10017 3.25689C1.18503 3.00543 1.32141 2.77435 1.50065 2.57838C1.67989 2.3824 1.89804 2.22582 2.14123 2.11861C2.38442 2.0114 2.64731 1.9559 2.91316 1.95565H5.78561C6.25028 1.95109 6.70076 2.11532 7.05309 2.41774C7.40541 2.72016 7.63554 3.14013 7.70057 3.59937C7.82181 4.51686 8.04665 5.41772 8.37081 6.28476C8.49963 6.62681 8.52751 6.99855 8.45115 7.35593C8.37478 7.71331 8.19737 8.04135 7.93994 8.30118L6.72394 9.51486C8.08697 11.9074 10.0717 13.8883 12.4688 15.2488L13.6848 14.0351C13.9452 13.7782 14.2738 13.6011 14.6319 13.5249C14.99 13.4486 15.3624 13.4765 15.7051 13.6051C16.5738 13.9286 17.4764 14.153 18.3956 14.274C18.8608 14.3395 19.2855 14.5733 19.5892 14.931C19.8928 15.2887 20.0542 15.7453 20.0425 16.214Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${l}</div>\n <div class="uqc-lead-contact-label">Phone</div>\n </div>\n </div>\n `:""}\n ${c?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2.87573 1.19043H18.6472C19.7314 1.19043 20.6186 2.05293 20.6186 3.1071V14.6071C20.6186 15.6613 19.7314 16.5238 18.6472 16.5238H2.87573C1.79144 16.5238 0.904297 15.6613 0.904297 14.6071V3.1071C0.904297 2.05293 1.79144 1.19043 2.87573 1.19043Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M20.6186 3.38086L10.7614 9.95229L0.904297 3.38086" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${c}</div>\n <div class="uqc-lead-contact-label">Email</div>\n </div>\n </div>\n `:""}\n </div>\n </div>\n <div class="uqc-lead-footer" style="background-color: ${e}">\n <div class="uqc-lead-footer-btn">\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.5 19C15.5 19.2761 15.7239 19.5 16 19.5C16.2761 19.5 16.5 19.2761 16.5 19H15.5ZM16 17H16.5H16ZM12 13V12.5V13ZM5 13L5 12.5L5 13ZM1 17H0.5H1ZM0.5 19C0.5 19.2761 0.723858 19.5 1 19.5C1.27614 19.5 1.5 19.2761 1.5 19H0.5ZM20.5 6C20.5 5.72386 20.2761 5.5 20 5.5C19.7239 5.5 19.5 5.72386 19.5 6H20.5ZM19.5 12C19.5 12.2761 19.7239 12.5 20 12.5C20.2761 12.5 20.5 12.2761 20.5 12H19.5ZM23 9.5C23.2761 9.5 23.5 9.27614 23.5 9C23.5 8.72386 23.2761 8.5 23 8.5V9.5ZM17 8.5C16.7239 8.5 16.5 8.72386 16.5 9C16.5 9.27614 16.7239 9.5 17 9.5V8.5ZM16.5 19V17H15.5V19H16.5ZM16.5 17C16.5 15.8065 16.0259 14.6619 15.182 13.818L14.4749 14.5251C15.1313 15.1815 15.5 16.0717 15.5 17H16.5ZM15.182 13.818C14.3381 12.9741 13.1935 12.5 12 12.5L12 13.5C12.9283 13.5 13.8185 13.8687 14.4749 14.5251L15.182 13.818ZM12 12.5H5V13.5H12V12.5ZM5 12.5C3.80653 12.5 2.66193 12.9741 1.81802 13.818L2.52513 14.5251C3.1815 13.8687 4.07174 13.5 5 13.5L5 12.5ZM1.81802 13.818C0.974106 14.6619 0.5 15.8065 0.5 17H1.5C1.5 16.0717 1.86875 15.1815 2.52513 14.5251L1.81802 13.818ZM0.5 17V19H1.5V17H0.5ZM12 5C12 6.933 10.433 8.5 8.5 8.5V9.5C10.9853 9.5 13 7.48528 13 5H12ZM8.5 8.5C6.567 8.5 5 6.933 5 5H4C4 7.48528 6.01472 9.5 8.5 9.5V8.5ZM5 5C5 3.067 6.567 1.5 8.5 1.5V0.5C6.01472 0.5 4 2.51472 4 5H5ZM8.5 1.5C10.433 1.5 12 3.067 12 5H13C13 2.51472 10.9853 0.5 8.5 0.5V1.5ZM19.5 6V12H20.5V6H19.5ZM23 8.5H17V9.5H23V8.5Z" fill="white"/>\n </svg>\n Add to Contacts\n </div>\n </div>\n </div>\n `},generateLeadCardHTML:function(n,e,t){const o=n.first_name||"",a=n.last_name||"",i=`${o} ${a}`.trim(),s=n.email||"",r=n.phone_number||n.phone||"",c=n.company_name||n.company||"",l=n.designation||"",d=this.getInitialsFromName(o,a);return`\n <div class="uqc-lead-card-inner">\n <div class="uqc-lead-header" style="background-color: ${e}"></div>\n <div class="uqc-lead-body" style="background-color: ${t}">\n <div class="uqc-lead-profile">\n <div class="uqc-lead-avatar" style="color: ${e}; background-color: ${this.hexToRgba(e,.15)}">${d}</div>\n </div>\n <div class="uqc-lead-info">\n <div class="uqc-lead-name">${i}</div>\n ${l?`<div class="uqc-lead-designation">${l}</div>`:""}\n ${c?`<div class="uqc-lead-company">${c}</div>`:""}\n </div>\n <div class="uqc-lead-contacts">\n ${r?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M13.388 4.82261C14.3232 5.00472 15.1827 5.46123 15.8565 6.1337C16.5302 6.80617 16.9876 7.66402 17.1701 8.59743M13.388 1C15.331 1.21544 17.1429 2.08388 18.5261 3.46272C19.9093 4.84157 20.7817 6.64887 21 8.58788M20.0425 16.214V19.0809C20.0436 19.3471 19.989 19.6105 19.8821 19.8544C19.7753 20.0983 19.6186 20.3172 19.4221 20.4971C19.2256 20.677 18.9937 20.814 18.7411 20.8993C18.4885 20.9845 18.2208 21.0162 17.9552 20.9922C15.0089 20.6727 12.1787 19.6678 9.69214 18.0584C7.37869 16.5911 5.4173 14.6335 3.94724 12.3245C2.32908 9.83138 1.32206 6.99289 1.00777 4.03897C0.983845 3.7747 1.01531 3.50836 1.10017 3.25689C1.18503 3.00543 1.32141 2.77435 1.50065 2.57838C1.67989 2.3824 1.89804 2.22582 2.14123 2.11861C2.38442 2.0114 2.64731 1.9559 2.91316 1.95565H5.78561C6.25028 1.95109 6.70076 2.11532 7.05309 2.41774C7.40541 2.72016 7.63554 3.14013 7.70057 3.59937C7.82181 4.51686 8.04665 5.41772 8.37081 6.28476C8.49963 6.62681 8.52751 6.99855 8.45115 7.35593C8.37478 7.71331 8.19737 8.04135 7.93994 8.30118L6.72394 9.51486C8.08697 11.9074 10.0717 13.8883 12.4688 15.2488L13.6848 14.0351C13.9452 13.7782 14.2738 13.6011 14.6319 13.5249C14.99 13.4486 15.3624 13.4765 15.7051 13.6051C16.5738 13.9286 17.4764 14.153 18.3956 14.274C18.8608 14.3395 19.2855 14.5733 19.5892 14.931C19.8928 15.2887 20.0542 15.7453 20.0425 16.214Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${r}</div>\n <div class="uqc-lead-contact-label">Phone</div>\n </div>\n </div>\n `:""}\n ${s?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2.87573 1.19043H18.6472C19.7314 1.19043 20.6186 2.05293 20.6186 3.1071V14.6071C20.6186 15.6613 19.7314 16.5238 18.6472 16.5238H2.87573C1.79144 16.5238 0.904297 15.6613 0.904297 14.6071V3.1071C0.904297 2.05293 1.79144 1.19043 2.87573 1.19043Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M20.6186 3.38086L10.7614 9.95229L0.904297 3.38086" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${s}</div>\n <div class="uqc-lead-contact-label">Email</div>\n </div>\n </div>\n `:""}\n </div>\n </div>\n <div class="uqc-lead-footer" style="background-color: ${e}">\n <div class="uqc-lead-footer-btn">\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.5 19C15.5 19.2761 15.7239 19.5 16 19.5C16.2761 19.5 16.5 19.2761 16.5 19H15.5ZM16 17H16.5H16ZM12 13V12.5V13ZM5 13L5 12.5L5 13ZM1 17H0.5H1ZM0.5 19C0.5 19.2761 0.723858 19.5 1 19.5C1.27614 19.5 1.5 19.2761 1.5 19H0.5ZM20.5 6C20.5 5.72386 20.2761 5.5 20 5.5C19.7239 5.5 19.5 5.72386 19.5 6H20.5ZM19.5 12C19.5 12.2761 19.7239 12.5 20 12.5C20.2761 12.5 20.5 12.2761 20.5 12H19.5ZM23 9.5C23.2761 9.5 23.5 9.27614 23.5 9C23.5 8.72386 23.2761 8.5 23 8.5V9.5ZM17 8.5C16.7239 8.5 16.5 8.72386 16.5 9C16.5 9.27614 16.7239 9.5 17 9.5V8.5ZM16.5 19V17H15.5V19H16.5ZM16.5 17C16.5 15.8065 16.0259 14.6619 15.182 13.818L14.4749 14.5251C15.1313 15.1815 15.5 16.0717 15.5 17H16.5ZM15.182 13.818C14.3381 12.9741 13.1935 12.5 12 12.5L12 13.5C12.9283 13.5 13.8185 13.8687 14.4749 14.5251L15.182 13.818ZM12 12.5H5V13.5H12V12.5ZM5 12.5C3.80653 12.5 2.66193 12.9741 1.81802 13.818L2.52513 14.5251C3.1815 13.8687 4.07174 13.5 5 13.5L5 12.5ZM1.81802 13.818C0.974106 14.6619 0.5 15.8065 0.5 17H1.5C1.5 16.0717 1.86875 15.1815 2.52513 14.5251L1.81802 13.818ZM0.5 17V19H1.5V17H0.5ZM12 5C12 6.933 10.433 8.5 8.5 8.5V9.5C10.9853 9.5 13 7.48528 13 5H12ZM8.5 8.5C6.567 8.5 5 6.933 5 5H4C4 7.48528 6.01472 9.5 8.5 9.5V8.5ZM5 5C5 3.067 6.567 1.5 8.5 1.5V0.5C6.01472 0.5 4 2.51472 4 5H5ZM8.5 1.5C10.433 1.5 12 3.067 12 5H13C13 2.51472 10.9853 0.5 8.5 0.5V1.5ZM19.5 6V12H20.5V6H19.5ZM23 8.5H17V9.5H23V8.5Z" fill="white"/>\n </svg>\n Add to Contacts\n </div>\n </div>\n </div>\n `},getInitialsFromName:function(n,e){const t=(n||"").trim(),o=(e||"").trim();return t||o?o?(t.charAt(0)+o.charAt(0)).toUpperCase():t.substring(0,2).toUpperCase():"??"},hexToRgba:function(n,e=1){return n?(3===(n=n.replace("#","")).length&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${e})`):`rgba(51, 112, 249, ${e})`}},h={getSuccessDrawerTemplate:function(){const n=this._cardData||{},e=(this._config,n.first_name||"them");return n.user_image_url,n.customizations?.colors?.button_color||n.customizations,"false"!==n.show_post_scan_signup_nudge&&n.show_post_scan_signup_nudge,`\n <style>\n /* Success Drawer Overlay */\n .uqc-success-overlay {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 2147483006;\n display: none;\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n \n .uqc-success-overlay.show {\n display: block;\n opacity: 1;\n }\n \n /* Success Drawer */\n .uqc-success-drawer {\n display: flex;\n flex-direction: column;\n gap: 0.4rem;\n padding: 24px;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 2147483007;\n background-color: white;\n transition: transform 0.5s ease-in-out;\n transform: translateY(100%);\n max-width: 500px;\n width: 100%;\n margin: 0 auto;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n max-height: 85%;\n font-family: 'Work Sans', sans-serif;\n box-sizing: border-box;\n }\n \n .uqc-success-drawer.show {\n transform: translateY(0);\n }\n \n /* Drawer Header */\n .uqc-success-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n \n .uqc-success-header.header-right-only {\n justify-content: flex-end;\n }\n \n .uqc-success-title {\n font-weight: 400;\n font-size: 20px;\n font-family: "Work Sans", sans-serif;\n line-height: 28px;\n color: #16212F;\n }\n \n .uqc-success-close-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 8px;\n font-size: 18px;\n color: #5E6980;\n }\n \n .uqc-success-close-btn:hover {\n color: #16212F;\n }\n \n /* Confetti Image Container */\n .uqc-confetti-container {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 12px;\n }\n \n .uqc-confetti-wrapper {\n position: relative;\n display: inline-block;\n }\n \n .uqc-confetti-user-image {\n width: 82px;\n height: 82px;\n border-radius: 50%;\n object-fit: cover;\n }\n \n .uqc-confetti-initials {\n height: 82px;\n width: 82px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n font-family: 'Roboto', sans-serif;\n font-size: 38px;\n font-weight: 500;\n text-transform: uppercase;\n background: var(--button-color-light, rgba(22, 113, 249, 0.2));\n color: var(--button-color, #1671F9);\n }\n \n .uqc-confetti-check {\n background: #26B969;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n color: #FFFFFF;\n position: absolute;\n bottom: 0;\n right: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n \n .uqc-confetti-check svg {\n width: 14px;\n height: 14px;\n }\n \n /* Centered Message (when nudge is disabled) */\n .uqc-centered-message {\n text-align: center;\n font-size: 18px;\n font-weight: 500;\n color: #16212F;\n margin-bottom: 16px;\n font-family: "Work Sans", sans-serif;\n }\n \n /* Contact Info Text */\n .uqc-success-info {\n color: #5E6980;\n text-align: center;\n font-size: 15px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n letter-spacing: 0.25px;\n margin-bottom: 12px;\n font-family: "Work Sans", sans-serif;\n }\n \n /* Create Card Button */\n .uqc-create-card-btn {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #ffffff;\n background: #1671F9;\n border: none;\n cursor: pointer;\n width: 100%;\n font-size: 18px;\n min-height: 48px;\n padding: 0px;\n border-radius: 8px;\n font-family: 'Work Sans', sans-serif;\n text-decoration: none;\n }\n \n .uqc-create-card-btn:hover {\n background: #1461d8;\n }\n \n .uqc-create-card-btn span {\n color: #ffffff;\n }\n </style>\n\n \x3c!-- Success Drawer Overlay --\x3e\n <div id="uqc-success-overlay" class="uqc-success-overlay"></div>\n \n \x3c!-- Success Drawer --\x3e\n <div id="uqc-success-drawer" class="uqc-success-drawer">\n <div class="uqc-success-header" id="uqc-success-header">\n <span class="uqc-success-title" id="uqc-success-title">\n You've connected with&nbsp;<span id="uqc-owner-name">${e}</span>!\n </span>\n <button class="uqc-success-close-btn" id="uqc-success-close-btn" aria-label="Close">\n <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M1 1L13 13M1 13L13 1" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>\n </svg>\n </button>\n </div>\n \n <div class="uqc-confetti-container" id="uqc-confetti-container">\n \x3c!-- Will be populated dynamically --\x3e\n </div>\n \n <div class="uqc-centered-message uqc-hidden" id="uqc-centered-message">\n 🎉 You've connected with&nbsp;<span id="uqc-centered-owner-name">${e}</span>!\n </div>\n \n <div class="uqc-success-info" id="uqc-success-info">\n Get a personalized digital business card in minutes to network smarter.\n </div>\n \n <button type="button" class="uqc-create-card-btn" id="uqc-create-card-btn">\n <span>Create Your Card</span>\n </button>\n </div>\n `},attachSuccessDrawerListeners:function(){const n=this._shadowRoot.querySelector("#uqc-success-close-btn");n&&n.addEventListener("click",()=>{this.hideSuccessDrawer()});const e=this._shadowRoot.querySelector("#uqc-success-overlay");e&&e.addEventListener("click",()=>{this.hideSuccessDrawer()});const t=this._shadowRoot.querySelector("#uqc-create-card-btn");t&&t.addEventListener("click",()=>{this.handleCreateCardClick()})},showSuccessDrawer:function(n={}){const e=this._cardData||{},t=(this._config,n.ownerFirstName||e.first_name||"them"),o=e.last_name||"",a=n.ownerImageUrl||e.user_image_url||"",i=n.buttonColor||e.customizations?.colors?.button_color||e.customizations?.button_color||"#1671F9",s=!1!==n.showNudge&&"false"!==e.show_post_scan_signup_nudge&&!1!==e.show_post_scan_signup_nudge,r=n.type||"exchange",c=this._shadowRoot.querySelector("#uqc-success-drawer"),l=this._shadowRoot.querySelector("#uqc-success-overlay"),d=this._shadowRoot.querySelector("#uqc-success-header"),u=this._shadowRoot.querySelector("#uqc-success-title"),h=this._shadowRoot.querySelector("#uqc-owner-name"),g=this._shadowRoot.querySelector("#uqc-centered-message"),p=this._shadowRoot.querySelector("#uqc-centered-owner-name"),f=this._shadowRoot.querySelector("#uqc-confetti-container"),m=this._shadowRoot.querySelector("#uqc-success-info"),v=this._shadowRoot.querySelector("#uqc-create-card-btn");c&&l?(h&&(h.textContent=t),p&&(p.textContent=t),u&&(u.innerHTML="add-to-contact"===r?`You've added&nbsp;<span id="uqc-owner-name">${t}</span>'s contact!`:`You've connected with&nbsp;<span id="uqc-owner-name">${t}</span>!`),g&&(g.innerHTML="add-to-contact"===r?`🎉 You've added&nbsp;<span id="uqc-centered-owner-name">${t}</span>'s contact!`:`🎉 You've connected with&nbsp;<span id="uqc-centered-owner-name">${t}</span>!`),f&&(f.innerHTML=this.generateConfettiHTML(t,o,a,i)),s?(d&&d.classList.remove("header-right-only"),u&&u.classList.remove("uqc-hidden"),g&&g.classList.add("uqc-hidden"),m&&m.classList.remove("uqc-hidden"),v&&v.classList.remove("uqc-hidden")):(d&&d.classList.add("header-right-only"),u&&u.classList.add("uqc-hidden"),g&&g.classList.remove("uqc-hidden"),m&&m.classList.add("uqc-hidden"),v&&v.classList.add("uqc-hidden")),l.classList.add("show"),c.classList.add("show"),console.log("[SuccessDrawer] Drawer opened"),this.emitEvent("success-drawer-open",{ownerFirstName:t,actionType:r,showNudge:s}),s||setTimeout(()=>{this.hideSuccessDrawer()},3e3)):console.error("[SuccessDrawer] Drawer elements not found")},hideSuccessDrawer:function(){const n=this._shadowRoot.querySelector("#uqc-success-drawer"),e=this._shadowRoot.querySelector("#uqc-success-overlay");n&&n.classList.remove("show"),e&&e.classList.remove("show"),console.log("[SuccessDrawer] Drawer closed"),this.emitEvent("success-drawer-close")},handleCreateCardClick:function(){const n=(this._cardData||{}).slug||"slug",e=`https://www.uniqode.com/store/starter-signup?${new URLSearchParams({trial_source:"dbc_leads_post_scan",product_selected:"DBC",utm_source:"post_exchange_cta_1",utm_medium:"CreateYourCard",card_source:n}).toString()}`;console.log("[SuccessDrawer] Create Card clicked:",e),this.emitEvent("create-card-click",{url:e,slug:n}),window.open(e,"_blank")},generateConfettiHTML:function(n,e,t,o){const a=this.getInitialsFromName?this.getInitialsFromName(n,e):((n||"").charAt(0)+(e||"").charAt(0)).toUpperCase(),i=this.hexToRgba(o,.2),s='\n <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M11.6667 3.5L5.25 9.91667L2.33333 7" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ';return t?`\n <div class="uqc-confetti-wrapper">\n <img src="${t}" alt="${n}" class="uqc-confetti-user-image" />\n <div class="uqc-confetti-check">${s}</div>\n </div>\n `:n?`\n <div class="uqc-confetti-wrapper">\n <div class="uqc-confetti-initials" style="background: ${i}; color: ${o};">\n <span>${a}</span>\n </div>\n <div class="uqc-confetti-check">${s}</div>\n </div>\n `:`\n <div class="uqc-confetti-wrapper">\n <div class="uqc-confetti-initials" style="background: ${i}; color: ${o};">\n <span>??</span>\n </div>\n <div class="uqc-confetti-check">${s}</div>\n </div>\n `},hexToRgba:function(n,e=.15){return n?(3===(n=n.replace("#","")).length&&(n=n.split("").map(n=>n+n).join("")),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${e})`):`rgba(22, 113, 249, ${e})`}},g="1.0.33",p=(new Date).toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0});"undefined"!=typeof window&&console.log(`%c🔧 [UniqodeCardTemplates] BUILD: PRODUCTION_READY | v${g}`,"background: #ff6600; color: white; padding: 4px 8px; border-radius: 4px; font-weight: bold; font-size: 14px;"),"undefined"!=typeof window&&(window.UniqodeCardConfig?window.UniqodeCardConfig.EVENTS?console.log("%c[UniqodeCardTemplates] Config already complete (skipping)","color: #f59e0b;"):(window.UniqodeCardConfig.EVENTS=s,console.log("%c[UniqodeCardTemplates] EVENTS merged into existing config","color: #10b981;")):(window.UniqodeCardConfig={EVENTS:s},console.log("%c[UniqodeCardTemplates] Config initialized (first time)","color: #10b981;")));const f="undefined"!=typeof window&&"open"===window.UniqodeCardConfig?.shadowMode?"open":"closed";class m extends HTMLElement{static get EVENTS(){return s}constructor(){super(),this._shadowRoot=this.attachShadow({mode:f}),Object.assign(this,c),Object.assign(this,l),Object.assign(this,d),Object.assign(this,u),Object.assign(this,h),this._cardData={},this._config={},this._isConnected=!1,this._eventListeners=new Map,this._lastDataString="",this._lastConfigString="",this.handleCardShare=this.handleCardShare.bind(this),this.handleContactClick=this.handleContactClick.bind(this),this.handleSaveContact=this.handleSaveContact.bind(this),this.handleLeadCollect=this.handleLeadCollect.bind(this),this.handleSocialClick=this.handleSocialClick.bind(this),this.handleCustomFieldClick=this.handleCustomFieldClick.bind(this)}getShadowMode(){return f}static getShadowDOMMode(){return f}static get observedAttributes(){return["card-data","config","data-source","config-source"]}connectedCallback(){this._isConnected=!0,m._versionLogged||(console.log(`%c🎨 Uniqode Card Templates v${g}`,"background: #3b82f6; color: white; padding: 4px 8px; border-radius: 4px; font-weight: bold;",`\n📦 Build: ${p}\n🔧 Shadow DOM: ${f}\n✨ Features: Colors, Typography, Background, Multilingual`),m._versionLogged=!0),this._shadowRoot.innerHTML=this.getTemplate(),this.loadData(),this.loadConfig(),this.setupComponent(),this.setupEventListeners(),this.render(),this.emitEvent(s.CARD_READY,{layout:this.constructor.layoutId,hasData:Object.keys(this._cardData).length>0,hasConfig:Object.keys(this._config).length>0,version:g}),this.checkAutoOpenLeadForm()}disconnectedCallback(){this._isConnected=!1,this.cleanup()}attributeChangedCallback(n,e,t){if(this._isConnected&&e!==t)switch(n){case"card-data":this.handleCardDataAttribute(t);break;case"config":this.handleConfigAttribute(t);break;case"data-source":this.loadDataFromSource(t);break;case"config-source":this.loadConfigFromSource(t)}}loadData(){const n=this.getAttribute("data-source");if(n&&this.loadDataFromSource(n))return;const e=this.getAttribute("card-data");e&&this.handleCardDataAttribute(e)||this._cardData&&Object.keys(this._cardData).length>0||console.warn("[UniqodeCard] No card data provided. Use data-source, card-data attribute, or set cardData property.")}loadConfig(){const n=this.getAttribute("config-source");if(n&&this.loadConfigFromSource(n))return;const e=this.getAttribute("config");e&&this.handleConfigAttribute(e)||(this._config={...this.getDefaultConfig(),...this._config})}loadDataFromSource(n){try{const e=document.getElementById(n);if(!e)return console.warn(`[UniqodeCard] Data source element #${n} not found`),!1;const t=e.textContent.trim();return t===this._lastDataString||(this._cardData=JSON.parse(t),this._lastDataString=t,this._isConnected&&this.render()),!0}catch(n){return console.error("[UniqodeCard] Error loading data from source:",n),!1}}loadConfigFromSource(n){try{const e=document.getElementById(n);if(!e)return console.warn(`[UniqodeCard] Config source element #${n} not found`),!1;const t=e.textContent.trim();return t===this._lastConfigString||(this._config={...this.getDefaultConfig(),...JSON.parse(t)},this._lastConfigString=t,this._isConnected&&this.render()),!0}catch(n){return console.error("[UniqodeCard] Error loading config from source:",n),!1}}handleCardDataAttribute(n){if(!n||n===this._lastDataString)return!1;try{return this._cardData=JSON.parse(n),this._lastDataString=n,this._isConnected&&this.render(),!0}catch(n){return console.error("[UniqodeCard] Invalid card-data JSON:",n),!1}}handleConfigAttribute(n){if(!n||n===this._lastConfigString)return!1;try{return this._config={...this.getDefaultConfig(),...JSON.parse(n)},this._lastConfigString=n,this._isConnected&&this.render(),!0}catch(n){return console.error("[UniqodeCard] Invalid config JSON:",n),!1}}set cardData(n){if(!n)return void console.warn("[UniqodeCard] Card data is null or undefined");const e=(0,o.validateCardData)(n);e.isValid||console.warn("[UniqodeCard] Invalid card data:",e.errors);const t=JSON.stringify(n);if(t===this._lastDataString)return void console.log("%c[BaseCard] ⏭️ Render skipped - no data change","color: #fbbf24; font-weight: bold");console.log("%c[BaseCard] 🔄 CardData updated - will render","color: #10b981; font-weight: bold"),console.log(JSON.parse(JSON.stringify(n)));const a=JSON.parse(t);this._lastDataString=t;const i=this._currentLanguage||"";if(this._originalCardData=a,i&&"function"==typeof this.getLanguageData){const n=this.getLanguageData(i);this._cardData={...a,...n}}else this._cardData=a;this._isConnected&&(this.render(),this._autoOpenChecked||(this._autoOpenChecked=!0,this.checkAutoOpenLeadForm()))}get cardData(){return JSON.parse(JSON.stringify(this._cardData))}set config(n){const e=JSON.stringify(n);e!==this._lastConfigString&&(this._config={...this.getDefaultConfig(),...n},this._lastConfigString=e,this._isConnected&&this.render())}get config(){return{...this._config}}getDefaultConfig(){return{showProfileImage:!0,showLogo:!0,enableSharing:!0,enableLeadCollection:!1,compactMode:!1,theme:"auto"}}emitEvent(n,e={}){console.log(`%c[BaseCard] 📤 Event: ${n}`,"color: #3b82f6; font-weight: bold",e);const t=new CustomEvent(n,{bubbles:!0,composed:!0,cancelable:!0,detail:{...e,timestamp:Date.now(),layout:this.constructor.layoutId}});return this.dispatchEvent(t)}handleContactClick(n,e,t){const o={type:n,value:e,label:t};this.emitEvent(s.CONTACT_CLICK,o)&&this.defaultContactAction(n,e)}defaultContactAction(n,e){try{switch(n){case"email":window.location.href=`mailto:${e}`;break;case"phone":window.location.href=`tel:${e}`;break;case"website":const n=e.startsWith("http")?e:`https://${e}`;window.open(n,"_blank","noopener,noreferrer");break;case"address":const t=`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(e)}`;window.open(t,"_blank","noopener,noreferrer")}}catch(e){console.warn(`[UniqodeCard] Failed to execute ${n} action:`,e)}}handleSaveContact(){const n=this.generateVCard(),e={vcardData:n,cardData:this._cardData};this.emitEvent(s.SAVE_CONTACT,e)&&this.downloadVCard(n)}handleCardShare(){const n={title:`${this._cardData.first_name||""} ${this._cardData.last_name||""}`.trim(),text:"Check out my digital business card",url:window.location.href},e={shareData:n,cardData:this._cardData};this.emitEvent("share",e)&&this.defaultShareAction(n)}handleLeadCollect(n){const e={leadData:n,cardData:this._cardData};this.emitEvent("lead-collect",e)}handleSocialClick(n,e){const t={platform:n,url:e};this.emitEvent(s.SOCIAL_CLICK,t)&&window.open(e,"_blank","noopener,noreferrer")}handleCustomFieldClick(n,e){const t={fieldId:n,fieldValue:e};this.emitEvent("custom-field-click",t)}getInitials(){const{first_name:n="",last_name:e=""}=this._cardData;return(0,a.getInitials)(n,e)}hexToRGBA(n,e=.2){return(0,i.hexToRGBA)(n,e)}getFullName(){const{prefix:n,first_name:e="",last_name:t="",suffix:o}=this._cardData;let a="";return n&&(a+=n+" "),a+=e,t&&(a+=" "+t),o&&(a+=", "+o),a.trim()}generateVCard(){const{first_name:n,last_name:e,company:t,designation:o,email_v2:a,phone_v2:i,website_v2:s,address_v2:r}=this._cardData;let c="BEGIN:VCARD\nVERSION:3.0\n";return c+=`FN:${n||""} ${e||""}\n`,c+=`N:${e||""};${n||""};;;\n`,t&&(c+=`ORG:${t}\n`),o&&(c+=`TITLE:${o}\n`),a&&a.length>0&&a.forEach(n=>{n.value&&(c+=`EMAIL;TYPE=INTERNET:${n.value}\n`)}),i&&i.length>0&&i.forEach(n=>{n.value&&(c+=`TEL;TYPE=VOICE:${n.value}\n`)}),s&&s.length>0&&s[0].value&&(c+=`URL:${s[0].value}\n`),r&&(c+=`ADR;TYPE=WORK:;;${r};;;;\n`),c+="END:VCARD",c}downloadVCard(n){const e=new Blob([n],{type:"text/vcard;charset=utf-8"}),t=URL.createObjectURL(e),o=document.createElement("a"),a=`${this._cardData.first_name||"contact"}_${this._cardData.last_name||"card"}.vcf`;o.href=t,o.download=a,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(t)}defaultShareAction(n){navigator.share?navigator.share(n).catch(n=>{console.log("[UniqodeCard] Share cancelled or failed:",n)}):navigator.clipboard&&navigator.clipboard.writeText&&navigator.clipboard.writeText(n.url).then(()=>{console.log("[UniqodeCard] Link copied to clipboard")}).catch(n=>{console.warn("[UniqodeCard] Failed to copy link:",n)})}getContactIcon(n){const e={phone:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/>\n </svg>',email:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.89 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/>\n </svg>',website:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/>\n </svg>',address:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>\n </svg>',custom:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>\n </svg>'};return e[n]||e.custom}setupComponent(){}setupEventListeners(){}cleanup(){this._eventListeners.forEach((n,e)=>{e.removeEventListener(n.event,n.handler)}),this._eventListeners.clear()}getCustomization(){const n=this._cardData?.customizations||{};return!this._customizationsLogged&&Object.keys(n).length>0?(console.log("%c[BaseCard] ✅ Customizations loaded:","color: #10b981; font-weight: bold",n),this._customizationsLogged=!0):this._customizationsLogged||(console.warn("%c[BaseCard] ⚠️ No customizations found in cardData","color: #ef4444; font-weight: bold"),this._customizationsLogged=!0),n}extractColors(){const n=this.getCustomization(),e=n.typography||{},t=n.background?.value||"#FFFFFF",o={"card-bg":t,"button-color":n.button_color,"icon-color":n.icon_color,"secondary-color":n.secondary_color,"user-info-color":n.user_info_color,"primary-color":n.background_color,"divider-color":this.getDarkerColor(t,15)};return e.personal_info&&(o["personal-info-color"]=e.personal_info.google_font_colour),e.company_details&&(o["company-details-color"]=e.company_details.google_font_colour),e.contact_details&&(o["contact-details-color"]=e.contact_details.google_font_colour),e.bio&&(o["bio-color"]=e.bio.google_font_colour),e.button&&(o["button-text-color"]=e.button.google_font_colour),e.button&&(o["button-text-color-typo"]=e.button.google_font_colour||o["button-text-color"]),o}getFontWeight(n){return{Thin:100,"Extra Light":200,Light:300,Regular:400,Medium:500,"Semi Bold":600,Bold:700,"Extra Bold":800,Black:900}[n]||400}extractTypography(){const n=this.getCustomization(),e=n.typography||{};return{fontFamily:e.font_family||n.font_style||"Roboto",fontType:e.font_type||n.font_type||"google",customFontUrl:n.custom_font_url||"",personalInfo:{fontSize:e.personal_info?.google_font_size||n.title_font_size||24,fontStyle:e.personal_info?.google_font_style||n.profile_info||"Semi Bold",fontWeight:this.getFontWeight(e.personal_info?.google_font_style||n.profile_info||"Semi Bold"),fontColor:e.personal_info?.google_font_colour||n.user_info_color||"#000000"},companyDetails:{fontSize:e.company_details?.google_font_size||16,fontStyle:e.company_details?.google_font_style||n.company_details||"Regular",fontWeight:this.getFontWeight(e.company_details?.google_font_style||n.company_details||"Regular"),fontColor:e.company_details?.google_font_colour||"#000000"},contactDetails:{fontSize:e.contact_details?.google_font_size||14,fontStyle:e.contact_details?.google_font_style||n.contact_details||"Medium",fontWeight:this.getFontWeight(e.contact_details?.google_font_style||n.contact_details||"Medium"),fontColor:e.contact_details?.google_font_colour||"#000000"},bio:{fontSize:e.bio?.google_font_size||16,fontStyle:e.bio?.google_font_style||"Regular",fontWeight:this.getFontWeight(e.bio?.google_font_style||"Regular"),fontColor:e.bio?.google_font_colour||"#000000"},button:{fontSize:e.button?.google_font_size||20,fontStyle:e.button?.google_font_style||n.button||"Regular",fontWeight:this.getFontWeight(e.button?.google_font_style||n.button||"Regular"),fontColor:e.button?.google_font_colour||"#FFFFFF"}}}extractBackground(){const n=this.getCustomization(),e=n.background||{};return{type:e.type||"color",value:e.value||n.background_color||"#FFFFFF",color:n.background_color||e.value||"#FFFFFF"}}getAllCustomizations(){return{colors:this.extractColors(),typography:this.extractTypography(),background:this.extractBackground(),raw:this.getCustomization()}}applyCustomColors(){const n=this.extractColors(),e=this.extractTypography(),t=this.extractBackground();this._colors=n,this._typography=e,this._background=t;const o=this._shadowRoot?.querySelector(".uqc-card-container"),a=this._shadowRoot?.host;if(!o)return;const i=e=>{Object.entries(n).forEach(([n,t])=>{e.style.setProperty(`--${n}`,t)})};i(o),a&&i(a);const s=n=>{n.style.setProperty("--font-family",e.fontFamily),n.style.setProperty("--font-type",e.fontType),n.style.setProperty("--personal-info-size",`${e.personalInfo.fontSize}px`),n.style.setProperty("--personal-info-style",e.personalInfo.fontStyle),n.style.setProperty("--personal-info-weight",e.personalInfo.fontWeight),n.style.setProperty("--personal-info-color",e.personalInfo.fontColor),n.style.setProperty("--company-details-size",`${e.companyDetails.fontSize}px`),n.style.setProperty("--company-details-style",e.companyDetails.fontStyle),n.style.setProperty("--company-details-weight",e.companyDetails.fontWeight),n.style.setProperty("--company-details-color",e.companyDetails.fontColor),n.style.setProperty("--contact-details-size",`${e.contactDetails.fontSize}px`),n.style.setProperty("--contact-details-style",e.contactDetails.fontStyle),n.style.setProperty("--contact-details-weight",e.contactDetails.fontWeight),n.style.setProperty("--contact-details-color",e.contactDetails.fontColor),n.style.setProperty("--bio-size",`${e.bio.fontSize}px`),n.style.setProperty("--bio-style",e.bio.fontStyle),n.style.setProperty("--bio-weight",e.bio.fontWeight),n.style.setProperty("--bio-color",e.bio.fontColor),n.style.setProperty("--button-size",`${e.button.fontSize}px`),n.style.setProperty("--button-style",e.button.fontStyle),n.style.setProperty("--button-weight",e.button.fontWeight),n.style.setProperty("--button-text-color-final",e.button.fontColor)};s(o),a&&s(a),"image"===t.type&&t.value?(o.style.setProperty("--card-bg-type","image"),o.style.setProperty("--card-bg-image",`url(${t.value})`)):(o.style.setProperty("--card-bg-type","color"),o.style.setProperty("--card-bg-color",t.color)),"google"===e.fontType&&e.fontFamily?this.loadGoogleFont(e.fontFamily):e.customFontUrl&&this.loadCustomFont(e.customFontUrl,e.fontFamily)}loadGoogleFont(n){if(!n)return;const e=`google-font-${n.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(e))return;const t=document.createElement("link");t.id=e,t.rel="stylesheet",t.href=`https://fonts.googleapis.com/css2?family=${n.replace(/\s+/g,"+")}:wght@300;400;500;600;700&display=swap`,document.head.appendChild(t),console.log(`[BaseCard] 🔤 Loaded Google Font: ${n}`)}loadCustomFont(n,e){if(!n)return;const t=`custom-font-${e.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(t))return;const o=document.createElement("style");o.id=t,o.textContent=`\n @font-face {\n font-family: '${e}';\n src: url('${n}');\n font-display: swap;\n }\n `,document.head.appendChild(o)}getColor(n){if(this._colors&&this._colors[n])return this._colors[n];const e=this._shadowRoot?.querySelector(".uqc-card-container");return e?.style.getPropertyValue(`--${n}`)||"#000000"}getTypography(){return this._typography||this.extractTypography()}getTypographyFor(n){return this.getTypography()[n]||{fontSize:14,fontStyle:"Regular",fontColor:"#000000"}}getBackground(){return this._background||this.extractBackground()}getFontFamily(){return this.getTypography().fontFamily}getPersonalInfo(){const{first_name:n,last_name:e,prefix:t,suffix:o,pronouns_v2:a,designation:i,company:s,department:r,summary:c}=this._cardData;return{fullName:this.getFullName(),firstName:n,lastName:e,prefix:t,suffix:o,pronouns:a,designation:i,company:s,department:r,summary:c,initials:this.getInitials()}}getContactInfo(){const{phone_v2:n,email_v2:e,website_v2:t,address_v2:o,custom_fields:a,contact_info_ordering:i}=this._cardData,s={phone_v2:n||[],email_v2:e||[],website_v2:t||[],address_v2:o||"",custom_fields:a||[]};return i?this.orderContactInfo(s,i):s}orderContactInfo(n,e){const t=Object.keys(e).sort((n,e)=>parseInt(n)-parseInt(e)).map(n=>e[n]),o=t.map(e=>({type:e,items:n[e]})),a=new Set(t);return Object.keys(n).forEach(e=>{!a.has(e)&&n[e]&&o.push({type:e,items:n[e]})}),o.filter(n=>"string"==typeof n.items?!!n.items:Array.isArray(n.items)&&n.items.length>0)}getSocialLinks(){const{social_links:n,social_links_ordering:e}=this._cardData;if(!n)return[];let t;return t=e?Object.keys(e).sort((n,e)=>parseInt(n)-parseInt(e)).map(n=>e[n]).filter(e=>n[e]):Object.keys(n).filter(e=>n[e]),t.map(e=>({platform:e,url:n[e]}))}getImages(){return{cover:this._cardData?.cover_image_url||"",profile:this._cardData?.user_image_url||"",logo:this._cardData?.logo_url||"",logoSize:this._cardData?.logo_size||80}}getStickyButtonTemplate(){const n=this._config||{},e=n.leadCollection||!1,t=n.showConnectButtons||!1,o=n.hideFooter||!1,a=n.pwaPreview||!1,i=this._cardData?.autodownload_url||"#";return`\n <style>\n .fixed-btn-container {\n position: fixed;\n display: ${a?"none":"flex"};\n flex-direction: column;\n max-width: 500px;\n bottom: 0px;\n padding: 12px 0px;\n background: rgba(255, 255, 255, 0.80);\n box-shadow: 0px -4px 4px 0px rgba(0, 0, 0, 0.04);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n width: -webkit-fill-available;\n align-items: center;\n z-index: 1000;\n }\n\n .btn, .btn-exchange {\n background-color: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: 18px;\n font-weight: 400;\n font-family: 'Inter', sans-serif;\n }\n\n #btn-connect-container {\n display: ${t?"flex":"none"};\n justify-content: space-between;\n align-items: center;\n height: 48px;\n width: 90%;\n gap: 16px;\n }\n\n .btn-connect {\n border: 1px solid var(--button-color, #203D99);\n color: var(--button-color, #203D99);\n background: transparent;\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n cursor: pointer;\n width: 100%;\n height: 46px;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n }\n\n .btn-create {\n background: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border: none;\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n cursor: pointer;\n width: 100%;\n height: 48px;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n }\n\n .uniqode-branding-footer {\n display: ${o?"none":"flex"};\n justify-content: center;\n align-items: center;\n padding: 12px 0px 0px 0px;\n }\n\n .uniqode-branding-footer-text {\n line-height: 17px;\n font-size: 14px;\n font-weight: 400;\n font-family: 'Inter', sans-serif;\n }\n \n .uniqode-logo-image {\n height: 16px;\n width: auto;\n margin-left: 5px;\n margin-top: 4px;\n }\n\n .create-your-free-card-link {\n text-decoration: underline;\n color: inherit;\n cursor: pointer;\n }\n </style>\n \n <div class="fixed-btn-container">\n ${e?this.getExchangeButtonsHTML(t):this.getAddToContactHTML(i)}\n ${this.getFooterHTML()}\n </div>\n `}getAddToContactHTML(n){return'\n <div class="btn" id="add-to-contact-main-page" data-add-to-contact>\n <svg width="22" height="22" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <g clip-path="url(#clip0_434_678)">\n <path d="M10.6667 14V12.6667C10.6667 11.9594 10.3857 11.2811 9.88564 10.781C9.38554 10.281 8.70726 10 8.00002 10H3.33335C2.62611 10 1.94783 10.281 1.44774 10.781C0.947639 11.2811 0.666687 11.9594 0.666687 12.6667V14M13.3334 5.33333V9.33333M15.3334 7.33333H11.3334M8.33335 4.66667C8.33335 6.13943 7.13945 7.33333 5.66669 7.33333C4.19393 7.33333 3.00002 6.13943 3.00002 4.66667C3.00002 3.19391 4.19393 2 5.66669 2C7.13945 2 8.33335 3.19391 8.33335 4.66667Z" stroke="var(--button-text-color, #EBEBEB)" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>\n </g>\n <defs>\n <clipPath id="clip0_434_678">\n <rect width="16" height="16" fill="white"/>\n </clipPath>\n </defs>\n </svg>\n <span>Add to Contacts</span>\n </div>\n '}getExchangeButtonsHTML(n){return`\n <div class="btn-exchange" id="btn-exchange" style="display: ${n?"none":"flex"};" data-exchange-contacts>\n <i class="fas fa-exchange-alt" style="color: var(--button-text-color, #EBEBEB); font-size: 22px;"></i>\n <span>Exchange Contacts</span>\n </div>\n\n <div id="btn-connect-container">\n <button class="btn-connect" id="btn-connect" data-connect>\n Connect\n </button>\n <button class="btn-create" id="btn-create" data-create-card>\n Create Now\n </button>\n </div>\n `}getFooterHTML(){const n=(this._config||{}).hidePoweredBy||!1,e=this._cardData?.slug||"slug";return`\n <div id="footer-with-exchange" class="uniqode-branding-footer">\n <span class="uniqode-branding-footer-text"> \n ${n?"Created with":'<a href="#" class="create-your-free-card-link" data-footer-cta data-card-slug="'+e+'">Create your free card</a> with'}\n </span> \n <a href="https://www.uniqode.com/digital-business-card?utm_source=dbc_footer&utm_medium=referral&utm_campaign=flywheel"\n target="_blank" rel="noopener" data-footer-logo>\n <img src="${this._cardData?.static_assets_url||""}/static/images/footer/uniqode.svg" alt="Uniqode Logo" class="uniqode-logo-image">\n </a>\n </div>\n `}getButtonTextColor(n){const e=n.replace("#","");return(299*parseInt(e.substring(0,2),16)+587*parseInt(e.substring(2,4),16)+114*parseInt(e.substring(4,6),16))/1e3>186?"#000000":"#ffffff"}hexToHSL(n){n=n.replace("#","");const e=parseInt(n.substring(0,2),16)/255,t=parseInt(n.substring(2,4),16)/255,o=parseInt(n.substring(4,6),16)/255,a=Math.max(e,t,o),i=Math.min(e,t,o);let s,r,c=(a+i)/2;if(a===i)s=r=0;else{const n=a-i;switch(r=c>.5?n/(2-a-i):n/(a+i),a){case e:s=((t-o)/n+(t<o?6:0))/6;break;case t:s=((o-e)/n+2)/6;break;case o:s=((e-t)/n+4)/6}}return{h:360*s,s:100*r,l:100*c}}hslToHex(n,e,t){t/=100;const o=(e/=100)*Math.min(t,1-t),a=e=>{const a=(e+n/30)%12,i=t-o*Math.max(Math.min(a-3,9-a,1),-1);return Math.round(255*i).toString(16).padStart(2,"0")};return`#${a(0)}${a(8)}${a(4)}`}generateColorPalette(n,e){if(!n)return[];const t=this.hexToHSL(n);return e.map(n=>this.hslToHex(t.h,t.s,n))}getDarkerColor(n,e=10){if(!n)return"#E0E0E0";try{const t=this.hexToHSL(n),o=Math.max(0,t.l-e);return this.hslToHex(t.h,t.s,o)}catch(n){return console.warn("[BaseCard] getDarkerColor failed:",n),"#E0E0E0"}}attachStickyButtonListeners(){this._shadowRoot.querySelector("[data-add-to-contact]")?.addEventListener("click",n=>{const e=this._cardData?.autodownload_url;this.emitEvent(s.ADD_TO_CONTACT_CLICK,{url:e})}),this._shadowRoot.querySelector("[data-exchange-contacts]")?.addEventListener("click",()=>{this.openLeadForm(),this.emitEvent(s.EXCHANGE_CONTACTS_CLICK)}),this._shadowRoot.querySelector("[data-connect]")?.addEventListener("click",()=>{this.emitEvent(s.CONNECT_CLICK)}),this._shadowRoot.querySelector("[data-create-card]")?.addEventListener("click",n=>{const e=this._cardData?.slug||"slug";this.emitEvent(s.CREATE_NOW_CLICK,{slug:e})}),this._shadowRoot.querySelector("[data-footer-cta]")?.addEventListener("click",n=>{n.preventDefault();const e=n.target.getAttribute("data-card-slug");this.emitEvent(s.FOOTER_CTA_CLICK,{slug:e})}),this._shadowRoot.querySelector("[data-footer-logo]")?.addEventListener("click",()=>{this.emitEvent(s.FOOTER_LOGO_CLICK)})}showConnectButtons(){this._config.showConnectButtons=!0,this._config.hideFooter=!0;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="none"),e&&(e.style.display="flex"),t&&(t.style.display="none"),console.log("[StickyButton] State changed: showing Connect + Create Now buttons")}resetToExchangeButton(){this._config.showConnectButtons=!1,this._config.hideFooter=!1;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="flex"),e&&(e.style.display="none"),t&&(t.style.display="flex")}checkAutoOpenLeadForm(){const n=this._cardData||{},e=(n.lead_attribute||{}).connection;!n.lead_collection||"1"!==e&&1!==e?console.log("[LeadForm] Auto-open skipped:",{lead_collection:n.lead_collection,connection:e,has_lead_attribute:!!n.lead_attribute}):(console.log("[LeadForm] Auto-opening lead form (lead_collection=true, connection="+e+")"),setTimeout(()=>{this.openLeadForm&&(this.openLeadForm(),this.emitEvent(s.LEAD_FORM_OPEN,{source:"automatic"}))},200))}render(){throw new Error(`render() method must be implemented by ${this.constructor.name}`)}getTemplate(){throw new Error(`getTemplate() method must be implemented by ${this.constructor.name}`)}static get layoutId(){throw new Error(`layoutId must be defined by ${this.name} class`)}static get version(){return"1.0.0"}}},688:function(n,e,t){function o(n){const e=[];return!n||"object"!=typeof n||Array.isArray(n)?(e.push("Card data must be a valid object"),{isValid:!1,errors:e}):(n.first_name||n.last_name||n.name||e.push("At least one name field (first_name, last_name, or name) is required"),n.customizations&&"object"!=typeof n.customizations&&e.push("Customizations must be an object"),["phone_v2","email_v2","website_v2","custom_fields"].forEach(t=>{n[t]&&!Array.isArray(n[t])&&e.push(`${t} must be an array`),Array.isArray(n[t])&&n[t].forEach((n,o)=>{n&&"object"==typeof n?n.value||e.push(`${t}[${o}] must have a value property`):null!=n&&e.push(`${t}[${o}] must be an object or null`)})}),n.social_links&&"object"!=typeof n.social_links&&e.push("Social links must be an object"),n.customizations&&["background_color","icon_color","button_color"].forEach(t=>{const o=n.customizations[t];o&&!a(o)&&e.push(`Invalid color format for ${t}: ${o}`)}),["logo_url","user_image_url","address_url"].forEach(t=>{const o=n[t];o&&!i(o)&&e.push(`Invalid URL format for ${t}: ${o}`)}),Array.isArray(n.email_v2)&&n.email_v2.forEach((n,t)=>{n&&n.value&&!s(n.value)&&e.push(`Invalid email format in email_v2[${t}]: ${n.value}`)}),{isValid:0===e.length,errors:e})}function a(n){return!(!n||"string"!=typeof n)&&(!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(n)||(!!/^rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(,\s*[\d.]+)?\s*\)$/.test(n)||(!!/^hsla?\(\s*\d+\s*,\s*\d+%\s*,\s*\d+%\s*(,\s*[\d.]+)?\s*\)$/.test(n)||["black","white","red","green","blue","yellow","orange","purple","pink","brown","gray","grey","cyan","magenta","lime","navy","maroon","olive","teal","silver","aqua","fuchsia","transparent"].includes(n.toLowerCase()))))}function i(n){if(!n||"string"!=typeof n)return!1;try{return new URL(n),!0}catch{return/^(https?:\/\/|\/\/|\/|\.\/)/.test(n)||/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}/.test(n)}}function s(n){return!(!n||"string"!=typeof n)&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)}function r(n){if(!n||"string"!=typeof n)return!1;const e=n.replace(/[^\d+]/g,"").replace(/^\+/,"").length;return e>=7&&e<=15}function c(n){if(!n||"object"!=typeof n)return{};const e=JSON.parse(JSON.stringify(n)),t=n=>{if("string"==typeof n)return"string"!=typeof(e=n)?e:e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"");if(Array.isArray(n))return n.map(t);if(n&&"object"==typeof n){const e={};return Object.keys(n).forEach(o=>{e[o]=t(n[o])}),e}var e;return n};return t(e)}function l(){return{first_name:"",last_name:"",designation:"",company:"",department:"",summary:"",phone_v2:[],email_v2:[],website_v2:[],custom_fields:[],address_v2:"",social_links:{},logo_url:"",user_image_url:"",customizations:{background_color:"#ffffff",icon_color:"#333333",button_color:"#007bff",font_style:"Work Sans"},contact_info_ordering:["phone_v2","email_v2","website_v2","custom_fields"]}}t.r(e),t.d(e,{getDefaultCardData:function(){return l},isValidColor:function(){return a},isValidEmail:function(){return s},isValidPhone:function(){return r},isValidUrl:function(){return i},sanitizeCardData:function(){return c},validateCardData:function(){return o}}),e.default={validateCardData:o,isValidColor:a,isValidUrl:i,isValidEmail:s,isValidPhone:r,sanitizeCardData:c,getDefaultCardData:l}},750:function(n,e,t){function o(n="",e=""){const t=(n||"").toString().trim(),o=(e||"").toString().trim();return t||o?(t.charAt(0).toUpperCase()+o.charAt(0).toUpperCase()).substring(0,2):""}function a(n=""){const e=n.toString().trim().split(/\s+/);return 0===e.length||""===e[0]?"UN":1===e.length?e[0].substring(0,2).toUpperCase():e[0].charAt(0).toUpperCase()+e[e.length-1].charAt(0).toUpperCase()}function i(n={}){const{first_name:e,last_name:t,company:i,name:s}=n;return e||t?o(e,t):s?a(s):i?a(i):"UN"}function s(n=""){if(!n)return"#007bff";let e=0;for(let t=0;t<n.length;t++)e=n.charCodeAt(t)+((e<<5)-e);return function(n){const e=65*Math.min(.5,.5)/100,t=t=>{const o=(t+n/30)%12,a=.5-e*Math.max(Math.min(o-3,9-o,1),-1);return Math.round(255*a).toString(16).padStart(2,"0")};return`#${t(0)}${t(8)}${t(4)}`}(Math.abs(e)%360)}t.r(e),t.d(e,{getInitials:function(){return o},getInitialsBackgroundColor:function(){return s},getInitialsFromFullName:function(){return a},getInitialsWithFallback:function(){return i}}),e.default={getInitials:o,getInitialsFromFullName:a,getInitialsWithFallback:i,getInitialsBackgroundColor:s}},861:function(n,e,t){t.d(e,{D:function(){return a}});var o=t(640);class a extends o.aR{static get layoutId(){return"layout-13"}static get defaultColors(){return{background_color:"#171717",button_color:"#6A76D6",icon_color:"#FFFFFF",user_info_color:"#FFFFFF",secondary_color:"#52F9FF",gradient_start:"#52F9FF",gradient_mid:"#6A76D6",gradient_end:"#D949A4"}}connectedCallback(){this.loadFontAwesome(),this.loadGoogleFonts(),super.connectedCallback()}loadFontAwesome(){if(document.getElementById("font-awesome-cdn"))return;const n=document.createElement("link");n.id="font-awesome-cdn",n.rel="stylesheet",n.href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css",n.integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==",n.crossOrigin="anonymous",n.referrerPolicy="no-referrer",document.head.appendChild(n)}loadGoogleFonts(){if(document.getElementById("layout-13-fonts"))return;const n=document.createElement("link");n.id="layout-13-fonts",n.rel="stylesheet",n.href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600&family=Saira+Stencil+One&family=Ropa+Sans&family=Inter:wght@400&display=swap",document.head.appendChild(n)}getLayout13Styles(n={}){const{containerWidth:e="100%",containerMaxWidth:t="500px",containerHeight:o="100%",containerMinHeight:a="auto",containerMargin:i="0 auto",clicksDisabled:s=!1,heroHeight:r="280px",footerClicksDisabled:c=!1,isAnimationMode:l=!1,borderRadius:d="20px"}=n;return`\n /* Import Font Awesome into Shadow DOM */\n @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css');\n @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600&family=Saira+Stencil+One&family=Ropa+Sans&family=Inter:wght@400&display=swap');\n \n * {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n }\n\n ${l?"":"\n :host {\n all: initial;\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n text-align: left;\n font-family: 'Montserrat', system-ui, -apple-system, sans-serif;\n font-size: 16px;\n line-height: 1.5;\n color: #FFFFFF;\n box-sizing: border-box;\n }\n "}\n\n .uqc-card-container {\n width: ${e};\n max-width: ${t};\n height: ${o};\n min-height: ${a};\n max-height: 100%;\n margin: ${i};\n background: var(--card-bg, #171717);\n border-radius: 0;\n position: relative;\n overflow: hidden;\n ${s?"pointer-events: none; user-select: none;":""}\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n text-align: left;\n }\n\n /* Main scrollable area */\n .uqc-scrollable-area {\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n }\n\n /* Scrollbar styling */\n .uqc-scrollable-area::-webkit-scrollbar {\n width: 6px;\n }\n .uqc-scrollable-area::-webkit-scrollbar-track {\n background: transparent;\n }\n .uqc-scrollable-area::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.2);\n border-radius: 3px;\n }\n .uqc-scrollable-area::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n /* Fixed elements wrapper - take full card width */\n .uqc-fixed-btn-container {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n \n /* Lead drawer - take full card width (transform handled by LeadFormMixin) */\n .uqc-lead-drawer {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n\n /* Card content wrapper */\n .uqc-card-content-wrapper {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n }\n\n /* ===== HEADER COMPONENT (Logo Only) ===== */\n .uqc-header-section {\n padding: 24px 32px;\n display: flex;\n align-items: flex-start;\n }\n\n .uqc-header-logo-img {\n height: 30px;\n width: auto;\n object-fit: contain;\n }\n\n /* ===== HERO IMAGE SECTION ===== */\n .uqc-hero-section {\n position: relative;\n width: 100%;\n height: ${r};\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .uqc-hero-image {\n width: 100%;\n object-fit: cover;\n }\n\n /* Logo on hero (circular, top left) */\n .uqc-logo-section {\n position: absolute;\n top: 24px;\n left: 16px;\n z-index: 10;\n }\n\n .uqc-logo-circle {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background: #FFFFFF;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n }\n\n .uqc-logo-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n padding: 4px;\n }\n\n /* ===== CONTENT SECTION ===== */\n .uqc-content-section {\n padding: 16px 24px;\n flex-shrink: 0;\n }\n\n /* Personal Info */\n .uqc-personal-info {\n margin-bottom: 12px;\n }\n\n .uqc-name-line {\n display: flex;\n align-items: baseline;\n gap: 8px;\n margin-bottom: 4px;\n }\n\n .uqc-name {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--personal-info-weight, 600);\n font-size: var(--personal-info-size, 30px);\n line-height: 1.22em;\n letter-spacing: -0.024em;\n color: var(--personal-info-color, var(--text-color, #FFFFFF));\n }\n\n .uqc-pronouns {\n font-family: var(--font-family, 'Inter'), sans-serif;\n font-weight: var(--personal-info-weight, 400);\n font-size: calc(var(--personal-info-size, 30px) * 0.5);\n line-height: 1.21em;\n color: var(--personal-info-color, var(--text-color, #D9D9D9));\n opacity: 0.8;\n }\n\n .uqc-job-title {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: var(--company-details-size, 14.5px);\n line-height: 1.22em;\n color: var(--company-details-color, var(--text-color, #FFFFFF));\n margin-bottom: 4px;\n }\n\n .uqc-company {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--company-details-weight, 600);\n font-size: var(--company-details-size, 14.5px);\n line-height: 1.22em;\n color: var(--company-details-color, var(--text-color, #FFFFFF));\n margin-bottom: 4px;\n }\n\n .uqc-department {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: calc(var(--company-details-size, 14.5px) * 0.9);\n line-height: 1.22em;\n color: var(--company-details-color, var(--text-color, #FFFFFF));\n opacity: 0.8;\n margin-bottom: 12px;\n }\n\n /* ===== GRADIENT DIVIDERS ===== */\n .uqc-divider-gradient {\n width: 100%;\n height: 1px;\n background: linear-gradient(109deg, rgba(82, 249, 255, 1) 0%, rgba(106, 118, 214, 1) 55%, rgba(217, 73, 164, 1) 100%);\n margin: 12px 0;\n }\n\n /* Bio Section */\n .uqc-bio-section {\n margin-bottom: 24px;\n }\n\n .uqc-bio-text {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--bio-weight, 400);\n font-size: var(--bio-size, 14.5px);\n line-height: 1.22em;\n color: var(--bio-color, var(--text-color, #FFFFFF));\n max-width: 265px;\n }\n\n /* Contact Info */\n .uqc-contact-info {\n margin-bottom: 24px;\n }\n\n .uqc-contact-item {\n margin-bottom: 8px;\n cursor: pointer;\n transition: opacity 0.2s;\n }\n\n .uqc-contact-item:hover {\n opacity: 0.8;\n }\n\n .uqc-contact-label {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-size: 12px;\n color: var(--contact-details-color, var(--text-color, #FFFFFF));\n opacity: 0.7;\n margin-bottom: 4px;\n }\n\n .uqc-contact-value {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--contact-details-weight, 400);\n font-size: var(--contact-details-size, 14.5px);\n line-height: 1.22em;\n color: var(--contact-details-color, var(--text-color, #FFFFFF));\n }\n\n /* Social Links */\n .uqc-social-section {\n margin-bottom: 32px;\n }\n\n .uqc-social-links {\n display: flex;\n flex-wrap: wrap;\n gap: 15px;\n align-items: center;\n }\n\n .uqc-social-icon {\n width: 20px;\n height: 20px;\n cursor: pointer;\n transition: opacity 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .uqc-social-icon:hover {\n opacity: 0.7;\n }\n\n .uqc-social-icon i {\n font-size: 20px;\n color: var(--icon-color, #FFFFFF);\n }\n\n /* ===== WAVE DECORATION (SVG Stripes) ===== */\n .uqc-wave-decoration {\n width: 100%;\n flex: 1 1 auto;\n min-height: 40px;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n }\n\n .uqc-wave-svg {\n width: 100%;\n height: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n }\n\n /* Stripe colors - applied via CSS variables */\n .uqc-stripe-svg {\n width: 100%;\n flex: 1;\n min-height: 50px;\n }\n\n /* ===== BUTTON SECTION ===== */\n .uqc-fixed-btn-container {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n\n .uqc-fixed-button-section {\n width: 100%;\n max-width: 500px;\n z-index: 1000;\n pointer-events: none;\n box-sizing: border-box;\n }\n\n .uqc-fixed-button-section.uqc-fixed-position {\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .uqc-fixed-button-section.uqc-flex-position {\n position: relative;\n flex: 0 0 auto;\n }\n\n .uqc-button-container {\n width: 100%;\n padding: 12px 16px 8px 16px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: ${c?"none":"auto"};\n }\n\n /* Button Styles - Purple gradient for Layout 13 */\n .uqc-btn, .uqc-btn-exchange {\n background: var(--button-color, #6A76D6);\n color: var(--button-text-color-final, var(--button-text-color, #FFFFFF));\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: var(--button-size, 18px);\n font-weight: var(--button-weight, 500);\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n pointer-events: auto;\n text-decoration: none;\n }\n\n .uqc-btn-connect-container {\n display: none;\n flex-direction: row;\n gap: 8px;\n width: 90%;\n }\n\n .uqc-btn-connect {\n flex: 1;\n width: auto;\n min-width: 0;\n padding: 12px 16px;\n }\n\n .uqc-footer-with-exchange {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n margin-top: 8px;\n }\n\n .uqc-hidden {\n display: none !important;\n }\n\n /* Responsive */\n @media only screen and (max-width: 500px) {\n .uqc-card-container {\n max-width: 100%;\n }\n }\n `}getTemplate(){const n=this._config?.layoutConfig||{},{width:e="100%",maxWidth:t="500px",height:o="100%",minHeight:a="auto",centered:i=!0,fullWidth:s=!1,clicksDisabled:r=!1,heroHeight:c="280px",footerClicksDisabled:l=!1,borderRadius:d="20px"}=n,u=s?"100%":e,h=s?"none":t,g=o,p=a,f=i?"0 auto":"0";return`\n <style>${this.getLayout13Styles({containerWidth:u,containerMaxWidth:h,containerHeight:g,containerMinHeight:p,containerMargin:f,clicksDisabled:r,heroHeight:c,footerClicksDisabled:l,borderRadius:d,isAnimationMode:!1})}</style>\n \n <div class="uqc-card-container">\n \x3c!-- Language Dropdown --\x3e\n ${this.getLanguageDropdownTemplate()}\n \n \x3c!-- Scrollable Area --\x3e\n <div class="uqc-scrollable-area">\n \x3c!-- Card content wrapper --\x3e\n <div class="uqc-card-content-wrapper">\n \n \x3c!-- Header Component (Logo Only) --\x3e\n <div class="uqc-header-section uqc-hidden">\n <img class="uqc-header-logo-img uqc-hidden" alt="Logo" />\n </div>\n \n \x3c!-- Hero Image Section --\x3e\n <div class="uqc-hero-section uqc-hidden">\n <img class="uqc-hero-image uqc-hidden" alt="Hero" />\n \n \x3c!-- Company Logo on hero (circular) --\x3e\n <div class="uqc-logo-section uqc-hidden">\n <div class="uqc-logo-circle">\n <img class="uqc-logo-image uqc-hidden" alt="Company Logo" />\n </div>\n </div>\n </div>\n\n \x3c!-- Content Section --\x3e\n <div class="uqc-content-section">\n \x3c!-- Personal Info --\x3e\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name"></div>\n <div class="uqc-pronouns uqc-hidden"></div>\n </div>\n <div class="uqc-job-title uqc-hidden"></div>\n <div class="uqc-company uqc-hidden"></div>\n <div class="uqc-department uqc-hidden"></div>\n </div>\n\n \x3c!-- Gradient Divider --\x3e\n <div class="uqc-divider-gradient"></div>\n\n \x3c!-- Bio --\x3e\n <div class="uqc-bio-section uqc-hidden">\n <div class="uqc-bio-text"></div>\n </div>\n\n \x3c!-- Gradient Divider --\x3e\n <div class="uqc-divider-gradient uqc-divider-bottom"></div>\n\n \x3c!-- Contact Info --\x3e\n <div class="uqc-contact-info"></div>\n\n \x3c!-- Social Links --\x3e\n <div class="uqc-social-section">\n <div class="uqc-social-links"></div>\n </div>\n </div>\n </div>\n\n \x3c!-- Wave Decoration (SVG stripes with gradient) --\x3e\n <div class="uqc-wave-decoration">\n ${this.getWaveDecorationSVG()}\n </div>\n </div>\n \n \x3c!-- Fixed Button Section --\x3e\n <div class="uqc-fixed-button-section">\n <div class="uqc-button-container">\n ${this.getButtonsHTML()}\n </div>\n </div>\n </div>\n \n \x3c!-- Lead Collection Form --\x3e\n ${!1!==this._config?.leadCollection?this.getLeadFormTemplate():""}\n \n \x3c!-- Card Exchange Animation --\x3e\n ${!1!==this._config?.enableAnimation?this.getAnimationFrameTemplate():""}\n \n \x3c!-- Success Drawer --\x3e\n ${!1!==this._config?.enableSuccessDrawer?this.getSuccessDrawerTemplate():""}\n `}getHeaderIconSVG(){return'\n <svg width="12" height="16" viewBox="0 0 12 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect width="11.54" height="3.56" fill="currentColor"/>\n <rect y="12.44" width="11.54" height="3.56" fill="currentColor"/>\n <rect y="6.15" width="10.45" height="3.56" fill="currentColor"/>\n </svg>\n '}getWaveDecorationSVG(){return'\n <svg class="uqc-wave-svg" viewBox="0 0 400 300" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg">\n <defs>\n <linearGradient id="waveGradient" x1="0%" y1="0%" x2="100%" y2="0%">\n <stop offset="0%" style="stop-color:var(--gradient-start, #52F9FF)"/>\n <stop offset="55%" style="stop-color:var(--gradient-mid, #6A76D6)"/>\n <stop offset="100%" style="stop-color:var(--gradient-end, #D949A4)"/>\n </linearGradient>\n </defs>\n \n \x3c!-- Wave pattern --\x3e\n <path d="M0,150 Q100,100 200,150 T400,150 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="0.3"/>\n <path d="M0,180 Q100,130 200,180 T400,180 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="0.5"/>\n <path d="M0,210 Q100,160 200,210 T400,210 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="0.7"/>\n <path d="M0,240 Q100,190 200,240 T400,240 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="1"/>\n </svg>\n '}getButtonsHTML(){const n=this._cardData||{};return this._config,`\n <a class="uqc-btn" id="uqc-btn-add-to-contact" href="${n.autodownload_url||"#"}" data-add-to-contact style="text-decoration: none;">\n <i class="fas fa-user-plus" style="font-size: 20px;"></i>\n Add to Contacts\n </a>\n \n <button class="uqc-btn-exchange" id="uqc-btn-exchange" data-exchange-contacts>\n <i class="fas fa-exchange-alt" style="font-size: 20px;"></i>\n Exchange Contacts\n </button>\n \n <div class="uqc-btn-connect-container" id="uqc-btn-connect-container">\n <button class="uqc-btn uqc-btn-connect" data-connect>\n <i class="fas fa-link" style="font-size: 20px;"></i>\n Connect\n </button>\n <button class="uqc-btn uqc-btn-connect" data-create-card data-card-slug="${n.slug||"slug"}">\n <i class="fas fa-plus-circle" style="font-size: 20px;"></i>\n Create Now\n </button>\n </div>\n `}applyCustomColors(){super.applyCustomColors();const n=a.defaultColors,e=this._shadowRoot?.querySelector(".uqc-card-container");e&&(e.style.setProperty("--gradient-start",n.gradient_start),e.style.setProperty("--gradient-mid",n.gradient_mid),e.style.setProperty("--gradient-end",n.gradient_end))}render(){this._cardData&&(this.applyCustomColors(),this.applyButtonPosition(),this.renderHeader(),this.renderLanguageDropdown(),this.renderHeroImage(),this.renderLogo(),this.renderPersonalInfo(),this.renderBio(),this.renderContactInfo(),this.renderSocialLinks(),this.updateStickyButtons(),this.updateLeadFormFields(),this._listenersAttached||(this.attachEventListeners(),this.attachStickyButtonFooterListeners(),!1!==this._config?.leadCollection&&this.attachLeadFormListeners(),!1!==this._config?.enableSuccessDrawer&&this.attachSuccessDrawerListeners(),this._listenersAttached=!0))}renderHeader(){const n=this.getImages(),e=this._shadowRoot?.querySelector(".uqc-header-section"),t=this._shadowRoot?.querySelector(".uqc-header-logo-img");if(n.logo&&t){t.src=n.logo;const o=n.logoSize||30;t.style.height=`${o}px`,t.classList.remove("uqc-hidden"),e?.classList.remove("uqc-hidden")}else e?.classList.add("uqc-hidden")}renderHeroImage(){const n=this.getImages(),e=this._shadowRoot?.querySelector(".uqc-hero-image"),t=this._shadowRoot?.querySelector(".uqc-hero-section"),o=!!n.profile,a=this._config?.platform||"web",i=this._config?.layoutConfig||{};let s;s=!o||"server"!==a&&"mobile"!==a?i.heroHeight||"280px":"45vh",o?(e.src=n.profile,e.classList.remove("uqc-hidden"),t.classList.remove("uqc-hidden"),t.style.height=s):(e.classList.add("uqc-hidden"),t.classList.add("uqc-hidden"))}renderLogo(){const n=this._shadowRoot?.querySelector(".uqc-logo-section");n&&n.classList.add("uqc-hidden")}renderPersonalInfo(){const n=this.getPersonalInfo(),e=this._shadowRoot?.querySelector(".uqc-name");e&&(e.textContent=n.fullName);const t=this._shadowRoot?.querySelector(".uqc-pronouns");n.pronouns?(t.textContent=`(${n.pronouns})`,t.classList.remove("uqc-hidden")):t?.classList.add("uqc-hidden");const o=this._shadowRoot?.querySelector(".uqc-job-title");n.designation?(o.textContent=n.designation,o.classList.remove("uqc-hidden")):o?.classList.add("uqc-hidden");const a=this._shadowRoot?.querySelector(".uqc-company");n.company?(a.textContent=n.company,a.classList.remove("uqc-hidden")):a?.classList.add("uqc-hidden");const i=this._shadowRoot?.querySelector(".uqc-department");n.department?(i.textContent=n.department,i.classList.remove("uqc-hidden")):i?.classList.add("uqc-hidden")}renderBio(){const n=this.getPersonalInfo(),e=this._shadowRoot?.querySelector(".uqc-bio-section"),t=this._shadowRoot?.querySelector(".uqc-bio-text"),o=this._shadowRoot?.querySelector(".uqc-divider-bottom");n.summary?(t.textContent=n.summary,e.classList.remove("uqc-hidden"),o?.classList.remove("uqc-hidden")):(e?.classList.add("uqc-hidden"),o?.classList.add("uqc-hidden"))}renderContactInfo(){const n=this.getContactInfo(),e=this._shadowRoot?.querySelector(".uqc-contact-info");if(!e)return;e.innerHTML="";const t=(n,t)=>{t&&Array.isArray(t)&&0!==t.length&&t.forEach(t=>{if(t&&t.value){const o=this.createContactItem(n,t.value,t.label);e.appendChild(o)}})};Array.isArray(n)&&n.forEach(({type:n,items:o})=>{const a=n.replace("_v2","");if("address_v2"===n&&"string"==typeof o){const n=this.createContactItem("address",o,"Address");e.appendChild(n)}else t("custom_fields"===n?"custom":a,o)})}createContactItem(n,e,t){const o=document.createElement("div");return o.className="uqc-contact-item",o.innerHTML=t?`\n <div class="uqc-contact-label">${t}</div>\n <div class="uqc-contact-value">${e}</div>\n `:`<div class="uqc-contact-value">${e}</div>`,o.addEventListener("click",()=>{this.handleContactClick(n,e)}),o}renderSocialLinks(){const n=this.getSocialLinks(),e=this._shadowRoot?.querySelector(".uqc-social-links");e&&(e.innerHTML="",n.forEach(({platform:n,url:t})=>{const o=document.createElement("div");o.className="uqc-social-icon",o.innerHTML=this.getSocialIcon(n),o.addEventListener("click",()=>{this.handleSocialClick(n,t)}),e.appendChild(o)}))}getSocialIcon(n){const e={yelp:"fab fa-yelp",vimeo:"fab fa-vimeo",github:"fab fa-github",paypal:"fab fa-paypal",tiktok:"fab fa-tiktok",twitch:"fab fa-twitch",behance:"fab fa-behance",discord:"fab fa-discord",shopify:"fab fa-shopify",youtube:"fab fa-youtube",dribbble:"fab fa-dribbble",facebook:"fab fa-facebook",linkedin:"fab fa-linkedin",snapchat:"fab fa-snapchat",telegram:"fab fa-telegram",whatsapp:"fab fa-whatsapp",instagram:"fab fa-instagram",pinterest:"fab fa-pinterest",twitter:"fab fa-x-twitter"};return e[n]?`<i class="${e[n]}"></i>`:'<i class="fas fa-globe"></i>'}applyButtonPosition(){const n=this._shadowRoot?.querySelector(".uqc-fixed-button-section");if(!n)return;const e=this._config?.platform||"web",t="server"===e||"mobile"===e;n.classList.remove("uqc-fixed-position","uqc-flex-position"),t?n.classList.add("uqc-fixed-position"):n.classList.add("uqc-flex-position")}attachEventListeners(){this.attachLanguageDropdownListeners()}getCardPreviewHTML(n,e={}){const{isAnimationMode:t=!0,hideEmptySections:o=!0}=e,i=`${n.first_name||""} ${n.last_name||""}`.trim(),s=n.pronouns_v2||"",r=n.designation||"",c=n.company||"",l=n.department||"",d=n.summary||"",u=n.user_image_url||"",h=n.logo_url||"",g=n.logo_size||50,p=(n.header_title||n.company,n.header_subtitle||n.department,n.customizations||this._cardData?.customizations||{}),f=a.defaultColors,m=p.background?.value||p.background_color||f.background_color,v=p.user_info_color||f.user_info_color,b=p.button_color||f.button_color,y=p.icon_color||f.icon_color,x=n.phone_v2?.[0]?.value||"",w=n.email_v2?.[0]?.value||"",q=n.address_v2||"",C=n.social_links||{},_=Object.values(C).some(n=>n&&n.trim()),k=`\n --card-bg: ${m};\n --text-color: ${v};\n --button-color: ${b};\n --icon-color: ${y};\n --gradient-start: ${f.gradient_start};\n --gradient-mid: ${f.gradient_mid};\n --gradient-end: ${f.gradient_end};\n `,S=this.getLayout13Styles({containerWidth:"100%",containerMaxWidth:"500px",containerHeight:"100%",containerMinHeight:"auto",containerMargin:"0 auto",clicksDisabled:!0,heroHeight:u?"200px":"0",footerClicksDisabled:!0,borderRadius:"20px",isAnimationMode:!0}),L=h?`\n <div class="uqc-header-section">\n <img class="uqc-header-logo-img" src="${h}" alt="Logo" style="height: ${g}px;" />\n </div>\n `:"",F=u?`\n <div class="uqc-hero-section" style="height: 200px;">\n <img class="uqc-hero-image" src="${u}" alt="Profile" />\n </div>\n `:"",E=s?`<div class="uqc-pronouns">(${s})</div>`:"",M=r?`<div class="uqc-job-title">${r}</div>`:"",$=c?`<div class="uqc-company">${c}</div>`:"",A=l?`<div class="uqc-department">${l}</div>`:"",D=d?`\n <div class="uqc-divider-gradient"></div>\n <div class="uqc-bio-section">\n <div class="uqc-bio-text">${d}</div>\n </div>\n <div class="uqc-divider-gradient"></div>\n `:"";let T="";x&&(T+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label">Phone</div>\n <div class="uqc-contact-value">${x}</div>\n </div>\n `),w&&(T+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label">Email</div>\n <div class="uqc-contact-value">${w}</div>\n </div>\n `),q&&(T+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label">Address</div>\n <div class="uqc-contact-value">${q}</div>\n </div>\n `);const z=T?`\n <div class="uqc-contact-info">${T}</div>\n `:"";let I="";return _&&["facebook","instagram","twitter","linkedin","tiktok","snapchat","whatsapp","telegram","youtube","github"].forEach(n=>{C[n]&&(I+=`<div class="uqc-social-icon"><i class="fab fa-${n}" style="color: ${y};"></i></div>`)}),`\n <style>${S}</style>\n <div class="uqc-card-container" style="${k}">\n <div class="uqc-scrollable-area">\n <div class="uqc-card-content-wrapper">\n ${L}\n ${F}\n <div class="uqc-content-section">\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name">${i||"Name"}</div>\n ${E}\n </div>\n ${M}\n ${$}\n ${A}\n </div>\n <div class="uqc-divider-gradient"></div>\n ${D}\n ${z}\n ${I?`\n <div class="uqc-social-section">\n <div class="uqc-social-links">${I}</div>\n </div>\n `:""}\n </div>\n </div>\n \n <div class="uqc-wave-decoration">\n ${this.getWaveDecorationSVG()}\n </div>\n \n </div>\n </div>\n `}}customElements.define("uniqode-layout-13",a)}},e={};function t(o){var a=e[o];if(void 0!==a)return a.exports;var i=e[o]={exports:{}};return n[o](i,i.exports,t),i.exports}t.d=function(n,e){for(var o in e)t.o(e,o)&&!t.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:e[o]})},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var o={};t.d(o,{DN:function(){return i.D},Dp:function(){return c},Hr:function(){return m},IM:function(){return p},Kp:function(){return a.K},TZ:function(){return r},Uv:function(){return f},aR:function(){return s.aR},hq:function(){return d},iu:function(){return v},ne:function(){return l},o1:function(){return h},w5:function(){return g},wE:function(){return b},zX:function(){return u}});var a=t(583),i=t(861),s=t(640),r=t(59),c=t(750),l=t(688);const d={name:"Uniqode Card Templates",version:"1.0.2",description:"Universal card layout components for web applications",author:"Uniqode Team",license:"MIT"},{hexToRGBA:u,isValidColor:h,getContrastColor:g}=r,{getInitials:p,getInitialsWithFallback:f}=c,{validateCardData:m,sanitizeCardData:v,getDefaultCardData:b}=l;"undefined"!=typeof window&&!1!==window.UNIQODE_AUTO_REGISTER&&(console.log(`🎉 ${d.name} v${d.version} loaded`),console.log("📦 Available components:",["uniqode-layout-12","uniqode-layout-13"])),"undefined"!=typeof window&&(window.UniqodeCardTemplates={...d,components:{BaseCard:s.aR,CardLayout12:a.K,CardLayout13:i.D},utils:{ColorUtils:r,InitialsUtils:c,ValidationUtils:l}}),o.Ay={...d,components:{BaseCard:s.aR,CardLayout12:a.K,CardLayout13:i.D},utils:{ColorUtils:r,InitialsUtils:c,ValidationUtils:l}};var y=o.aR,x=o.Kp,w=o.DN,q=o.TZ,C=o.Dp,_=o.hq,k=o.ne,S=o.Ay,L=o.w5,F=o.wE,E=o.IM,M=o.Uv,$=o.zX,A=o.o1,D=o.iu,T=o.Hr;export{y as BaseCard,x as CardLayout12,w as CardLayout13,q as ColorUtils,C as InitialsUtils,_ as LIBRARY_INFO,k as ValidationUtils,S as default,L as getContrastColor,F as getDefaultCardData,E as getInitials,M as getInitialsWithFallback,$ as hexToRGBA,A as isValidColor,D as sanitizeCardData,T as validateCardData};
1
+ var n={59:function(n,e,t){function o(n){return!(!n||"string"!=typeof n)&&/^#([A-Fa-f0-9]{3}){1,2}$/.test(n)}function a(n,e=.2){return n&&"string"==typeof n?o(n=n.trim())?(3===(n=n.replace("#","")).length&&(n=n.split("").map(n=>n+n).join("")),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${e=Math.max(0,Math.min(1,e))})`):n:"rgba(0, 0, 0, 0)"}function i(n){return o(n)?(3===(n=n.replace("#","")).length&&(n=n.split("").map(n=>n+n).join("")),{r:parseInt(n.substring(0,2),16),g:parseInt(n.substring(2,4),16),b:parseInt(n.substring(4,6),16)}):{r:0,g:0,b:0}}function s(n){const{r:e,g:t,b:o}=i(n);return(.299*e+.587*t+.114*o)/255>.5?"#000000":"#ffffff"}function r(n,e){if(!o(n))return n;const{r:t,g:a,b:s}=i(n),r=n=>{const t=n+e;return Math.max(0,Math.min(255,t))};return`#${r(t).toString(16).padStart(2,"0")}${r(a).toString(16).padStart(2,"0")}${r(s).toString(16).padStart(2,"0")}`}t.r(e),t.d(e,{adjustBrightness:function(){return r},getContrastColor:function(){return s},hexToRGB:function(){return i},hexToRGBA:function(){return a},isHexColorCode:function(){return o}}),e.default={isHexColorCode:o,hexToRGBA:a,hexToRGB:i,getContrastColor:s,adjustBrightness:r}},583:function(n,e,t){t.d(e,{K:function(){return a}});var o=t(951);class a extends o.aR{static get layoutId(){return"layout-12"}getLayout12Styles(n={}){const{containerWidth:e="100%",containerMaxWidth:t="500px",containerHeight:o="100%",containerMinHeight:a="auto",containerMargin:i="0 auto",clicksDisabled:s=!1,heroHeight:r="280px",footerClicksDisabled:c=!1,isAnimationMode:l=!1}=n;return`\n /* Import Font Awesome 5.15.4 into Shadow DOM (matches Angular, passes CSP) */\n @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css');\n \n * {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n }\n\n ${l?"":"\n :host {\n /* CRITICAL: Reset ALL inherited CSS properties from parent/consumer */\n /* This prevents external styles (like text-align: center) from leaking in */\n all: initial;\n \n /* Now explicitly set the styles we need */\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden; /* Prevent parent scrolling */\n position: relative; /* For absolute positioning of footer/form */\n \n /* Reset text properties to ensure consistent rendering */\n text-align: left;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 16px;\n line-height: 1.5;\n color: #000000;\n \n /* Ensure box model is correct */\n box-sizing: border-box;\n }\n "}\n\n .uqc-card-container {\n width: ${e};\n max-width: ${t};\n height: ${o};\n min-height: ${a};\n max-height: 100%; /* Don't exceed host height */\n margin: ${i};\n background: var(--card-bg, #F0EFED);\n position: relative;\n overflow: hidden; /* Container doesn't scroll */\n ${s?"pointer-events: none; user-select: none;":""}\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n \n /* Ensure text alignment is not inherited from consumer */\n text-align: left;\n }\n \n /* Main scrollable area - contains content + stripes, scrolls when needed */\n .uqc-scrollable-area {\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n }\n \n /* Fixed elements wrapper - take full card width */\n .uqc-fixed-btn-container {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n \n /* Lead drawer - take full card width (transform handled by LeadFormMixin) */\n .uqc-lead-drawer {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n\n /* Scrollbar styling for better UX */\n .uqc-scrollable-area::-webkit-scrollbar {\n width: 6px;\n }\n\n .uqc-scrollable-area::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .uqc-scrollable-area::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n }\n\n .uqc-scrollable-area::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n\n /* Responsive behavior */\n @media only screen and (max-width: 500px) {\n .uqc-card-container {\n max-width: 100%;\n }\n }\n\n /* Card content wrapper - takes only the space it needs, doesn't scroll */\n .uqc-card-content-wrapper {\n flex: 0 0 auto; /* Don't grow, don't shrink - take content size */\n display: flex;\n flex-direction: column;\n }\n\n /* Hero Image Section - configurable height */\n .uqc-hero-section {\n position: relative;\n width: 100%;\n height: ${r};\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .uqc-hero-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n /* Logo Section - Positioned on hero image (top left) */\n .uqc-logo-section {\n position: absolute;\n top: 24px;\n left: 16px;\n z-index: 10;\n }\n\n .uqc-logo-circle {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background: #FFFFFF;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n }\n\n .uqc-logo-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n padding: 4px;\n text-transform: uppercase;\n color: #EAEAEA;\n }\n\n /* Content Section - takes only needed space */\n .uqc-content-section {\n padding: 16px;\n flex-shrink: 0;\n }\n\n /* Personal Info Section */\n .uqc-personal-info {\n margin-bottom: 12px;\n }\n\n .uqc-name-line {\n display: flex;\n align-items: baseline;\n gap: 8px;\n margin-bottom: 4px;\n }\n\n .uqc-name {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--personal-info-weight, 700);\n font-size: var(--personal-info-size, 26px);\n line-height: 1.1em;\n letter-spacing: -0.03em;\n text-transform: uppercase;\n color: var(--personal-info-color, var(--user-info-color, #203D99));\n }\n\n .uqc-pronouns {\n font-family: var(--font-family, 'Inter'), sans-serif;\n font-weight: var(--personal-info-weight, 400);\n font-size: calc(var(--personal-info-size, 26px) * 0.5);\n line-height: 1.21em;\n color: var(--personal-info-color, var(--user-info-color, #203D99));\n opacity: 0.8;\n }\n\n .uqc-job-title {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: var(--company-details-size, 14.4px);\n line-height: 1.37em;\n color: var(--company-details-color, var(--user-info-color, #203D99));\n margin-bottom: 4px;\n }\n\n .uqc-company {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--company-details-weight, 600);\n font-size: var(--company-details-size, 14.4px);\n line-height: 1.37em;\n color: var(--company-details-color, var(--user-info-color, #203D99));\n margin-bottom: 4px;\n }\n\n .uqc-department {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: calc(var(--company-details-size, 14.4px) * 0.9);\n line-height: 1.37em;\n color: var(--company-details-color, var(--user-info-color, #203D99));\n opacity: 0.8;\n margin-bottom: 12px;\n }\n\n /* Dividers - color is darker version of card background */\n .uqc-divider-top {\n width: 100%;\n height: 1px;\n background: var(--divider-color, #E0E0E0);\n margin-bottom: 12px;\n }\n\n .uqc-divider-bottom {\n width: 100%;\n height: 1px;\n background: var(--divider-color, #E0E0E0);\n margin: 24px 0 16px 0;\n }\n\n /* Bio Section */\n .uqc-bio-section {\n margin-bottom: 24px;\n }\n\n .uqc-bio-text {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--bio-weight, 400);\n font-size: var(--bio-size, 14.4px);\n line-height: 1.37em;\n color: var(--bio-color, var(--user-info-color, #203D99));\n max-width: 249px;\n }\n\n /* Contact Info Section */\n .uqc-contact-info {\n margin-bottom: 24px;\n }\n\n .uqc-contact-item {\n margin-bottom: 8px;\n cursor: pointer;\n transition: opacity 0.2s;\n }\n\n .contact-item:hover {\n opacity: 0.8;\n }\n\n .contact-item:last-child {\n margin-bottom: 0;\n }\n\n .uqc-contact-value {\n font-family: var(--font-family, 'Avenir Next'), sans-serif;\n font-weight: var(--contact-details-weight, 400);\n font-size: var(--contact-details-size, 14.4px);\n line-height: 1.37em;\n color: var(--contact-details-color, var(--user-info-color, #203D99));\n }\n\n /* Social Links Section */\n .uqc-social-section {\n margin-bottom: 32px;\n }\n\n .uqc-social-links {\n display: flex;\n flex-wrap: wrap; /* ✅ Wrap to multiple rows when needed */\n gap: 15px;\n align-items: center;\n }\n\n .uqc-social-icon {\n width: 20px;\n height: 20px;\n cursor: pointer;\n transition: opacity 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .social-icon:hover {\n opacity: 0.7;\n }\n\n .social-icon svg {\n width: 100%;\n height: 100%;\n fill: var(--icon-color, #000000);\n }\n\n .social-icon i {\n font-size: 20px;\n }\n\n /* Color Stripes - Fills remaining space between content and footer */\n .uqc-color-stripes {\n width: 100%;\n display: flex;\n flex-direction: column;\n flex: 1 1 auto; /* Grow to fill remaining space in scrollable area */\n min-height: 40px; /* Minimum 4 stripes × 10px */\n }\n\n .uqc-stripe {\n width: 100%;\n flex: 1; /* Each stripe grows equally to share available space */\n min-height: 10px; /* Minimum height per stripe */\n }\n\n /* Button Section - Fixed at bottom of viewport on server, part of flex on dashboard */\n .uqc-fixed-button-section {\n width: 100%;\n max-width: 500px;\n z-index: 1000;\n pointer-events: none; /* Allow scroll events to pass through */\n box-sizing: border-box;\n }\n \n /* Server/Mobile: Fixed at bottom of viewport */\n .uqc-fixed-button-section.uqc-fixed-position {\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n \n /* Dashboard preview: Part of flex flow (not fixed) */\n .uqc-fixed-button-section.uqc-flex-position {\n position: relative;\n flex: 0 0 auto;\n }\n\n /* Color palette generated from primary color (background_color) */\n .uqc-stripe-1 { background: var(--stripe-color-1); }\n .uqc-stripe-2 { background: var(--stripe-color-2); }\n .uqc-stripe-3 { background: var(--stripe-color-3); }\n .uqc-stripe-4 { background: var(--stripe-color-4); }\n\n /* Button Container - Inside fixed bottom section */\n .uqc-button-container {\n width: 100%;\n padding: 12px 16px 8px 16px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: ${c?"none":"auto"}; /* Disabled in preview mode */\n /* Background color applied dynamically via updateStickyButtons() */\n }\n\n /* Button Styles */\n .uqc-btn, .uqc-btn-exchange {\n background-color: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: var(--button-size, 18px);\n font-weight: var(--button-weight, 400);\n font-family: var(--font-family, 'Inter'), sans-serif;\n pointer-events: auto;\n }\n\n .uqc-btn-connect-container {\n display: none;\n flex-direction: row;\n gap: 8px;\n width: 90%;\n }\n\n .uqc-btn-connect {\n flex: 1;\n width: auto;\n min-width: 0;\n padding: 12px 16px;\n }\n\n /* Footer */\n .uqc-footer-with-exchange {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n margin-top: 8px;\n }\n\n .uqc-created-with-text {\n font-family: 'Inter', sans-serif;\n font-size: 12px;\n color: #6B7280;\n margin: 0;\n }\n\n .uqc-uniqode-logo {\n height: 16px;\n width: auto;\n }\n\n .uqc-hidden {\n display: none !important;\n }\n `}getTemplate(){const n=this._config?.layoutConfig||{},{width:e="100%",maxWidth:t="500px",height:o="100%",minHeight:a="auto",centered:i=!0,fullWidth:s=!1,padding:r="0",clicksDisabled:c=!1,heroHeight:l="280px",footerClicksDisabled:d=!1}=n,u=s?"100%":e,h=s?"none":t,p=o,g=a,f=i?"0 auto":"0";return`\n <style>\n ${this.getLayout12Styles({containerWidth:u,containerMaxWidth:h,containerHeight:p,containerMinHeight:g,containerMargin:f,clicksDisabled:c,heroHeight:l,footerClicksDisabled:d,isAnimationMode:!1})}\n </style>\n \n <div class="uqc-card-container">\n \x3c!-- Language Dropdown (inside card at top right) --\x3e\n ${this.getLanguageDropdownTemplate()}\n \n \x3c!-- Scrollable Area - Contains content + stripes, scrolls when needed --\x3e\n <div class="uqc-scrollable-area">\n \x3c!-- Card content wrapper (hero + content) --\x3e\n <div class="uqc-card-content-wrapper">\n \x3c!-- Hero Image Section (logo positioned inside) --\x3e\n <div class="uqc-hero-section uqc-hidden">\n <img class="uqc-hero-image uqc-hidden" alt="Hero" />\n \n \x3c!-- Company Logo on top of hero (top left circle) --\x3e\n <div class="uqc-logo-section uqc-hidden">\n <div class="uqc-logo-circle">\n <img class="uqc-logo-image uqc-hidden" alt="Company Logo" />\n </div>\n </div>\n </div>\n\n \x3c!-- Content Section --\x3e\n <div class="uqc-content-section">\n \x3c!-- Personal Info --\x3e\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name"></div>\n <div class="uqc-pronouns uqc-hidden"></div>\n </div>\n <div class="uqc-job-title uqc-hidden"></div>\n <div class="uqc-company uqc-hidden"></div>\n <div class="uqc-department uqc-hidden"></div>\n </div>\n\n \x3c!-- Divider --\x3e\n <div class="uqc-divider-top"></div>\n\n \x3c!-- Bio --\x3e\n <div class="uqc-bio-section uqc-hidden">\n <div class="uqc-bio-text"></div>\n </div>\n\n \x3c!-- Divider --\x3e\n <div class="uqc-divider-bottom"></div>\n\n \x3c!-- Contact Info --\x3e\n <div class="uqc-contact-info"></div>\n\n \x3c!-- Social Links --\x3e\n <div class="uqc-social-section">\n <div class="uqc-social-links"></div>\n </div>\n </div>\n </div>\n\n \x3c!-- Color Stripes - Fills remaining space between content and footer --\x3e\n <div class="uqc-color-stripes">\n <div class="uqc-stripe uqc-stripe-1"></div>\n <div class="uqc-stripe uqc-stripe-2"></div>\n <div class="uqc-stripe uqc-stripe-3"></div>\n <div class="uqc-stripe uqc-stripe-4"></div>\n </div>\n </div>\n \n \x3c!-- Fixed Button Section - Always at bottom of card container --\x3e\n <div class="uqc-fixed-button-section">\n <div class="uqc-button-container">\n ${this.getButtonsHTML()}\n </div>\n </div>\n \n \x3c!-- Report Content (absolute position within card, bottom-right) --\x3e\n ${this.renderReportContent()}\n </div>\n \n \x3c!-- Lead Collection Form (outside scrolling container, fixed to :host) --\x3e\n ${!1!==this._config?.leadCollection?this.getLeadFormTemplate():""}\n \n \x3c!-- Card Exchange Animation (outside card, full screen overlay) --\x3e\n ${!1!==this._config?.enableAnimation?this.getAnimationFrameTemplate():""}\n \n \x3c!-- Success Drawer (post-lead-collection feedback) --\x3e\n ${this.getSuccessDrawerTemplate()}\n `}getButtonsHTML(){const n=this._cardData||{},e=this._config||{},t=(n.lead_collection,e.showConnectButtons,n.autodownload_url||"#"),o=n.slug||"slug";return e.hideFooter,n.branding_footer,`\n <a class="uqc-btn" id="uqc-btn-add-to-contact" href="${t}" data-add-to-contact style="text-decoration: none;">\n <i class="fas fa-user-plus" style="font-size: 20px;"></i>\n Add to Contacts\n </a>\n \n <button class="uqc-btn-exchange" id="uqc-btn-exchange" data-exchange-contacts>\n <i class="fas fa-exchange-alt" style="font-size: 20px;"></i>\n Exchange Contacts\n </button>\n \n <div class="uqc-btn-connect-container" id="uqc-btn-connect-container">\n <button class="uqc-btn uqc-btn-connect" data-connect>\n <i class="fas fa-link" style="font-size: 20px;"></i>\n Connect\n </button>\n <button class="uqc-btn uqc-btn-connect" data-create-card data-card-slug="${o}">\n <i class="fas fa-plus-circle" style="font-size: 20px;"></i>\n Create Now\n </button>\n </div>\n `}getCardPreviewHTML(n,e={}){const{isAnimationMode:t=!0,hideEmptySections:o=!0}=e,a=`${n.first_name||""} ${n.last_name||""}`.trim(),i=n.pronouns_v2||"",s=n.designation||"",r=n.company||"",c=n.department||"",l=n.summary||"",d=n.user_image_url||"",u=n.logo_url||"",h=n.logo_size??50,p=n.customizations||this._cardData?.customizations||{},g=p.background_color||"#203D99",f=p.button_color||"#F1C98E",m=p.icon_color||g,v=p.background?.value||"#F0EFED",b=n.phone_v2?.[0]?.value||"",y=n.email_v2?.[0]?.value||"",w=n.address_v2||"",x=n.social_links||{},q=Object.values(x).some(n=>n&&n.trim()),C=this.generateStripeColorsFromPrimary(g),_=`\n --card-bg: ${v};\n --user-info-color: ${g};\n --personal-info-color: ${g};\n --company-details-color: ${g};\n --contact-details-color: ${g};\n --bio-color: ${g};\n --icon-color: ${m};\n --button-color: ${f};\n --divider-color: #E0E0E0;\n `,S=this.getLayout12Styles({containerWidth:"100%",containerMaxWidth:"500px",containerHeight:"100%",containerMinHeight:"auto",containerMargin:"0 auto",clicksDisabled:!0,heroHeight:d?"200px":u&&h>0?"98px":"0",footerClicksDisabled:!0,isAnimationMode:!0}),k=d||u&&h>0?`\n <div class="uqc-hero-section" style="height: ${d?"200px":"98px"};">\n ${d?`<img class="uqc-hero-image" src="${d}" alt="Profile" />`:""}\n ${u&&h>0?`\n <div class="uqc-logo-section">\n <div class="uqc-logo-circle" style="width: ${h}px; height: ${h}px;">\n <img class="uqc-logo-image" src="${u}" alt="Logo" />\n </div>\n </div>\n `:""}\n </div>\n `:"",L=i?`<div class="uqc-pronouns">(${i})</div>`:"",F=s?`<div class="uqc-job-title">${s}</div>`:"",E=r?`<div class="uqc-company">${r}</div>`:"",M=c?`<div class="uqc-department">${c}</div>`:"",D=l?`\n <div class="uqc-divider-top"></div>\n <div class="uqc-bio-section">\n <div class="uqc-bio-text">${l}</div>\n </div>\n <div class="uqc-divider-bottom"></div>\n `:"";let $="";b&&($+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label" style="font-size: 12px; color: ${g}; margin-bottom: 4px;">Phone</div>\n <div class="uqc-contact-value">${b}</div>\n </div>\n `),y&&($+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label" style="font-size: 12px; color: ${g}; margin-bottom: 4px;">Email</div>\n <div class="uqc-contact-value">${y}</div>\n </div>\n `),w&&($+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label" style="font-size: 12px; color: ${g}; margin-bottom: 4px;">Address</div>\n <div class="uqc-contact-value">${w}</div>\n </div>\n `);const A=$?`\n <div class="uqc-contact-info">${$}</div>\n `:"";let z="";return q&&["facebook","instagram","twitter","linkedin","tiktok","snapchat","whatsapp","telegram","youtube","github"].forEach(n=>{x[n]&&(z+=`<div class="uqc-social-icon">${this.getSocialIconForPreview(n,m)}</div>`)}),`\n <style>${S}</style>\n <div class="uqc-card-container" style="${_}">\n <div class="uqc-scrollable-area">\n <div class="uqc-card-content-wrapper">\n ${k}\n <div class="uqc-content-section">\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name">${a||"Name"}</div>\n ${L}\n </div>\n ${F}\n ${E}\n ${M}\n </div>\n ${D}\n ${A}\n ${z?`\n <div class="uqc-social-section">\n <div class="uqc-social-links">${z}</div>\n </div>\n `:""}\n </div>\n </div>\n \n <div class="uqc-color-stripes">\n <div class="uqc-stripe" style="background: ${C[0]};"></div>\n <div class="uqc-stripe" style="background: ${C[1]};"></div>\n <div class="uqc-stripe" style="background: ${C[2]};"></div>\n <div class="uqc-stripe" style="background: ${C[3]};"></div>\n </div>\n \n </div>\n </div>\n `}generateStripeColorsFromPrimary(n){const e=this.hexToHSL(n),t=e.l,o=Math.min(95,t+55),a=Math.min(95,t+48),i=Math.min(95,t+35),s=Math.min(95,t+15);return[`hsl(${e.h}, ${e.s}%, ${o}%)`,`hsl(${e.h}, ${e.s}%, ${a}%)`,`hsl(${e.h}, ${e.s}%, ${i}%)`,`hsl(${e.h}, ${e.s}%, ${s}%)`]}getSocialIconForPreview(n,e){return{facebook:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>`,instagram:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg>`,twitter:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>`,linkedin:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>`,youtube:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>`,github:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>`,whatsapp:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>`,telegram:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>`,tiktok:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"/></svg>`,snapchat:`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><path d="M12.206.793c.99 0 4.347.276 5.93 3.821.529 1.193.403 3.219.299 4.847l-.003.06c-.012.18-.022.345-.03.51.075.045.203.09.401.09.3-.016.659-.12 1.033-.301.165-.088.344-.104.464-.104.182 0 .359.029.509.09.45.149.734.479.734.838.015.449-.39.839-1.213 1.168-.089.029-.209.075-.344.119-.45.135-1.139.36-1.333.81-.09.224-.061.524.12.868l.015.015c.06.136 1.526 3.475 4.791 4.014.255.044.435.27.42.509 0 .075-.015.149-.045.225-.24.569-1.273.988-3.146 1.271-.059.091-.12.375-.164.57-.029.179-.074.36-.134.553-.076.271-.27.405-.555.405h-.03c-.135 0-.313-.031-.538-.074-.36-.075-.765-.135-1.273-.135-.3 0-.599.015-.913.074-.6.104-1.123.464-1.723.884-.853.599-1.826 1.288-3.294 1.288-.06 0-.119-.015-.18-.015h-.149c-1.468 0-2.427-.675-3.279-1.288-.599-.42-1.107-.779-1.707-.884-.314-.045-.629-.074-.928-.074-.54 0-.958.089-1.272.149-.211.043-.391.074-.54.074-.374 0-.523-.224-.583-.42-.061-.192-.09-.389-.135-.567-.046-.181-.105-.494-.166-.57-1.918-.222-2.95-.642-3.189-1.226-.031-.063-.052-.15-.055-.225-.015-.243.165-.465.42-.509 3.264-.54 4.73-3.879 4.791-4.02l.016-.029c.18-.345.224-.645.119-.869-.195-.434-.884-.658-1.332-.809-.121-.029-.24-.074-.346-.119-1.107-.435-1.257-.93-1.197-1.273.09-.479.674-.793 1.168-.793.146 0 .27.029.383.074.42.194.789.3 1.104.3.234 0 .384-.06.465-.105l-.046-.569c-.098-1.626-.225-3.651.307-4.837C7.392 1.077 10.739.807 11.727.807l.419-.015h.06z"/></svg>`}[n]||`<svg width="20" height="20" viewBox="0 0 24 24" fill="${e}"><circle cx="12" cy="12" r="10" stroke="${e}" stroke-width="2" fill="none"/></svg>`}render(){this._cardData&&(this.applyCustomColors(),this.applyPreviewModeStyles(),this.applyStripeColorPalette(),this.applyButtonPosition(),this.renderLanguageDropdown(),this.renderHeroImage(),this.renderLogo(),this.renderPersonalInfo(),this.renderBio(),this.renderContactInfo(),this.renderSocialLinks(),this.updateStickyButtons(),this.updateLeadFormFields(),this._cardData?.lead_collection&&this.generateTOSString(),this._listenersAttached||(this.attachEventListeners(),this.attachStickyButtonFooterListeners(),!1!==this._config?.leadCollection&&this.attachLeadFormListeners(),!1!==this._config?.enableSuccessDrawer&&this.attachSuccessDrawerListeners(),this._listenersAttached=!0))}applyStripeColorPalette(){const n=this.getColor("primary-color"),e=this._shadowRoot?.querySelector(".uqc-color-stripes");if(!e||!n)return void console.warn("[CardLayout12] Cannot apply stripe colors - missing primary color or stripes container");const t=this.hexToHSL(n).l,o=Math.min(95,t+15),a=Math.min(95,t+35),i=Math.min(95,t+48),s=[Math.min(95,t+55),i,a,o],r=this.generateColorPalette(n,s);e.querySelectorAll(".uqc-stripe").forEach((n,e)=>{r[e]&&(n.style.backgroundColor=r[e],console.log(`[CardLayout12] Stripe ${e+1}: ${r[e]} (L: ${s[e].toFixed(0)}%)`))}),console.log("[CardLayout12] Applied stripe colors from primary:",n,"(L:",t.toFixed(0)+"%)")}applyButtonPosition(){const n=this._shadowRoot?.querySelector(".uqc-fixed-button-section");if(!n)return;const e=this._config?.platform||"web",t="server"===e||"mobile"===e;n.classList.remove("uqc-fixed-position","uqc-flex-position"),t?(n.classList.add("uqc-fixed-position"),console.log("[CardLayout12] Button position: FIXED (server/mobile)")):(n.classList.add("uqc-flex-position"),console.log("[CardLayout12] Button position: FLEX (dashboard/web)"))}renderHeroImage(){const n=this.getImages(),e=this._shadowRoot.querySelector(".uqc-hero-image"),t=this._shadowRoot.querySelector(".uqc-hero-section"),o=!!n.profile,a=!!n.logo&&n.logoSize>0,i=this._config?.platform||"web",s=this._config?.layoutConfig||{};let r;if(r=!o||"server"!==i&&"mobile"!==i?s.heroHeight||"280px":"45vh",o)e.src=n.profile,e.classList.remove("uqc-hidden"),t.classList.remove("uqc-hidden"),t.style.height=r,console.log(`[CardLayout12] Hero image height: ${r} (platform: ${i})`);else if(a){e.classList.add("uqc-hidden"),t.classList.remove("uqc-hidden");const o=n.logoSize??50,a=24,i=24;t.style.height=`${a+o+i}px`}else e.classList.add("uqc-hidden"),t.classList.add("uqc-hidden")}renderLogo(){const n=this.getImages(),e=this._shadowRoot.querySelector(".uqc-logo-image"),t=this._shadowRoot.querySelector(".uqc-logo-section"),o=this._shadowRoot.querySelector(".uqc-logo-circle");if(n.logo&&n.logoSize>0){e.src=n.logo,e.classList.remove("uqc-hidden"),t.classList.remove("uqc-hidden");const a=n.logoSize??50;o&&(o.style.width=`${a}px`,o.style.height=`${a}px`)}else t.classList.add("uqc-hidden")}renderPersonalInfo(){const n=this.getPersonalInfo();console.log("%c[CardLayout12] Personal Info:","color: #10b981; font-weight: bold",n),this._shadowRoot.querySelector(".uqc-name").textContent=n.fullName;const e=this._shadowRoot.querySelector(".uqc-pronouns");n.pronouns?(e.textContent=`(${n.pronouns})`,e.classList.remove("uqc-hidden")):e.classList.add("uqc-hidden");const t=this._shadowRoot.querySelector(".uqc-job-title");n.designation?(t.textContent=n.designation,t.classList.remove("uqc-hidden")):t.classList.add("uqc-hidden");const o=this._shadowRoot.querySelector(".uqc-company");n.company?(o.textContent=n.company,o.classList.remove("uqc-hidden")):o.classList.add("uqc-hidden");const a=this._shadowRoot.querySelector(".uqc-department");n.department?(a.textContent=n.department,a.classList.remove("uqc-hidden")):a.classList.add("uqc-hidden")}renderBio(){const n=this.getPersonalInfo(),e=this._shadowRoot.querySelector(".uqc-bio-section"),t=this._shadowRoot.querySelector(".uqc-bio-text"),o=this._shadowRoot.querySelector(".uqc-divider-top"),a=this._shadowRoot.querySelector(".uqc-divider-bottom");n.summary?(t.textContent=n.summary,e.classList.remove("uqc-hidden"),o&&o.classList.remove("uqc-hidden"),a&&a.classList.remove("uqc-hidden")):(e.classList.add("uqc-hidden"),o&&o.classList.add("uqc-hidden"),a&&a.classList.add("uqc-hidden"))}renderContactInfo(){const n=this.getContactInfo(),e=this.getColor("contact-details-color");console.log("%c[CardLayout12] 📞 Contact Info:","color: #10b981; font-weight: bold",n),console.log("%c[CardLayout12] 📍 address_v2 from cardData:","color: #f59e0b;",this._cardData?.address_v2);const t=JSON.stringify({contactInfo:n,contactColor:e});if(this._lastContactKey===t)return;this._lastContactKey=t;const o=this._shadowRoot.querySelector(".uqc-contact-info");o.innerHTML="";const a=(n,e)=>{e&&Array.isArray(e)&&0!==e.length&&e.forEach(e=>{if(e&&e.value){const t=this.createContactItem(n,e.value,e.label);o.appendChild(t)}})};Array.isArray(n)?n.forEach(({type:n,items:e})=>{const t=n.replace("_v2","");if("address_v2"===n&&"string"==typeof e){const n=this.createContactItem("address",e,"Address");o.appendChild(n)}else a("custom_fields"===n?"custom":t,e)}):Object.entries(n).forEach(([n,e])=>{const t=n.replace("_v2","");if("address_v2"===n&&"string"==typeof e){const n=this.createContactItem("address",e,"Address");o.appendChild(n)}else a("custom_fields"===n?"custom":t,e)})}createContactItem(n,e,t){const o=document.createElement("div");return o.className="uqc-contact-item",o.innerHTML=t?`\n <div class="uqc-contact-label" style="font-size: 12px; color: var(--contact-details-color, var(--user-info-color, #203D99)); margin-bottom: 4px;">${t}</div>\n <div class="uqc-contact-value">${e}</div>\n `:`<div class="contact-value">${e}</div>`,o.addEventListener("click",()=>{this.handleContactClick(n,e)}),o}renderSocialLinks(){const n=this.getSocialLinks(),e=this.getColor("icon-color"),t=JSON.stringify({socialLinks:n,iconColor:e});if(this._lastSocialKey===t)return;this._lastSocialKey=t;const o=this._shadowRoot.querySelector(".uqc-social-links");o.innerHTML="",n.forEach(({platform:n,url:e})=>{const t=document.createElement("div");t.className="uqc-social-icon",t.innerHTML=this.getSocialIcon(n),t.addEventListener("click",()=>{this.handleSocialClick(n,e)}),o.appendChild(t)})}getSocialIcon(n){const e={yelp:"fab fa-yelp",vimeo:"fab fa-vimeo",github:"fab fa-github",paypal:"fab fa-paypal",tiktok:"fab fa-tiktok",twitch:"fab fa-twitch",behance:"fab fa-behance",discord:"fab fa-discord",shopify:"fab fa-shopify",youtube:"fab fa-youtube",dribbble:"fab fa-dribbble",facebook:"fab fa-facebook",linkedin:"fab fa-linkedin",snapchat:"fab fa-snapchat",telegram:"fab fa-telegram",whatsapp:"fab fa-whatsapp",instagram:"fab fa-instagram",pinterest:"fab fa-pinterest"},t=this.getColor("icon-color");return console.log("%c[CardLayout12] Icon color for","color: #f59e0b;",n,":",t,"| From customizations:",this._cardData?.customizations?.icon_color),e[n]?`<i class="${e[n]}" style="color: ${t}; font-size: 20px;"></i>`:this.getCustomColoredSocialIconSvg(n,t)}getCustomColoredSocialIconSvg(n,e){switch(n){case"twitter":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" fill="${e}"/>\n </svg>`;case"wistia":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 31 30" fill="none">\n <path d="M9.5 13V17H12.5V24H16.5V17H19.5L20.5 13H16.5V11C16.5 10.7348 16.6054 10.4804 16.7929 10.2929C16.9804 10.1054 17.2348 10 17.5 10H20.5V6H17.5C16.1739 6 14.9021 6.52678 13.9645 7.46447C13.0268 8.40215 12.5 9.67392 12.5 11V13H9.5Z" stroke="${e}" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>`;case"custom_url":default:return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 121 120" fill="none">\n <circle cx="60.1324" cy="60" r="56.4849" stroke="${e}" stroke-width="7.03025"/>\n <path d="M60.1324 115.055C75.3964 115.055 87.7703 90.4061 87.7703 60C87.7703 29.5938 75.3964 4.94482 60.1324 4.94482" stroke="${e}" stroke-width="7.03025"/>\n <path d="M60.1324 4.94482C44.8685 4.94482 32.4946 29.5938 32.4946 60C32.4946 90.4061 44.8685 115.055 60.1324 115.055" stroke="${e}" stroke-width="7.03025"/>\n <path d="M7.73383 60H112.531" stroke="${e}" stroke-width="7.03025"/>\n <path d="M13.6699 35.2739H106.595" stroke="${e}" stroke-width="7.03025"/>\n <path d="M13.6699 84.7261H106.595" stroke="${e}" stroke-width="7.03025"/>\n </svg>`;case"calendly":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M19 4h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z" fill="${e}"/>\n </svg>`;case"venmo":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M21.5 2h-19C1.67 2 1 2.67 1 3.5v17c0 .83.67 1.5 1.5 1.5h19c.83 0 1.5-.67 1.5-1.5v-17c0-.83-.67-1.5-1.5-1.5zM13.5 17h-3L8 7h3l1.5 7 2-7h3l-4 10z" fill="${e}"/>\n </svg>`;case"cashapp":return`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none">\n <path d="M21 5H3c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-5 10h-2v-2h2v2zm0-4h-2V9h2v2z" fill="${e}"/>\n </svg>`}}getInvertedColor(n){return n=n.replace("#",""),(.299*parseInt(n.substr(0,2),16)+.587*parseInt(n.substr(2,2),16)+.114*parseInt(n.substr(4,2),16))/255>.5?"#000000":"#FFFFFF"}attachEventListeners(){this.attachLanguageDropdownListeners(),this.attachReportContentListeners()}}customElements.define("uniqode-layout-12",a)},688:function(n,e,t){function o(n){const e=[];return!n||"object"!=typeof n||Array.isArray(n)?(e.push("Card data must be a valid object"),{isValid:!1,errors:e}):(n.first_name||n.last_name||n.name||e.push("At least one name field (first_name, last_name, or name) is required"),n.customizations&&"object"!=typeof n.customizations&&e.push("Customizations must be an object"),["phone_v2","email_v2","website_v2","custom_fields"].forEach(t=>{n[t]&&!Array.isArray(n[t])&&e.push(`${t} must be an array`),Array.isArray(n[t])&&n[t].forEach((n,o)=>{n&&"object"==typeof n?n.value||e.push(`${t}[${o}] must have a value property`):null!=n&&e.push(`${t}[${o}] must be an object or null`)})}),n.social_links&&"object"!=typeof n.social_links&&e.push("Social links must be an object"),n.customizations&&["background_color","icon_color","button_color"].forEach(t=>{const o=n.customizations[t];o&&!a(o)&&e.push(`Invalid color format for ${t}: ${o}`)}),["logo_url","user_image_url","address_url"].forEach(t=>{const o=n[t];o&&!i(o)&&e.push(`Invalid URL format for ${t}: ${o}`)}),Array.isArray(n.email_v2)&&n.email_v2.forEach((n,t)=>{n&&n.value&&!s(n.value)&&e.push(`Invalid email format in email_v2[${t}]: ${n.value}`)}),{isValid:0===e.length,errors:e})}function a(n){return!(!n||"string"!=typeof n)&&(!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(n)||(!!/^rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(,\s*[\d.]+)?\s*\)$/.test(n)||(!!/^hsla?\(\s*\d+\s*,\s*\d+%\s*,\s*\d+%\s*(,\s*[\d.]+)?\s*\)$/.test(n)||["black","white","red","green","blue","yellow","orange","purple","pink","brown","gray","grey","cyan","magenta","lime","navy","maroon","olive","teal","silver","aqua","fuchsia","transparent"].includes(n.toLowerCase()))))}function i(n){if(!n||"string"!=typeof n)return!1;try{return new URL(n),!0}catch{return/^(https?:\/\/|\/\/|\/|\.\/)/.test(n)||/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}/.test(n)}}function s(n){return!(!n||"string"!=typeof n)&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)}function r(n){if(!n||"string"!=typeof n)return!1;const e=n.replace(/[^\d+]/g,"").replace(/^\+/,"").length;return e>=7&&e<=15}function c(n){if(!n||"object"!=typeof n)return{};const e=JSON.parse(JSON.stringify(n)),t=n=>{if("string"==typeof n)return"string"!=typeof(e=n)?e:e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"");if(Array.isArray(n))return n.map(t);if(n&&"object"==typeof n){const e={};return Object.keys(n).forEach(o=>{e[o]=t(n[o])}),e}var e;return n};return t(e)}function l(){return{first_name:"",last_name:"",designation:"",company:"",department:"",summary:"",phone_v2:[],email_v2:[],website_v2:[],custom_fields:[],address_v2:"",social_links:{},logo_url:"",user_image_url:"",customizations:{background_color:"#ffffff",icon_color:"#333333",button_color:"#007bff",font_style:"Work Sans"},contact_info_ordering:["phone_v2","email_v2","website_v2","custom_fields"]}}t.r(e),t.d(e,{getDefaultCardData:function(){return l},isValidColor:function(){return a},isValidEmail:function(){return s},isValidPhone:function(){return r},isValidUrl:function(){return i},sanitizeCardData:function(){return c},validateCardData:function(){return o}}),e.default={validateCardData:o,isValidColor:a,isValidUrl:i,isValidEmail:s,isValidPhone:r,sanitizeCardData:c,getDefaultCardData:l}},750:function(n,e,t){function o(n="",e=""){const t=(n||"").toString().trim(),o=(e||"").toString().trim();return t||o?(t.charAt(0).toUpperCase()+o.charAt(0).toUpperCase()).substring(0,2):""}function a(n=""){const e=n.toString().trim().split(/\s+/);return 0===e.length||""===e[0]?"UN":1===e.length?e[0].substring(0,2).toUpperCase():e[0].charAt(0).toUpperCase()+e[e.length-1].charAt(0).toUpperCase()}function i(n={}){const{first_name:e,last_name:t,company:i,name:s}=n;return e||t?o(e,t):s?a(s):i?a(i):"UN"}function s(n=""){if(!n)return"#007bff";let e=0;for(let t=0;t<n.length;t++)e=n.charCodeAt(t)+((e<<5)-e);return function(n){const e=65*Math.min(.5,.5)/100,t=t=>{const o=(t+n/30)%12,a=.5-e*Math.max(Math.min(o-3,9-o,1),-1);return Math.round(255*a).toString(16).padStart(2,"0")};return`#${t(0)}${t(8)}${t(4)}`}(Math.abs(e)%360)}t.r(e),t.d(e,{getInitials:function(){return o},getInitialsBackgroundColor:function(){return s},getInitialsFromFullName:function(){return a},getInitialsWithFallback:function(){return i}}),e.default={getInitials:o,getInitialsFromFullName:a,getInitialsWithFallback:i,getInitialsBackgroundColor:s}},861:function(n,e,t){t.d(e,{D:function(){return a}});var o=t(951);class a extends o.aR{static get layoutId(){return"layout-13"}static get defaultColors(){return{background_color:"#171717",button_color:"#6A76D6",icon_color:"#FFFFFF",user_info_color:"#FFFFFF",secondary_color:"#52F9FF",gradient_start:"#52F9FF",gradient_mid:"#6A76D6",gradient_end:"#D949A4"}}getLayout13Styles(n={}){const{containerWidth:e="100%",containerMaxWidth:t="500px",containerHeight:o="100%",containerMinHeight:a="auto",containerMargin:i="0 auto",clicksDisabled:s=!1,heroHeight:r="280px",footerClicksDisabled:c=!1,isAnimationMode:l=!1,borderRadius:d="20px"}=n;return`\n /* Import Font Awesome 5.15.4 into Shadow DOM (matches Angular, passes CSP) */\n @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css');\n @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600&family=Saira+Stencil+One&family=Ropa+Sans&family=Inter:wght@400&display=swap');\n \n * {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n }\n\n ${l?"":"\n :host {\n all: initial;\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n text-align: left;\n font-family: 'Montserrat', system-ui, -apple-system, sans-serif;\n font-size: 16px;\n line-height: 1.5;\n color: #FFFFFF;\n box-sizing: border-box;\n }\n "}\n\n .uqc-card-container {\n width: ${e};\n max-width: ${t};\n height: ${o};\n min-height: ${a};\n max-height: 100%;\n margin: ${i};\n background: var(--card-bg, #171717);\n border-radius: 0;\n position: relative;\n overflow: hidden;\n ${s?"pointer-events: none; user-select: none;":""}\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n text-align: left;\n }\n\n /* Main scrollable area */\n .uqc-scrollable-area {\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n }\n\n /* Scrollbar styling */\n .uqc-scrollable-area::-webkit-scrollbar {\n width: 6px;\n }\n .uqc-scrollable-area::-webkit-scrollbar-track {\n background: transparent;\n }\n .uqc-scrollable-area::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.2);\n border-radius: 3px;\n }\n .uqc-scrollable-area::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n /* Fixed elements wrapper - take full card width */\n .uqc-fixed-btn-container {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n \n /* Lead drawer - take full card width (transform handled by LeadFormMixin) */\n .uqc-lead-drawer {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n\n /* Card content wrapper */\n .uqc-card-content-wrapper {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n }\n\n /* ===== HEADER COMPONENT (Logo Only) ===== */\n .uqc-header-section {\n padding: 24px 32px;\n display: flex;\n align-items: flex-start;\n }\n\n .uqc-header-logo-img {\n height: 30px;\n width: auto;\n object-fit: contain;\n }\n\n /* ===== HERO IMAGE SECTION ===== */\n .uqc-hero-section {\n position: relative;\n width: 100%;\n height: ${r};\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .uqc-hero-image {\n width: 100%;\n object-fit: cover;\n }\n\n /* Logo on hero (circular, top left) */\n .uqc-logo-section {\n position: absolute;\n top: 24px;\n left: 16px;\n z-index: 10;\n }\n\n .uqc-logo-circle {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background: #FFFFFF;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n }\n\n .uqc-logo-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n padding: 4px;\n }\n\n /* ===== CONTENT SECTION ===== */\n .uqc-content-section {\n padding: 16px 24px;\n flex-shrink: 0;\n }\n\n /* Personal Info */\n .uqc-personal-info {\n margin-bottom: 12px;\n }\n\n .uqc-name-line {\n display: flex;\n align-items: baseline;\n gap: 8px;\n margin-bottom: 4px;\n }\n\n .uqc-name {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--personal-info-weight, 600);\n font-size: var(--personal-info-size, 30px);\n line-height: 1.22em;\n letter-spacing: -0.024em;\n color: var(--personal-info-color, var(--text-color, #FFFFFF));\n }\n\n .uqc-pronouns {\n font-family: var(--font-family, 'Inter'), sans-serif;\n font-weight: var(--personal-info-weight, 400);\n font-size: calc(var(--personal-info-size, 30px) * 0.5);\n line-height: 1.21em;\n color: var(--personal-info-color, var(--text-color, #D9D9D9));\n opacity: 0.8;\n }\n\n .uqc-job-title {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: var(--company-details-size, 14.5px);\n line-height: 1.22em;\n color: var(--company-details-color, var(--text-color, #FFFFFF));\n margin-bottom: 4px;\n }\n\n .uqc-company {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--company-details-weight, 600);\n font-size: var(--company-details-size, 14.5px);\n line-height: 1.22em;\n color: var(--company-details-color, var(--text-color, #FFFFFF));\n margin-bottom: 4px;\n }\n\n .uqc-department {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--company-details-weight, 400);\n font-size: calc(var(--company-details-size, 14.5px) * 0.9);\n line-height: 1.22em;\n color: var(--company-details-color, var(--text-color, #FFFFFF));\n opacity: 0.8;\n margin-bottom: 12px;\n }\n\n /* ===== GRADIENT DIVIDERS ===== */\n .uqc-divider-gradient {\n width: 100%;\n height: 1px;\n background: linear-gradient(109deg, rgba(82, 249, 255, 1) 0%, rgba(106, 118, 214, 1) 55%, rgba(217, 73, 164, 1) 100%);\n margin: 12px 0;\n }\n\n /* Bio Section */\n .uqc-bio-section {\n margin-bottom: 24px;\n }\n\n .uqc-bio-text {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--bio-weight, 400);\n font-size: var(--bio-size, 14.5px);\n line-height: 1.22em;\n color: var(--bio-color, var(--text-color, #FFFFFF));\n max-width: 265px;\n }\n\n /* Contact Info */\n .uqc-contact-info {\n margin-bottom: 24px;\n }\n\n .uqc-contact-item {\n margin-bottom: 8px;\n cursor: pointer;\n transition: opacity 0.2s;\n }\n\n .uqc-contact-item:hover {\n opacity: 0.8;\n }\n\n .uqc-contact-label {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-size: 12px;\n color: var(--contact-details-color, var(--text-color, #FFFFFF));\n opacity: 0.7;\n margin-bottom: 4px;\n }\n\n .uqc-contact-value {\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n font-weight: var(--contact-details-weight, 400);\n font-size: var(--contact-details-size, 14.5px);\n line-height: 1.22em;\n color: var(--contact-details-color, var(--text-color, #FFFFFF));\n }\n\n /* Social Links */\n .uqc-social-section {\n margin-bottom: 32px;\n }\n\n .uqc-social-links {\n display: flex;\n flex-wrap: wrap;\n gap: 15px;\n align-items: center;\n }\n\n .uqc-social-icon {\n width: 20px;\n height: 20px;\n cursor: pointer;\n transition: opacity 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .uqc-social-icon:hover {\n opacity: 0.7;\n }\n\n .uqc-social-icon i {\n font-size: 20px;\n color: var(--icon-color, #FFFFFF);\n }\n\n /* ===== WAVE DECORATION (SVG Stripes) ===== */\n .uqc-wave-decoration {\n width: 100%;\n flex: 1 1 auto;\n min-height: 40px;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n }\n\n .uqc-wave-svg {\n width: 100%;\n height: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n }\n\n /* Stripe colors - applied via CSS variables */\n .uqc-stripe-svg {\n width: 100%;\n flex: 1;\n min-height: 50px;\n }\n\n /* ===== BUTTON SECTION ===== */\n .uqc-fixed-btn-container {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n left: 0;\n right: 0;\n }\n\n .uqc-fixed-button-section {\n width: 100%;\n max-width: 500px;\n z-index: 1000;\n pointer-events: none;\n box-sizing: border-box;\n }\n\n .uqc-fixed-button-section.uqc-fixed-position {\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .uqc-fixed-button-section.uqc-flex-position {\n position: relative;\n flex: 0 0 auto;\n }\n\n .uqc-button-container {\n width: 100%;\n padding: 12px 16px 8px 16px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: ${c?"none":"auto"};\n }\n\n /* Button Styles - Purple gradient for Layout 13 */\n .uqc-btn, .uqc-btn-exchange {\n background: var(--button-color, #6A76D6);\n color: var(--button-text-color-final, var(--button-text-color, #FFFFFF));\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: var(--button-size, 18px);\n font-weight: var(--button-weight, 500);\n font-family: var(--font-family, 'Montserrat'), sans-serif;\n pointer-events: auto;\n text-decoration: none;\n }\n\n .uqc-btn-connect-container {\n display: none;\n flex-direction: row;\n gap: 8px;\n width: 90%;\n }\n\n .uqc-btn-connect {\n flex: 1;\n width: auto;\n min-width: 0;\n padding: 12px 16px;\n }\n\n .uqc-footer-with-exchange {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n margin-top: 8px;\n }\n\n .uqc-hidden {\n display: none !important;\n }\n\n /* Responsive */\n @media only screen and (max-width: 500px) {\n .uqc-card-container {\n max-width: 100%;\n }\n }\n `}getTemplate(){const n=this._config?.layoutConfig||{},{width:e="100%",maxWidth:t="500px",height:o="100%",minHeight:a="auto",centered:i=!0,fullWidth:s=!1,clicksDisabled:r=!1,heroHeight:c="280px",footerClicksDisabled:l=!1,borderRadius:d="20px"}=n,u=s?"100%":e,h=s?"none":t,p=o,g=a,f=i?"0 auto":"0";return`\n <style>${this.getLayout13Styles({containerWidth:u,containerMaxWidth:h,containerHeight:p,containerMinHeight:g,containerMargin:f,clicksDisabled:r,heroHeight:c,footerClicksDisabled:l,borderRadius:d,isAnimationMode:!1})}</style>\n \n <div class="uqc-card-container">\n \x3c!-- Language Dropdown --\x3e\n ${this.getLanguageDropdownTemplate()}\n \n \x3c!-- Scrollable Area --\x3e\n <div class="uqc-scrollable-area">\n \x3c!-- Card content wrapper --\x3e\n <div class="uqc-card-content-wrapper">\n \n \x3c!-- Header Component (Logo Only) --\x3e\n <div class="uqc-header-section uqc-hidden">\n <img class="uqc-header-logo-img uqc-hidden" alt="Logo" />\n </div>\n \n \x3c!-- Hero Image Section --\x3e\n <div class="uqc-hero-section uqc-hidden">\n <img class="uqc-hero-image uqc-hidden" alt="Hero" />\n \n \x3c!-- Company Logo on hero (circular) --\x3e\n <div class="uqc-logo-section uqc-hidden">\n <div class="uqc-logo-circle">\n <img class="uqc-logo-image uqc-hidden" alt="Company Logo" />\n </div>\n </div>\n </div>\n\n \x3c!-- Content Section --\x3e\n <div class="uqc-content-section">\n \x3c!-- Personal Info --\x3e\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name"></div>\n <div class="uqc-pronouns uqc-hidden"></div>\n </div>\n <div class="uqc-job-title uqc-hidden"></div>\n <div class="uqc-company uqc-hidden"></div>\n <div class="uqc-department uqc-hidden"></div>\n </div>\n\n \x3c!-- Gradient Divider --\x3e\n <div class="uqc-divider-gradient"></div>\n\n \x3c!-- Bio --\x3e\n <div class="uqc-bio-section uqc-hidden">\n <div class="uqc-bio-text"></div>\n </div>\n\n \x3c!-- Gradient Divider --\x3e\n <div class="uqc-divider-gradient uqc-divider-bottom"></div>\n\n \x3c!-- Contact Info --\x3e\n <div class="uqc-contact-info"></div>\n\n \x3c!-- Social Links --\x3e\n <div class="uqc-social-section">\n <div class="uqc-social-links"></div>\n </div>\n </div>\n </div>\n\n \x3c!-- Wave Decoration (SVG stripes with gradient) --\x3e\n <div class="uqc-wave-decoration">\n ${this.getWaveDecorationSVG()}\n </div>\n </div>\n \n \x3c!-- Fixed Button Section --\x3e\n <div class="uqc-fixed-button-section">\n <div class="uqc-button-container">\n ${this.getButtonsHTML()}\n </div>\n </div>\n \n \x3c!-- Report Content (absolute position within card, bottom-right) --\x3e\n ${this.renderReportContent()}\n </div>\n \n \x3c!-- Lead Collection Form --\x3e\n ${!1!==this._config?.leadCollection?this.getLeadFormTemplate():""}\n \n \x3c!-- Card Exchange Animation --\x3e\n ${!1!==this._config?.enableAnimation?this.getAnimationFrameTemplate():""}\n \n \x3c!-- Success Drawer --\x3e\n ${this.getSuccessDrawerTemplate()}\n `}getHeaderIconSVG(){return'\n <svg width="12" height="16" viewBox="0 0 12 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect width="11.54" height="3.56" fill="currentColor"/>\n <rect y="12.44" width="11.54" height="3.56" fill="currentColor"/>\n <rect y="6.15" width="10.45" height="3.56" fill="currentColor"/>\n </svg>\n '}getWaveDecorationSVG(){return'\n <svg class="uqc-wave-svg" viewBox="0 0 400 300" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg">\n <defs>\n <linearGradient id="waveGradient" x1="0%" y1="0%" x2="100%" y2="0%">\n <stop offset="0%" style="stop-color:var(--gradient-start, #52F9FF)"/>\n <stop offset="55%" style="stop-color:var(--gradient-mid, #6A76D6)"/>\n <stop offset="100%" style="stop-color:var(--gradient-end, #D949A4)"/>\n </linearGradient>\n </defs>\n \n \x3c!-- Wave pattern --\x3e\n <path d="M0,150 Q100,100 200,150 T400,150 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="0.3"/>\n <path d="M0,180 Q100,130 200,180 T400,180 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="0.5"/>\n <path d="M0,210 Q100,160 200,210 T400,210 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="0.7"/>\n <path d="M0,240 Q100,190 200,240 T400,240 L400,300 L0,300 Z" fill="url(#waveGradient)" opacity="1"/>\n </svg>\n '}getButtonsHTML(){const n=this._cardData||{};return this._config,`\n <a class="uqc-btn" id="uqc-btn-add-to-contact" href="${n.autodownload_url||"#"}" data-add-to-contact style="text-decoration: none;">\n <i class="fas fa-user-plus" style="font-size: 20px;"></i>\n Add to Contacts\n </a>\n \n <button class="uqc-btn-exchange" id="uqc-btn-exchange" data-exchange-contacts>\n <i class="fas fa-exchange-alt" style="font-size: 20px;"></i>\n Exchange Contacts\n </button>\n \n <div class="uqc-btn-connect-container" id="uqc-btn-connect-container">\n <button class="uqc-btn uqc-btn-connect" data-connect>\n <i class="fas fa-link" style="font-size: 20px;"></i>\n Connect\n </button>\n <button class="uqc-btn uqc-btn-connect" data-create-card data-card-slug="${n.slug||"slug"}">\n <i class="fas fa-plus-circle" style="font-size: 20px;"></i>\n Create Now\n </button>\n </div>\n `}applyCustomColors(){super.applyCustomColors();const n=a.defaultColors,e=this._shadowRoot?.querySelector(".uqc-card-container");e&&(e.style.setProperty("--gradient-start",n.gradient_start),e.style.setProperty("--gradient-mid",n.gradient_mid),e.style.setProperty("--gradient-end",n.gradient_end))}render(){this._cardData&&(this.applyCustomColors(),this.applyPreviewModeStyles(),this.applyButtonPosition(),this.renderHeader(),this.renderLanguageDropdown(),this.renderHeroImage(),this.renderLogo(),this.renderPersonalInfo(),this.renderBio(),this.renderContactInfo(),this.renderSocialLinks(),this.updateStickyButtons(),this.updateLeadFormFields(),this._cardData?.lead_collection&&this.generateTOSString(),this._listenersAttached||(this.attachEventListeners(),this.attachStickyButtonFooterListeners(),!1!==this._config?.leadCollection&&this.attachLeadFormListeners(),!1!==this._config?.enableSuccessDrawer&&this.attachSuccessDrawerListeners(),this._listenersAttached=!0))}renderHeader(){const n=this.getImages(),e=this._shadowRoot?.querySelector(".uqc-header-section"),t=this._shadowRoot?.querySelector(".uqc-header-logo-img");if(n.logo&&n.logoSize>0&&t){t.src=n.logo;const o=n.logoSize??30;t.style.height=`${o}px`,t.classList.remove("uqc-hidden"),e?.classList.remove("uqc-hidden")}else e?.classList.add("uqc-hidden")}renderHeroImage(){const n=this.getImages(),e=this._shadowRoot?.querySelector(".uqc-hero-image"),t=this._shadowRoot?.querySelector(".uqc-hero-section"),o=!!n.profile,a=this._config?.platform||"web",i=this._config?.layoutConfig||{};let s;s=!o||"server"!==a&&"mobile"!==a?i.heroHeight||"280px":"45vh",o?(e.src=n.profile,e.classList.remove("uqc-hidden"),t.classList.remove("uqc-hidden"),t.style.height=s):(e.classList.add("uqc-hidden"),t.classList.add("uqc-hidden"))}renderLogo(){const n=this._shadowRoot?.querySelector(".uqc-logo-section");n&&n.classList.add("uqc-hidden")}renderPersonalInfo(){const n=this.getPersonalInfo(),e=this._shadowRoot?.querySelector(".uqc-name");e&&(e.textContent=n.fullName);const t=this._shadowRoot?.querySelector(".uqc-pronouns");n.pronouns?(t.textContent=`(${n.pronouns})`,t.classList.remove("uqc-hidden")):t?.classList.add("uqc-hidden");const o=this._shadowRoot?.querySelector(".uqc-job-title");n.designation?(o.textContent=n.designation,o.classList.remove("uqc-hidden")):o?.classList.add("uqc-hidden");const a=this._shadowRoot?.querySelector(".uqc-company");n.company?(a.textContent=n.company,a.classList.remove("uqc-hidden")):a?.classList.add("uqc-hidden");const i=this._shadowRoot?.querySelector(".uqc-department");n.department?(i.textContent=n.department,i.classList.remove("uqc-hidden")):i?.classList.add("uqc-hidden")}renderBio(){const n=this.getPersonalInfo(),e=this._shadowRoot?.querySelector(".uqc-bio-section"),t=this._shadowRoot?.querySelector(".uqc-bio-text"),o=this._shadowRoot?.querySelector(".uqc-divider-bottom");n.summary?(t.textContent=n.summary,e.classList.remove("uqc-hidden"),o?.classList.remove("uqc-hidden")):(e?.classList.add("uqc-hidden"),o?.classList.add("uqc-hidden"))}renderContactInfo(){const n=this.getContactInfo(),e=this._shadowRoot?.querySelector(".uqc-contact-info");if(!e)return;e.innerHTML="";const t=(n,t)=>{t&&Array.isArray(t)&&0!==t.length&&t.forEach(t=>{if(t&&t.value){const o=this.createContactItem(n,t.value,t.label);e.appendChild(o)}})};Array.isArray(n)&&n.forEach(({type:n,items:o})=>{const a=n.replace("_v2","");if("address_v2"===n&&"string"==typeof o){const n=this.createContactItem("address",o,"Address");e.appendChild(n)}else t("custom_fields"===n?"custom":a,o)})}createContactItem(n,e,t){const o=document.createElement("div");return o.className="uqc-contact-item",o.innerHTML=t?`\n <div class="uqc-contact-label">${t}</div>\n <div class="uqc-contact-value">${e}</div>\n `:`<div class="uqc-contact-value">${e}</div>`,o.addEventListener("click",()=>{this.handleContactClick(n,e)}),o}renderSocialLinks(){const n=this.getSocialLinks(),e=this._shadowRoot?.querySelector(".uqc-social-links");e&&(e.innerHTML="",n.forEach(({platform:n,url:t})=>{const o=document.createElement("div");o.className="uqc-social-icon",o.innerHTML=this.getSocialIcon(n),o.addEventListener("click",()=>{this.handleSocialClick(n,t)}),e.appendChild(o)}))}getSocialIcon(n){const e={yelp:"fab fa-yelp",vimeo:"fab fa-vimeo",github:"fab fa-github",paypal:"fab fa-paypal",tiktok:"fab fa-tiktok",twitch:"fab fa-twitch",behance:"fab fa-behance",discord:"fab fa-discord",shopify:"fab fa-shopify",youtube:"fab fa-youtube",dribbble:"fab fa-dribbble",facebook:"fab fa-facebook",linkedin:"fab fa-linkedin",snapchat:"fab fa-snapchat",telegram:"fab fa-telegram",whatsapp:"fab fa-whatsapp",instagram:"fab fa-instagram",pinterest:"fab fa-pinterest",twitter:"fab fa-x-twitter"};return e[n]?`<i class="${e[n]}"></i>`:'<i class="fas fa-globe"></i>'}applyButtonPosition(){const n=this._shadowRoot?.querySelector(".uqc-fixed-button-section");if(!n)return;const e=this._config?.platform||"web",t="server"===e||"mobile"===e;n.classList.remove("uqc-fixed-position","uqc-flex-position"),t?n.classList.add("uqc-fixed-position"):n.classList.add("uqc-flex-position")}attachEventListeners(){this.attachLanguageDropdownListeners(),this.attachReportContentListeners()}getCardPreviewHTML(n,e={}){const{isAnimationMode:t=!0,hideEmptySections:o=!0}=e,i=`${n.first_name||""} ${n.last_name||""}`.trim(),s=n.pronouns_v2||"",r=n.designation||"",c=n.company||"",l=n.department||"",d=n.summary||"",u=n.user_image_url||"",h=n.logo_url||"",p=n.logo_size??50,g=(n.header_title||n.company,n.header_subtitle||n.department,n.customizations||this._cardData?.customizations||{}),f=a.defaultColors,m=g.background?.value||g.background_color||f.background_color,v=g.user_info_color||f.user_info_color,b=g.button_color||f.button_color,y=g.icon_color||f.icon_color,w=n.phone_v2?.[0]?.value||"",x=n.email_v2?.[0]?.value||"",q=n.address_v2||"",C=n.social_links||{},_=Object.values(C).some(n=>n&&n.trim()),S=`\n --card-bg: ${m};\n --text-color: ${v};\n --button-color: ${b};\n --icon-color: ${y};\n --gradient-start: ${f.gradient_start};\n --gradient-mid: ${f.gradient_mid};\n --gradient-end: ${f.gradient_end};\n `,k=this.getLayout13Styles({containerWidth:"100%",containerMaxWidth:"500px",containerHeight:"100%",containerMinHeight:"auto",containerMargin:"0 auto",clicksDisabled:!0,heroHeight:u?"200px":"0",footerClicksDisabled:!0,borderRadius:"20px",isAnimationMode:!0}),L=h&&p>0?`\n <div class="uqc-header-section">\n <img class="uqc-header-logo-img" src="${h}" alt="Logo" style="height: ${p}px;" />\n </div>\n `:"",F=u?`\n <div class="uqc-hero-section" style="height: 200px;">\n <img class="uqc-hero-image" src="${u}" alt="Profile" />\n </div>\n `:"",E=s?`<div class="uqc-pronouns">(${s})</div>`:"",M=r?`<div class="uqc-job-title">${r}</div>`:"",D=c?`<div class="uqc-company">${c}</div>`:"",$=l?`<div class="uqc-department">${l}</div>`:"",A=d?`\n <div class="uqc-divider-gradient"></div>\n <div class="uqc-bio-section">\n <div class="uqc-bio-text">${d}</div>\n </div>\n <div class="uqc-divider-gradient"></div>\n `:"";let z="";w&&(z+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label">Phone</div>\n <div class="uqc-contact-value">${w}</div>\n </div>\n `),x&&(z+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label">Email</div>\n <div class="uqc-contact-value">${x}</div>\n </div>\n `),q&&(z+=`\n <div class="uqc-contact-item">\n <div class="uqc-contact-label">Address</div>\n <div class="uqc-contact-value">${q}</div>\n </div>\n `);const T=z?`\n <div class="uqc-contact-info">${z}</div>\n `:"";let R="";return _&&["facebook","instagram","twitter","linkedin","tiktok","snapchat","whatsapp","telegram","youtube","github"].forEach(n=>{C[n]&&(R+=`<div class="uqc-social-icon"><i class="fab fa-${n}" style="color: ${y};"></i></div>`)}),`\n <style>${k}</style>\n <div class="uqc-card-container" style="${S}">\n <div class="uqc-scrollable-area">\n <div class="uqc-card-content-wrapper">\n ${L}\n ${F}\n <div class="uqc-content-section">\n <div class="uqc-personal-info">\n <div class="uqc-name-line">\n <div class="uqc-name">${i||"Name"}</div>\n ${E}\n </div>\n ${M}\n ${D}\n ${$}\n </div>\n <div class="uqc-divider-gradient"></div>\n ${A}\n ${T}\n ${R?`\n <div class="uqc-social-section">\n <div class="uqc-social-links">${R}</div>\n </div>\n `:""}\n </div>\n </div>\n \n <div class="uqc-wave-decoration">\n ${this.getWaveDecorationSVG()}\n </div>\n \n </div>\n </div>\n `}}customElements.define("uniqode-layout-13",a)},951:function(n,e,t){t.d(e,{aR:function(){return v}});var o=t(688),a=t(750),i=t(59);const s={CARD_READY:"card-ready",CARD_UPDATED:"card-updated",CONTACT_CLICK:"contact-click",SAVE_CONTACT:"save-contact",SOCIAL_CLICK:"social-click",SHARE:"share",LANGUAGE_CHANGE:"language-change",LEAD_FORM_OPEN:"lead-form-open",LEAD_FORM_CLOSE:"lead-form-close",LEAD_FORM_SUBMIT:"lead-form-submit",LEAD_FORM_SUCCESS:"lead-form-success",LEAD_FORM_ERROR:"lead-form-error",LEAD_COLLECT:"lead-collect",ADD_TO_CONTACT_CLICK:"add-to-contact-click",EXCHANGE_CONTACTS_CLICK:"exchange-contacts-click",CONNECT_CLICK:"connect-click",CREATE_NOW_CLICK:"create-now-click",FOOTER_CTA_CLICK:"footer-cta-click",FOOTER_LOGO_CLICK:"footer-logo-click",ANIMATION_STARTED:"animation-started",ANIMATION_ENDED:"animation-ended"},r={ab:"Abkhazian",aa:"Afar",af:"Afrikaans","af-NA":"Afrikaans (Namibia)","af-ZA":"Afrikaans (South Africa)",ak:"Akan","ak-GH":"Akan (Ghana)",sq:"Albanian","sq-AL":"Albanian (Albania)",am:"Amharic","am-ET":"Amharic (Ethiopia)",ar:"Arabic","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SD":"Arabic (Sudan)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (United Arab Emirates)","ar-YE":"Arabic (Yemen)",hy:"Armenian","hy-AM":"Armenian (Armenia)",as:"Assamese","as-IN":"Assamese (India)",asa:"Asu","asa-TZ":"Asu (Tanzania)",ay:"Aymara",az:"Azerbaijani","az-Cyrl":"Azerbaijani (Cyrillic)","az-Cyrl_AZ":"Azerbaijani (Cyrillic, Azerbaijan)","az-Latn":"Azerbaijani (Latin)","az-Latn_AZ":"Azerbaijani (Latin, Azerbaijan)",bm:"Bambara","bm-ML":"Bambara (Mali)",ba:"Bashkir",eu:"Basque","eu-ES":"Basque (Spain)",be:"Belarusian","be-BY":"Belarusian (Belarus)",bem:"Bemba","bem-ZM":"Bemba (Zambia)",bez:"Bena","bez-TZ":"Bena (Tanzania)",bn:"Bengali","bn-BD":"Bengali (Bangladesh)","bn-IN":"Bengali (India)",dz:"Bhutani",bh:"Bihari",bi:"Bislama",bs:"Bosnian","bs-BA":"Bosnian (Bosnia and Herzegovina)",br:"Breton",bg:"Bulgarian","bg-BG":"Bulgarian (Bulgaria)",my:"Burmese","my-MM":"Burmese (Myanmar [Burma])",be:"Byelorussian",km:"Cambodian","yue-Hant_HK":"Cantonese (Traditional, Hong Kong SAR China)",ca:"Catalan","ca-ES":"Catalan (Spain)",tzm:"Central Morocco Tamazight","tzm-Latn":"Central Morocco Tamazight (Latin)","tzm-Latn_MA":"Central Morocco Tamazight (Latin, Morocco)",chr:"Cherokee","chr-US":"Cherokee (United States)",cgg:"Chiga","cgg-UG":"Chiga (Uganda)",zh:"Chinese","zh-Hans":"Chinese (Simplified Han)","zh-Hans_CN":"Chinese (Simplified Han, China)","zh-Hans_HK":"Chinese (Simplified Han, Hong Kong SAR China)","zh-Hans_MO":"Chinese (Simplified Han, Macau SAR China)","zh-Hans_SG":"Chinese (Simplified Han, Singapore)","zh-Hant":"Chinese (Traditional Han)","zh-Hant_HK":"Chinese (Traditional Han, Hong Kong SAR China)","zh-Hant_MO":"Chinese (Traditional Han, Macau SAR China)","zh-Hant_TW":"Chinese (Traditional Han, Taiwan)",kw:"Cornish","kw-GB":"Cornish (United Kingdom)",co:"Corsican",hr:"Croatian","hr-HR":"Croatian (Croatia)",cs:"Czech","cs-CZ":"Czech (Czech Republic)",da:"Danish","da-DK":"Danish (Denmark)",nl:"Dutch","nl-BE":"Dutch (Belgium)","nl-NL":"Dutch (Netherlands)",ebu:"Embu","ebu-KE":"Embu (Kenya)",en:"English","en-AS":"English (American Samoa)","en-AU":"English (Australia)","en-BE":"English (Belgium)","en-BZ":"English (Belize)","en-BW":"English (Botswana)","en-CA":"English (Canada)","en-GU":"English (Guam)","en-HK":"English (Hong Kong SAR China)","en-IN":"English (India)","en-IE":"English (Ireland)","en-IL":"English (Israel)","en-JM":"English (Jamaica)","en-MY":"English (Malaysia)","en-MT":"English (Malta)","en-MH":"English (Marshall Islands)","en-MU":"English (Mauritius)","en-NA":"English (Namibia)","en-NZ":"English (New Zealand)","en-MP":"English (Northern Mariana Islands)","en-PK":"English (Pakistan)","en-PH":"English (Philippines)","en-SG":"English (Singapore)","en-ZA":"English (South Africa)","en-TT":"English (Trinidad and Tobago)","en-UM":"English (U.S. Minor Outlying Islands)","en-VI":"English (U.S. Virgin Islands)","en-GB":"English (United Kingdom)","en-US":"English (United States)","en-ZW":"English (Zimbabwe)",eo:"Esperanto",et:"Estonian","et-EE":"Estonian (Estonia)",ee:"Ewe","ee-GH":"Ewe (Ghana)","ee-TG":"Ewe (Togo)",fo:"Faeroese",fo:"Faroese","fo-FO":"Faroese (Faroe Islands)",fj:"Fiji",fil:"Filipino","fil-PH":"Filipino (Philippines)",fi:"Finnish","fi-FI":"Finnish (Finland)",fr:"French","fr-BE":"French (Belgium)","fr-BJ":"French (Benin)","fr-BF":"French (Burkina Faso)","fr-BI":"French (Burundi)","fr-CM":"French (Cameroon)","fr-CA":"French (Canada)","fr-CF":"French (Central African Republic)","fr-TD":"French (Chad)","fr-KM":"French (Comoros)","fr-CG":"French (Congo - Brazzaville)","fr-CD":"French (Congo - Kinshasa)","fr-CI":"French (Côte dIvoire)","fr-DJ":"French (Djibouti)","fr-GQ":"French (Equatorial Guinea)","fr-FR":"French (France)","fr-GA":"French (Gabon)","fr-GP":"French (Guadeloupe)","fr-GN":"French (Guinea)","fr-LU":"French (Luxembourg)","fr-MG":"French (Madagascar)","fr-ML":"French (Mali)","fr-MQ":"French (Martinique)","fr-MC":"French (Monaco)","fr-NE":"French (Niger)","fr-RW":"French (Rwanda)","fr-RE":"French (Réunion)","fr-BL":"French (Saint Barthélemy)","fr-MF":"French (Saint Martin)","fr-SN":"French (Senegal)","fr-CH":"French (Switzerland)","fr-TG":"French (Togo)",fy:"Frisian",ff:"Fulah","ff-SN":"Fulah (Senegal)",gl:"Galician","gl-ES":"Galician (Spain)",lg:"Ganda","lg-UG":"Ganda (Uganda)",ka:"Georgian","ka-GE":"Georgian (Georgia)",de:"German","de-AT":"German (Austria)","de-BE":"German (Belgium)","de-DE":"German (Germany)","de-LI":"German (Liechtenstein)","de-LU":"German (Luxembourg)","de-CH":"German (Switzerland)",el:"Greek","el-CY":"Greek (Cyprus)","el-GR":"Greek (Greece)",kl:"Greenlandic",gn:"Guarani",gu:"Gujarati","gu-IN":"Gujarati (India)",guz:"Gusii","guz-KE":"Gusii (Kenya)",ha:"Hausa","ha-Latn":"Hausa (Latin)","ha-Latn_GH":"Hausa (Latin, Ghana)","ha-Latn_NE":"Hausa (Latin, Niger)","ha-Latn_NG":"Hausa (Latin, Nigeria)",haw:"Hawaiian","haw-US":"Hawaiian (United States)",he:"Hebrew","he-IL":"Hebrew (Israel)",hi:"Hindi","hi-IN":"Hindi (India)",hu:"Hungarian","hu-HU":"Hungarian (Hungary)",is:"Icelandic","is-IS":"Icelandic (Iceland)",ig:"Igbo","ig-NG":"Igbo (Nigeria)",id:"Indonesian","id-ID":"Indonesian (Indonesia)",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish","ga-IE":"Irish (Ireland)",it:"Italian","it-IT":"Italian (Italy)","it-CH":"Italian (Switzerland)",ja:"Japanese","ja-JP":"Japanese (Japan)",jw:"Javanese",kea:"Kabuverdianu","kea-CV":"Kabuverdianu (Cape Verde)",kab:"Kabyle","kab-DZ":"Kabyle (Algeria)",kl:"Kalaallisut","kl-GL":"Kalaallisut (Greenland)",kln:"Kalenjin","kln-KE":"Kalenjin (Kenya)",kam:"Kamba","kam-KE":"Kamba (Kenya)",kn:"Kannada","kn-IN":"Kannada (India)",ks:"Kashmiri",kk:"Kazakh","kk-Cyrl":"Kazakh (Cyrillic)","kk-Cyrl_KZ":"Kazakh (Cyrillic, Kazakhstan)",km:"Khmer","km-KH":"Khmer (Cambodia)",ki:"Kikuyu","ki-KE":"Kikuyu (Kenya)",rw:"Kinyarwanda","rw-RW":"Kinyarwanda (Rwanda)",ky:"Kirghiz",rn:"Kirundi",kok:"Konkani","kok-IN":"Konkani (India)",ko:"Korean","ko-KR":"Korean (South Korea)",khq:"Koyra Chiini","khq-ML":"Koyra Chiini (Mali)",ses:"Koyraboro Senni","ses-ML":"Koyraboro Senni (Mali)",ku:"Kurdish",lag:"Langi","lag-TZ":"Langi (Tanzania)",lo:"Laothian",la:"Latin",lv:"Latvian","lv-LV":"Latvian (Latvia)",lv:"Lettish",ln:"Lingala",lt:"Lithuanian","lt-LT":"Lithuanian (Lithuania)",luo:"Luo","luo-KE":"Luo (Kenya)",luy:"Luyia","luy-KE":"Luyia (Kenya)",mk:"Macedonian","mk-MK":"Macedonian (Macedonia)",jmc:"Machame","jmc-TZ":"Machame (Tanzania)",kde:"Makonde","kde-TZ":"Makonde (Tanzania)",mg:"Malagasy","mg-MG":"Malagasy (Madagascar)",ms:"Malay","ms-BN":"Malay (Brunei)","ms-MY":"Malay (Malaysia)",ml:"Malayalam","ml-IN":"Malayalam (India)",mt:"Maltese","mt-MT":"Maltese (Malta)",gv:"Manx","gv-GB":"Manx (United Kingdom)",mi:"Maori",mr:"Marathi","mr-IN":"Marathi (India)",mas:"Masai","mas-KE":"Masai (Kenya)","mas-TZ":"Masai (Tanzania)",mer:"Meru","mer-KE":"Meru (Kenya)",mo:"Moldavian",mn:"Mongolian",mfe:"Morisyen","mfe-MU":"Morisyen (Mauritius)",naq:"Nama","naq-NA":"Nama (Namibia)",na:"Nauru",ne:"Nepali","ne-IN":"Nepali (India)","ne-NP":"Nepali (Nepal)",nd:"North Ndebele","nd-ZW":"North Ndebele (Zimbabwe)",no:"Norwegian",nb:"Norwegian Bokmål","nb-NO":"Norwegian Bokmål (Norway)",nn:"Norwegian Nynorsk","nn-NO":"Norwegian Nynorsk (Norway)",nyn:"Nyankole","nyn-UG":"Nyankole (Uganda)",oc:"Occitan",or:"Oriya","or-IN":"Oriya (India)",om:"Oromo","om-ET":"Oromo (Ethiopia)","om-KE":"Oromo (Kenya)",ps:"Pashto","ps-AF":"Pashto (Afghanistan)",fa:"Persian","fa-AF":"Persian (Afghanistan)","fa-IR":"Persian (Iran)",pl:"Polish","pl-PL":"Polish (Poland)",pt:"Portuguese","pt-BR":"Portuguese (Brazil)","pt-GW":"Portuguese (Guinea-Bissau)","pt-MZ":"Portuguese (Mozambique)","pt-PT":"Portuguese (Portugal)",pa:"Punjabi","pa-Arab":"Punjabi (Arabic)","pa-Arab_PK":"Punjabi (Arabic, Pakistan)","pa-Guru":"Punjabi (Gurmukhi)","pa-Guru_IN":"Punjabi (Gurmukhi, India)",ps:"Pushto",qu:"Quechua",rm:"Rhaeto",ro:"Romanian","ro-MD":"Romanian (Moldova)","ro-RO":"Romanian (Romania)",rm:"Romansh","rm-CH":"Romansh (Switzerland)",rof:"Rombo","rof-TZ":"Rombo (Tanzania)",ru:"Russian","ru-MD":"Russian (Moldova)","ru-RU":"Russian (Russia)","ru-UA":"Russian (Ukraine)",rwk:"Rwa","rwk-TZ":"Rwa (Tanzania)",saq:"Samburu","saq-KE":"Samburu (Kenya)",sm:"Samoan",sg:"Sango","sg-CF":"Sango (Central African Republic)",sg:"Sangro",sa:"Sanskrit",gd:"Scots",seh:"Sena","seh-MZ":"Sena (Mozambique)",sr:"Serbian","sr-Cyrl":"Serbian (Cyrillic)","sr-Cyrl_BA":"Serbian (Cyrillic, Bosnia and Herzegovina)","sr-Cyrl_ME":"Serbian (Cyrillic, Montenegro)","sr-Cyrl_RS":"Serbian (Cyrillic, Serbia)","sr-Latn":"Serbian (Latin)","sr-Latn_BA":"Serbian (Latin, Bosnia and Herzegovina)","sr-Latn_ME":"Serbian (Latin, Montenegro)","sr-Latn_RS":"Serbian (Latin, Serbia)",sh:"Serbo",st:"Sesotho",tn:"Setswana",sn:"Shona","sn-ZW":"Shona (Zimbabwe)",ii:"Sichuan Yi","ii-CN":"Sichuan Yi (China)",sd:"Sindhi",si:"Singhalese",si:"Sinhala","si-LK":"Sinhala (Sri Lanka)",ss:"Siswati",sk:"Slovak","sk-SK":"Slovak (Slovakia)",sl:"Slovenian","sl-SI":"Slovenian (Slovenia)",xog:"Soga","xog-UG":"Soga (Uganda)",so:"Somali","so-DJ":"Somali (Djibouti)","so-ET":"Somali (Ethiopia)","so-KE":"Somali (Kenya)","so-SO":"Somali (Somalia)",es:"Spanish","es-AR":"Spanish (Argentina)","es-BO":"Spanish (Bolivia)","es-CL":"Spanish (Chile)","es-CO":"Spanish (Colombia)","es-CR":"Spanish (Costa Rica)","es-DO":"Spanish (Dominican Republic)","es-EC":"Spanish (Ecuador)","es-SV":"Spanish (El Salvador)","es-GQ":"Spanish (Equatorial Guinea)","es-GT":"Spanish (Guatemala)","es-HN":"Spanish (Honduras)","es-419":"Spanish (Latin America)","es-MX":"Spanish (Mexico)","es-NI":"Spanish (Nicaragua)","es-PA":"Spanish (Panama)","es-PY":"Spanish (Paraguay)","es-PE":"Spanish (Peru)","es-PR":"Spanish (Puerto Rico)","es-ES":"Spanish (Spain)","es-US":"Spanish (United States)","es-UY":"Spanish (Uruguay)","es-VE":"Spanish (Venezuela)",su:"Sudanese",sw:"Swahili","sw-KE":"Swahili (Kenya)","sw-TZ":"Swahili (Tanzania)",sv:"Swedish","sv-FI":"Swedish (Finland)","sv-SE":"Swedish (Sweden)",gsw:"Swiss German","gsw-CH":"Swiss German (Switzerland)",shi:"Tachelhit","shi-Latn":"Tachelhit (Latin)","shi-Latn_MA":"Tachelhit (Latin, Morocco)","shi-Tfng":"Tachelhit (Tifinagh)","shi-Tfng_MA":"Tachelhit (Tifinagh, Morocco)",tl:"Tagalog",dav:"Taita","dav-KE":"Taita (Kenya)",tg:"Tajik",ta:"Tamil","ta-IN":"Tamil (India)","ta-LK":"Tamil (Sri Lanka)",tt:"Tatar",te:"Telugu","te-IN":"Telugu (India)",teo:"Teso","teo-KE":"Teso (Kenya)","teo-UG":"Teso (Uganda)",th:"Thai","th-TH":"Thai (Thailand)",bo:"Tibetan","bo-CN":"Tibetan (China)","bo-IN":"Tibetan (India)",ti:"Tigrinya","ti-ER":"Tigrinya (Eritrea)","ti-ET":"Tigrinya (Ethiopia)",to:"Tonga","to-TO":"Tonga (Tonga)",ts:"Tsonga",tr:"Turkish","tr-TR":"Turkish (Turkey)",tk:"Turkmen",tw:"Twi",ug:"Uigur",uk:"Ukrainian","uk-UA":"Ukrainian (Ukraine)",ur:"Urdu","ur-IN":"Urdu (India)","ur-PK":"Urdu (Pakistan)",uz:"Uzbek","uz-Arab":"Uzbek (Arabic)","uz-Arab_AF":"Uzbek (Arabic, Afghanistan)","uz-Cyrl":"Uzbek (Cyrillic)","uz-Cyrl_UZ":"Uzbek (Cyrillic, Uzbekistan)","uz-Latn":"Uzbek (Latin)","uz-Latn_UZ":"Uzbek (Latin, Uzbekistan)",vi:"Vietnamese","vi-VN":"Vietnamese (Vietnam)",vo:"Volapuk",vun:"Vunjo","vun-TZ":"Vunjo (Tanzania)",cy:"Welch",cy:"Welsh","cy-GB":"Welsh (United Kingdom)",wo:"Wolof",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba","yo-NG":"Yoruba (Nigeria)",za:"Zhuang",zu:"Zulu","zu-ZA":"Zulu (South Africa)"},c={getLanguageDropdownTemplate:function(){return'\n <style>\n /* Language dropdown - positioned at top right inside card */\n .uqc-language-dropdown-container {\n position: absolute;\n top: 16px;\n right: 16px;\n z-index: 1000;\n background-color: rgba(0, 0, 0, 0.4);\n border: 0;\n border-radius: 4px;\n }\n\n .uqc-language-dropdown-container.hidden {\n display: none;\n }\n\n .uqc-language-select {\n background-color: transparent;\n color: #FFFFFF;\n font-family: \'Work Sans\', sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n text-align: center;\n text-align-last: center;\n text-overflow: ellipsis;\n max-width: 20ch;\n border: 0;\n padding: 8px;\n padding-right: 32px;\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n user-select: none;\n cursor: pointer;\n position: relative;\n z-index: 1;\n }\n\n .uqc-language-select:focus {\n outline: none;\n }\n\n .uqc-language-select:focus-visible {\n outline: none;\n }\n\n /* Dropdown arrow */\n .uqc-language-dropdown-container::after {\n content: \'\';\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #FFFFFF;\n pointer-events: none;\n z-index: 0;\n }\n </style>\n\n <div class="uqc-language-dropdown-container hidden" id="uqc-language-dropdown">\n <select class="uqc-language-select" id="uqc-language-select">\n \x3c!-- Options will be populated dynamically --\x3e\n </select>\n </div>\n '},renderLanguageDropdown:function(){const{language_data:n,default_language:e}=this._cardData||{},{showLanguageDropdown:t}=this._config||{},o=this._shadowRoot.querySelector("#uqc-language-dropdown"),a=this._shadowRoot.querySelector("#uqc-language-select");if(!o||!a)return;const i=n&&Object.keys(n).length>0;if(!(t??i))return void o.classList.add("hidden");o.classList.remove("hidden");const s=this._currentLanguage||"",c=this.getAvailableLanguages();a.innerHTML="";const l=e||"en",d=document.createElement("option");d.value="",d.textContent=r[l]||l.toUpperCase(),d.selected=""===s,a.appendChild(d),c.forEach(n=>{const e=document.createElement("option");e.value=n.code,e.textContent=n.label,e.selected=s===n.code,a.appendChild(e)}),console.log("%c[LanguageDropdown] Dropdown rendered with languages:","color: #3b82f6",c),console.log("%c[LanguageDropdown] Current selection:","color: #3b82f6",s||"default")},getAvailableLanguages:function(){const{language_data:n,default_language:e}=this._cardData||{};if(!n)return[];const t=e||"en";return Object.keys(n).filter(n=>n!==t).map(n=>({code:n,label:`${r[n]||n.toUpperCase()}`}))},getLanguageData:function(n){const e=this._originalCardData||this._cardData||{},{language_data:t,default_language:o,...a}=e;return n&&t&&t[n]?{...a,...t[n],language_data:t,default_language:o}:a},attachLanguageDropdownListeners:function(){const n=this._shadowRoot.querySelector("#uqc-language-select");n&&n.addEventListener("change",n=>{const e=n.target.value;this.setLanguage(e,!0)})},setLanguage:function(n,e=!0){const t=n||"";console.log("%c[LanguageDropdown] Language set to:","color: #3b82f6",t||"default"),this._currentLanguage=t;const o=this._shadowRoot.querySelector("#uqc-language-select");o&&(o.value=t);const a=this.getLanguageData(t);this._originalCardData||(this._originalCardData={...this._cardData}),this._cardData={...this._originalCardData,...a},this.render(),e&&this.emitEvent(s.LANGUAGE_CHANGE,{language:t||this._cardData.default_language||"en",cardData:a})},getCurrentLanguage:function(){return this._currentLanguage||""}},l={getLeadFormTemplate:function(){this._config;const n=this._cardData||{},e=n.lead_attribute||{};return`\n <style>\n /* Lead Form Overlay */\n .uqc-lead-overlay {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 2147483003;\n display: none;\n }\n \n .uqc-lead-overlay.show {\n display: block;\n }\n \n /* Lead Form Drawer - Position based on platform:\n - Server/Mobile: Fixed to viewport (doesn't scroll with content)\n - Dashboard: Absolute to container (stays within preview) */\n .uqc-lead-drawer {\n display: flex;\n flex-direction: column;\n gap: 0.4rem;\n padding: 24px;\n position: absolute; /* Default: absolute for dashboard preview */\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 2147483004;\n background-color: white;\n transition: transform 0.3s ease-in-out;\n transform: translateY(100%);\n box-sizing: border-box;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n max-height: 85%;\n font-family: 'Work Sans', sans-serif;\n pointer-events: auto;\n }\n \n /* Server/Mobile: Use fixed positioning for better UX on tall cards */\n :host(.uqc-platform-server) .uqc-lead-drawer {\n position: fixed;\n }\n \n .uqc-lead-drawer.show {\n width: 100%;\n transform: translateY(0);\n transition: transform 0.3s ease-in-out;\n min-height: 100px;\n }\n \n /* Form Title */\n .uqc-owner-info {\n font-weight: 300;\n font-size: 20px;\n font-family: "Work Sans", sans-serif;\n line-height: 28px;\n color: #16212F;\n margin-bottom: 24px;\n display: flex;\n flex-wrap: wrap;\n white-space: nowrap;\n }\n \n .uqc-owner-name {\n font-style: italic;\n font-weight: 600;\n }\n \n /* Form Container */\n .uqc-form-container {\n max-height: 150px;\n overflow: scroll;\n margin-bottom: 16px;\n font-family: "Work Sans", sans-serif;\n padding-right: 8px;\n row-gap: 16px;\n display: grid;\n }\n \n /* Form Field Container */\n .uqc-lead-field-container {\n margin-bottom: 0;\n }\n \n .uqc-lead-field-container.uqc-hidden {\n display: none !important;\n }\n \n /* Name Grid (First + Last) */\n .uqc-name-grid {\n display: flex;\n flex-direction: row;\n }\n \n #uqc-lead-first-name {\n border-radius: 5px 0px 0px 5px;\n border-right-width: 0.5px !important;\n width: 50%;\n }\n \n #uqc-lead-last-name {\n border-radius: 0px 5px 5px 0px;\n border-left-width: 0.5px !important;\n width: 50%;\n }\n \n /* Form Input (Matching server exactly) */\n .uqc-lead-input {\n background: #FAFAFA;\n border: 1px solid #E4E5E7;\n border-radius: 4px;\n padding: 12px;\n gap: 8px;\n height: 44px;\n font-size: 16px;\n width: -webkit-fill-available;\n font-family: "Work Sans", sans-serif;\n box-sizing: border-box;\n }\n \n .uqc-lead-input:focus {\n outline: none !important;\n border: 1px solid #2595FF !important;\n }\n \n .uqc-lead-input.error {\n border-color: #FF445E;\n }\n \n /* Textarea */\n .uqc-lead-textarea {\n height: 80px;\n resize: none;\n font-size: 16px;\n }\n \n /* Error Message (Matching server exactly) */\n .uqc-lead-error-message {\n display: none;\n padding: 0;\n padding-top: 8px;\n margin: 0;\n color: #FF445E;\n font-size: 13px;\n }\n \n .uqc-lead-error-message.show {\n display: block;\n }\n \n /* Marketing Consent (Matching server exactly) */\n .uqc-disclaimer {\n width: 100%;\n font-weight: 400;\n font-family: "Open Sans", sans-serif;\n font-size: 12px;\n color: #979797;\n margin-top: 16px;\n display: flex;\n align-items: start;\n }\n \n .uqc-lead-consent-checkbox {\n margin-right: 10px;\n cursor: pointer;\n }\n \n .uqc-tos-text {\n color: #979797;\n font-size: 12px;\n font-style: normal;\n font-family: "Open Sans", sans-serif;\n font-weight: 400;\n line-height: normal;\n text-align: start;\n letter-spacing: -0.33px;\n }\n \n .uqc-tos-anchor-links {\n color: #979797;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n letter-spacing: -0.33px;\n text-decoration-line: underline;\n }\n \n /* Submit Button Container */\n #uqc-submit-container {\n margin-top: 16px;\n }\n \n /* Submit Button (Matching server exactly) */\n .uqc-lead-submit-btn {\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 4px;\n height: 48px;\n padding: 0px;\n width: -webkit-fill-available;\n border: 0;\n cursor: pointer;\n background: #2595FF;\n min-height: 40px;\n font-family: 'Work Sans', sans-serif;\n font-size: 15px;\n font-weight: lighter;\n }\n \n .uqc-lead-submit-btn:hover {\n opacity: 0.95;\n }\n \n .uqc-lead-submit-btn:disabled {\n cursor: not-allowed;\n opacity: 0.7;\n }\n \n .uqc-lead-submit-btn .submitLead {\n color: #ffffff !important;\n }\n \n .uqc-connect-btn-cta {\n padding-left: 12px;\n color: #ffffff;\n }\n \n #uqc-lead-exchange-contact-icon {\n color: #ffffff;\n }\n \n /* Loading Spinner (Matching server exactly) */\n .uqc-lead-spinner {\n border: 3px solid #f3f3f3;\n border-radius: 50%;\n border-top: 3px solid #3498db;\n width: 14px;\n height: 14px;\n -webkit-animation: spin 2s linear infinite;\n animation: spin 2s linear infinite;\n display: none;\n }\n \n .uqc-lead-spinner.show {\n display: inline-block;\n }\n \n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n \n /* Add to Contacts Button (below Connect) */\n .uqc-lead-add-contact-btn {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #2595FF;\n background: none;\n border: none;\n cursor: pointer;\n width: 100%;\n margin-top: 8px;\n font-family: 'Work Sans', sans-serif;\n padding: 8px;\n }\n \n .uqc-lead-add-contact-btn:hover {\n opacity: 0.8;\n }\n \n .uqc-lead-add-contact-text {\n color: #2595FF;\n font-size: 15px;\n padding-left: 8px;\n text-decoration: none;\n }\n \n /* Preview mode - disable Connect button and Add to Contacts button */\n .uqc-lead-submit-btn.uqc-preview-mode,\n .uqc-lead-add-contact-btn.uqc-preview-mode {\n pointer-events: none;\n opacity: 0.6;\n cursor: not-allowed;\n }\n \n @-webkit-keyframes spin {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n </style>\n\n \x3c!-- Lead Form Overlay --\x3e\n <div id="uqc-lead-overlay" class="uqc-lead-overlay"></div>\n\n \x3c!-- Lead Form Drawer --\x3e\n <div id="uqc-lead-drawer" class="uqc-lead-drawer">\n \x3c!-- Title --\x3e\n <div class="uqc-owner-info">\n Exchange contacts with&nbsp;<br />\n <span class="uqc-owner-name">${n.first_name||"Owner"}</span>\n </div>\n \n \x3c!-- Form --\x3e\n <form id="uqc-lead-form" onsubmit="return false">\n <div class="uqc-form-container">\n \x3c!-- Name Fields (Side by side) --\x3e\n <div class="uqc-lead-field-container">\n <div class="uqc-name-grid">\n <input \n type="text" \n id="uqc-lead-first-name" \n class="uqc-lead-input" \n placeholder="First name" \n required\n maxlength="128"\n />\n <input \n type="text" \n id="uqc-lead-last-name" \n class="uqc-lead-input" \n placeholder="Last name" \n required\n maxlength="128"\n />\n </div>\n <p class="uqc-lead-error-message" id="uqc-lead-first-name-error">Please enter full name</p>\n </div>\n\n \x3c!-- Email (Required) --\x3e\n <div class="uqc-lead-field-container">\n <input \n type="email" \n id="uqc-lead-email" \n class="uqc-lead-input" \n placeholder="Email" \n required\n maxlength="254"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-email-error">Please enter a valid email address</p>\n </div>\n\n \x3c!-- Company (Conditional - hidden when lead_attribute.company is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.company||"False"===e.company?"uqc-hidden":""}" id="uqc-lead-company-container">\n <input \n type="text" \n id="uqc-lead-company" \n class="uqc-lead-input" \n placeholder="Company" \n maxlength="128"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-company-error"></p>\n </div>\n\n \x3c!-- Phone (Conditional - hidden when lead_attribute.phone is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.phone||"False"===e.phone?"uqc-hidden":""}" id="uqc-lead-phone-container">\n <input \n type="tel" \n id="uqc-lead-phone" \n class="uqc-lead-input" \n placeholder="Phone number" \n maxlength="30"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-phone-error">Please enter a valid phone number</p>\n </div>\n\n \x3c!-- Designation (Conditional - hidden when lead_attribute.designation is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.designation||"False"===e.designation?"uqc-hidden":""}" id="uqc-lead-designation-container">\n <input \n type="text" \n id="uqc-lead-designation" \n class="uqc-lead-input" \n placeholder="Designation" \n maxlength="128"\n />\n <p class="uqc-lead-error-message" id="uqc-lead-designation-error"></p>\n </div>\n\n \x3c!-- Notes (Conditional - hidden when lead_attribute.notes is false/False) --\x3e\n <div class="uqc-lead-field-container ${!1===e.notes||"False"===e.notes?"uqc-hidden":""}" id="uqc-lead-notes-container">\n <textarea \n id="uqc-lead-notes" \n class="uqc-lead-input uqc-lead-textarea" \n placeholder="Message"\n maxlength="500"\n ></textarea>\n </div>\n </div>\n \n \x3c!-- Marketing Consent --\x3e\n <div class="uqc-disclaimer">\n <input \n type="checkbox" \n id="uqc-lead-marketing-consent" \n class="uqc-lead-consent-checkbox"\n checked\n />\n <div class="uqc-tos-text" id="uqc-lead-consent-text"></div>\n </div>\n\n \x3c!-- Submit Button --\x3e\n <div id="uqc-submit-container">\n <button type="submit" class="uqc-lead-submit-btn" id="uqc-lead-submit-btn">\n <i id="uqc-lead-exchange-contact-icon" class="fas fa-exchange-alt"></i>\n <i id="uqc-lead-spinner" class="uqc-lead-spinner"></i>\n <span class="submitLead uqc-connect-btn-cta">Connect</span>\n </button>\n </div>\n \n \x3c!-- Add to Contacts Button (below Connect) --\x3e\n <button type="button" class="uqc-lead-add-contact-btn" id="uqc-lead-add-contact-btn">\n <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <g clip-path="url(#clip0_lead_add)">\n <path d="M10.6667 14V12.6667C10.6667 11.9594 10.3857 11.2811 9.88564 10.781C9.38554 10.281 8.70726 10 8.00002 10H3.33335C2.62611 10 1.94783 10.281 1.44774 10.781C0.947639 11.2811 0.666687 11.9594 0.666687 12.6667V14M13.3334 5.33333V9.33333M15.3334 7.33333H11.3334M8.33335 4.66667C8.33335 6.13943 7.13945 7.33333 5.66669 7.33333C4.19393 7.33333 3.00002 6.13943 3.00002 4.66667C3.00002 3.19391 4.19393 2 5.66669 2C7.13945 2 8.33335 3.19391 8.33335 4.66667Z" stroke="#2595FF" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>\n </g>\n <defs>\n <clipPath id="clip0_lead_add">\n <rect width="16" height="16" fill="white"/>\n </clipPath>\n </defs>\n </svg>\n <span class="uqc-lead-add-contact-text">Add to Contacts</span>\n </button>\n </form>\n </div>\n `},generateTOSString:function(){const n=this._cardData||{};let e;e="master_organization_name"===n.name_in_lead_consent?n.master_organization_name||n.consent_placeholder||n.__consent_placeholder__&&n.__consent_placeholder__.trim()||"the organization":"card_owner_name"===n.name_in_lead_consent?`${n.first_name||""} ${n.last_name||""}`.trim()||n.first_name||n.consent_placeholder||n.__consent_placeholder__&&n.__consent_placeholder__.trim()||"the card owner":n.consent_placeholder||n.__consent_placeholder__&&n.__consent_placeholder__.trim()||`${n.first_name||""} ${n.last_name||""}`.trim()||n.first_name||"the card owner";let t=`I agree to receive communications from ${e}.`;const o=n.lead_user_agreement_attribute?.user_agreement_urls||[],a=[];o.length>0&&o[0].label&&o[0].url&&a.push(`<a class="uqc-tos-anchor-links" href="${o[0].url}" target="_blank">${o[0].label}</a>`),o.length>1&&o[1].label&&o[1].url&&a.push(`<a class="uqc-tos-anchor-links" href="${o[1].url}" target="_blank">${o[1].label}</a>`),o.length>2&&o[2].label&&o[2].url&&a.push(`<a class="uqc-tos-anchor-links" href="${o[2].url}" target="_blank">${o[2].label}</a>`),a.length>0&&(t+=" "+a.join(", ")+".");const i=this._shadowRoot.querySelector("#uqc-lead-consent-text");i&&(i.innerHTML=t)},openLeadForm:function(){const n=this._shadowRoot.querySelector("#uqc-lead-overlay"),e=this._shadowRoot.querySelector("#uqc-lead-drawer");if(n&&e){const t=this._shadowRoot.querySelector(".uqc-owner-name");if(t){const n=this._cardData||{};t.textContent=n.first_name||"Owner"}this.generateTOSString(),n.classList.add("show"),setTimeout(()=>{e.classList.add("show")},10),console.log("[LeadForm] Form opened"),this.emitEvent(s.LEAD_FORM_OPEN)}},closeLeadForm:function(){const n=this._shadowRoot.querySelector("#uqc-lead-overlay"),e=this._shadowRoot.querySelector("#uqc-lead-drawer");if(n&&e){e.classList.remove("show"),setTimeout(()=>{n.classList.remove("show")},300);const t=this._shadowRoot.querySelector("#uqc-lead-form");t&&(t.reset(),this.clearFormErrors()),console.log("[LeadForm] Form closed"),this.emitEvent(s.LEAD_FORM_CLOSE)}},validateField:function(n,e){const t=e.trim();switch(n){case"uqc-lead-first-name":return t?t.length>128?{valid:!1,error:"First name too long"}:{valid:!0}:{valid:!1,error:"First name is required"};case"uqc-lead-last-name":return t?t.length>128?{valid:!1,error:"Last name too long"}:{valid:!0}:{valid:!1,error:"Last name is required"};case"uqc-lead-email":return t?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?t.length>254?{valid:!1,error:"Email too long"}:{valid:!0}:{valid:!1,error:"Invalid email format"}:{valid:!1,error:"Email is required"};case"uqc-lead-phone":return t&&t.length>30?{valid:!1,error:"Phone number too long"}:{valid:!0};case"uqc-lead-company":return t.length>128?{valid:!1,error:"Company name too long"}:{valid:!0};case"uqc-lead-designation":return t.length>128?{valid:!1,error:"Designation too long"}:{valid:!0};default:return{valid:!0}}},showFieldError:function(n,e){const t=this._shadowRoot.querySelector(`#${n}`),o=this._shadowRoot.querySelector(`#${n}-error`);t&&t.classList.add("error"),o&&(o.textContent=e,o.classList.add("show"))},clearFieldError:function(n){const e=this._shadowRoot.querySelector(`#${n}`),t=this._shadowRoot.querySelector(`#${n}-error`);e&&e.classList.remove("error"),t&&t.classList.remove("show")},clearFormErrors:function(){const n=this._shadowRoot.querySelectorAll(".uqc-lead-error-message"),e=this._shadowRoot.querySelectorAll(".uqc-lead-input");n.forEach(n=>n.classList.remove("show")),e.forEach(n=>n.classList.remove("error"))},updateLeadFormFields:function(){const n=this._cardData||{},e=this._config||{},t=n.lead_attribute||{};[{field:"phone",containerId:"uqc-lead-phone-container"},{field:"company",containerId:"uqc-lead-company-container"},{field:"designation",containerId:"uqc-lead-designation-container"},{field:"notes",containerId:"uqc-lead-notes-container"}].forEach(({field:n,containerId:e})=>{const o=this._shadowRoot?.querySelector(`#${e}`);if(o){const e=(n=>!1===t[n]||"False"===t[n])(n);e?o.classList.add("uqc-hidden"):o.classList.remove("uqc-hidden")}});const o="dashboard"===e.platform||!0===e.previewMode,a=this._shadowRoot?.querySelector("#uqc-lead-submit-btn"),i=this._shadowRoot?.querySelector("#uqc-lead-add-contact-btn");o?(a&&(a.classList.add("uqc-preview-mode"),a.disabled=!0),i&&(i.classList.add("uqc-preview-mode"),i.disabled=!0),console.log("[LeadForm] Preview mode: Connect and Add to Contacts buttons disabled")):(a&&(a.classList.remove("uqc-preview-mode"),a.disabled=!1),i&&(i.classList.remove("uqc-preview-mode"),i.disabled=!1))},validateForm:function(){const n=this._shadowRoot.querySelector("#uqc-lead-form");if(!n)return{valid:!1,errors:["Form not found"]};const e=(this._cardData||{}).lead_attribute||{},t={first_name:n.querySelector("#uqc-lead-first-name")?.value||"",last_name:n.querySelector("#uqc-lead-last-name")?.value||"",email:n.querySelector("#uqc-lead-email")?.value||"",marketing_consent:n.querySelector("#uqc-lead-marketing-consent")?.checked||!1},o=n=>!1!==e[n]&&"False"!==e[n];if(o("phone")){const e=n.querySelector("#uqc-lead-phone")?.value||"";e.trim()&&(t.phone_number=e)}if(o("company")){const e=n.querySelector("#uqc-lead-company")?.value||"";e.trim()&&(t.company_name=e)}if(o("designation")){const e=n.querySelector("#uqc-lead-designation")?.value||"";e.trim()&&(t.designation=e)}if(o("notes")){const e=n.querySelector("#uqc-lead-notes")?.value||"";e.trim()&&(t.notes=e)}const a=[];let i=!0;const s=this.validateField("uqc-lead-first-name",t.first_name);s.valid||(this.showFieldError("uqc-lead-first-name",s.error),a.push(s.error),i=!1);const r=this.validateField("uqc-lead-last-name",t.last_name);r.valid||(this.showFieldError("uqc-lead-last-name",r.error),a.push(r.error),i=!1);const c=this.validateField("uqc-lead-email",t.email);if(c.valid||(this.showFieldError("uqc-lead-email",c.error),a.push(c.error),i=!1),t.phone_number){const n=this.validateField("uqc-lead-phone",t.phone_number);n.valid||(this.showFieldError("uqc-lead-phone",n.error),a.push(n.error),i=!1)}return{valid:i,data:t,errors:a}},setFormLoading:function(n){const e=this._shadowRoot.querySelector("#uqc-lead-submit-btn"),t=this._shadowRoot.querySelector("#uqc-lead-exchange-contact-icon"),o=this._shadowRoot.querySelector(".uqc-connect-btn-cta"),a=this._shadowRoot.querySelector("#uqc-lead-spinner");n?(e&&(e.disabled=!0),t&&(t.style.display="none"),o&&(o.style.display="none"),a&&a.classList.add("show")):(e&&(e.disabled=!1),t&&(t.style.display="inline"),o&&(o.style.display="inline"),a&&a.classList.remove("show"))},attachLeadFormListeners:function(){const n=this._shadowRoot.querySelector("#uqc-lead-close-btn");n&&n.addEventListener("click",()=>{this.closeLeadForm()});const e=this._shadowRoot.querySelector("#uqc-lead-overlay");e&&e.addEventListener("click",()=>{this.closeLeadForm()}),["uqc-lead-first-name","uqc-lead-last-name","uqc-lead-email","uqc-lead-phone"].forEach(n=>{const e=this._shadowRoot.querySelector(`#${n}`);e&&e.addEventListener("input",e=>{this.validateField(n,e.target.value).valid&&this.clearFieldError(n)})});const t=this._shadowRoot.querySelector("#uqc-lead-form");t&&t.addEventListener("submit",n=>{n.preventDefault();const e="dashboard"===this._config?.platform||!0===this._config?.previewMode;console.log("[LeadForm] Form submitted, previewMode:",e),this.clearFormErrors();const t=this.validateForm();t.valid?(console.log("[LeadForm] Validation passed, emitting event"),this.setFormLoading(!0),this.emitEvent(s.LEAD_FORM_SUBMIT,t.data)):console.log("[LeadForm] Validation failed:",t.errors)});const o=this._shadowRoot.querySelector("#uqc-lead-add-contact-btn");o&&o.addEventListener("click",n=>{if("dashboard"===this._config?.platform||!0===this._config?.previewMode)return console.log("[LeadForm] Add to Contacts click blocked (preview mode)"),n.preventDefault(),void n.stopPropagation();const e=this._cardData?.autodownload_url;console.log("[LeadForm] Add to Contacts clicked:",e),this.emitEvent(s.ADD_TO_CONTACT_CLICK,{url:e,source:"lead_form"}),e&&(this.closeLeadForm(),window.location.href=e,this.showSuccessDrawer&&setTimeout(()=>{this.showSuccessDrawer({type:"add-to-contact"})},1500))}),console.log("[LeadForm] Event listeners attached")},showLeadFormSuccess:function(){this.setFormLoading(!1),this.closeLeadForm()},showLeadFormError:function(n){this.setFormLoading(!1),console.error("[LeadForm] ❌ Submission failed:",n||"Failed to submit form. Please try again.")}},d={getStickyButtonFooterTemplate:function(){const n=this._config||{},e=this._cardData||{},t=(e.lead_collection,n.showConnectButtons??!1),o=n.hideFooter??!1,a=e.branding_footer??!1,i=e.pwa_preview??!1,s=e.autodownload_url||"#",r=e.slug||"slug",c=e.static_assets_url||"";return`\n <style>\n /* Sticky Button Container - Fixed at bottom with primary color background */\n /* Background color is applied dynamically via updateStickyButtons() */\n .uqc-fixed-btn-container {\n position: absolute;\n display: ${i?"none":"flex"};\n flex-direction: column;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n padding: 12px 16px 8px 16px; /* top right bottom left - button at very bottom */\n box-sizing: border-box;\n align-items: center;\n z-index: 1000;\n pointer-events: none;\n }\n \n .uqc-fixed-btn-container > * {\n pointer-events: auto;\n }\n\n .uqc-btn, .uqc-btn-exchange {\n background-color: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: var(--button-size, 18px);\n font-weight: var(--button-weight, 400);\n font-family: var(--font-family, 'Inter'), sans-serif;\n }\n\n .uqc-btn:hover, .uqc-btn-exchange:hover {\n opacity: 0.9;\n }\n \n /* Preview mode - disable buttons visually */\n .uqc-btn.uqc-preview-mode, \n .uqc-btn-exchange.uqc-preview-mode,\n .uqc-btn-connect.uqc-preview-mode {\n pointer-events: none;\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .uqc-btn-connect-container {\n display: ${t?"flex":"none"};\n flex-direction: row;\n gap: 8px;\n width: 90%;\n }\n\n .uqc-btn-connect {\n flex: 1;\n width: auto;\n min-width: 0;\n padding: 12px 16px;\n }\n\n /* Footer - Created with Uniqode */\n .uqc-footer-with-exchange {\n display: ${o||a?"none":"flex"};\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n }\n\n .uqc-created-with-text {\n font-family: 'Inter', sans-serif;\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n color: #6B7280;\n margin: 0;\n white-space: nowrap;\n }\n \n .uqc-uniqode-logo {\n height: 16px;\n width: auto;\n }\n\n .uqc-hidden {\n display: none !important;\n }\n </style>\n\n \x3c!-- Sticky Button Container --\x3e\n \x3c!-- All buttons rendered initially, visibility controlled by updateStickyButtons() --\x3e\n <div class="uqc-fixed-btn-container">\n ${this.getAddToContactHTML(s)}\n ${this.getExchangeButtonsHTML(t,r)}\n ${this.getFooterHTML(o||a,r,c)}\n </div>\n `},getAddToContactHTML:function(n){return`\n <a \n class="uqc-btn" \n id="uqc-btn-add-to-contact"\n href="${n}"\n data-add-to-contact\n style="text-decoration: none;"\n >\n <i class="fas fa-user-plus" style="font-size: 20px;"></i>\n Add to Contacts\n </a>\n `},getExchangeButtonsHTML:function(n,e){return`\n <button \n class="uqc-btn-exchange" \n id="uqc-btn-exchange"\n data-exchange-contacts\n style="display: ${n?"none":"flex"};"\n >\n <i class="fas fa-exchange-alt" style="font-size: 20px;"></i>\n Exchange Contacts\n </button>\n \n <div class="uqc-btn-connect-container" id="uqc-btn-connect-container" style="display: ${n?"flex":"none"};">\n <button \n class="uqc-btn uqc-btn-connect" \n data-connect\n >\n <i class="fas fa-link" style="font-size: 20px;"></i>\n Connect\n </button>\n <button \n class="uqc-btn uqc-btn-connect" \n data-create-card\n data-card-slug="${e}"\n >\n <i class="fas fa-plus-circle" style="font-size: 20px;"></i>\n Create Now\n </button>\n </div>\n `},getFooterHTML:function(n,e,t){return""},getButtonTextColor:function(n){const e=n.replace("#","");return(.299*parseInt(e.substr(0,2),16)+.587*parseInt(e.substr(2,2),16)+.114*parseInt(e.substr(4,2),16))/255>.5?"#000000":"#FFFFFF"},updateStickyButtons:function(){const n=this._cardData||{},e=this._config||{},t=n.lead_collection??!1,o=e.showConnectButtons??!1,a=this._shadowRoot.querySelector("#uqc-btn-add-to-contact"),i=this._shadowRoot.querySelector("#uqc-btn-exchange"),s=this._shadowRoot.querySelector("#uqc-btn-connect-container"),r=this._shadowRoot.querySelector(".uqc-fixed-btn-container")||this._shadowRoot.querySelector(".uqc-button-container");if(r){const e=n.customizations?.background_color;e&&(r.style.backgroundColor=e)}const c="dashboard"===e.platform||!0===e.previewMode;t?(a&&(a.style.display="none"),o?(i&&(i.style.display="none"),s&&(s.style.display="flex")):(i&&(i.style.display="flex"),s&&(s.style.display="none"))):(a&&(a.style.display="flex"),i&&(i.style.display="none"),s&&(s.style.display="none"));const l=s?.querySelector("[data-connect]"),d=s?.querySelector("[data-create-card]");c?(a&&a.classList.add("uqc-preview-mode"),i&&i.classList.add("uqc-preview-mode"),l&&l.classList.add("uqc-preview-mode"),d&&d.classList.add("uqc-preview-mode")):(a&&a.classList.remove("uqc-preview-mode"),i&&i.classList.remove("uqc-preview-mode"),l&&l.classList.remove("uqc-preview-mode"),d&&d.classList.remove("uqc-preview-mode"))},attachStickyButtonFooterListeners:function(){const n=this._config||{},e=n.layoutConfig?.footerClicksDisabled||!1,t=this._shadowRoot.querySelector("[data-add-to-contact]");t&&t.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Add to Contact click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();const o=this._cardData?.autodownload_url;console.log("[StickyButton] Add to Contact clicked:",o),this.emitEvent(s.ADD_TO_CONTACT_CLICK,{url:o}),this.showSuccessDrawer&&setTimeout(()=>{this.showSuccessDrawer({type:"add-to-contact"})},1500)});const o=this._shadowRoot.querySelector("[data-exchange-contacts]");o&&o.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Exchange Contacts click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();console.log("[StickyButton] Exchange Contacts clicked"),this.openLeadForm&&this.openLeadForm(),this.emitEvent(s.EXCHANGE_CONTACTS_CLICK)});const a=this._shadowRoot.querySelector("[data-connect]");a&&a.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Connect click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();console.log("[StickyButton] Connect clicked"),this.emitEvent(s.CONNECT_CLICK)});const i=this._shadowRoot.querySelector("[data-create-card]");i&&i.addEventListener("click",n=>{const t="dashboard"===this._config?.platform||!0===this._config?.previewMode;if(e||t)return console.log("[StickyButton] Create Now click blocked (footerClicksDisabled or previewMode)"),n.preventDefault(),void n.stopPropagation();const o=n.target.getAttribute("data-card-slug")||this._cardData?.slug||"slug";console.log("[StickyButton] Create Now clicked:",o),this.emitEvent(s.CREATE_NOW_CLICK,{slug:o})});const r=this._shadowRoot.querySelector("[data-footer-cta]");r&&r.addEventListener("click",n=>{n.preventDefault();const e=n.target.getAttribute("data-card-slug")||this._cardData?.slug||"slug";console.log("[StickyButton] Footer CTA clicked:",e),this.emitEvent(s.FOOTER_CTA_CLICK,{slug:e})});const c=this._shadowRoot.querySelector("[data-footer-logo]");c&&c.addEventListener("click",()=>{console.log("[StickyButton] Footer logo clicked"),this.emitEvent(s.FOOTER_LOGO_CLICK)}),console.log("[StickyButton] Event listeners attached")},showConnectButtons:function(){this._config.showConnectButtons=!0,this._config.hideFooter=!0;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="none"),e&&(e.style.display="flex"),t&&(t.style.display="none"),console.log("[StickyButton] State changed: showing Connect + Create Now buttons")},resetToExchangeButton:function(){this._config.showConnectButtons=!1,this._config.hideFooter=!1;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="flex"),e&&(e.style.display="none"),t&&(t.style.display="flex"),console.log("[StickyButton] State reset: showing Exchange Contacts button")}},u={getAnimationFrameTemplate:function(){return'\n <style>\n /* Animation Container - Full viewport overlay */\n .uqc-animation-container {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100vh;\n display: none;\n justify-content: center;\n align-items: center;\n background: white;\n z-index: 2147483005;\n overflow: hidden;\n }\n \n .uqc-animation-container.show {\n display: flex !important;\n }\n \n /* Cards Wrapper - Contains both cards */\n .uqc-animation-cards-wrapper {\n position: relative;\n width: 100%;\n max-width: 500px;\n height: 100vh;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n }\n \n /* Lead Card (slides right) - Shows lead\'s data */\n .uqc-lead-card-slide {\n width: 100%;\n max-width: 500px;\n height: 100vh;\n position: absolute;\n top: 0;\n animation: 3s uqc-slide-right;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n border-radius: 16px;\n box-shadow: 8px 4px 48px 0px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n z-index: 2;\n }\n \n @keyframes uqc-slide-right {\n 0% {\n top: 0px;\n transform: rotate(-5deg);\n }\n 25% {\n top: 80px;\n transform: translateX(-50%) rotate(-5deg);\n }\n 80% {\n transform: translateX(50%) rotate(5deg);\n }\n 100% {\n transform: translateX(100%) rotate(5deg);\n top: 80px;\n }\n }\n \n /* Owner Card (slides left) - Shows actual card owner\'s data */\n .uqc-owner-card-slide {\n width: 100%;\n max-width: 500px;\n height: 100vh;\n position: absolute;\n top: 0;\n animation: 3s uqc-slide-left;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n border-radius: 16px;\n box-shadow: 8px 4px 48px 0px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n z-index: 1;\n }\n \n @keyframes uqc-slide-left {\n 0% {\n top: 0px;\n transform: rotate(5deg);\n }\n 25% {\n top: 80px;\n transform: translateX(50%) rotate(5deg);\n }\n 80% {\n transform: translateX(-50%) rotate(-5deg);\n }\n 100% {\n transform: translateX(-100%) rotate(-5deg);\n top: 80px;\n }\n }\n \n /* Card Content Wrapper - Full height */\n .uqc-animation-card-content {\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n \n /* ========================================== */\n /* Lead Card Styles (simplified card layout) */\n /* ========================================== */\n .uqc-lead-card-inner {\n background: #ffffff;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n \n .uqc-lead-header {\n padding: 60px 24px 90px;\n background-color: var(--uqc-anim-primary-color, #3370f9);\n text-align: center;\n }\n \n .uqc-lead-body {\n flex: 1;\n background: var(--uqc-anim-bg-color, #ffffff);\n margin-top: -50px;\n border-radius: 16px 16px 0 0;\n position: relative;\n }\n \n .uqc-lead-profile {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: -40px;\n margin-bottom: 16px;\n }\n \n .uqc-lead-avatar {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background-color: rgba(51, 112, 249, 0.15);\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 32px;\n font-weight: 600;\n color: var(--uqc-anim-primary-color, #3370f9);\n border: 4px solid white;\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .uqc-lead-avatar-img {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n object-fit: cover;\n border: 4px solid white;\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .uqc-lead-info {\n padding: 0 24px 24px;\n text-align: center;\n }\n \n .uqc-lead-name {\n font-family: \'Open Sans\', sans-serif;\n font-weight: 600;\n font-size: 24px;\n color: #000000;\n margin-bottom: 8px;\n }\n \n .uqc-lead-designation {\n font-family: \'Open Sans\', sans-serif;\n font-weight: 400;\n font-size: 16px;\n color: #333333;\n margin-bottom: 4px;\n }\n \n .uqc-lead-company {\n font-family: \'Open Sans\', sans-serif;\n font-weight: 400;\n font-size: 16px;\n color: #666666;\n margin-bottom: 16px;\n }\n \n .uqc-lead-contacts {\n padding: 0 24px;\n }\n \n .uqc-lead-contact-item {\n display: flex;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid #f0f0f0;\n }\n \n .uqc-lead-contact-item:last-child {\n border-bottom: none;\n }\n \n .uqc-lead-contact-icon {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background-color: rgba(51, 112, 249, 0.1);\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 12px;\n }\n \n .uqc-lead-contact-icon svg {\n width: 20px;\n height: 20px;\n }\n \n .uqc-lead-contact-text {\n font-family: \'Open Sans\', sans-serif;\n font-size: 14px;\n color: #333333;\n }\n \n .uqc-lead-contact-label {\n font-family: \'Open Sans\', sans-serif;\n font-size: 12px;\n color: #999999;\n margin-top: 2px;\n }\n \n /* Footer Button */\n .uqc-lead-footer {\n padding: 16px 24px;\n background-color: var(--uqc-anim-primary-color, #3370f9);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n \n .uqc-lead-footer-btn {\n display: flex;\n align-items: center;\n color: white;\n font-family: \'Open Sans\', sans-serif;\n font-size: 16px;\n font-weight: 500;\n }\n \n .uqc-lead-footer-btn svg {\n margin-right: 8px;\n }\n </style>\n\n \x3c!-- Animation Container --\x3e\n <div id="uqc-animation-container" class="uqc-animation-container">\n <div class="uqc-animation-cards-wrapper">\n \x3c!-- Owner Card (slides left) - Shows actual card owner\'s data --\x3e\n <div class="uqc-owner-card-slide" id="uqc-owner-card-slide">\n <div class="uqc-animation-card-content" id="uqc-owner-card-content">\n \x3c!-- Owner card content will be populated dynamically --\x3e\n </div>\n </div>\n \n \x3c!-- Lead Card (slides right) - Shows lead\'s data --\x3e\n <div class="uqc-lead-card-slide" id="uqc-lead-card-slide">\n <div class="uqc-animation-card-content" id="uqc-lead-card-content">\n \x3c!-- Lead card content will be populated dynamically --\x3e\n </div>\n </div>\n </div>\n </div>\n '},showCardExchangeAnimation:function(n,e=3e3){if(!n)return void console.error("[Animation] No lead data provided");const t=this._shadowRoot.querySelector("#uqc-animation-container"),o=this._shadowRoot.querySelector("#uqc-lead-card-content"),a=this._shadowRoot.querySelector("#uqc-owner-card-content");if(!t||!o||!a)return void console.error("[Animation] Animation elements not found");const i=this._cardData||{},r=i.customizations||{},c=r.background_color||"#3370f9",l=r.button_color||c,d=r.background?.value||"#ffffff";if(t.style.setProperty("--uqc-anim-primary-color",c),t.style.setProperty("--uqc-anim-button-color",l),t.style.setProperty("--uqc-anim-bg-color",d),"function"==typeof this.getCardPreviewHTML){console.log("[Animation] Using layout-specific getCardPreviewHTML()"),a.innerHTML=this.getCardPreviewHTML(i,{isAnimationMode:!0,hideEmptySections:!0});const e=this.transformLeadToCardData(n);o.innerHTML=this.getCardPreviewHTML(e,{isAnimationMode:!0,hideEmptySections:!0})}else{console.log("[Animation] Using generic fallback rendering");const e=this.generateOwnerCardHTML(i,c,d);a.innerHTML=e;const t=this.generateLeadCardHTML(n,c,d);o.innerHTML=t}const u=this._shadowRoot.querySelector("#uqc-owner-card-slide"),h=this._shadowRoot.querySelector("#uqc-lead-card-slide");u&&h&&(u.style.animation="none",h.style.animation="none",u.offsetHeight,h.offsetHeight,u.style.animation="",h.style.animation=""),t.classList.add("show"),console.log("[Animation] Card exchange animation started with both cards"),console.log("[Animation] Owner data:",{name:`${i.first_name} ${i.last_name}`,company:i.company}),console.log("[Animation] Lead data:",n),this.emitEvent(s.ANIMATION_STARTED,{leadData:n,ownerData:i}),setTimeout(()=>{this.hideCardExchangeAnimation()},e)},transformLeadToCardData:function(n){return{first_name:n.first_name||"",last_name:n.last_name||"",designation:n.designation||"",company:n.company_name||n.company||"",department:"",summary:"",pronouns_v2:"",email_v2:n.email?[{value:n.email,label:"Email"}]:[],phone_v2:n.phone_number||n.phone?[{value:n.phone_number||n.phone,label:"Phone"}]:[],user_image_url:"",logo_url:"",customizations:this._cardData?.customizations||{},social_links:{}}},hideCardExchangeAnimation:function(){const n=this._shadowRoot.querySelector("#uqc-animation-container");n&&(n.classList.remove("show"),console.log("[Animation] Card exchange animation ended"),this.emitEvent(s.ANIMATION_ENDED))},generateOwnerCardHTML:function(n,e,t){const o=n.first_name||"",a=n.last_name||"",i=`${o} ${a}`.trim(),s=n.designation||"",r=n.company||"",c=n.email_v2?.[0]?.value||n.email||"",l=n.phone_v2?.[0]?.value||n.phone?.mobile||"",d=n.user_image_url||"",u=this.getInitialsFromName(o,a);return`\n <div class="uqc-lead-card-inner">\n <div class="uqc-lead-header" style="background-color: ${e}"></div>\n <div class="uqc-lead-body" style="background-color: ${t}">\n <div class="uqc-lead-profile">\n ${d?`<img class="uqc-lead-avatar-img" src="${d}" alt="${i}" />`:`<div class="uqc-lead-avatar" style="color: ${e}; background-color: ${this.hexToRgba(e,.15)}">${u}</div>`}\n </div>\n <div class="uqc-lead-info">\n <div class="uqc-lead-name">${i}</div>\n ${s?`<div class="uqc-lead-designation">${s}</div>`:""}\n ${r?`<div class="uqc-lead-company">${r}</div>`:""}\n </div>\n <div class="uqc-lead-contacts">\n ${l?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M13.388 4.82261C14.3232 5.00472 15.1827 5.46123 15.8565 6.1337C16.5302 6.80617 16.9876 7.66402 17.1701 8.59743M13.388 1C15.331 1.21544 17.1429 2.08388 18.5261 3.46272C19.9093 4.84157 20.7817 6.64887 21 8.58788M20.0425 16.214V19.0809C20.0436 19.3471 19.989 19.6105 19.8821 19.8544C19.7753 20.0983 19.6186 20.3172 19.4221 20.4971C19.2256 20.677 18.9937 20.814 18.7411 20.8993C18.4885 20.9845 18.2208 21.0162 17.9552 20.9922C15.0089 20.6727 12.1787 19.6678 9.69214 18.0584C7.37869 16.5911 5.4173 14.6335 3.94724 12.3245C2.32908 9.83138 1.32206 6.99289 1.00777 4.03897C0.983845 3.7747 1.01531 3.50836 1.10017 3.25689C1.18503 3.00543 1.32141 2.77435 1.50065 2.57838C1.67989 2.3824 1.89804 2.22582 2.14123 2.11861C2.38442 2.0114 2.64731 1.9559 2.91316 1.95565H5.78561C6.25028 1.95109 6.70076 2.11532 7.05309 2.41774C7.40541 2.72016 7.63554 3.14013 7.70057 3.59937C7.82181 4.51686 8.04665 5.41772 8.37081 6.28476C8.49963 6.62681 8.52751 6.99855 8.45115 7.35593C8.37478 7.71331 8.19737 8.04135 7.93994 8.30118L6.72394 9.51486C8.08697 11.9074 10.0717 13.8883 12.4688 15.2488L13.6848 14.0351C13.9452 13.7782 14.2738 13.6011 14.6319 13.5249C14.99 13.4486 15.3624 13.4765 15.7051 13.6051C16.5738 13.9286 17.4764 14.153 18.3956 14.274C18.8608 14.3395 19.2855 14.5733 19.5892 14.931C19.8928 15.2887 20.0542 15.7453 20.0425 16.214Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${l}</div>\n <div class="uqc-lead-contact-label">Phone</div>\n </div>\n </div>\n `:""}\n ${c?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2.87573 1.19043H18.6472C19.7314 1.19043 20.6186 2.05293 20.6186 3.1071V14.6071C20.6186 15.6613 19.7314 16.5238 18.6472 16.5238H2.87573C1.79144 16.5238 0.904297 15.6613 0.904297 14.6071V3.1071C0.904297 2.05293 1.79144 1.19043 2.87573 1.19043Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M20.6186 3.38086L10.7614 9.95229L0.904297 3.38086" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${c}</div>\n <div class="uqc-lead-contact-label">Email</div>\n </div>\n </div>\n `:""}\n </div>\n </div>\n <div class="uqc-lead-footer" style="background-color: ${e}">\n <div class="uqc-lead-footer-btn">\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.5 19C15.5 19.2761 15.7239 19.5 16 19.5C16.2761 19.5 16.5 19.2761 16.5 19H15.5ZM16 17H16.5H16ZM12 13V12.5V13ZM5 13L5 12.5L5 13ZM1 17H0.5H1ZM0.5 19C0.5 19.2761 0.723858 19.5 1 19.5C1.27614 19.5 1.5 19.2761 1.5 19H0.5ZM20.5 6C20.5 5.72386 20.2761 5.5 20 5.5C19.7239 5.5 19.5 5.72386 19.5 6H20.5ZM19.5 12C19.5 12.2761 19.7239 12.5 20 12.5C20.2761 12.5 20.5 12.2761 20.5 12H19.5ZM23 9.5C23.2761 9.5 23.5 9.27614 23.5 9C23.5 8.72386 23.2761 8.5 23 8.5V9.5ZM17 8.5C16.7239 8.5 16.5 8.72386 16.5 9C16.5 9.27614 16.7239 9.5 17 9.5V8.5ZM16.5 19V17H15.5V19H16.5ZM16.5 17C16.5 15.8065 16.0259 14.6619 15.182 13.818L14.4749 14.5251C15.1313 15.1815 15.5 16.0717 15.5 17H16.5ZM15.182 13.818C14.3381 12.9741 13.1935 12.5 12 12.5L12 13.5C12.9283 13.5 13.8185 13.8687 14.4749 14.5251L15.182 13.818ZM12 12.5H5V13.5H12V12.5ZM5 12.5C3.80653 12.5 2.66193 12.9741 1.81802 13.818L2.52513 14.5251C3.1815 13.8687 4.07174 13.5 5 13.5L5 12.5ZM1.81802 13.818C0.974106 14.6619 0.5 15.8065 0.5 17H1.5C1.5 16.0717 1.86875 15.1815 2.52513 14.5251L1.81802 13.818ZM0.5 17V19H1.5V17H0.5ZM12 5C12 6.933 10.433 8.5 8.5 8.5V9.5C10.9853 9.5 13 7.48528 13 5H12ZM8.5 8.5C6.567 8.5 5 6.933 5 5H4C4 7.48528 6.01472 9.5 8.5 9.5V8.5ZM5 5C5 3.067 6.567 1.5 8.5 1.5V0.5C6.01472 0.5 4 2.51472 4 5H5ZM8.5 1.5C10.433 1.5 12 3.067 12 5H13C13 2.51472 10.9853 0.5 8.5 0.5V1.5ZM19.5 6V12H20.5V6H19.5ZM23 8.5H17V9.5H23V8.5Z" fill="white"/>\n </svg>\n Add to Contacts\n </div>\n </div>\n </div>\n `},generateLeadCardHTML:function(n,e,t){const o=n.first_name||"",a=n.last_name||"",i=`${o} ${a}`.trim(),s=n.email||"",r=n.phone_number||n.phone||"",c=n.company_name||n.company||"",l=n.designation||"",d=this.getInitialsFromName(o,a);return`\n <div class="uqc-lead-card-inner">\n <div class="uqc-lead-header" style="background-color: ${e}"></div>\n <div class="uqc-lead-body" style="background-color: ${t}">\n <div class="uqc-lead-profile">\n <div class="uqc-lead-avatar" style="color: ${e}; background-color: ${this.hexToRgba(e,.15)}">${d}</div>\n </div>\n <div class="uqc-lead-info">\n <div class="uqc-lead-name">${i}</div>\n ${l?`<div class="uqc-lead-designation">${l}</div>`:""}\n ${c?`<div class="uqc-lead-company">${c}</div>`:""}\n </div>\n <div class="uqc-lead-contacts">\n ${r?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M13.388 4.82261C14.3232 5.00472 15.1827 5.46123 15.8565 6.1337C16.5302 6.80617 16.9876 7.66402 17.1701 8.59743M13.388 1C15.331 1.21544 17.1429 2.08388 18.5261 3.46272C19.9093 4.84157 20.7817 6.64887 21 8.58788M20.0425 16.214V19.0809C20.0436 19.3471 19.989 19.6105 19.8821 19.8544C19.7753 20.0983 19.6186 20.3172 19.4221 20.4971C19.2256 20.677 18.9937 20.814 18.7411 20.8993C18.4885 20.9845 18.2208 21.0162 17.9552 20.9922C15.0089 20.6727 12.1787 19.6678 9.69214 18.0584C7.37869 16.5911 5.4173 14.6335 3.94724 12.3245C2.32908 9.83138 1.32206 6.99289 1.00777 4.03897C0.983845 3.7747 1.01531 3.50836 1.10017 3.25689C1.18503 3.00543 1.32141 2.77435 1.50065 2.57838C1.67989 2.3824 1.89804 2.22582 2.14123 2.11861C2.38442 2.0114 2.64731 1.9559 2.91316 1.95565H5.78561C6.25028 1.95109 6.70076 2.11532 7.05309 2.41774C7.40541 2.72016 7.63554 3.14013 7.70057 3.59937C7.82181 4.51686 8.04665 5.41772 8.37081 6.28476C8.49963 6.62681 8.52751 6.99855 8.45115 7.35593C8.37478 7.71331 8.19737 8.04135 7.93994 8.30118L6.72394 9.51486C8.08697 11.9074 10.0717 13.8883 12.4688 15.2488L13.6848 14.0351C13.9452 13.7782 14.2738 13.6011 14.6319 13.5249C14.99 13.4486 15.3624 13.4765 15.7051 13.6051C16.5738 13.9286 17.4764 14.153 18.3956 14.274C18.8608 14.3395 19.2855 14.5733 19.5892 14.931C19.8928 15.2887 20.0542 15.7453 20.0425 16.214Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${r}</div>\n <div class="uqc-lead-contact-label">Phone</div>\n </div>\n </div>\n `:""}\n ${s?`\n <div class="uqc-lead-contact-item">\n <div class="uqc-lead-contact-icon" style="background-color: ${this.hexToRgba(e,.1)}">\n <svg viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2.87573 1.19043H18.6472C19.7314 1.19043 20.6186 2.05293 20.6186 3.1071V14.6071C20.6186 15.6613 19.7314 16.5238 18.6472 16.5238H2.87573C1.79144 16.5238 0.904297 15.6613 0.904297 14.6071V3.1071C0.904297 2.05293 1.79144 1.19043 2.87573 1.19043Z" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M20.6186 3.38086L10.7614 9.95229L0.904297 3.38086" stroke="${e}" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </div>\n <div>\n <div class="uqc-lead-contact-text">${s}</div>\n <div class="uqc-lead-contact-label">Email</div>\n </div>\n </div>\n `:""}\n </div>\n </div>\n <div class="uqc-lead-footer" style="background-color: ${e}">\n <div class="uqc-lead-footer-btn">\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.5 19C15.5 19.2761 15.7239 19.5 16 19.5C16.2761 19.5 16.5 19.2761 16.5 19H15.5ZM16 17H16.5H16ZM12 13V12.5V13ZM5 13L5 12.5L5 13ZM1 17H0.5H1ZM0.5 19C0.5 19.2761 0.723858 19.5 1 19.5C1.27614 19.5 1.5 19.2761 1.5 19H0.5ZM20.5 6C20.5 5.72386 20.2761 5.5 20 5.5C19.7239 5.5 19.5 5.72386 19.5 6H20.5ZM19.5 12C19.5 12.2761 19.7239 12.5 20 12.5C20.2761 12.5 20.5 12.2761 20.5 12H19.5ZM23 9.5C23.2761 9.5 23.5 9.27614 23.5 9C23.5 8.72386 23.2761 8.5 23 8.5V9.5ZM17 8.5C16.7239 8.5 16.5 8.72386 16.5 9C16.5 9.27614 16.7239 9.5 17 9.5V8.5ZM16.5 19V17H15.5V19H16.5ZM16.5 17C16.5 15.8065 16.0259 14.6619 15.182 13.818L14.4749 14.5251C15.1313 15.1815 15.5 16.0717 15.5 17H16.5ZM15.182 13.818C14.3381 12.9741 13.1935 12.5 12 12.5L12 13.5C12.9283 13.5 13.8185 13.8687 14.4749 14.5251L15.182 13.818ZM12 12.5H5V13.5H12V12.5ZM5 12.5C3.80653 12.5 2.66193 12.9741 1.81802 13.818L2.52513 14.5251C3.1815 13.8687 4.07174 13.5 5 13.5L5 12.5ZM1.81802 13.818C0.974106 14.6619 0.5 15.8065 0.5 17H1.5C1.5 16.0717 1.86875 15.1815 2.52513 14.5251L1.81802 13.818ZM0.5 17V19H1.5V17H0.5ZM12 5C12 6.933 10.433 8.5 8.5 8.5V9.5C10.9853 9.5 13 7.48528 13 5H12ZM8.5 8.5C6.567 8.5 5 6.933 5 5H4C4 7.48528 6.01472 9.5 8.5 9.5V8.5ZM5 5C5 3.067 6.567 1.5 8.5 1.5V0.5C6.01472 0.5 4 2.51472 4 5H5ZM8.5 1.5C10.433 1.5 12 3.067 12 5H13C13 2.51472 10.9853 0.5 8.5 0.5V1.5ZM19.5 6V12H20.5V6H19.5ZM23 8.5H17V9.5H23V8.5Z" fill="white"/>\n </svg>\n Add to Contacts\n </div>\n </div>\n </div>\n `},getInitialsFromName:function(n,e){const t=(n||"").trim(),o=(e||"").trim();return t||o?o?(t.charAt(0)+o.charAt(0)).toUpperCase():t.substring(0,2).toUpperCase():"??"},hexToRgba:function(n,e=1){return n?(3===(n=n.replace("#","")).length&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${e})`):`rgba(51, 112, 249, ${e})`}},h={getSuccessDrawerTemplate:function(){const n=this._cardData||{},e=(this._config,n.first_name||"them");return n.user_image_url,n.customizations?.colors?.button_color||n.customizations,"false"!==n.show_post_scan_signup_nudge&&n.show_post_scan_signup_nudge,`\n <style>\n /* Success Drawer Overlay */\n .uqc-success-overlay {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 2147483006;\n display: none;\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n \n .uqc-success-overlay.show {\n display: block;\n opacity: 1;\n }\n \n /* Success Drawer */\n .uqc-success-drawer {\n display: flex;\n flex-direction: column;\n gap: 0.4rem;\n padding: 24px;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 2147483007;\n background-color: white;\n transition: transform 0.5s ease-in-out;\n transform: translateY(100%);\n max-width: 500px;\n width: 100%;\n margin: 0 auto;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n max-height: 85%;\n font-family: 'Work Sans', sans-serif;\n box-sizing: border-box;\n }\n \n .uqc-success-drawer.show {\n transform: translateY(0);\n }\n \n /* Drawer Header */\n .uqc-success-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n \n .uqc-success-header.header-right-only {\n justify-content: flex-end;\n }\n \n .uqc-success-title {\n font-weight: 400;\n font-size: 20px;\n font-family: "Work Sans", sans-serif;\n line-height: 28px;\n color: #16212F;\n }\n \n .uqc-success-close-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 8px;\n font-size: 18px;\n color: #5E6980;\n }\n \n .uqc-success-close-btn:hover {\n color: #16212F;\n }\n \n /* Confetti Image Container */\n .uqc-confetti-container {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 12px;\n }\n \n .uqc-confetti-wrapper {\n position: relative;\n display: inline-block;\n }\n \n .uqc-confetti-user-image {\n width: 82px;\n height: 82px;\n border-radius: 50%;\n object-fit: cover;\n }\n \n .uqc-confetti-initials {\n height: 82px;\n width: 82px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n font-family: 'Roboto', sans-serif;\n font-size: 38px;\n font-weight: 500;\n text-transform: uppercase;\n background: var(--button-color-light, rgba(22, 113, 249, 0.2));\n color: var(--button-color, #1671F9);\n }\n \n .uqc-confetti-check {\n background: #26B969;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n color: #FFFFFF;\n position: absolute;\n bottom: 0;\n right: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n \n .uqc-confetti-check svg {\n width: 14px;\n height: 14px;\n }\n \n /* Centered Message (when nudge is disabled) */\n .uqc-centered-message {\n text-align: center;\n font-size: 18px;\n font-weight: 500;\n color: #16212F;\n margin-bottom: 16px;\n font-family: "Work Sans", sans-serif;\n }\n \n /* Contact Info Text */\n .uqc-success-info {\n color: #5E6980;\n text-align: center;\n font-size: 15px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n letter-spacing: 0.25px;\n margin-bottom: 12px;\n font-family: "Work Sans", sans-serif;\n }\n \n /* Create Card Button */\n .uqc-create-card-btn {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #ffffff;\n background: #1671F9;\n border: none;\n cursor: pointer;\n width: 100%;\n font-size: 18px;\n min-height: 48px;\n padding: 0px;\n border-radius: 8px;\n font-family: 'Work Sans', sans-serif;\n text-decoration: none;\n }\n \n .uqc-create-card-btn:hover {\n background: #1461d8;\n }\n \n .uqc-create-card-btn span {\n color: #ffffff;\n }\n </style>\n\n \x3c!-- Success Drawer Overlay --\x3e\n <div id="uqc-success-overlay" class="uqc-success-overlay"></div>\n \n \x3c!-- Success Drawer --\x3e\n <div id="uqc-success-drawer" class="uqc-success-drawer">\n <div class="uqc-success-header" id="uqc-success-header">\n <span class="uqc-success-title" id="uqc-success-title">\n You've connected with&nbsp;<span id="uqc-owner-name">${e}</span>!\n </span>\n <button class="uqc-success-close-btn" id="uqc-success-close-btn" aria-label="Close">\n <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M1 1L13 13M1 13L13 1" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>\n </svg>\n </button>\n </div>\n \n <div class="uqc-confetti-container" id="uqc-confetti-container">\n \x3c!-- Will be populated dynamically --\x3e\n </div>\n \n <div class="uqc-centered-message uqc-hidden" id="uqc-centered-message">\n 🎉 You've connected with&nbsp;<span id="uqc-centered-owner-name">${e}</span>!\n </div>\n \n <div class="uqc-success-info" id="uqc-success-info">\n Get a personalized digital business card in minutes to network smarter.\n </div>\n \n <button type="button" class="uqc-create-card-btn" id="uqc-create-card-btn">\n <span>Create Your Card</span>\n </button>\n </div>\n `},attachSuccessDrawerListeners:function(){const n=this._shadowRoot.querySelector("#uqc-success-close-btn");n&&n.addEventListener("click",()=>{this.hideSuccessDrawer()});const e=this._shadowRoot.querySelector("#uqc-success-overlay");e&&e.addEventListener("click",()=>{this.hideSuccessDrawer()});const t=this._shadowRoot.querySelector("#uqc-create-card-btn");t&&t.addEventListener("click",()=>{this.handleCreateCardClick()})},showSuccessDrawer:function(n={}){const e=this._cardData||{},t=this._config||{};if("dashboard"===t.platform||!0===t.previewMode)return void console.log("[SuccessDrawer] ❌ Blocked in preview mode (platform:",t.platform,", previewMode:",t.previewMode,")");const o=n.ownerFirstName||e.first_name||"them",a=e.last_name||"",i=n.ownerImageUrl||e.user_image_url||"",s=n.buttonColor||e.customizations?.colors?.button_color||e.customizations?.button_color||"#1671F9",r=!1!==n.showNudge&&"false"!==e.show_post_scan_signup_nudge&&!1!==e.show_post_scan_signup_nudge,c=n.type||"exchange",l=this._shadowRoot.querySelector("#uqc-success-drawer"),d=this._shadowRoot.querySelector("#uqc-success-overlay"),u=this._shadowRoot.querySelector("#uqc-success-header"),h=this._shadowRoot.querySelector("#uqc-success-title"),p=this._shadowRoot.querySelector("#uqc-owner-name"),g=this._shadowRoot.querySelector("#uqc-centered-message"),f=this._shadowRoot.querySelector("#uqc-centered-owner-name"),m=this._shadowRoot.querySelector("#uqc-confetti-container"),v=this._shadowRoot.querySelector("#uqc-success-info"),b=this._shadowRoot.querySelector("#uqc-create-card-btn");l&&d?(p&&(p.textContent=o),f&&(f.textContent=o),h&&(h.innerHTML="add-to-contact"===c?`You've added&nbsp;<span id="uqc-owner-name">${o}</span>'s contact!`:`You've connected with&nbsp;<span id="uqc-owner-name">${o}</span>!`),g&&(g.innerHTML="add-to-contact"===c?`🎉 You've added&nbsp;<span id="uqc-centered-owner-name">${o}</span>'s contact!`:`🎉 You've connected with&nbsp;<span id="uqc-centered-owner-name">${o}</span>!`),m&&(m.innerHTML=this.generateConfettiHTML(o,a,i,s)),r?(u&&u.classList.remove("header-right-only"),h&&h.classList.remove("uqc-hidden"),g&&g.classList.add("uqc-hidden"),v&&v.classList.remove("uqc-hidden"),b&&b.classList.remove("uqc-hidden")):(u&&u.classList.add("header-right-only"),h&&h.classList.add("uqc-hidden"),g&&g.classList.remove("uqc-hidden"),v&&v.classList.add("uqc-hidden"),b&&b.classList.add("uqc-hidden")),d.classList.add("show"),l.classList.add("show"),console.log("[SuccessDrawer] Drawer opened"),this.emitEvent("success-drawer-open",{ownerFirstName:o,actionType:c,showNudge:r}),r||setTimeout(()=>{this.hideSuccessDrawer()},3e3)):console.error("[SuccessDrawer] Drawer elements not found")},hideSuccessDrawer:function(){const n=this._shadowRoot.querySelector("#uqc-success-drawer"),e=this._shadowRoot.querySelector("#uqc-success-overlay");n&&n.classList.remove("show"),e&&e.classList.remove("show"),console.log("[SuccessDrawer] Drawer closed"),this.emitEvent("success-drawer-close")},handleCreateCardClick:function(){const n=(this._cardData||{}).slug||"slug",e=`https://www.uniqode.com/store/starter-signup?${new URLSearchParams({trial_source:"dbc_leads_post_scan",product_selected:"DBC",utm_source:"post_exchange_cta_1",utm_medium:"CreateYourCard",card_source:n}).toString()}`;console.log("[SuccessDrawer] Create Card clicked:",e),this.emitEvent("create-card-click",{url:e,slug:n}),window.open(e,"_blank")},generateConfettiHTML:function(n,e,t,o){const a=this.getInitialsFromName?this.getInitialsFromName(n,e):((n||"").charAt(0)+(e||"").charAt(0)).toUpperCase(),i=this.hexToRgba(o,.2),s='\n <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M11.6667 3.5L5.25 9.91667L2.33333 7" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n ';return t?`\n <div class="uqc-confetti-wrapper">\n <img src="${t}" alt="${n}" class="uqc-confetti-user-image" />\n <div class="uqc-confetti-check">${s}</div>\n </div>\n `:n?`\n <div class="uqc-confetti-wrapper">\n <div class="uqc-confetti-initials" style="background: ${i}; color: ${o};">\n <span>${a}</span>\n </div>\n <div class="uqc-confetti-check">${s}</div>\n </div>\n `:`\n <div class="uqc-confetti-wrapper">\n <div class="uqc-confetti-initials" style="background: ${i}; color: ${o};">\n <span>??</span>\n </div>\n <div class="uqc-confetti-check">${s}</div>\n </div>\n `},hexToRgba:function(n,e=.15){return n?(3===(n=n.replace("#","")).length&&(n=n.split("").map(n=>n+n).join("")),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${e})`):`rgba(22, 113, 249, ${e})`}},p={getReportContentTemplate:function(){return'\n <style>\n /* Report Content Container - Absolute position within card at bottom right */\n .uqc-report-container {\n position: absolute;\n bottom: 80px; /* Above footer buttons (footer is ~60px + 20px margin) */\n right: 16px;\n display: flex;\n justify-content: flex-end;\n width: auto;\n padding: 0;\n box-sizing: border-box;\n z-index: 2147483005; /* Higher than footer buttons (1000) and lead form (2147483004) */\n pointer-events: auto; /* Ensure button is clickable */\n }\n\n /* Ellipsis Button Container */\n .uqc-ellipsis-container {\n position: relative;\n min-width: 30px;\n max-height: 30px;\n z-index: 2147483005; /* Ensure button is clickable above other elements */\n }\n\n /* Three-dot Ellipsis Button */\n .uqc-ellipsis-button {\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 26px;\n line-height: 1;\n padding: 0;\n margin: 0;\n color: #666;\n transition: color 0.2s ease;\n font-weight: bold;\n letter-spacing: -2px;\n }\n\n .uqc-ellipsis-button:hover {\n color: #333;\n }\n\n .uqc-ellipsis-button:focus {\n outline: 2px solid #2595FF;\n outline-offset: 2px;\n border-radius: 4px;\n }\n\n /* Report Dropdown */\n .uqc-report-dropdown {\n display: none;\n position: absolute;\n right: 0;\n bottom: 40px; /* Position above the button */\n background-color: #f5f5f5;\n box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n z-index: 2147483006; /* Highest - above everything else */\n min-width: 150px;\n white-space: nowrap;\n }\n\n .uqc-report-dropdown.show {\n display: block;\n }\n\n /* Report Content Link */\n .uqc-report-btn {\n background: transparent !important;\n font-size: 13px;\n padding: 10px !important;\n text-decoration: none !important;\n display: block;\n text-transform: capitalize;\n color: red !important;\n line-height: 1.5 !important;\n margin: 0;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n }\n\n .uqc-report-btn:hover {\n background-color: rgba(255, 0, 0, 0.05) !important;\n }\n\n .uqc-report-btn:focus {\n outline: 2px solid #2595FF;\n outline-offset: -2px;\n }\n\n /* Hide report content in preview modes */\n :host(.uqc-platform-dashboard) .uqc-report-container,\n :host(.uqc-platform-mobile) .uqc-report-container {\n display: none;\n }\n </style>\n \n <div class="uqc-report-container">\n <div class="uqc-ellipsis-container">\n <button \n class="uqc-ellipsis-button" \n id="uqc-ellipsis-button"\n aria-label="Open report menu"\n type="button"\n >\n ⋮\n </button>\n </div>\n <div class="uqc-report-dropdown" id="uqc-report-dropdown">\n <a \n class="uqc-report-btn" \n id="uqc-report-btn"\n role="button"\n tabindex="0"\n >\n Report Content\n </a>\n </div>\n </div>\n '},renderReportContent:function(){return this.getReportContentTemplate()},attachReportContentListeners:function(){const n=this._shadowRoot?.querySelector("#uqc-ellipsis-button"),e=this._shadowRoot?.querySelector("#uqc-report-dropdown"),t=this._shadowRoot?.querySelector("#uqc-report-btn");n&&e&&t?(n.addEventListener("click",n=>{n.stopPropagation(),this.toggleReportDropdown()}),t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.openReportForm(),this.closeReportDropdown()}),t.addEventListener("keydown",n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),this.openReportForm(),this.closeReportDropdown())}),this._shadowRoot.addEventListener("click",n=>{n.target.closest(".uqc-report-container")||this.closeReportDropdown()}),console.log("[ReportContent] Event listeners attached")):console.log("[ReportContent] Elements not found - skipping listeners")},toggleReportDropdown:function(){const n=this._shadowRoot?.querySelector("#uqc-report-dropdown");n&&(n.classList.contains("show")?this.closeReportDropdown():this.openReportDropdown())},openReportDropdown:function(){const n=this._shadowRoot?.querySelector("#uqc-report-dropdown");n&&(n.classList.add("show"),console.log("[ReportContent] Dropdown opened"))},closeReportDropdown:function(){const n=this._shadowRoot?.querySelector("#uqc-report-dropdown");n&&n.classList.remove("show")},openReportForm:function(){const n=this._cardData||{},e=n.product_id||n.id,t=n.product_type||"dbc",o=n.ip_address||"",a=`${window.location.origin}/report-content/form?product=${e}&product_type=${t}&ip_address=${o}`;console.log("[ReportContent] Opening report form:",a),window.open(a,"_blank","noopener,noreferrer"),this.emitEvent("report-content-opened",{productId:e,productType:t,timestamp:(new Date).toISOString()})}},g="1.0.3",f=(new Date).toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0});"undefined"!=typeof window&&(console.log(`%c📦 v${g} | Built: ${f}`,"color: #00ff00; font-weight: bold; font-size: 14px;"),console.log("%c✅ Using npm-linked LOCAL library (not published version)","color: #00ff00; font-weight: bold; font-size: 14px;")),"undefined"!=typeof window&&(window.UniqodeCardConfig?window.UniqodeCardConfig.EVENTS?console.log("%c[UniqodeCardTemplates] Config already complete (skipping)","color: #f59e0b;"):(window.UniqodeCardConfig.EVENTS=s,console.log("%c[UniqodeCardTemplates] EVENTS merged into existing config","color: #10b981;")):(window.UniqodeCardConfig={EVENTS:s},console.log("%c[UniqodeCardTemplates] Config initialized (first time)","color: #10b981;")));const m="undefined"!=typeof window&&"open"===window.UniqodeCardConfig?.shadowMode?"open":"closed";class v extends HTMLElement{static get EVENTS(){return s}constructor(){super(),this._shadowRoot=this.attachShadow({mode:m}),Object.assign(this,c),Object.assign(this,l),Object.assign(this,d),Object.assign(this,u),Object.assign(this,h),Object.assign(this,p),this._cardData={},this._config={},this._isConnected=!1,this._eventListeners=new Map,this._lastDataString="",this._lastConfigString="",this.handleCardShare=this.handleCardShare.bind(this),this.handleContactClick=this.handleContactClick.bind(this),this.handleSaveContact=this.handleSaveContact.bind(this),this.handleLeadCollect=this.handleLeadCollect.bind(this),this.handleSocialClick=this.handleSocialClick.bind(this),this.handleCustomFieldClick=this.handleCustomFieldClick.bind(this)}getShadowMode(){return m}static getShadowDOMMode(){return m}static get observedAttributes(){return["card-data","config","data-source","config-source"]}connectedCallback(){this._isConnected=!0,v._versionLogged||(v._versionLogged=!0),this.loadFontAwesome(),this._shadowRoot.innerHTML=this.getTemplate(),this.loadFontAwesomeInShadowDOM(),this.loadData(),this.loadConfig(),this.applyPlatformClass(),this.setupComponent(),this.setupEventListeners(),this.render(),this.emitEvent(s.CARD_READY,{layout:this.constructor.layoutId,hasData:Object.keys(this._cardData).length>0,hasConfig:Object.keys(this._config).length>0,version:g})}disconnectedCallback(){this._isConnected=!1,this.cleanup()}attributeChangedCallback(n,e,t){if(this._isConnected&&e!==t)switch(n){case"card-data":this.handleCardDataAttribute(t);break;case"config":this.handleConfigAttribute(t);break;case"data-source":this.loadDataFromSource(t);break;case"config-source":this.loadConfigFromSource(t)}}loadData(){const n=this.getAttribute("data-source");if(n&&this.loadDataFromSource(n))return;const e=this.getAttribute("card-data");e&&this.handleCardDataAttribute(e)||this._cardData&&Object.keys(this._cardData).length>0||console.warn("[UniqodeCard] No card data provided. Use data-source, card-data attribute, or set cardData property.")}loadConfig(){const n=this.getAttribute("config-source");if(n&&this.loadConfigFromSource(n))return;const e=this.getAttribute("config");e&&this.handleConfigAttribute(e)||(this._config={...this.getDefaultConfig(),...this._config})}loadDataFromSource(n){try{const e=document.getElementById(n);if(!e)return console.warn(`[UniqodeCard] Data source element #${n} not found`),!1;const t=e.textContent.trim();return t===this._lastDataString||(this._cardData=JSON.parse(t),this._lastDataString=t,this._isConnected&&this.render()),!0}catch(n){return console.error("[UniqodeCard] Error loading data from source:",n),!1}}loadConfigFromSource(n){try{const e=document.getElementById(n);if(!e)return console.warn(`[UniqodeCard] Config source element #${n} not found`),!1;const t=e.textContent.trim();return t===this._lastConfigString||(this._config={...this.getDefaultConfig(),...JSON.parse(t)},this._lastConfigString=t,this._isConnected&&this.render()),!0}catch(n){return console.error("[UniqodeCard] Error loading config from source:",n),!1}}handleCardDataAttribute(n){if(!n||n===this._lastDataString)return!1;try{return this._cardData=JSON.parse(n),this._lastDataString=n,this._isConnected&&this.render(),!0}catch(n){return console.error("[UniqodeCard] Invalid card-data JSON:",n),!1}}handleConfigAttribute(n){if(!n||n===this._lastConfigString)return!1;try{return this._config={...this.getDefaultConfig(),...JSON.parse(n)},this._lastConfigString=n,this._isConnected&&this.render(),!0}catch(n){return console.error("[UniqodeCard] Invalid config JSON:",n),!1}}set cardData(n){if(!n)return void console.warn("[UniqodeCard] Card data is null or undefined");const e=(0,o.validateCardData)(n);e.isValid||console.warn("[UniqodeCard] Invalid card data:",e.errors);const t=JSON.stringify(n);if(t===this._lastDataString)return void console.log("%c[BaseCard] ⏭️ Render skipped - no data change","color: #fbbf24; font-weight: bold");console.log("%c[BaseCard] 🔄 CardData updated - will render","color: #10b981; font-weight: bold");const a=JSON.parse(t);this._lastDataString=t;const i=this._currentLanguage||"";if(this._originalCardData=a,i&&"function"==typeof this.getLanguageData){const n=this.getLanguageData(i);this._cardData={...a,...n}}else this._cardData=a;this._isConnected&&(this.render(),this._autoOpenChecked||(this._autoOpenChecked=!0,Promise.resolve().then(()=>{console.log("%c[BaseCard] ⏰ Microtask executed - ALL bindings should be set now","color: #00ffaa; font-weight: bold;"),this.checkAutoOpenLeadForm()})))}get cardData(){return JSON.parse(JSON.stringify(this._cardData))}refresh(){console.log("%c[BaseCard] 🔄 Manual refresh requested","color: #10b981; font-weight: bold"),this._isConnected&&(this._lastDataString=null,this.render())}set config(n){const e=JSON.stringify(n);e!==this._lastConfigString&&(this._config={...this.getDefaultConfig(),...n},this._lastConfigString=e,this.applyPlatformClass(),this._isConnected&&this.render())}applyPlatformClass(){const n=this._config?.platform||"server";this.classList.remove("uqc-platform-server","uqc-platform-dashboard","uqc-platform-mobile"),this.classList.add(`uqc-platform-${n}`)}get config(){return{...this._config}}getDefaultConfig(){return{showProfileImage:!0,showLogo:!0,enableSharing:!0,enableLeadCollection:!1,compactMode:!1,theme:"auto"}}emitEvent(n,e={}){console.log(`%c[BaseCard] 📤 Event: ${n}`,"color: #3b82f6; font-weight: bold",e);const t=new CustomEvent(n,{bubbles:!0,composed:!0,cancelable:!0,detail:{...e,timestamp:Date.now(),layout:this.constructor.layoutId}});return this.dispatchEvent(t)}handleContactClick(n,e,t){const o={type:n,value:e,label:t};this.emitEvent(s.CONTACT_CLICK,o)&&this.defaultContactAction(n,e)}defaultContactAction(n,e){try{switch(n){case"email":window.location.href=`mailto:${e}`;break;case"phone":window.location.href=`tel:${e}`;break;case"website":const n=e.startsWith("http")?e:`https://${e}`;window.open(n,"_blank","noopener,noreferrer");break;case"address":const t=`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(e)}`;window.open(t,"_blank","noopener,noreferrer")}}catch(e){console.warn(`[UniqodeCard] Failed to execute ${n} action:`,e)}}handleSaveContact(){const n=this.generateVCard(),e={vcardData:n,cardData:this._cardData};this.emitEvent(s.SAVE_CONTACT,e)&&this.downloadVCard(n)}handleCardShare(){const n={title:`${this._cardData.first_name||""} ${this._cardData.last_name||""}`.trim(),text:"Check out my digital business card",url:window.location.href},e={shareData:n,cardData:this._cardData};this.emitEvent("share",e)&&this.defaultShareAction(n)}handleLeadCollect(n){const e={leadData:n,cardData:this._cardData};this.emitEvent("lead-collect",e)}handleSocialClick(n,e){const t={platform:n,url:e};this.emitEvent(s.SOCIAL_CLICK,t)&&window.open(e,"_blank","noopener,noreferrer")}handleCustomFieldClick(n,e){const t={fieldId:n,fieldValue:e};this.emitEvent("custom-field-click",t)}getInitials(){const{first_name:n="",last_name:e=""}=this._cardData;return(0,a.getInitials)(n,e)}hexToRGBA(n,e=.2){return(0,i.hexToRGBA)(n,e)}getFullName(){const{prefix:n,first_name:e="",last_name:t="",suffix:o}=this._cardData;let a="";return n&&(a+=n+" "),a+=e,t&&(a+=" "+t),o&&(a+=", "+o),a.trim()}generateVCard(){const{first_name:n,last_name:e,company:t,designation:o,email_v2:a,phone_v2:i,website_v2:s,address_v2:r}=this._cardData;let c="BEGIN:VCARD\nVERSION:3.0\n";return c+=`FN:${n||""} ${e||""}\n`,c+=`N:${e||""};${n||""};;;\n`,t&&(c+=`ORG:${t}\n`),o&&(c+=`TITLE:${o}\n`),a&&a.length>0&&a.forEach(n=>{n.value&&(c+=`EMAIL;TYPE=INTERNET:${n.value}\n`)}),i&&i.length>0&&i.forEach(n=>{n.value&&(c+=`TEL;TYPE=VOICE:${n.value}\n`)}),s&&s.length>0&&s[0].value&&(c+=`URL:${s[0].value}\n`),r&&(c+=`ADR;TYPE=WORK:;;${r};;;;\n`),c+="END:VCARD",c}downloadVCard(n){const e=new Blob([n],{type:"text/vcard;charset=utf-8"}),t=URL.createObjectURL(e),o=document.createElement("a"),a=`${this._cardData.first_name||"contact"}_${this._cardData.last_name||"card"}.vcf`;o.href=t,o.download=a,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(t)}defaultShareAction(n){navigator.share?navigator.share(n).catch(n=>{console.log("[UniqodeCard] Share cancelled or failed:",n)}):navigator.clipboard&&navigator.clipboard.writeText&&navigator.clipboard.writeText(n.url).then(()=>{console.log("[UniqodeCard] Link copied to clipboard")}).catch(n=>{console.warn("[UniqodeCard] Failed to copy link:",n)})}getContactIcon(n){const e={phone:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/>\n </svg>',email:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.89 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/>\n </svg>',website:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/>\n </svg>',address:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>\n </svg>',custom:'<svg viewBox="0 0 24 24" fill="currentColor">\n <path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>\n </svg>'};return e[n]||e.custom}setupComponent(){}setupEventListeners(){}cleanup(){this._eventListeners.forEach((n,e)=>{e.removeEventListener(n.event,n.handler)}),this._eventListeners.clear()}getCustomization(){const n=this._cardData?.customizations||{};return!this._customizationsLogged&&Object.keys(n).length>0?(console.log("%c[BaseCard] ✅ Customizations loaded:","color: #10b981; font-weight: bold",n),this._customizationsLogged=!0):this._customizationsLogged||(console.warn("%c[BaseCard] ⚠️ No customizations found in cardData","color: #ef4444; font-weight: bold"),this._customizationsLogged=!0),n}extractColors(){const n=this.getCustomization(),e=n.typography||{},t=n.background||{},o=t.value&&(t.value.startsWith("http://")||t.value.startsWith("https://")||t.value.startsWith("data:")),a="image"===t.type&&o?`url(${t.value})`:t.value||n.background_color||"#FFFFFF",i={"card-bg":a,"button-color":n.button_color,"icon-color":n.icon_color,"secondary-color":n.secondary_color,"user-info-color":n.user_info_color,"primary-color":n.background_color,"divider-color":this.getDarkerColor(a,15)};return e.personal_info&&(i["personal-info-color"]=e.personal_info.google_font_colour),e.company_details&&(i["company-details-color"]=e.company_details.google_font_colour),e.contact_details&&(i["contact-details-color"]=e.contact_details.google_font_colour),e.bio&&(i["bio-color"]=e.bio.google_font_colour),e.button&&(i["button-text-color"]=e.button.google_font_colour),e.button&&(i["button-text-color-typo"]=e.button.google_font_colour||i["button-text-color"]),i}getFontWeight(n){return{Thin:100,"Extra Light":200,Light:300,Regular:400,Medium:500,"Semi Bold":600,Bold:700,"Extra Bold":800,Black:900}[n]||400}extractTypography(){const n=this.getCustomization(),e=n.typography||{};return{fontFamily:e.font_family||n.font_style||"Roboto",fontType:e.font_type||n.font_type||"google",customFontUrl:n.custom_font_url||"",personalInfo:{fontSize:e.personal_info?.google_font_size||n.title_font_size||24,fontStyle:e.personal_info?.google_font_style||n.profile_info||"Semi Bold",fontWeight:this.getFontWeight(e.personal_info?.google_font_style||n.profile_info||"Semi Bold"),fontColor:e.personal_info?.google_font_colour||n.user_info_color||"#000000"},companyDetails:{fontSize:e.company_details?.google_font_size||16,fontStyle:e.company_details?.google_font_style||n.company_details||"Regular",fontWeight:this.getFontWeight(e.company_details?.google_font_style||n.company_details||"Regular"),fontColor:e.company_details?.google_font_colour||"#000000"},contactDetails:{fontSize:e.contact_details?.google_font_size||14,fontStyle:e.contact_details?.google_font_style||n.contact_details||"Medium",fontWeight:this.getFontWeight(e.contact_details?.google_font_style||n.contact_details||"Medium"),fontColor:e.contact_details?.google_font_colour||"#000000"},bio:{fontSize:e.bio?.google_font_size||16,fontStyle:e.bio?.google_font_style||"Regular",fontWeight:this.getFontWeight(e.bio?.google_font_style||"Regular"),fontColor:e.bio?.google_font_colour||"#000000"},button:{fontSize:e.button?.google_font_size||20,fontStyle:e.button?.google_font_style||n.button||"Regular",fontWeight:this.getFontWeight(e.button?.google_font_style||n.button||"Regular"),fontColor:e.button?.google_font_colour||"#FFFFFF"}}}extractBackground(){const n=this.getCustomization(),e=n.background||{};return{type:e.type||"color",value:e.value||n.background_color||"#FFFFFF",color:n.background_color||e.value||"#FFFFFF"}}getAllCustomizations(){return{colors:this.extractColors(),typography:this.extractTypography(),background:this.extractBackground(),raw:this.getCustomization()}}applyCustomColors(){const n=this.extractColors(),e=this.extractTypography(),t=this.extractBackground();this._colors=n,this._typography=e,this._background=t;const o=this._shadowRoot?.querySelector(".uqc-card-container"),a=this._shadowRoot?.host;if(!o)return;const i=e=>{Object.entries(n).forEach(([n,t])=>{e.style.setProperty(`--${n}`,t)})};i(o),a&&i(a);const s=n=>{n.style.setProperty("--font-family",e.fontFamily),n.style.setProperty("--font-type",e.fontType),n.style.setProperty("--personal-info-size",`${e.personalInfo.fontSize}px`),n.style.setProperty("--personal-info-style",e.personalInfo.fontStyle),n.style.setProperty("--personal-info-weight",e.personalInfo.fontWeight),n.style.setProperty("--personal-info-color",e.personalInfo.fontColor),n.style.setProperty("--company-details-size",`${e.companyDetails.fontSize}px`),n.style.setProperty("--company-details-style",e.companyDetails.fontStyle),n.style.setProperty("--company-details-weight",e.companyDetails.fontWeight),n.style.setProperty("--company-details-color",e.companyDetails.fontColor),n.style.setProperty("--contact-details-size",`${e.contactDetails.fontSize}px`),n.style.setProperty("--contact-details-style",e.contactDetails.fontStyle),n.style.setProperty("--contact-details-weight",e.contactDetails.fontWeight),n.style.setProperty("--contact-details-color",e.contactDetails.fontColor),n.style.setProperty("--bio-size",`${e.bio.fontSize}px`),n.style.setProperty("--bio-style",e.bio.fontStyle),n.style.setProperty("--bio-weight",e.bio.fontWeight),n.style.setProperty("--bio-color",e.bio.fontColor),n.style.setProperty("--button-size",`${e.button.fontSize}px`),n.style.setProperty("--button-style",e.button.fontStyle),n.style.setProperty("--button-weight",e.button.fontWeight),n.style.setProperty("--button-text-color-final",e.button.fontColor)};s(o),a&&s(a),"image"===t.type&&t.value?(o.style.backgroundSize="cover",o.style.backgroundPosition="center",o.style.backgroundRepeat="no-repeat"):(o.style.backgroundSize="",o.style.backgroundPosition="",o.style.backgroundRepeat=""),"google"===e.fontType&&e.fontFamily?this.loadGoogleFont(e.fontFamily):e.customFontUrl&&this.loadCustomFont(e.customFontUrl,e.fontFamily)}applyPreviewModeStyles(){const n=this._config||{};if("dashboard"!==n.platform&&!n.previewMode)return;console.log("[BaseCard] 🚫 Applying preview mode styles (clicks disabled)");const e=document.createElement("style");e.id="uqc-preview-mode-styles",e.textContent="\n /* Disable clicks on social links */\n .uqc-social-links,\n .uqc-social-icon,\n .uqc-social-link,\n .uqc-social-section {\n pointer-events: none !important;\n cursor: default !important;\n }\n \n /* Disable clicks on contact info */\n .uqc-contact-info,\n .uqc-contact-item,\n .uqc-contact-value,\n .uqc-phone-item,\n .uqc-email-item,\n .uqc-address-item {\n pointer-events: none !important;\n cursor: default !important;\n }\n \n /* Disable clicks on custom fields */\n .uqc-custom-fields,\n .uqc-custom-field {\n pointer-events: none !important;\n cursor: default !important;\n }\n \n /* Hide success drawer completely (post-scan feedback) */\n #uqc-success-drawer,\n #uqc-success-overlay {\n display: none !important;\n }\n \n /* Language dropdown and lead form toggle REMAIN ENABLED */\n /* (they have their own specific classes, not affected by above rules) */\n ";const t=this._shadowRoot.querySelector("#uqc-preview-mode-styles");t&&t.remove(),this._shadowRoot.appendChild(e)}loadGoogleFont(n){if(!n)return;const e=`google-font-${n.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(e))return;const t=document.createElement("link");t.id=e,t.rel="stylesheet",t.href=`https://fonts.googleapis.com/css2?family=${n.replace(/\s+/g,"+")}:wght@300;400;500;600;700&display=swap`,document.head.appendChild(t),console.log(`[BaseCard] 🔤 Loaded Google Font: ${n}`)}loadCustomFont(n,e){if(!n)return;const t=`custom-font-${e.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(t))return;const o=document.createElement("style");o.id=t,o.textContent=`\n @font-face {\n font-family: '${e}';\n src: url('${e}');\n font-display: swap;\n }\n `,document.head.appendChild(o)}loadFontAwesome(){if(document.getElementById("font-awesome-cdn")||document.querySelector('link[href*="font-awesome"]'))return;const n=document.createElement("link");n.id="font-awesome-cdn",n.rel="stylesheet",n.href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css",n.integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ==",n.crossOrigin="anonymous",n.referrerPolicy="no-referrer",document.head.appendChild(n)}loadFontAwesomeInShadowDOM(){if(this._shadowRoot.querySelector('link[href*="font-awesome"]'))return;const n=document.createElement("link");n.rel="stylesheet",n.href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css",n.integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ==",n.crossOrigin="anonymous",this._shadowRoot.prepend(n)}getColor(n){if(this._colors&&this._colors[n])return this._colors[n];const e=this._shadowRoot?.querySelector(".uqc-card-container");return e?.style.getPropertyValue(`--${n}`)||"#000000"}getTypography(){return this._typography||this.extractTypography()}getTypographyFor(n){return this.getTypography()[n]||{fontSize:14,fontStyle:"Regular",fontColor:"#000000"}}getBackground(){return this._background||this.extractBackground()}getFontFamily(){return this.getTypography().fontFamily}getPersonalInfo(){const{first_name:n,last_name:e,prefix:t,suffix:o,pronouns_v2:a,designation:i,company:s,department:r,summary:c}=this._cardData;return{fullName:this.getFullName(),firstName:n,lastName:e,prefix:t,suffix:o,pronouns:a,designation:i,company:s,department:r,summary:c,initials:this.getInitials()}}getContactInfo(){const{phone_v2:n,email_v2:e,website_v2:t,address_v2:o,custom_fields:a,contact_info_ordering:i}=this._cardData,s={phone_v2:n||[],email_v2:e||[],website_v2:t||[],address_v2:o||"",custom_fields:a||[]};return i?this.orderContactInfo(s,i):s}orderContactInfo(n,e){const t=Object.keys(e).sort((n,e)=>parseInt(n)-parseInt(e)).map(n=>e[n]),o=t.map(e=>({type:e,items:n[e]})),a=new Set(t);return Object.keys(n).forEach(e=>{!a.has(e)&&n[e]&&o.push({type:e,items:n[e]})}),o.filter(n=>"string"==typeof n.items?!!n.items:Array.isArray(n.items)&&n.items.length>0)}getSocialLinks(){const{social_links:n}=this._cardData;return n?Object.keys(n).filter(e=>n[e]).map(e=>({platform:e,url:n[e]})):[]}getImages(){return{cover:this._cardData?.cover_image_url||"",profile:this._cardData?.user_image_url||"",logo:this._cardData?.logo_url||"",logoSize:this._cardData?.logo_size??80}}getStickyButtonTemplate(){const n=this._config||{},e=n.leadCollection||!1,t=n.showConnectButtons||!1,o=n.hideFooter||!1,a=n.pwaPreview||!1,i=this._cardData?.autodownload_url||"#";return`\n <style>\n .fixed-btn-container {\n position: fixed;\n display: ${a?"none":"flex"};\n flex-direction: column;\n max-width: 500px;\n bottom: 0px;\n padding: 12px 0px;\n background: rgba(255, 255, 255, 0.80);\n box-shadow: 0px -4px 4px 0px rgba(0, 0, 0, 0.04);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n width: -webkit-fill-available;\n align-items: center;\n z-index: 1000;\n }\n\n .btn, .btn-exchange {\n background-color: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n height: 48px;\n width: 90%;\n cursor: pointer;\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n font-size: 18px;\n font-weight: 400;\n font-family: 'Inter', sans-serif;\n }\n\n #btn-connect-container {\n display: ${t?"flex":"none"};\n justify-content: space-between;\n align-items: center;\n height: 48px;\n width: 90%;\n gap: 16px;\n }\n\n .btn-connect {\n border: 1px solid var(--button-color, #203D99);\n color: var(--button-color, #203D99);\n background: transparent;\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n cursor: pointer;\n width: 100%;\n height: 46px;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n }\n\n .btn-create {\n background: var(--button-color, #203D99);\n color: var(--button-text-color, #EBEBEB);\n border: none;\n border-radius: 10px;\n box-shadow: 0px 4px 4px rgba(98, 62, 9, 0.16);\n cursor: pointer;\n width: 100%;\n height: 48px;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n }\n\n .uniqode-branding-footer {\n display: ${o?"none":"flex"};\n justify-content: center;\n align-items: center;\n padding: 12px 0px 0px 0px;\n }\n\n .uniqode-branding-footer-text {\n line-height: 17px;\n font-size: 14px;\n font-weight: 400;\n font-family: 'Inter', sans-serif;\n }\n \n .uniqode-logo-image {\n height: 16px;\n width: auto;\n margin-left: 5px;\n margin-top: 4px;\n }\n\n .create-your-free-card-link {\n text-decoration: underline;\n color: inherit;\n cursor: pointer;\n }\n </style>\n \n <div class="fixed-btn-container">\n ${e?this.getExchangeButtonsHTML(t):this.getAddToContactHTML(i)}\n ${this.getFooterHTML()}\n </div>\n `}getAddToContactHTML(n){return'\n <div class="btn" id="add-to-contact-main-page" data-add-to-contact>\n <svg width="22" height="22" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <g clip-path="url(#clip0_434_678)">\n <path d="M10.6667 14V12.6667C10.6667 11.9594 10.3857 11.2811 9.88564 10.781C9.38554 10.281 8.70726 10 8.00002 10H3.33335C2.62611 10 1.94783 10.281 1.44774 10.781C0.947639 11.2811 0.666687 11.9594 0.666687 12.6667V14M13.3334 5.33333V9.33333M15.3334 7.33333H11.3334M8.33335 4.66667C8.33335 6.13943 7.13945 7.33333 5.66669 7.33333C4.19393 7.33333 3.00002 6.13943 3.00002 4.66667C3.00002 3.19391 4.19393 2 5.66669 2C7.13945 2 8.33335 3.19391 8.33335 4.66667Z" stroke="var(--button-text-color, #EBEBEB)" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>\n </g>\n <defs>\n <clipPath id="clip0_434_678">\n <rect width="16" height="16" fill="white"/>\n </clipPath>\n </defs>\n </svg>\n <span>Add to Contacts</span>\n </div>\n '}getExchangeButtonsHTML(n){return`\n <div class="btn-exchange" id="btn-exchange" style="display: ${n?"none":"flex"};" data-exchange-contacts>\n <i class="fas fa-exchange-alt" style="color: var(--button-text-color, #EBEBEB); font-size: 22px;"></i>\n <span>Exchange Contacts</span>\n </div>\n\n <div id="btn-connect-container">\n <button class="btn-connect" id="btn-connect" data-connect>\n Connect\n </button>\n <button class="btn-create" id="btn-create" data-create-card>\n Create Now\n </button>\n </div>\n `}getFooterHTML(){const n=(this._config||{}).hidePoweredBy||!1,e=this._cardData?.slug||"slug";return`\n <div id="footer-with-exchange" class="uniqode-branding-footer">\n <span class="uniqode-branding-footer-text"> \n ${n?"Created with":'<a href="#" class="create-your-free-card-link" data-footer-cta data-card-slug="'+e+'">Create your free card</a> with'}\n </span> \n <a href="https://www.uniqode.com/digital-business-card?utm_source=dbc_footer&utm_medium=referral&utm_campaign=flywheel"\n target="_blank" rel="noopener" data-footer-logo>\n <img src="${this._cardData?.static_assets_url||""}/static/images/footer/uniqode.svg" alt="Uniqode Logo" class="uniqode-logo-image">\n </a>\n </div>\n `}getButtonTextColor(n){const e=n.replace("#","");return(299*parseInt(e.substring(0,2),16)+587*parseInt(e.substring(2,4),16)+114*parseInt(e.substring(4,6),16))/1e3>186?"#000000":"#ffffff"}hexToHSL(n){n=n.replace("#","");const e=parseInt(n.substring(0,2),16)/255,t=parseInt(n.substring(2,4),16)/255,o=parseInt(n.substring(4,6),16)/255,a=Math.max(e,t,o),i=Math.min(e,t,o);let s,r,c=(a+i)/2;if(a===i)s=r=0;else{const n=a-i;switch(r=c>.5?n/(2-a-i):n/(a+i),a){case e:s=((t-o)/n+(t<o?6:0))/6;break;case t:s=((o-e)/n+2)/6;break;case o:s=((e-t)/n+4)/6}}return{h:360*s,s:100*r,l:100*c}}hslToHex(n,e,t){t/=100;const o=(e/=100)*Math.min(t,1-t),a=e=>{const a=(e+n/30)%12,i=t-o*Math.max(Math.min(a-3,9-a,1),-1);return Math.round(255*i).toString(16).padStart(2,"0")};return`#${a(0)}${a(8)}${a(4)}`}generateColorPalette(n,e){if(!n)return[];const t=this.hexToHSL(n);return e.map(n=>this.hslToHex(t.h,t.s,n))}getDarkerColor(n,e=10){if(!n)return"#E0E0E0";try{const t=this.hexToHSL(n),o=Math.max(0,t.l-e);return this.hslToHex(t.h,t.s,o)}catch(n){return console.warn("[BaseCard] getDarkerColor failed:",n),"#E0E0E0"}}attachStickyButtonListeners(){this._shadowRoot.querySelector("[data-add-to-contact]")?.addEventListener("click",n=>{const e=this._cardData?.autodownload_url;this.emitEvent(s.ADD_TO_CONTACT_CLICK,{url:e})}),this._shadowRoot.querySelector("[data-exchange-contacts]")?.addEventListener("click",()=>{this.openLeadForm(),this.emitEvent(s.EXCHANGE_CONTACTS_CLICK)}),this._shadowRoot.querySelector("[data-connect]")?.addEventListener("click",()=>{this.emitEvent(s.CONNECT_CLICK)}),this._shadowRoot.querySelector("[data-create-card]")?.addEventListener("click",n=>{const e=this._cardData?.slug||"slug";this.emitEvent(s.CREATE_NOW_CLICK,{slug:e})}),this._shadowRoot.querySelector("[data-footer-cta]")?.addEventListener("click",n=>{n.preventDefault();const e=n.target.getAttribute("data-card-slug");this.emitEvent(s.FOOTER_CTA_CLICK,{slug:e})}),this._shadowRoot.querySelector("[data-footer-logo]")?.addEventListener("click",()=>{this.emitEvent(s.FOOTER_LOGO_CLICK)})}showConnectButtons(){this._config.showConnectButtons=!0,this._config.hideFooter=!0;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="none"),e&&(e.style.display="flex"),t&&(t.style.display="none"),console.log("[StickyButton] State changed: showing Connect + Create Now buttons")}resetToExchangeButton(){this._config.showConnectButtons=!1,this._config.hideFooter=!1;const n=this._shadowRoot.getElementById("uqc-btn-exchange"),e=this._shadowRoot.getElementById("uqc-btn-connect-container"),t=this._shadowRoot.getElementById("uqc-footer-with-exchange");n&&(n.style.display="flex"),e&&(e.style.display="none"),t&&(t.style.display="flex")}checkAutoOpenLeadForm(){const n=this._cardData||{},e=this._config||{},t=n.lead_attribute||{};if("dashboard"===e.platform||!0===e.previewMode)return;const o=t.connection;!n.lead_collection||"1"!==o&&1!==o?console.log("[LeadForm] Auto-open skipped:",{lead_collection:n.lead_collection,connection:o,has_lead_attribute:!!n.lead_attribute}):setTimeout(()=>{this.openLeadForm&&(this.openLeadForm(),this.emitEvent(s.LEAD_FORM_OPEN,{source:"automatic"}))},200)}render(){throw new Error(`render() method must be implemented by ${this.constructor.name}`)}getTemplate(){throw new Error(`getTemplate() method must be implemented by ${this.constructor.name}`)}static get layoutId(){throw new Error(`layoutId must be defined by ${this.name} class`)}static get version(){return"1.0.0"}}}},e={};function t(o){var a=e[o];if(void 0!==a)return a.exports;var i=e[o]={exports:{}};return n[o](i,i.exports,t),i.exports}t.d=function(n,e){for(var o in e)t.o(e,o)&&!t.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:e[o]})},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var o={};t.d(o,{DN:function(){return i.D},Dp:function(){return c},Hr:function(){return m},IM:function(){return g},Kp:function(){return a.K},TZ:function(){return r},Uv:function(){return f},aR:function(){return s.aR},hq:function(){return d},iu:function(){return v},ne:function(){return l},o1:function(){return h},w5:function(){return p},wE:function(){return b},zX:function(){return u}});var a=t(583),i=t(861),s=t(951),r=t(59),c=t(750),l=t(688);const d={name:"Uniqode Card Templates",version:"1.0.2",description:"Universal card layout components for web applications",author:"Uniqode Team",license:"MIT"},{hexToRGBA:u,isValidColor:h,getContrastColor:p}=r,{getInitials:g,getInitialsWithFallback:f}=c,{validateCardData:m,sanitizeCardData:v,getDefaultCardData:b}=l;"undefined"!=typeof window&&!1!==window.UNIQODE_AUTO_REGISTER&&(console.log(`🎉 ${d.name} v${d.version} loaded`),console.log("📦 Available components:",["uniqode-layout-12","uniqode-layout-13"])),"undefined"!=typeof window&&(window.UniqodeCardTemplates={...d,components:{BaseCard:s.aR,CardLayout12:a.K,CardLayout13:i.D},utils:{ColorUtils:r,InitialsUtils:c,ValidationUtils:l}}),o.Ay={...d,components:{BaseCard:s.aR,CardLayout12:a.K,CardLayout13:i.D},utils:{ColorUtils:r,InitialsUtils:c,ValidationUtils:l}};var y=o.aR,w=o.Kp,x=o.DN,q=o.TZ,C=o.Dp,_=o.hq,S=o.ne,k=o.Ay,L=o.w5,F=o.wE,E=o.IM,M=o.Uv,D=o.zX,$=o.o1,A=o.iu,z=o.Hr;export{y as BaseCard,w as CardLayout12,x as CardLayout13,q as ColorUtils,C as InitialsUtils,_ as LIBRARY_INFO,S as ValidationUtils,k as default,L as getContrastColor,F as getDefaultCardData,E as getInitials,M as getInitialsWithFallback,D as hexToRGBA,$ as isValidColor,A as sanitizeCardData,z as validateCardData};