1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,972520,e=>{"use strict";let t=(0,e.i(475254).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",()=>t],972520)},475254,e=>{"use strict";var t=e.i(271645);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),n=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,t.forwardRef)(({color:e="currentColor",size:n=24,strokeWidth:o=2,absoluteStrokeWidth:s,className:i="",children:l,iconNode:u,...c},d)=>(0,t.createElement)("svg",{ref:d,...a,width:n,height:n,stroke:e,strokeWidth:s?24*Number(o)/Number(n):o,className:r("lucide",i),...!l&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...u.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(l)?l:[l]])),s=(e,a)=>{let s=(0,t.forwardRef)(({className:s,...i},l)=>(0,t.createElement)(o,{ref:l,iconNode:a,className:r(`lucide-${n(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,s),...i}));return s.displayName=n(e),s};e.s(["default",()=>s],475254)},233525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},818581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return a}});let n=e.r(271645);function a(e,t){let r=(0,n.useRef)(null),a=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(r.current=o(e,n)),t&&(a.current=o(t,n))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},998183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function o(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function s(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function i(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,s(e));else t.set(r,s(n));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},195057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return i},formatWithValidation:function(){return u},urlObjectKeys:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(190809)._(e.r(998183)),s=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:r}=e,n=e.protocol||"",a=e.pathname||"",i=e.hash||"",l=e.query||"",u=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?u=t+e.host:r&&(u=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(u+=":"+e.port)),l&&"object"==typeof l&&(l=String(o.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||s.test(n))&&!1!==u?(u="//"+(u||""),a&&"/"!==a[0]&&(a="/"+a)):u||(u=""),i&&"#"!==i[0]&&(i="#"+i),c&&"?"!==c[0]&&(c="?"+c),a=a.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${u}${a}${c}${i}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return i(e)}},718967,(e,t,r)=>{"use strict";
1Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return v},MissingStaticPage:function(){return w},NormalizeError:function(){return x},PageNotFoundError:function(){return y},SP:function(){return m},ST:function(){return b},WEB_VITALS:function(){return o},execOnce:function(){return s},getDisplayName:function(){return d},getLocationOrigin:function(){return u},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return f},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return h},stringifyError:function(){return j}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function s(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let i=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>i.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=u();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function h(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let m="u">typeof performance,b=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class x extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class w extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class v extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function j(e){return JSON.stringify({message:e.message,stack:e.stack})}},573668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let n=e.r(718967),a=e.r(652817);function o(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},284508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},522016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return g},useLinkStatus:function(){return y}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(190809),s=e.r(843476),i=o._(e.r(271645)),l=e.r(195057),u=e.r(8372),c=e.r(818581),d=e.r(718967),f=e.r(405550);e.r(233525);let h=e.r(91949),p=e.r(573668),m=e.r(509396);function b(e){return"string"==typeof e?e:(0,l.formatUrl)(e)}function g(t){var r;let n,a,o,[l,g]=(0,i.useOptimistic)(h.IDLE_LINK_STATUS),y=(0,i.useRef)(null),{href:w,as:v,children:j,prefetch:k=null,passHref:N,replace:P,shallow:C,scroll:_,onClick:O,onMouseEnter:E,onTouchStart:S,legacyBehavior:T=!1,onNavigate:L,ref:A,unstable_dynamicOnHover:M,...R}=t;n=j,T&&("string"==typeof n||"number"==typeof n)&&(n=(0,s.jsx)("a",{children:n}));let $=i.default.useContext(u.AppRouterContext),U=!1!==k,I=!1!==k?null===(r=k)||"auto"===r?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,{href:D,as:F}=i.default.useMemo(()=>{let e=b(w);return{href:e,as:v?b(v):e}},[w,v]);if(T){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>
1` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});a=i.default.Children.only(n)}let W=T?a&&"object"==typeof a&&a.ref:A,z=i.default.useCallback(e=>(null!==$&&(y.current=(0,h.mountLinkInstance)(e,D,$,I,U,g)),()=>{y.current&&((0,h.unmountLinkForCurrentNavigation)(y.current),y.current=null),(0,h.unmountPrefetchableInstance)(e)}),[U,D,$,I,g]),B={ref:(0,c.useMergedRef)(z,W),onClick(t){T||"function"!=typeof O||O(t),T&&a.props&&"function"==typeof a.props.onClick&&a.props.onClick(t),!$||t.defaultPrevented||function(t,r,n,a,o,s,l){if("u">typeof window){let u,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((u=t.currentTarget.getAttribute("target"))&&"_self"!==u||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,p.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(699781);i.default.startTransition(()=>{d(n||r,o?"replace":"push",s??!0,a.current)})}}(t,D,F,y,P,_,L)},onMouseEnter(e){T||"function"!=typeof E||E(e),T&&a.props&&"function"==typeof a.props.onMouseEnter&&a.props.onMouseEnter(e),$&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===M)},onTouchStart:function(e){T||"function"!=typeof S||S(e),T&&a.props&&"function"==typeof a.props.onTouchStart&&a.props.onTouchStart(e),$&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===M)}};return(0,d.isAbsoluteUrl)(F)?B.href=F:T&&!N&&("a"!==a.type||"href"in a.props)||(B.href=(0,f.addBasePath)(F)),o=T?i.default.cloneElement(a,B):(0,s.jsx)("a",{...R,...B,children:n}),(0,s.jsx)(x.Provider,{value:l,children:o})}e.r(284508);let x=(0,i.createContext)(h.IDLE_LINK_STATUS),y=()=>(0,i.useContext)(x);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},643531,e=>{"use strict";let t=(0,e.i(475254).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],643531)},664659,e=>{"use strict";let t=(0,e.i(475254).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",()=>t],664659)},373264,e=>{"use strict";let t=(0,e.i(475254).default)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);e.s(["LayoutGrid",()=>t],373264)},370956,e=>{"use strict";let t=(0,e.i(475254).default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);e.s(["List",()=>t],370956)},358773,e=>{"use strict";var t=e.i(843476),r=e.i(271645),n=e.i(522016),a=e.i(664659),o=e.i(373264),s=e.i(370956),i=e.i(972520),l=e.i(643531);let u={pricing:{label:"Pricing & cost",badge:"Pricing",blurb:"Straight answers on what things actually cost, with no quote-to-find-out games."},comparison:{label:"Comparisons",badge:"Comparison",blurb:"Honest side-by-sides to help you pick the right option before you spend a dollar."},honest:{label:"Honest takes",badge:"Honest take",blurb:"The stuff most agencies won't tell you, including where we're not the right fit."},guide:{label:"Guides",badge:"Guide",blurb:"Practical, step-by-step playbooks for getting found and getting customers."},data:{label:"Local data",badge:"Local data",blurb:"Original research on Seattle-area businesses you won't find anywhere else."},case:{label:"Case studies",badge:"Case study",blurb:"Real local projects, real numbers, what we did and what it produced."},fix:{label:"Website fixes",badge:"Fix",blurb:"Your website broke or worries you. Here's what's wrong, how to check it free, and how to fix it."},ai:{label:"AI for business",badge:"AI",blurb:"Plain answers on what AI can actually do for a small business and when to skip it."}
1,software:{label:"Custom software",badge:"Software",blurb:"When spreadsheets and off-the-shelf tools stop fitting: what custom software really involves and what it fixes."},analytics:{label:"Web analytics",badge:"Analytics",blurb:"What your website's numbers mean and how to read them: leads, ads, rankings, visitor behaviour, shown on the real product."}},c=["from-[#22d3ee] via-[#0ea5e9] to-[#2563eb]","from-[#34d399] via-[#06b6d4] to-[#02b6fe]","from-[#60a5fa] via-[#3b82f6] to-[#4f46e5]","from-[#1ec4ff] via-[#0e7490] to-[#0a1628]","from-[#818cf8] via-[#635bff] to-[#0ea5e9]","from-[#7dd3fc] via-[#38bdf8] to-[#02b6fe]"],d=e=>new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),f=[{key:"newest",label:"Newest first"},{key:"oldest",label:"Oldest first"}];function h({accent:e,className:r=""}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:`absolute inset-0 bg-gradient-to-br ${c[e%c.length]} transition-transform duration-[600ms] ease-out group-hover:scale-[1.05] ${r}`}),(0,t.jsx)("div",{"aria-hidden":!0,className:"absolute inset-0",style:{background:"radial-gradient(120% 90% at 28% 16%, rgba(255,255,255,0.5), transparent 58%)"}}),(0,t.jsx)("div",{"aria-hidden":!0,className:"absolute inset-0 opacity-[0.12]",style:{backgroundImage:"radial-gradient(circle, white 1px, transparent 1px)",backgroundSize:"22px 22px"}})]})}function p({items:e}){let[c,p]=(0,r.useState)("all"),[m,b]=(0,r.useState)("newest"),[g,x]=(0,r.useState)("grid"),[y,w]=(0,r.useState)(!1),v=[{key:"all",label:"All"},...Object.keys(u).filter(t=>e.some(e=>e.type===t)).map(e=>({key:e,label:u[e].label}))],j=[..."all"===c?e:e.filter(e=>e.type===c)].sort((e,t)=>"newest"===m?new Date(t.date).getTime()-new Date(e.date).getTime():new Date(e.date).getTime()-new Date(t.date).getTime());return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-x-6 gap-y-4 border-b border-slate-200 pb-5",children:[(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-2.5 -mx-1 overflow-x-auto sm:mx-0 sm:overflow-visible",children:v.map(e=>{let r=c===e.key;return(0,t.jsx)("button",{type:"button",onClick:()=>p(e.key),className:`whitespace-nowrap px-1 font-system text-[15.5px] tracking-[-0.01em] transition-colors ${r?"font-semibold text-[#0a1628]":"font-medium text-slate-400 hover:text-slate-700"}`,children:e.label},e.key)})}),(0,t.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>w(e=>!e),className:"inline-flex items-center gap-1.5 rounded-full border border-slate-200 bg-white px-3.5 py-1.5 font-system text-[13.5px] font-medium text-slate-600 hover:border-slate-300 hover:text-[#0a1628] transition-colors","aria-haspopup":"listbox","aria-expanded":y,children:[f.find(e=>e.key===m).label,(0,t.jsx)(a.ChevronDown,{className:`h-3.5 w-3.5 transition-transform ${y?"rotate-180":""}`,strokeWidth:2.4})]}),y&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-10",onClick:()=>w(!1),"aria-hidden":!0}),(0,t.jsx)("ul",{className:"absolute right-0 z-20 mt-2 w-44 overflow-hidden rounded-xl border border-slate-200 bg-white py-1 shadow-[0_18px_44px_-20px_rgba(10,22,40,0.4)]",children:f.map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",onClick:()=>{b(e.key),w(!1)},className:"flex w-full items-center justify-between px-3.5 py-2 font-system text-[13.5px] text-slate-600 hover:bg-slate-50 hover:text-[#0a1628] transition-colors",children:[e.label,m===e.key&&(0,t.jsx)(l.Check,{className:"h-4 w-4 text-[#02b6fe]",strokeWidth:2.6})]})},e.key))})]})]}),(0,t.jsxs)("div",{className:"hidden sm:flex items-center rounded-full border border-slate-200 p-0.5",children:[(0,t.jsx)("button",{type:"button",onClick:()=>x("grid"),"aria-label":"Grid view",className:`flex h-7 w-7 items-center justify-center rounded-full transition-colors ${"grid"===g?"bg-[#0a1628] text-white":"text-slate-400 hover:text-[#0a1628]"}`,children:(0,t.jsx)(o.LayoutGrid,{className:"h-[15px] w-[15px]",strokeWidth:2.2})}),(0,t.jsx)("button",{type:"button",onClick:()=>x("list"),"aria-label":"List view",className:`flex h-7 w-7 items-center justify-center rounded-full transition-colors ${"list"===g?"bg-[#0a1628] text-white":"text-slate-400 hover:text-[#0a1628]"}
1`,children:(0,t.jsx)(s.List,{className:"h-[15px] w-[15px]",strokeWidth:2.2})})]})]})]}),"grid"===g?(0,t.jsx)("div",{className:"mt-10 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-x-7 gap-y-12 md:gap-y-14",children:j.map(e=>(0,t.jsxs)(n.default,{href:`/articles/${e.slug}`,className:"group block",children:[(0,t.jsxs)("div",{className:"relative aspect-[4/3] overflow-hidden rounded-[18px]",children:[(0,t.jsx)(h,{accent:e.accent}),(0,t.jsx)("div",{"aria-hidden":!0,className:"absolute inset-0 bg-gradient-to-t from-black/55 via-black/10 to-transparent"}),(0,t.jsx)("h3",{className:"absolute inset-x-0 bottom-0 p-5 md:p-6 font-system text-[21px] md:text-[24px] font-bold tracking-[-0.02em] leading-[1.16] text-white text-balance [text-shadow:0_2px_18px_rgba(0,0,0,0.35)]",children:e.title})]}),(0,t.jsxs)("p",{className:"mt-3.5 font-system text-[13.5px] text-slate-400",children:[d(e.date),(0,t.jsx)("span",{className:"text-slate-300",children:" · "}),e.readMinutes," min read"]})]},e.slug))}):(0,t.jsx)("ul",{className:"mt-6 divide-y divide-slate-200 border-t border-slate-200",children:j.map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)(n.default,{href:`/articles/${e.slug}`,className:"group flex items-center gap-4 sm:gap-6 py-5",children:[(0,t.jsx)("div",{className:"relative hidden sm:block h-[72px] w-[116px] flex-shrink-0 overflow-hidden rounded-xl",children:(0,t.jsx)(h,{accent:e.accent})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"font-system text-[17px] md:text-[19px] font-bold tracking-[-0.015em] leading-snug text-[#0a1628] group-hover:text-[#02b6fe] transition-colors text-pretty line-clamp-2",children:e.title}),(0,t.jsxs)("p",{className:"mt-1.5 font-system text-[13px] text-slate-400",children:[d(e.date),(0,t.jsx)("span",{className:"text-slate-300",children:" · "}),e.readMinutes," min read"]})]}),(0,t.jsx)(i.ArrowRight,{className:"ml-auto hidden h-4 w-4 flex-shrink-0 text-slate-300 transition-[color,transform] group-hover:translate-x-0.5 group-hover:text-[#02b6fe] sm:block",strokeWidth:2.4})]})},e.slug))})]})}e.s(["ArticlesGrid",()=>p],358773)}]);
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.