1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{63:(e,t,s)=>{"use strict";var a=s(7260);s.o(a,"usePathname")&&s.d(t,{usePathname:function(){return a.usePathname}}),s.o(a,"useRouter")&&s.d(t,{useRouter:function(){return a.useRouter}})},468:(e,t,s)=>{"use strict";s.d(t,{default:()=>o});var a=s(2115),r=s(63);function o(){let e=(0,r.usePathname)();return(0,a.useEffect)(()=>{let e=Array.from(document.querySelectorAll(".reveal"));if(!e.length)return;let t=()=>e.forEach(e=>e.classList.add("is-in"));if(!("IntersectionObserver"in window))return void t();let s=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(t.target.classList.add("is-in"),s.unobserve(t.target))},{rootMargin:"0px 0px -8% 0px",threshold:.05});e.forEach(e=>s.observe(e));let a=e=>{e.persisted&&t()};window.addEventListener("pageshow",a);let r=window.setTimeout(()=>{e.forEach(e=>{if(!e.classList.contains("is-in")){let t=e.getBoundingClientRect();t.top<window.innerHeight&&t.bottom>0&&e.classList.add("is-in")}})},2e3);return()=>{s.disconnect(),window.removeEventListener("pageshow",a),window.clearTimeout(r)}},[e]),null}},2183:(e,t,s)=>{"use strict";s.d(t,{default:()=>c});var a=s(2115),r=s(63);function o(e){return e.replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e])}function n(e){return Math.min(100,Math.max(0,parseInt(String(e),10)||0))}function c(){let e=(0,r.usePathname)();return(0,a.useEffect)(()=>{document.querySelectorAll(".roo-insight").forEach((e,t)=>{if(e.dataset.fx)return;e.dataset.fx="1";let s=document.createElement("span");s.className="roo-insight-num",s.textContent="Insight #".concat(t+1),e.insertBefore(s,e.firstChild)}),document.querySelectorAll(".roo-score-card").forEach(e=>{e.dataset.fx||(e.dataset.fx="1",function(e){let t,s,a,r,c=e.dataset;try{t=JSON.parse(c.tools||"[]"),s=JSON.parse(c.scores||"[]"),a=JSON.parse(c.criteria||"[]"),r=JSON.parse(c.criteriaScores||"[]")}catch(e){return}if(!t.length)return;let i=(c.verdict||"").toLowerCase(),l=t.findIndex(e=>e.toLowerCase().includes(i.split(" ")[0]));-1===l&&(l=s.indexOf(Math.max(...s)));let d='<div class="roo-sc-tools" style="grid-template-columns:'.concat(t.map((e,s)=>"1fr"+(s<t.length-1?" auto ":"")).join(""),'">');t.forEach((e,t)=>{let a=n(s[t]);t>0&&(d+='<div class="roo-sc-vs">vs</div>'),d+='<div class="roo-sc-tool'.concat(t===l?" roo-sc-winner":"").concat(t>0?" roo-sc-right":"",'">')+'<span class="roo-sc-tool-name">'.concat(o(e),"</span>")+'<span class="roo-sc-score">'.concat(a,"</span>")+'<div class="roo-sc-bar-wrap"><div class="roo-sc-bar" data-v="'.concat(a,'"></div></div>')+"</div>"}),d+="</div>";let f="";a.length&&(f='<div class="roo-sc-criteria">',a.forEach((e,s)=>{f+='<div class="roo-sc-criterion"><span class="roo-sc-crit-name">'.concat(o(e),'</span><div class="roo-sc-crit-bars">'),t.forEach((e,t)=>{var a;let o=n(null==(a=r[s])?void 0:a[t]);f+='<div class="roo-sc-crit-col'.concat(t===l?" roo-sc-crit-win":"",'">')+'<div class="roo-sc-crit-bg"><div class="roo-sc-crit-bar" data-v="'.concat(o,'"></div></div>')+'<span class="roo-sc-crit-score">'.concat(o,"</span></div>")}),f+="</div></div>"}),f+="</div>"),e.innerHTML='<div class="roo-sc-header"><span class="roo-sc-verdict-label">Roo360 Verdict</span>'+'<span class="roo-sc-verdict">'.concat(o(c.verdict||t[l])," wins</span>")+"</div>"+d+f;let h=()=>e.querySelectorAll("[data-v]").forEach(e=>{e.style.width="".concat(e.dataset.v,"%")});"IntersectionObserver"in window?new IntersectionObserver((e,t)=>{e[0].isIntersecting&&(setTimeout(h,120),t.disconnect())},{threshold:.25}).observe(e):h()}(e))})},[e]),null}},3673:()=>{},4420:(e,t,s)=>{"use strict";s.d(t,{default:()=>l});var a=s(5155),r=s(2619),o=s.n(r),n=s(2115),c=s(63);let i=[{href:"/tools/",label:"AI Tools"},{href:"/compare/",label:"Compare"},{href:"/articles/",label:"Articles"},{href:"/free-tools/",label:"Free Tools"},{href:"/submit/",label:"Submit"}];function l(){let[e,t]=(0,n.useState)(!1),s=(0,c.usePathname)();(0,n.useEffect)(()=>t(!1),[s]),(0,n.useEffect)(()=>(document.body.style.overflow=e?"hidden":"",()=>{document.body.style.overflow=""}),[e]);let r=e=>s===e||"/"!==e&&s.startsWith(e);return(0,a.jsxs)("header",{className:"sticky top-0 z-40 border-b border-line bg-ink/80 backdrop-blur-md",children:[(0,a.jsxs)("div",{className:"mx-auto flex h-16 max-w-site items-center justify-between px-5",children:[(0,a.jsx)(o(),{href:"/",className:"flex items-center gap-2","aria-label":"Roo360 home",children:(0,a.jsx)("img",{src:"/assets/Logo.webp",alt:"Roo360",width:125,height:30,className:"h-[30px] w-auto"})}),(0,a.jsxs)("nav",{className:"hidden items-center gap-7 md:flex","aria-label":"Primary",children:[i.map(e=>(0,a.jsx)(o(),{href:e.href,className:"text-sm font-medium transition ".concat(r(e.href)?"text-accent":"text-muted hover:text-fg"),children:e.label},e.href)),(0,a.jsx)(o(),{href:"/newsletter/",className:"btn-accent !px-4 !py-2 text-[13px]",children:"Newsletter"})]}),(0,a.jsxs)("button",{type:"button",className:"flex h-10 w-10 flex-col items-center justify-center gap-[5px] md:hidden","aria-expanded":e,"aria-controls":"mobile-nav","aria-label":e?"Close menu":"Open menu",onClick:()=>t(e=>!e),children:[(0,a.jsx)("span",{className:"h-[2px] w-6 bg-fg transition-transform ".concat(e?"translate-y-[7px] rotate-45":"")}),(0,a.jsx)("span",{className:"h-[2px] w-6 bg-fg transition-opacity ".concat(e?"opacity-0":"")}
1),(0,a.jsx)("span",{className:"h-[2px] w-6 bg-fg transition-transform ".concat(e?"-translate-y-[7px] -rotate-45":"")})]})]}),(0,a.jsxs)("div",{id:"mobile-nav",className:"absolute inset-x-0 top-full z-40 flex h-[calc(100dvh-4rem)] flex-col overflow-y-auto bg-ink/95 px-6 py-6 backdrop-blur-lg transition-opacity duration-200 md:hidden ".concat(e?"opacity-100":"pointer-events-none opacity-0"),children:[(0,a.jsx)("nav",{className:"flex flex-col gap-1","aria-label":"Mobile",children:i.map(e=>(0,a.jsx)(o(),{href:e.href,className:"rounded-lg px-3 py-3.5 text-lg font-semibold transition ".concat(r(e.href)?"bg-accent-soft text-accent":"text-fg hover:bg-panel"),children:e.label},e.href))}),(0,a.jsx)(o(),{href:"/newsletter/",className:"btn-accent mt-6 w-full",children:"Get the newsletter"})]})]})}},5292:e=>{e.exports={style:{fontFamily:"'JetBrains Mono', 'JetBrains Mono Fallback'",fontStyle:"normal"},className:"__className_3c557b",variable:"__variable_3c557b"}},6235:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,2619,23)),Promise.resolve().then(s.t.bind(s,7126,23)),Promise.resolve().then(s.t.bind(s,5292,23)),Promise.resolve().then(s.t.bind(s,3673,23)),Promise.resolve().then(s.bind(s,2183)),Promise.resolve().then(s.bind(s,4420)),Promise.resolve().then(s.bind(s,468))},7126:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_f367f3",variable:"__variable_f367f3"}}},e=>{e.O(0,[902,619,441,255,358],()=>e(e.s=6235)),_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.