{"version":3,"file":"shared.e_cXPWvr.mjs","names":["useState","useRef","React.useState","_Fragment","__esmMin","init_ssg_sandbox_shims","init_npm_react_18_3_1","window","Ha","ce","init_jsx_runtime","init_npm_react_dom_18_3_1","c","_e","de","fontStore","RenderTarget","addPropertyControls","init_framer_DymZktPS","useRouter","ControlType","navigateInSite","init_SiteNav","useBreakpointIndex","index","setIndex","read","w","BREAKPOINTS","getSafeHref","href","link","EXPLICIT_SCHEME","scheme","ALLOWED_SCHEMES","classifyLink","computeRel","tokens","newTab","seo","Button","hovered","setHovered","selfRef","insideLink","host","on","off","breakpoint","config","VARIANTS","variant","sizeConfig","SIZES","size","palette","theme","look","disabled","foreground","fontSize","TYPE","safeHref","linkKind","resolvedIcon","icon","AUTO_ICON","glyph","libraryIcon","ICONS","showCustomIcon","customIcon","opensNewTab","opticalTrim","paddingRight","nudge","stretch","fullWidth","fullWidthOnPhone","isLink","router","handleClick","event","onClick","Element","interactive","linkRel","ariaLabel","DURATION","FONT_FAMILY","FONT_WEIGHT","LINE_HEIGHT","style","label","i","customIconKeepColors","TOKENS","init_Button","props","k","LegalConsent","isCanvas","visible","setVisible","checked","setChecked","isDesktop","setIsDesktop","checkWidth","l","overlayStyle","titleStyle","textStyle","linkStyle","checkboxContainer","buttonStyle","init_LegalConsent","fonts","css","className","init_LY1AHEUfX"],"sources":["https:/framerusercontent.com/modules/5qPnWxYcsmVbrXlyHgCh/Aj70YEGWR1fNSbYIOz88/Button.js","https:/framerusercontent.com/modules/cgUwuny4nR1dJPxEX0jv/mlo0rWlsiQsgDvsMI2rT/LegalConsent.js","https:/framerusercontent.com/modules/2rRi3ovPIYkoNBFbgbce/4tnD0SoAWSnZ3nkARfZZ/LY1AHEUfX.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useRouter}from\"framer\";import{navigateInSite}from\"https://framerusercontent.com/modules/jE8EOHa8nk6ZbmZdMau4/axSVZ6nog9SYXzdzFfIU/SiteNav.js\";/**\n * Button — code version of the BLP Digital \"CTA\" Framer component (lBKViYvhP).\n *\n * The original packs ~25 styles × 2 hover states into 50 canvas variants, of\n * which a census of the published site found only 10 in use. Here that matrix\n * is factored into three independent axes:\n *\n *     variant  →  colour treatment   (WHAT it looks like)\n *     size     →  padding + type     (HOW big it is)\n *     icon     →  trailing glyph     (WHICH affordance it shows)\n *\n * So `Outline Blue small` becomes variant=\"secondary\" size=\"small\",\n * and `Link Blue External` becomes variant=\"link\" icon=\"external\".\n *\n * v2 adds \"Inside a link\" (insideLink): for a button drawn inside something\n * that is already a link, like a card whose whole surface is clickable. It\n * renders as a plain label (a <span>, no link or button of its own, since\n * interactive elements cannot be nested) and takes its hover state from the\n * surrounding link: hovering or focusing anywhere on the card lights it up.\n * See the migration table at the bottom for every original → code mapping.\n *\n * ── Editing guide ────────────────────────────────────────────────────────\n * Everything visual lives in the four tables below. To change how the\n * component looks you should never need to touch the render function:\n *\n *   TOKENS      colour values (mirrors the project's Color Styles)\n *   TYPE        font family / weight / per-breakpoint sizes\n *   SIZES       padding, gap, icon box, which type scale to use\n *   VARIANTS    rest + hover appearance for each colour treatment\n *\n * ── Layout ──────────────────────────────────────────────────────────────\n * Width is \"any\", not \"auto\", and that is what makes Full width and Fill on\n * phone work at all: with \"auto\" Framer sizes the layer to its content, so\n * the button's own width:100% resolves against a box that already hugs the\n * label. A component cannot widen its own wrapper — the layer has to be set\n * to Fill, and \"any\" is what allows that.\n *\n * Dropped on the canvas it still arrives at its intrinsic size, so nothing\n * about placing one changes.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 160\n * @framerIntrinsicHeight 40\n *//* ───────────────────────────── 1. Tokens ───────────────────────────────── *//** Mirrors the project's Color Styles. Update here, not inline. */const TOKENS={blpBlue:\"rgb(46, 117, 255)\",royalBlue:\"rgb(23, 108, 224)\",skyBlue:\"rgb(187, 218, 255)\",atlasBlue:\"rgb(0, 28, 84)\",/** The navbar's dark fill. Used by the navy pair on dark backgrounds. */deepNavy:\"rgb(10, 47, 103)\",/** One step up from deepNavy, so its hover reads as a lift. */deepNavyHover:\"rgb(19, 66, 136)\",white:\"rgb(255, 255, 255)\",pale:\"rgb(230, 241, 250)\",frost:\"rgb(247, 250, 255)\",transparent:\"rgba(0, 0, 0, 0)\"};/* ─────────────────────────── 2. Typography ─────────────────────────────── *//**\n * The original uses two text presets:\n *   button links → 14px, fixed at every breakpoint\n *   text links   → 16px desktop, 15px below 810px\n *\n * The button scale has since been raised to 16 — the size the button is meant\n * to be — with the original 14 kept as the compact step.\n * Sizes are [desktop, tablet, phone]; edit a row to change the whole scale.\n */const FONT_FAMILY='\"Roboto\", \"Roboto Placeholder\", sans-serif';const FONT_WEIGHT=500;const LINE_HEIGHT=\"1.4em\";/** Hover transition. Plain CSS so the canvas paints it without a runtime. */const DURATION=\"0.2s cubic-bezier(0.44, 0, 0.56, 1)\";const TYPE={/**\n     * 16 is the button's own size, and the one every padded variant resolves\n     * to on \"auto\". 14 is the compact step, kept for the places that were\n     * built around it — the navbar bar being the obvious one, where a taller\n     * button would push the bar open.\n     */button:[16,16,16],buttonSmall:[14,14,14],buttonBig:[20,20,20],link:[16,16,15],buttonCompact:[15,15,15]};/** Breakpoints taken from the published site's media queries. */const BREAKPOINTS={tablet:1200,phone:810};/* ───────────────────────────── 3. Sizes ───────────────────────────────── */const SIZES={small:{padY:6,padX:20,gap:12,icon:16,type:\"buttonSmall\"},/** 46px tall like the prototype's .btn: 22.4px line + 11px padding + 1px border, top and bottom. */medium:{padY:11,padX:24,gap:12,icon:16,type:\"button\"},/** Measured on the published site: Big keeps the padding, steps the type. */big:{padY:8,padX:24,gap:12,icon:20,type:\"buttonBig\"},/** Link styles are unpadded and use the larger, responsive text scale. */link:{padY:0,padX:0,gap:6,icon:14,type:\"link\"},/** 40px tall like the prototype's .btn-secondary: 21px line + 8.5px padding + 1px border, top and bottom. */compact:{padY:8.5,padX:20,gap:12,icon:16,type:\"buttonCompact\"}};const VARIANTS={/** Solid BLP blue. The main action on a light background. */primary:{rest:{background:TOKENS.blpBlue,border:TOKENS.transparent,foreground:TOKENS.white},hover:{background:TOKENS.royalBlue},size:\"medium\",/**\n         * Deep navy on dark backgrounds. The white label sits at 13:1 on it,\n         * but the button's own shape only separates from the page by however\n         * much the section is lighter than this fill — on Atlas Blue that is\n         * 1.25:1, and the button disappears. Use it on mid-dark sections and\n         * photographs, not on the darkest navy.\n         */dark:{rest:{background:TOKENS.deepNavy,border:TOKENS.transparent,foreground:TOKENS.white},hover:{background:TOKENS.deepNavyHover}}},/** Blue hairline that fills in on hover. The everyday second action. */secondary:{rest:{background:TOKENS.transparent,border:TOKENS.blpBlue,foreground:TOKENS.blpBlue},hover:{background:TOKENS.blpBlue,foreground:TOKENS.white},size:\"medium\",/**\n         * The outline pair to primary's dark fill: same navy, carried by the\n         * border and the label instead of a fill. Both are subject to the\n         * same limit as primary — navy on a navy section is unreadable — so\n         * this belongs on mid-dark sections, not on Atlas Blue.\n         */dark:{rest:{background:TOKENS.transparent,border:TOKENS.deepNavy,foreground:TOKENS.deepNavy},hover:{background:TOKENS.deepNavy,foreground:TOKENS.white}}},/** White with a pale hairline: a quiet second action on light sections (Platform \"Explore all integrations\"). */subtle:{rest:{background:TOKENS.white,border:TOKENS.pale,foreground:TOKENS.blpBlue},hover:{background:TOKENS.frost,border:TOKENS.blpBlue},size:\"medium\"},/** Solid white. The main action on a blue or dark background. */inverse:{rest:{background:TOKENS.white,border:TOKENS.transparent,foreground:TOKENS.blpBlue},hover:{background:TOKENS.royalBlue,foreground:TOKENS.white},size:\"medium\"},/** Inline text link with a trailing glyph. No chrome. */link:{rest:{background:TOKENS.transparent,border:TOKENS.transparent,foreground:TOKENS.blpBlue},hover:{foreground:TOKENS.royalBlue},size:\"link\",dark:{rest:{background:TOKENS.transparent,border:TOKENS.transparent,foreground:TOKENS.white},hover:{foreground:TOKENS.skyBlue}}},/** White with a pale hairline and an Atlas label; only the fill changes on hover (prototype .btn-secondary, Academy \"Follow us\"). */quiet:{rest:{background:TOKENS.white,border:TOKENS.pale,foreground:TOKENS.atlasBlue},hover:{background:TOKENS.frost},size:\"compact\"}};/* ───────────────────────────── 5. Icons ───────────────────────────────── *//**\n * Trailing glyphs. Each carries its own viewBox — they come from different\n * sources and are NOT all on the same grid, so never assume 16×16.\n *\n *   caret, external → lifted verbatim from the published CTA component\n *   caretLine       → the prototype's .link chevron (14px, 1.5 stroke), drawn\n *                     instead of `caret` on the text-link size\n *   download        → \"DownloadResults\" from the BLP icon library\n *                     (glipp.vercel.app/projects/blp/design-system/icons)\n *\n * Paths use currentColor, so they inherit the variant's foreground.\n *\n * `box` is the viewBox width and `inkRight` is where the drawing actually\n * ends inside it — measured by flattening the curves, not eyeballed. The\n * difference is dead space that would otherwise read as extra right padding,\n * so the button subtracts it (see opticalTrim below).\n */const ICONS={caret:{viewBox:\"0 0 16 16\",box:16,inkRight:11.62,paths:[\"M 5.183 13.769 C 4.883 13.463 4.883 12.968 5.183 12.662 L 9.767 7.998 L 5.183 3.334 C 4.883 3.029 4.883 2.533 5.183 2.227 C 5.484 1.922 5.971 1.922 6.271 2.227 L 11.399 7.445 C 11.7 7.75 11.7 8.246 11.399 8.552 L 6.271 13.769 C 5.971 14.075 5.484 14.075 5.183 13.769 Z\"]},caretLine:{viewBox:\"0 0 14 14\",box:14,inkRight:10.25,stroke:true,paths:[\"M5.5 3l4 4-4 4\"]},external:{viewBox:\"0 0 15 15\",box:15,inkRight:11.21,paths:[\"M 4.29 3.914 C 4.271 3.583 4.523 3.3 4.853 3.28 L 10.572 2.937 C 10.743 2.927 10.91 2.99 11.031 3.111 C 11.152 3.232 11.215 3.399 11.205 3.57 L 10.862 9.289 C 10.842 9.619 10.559 9.871 10.229 9.852 C 9.898 9.833 9.647 9.55 9.667 9.22 L 9.915 5.073 L 3.958 11.03 C 3.724 11.264 3.345 11.264 3.111 11.031 C 2.878 10.797 2.878 10.418 3.112 10.184 L 9.069 4.227 L 4.923 4.476 C 4.592 4.495 4.309 4.244 4.29 3.914 Z\"]},download:{viewBox:\"0 0 24 24\",box:24,inkRight:20.69,paths:[\"M16.7188 21.7777C16.5606 21.9158 16.3537 21.9995 16.1272 21.9995C15.8647 21.9995 15.6284 21.8871 15.4639 21.7078L13.1169 19.2335C12.7749 18.8729 12.7899 18.3033 13.1505 17.9612C13.5111 17.6192 14.0809 17.6342 14.4229 17.9948L15.2272 18.8428L15.2272 15.0143C15.2272 14.5172 15.6302 14.1143 16.1273 14.1143C16.6243 14.1143 17.0273 14.5173 17.0273 15.0143L17.0272 18.8998L17.9281 17.9833C18.2765 17.6288 18.8463 17.6239 19.2008 17.9722C19.5553 18.3207 19.5603 18.8905 19.2118 19.2449L16.7692 21.7303C16.7572 21.7425 16.7449 21.7543 16.7323 21.7657C16.7278 21.7698 16.7234 21.7738 16.7188 21.7777Z\",\"M6.51001 10.305C6.51001 9.89103 6.84601 9.56104 7.25401 9.56104H13.59C14.004 9.56104 14.334 9.89703 14.334 10.305C14.334 10.713 13.998 11.049 13.59 11.049H7.26001C6.84601 11.049 6.51001 10.713 6.51001 10.305Z\",\"M6.51001 7.64683C6.51001 7.23283 6.84601 6.90283 7.25401 6.90283H13.59C14.004 6.90283 14.334 7.23883 14.334 7.64683C14.334 8.06083 13.998 8.39083 13.59 8.39083H7.26001C6.84601 8.39083 6.51001 8.05483 6.51001 7.64683Z\",\"M6.51001 12.975C6.51001 12.561 6.84601 12.231 7.25401 12.231H13.59C14.004 12.231 14.334 12.567 14.334 12.975C14.334 13.383 13.998 13.719 13.59 13.719H7.26001C6.84601 13.719 6.51001 13.383 6.51001 12.975Z\",\"M6.51001 15.639C6.51001 15.225 6.84601 14.895 7.25401 14.895H10.878C11.292 14.895 11.622 15.231 11.622 15.639C11.622 16.053 11.286 16.383 10.878 16.383H7.25401C6.84601 16.389 6.51001 16.053 6.51001 15.639Z\",\"M20.682 7.58109C20.682 6.17709 20.682 5.04309 20.562 4.14309C20.442 3.20709 20.172 2.40909 19.548 1.77309C18.924 1.13709 18.144 0.873094 17.226 0.741094C16.35 0.621094 15.234 0.621094 13.854 0.621094H9.70197C8.32197 0.621094 7.21197 0.621094 6.32997 0.741094C5.41797 0.861094 4.62597 1.14309 4.00797 1.77309C3.40197 2.42109 3.13197 3.20709 3.01197 4.14309C2.89197 5.04309 2.89197 6.17709 2.89197 7.58109V15.9211C2.89197 17.3251 2.89197 18.4591 3.01197 19.3591C3.13197 20.2951 3.40197 21.0931 4.02597 21.7291C4.64997 22.3651 5.42997 22.6291 6.34797 22.7611C7.18197 22.8751 8.23797 22.8811 9.51597 22.8811H9.71397H11.862C12.33 22.8811 12.708 22.5031 12.708 22.0351C12.708 21.5671 12.33 21.1771 11.862 21.1771H9.77397C8.32797 21.1771 7.32597 21.1771 6.56997 21.0751C5.83797 20.9731 5.47197 20.7991 5.20197 20.5291C4.93197 20.2591 4.75797 19.8871 4.66797 19.1371C4.56597 18.3691 4.56597 17.3491 4.56597 15.8671V7.64709C4.56597 6.16509 4.56597 5.14509 4.66797 4.37709C4.76997 3.63309 4.94397 3.25509 5.20197 2.98509C5.46597 2.72109 5.83797 2.54109 6.56997 2.43909C7.32597 2.33709 8.32797 2.33709 9.77397 2.33709H13.812C15.258 2.33709 16.26 2.33709 17.016 2.43909C17.748 2.54109 18.114 2.71509 18.384 2.98509C18.648 3.24909 18.828 3.62709 18.918 4.37709C19.02 5.14509 19.02 6.16509 19.02 7.64709C19.02 7.64709 19.02 10.2931 19.02 10.4491V13.4071C19.02 13.8631 19.386 14.2291 19.842 14.2291C20.298 14.2291 20.688 13.8631 20.688 13.4071V13.3711C20.688 12.4171 20.688 11.0251 20.688 10.4671V7.61109V7.58109H20.682Z\"]}};/* ──────────────────────────── 6. Helpers ─────────────────────────────── *//**\n * Returns the index into a [desktop, tablet, phone] type scale.\n * SSR-safe: renders the desktop value on the server, then corrects on mount.\n */function useBreakpointIndex(){const[index,setIndex]=useState(0);useEffect(()=>{const read=()=>{const w=window.innerWidth;setIndex(w<BREAKPOINTS.phone?2:w<BREAKPOINTS.tablet?1:0);};read();window.addEventListener(\"resize\",read);return()=>window.removeEventListener(\"resize\",read);},[]);return index;}/**\n * Schemes this button is willing to put in an href. Anything with an explicit\n * scheme outside this list — javascript:, data:, vbscript:, file: — is dropped\n * rather than rendered, so a pasted value can never become an active link.\n * Values with no scheme at all (/path, ./path, #anchor, //host) are fine.\n */const ALLOWED_SCHEMES=[\"http:\",\"https:\",\"mailto:\",\"tel:\"];const EXPLICIT_SCHEME=/^[a-z][a-z0-9+.-]*:/i;/** Returns the href to render, or undefined when the value is not safe. */function getSafeHref(link){const href=link?.trim();if(!href)return undefined;if(!EXPLICIT_SCHEME.test(href))return href// relative, anchor, //host\n;const scheme=href.slice(0,href.indexOf(\":\")+1).toLowerCase();return ALLOWED_SCHEMES.includes(scheme)?href:undefined;}/**\n * Internal or external — that is all this button needs to know. mailto:, tel:\n * and anchors count as internal so they are never forced into a new tab.\n */function classifyLink(href){if(!href)return\"none\";if(/^(mailto:|tel:|#)/i.test(href))return\"internal\";if(!/^https?:\\/\\//i.test(href))return\"internal\";// Absolute URL: external only if it points at another host. During SSR\n// there is no location to compare against, so assume external — the worst\n// case is one extra tab, never a broken link.\nif(typeof window===\"undefined\")return\"external\";try{return new URL(href).host===window.location.host?\"internal\":\"external\";}catch{return\"external\";}}/**\n * The glyph each kind of link gets when `icon` is left on \"auto\". The download\n * glyph is deliberately absent: a URL ending in .pdf or .png says nothing about\n * whether the user meant to download it, so that icon is manual-only.\n */const AUTO_ICON={internal:\"caret\",external:\"external\",none:\"none\"};/** Security and SEO relationship tokens, combined without duplicates. */function computeRel(newTab,seo){const tokens=[];// Modern browsers imply noopener for target=_blank; kept for older ones.\nif(newTab)tokens.push(\"noopener\");if(seo!==\"default\")tokens.push(seo);return tokens.length?tokens.join(\" \"):undefined;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function Button({label=\"Book a Demo\",link,newTab=\"auto\",linkRel=\"default\",variant=\"primary\",theme=\"light\",size=\"auto\",icon=\"auto\",customIcon,customIconKeepColors=false,ariaLabel,disabled=false,fullWidth=false,fullWidthOnPhone=true,onClick,insideLink=false,style}){const[hovered,setHovered]=useState(false);const selfRef=useRef(null);// Inside a link the hover comes from that link, so the whole card lights\n// the label up, not just the label itself. Keyboard focus counts too.\nuseEffect(()=>{if(!insideLink)return;const host=selfRef.current?.parentElement?.closest(\"a\");if(!host)return;const on=()=>setHovered(true);const off=()=>setHovered(false);host.addEventListener(\"mouseenter\",on);host.addEventListener(\"mouseleave\",off);host.addEventListener(\"focusin\",on);host.addEventListener(\"focusout\",off);return()=>{host.removeEventListener(\"mouseenter\",on);host.removeEventListener(\"mouseleave\",off);host.removeEventListener(\"focusin\",on);host.removeEventListener(\"focusout\",off);};},[insideLink]);const breakpoint=useBreakpointIndex();// Typed as Variant so `dark` is reachable: `as const satisfies` narrows\n// each entry to its own literal shape, which hides the optional key.\nconst config=VARIANTS[variant]??VARIANTS.primary;// \"auto\" defers to the variant — without this the control's own default\n// would silently win and every variant would render at medium.\nconst sizeConfig=SIZES[size===\"auto\"?config.size:size];const palette=theme===\"dark\"&&config.dark?config.dark:config;const look=hovered&&!disabled?{...palette.rest,...palette.hover}:palette.rest;const foreground=look.foreground;const fontSize=TYPE[sizeConfig.type][breakpoint];// One classification drives both the glyph and the target, so a link can\n// never show an \"external\" arrow while opening in the same tab.\nconst safeHref=insideLink?undefined:getSafeHref(link);const linkKind=classifyLink(safeHref);// Inside a link the button has no href of its own to classify; it stands\n// for the surrounding link, which is an internal page: show the caret.\nconst resolvedIcon=icon===\"auto\"?insideLink?\"caret\":AUTO_ICON[linkKind]:icon;// Text links draw the prototype's line chevron; padded buttons keep the filled caret.\nconst glyph=resolvedIcon===\"caret\"&&sizeConfig===SIZES.link?\"caretLine\":resolvedIcon;const libraryIcon=glyph!==\"none\"&&glyph!==\"custom\"?ICONS[glyph]:undefined;const showCustomIcon=resolvedIcon===\"custom\"&&Boolean(customIcon);const opensNewTab=newTab===\"auto\"?linkKind===\"external\":newTab===\"always\";// A trailing glyph never fills its own box, and that dead space reads as\n// extra right padding. Subtract the measured slack so the ink — not the\n// bounding box — sits the same distance from the edge as the label does.\n// Only meaningful when there is a padded edge to balance against.\nconst opticalTrim=libraryIcon&&sizeConfig.padX>0?(libraryIcon.box-libraryIcon.inkRight)/libraryIcon.box*sizeConfig.icon:0;const paddingRight=Math.max(0,sizeConfig.padX-opticalTrim);const nudge=hovered&&!disabled?2:0;// On phone the button spans the full container width. Text-link styles are\n// exempt — an inline link stretched edge to edge reads as a broken layout.\nconst isPhone=breakpoint===2;const stretch=fullWidth||fullWidthOnPhone&&isPhone&&sizeConfig!==SIZES.link;// Anchors ignore the `disabled` attribute and aria-disabled does not stop\n// navigation, so a disabled link drops its href entirely and leaves the\n// tab order. The click handler guards the case too, belt and braces.\nconst isLink=Boolean(safeHref);const href=isLink&&!disabled?safeHref:undefined;const router=useRouter();const handleClick=event=>{if(disabled){event.preventDefault();return;}onClick?.();// a plain <a> reloads the page and skips Framer's page transitions, so same-site page links go through the router\nif(href&&!opensNewTab&&!event.defaultPrevented)navigateInSite(event,href,router);};const Element=insideLink?\"span\":isLink?\"a\":\"button\";// A label inside a link: no button semantics, no own events.\nconst interactive=!insideLink;return /*#__PURE__*/_jsxs(Element,{ref:selfRef,href:href,target:href&&opensNewTab?\"_blank\":undefined,rel:href?computeRel(opensNewTab,linkRel):undefined,type:interactive&&!isLink?\"button\":undefined,disabled:interactive&&!isLink?disabled:undefined,\"aria-disabled\":interactive?disabled||undefined:undefined,\"aria-label\":interactive?ariaLabel||undefined:undefined,tabIndex:isLink&&disabled?-1:undefined,onClick:interactive?handleClick:undefined,onMouseEnter:interactive?()=>setHovered(true):undefined,onMouseLeave:interactive?()=>setHovered(false):undefined,onFocus:interactive?()=>setHovered(true):undefined,onBlur:interactive?()=>setHovered(false):undefined,style:{// no grey/blue box on tap on phones (prototype: button,.btn{-webkit-tap-highlight-color:transparent})\nWebkitTapHighlightColor:\"transparent\",// colour — these MUST live in style, not in an animation prop:\n// Framer's canvas renders code components in a single static\n// pass, so anything applied by an animation runtime never\n// paints there and prop changes look like they do nothing.\nbackgroundColor:look.background,borderColor:look.border,color:foreground,transition:`background-color ${DURATION}, border-color ${DURATION}, color ${DURATION}`,// layout\ndisplay:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:sizeConfig.gap,paddingTop:sizeConfig.padY,paddingBottom:sizeConfig.padY,paddingLeft:sizeConfig.padX,paddingRight:Math.round(paddingRight*100)/100,width:stretch?\"100%\":\"fit-content\",height:\"fit-content\",// chrome\nborderRadius:48,borderWidth:1,borderStyle:\"solid\",// type\nfontFamily:FONT_FAMILY,fontWeight:FONT_WEIGHT,fontSize,lineHeight:LINE_HEIGHT,// Not \"pre\": a full-width phone button with a long label has\n// to wrap rather than overflow its own pill.\nwhiteSpace:\"normal\",textAlign:\"center\",textDecoration:\"none\",// behaviour\ncursor:insideLink?\"inherit\":disabled?\"not-allowed\":\"pointer\",opacity:disabled?.4:1,appearance:\"none\",...style},children:[/*#__PURE__*/_jsx(\"span\",{children:label}),libraryIcon&&/*#__PURE__*/_jsx(\"svg\",{width:sizeConfig.icon,height:sizeConfig.icon,viewBox:libraryIcon.viewBox,fill:\"none\",\"aria-hidden\":\"true\",style:{flexShrink:0,// The original nudges the caret right on hover.\ntransform:`translateX(${nudge}px)`,transition:`transform ${DURATION}`},children:libraryIcon.paths.map((d,i)=>libraryIcon.stroke?/*#__PURE__*/_jsx(\"path\",{d:d,stroke:\"currentColor\",strokeWidth:1.5,strokeLinecap:\"round\",strokeLinejoin:\"round\"},i):/*#__PURE__*/_jsx(\"path\",{d:d,fill:\"currentColor\",fillRule:\"evenodd\",clipRule:\"evenodd\"},i))}),showCustomIcon&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{flexShrink:0,display:\"block\",transform:`translateX(${nudge}px)`,transition:`transform ${DURATION}`,width:sizeConfig.icon,height:sizeConfig.icon,...customIconKeepColors?{backgroundImage:`url(${customIcon})`,backgroundSize:\"contain\",backgroundPosition:\"center\",backgroundRepeat:\"no-repeat\"}:{// Masking makes an arbitrary SVG take the\n// button's text colour, so a custom glyph\n// still recolours on hover like the rest.\nbackgroundColor:\"currentColor\",maskImage:`url(${customIcon})`,WebkitMaskImage:`url(${customIcon})`,maskSize:\"contain\",WebkitMaskSize:\"contain\",maskPosition:\"center\",WebkitMaskPosition:\"center\",maskRepeat:\"no-repeat\",WebkitMaskRepeat:\"no-repeat\"}}})]});}/* ─────────────────────── 8. Property controls ─────────────────────────── */addPropertyControls(Button,{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Book a Demo\"},link:{type:ControlType.Link,title:\"Link\",hidden:props=>props.insideLink===true},newTab:{type:ControlType.Enum,title:\"New tab\",defaultValue:\"auto\",options:[\"auto\",\"always\",\"never\"],optionTitles:[\"Auto\",\"Always\",\"Never\"],hidden:props=>!props.link||props.insideLink===true},linkRel:{type:ControlType.Enum,title:\"SEO rel\",defaultValue:\"default\",options:[\"default\",\"nofollow\",\"sponsored\",\"ugc\"],optionTitles:[\"Default\",\"Nofollow\",\"Sponsored\",\"UGC\"],hidden:props=>!props.link||props.insideLink===true},variant:{type:ControlType.Enum,title:\"Variant\",defaultValue:\"primary\",options:Object.keys(VARIANTS),optionTitles:[\"Primary\",\"Secondary\",\"Subtle\",\"Inverse\",\"Link\",\"Quiet\"]},theme:{type:ControlType.Enum,title:\"On\",defaultValue:\"light\",options:[\"light\",\"dark\"],optionTitles:[\"Light bg\",\"Dark bg\"]},size:{type:ControlType.Enum,title:\"Size\",// \"auto\" must be the default, otherwise this control silently\n// overrides every variant's own size.\ndefaultValue:\"auto\",options:[\"auto\",...Object.keys(SIZES)],optionTitles:[\"Auto\",\"Small\",\"Medium\",\"Big\",\"Link\",\"Compact\"],description:\"Auto is the variant's own size: 16px for Primary, Secondary and Inverse. Small is the 14px step.\"},icon:{type:ControlType.Enum,title:\"Icon\",defaultValue:\"auto\",// caretLine is the text-link drawing of Caret, picked by size, not offered on its own\noptions:[\"auto\",\"none\",...Object.keys(ICONS).filter(k=>k!==\"caretLine\"),\"custom\"],optionTitles:[\"Auto (from link)\",\"None\",\"Caret\",\"External\",\"Download\",\"Custom SVG\"]},customIcon:{type:ControlType.File,title:\"SVG\",allowedFileTypes:[\"svg\"],hidden:props=>props.icon!==\"custom\"},customIconKeepColors:{type:ControlType.Boolean,title:\"Keep colors\",defaultValue:false,enabledTitle:\"Original\",disabledTitle:\"Tinted\",hidden:props=>props.icon!==\"custom\"||!props.customIcon},ariaLabel:{type:ControlType.String,title:\"Aria label\",placeholder:\"Only if the label is not descriptive\"},fullWidth:{type:ControlType.Boolean,title:\"Full width\",defaultValue:false,description:\"Needs the layer's width set to Fill. A hugging layer has no width to fill, so the button stays label-sized whatever this says.\"},fullWidthOnPhone:{type:ControlType.Boolean,title:\"Fill on phone\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Same rule: set the layer to Fill on the phone breakpoint.\",hidden:props=>props.fullWidth===true},disabled:{type:ControlType.Boolean,title:\"Disabled\",defaultValue:false},onClick:{type:ControlType.EventHandler},insideLink:{type:ControlType.Boolean,title:\"Inside a link\",defaultValue:false,description:\"For a clickable card: link the card, not the button. The button becomes a label and lights up when the card is hovered.\"}})/* ───────────────────── Migrating from the CTA component ───────────────── *//**\n * The CTA design component (lBKViYvhP) carries ~25 canvas variants. A census\n * of all 43 published pages found only 10 of them in use, so this component\n * keeps four colour treatments and expresses the rest through size and icon.\n *\n *   CTA variant (uses)              → this component\n *   ─────────────────────────────────────────────────────────────────────\n *   Default (2 pages)               → variant=\"primary\"\n *   Default icon (16 pages)         → variant=\"primary\"   icon=\"caret\"\n *   Phone (8 pages)                 → variant=\"primary\"   fullWidth\n *   Outline Blue small (31 pages)   → variant=\"secondary\" size=\"small\"\n *   White big (19 pages)            → variant=\"inverse\"   size=\"big\"\n *   White (3 pages)                 → variant=\"inverse\"\n *   White on Blue (2 pages)         → variant=\"inverse\"\n *   White outline blue big (1 page) → variant=\"inverse\"   size=\"big\"\n *   Link Blue Icon (10 pages)       → variant=\"link\"      icon=\"caret\"\n *   Link Blue External (2 pages)    → variant=\"link\"      icon=\"external\"\n *\n * Dropped because no published page uses them: Outline White, Outline Sky\n * Blue, Ghost Blue, Link White.\n *\n * Note that secondary's dark block used to be Outline White and is now navy.\n * For a white outline on a dark section, use inverse — or ask for the white\n * pair back as its own variant.\n */;\nexport const __FramerMetadata__ = {\"exports\":{\"ButtonProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"Button\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Button.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";export default function LegalConsent(props){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[visible,setVisible]=React.useState(false);const[checked,setChecked]=React.useState(false);const[isDesktop,setIsDesktop]=React.useState(false);React.useEffect(()=>{if(isCanvas)return;const checkWidth=()=>{setIsDesktop(window.innerWidth>=768);};checkWidth();window.addEventListener(\"resize\",checkWidth);return()=>window.removeEventListener(\"resize\",checkWidth);},[isCanvas]);React.useEffect(()=>{if(isCanvas)return;const consent=localStorage.getItem(\"legalConsent\");if(!consent){setVisible(true);document.body.style.overflow=\"hidden\";}else{document.body.classList.add(\"legal-consent-granted\");}},[isCanvas]);const handleContinue=()=>{if(!checked)return;localStorage.setItem(\"legalConsent\",\"true\");localStorage.setItem(\"legalConsentDate\",new Date().toISOString());document.body.classList.add(\"legal-consent-granted\");document.body.style.overflow=\"auto\";setVisible(false);};// 🚀 No renderizar nada en el Canvas de Framer\nif(isCanvas)return null;if(!visible)return null;const modalStyle={position:\"fixed\",bottom:20,right:isDesktop?20:\"50%\",transform:isDesktop?\"none\":\"translateX(50%)\",background:\"#FFFFFF\",padding:28,borderRadius:16,boxShadow:\"0 30px 80px rgba(0,0,0,0.25)\",fontFamily:\"Inter, sans-serif\",width:isDesktop?490:\"90%\",maxWidth:490,display:\"flex\",flexDirection:\"column\",gap:16,zIndex:1e5};// Straight into <body>: inside the page its container sits at z-index 10, so the navbar (z-index 100, also in\n// <body>) stayed above the notice and its menu could still be opened. Only rendered in the browser (visible starts false).\nreturn /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:overlayStyle}),/*#__PURE__*/_jsxs(\"div\",{style:modalStyle,role:\"dialog\",\"aria-modal\":\"true\",\"aria-labelledby\":\"legal-consent-title\",children:[/*#__PURE__*/_jsx(\"p\",{id:\"legal-consent-title\",style:titleStyle,children:\"Privacy & Data Collection Notice\"}),/*#__PURE__*/_jsxs(\"p\",{style:textStyle,children:[\"Before continuing, please confirm that you have read and agree to our\",\" \",/*#__PURE__*/_jsx(\"a\",{href:props.privacyUrl,target:\"_blank\",rel:\"noopener noreferrer\",style:linkStyle,children:\"Privacy Policy\"}),\" \",\"and consent to data collection.\"]}),/*#__PURE__*/_jsxs(\"label\",{style:checkboxContainer,children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",checked:checked,onChange:e=>setChecked(e.target.checked),style:{width:16,height:16}}),\"I have read and accept the Privacy Policy.\"]}),/*#__PURE__*/_jsx(\"button\",{onClick:handleContinue,disabled:!checked,style:{...buttonStyle,background:checked?\"#2E75FF\":\"#A0A0A0\",cursor:checked?\"pointer\":\"not-allowed\",opacity:checked?1:.6},children:\"Continue to Site\"})]})]}),document.body);}/* ------------------ STYLES ------------------ */const overlayStyle={position:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",background:\"rgba(0,0,0,0.55)\",zIndex:99999};const titleStyle={margin:0,fontSize:18,fontWeight:700,color:\"#162B54\"};const textStyle={fontSize:14,lineHeight:1.6,color:\"#616F8A\"};const linkStyle={color:\"#2E75FF\",textDecoration:\"underline\"};const checkboxContainer={display:\"flex\",alignItems:\"center\",fontSize:14,color:\"#162B54\",gap:8,cursor:\"pointer\"};const buttonStyle={width:\"100%\",padding:\"12px 20px\",borderRadius:12,border:\"none\",color:\"#fff\",fontSize:14,fontWeight:600,transition:\"all 0.2s ease\"};/* ------------------ PROPS ------------------ */addPropertyControls(LegalConsent,{privacyUrl:{type:ControlType.String,title:\"Privacy URL\",defaultValue:\"/privacy-policy\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LegalConsent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LegalConsent.map","// Generated by Framer (bc931d3)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Roboto-regular\",\"GF;Roboto-700\",\"GF;Roboto-700italic\",\"GF;Roboto-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Roboto\",source:\"google\",style:\"normal\",uiFamilyName:\"Roboto\",url:\"https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbWmWggvWl0Qn.woff2\",weight:\"400\"},{cssFamilyName:\"Roboto\",source:\"google\",style:\"normal\",uiFamilyName:\"Roboto\",url:\"https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjammWggvWl0Qn.woff2\",weight:\"700\"},{cssFamilyName:\"Roboto\",source:\"google\",style:\"italic\",uiFamilyName:\"Roboto\",url:\"https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLmbXiAr0klQnx24.woff2\",weight:\"700\"},{cssFamilyName:\"Roboto\",source:\"google\",style:\"italic\",uiFamilyName:\"Roboto\",url:\"https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLoHQiAr0klQnx24.woff2\",weight:\"400\"}]}];export const css=['.framer-7uNOn .framer-styles-preset-hmcuny:not(.rich-text-wrapper), .framer-7uNOn .framer-styles-preset-hmcuny.rich-text-wrapper p { --framer-font-family: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-bold: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-italic: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 20px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: var(--token-57c05152-bb67-4161-a2eb-527363d38f4d, #162b54); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-7uNOn .framer-styles-preset-hmcuny:not(.rich-text-wrapper), .framer-7uNOn .framer-styles-preset-hmcuny.rich-text-wrapper p { --framer-font-family: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-bold: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-italic: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 18px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: var(--token-57c05152-bb67-4161-a2eb-527363d38f4d, #162b54); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-7uNOn .framer-styles-preset-hmcuny:not(.rich-text-wrapper), .framer-7uNOn .framer-styles-preset-hmcuny.rich-text-wrapper p { --framer-font-family: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-bold: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-family-italic: \"Roboto\", \"Roboto Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 17px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: var(--token-57c05152-bb67-4161-a2eb-527363d38f4d, #162b54); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-7uNOn\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}