1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5953],{449:(e,t,r)=>{"use strict";r.d(t,{default:()=>m});var s=r(95155),a=r(12115),l=r(50802),n=r(49088),i=r(58443),o=r(87254),d=r(76041),c=r(54989);function m(e){let{headline:t,subtext:r,primaryCTA:m,secondaryCTA:x,variant:u="default",mobileLayout:h="row",className:g=""}=e,p=(0,a.useRef)([]);return(0,a.useEffect)(()=>{l.os.registerPlugin(n.ScrollTrigger),p.current.forEach(e=>{e&&l.os.set(e,{opacity:0,y:30,clearProps:"transition"})});let e=l.os.timeline({scrollTrigger:{trigger:".cta-content",start:"top 75%",toggleActions:"play none none reverse"}});return p.current.forEach((t,r)=>{t&&e.to(t,{opacity:1,y:0,duration:.6,ease:"power2.out"},.15*r)}),()=>{n.ScrollTrigger.getAll().forEach(e=>e.kill()),e.kill()}},[]),(0,s.jsx)(c.A,{variant:"dark",size:"compact"===u?"lg":"xl",className:g,children:(0,s.jsxs)("div",{className:"text-center max-w-4xl mx-auto cta-content",children:[(0,s.jsx)(o.A,{as:"h2",size:"3xl",align:"center",textBalance:!0,className:"mb-6",ref:e=>{e&&(p.current[0]=e)},children:t}),(0,s.jsx)(d.A,{size:"lg",align:"center",spacing:"relaxed",textBalance:!0,className:"mb-10 max-w-2xl mx-auto",ref:e=>{e&&(p.current[1]=e)},children:r.replace(/ (\S+) (\S+)$/,"\xa0$1\xa0$2")}),(0,s.jsxs)("div",{className:"flex ".concat("column"===h?"flex-col items-stretch":"flex-row items-center"," sm:flex-row sm:items-center gap-4 justify-center"),ref:e=>{e&&(p.current[2]=e)},children:[(0,s.jsx)(i.A,{href:m.href,target:m.target,rel:m.rel,variant:"primary",effect:"glow",className:"text-lg px-8 py-4 ".concat("column"===h?"w-full sm:w-auto":"flex-1 sm:flex-none"),children:m.text}),x&&(0,s.jsx)(i.A,{href:x.href,target:x.target,rel:x.rel,variant:"secondary",className:"text-lg px-8 py-4 ".concat("column"===h?"w-full sm:w-auto":"flex-1 sm:flex-none"),children:x.text})]})]})})}},19369:(e,t,r)=>{"use strict";r.d(t,{NewsletterSignup:()=>i});var s=r(95155),a=r(12115),l=r(58443),n=r(72341);function i(e){let{variant:t="default",title:r="Stay in the Loop",description:i="Our newsletter covers AI tools we're actually using, what we're building, and what we're learning along the way. We send it monthly-ish.",placeholder:o="Enter your email",buttonText:d="Subscribe",successMessage:c="Thanks for subscribing! Check your email to confirm.",className:m="",autoFocus:x=!1,maxWidth:u}=e,[h,g]=(0,a.useState)(""),[p,f]=(0,a.useState)("idle"),[b,y]=(0,a.useState)(""),[v,w]=(0,a.useState)(!1);(0,a.useEffect)(()=>{let e=()=>{let e="ontouchstart"in window||navigator.maxTouchPoints>0,t=window.innerWidth<768;w(e&&t)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let j=x&&!v,N=async e=>{if(e.preventDefault(),!h){y("Please enter your email address"),f("error");return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(h)){y("Please enter a valid email address"),f("error");return}f("loading"),y("");try{var t;let e=await fetch("/api/newsletter",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:h})}),r=await e.json();if(!e.ok)throw Error(r.error||"Something went wrong");n.Ay.identify(h,{email:h}),n.Ay.capture("newsletter_subscribed",{already_subscribed:!!(null==(t=r.message)?void 0:t.includes("already"))}),f("success"),g("")}catch(e){n.Ay.captureException(e),y(e instanceof Error?e.message:"Failed to subscribe. Please try again."),f("error")}};return"success"===p&&"minimal"!==t?(0,s.jsx)("div",{className:"relative z-20 ".concat(m),children:(0,s.jsx)("div",{className:"bg-primary-500/10 border border-primary-500/20 rounded-lg p-6",children:(0,s.jsxs)("div",{className:"flex items-center gap-4",children:[(0,s.jsx)("svg",{className:"w-8 h-8 text-primary-500 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),(0,s.jsx)("p",{className:"text-lg text-white",children:c})]})})}):"minimal"===t?(0,s.jsxs)("div",{className:m,style:u?{maxWidth:u}:void 0,children:[r&&(0,s.jsx)("h3",{className:"text-xl font-bold text-white mb-2",children:r}),i&&(0,s.jsx)("p",{className:"text-gray-400 text-sm mb-4",children:i}),(0,s.jsxs)("form",{onSubmit:N,children:[(0,s.jsxs)("div",{className:"flex flex-col sm:flex-row gap-3",children:[(0,s.jsx)("input",{type:"email",value:h,onChange:e=>{g(e.target.value),"error"===p&&f("idle")},placeholder:o,className:"flex-1 px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:border-primary-500 transition-colors",disabled:"loading"===p,autoFocus:j}),(0,s.jsx)(l.A,{type:"submit",variant:"primary",disabled:"loading"===p,className:"whitespace-nowrap",children:"loading"===p?"Subscribing...":d})]}),"error"===p&&(0,s.jsx)("p",{className:"mt-2 text-sm text-red-400",children:b}),"success"===p&&(0,s.jsx)("p",{className:"mt-2 text-sm text-primary-400",children:c})]})]}):"inline"===t?(0,s.jsx)("div",{className:"bg-gray-700 border border-gray-600 rounded-xl p-8 hover:bg-gray-650 hover:border-gray-500 transition-colors duration-200 ".concat(m),children:(0,s.jsxs)("div",{className:"max-w-2xl mx-auto text-center",children:[(0,s.jsx)("div",{className:"flex justify-center mb-4",children:(0,s.jsx)("div",{className:"w-12 h-12 bg-primary-500/20 rounded-full flex items-center justify-center",children:(0,s.jsx)("svg",{className:"w-6 h-6 text-primary-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})})})}),(0,s.jsx)("h3",{className:"text-2xl font-bold text-white mb-3",children:r}),(0,s.jsx)("p",{className:"text-gray-300 mb-6",children:i}),(0,s.jsxs)("form",{onSubmit:N,className:"flex flex-col sm:flex-row gap-3 max-w-md mx-auto",children:[(0,s.jsx)("input",{type:"email",value:h,onChange:e=>{g(e.target.value),"error"===p&&f("idle")},placeholder:o,className:"flex-1 px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:border-primary-500 transition-colors",disabled:"loading"===p,autoFocus:j}),(0,s.jsx)(l.A,{type:"submit",variant:"primary",disabled:"loading"===p,className:"whitespace-nowrap",children:"loading"===p?"Subscribing...":d})]}),"error"===p&&(0,s.jsx)("p",{className:"mt-3 text-sm text-red-400",children:b})]})}):(0,s.jsxs)("div",{className:"".concat(m),children:[(0,s.jsx)("p",{className:"text-xl font-bold text-white mb-3",children:r}),(0,s.jsx)("p",{className:"text-gray-400 mb-6",children:i}),(0,s.jsxs)("form",{onSubmit:N,children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,s.jsx)("input",{type:"email",value:h,onChange:e=>{g(e.target.value),"error"===p&&f("idle")},placeholder:o,className:"w-full px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:border-primary-500 transition-colors",disabled:"loading"===p,autoFocus:j}),(0,s.jsx)(l.A,{type:"submit",variant:"primary",disabled:"loading"===p,className:"w-full",children:"loading"===p?"Subscribing...":d})]}),"error"===p&&(0,s.jsx)("p",{className:"mt-3 text-sm text-red-400",children:b})]}),(0,s.jsx)("p",{className:"mt-4 text-xs text-gray-400",children:"We respect your privacy. Unsubscribe at any time."})]})}},23023:(e,t,r)=>{"use strict";r.d(t,{default:()=>m});var s=r(95155),a=r(12115),l=r(66766),n=r(6874),i=r.n(n),o=r(82536),d=r(69743),c=r.n(d);function m(e){var t;let{authorField:r}=e,n=(0,o.i)(r),[d,m]=(0,a.useState)(!1);if(!n)return null;let x="https://visualboston.com/leadership/".concat(n.slug),u={"@context":"https://schema.org","@type":"Person",name:n.name,jobTitle:n.title,sameAs:n.linkedin,worksFor:{"@type":"Organization",name:"VisualBoston",url:"https://visualboston.com"},url:x};
1return(0,s.jsxs)("div",{className:"flex items-start gap-4 rounded-xl border border-white/[0.06] bg-white/[0.03] p-4 mt-8",children:[(0,s.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(u)}}),(0,s.jsx)(i(),{href:"/leadership/".concat(n.slug),className:"h-12 w-12 flex-shrink-0 overflow-hidden rounded-full border border-white/[0.06] mt-0.5",children:(0,s.jsx)(l.default,{src:n.image,alt:n.name,width:96,height:96,className:"h-full w-full object-cover ".concat(null!=(t=n.avatarCrop)?t:"")})}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(i(),{href:"/leadership/".concat(n.slug),className:"text-sm font-medium text-white hover:text-primary-400 transition-colors",children:n.name}),(0,s.jsx)("span",{className:"text-gray-600",children:"\xb7"}),(0,s.jsxs)("a",{href:n.linkedin,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-gray-400 transition-colors duration-300 hover:text-primary-400","aria-label":"".concat(n.name,"'s LinkedIn profile"),children:[(0,s.jsx)("svg",{className:"h-3 w-3",fill:"currentColor",viewBox:"0 0 20 20",children:(0,s.jsx)("path",{fillRule:"evenodd",d:"M16.338 16.338H13.67V12.16c0-.995-.017-2.277-1.387-2.277-1.39 0-1.601 1.086-1.601 2.207v4.248H8.014v-8.59h2.559v1.174h.037c.356-.675 1.227-1.387 2.526-1.387 2.703 0 3.203 1.778 3.203 4.092v4.711zM5.005 6.575a1.548 1.548 0 11-.003-3.096 1.548 1.548 0 01.003 3.096zm-1.337 9.763H6.34v-8.59H3.667v8.59zM17.668 1H2.328C1.595 1 1 1.581 1 2.298v15.403C1 18.418 1.595 19 2.328 19h15.34c.734 0 1.332-.582 1.332-1.299V2.298C19 1.581 18.402 1 17.668 1z",clipRule:"evenodd"})}),"LinkedIn"]})]}),(0,s.jsx)("div",{className:"mt-1 overflow-hidden transition-all duration-300 ease-in-out ".concat(d?c().bioExpanded:c().bioCollapsed),children:(0,s.jsx)("p",{className:"text-xs text-gray-400 leading-relaxed",children:n.shortBio})}),(0,s.jsxs)("button",{onClick:()=>m(!d),className:"inline-flex items-center gap-1 text-xs text-gray-500 hover:text-gray-300 mt-1 transition-colors",children:[d?"Show less":"Read more",(0,s.jsx)("svg",{className:"h-3 w-3 transition-transform duration-300 ease-in-out ".concat(d?"-scale-y-100":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]})]})]})}},24090:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var s=r(95155),a=r(66766),l=r(12115),n=r(87254),i=r(76041),o=r(50654);function d(e){let{children:t}=e,r=l.useRef(null),[a,n]=l.useState(!1);return l.useEffect(()=>{let e=r.current;if(!e)return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return void n(!0);let t=new IntersectionObserver(r=>{let[s]=r;s.isIntersecting&&(n(!0),t.unobserve(e))},{threshold:.1});return t.observe(e),()=>t.disconnect()},[]),(0,s.jsx)("div",{ref:r,style:{opacity:+!!a,transform:a?"translateY(0)":"translateY(20px)",transition:"opacity 0.6s ease, transform 0.6s ease"},children:t})}function c(e){let{content:t}=e;return(0,s.jsx)("div",{className:"prose prose-lg md:prose-xl xl:prose-2xl max-w-4xl mx-auto prose-invert prose-gray prose-blog prose-a:no-underline",children:(e=>{let t=e.split("\n"),r=[],l=[],c=null,m=0,x=[],u=!1,h=[],g=!1,p=()=>{if(l.length>0){let e="ol"===c?"ol":"ul";r.push((0,s.jsx)(e,{className:"list-disc list-inside mb-6 space-y-3 text-base md:text-lg xl:text-xl leading-relaxed md:leading-relaxed xl:leading-loose text-gray-300",children:l.map((e,t)=>(0,s.jsx)("li",{dangerouslySetInnerHTML:{__html:b(e)}},t))},"list-".concat(m++))),l=[],c=null}},f=()=>{if(x.length>0){let e=x[0].split("|").map(e=>e.trim());""===e[0]&&e.shift(),""===e[e.length-1]&&e.pop();let t=x.slice(2).map(e=>{let t=e.split("|").map(e=>e.trim());return""===t[0]&&t.shift(),""===t[t.length-1]&&t.pop(),t});r.push((0,s.jsx)("div",{className:"my-8 overflow-x-auto",children:(0,s.jsxs)("table",{className:"min-w-full divide-y divide-gray-600",children:[(0,s.jsx)("thead",{className:"bg-gray-700/50",children:(0,s.jsx)("tr",{children:e.map((e,t)=>(0,s.jsx)("th",{className:"px-6 py-4 text-left text-sm font-semibold text-gray-200 uppercase tracking-wider",dangerouslySetInnerHTML:{__html:b(e)}},t))})}),(0,s.jsx)("tbody",{className:"bg-gray-800/30 divide-y divide-gray-700",children:t.map((e,t)=>(0,s.jsx)("tr",{className:"hover:bg-gray-700/30 transition-colors",children:e.map((e,t)=>(0,s.jsx)("td",{className:"px-6 py-4 text-sm text-gray-300",dangerouslySetInnerHTML:{__html:b(e)}},t))},t))})]})},"table-".concat(m++))),x=[],u=!1}},b=e=>e.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\*(.*?)\*/g,"<em>$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" class="text-secondary-400 hover:text-secondary-300 font-medium transition-colors duration-300 inline-block relative group"><span class="relative z-10">$1</span><span class="absolute inset-x-0 bottom-0 h-0.5 bg-secondary-400 transform scale-x-0 group-hover:scale-x-100 transition-transform duration-300 origin-left"></span></a>'),y=()=>
1{if(h.length>0){let e=h;r.push((0,s.jsx)("blockquote",{className:"my-10 border-l-4 border-secondary-400 pl-6",children:e.map((e,t)=>(0,s.jsx)("p",{className:0===t?"text-xl md:text-2xl leading-relaxed italic text-gray-100":"mt-3 text-sm md:text-base text-gray-400 not-italic",dangerouslySetInnerHTML:{__html:b(e)}},t))},"quote-".concat(m++))),h=[],g=!1}},v=(e,t,r)=>{let a=t.replace(/\*\*(.*?)\*\*/g,"|||BOLD_START|||$1|||BOLD_END|||").replace(/\*(.*?)\*/g,"|||ITALIC_START|||$1|||ITALIC_END|||").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"|||LINK_START|||$1|||LINK_MID|||$2|||LINK_END|||").split("|||"),l=[];for(let e=0;e<a.length;e++){let t=a[e];"BOLD_START"===t&&e+2<a.length&&"BOLD_END"===a[e+2]?(l.push((0,s.jsx)("strong",{children:a[e+1]},e)),e+=2):"ITALIC_START"===t&&e+2<a.length&&"ITALIC_END"===a[e+2]?(l.push((0,s.jsx)("em",{children:a[e+1]},e)),e+=2):"LINK_START"===t&&e+4<a.length&&"LINK_MID"===a[e+2]&&"LINK_END"===a[e+4]?(l.push((0,s.jsxs)("a",{href:a[e+3],className:"text-secondary-400 hover:text-secondary-300 font-medium transition-colors duration-300 inline-block relative group",children:[(0,s.jsx)("span",{className:"relative z-10",children:a[e+1]}),(0,s.jsx)("span",{className:"absolute inset-x-0 bottom-0 h-0.5 bg-secondary-400 transform scale-x-0 group-hover:scale-x-100 transition-transform duration-300 origin-left"})]},e)),e+=4):t.includes("_START")||t.includes("_END")||t.includes("_MID")||!t||l.push(t)}return"h4"===e?(0,s.jsx)("h4",{className:"text-[20px] font-semibold text-white mt-10 mb-6 first:mt-0",children:l},r):(0,s.jsx)(n.A,{as:e,size:{h1:"5xl",h2:"xl",h3:"lg",h4:"blog"}[e],className:"mt-10 mb-6 first:mt-0",children:l},r)};return t.forEach(e=>{let t=e.trim(),n=0===e.length||/^\s+$/.test(e),d=t.includes("|")&&(t.startsWith("|")||t.endsWith("|")||t.split("|").length>=3),w=/^\|?\s*[-:]+\s*\|/.test(t),j=t.startsWith(">");if(g&&!j&&y(),d||w)p(),u||(u=!0,x=[]),x.push(t);else if(u&&n)f();else if(t.startsWith("#### "))p(),f(),r.push(v("h4",t.replace("#### ",""),"h4-".concat(m++)));else if(t.startsWith("### "))p(),f(),r.push(v("h3",t.replace("### ",""),"h3-".concat(m++)));else if(t.startsWith("## "))p(),f(),r.push(v("h2",t.replace("## ",""),"h2-".concat(m++)));else if(t.startsWith("# "))p(),f(),r.push(v("h1",t.replace("# ",""),"h1-".concat(m++)));else if(t.startsWith("- "))f(),"ul"!==c&&(p(),c="ul"),l.push(t.replace("- ",""));else if(/^\d+\.\s/.test(t))f(),"ol"!==c&&(p(),c="ol"),l.push(t.replace(/^\d+\.\s/,""));else if(t.startsWith("[![")){p(),f();let e=t.match(/\[!\[([^\]]*)\]\(([^)]+)\)\]\(([^)]+)\)/);e&&r.push((0,s.jsxs)("figure",{className:"mt-8 mb-12",children:[(0,s.jsx)("a",{href:e[3],target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(a.default,{src:e[2],alt:e[1],width:800,height:600,className:"w-full h-auto rounded-lg"})}),e[1]&&(0,s.jsx)("figcaption",{className:"mt-2 text-sm text-gray-400 text-center",children:e[1]})]},"linked-img-".concat(m++)))}else if(t.startsWith("![")){p(),f();let e=t.match(/!\[([^\]]*)\]\(([^)]+)\)/);if(e){var N;let t=null==(N=e[2].split(".").pop())?void 0:N.toLowerCase();if("mp4"===t||"webm"===t||"mov"===t){let a=e[2].replace(/\.(mp4|webm|mov)$/i,"-poster.jpg");r.push((0,s.jsxs)("figure",{className:"mt-8 mb-12 mx-auto max-w-sm",children:[(0,s.jsx)("video",{autoPlay:!0,loop:!0,muted:!0,playsInline:!0,poster:a,className:"w-full h-auto rounded-lg","aria-label":e[1]||void 0,children:(0,s.jsx)("source",{src:e[2],type:"mov"===t?"video/quicktime":"video/".concat(t)})}),e[1]&&(0,s.jsx)("figcaption",{className:"mt-2 text-sm text-gray-400 text-center",children:e[1]})]},"video-".concat(m++)))}else r.push((0,s.jsxs)("figure",{className:"mt-8 mb-12",children:[(0,s.jsx)(a.default,{src:e[2],alt:e[1],width:800,height:600,className:"w-full h-auto rounded-lg"}),e[1]&&(0,s.jsx)("figcaption",{className:"mt-2 text-sm text-gray-400 text-center",children:e[1]})]},"img-".concat(m++)))}}else if(t.startsWith("[newsletter]")||t.includes("[newsletter")){p(),f();let e=t.match(/\[newsletter(?:\s+([^\]]*))?\]/),a={};if(e&&e[1]){let t,r=e[1],s=/(\w+)="([^"]*)"/g;for(;null!==(t=s.exec(r));)a[t[1]]=t[2]}let l={variant:"inline",title:"Never Miss an Update",description:"Subscribe to get the latest insights on digital strategy and product development.",placeholder:"Enter your email",buttonText:"Subscribe",...a};r.push((0,s.jsx)("div",{className:"my-12",children:(0,s.jsx)(o.q,{...l})},"newsletter-".concat(m++)))}else j?(p(),f(),g=!0,h.push(t.replace(/^>\s?/,""))):n?(p(),f()):t&&(p(),f(),r.push((0,s.jsx)(i.A,{size:"blog",variant:"default",margin:"lg",spacing:"relaxed",children:(0,s.jsx)("span",{dangerouslySetInnerHTML:{__html:b(t)}})},"p-".concat(m++))))}),p(),f(),y(),r.map((e,t)=>(0,s.jsx)(d,{children:e},e.key||"fade-".concat(t)))})(t)})}},34824:(e,t,r)=>{"use strict";r.d(t,{default:()=>l});var s=r(12115),a=r(59996);function l(e){let{postTitle:t}=e,{setBreadcrumbs:r,setShowBreadcrumbs:l}=(0,a.i)();return(0,s.useEffect)(()=>(r([{label:"Home",href:"/"},{label:"Blog",href:"/blog"},{label:t}]),l(!0),()=>{l(!1),r([])}),[r,l,t]),null}},45217:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,6874,23)),Promise.resolve().then(r.t.bind(r,33063,23)),Promise.resolve().then(r.bind(r,23023)),Promise.resolve().then(r.bind(r,34824)),Promise.resolve().then(r.bind(r,449)),Promise.resolve().then(r.bind(r,24090))},50654:(e,t,r)=>{"use strict";r.d(t,{q:()=>s.NewsletterSignup});var s=r(19369)},54989:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(95155);r(12115);var a=r(52596);let l=e=>{let{children:t,className:r,variant:l="default",size:n="lg",containerSize:i="xl",mobilePaddingTop:o=!0,mobilePaddingBottom:d=!0,...c}=e,m=(0,a.A)("relative",{"py-12":"sm"===n&&o&&d,"pt-12":"sm"===n&&o&&!d,"pb-12":"sm"===n&&!o&&d,"sm:py-12":"sm"===n&&(!o||!d),"py-16":"md"===n&&o&&d,"pt-16":"md"===n&&o&&!d,"pb-16":"md"===n&&!o&&d,"sm:py-16":"md"===n&&(!o||!d),"py-24":"lg"===n&&o&&d,"pt-24":"lg"===n&&o&&!d,"pb-24":"lg"===n&&!o&&d,"sm:py-24":"lg"===n&&(!o||!d),"py-16 sm:py-32":"xl"===n&&"hero"!==l&&o&&d,"pt-16 sm:pt-32":"xl"===n&&"hero"!==l&&o&&!d,"pb-16 sm:pb-32":"xl"===n&&"hero"!==l&&!o&&d,"sm:py-32":"xl"===n&&"hero"!==l&&(!o||!d),"pt-12 pb-16 sm:pt-20 sm:pb-32":"xl"===n&&"hero"===l&&o&&d,"pt-12 sm:pt-20":"xl"===n&&"hero"===l&&o&&!d,"pb-16 sm:pb-32":"xl"===n&&"hero"===l&&!o&&d&&!1,"sm:pt-20 sm:pb-32":"xl"===n&&"hero"===l&&(!o||!d)},{"bg-gray-800":"default"===l,"bg-gray-800 overflow-hidden":"hero"===l,"bg-gray-700/50":"accent"===l,"bg-gray-750":"dark"===l},r),x=(0,a.A)("mx-auto px-8 sm:px-6 lg:px-8",{"max-w-4xl":"sm"===i,"max-w-5xl":"md"===i,"max-w-6xl":"lg"===i,"max-w-7xl":"xl"===i,"max-w-none":"full"===i});return(0,s.jsx)("section",{className:m,...c,children:(0,s.jsx)("div",{className:x,children:t})})}},58443:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var s=r(95155),a=r(6874),l=r.n(a),n=r(12115),i=r(52596),o=r(90147),d=r.n(o);let c=(0,n.forwardRef)((e,t)=>{let{href:r,variant:a="primary",children:n,className:o="",effect:c="none",loading:m=!1,onClick:x,type:u="button",disabled:h=!1,target:g,rel:p}=e,f=(0,i.A)("px-6 py-3 rounded font-semibold transition-all duration-300 inline-flex items-center justify-center text-center cursor-pointer",{primary:"bg-primary-600 hover:bg-primary-500 text-gray-800 hover:shadow-lg hover:shadow-
1primary-500/25 hover:-translate-y-0.5 border-2 border-transparent",secondary:"border-2 border-primary-500 hover:border-primary-400 text-white hover:text-primary-200 hover:bg-primary-500/10 hover:shadow-lg hover:shadow-primary-500/10 hover:-translate-y-0.5",ghost:"text-gray-400 hover:text-white underline"}[a],{[d().glowEffect]:"glow"===c,[d().pulseAnimation]:"pulse"===c,[d().loading]:m,"opacity-50 cursor-not-allowed":h},o);if(r){let e={href:r};return g&&(e.target=g),p&&(e.rel=p),(0,s.jsx)(l(),{...e,className:f,onClick:x,children:m?"":n})}return(0,s.jsx)("button",{ref:t,type:u,onClick:x,disabled:h||m,className:f,children:m?"":n})});c.displayName="Button";let m=c},59996:(e,t,r)=>{"use strict";r.d(t,{BreadcrumbProvider:()=>o,i:()=>n,r:()=>i});var s=r(95155),a=r(12115);let l=(0,a.createContext)(void 0),n=()=>{let e=(0,a.useContext)(l);if(void 0===e)throw Error("useBreadcrumbs must be used within a BreadcrumbProvider");return e},i=n,o=e=>{let{children:t}=e,[r,n]=(0,a.useState)([]),[i,o]=(0,a.useState)(!1);return(0,s.jsx)(l.Provider,{value:{breadcrumbs:r,setBreadcrumbs:n,showBreadcrumbs:i,setShowBreadcrumbs:o},children:t})}},66766:(e,t,r)=>{"use strict";r.d(t,{default:()=>a.a});var s=r(71469),a=r.n(s)},69743:e=>{e.exports={bioCollapsed:"AuthorByline_bioCollapsed__Jhj0U",bioExpanded:"AuthorByline_bioExpanded__J_FCs"}},71469:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return o},getImageProps:function(){return i}});let s=r(88229),a=r(38883),l=r(33063),n=s._(r(51193));function i(e){let{props:t}=(0,a.getImgProps)(e,{defaultLoader:n.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let o=l.Image},76041:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(95155);r(12115);var a=r(52596);let l=e=>{let{children:t,size:r="base",variant:l="default",align:n="left",maxWidth:i="none",spacing:o="relaxed",margin:d="none",italic:c=!1,textBalance:m=!1,className:x=""}=e,u=(0,a.A)("paragraph",{"text-sm md:text-base":"sm"===r,"text-base md:text-lg":"base"===r,"text-lg md:text-lg xl:text-xl":"blog"===r,"text-lg md:text-xl":"lg"===r,"text-xl md:text-2xl":"xl"===r,"text-xl md:text-2xl lg:text-3xl":"feature"===r},{"xl:text-xl":"base"===r,"xl:text-2xl":"lg"===r},{"text-gray-300":"default"===l,"text-gray-400":"muted"===l,"text-gray-200":"subtle"===l},{"text-left":"left"===n,"text-center":"center"===n,"text-right":"right"===n},{"max-w-sm mx-auto":"sm"===i,"max-w-md mx-auto":"md"===i,"max-w-lg mx-auto":"lg"===i,"max-w-xl mx-auto":"xl"===i,"max-w-2xl mx-auto":"2xl"===i,"max-w-3xl mx-auto":"3xl"===i,"max-w-4xl mx-auto":"4xl"===i},{"leading-tight":"tight"===o,"leading-normal":"normal"===o,"leading-relaxed":"relaxed"===o,"leading-loose":"loose"===o},{"mb-2":"sm"===d,"mb-4":"md"===d,"mb-6":"lg"===d,"mb-8":"xl"===d},{italic:c,"text-balance":m},x);return(0,s.jsx)("p",{className:u,children:t})}},82536:(e,t,r)=>{"use strict";r.d(t,{i:()=>a,t:()=>s});let s={"alec-harrison":{slug:"alec",name:"Alec Harrison",title:"Co-Founder & Product Design Lead",image:"/images/leadership/alec-harrison-ceo-co-founder-lead-product-designer-ai-instructor.png",avatarCrop:"object-[55%_35%] scale-[2.0] translate-y-5",linkedin:"https://www.linkedin.com/in/alecharrison/",yearsOfExperience:"16+",shortBio:"Co-founder of VisualBoston. Product-focused UX/UI designer with 16+ years of experience rooted in graphic design and visual arts. Has consulted for Google, worked at Fresh Tilled Soil, and led design for Linus Health, O2X, Shadow Lion, and DCU. Since 2022, has been at the forefront of AI-integrated design workflows â from rapid prototyping to teaching designers how to build their own Figma plugins.",bio:"Alec is a product-focused UX/UI designer with 16+ years of experience. His career began in graphic design and visual arts before evolving into product design, and that creative foundation still shapes everything he builds. Heâs consulted for Google, worked at top agencies like Fresh Tilled Soil, and led design for startups and high-growth teams including Linus Health, O2X, Shadow Lion, and DCU. His focus has always been on clean, user-centered interfaces that drive measurable results, and his superpower is connecting design decisions directly to business goals. Since 2022, Alec has been at the forefront of integrating AI into design workflows, from rapid prototyping with no-code tools like Lovable.dev to teaching designers how to build their own Figma plugins, use AI for imagery and video, and adopt AI-assisted storytelling into their process. Outside of work, Alec is a dad of three, skier, and piano player.",expertise:["UX/UI Design","Product Design","Product Strategy","User Research & Testing","AI-Powered Design","Design Systems"],notableClients:["Google","Linus Health","O2X","Shadow Lion","DCU","Fresh Tilled Soil"]},"mark-stenquist":{slug:"mark",name:"Mark Stenquist",title:"Co-Founder & Lead Engineer",image:"/images/leadership/mark-stenquist.png",linkedin:"https://linkedin.com/in/markstenquist",yearsOfExperience:"16+",shortBio:"Co-founder of VisualBoston. Lead engineer with 16+ years building high-quality web experiences. Got his start at CampusLIVE before joining CustomMade, a Google Ventures-backed marketplace. Has consulted for Boston startups across industries since 2015. Built this site using Anthropic's Claude Code and bridges the gap between design and engineering on every project.",bio:"Mark is a lead engineer with 16+ years of experience building thoughtful, high-quality web experiences. He got his start at CampusLIVE, a startup his brother co-founded, where he helped grow the company through multiple funding rounds with prominent Boston VCs as part of a scrappy team of eight. From there he joined CustomMade, a Google Ventures-backed marketplace, where he honed his craft creating digital experiences connecting makers with customers. After going independent in 2015, he consulted for Boston startups across industries, and those connections eventually led him to co-found VisualBoston. Mark rebuilt the companyâs website using Anthropicâs Claude Code, leads the engineering practice, and mentors the design team on engineering fundamentals to bridge the gap between design and development. Outside of work, Mark is a dad of three, permaculture-certified gardener, and guitar player.",expertise:["Frontend Development","React","Next.js","AI-Powered Development","Claude Code","TypeScript"],notableClients:["CampusLIVE","CustomMade","Dwight Capital","hoo.be","Inoviant"]}};function a(e){if(!e)return null;if(s[e])return s[e];let t=e.toLowerCase().replace(/\s+/g,"-");return s[t]?s[t]:null}},87254:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(95155);r(12115);var a=r(52596);let l=e=>{let{as:t="h2",children:r,className:l,size:n,weight:i="medium",color:o="white",align:d="left",textBalance:c=!1}=e,m=(()=>
1{if(n)return n;switch(t){case"h1":return"3xl";case"h2":return"2xl";case"h3":case"h4":return"lg";case"h5":return"md";default:return"xl"}})(),x=(0,a.A)("leading-tight",{"text-balance":c},{"text-xs md:text-sm lg:text-base":"xs"===m,"text-sm md:text-base lg:text-lg":"sm"===m,"text-base md:text-lg lg:text-xl":"md"===m,"text-xl md:text-xl lg:text-2xl":"lg"===m,"text-xl md:text-2xl lg:text-3xl":"xl"===m,"text-3xl lg:text-4xl":"2xl"===m,"text-3xl md:text-4xl lg:text-5xl":"3xl"===m,"text-4xl md:text-5xl lg:text-6xl":"4xl"===m,"text-5xl md:text-6xl lg:text-7xl":"5xl"===m,"text-6xl md:text-7xl lg:text-8xl":"6xl"===m},{"font-normal":"normal"===i,"font-medium":"medium"===i,"font-semibold":"semibold"===i,"font-bold":"bold"===i},{"text-white":"white"===o,"text-gray-300":"gray"===o,"text-primary-400":"primary"===o,"text-secondary-400":"secondary"===o},{"text-left":"left"===d,"text-center":"center"===d,"text-right":"right"===d},l);return(0,s.jsx)(t,{className:x,children:r})}},90147:e=>{e.exports={pulseAnimation:"Button_pulseAnimation__srbFN",pulse:"Button_pulse__kSPwx",shimmerEffect:"Button_shimmerEffect__N0ve5",glowEffect:"Button_glowEffect__BaE9c",loading:"Button_loading__U3vY1",spin:"Button_spin__ITV3l"}}},e=>{e.O(0,[8228,147,5592,6874,9674,802,9088,8441,8229,5964,7358],()=>e(e.s=45217)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.