1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71746,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return o},formatWithValidation:function(){return d},urlObjectKeys:function(){return s}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let l=e.r(79510)._(e.r(25203)),a=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,n=e.protocol||"",i=e.pathname||"",o=e.hash||"",s=e.query||"",d=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?d=t+e.host:r&&(d=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(d+=":"+e.port)),s&&"object"==typeof s&&(s=String(l.urlQueryToSearchParams(s)));let c=e.search||s&&`?${s}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||a.test(n))&&!1!==d?(d="//"+(d||""),i&&"/"!==i[0]&&(i="/"+i)):d||(d=""),o&&"#"!==o[0]&&(o="#"+o),c&&"?"!==c[0]&&(c="?"+c),i=i.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${d}${i}${c}${o}`}let s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function d(e){return o(e)}},15232,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return i}});let n=e.r(30878);function i(e,t){let r=(0,n.useRef)(null),i=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(r.current=l(e,n)),t&&(i.current=l(t,n))},[e,t])}function l(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)},68988,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return l}});let n=e.r(9008),i=e.r(98018);function l(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,i.hasBasePath)(r.pathname)}catch(e){return!1}}},12491,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},4561,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return m},useLinkStatus:function(){return v}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let l=e.r(79510),a=e.r(14294),o=l._(e.r(30878)),s=e.r(71746),d=e.r(69168),c=e.r(15232),p=e.r(9008),u=e.r(69343);e.r(19609);let h=e.r(20971),f=e.r(93505),g=e.r(68988),y=e.r(91544);function m(t){var r,n;let i,l,m,[v,b]=(0,o.useOptimistic)(f.IDLE_LINK_STATUS),j=(0,o.useRef)(null),{href:_,as:S,children:w,prefetch:k=null,passHref:T,replace:C,shallow:I,scroll:O,onClick:P,onMouseEnter:N,onTouchStart:R,legacyBehavior:D=!1,onNavigate:L,transitionTypes:M,ref:z,unstable_dynamicOnHover:W,...$}=t;i=w,D&&("string"==typeof i||"number"==typeof i)&&(i=(0,a.jsx)("a",{children:i}));let E=o.default.useContext(d.AppRouterContext),U=!1!==k,A=!1!==k?null===(n=k)||"auto"===n?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,B="string"==typeof(r=S||_)?r:(0,s.formatUrl)(r);if(D){if(i?.$$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>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});l=o.default.Children.only(i)}let F=D?l&&"object"==typeof l&&l.ref:z,K=o.default.useCallback(e=>(null!==E&&(j.current=(0,f.mountLinkInstance)(e,B,E,A,U,b)),()=>{j.current&&((0,f.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,f.unmountPrefetchableInstance)(e)}),[U,B,E,A,b]),H={ref:(0,c.useMergedRef)(K,F),onClick(t){D||"function"!=typeof P||P(t),D&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t),!E||t.defaultPrevented||function(t,r,n,i,l,a,s){if("u">typeof window){let d,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((d=t.currentTarget.getAttribute("target"))&&"_self"!==d||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,g.isLocalURL)(r)){i&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:p}=e.r(89867);o.default.startTransition(()=>{p(r,i?"replace":"push",!1===l?h.ScrollBehavior.NoScroll:h.ScrollBehavior.Default,n.current,s)})}}(t,B,j,C,O,L,M)},onMouseEnter(e){D||"function"!=typeof N||N(e),D&&l.props&&"function"==typeof l.props.onMouseEnter&&l.props.onMouseEnter(e),E&&U&&(0,f.onNavigationIntent)(e.currentTarget,!0===W)},onTouchStart:function(e){D||"function"!=typeof R||R(e),D&&l.props&&"function"==typeof l.props.onTouchStart&&l.props.onTouchStart(e),E&&U&&(0,f.onNavigationIntent)(e.currentTarget,!0===W)}};return(0,p.isAbsoluteUrl)(B)?H.href=B:D&&!T&&("a"!==l.type||"href"in l.props)||(H.href=(0,u.addBasePath)(B)),m=D?o.default.cloneElement(l,H):(0,a.jsx)("a",{...$,...H,children:i}),(0,a.jsx)(x.Provider,{value:v,children:m})}e.r(12491);let x=(0,o.createContext)(f.IDLE_LINK_STATUS),v=()=>(0,o.useContext)(x);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esMo
1dule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77880,e=>{"use strict";var t=e.i(14294),r=e.i(30878);e.s(["GameThumb",0,function({appId:e,stored:n,name:i,w:l,h:a}){let o,s=(o=[],n&&o.push(n),o.push(`https://shared.cloudflare.steamstatic.com/store_item_assets/steam/apps/${e}/header.jpg`),o.push(`https://cdn.cloudflare.steamstatic.com/steam/apps/${e}/header.jpg`),o),[d,c]=(0,r.useState)(0);return d>=s.length?(0,t.jsx)("div",{className:"cap",style:{width:l,height:a,flex:"none",display:"flex",alignItems:"center",justifyContent:"center",fontSize:Math.max(9,Math.round(.5*a)),fontWeight:"bold",color:"#7a7e64"},children:(i||"?").trim().slice(0,1).toUpperCase()}):(0,t.jsx)("img",{src:s[d],alt:"",width:l,height:a,loading:"lazy",onError:()=>c(d+1),style:{width:l,height:a,flex:"none",objectFit:"cover",borderRadius:2,background:"#11130d"}})}])},92029,e=>{"use strict";var t=e.i(14294),r=e.i(30878);async function n(){let e;try{e=await fetch("/api/library/import",{method:"POST"})}catch{return{status:"error"}}if(409===e.status)return{status:"profile_private"};if(!e.ok)return{status:"error"};let t=await e.json().catch(()=>({}));return{status:"ok",owned:t.owned??0,wishlist:t.wishlist??0}}e.s(["ImportButton",0,function(){let[e,i]=(0,r.useState)(!1),[l,a]=(0,r.useState)(null);async function o(){if(e)return;i(!0),a(null);let t=await n();"ok"===t.status?location.reload():(i(!1),a("profile_private"===t.status?"Set your Steam profile + game details to Public, then retry.":"Import failed. Try again in a moment."))}return(0,t.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:8},children:[(0,t.jsx)("span",{className:"chip on",role:"button","aria-disabled":e,onClick:o,children:e?"Importingâ¦":"Import my library"}),l&&(0,t.jsx)("span",{style:{color:"var(--dim)",fontSize:12},children:l})]})}],92029)},8373,e=>{"use strict";var t=e.i(14294),r=e.i(30878),n=e.i(77880),i=e.i(42362);function l(e){return(e.igdb_hypes??0)>=200}function a(e,t){return e<=0||e>=t?null:"that's everything worth flagging right now"}function o(e,t,r){return r<=0?0:(e+t+r)%r}function s(e){if(!e)return null;let t=Math.floor((Date.now()-new Date(e).getTime())/864e5);return!Number.isFinite(t)||t<0?null:0===t?"today":`${t}d ago`}function d({g:e}){let r,n=(r=Math.max(e.metacritic??0,e.opencritic??0,e.igdb_aggregated_rating??0))>0?Math.round(r):null,i=e.itad_price_cents??e.price_cents;return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",fontSize:11,color:"var(--dim)",marginTop:6},children:[s(e.released_at)&&(0,t.jsx)("span",{children:s(e.released_at)}),null!=e.review_score&&(0,t.jsxs)("span",{style:{color:"#6db86d"},children:[e.review_score,"%"]}),null!=n&&(0,t.jsxs)("span",{style:{color:"var(--gold)"},children:["â
",n]}),l(e)&&(0,t.jsx)("span",{style:{color:"var(--yellow)"},children:"ð¥ hyped"}),e.lib&&(0,t.jsx)("span",{style:{textTransform:"uppercase"},children:e.lib}),null!=i&&(0,t.jsxs)("span",{style:{marginLeft:"auto",color:"var(--gold)",fontWeight:"bold"},children:["â¬",(i/100).toFixed(2)]})]})}let c={position:"absolute",top:"42%",transform:"translateY(-50%)",zIndex:2,background:"rgba(12,13,9,.72)",color:"var(--text)",border:"1px solid #4a4d3c",cursor:"pointer",fontSize:18,lineHeight:1,width:30,height:44,display:"flex",alignItems:"center",justifyContent:"center"};e.s(["NewReleasesSpotlight",0,function({games:e,target:l=12}){let s=e.slice(0,l),[p,u]=(0,r.useState)(0),h=a(s.length,l);if(0===s.length)return(0,t.jsxs)("div",{style:{padding:"4px 18px 10px"},children:[(0,t.jsx)("div",{className:"barhead",style:{margin:"0 0 8px"},children:"⦠New Releases Worth Checking Out"}),(0,t.jsx)("div",{style:{color:"var(--dim)",fontSize:12,padding:"6px 2px"},children:"Nothing new clears the bar right now â check back in a day or two."})]});let f=p>=s.length?0:p,g=s[f],y=s.length>1,m=e=>u(t=>o(t,e,s.length));return(0,t.jsxs)("div",{style:{padding:"4px 18px 10px"},tabIndex:0,onKeyDown:e=>{"ArrowRight"===e.key?(e.preventDefault(),m(1)):"ArrowLeft"===e.key&&(e.preventDefault(),m(-1))},children:[(0,t.jsx)("div",{className:"barhead",style:{margin:"0 0 8px",textAlign:"center"},children:"⦠New Releases Worth Checking Out"}),(0,t.jsxs)("div",{style:{position:"relative",maxWidth:600,margin:"0 auto"},children:[(0,t.jsxs)(i.HoverLink,{appId:g.app_id,href:`/game/${g.app_id}`,style:{display:"block",textDecoration:"none",color:"inherit",background:"var(--panel2)",border:"1px solid #20231a",padding:10},children:[(0,t.jsx)("div",{style:{display:"flex",justifyContent:"center",background:"#0c0d09"},children:(0,t.jsx)(n.GameThumb,{appId:g.app_id,stored:g.header_image,name:g.name,w:580,h:271})}),(0,t.jsx)("div",{style:{color:"#dfe1d3",fontWeight:"bold",fontSize:15,marginTop:8,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:g.name}),(0,t.jsx)(d,{g:g})]}),y&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{"aria-label":"Previous release",style:{...c,left:0},onClick:e=>{e.preventDefault(),e.stopPropagation(),m(-1)},children:"â¹"}),(0,t.jsx)("button",{"aria-label":"Next release",style:{...c,right:0},onClick:e=>{e.preventDefault(),e.stopPropagation(),m(1)},children:"âº"})]})]}),y&&(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",justifyContent:"center",gap:8,margin:"8px auto 0",maxWidth:600},children:s.map((e,r)=>(0,t.jsx)("button",{"aria-label":e.name,onClick:()=>u(r),style:{padding:0,cursor:"pointer",lineHeight:0,border:r===f?"1px solid var(--gold)":"1px solid #20231a",opacity:r===f?1:.6,background:"#11130d"},children:(0,t.jsx)(n.GameThumb,{appId:e.app_id,stored:e.header_image,name:e.name,w:100,h:47}
1)},e.app_id))}),h&&(0,t.jsx)("div",{style:{color:"var(--dim)",fontSize:10,fontStyle:"italic",padding:"6px 2px 0"},children:h})]})},"cycleIndex",0,o,"isHyped",0,l,"tailNote",0,a])},41003,e=>{"use strict";var t=e.i(14294),r=e.i(30878),n=e.i(77880),i=e.i(42362);let l={atl:"var(--yellow)",ach:"#cfb53b",patch:"#6db86d",sub:"#4fa3d1",spike:"#d18a4f",bundle:"#b07fd1"};e.s(["DigestStrip",0,function({items:e}){let[a,o]=(0,r.useState)(new Set),[s,d]=(0,r.useState)(!1),[c,p]=(0,r.useState)(0),[u,h]=(0,r.useState)(1),f=e.filter(e=>!a.has(e.app_id));if(0===f.length)return null;let g=e=>(0,t.jsxs)(i.HoverLink,{appId:e.app_id,href:`/game/${e.app_id}`,style:{position:"relative",display:"flex",gap:10,padding:8,background:"var(--panel2)",border:"1px solid #2a2d22",borderRadius:3,textDecoration:"none",color:"inherit"},children:[(0,t.jsx)("button",{onClick:t=>{var r;return r=e.app_id,void(t.preventDefault(),t.stopPropagation(),o(e=>new Set(e).add(r)),fetch("/api/digest/dismiss",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app_id:r})}).catch(()=>{}))},"aria-label":"Dismiss",title:"Dismiss â won't show again",style:{position:"absolute",top:2,right:2,width:18,height:18,lineHeight:"16px",padding:0,background:"transparent",border:"none",color:"var(--dim)",fontSize:13,cursor:"pointer",borderRadius:2},children:"â"}),(0,t.jsx)(n.GameThumb,{appId:e.app_id,stored:e.header_image,name:e.name,w:84,h:39}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsxs)("div",{style:{fontWeight:"bold",color:"#e7e9da",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingRight:16},children:[e.name," ",(0,t.jsx)("span",{style:{fontSize:8,color:"var(--dim)"},children:"owned"===e.kind?"OWNED":"WISHLIST"})]}),(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2,marginTop:3},children:e.reasons.map((e,r)=>(0,t.jsxs)("span",{style:{fontSize:11,color:l[e.type],fontWeight:"atl"===e.type?"bold":"normal"},children:["⢠",e.label]},r))})]})]},e.app_id),y=(e,r,n)=>(0,t.jsx)("div",{className:n,style:{flex:1,minWidth:0,display:"grid",gridTemplateColumns:"repeat(3, minmax(0, 1fr))",gap:10},children:e.map(g)},r);if(s)return(0,t.jsxs)("div",{style:{padding:"10px 18px 8px"},children:[y(f,"all","digest-fade"),(0,t.jsx)("div",{style:{marginTop:8},children:(0,t.jsx)("button",{className:"chip",onClick:()=>d(!1),style:{cursor:"pointer"},children:"⤠Back to 3Ã4"})})]});let m=function(e){!1;let t=[];for(let r=0;r<e.length;r+=12)t.push(e.slice(r,r+12));return t}(f),x=m.length,v=Math.min(c,x-1),b=(e,r,n)=>(0,t.jsx)("button",{onClick:()=>{h(e),p(t=>t+e)},disabled:n,"aria-label":r,title:r,style:{flex:"none",width:30,alignSelf:"stretch",background:"var(--panel2)",border:"1px solid #2a2d22",borderRadius:3,color:n?"#3a3e30":"var(--gold)",fontSize:18,fontWeight:"bold",cursor:n?"default":"pointer"},children:e<0?"â¹":"âº"});return(0,t.jsxs)("div",{style:{padding:"10px 18px 8px"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"stretch"},children:[x>1&&b(-1,"Previous page",0===v),y(m[v]??[],v,u>0?"digest-page-next":"digest-page-prev"),x>1&&b(1,"Next page",v>=x-1)]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:8},children:[x>1&&(0,t.jsxs)("span",{style:{fontSize:11,color:"var(--dim)"},children:["Page ",v+1," / ",x]}),f.length>12&&(0,t.jsxs)("button",{className:"chip",onClick:()=>d(!0),style:{cursor:"pointer"},children:["Show all ",f.length]})]})]})}],41003)},3487,e=>{"use strict";var t=e.i(14294),r=e.i(30878),n=e.i(77880),i=e.i(42362);let l={bronze:"#b8966a",silver:"#cfd2c2",gold:"var(--yellow)"};e.s(["DiscoveryStrip",0,function({columns:e}){let[a,o]=(0,r.useState)({});return(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:22,padding:"16px 18px 6px",alignItems:"start"},children:e.map(e=>{let r=a[e.title];return(0,t.jsxs)("div",{id:e.id,style:{minWidth:0},children:[(0,t.jsxs)("h4",{onClick:()=>{let t;return t=e.title,o(e=>({...e,[t]:!e[t]}))},style:{margin:"0 0 6px",color:l[e.tone],fontSize:13,cursor:"pointer",userSelect:"none",display:"flex",alignItems:"center",gap:6},children:[(0,t.jsx)("span",{style:{fontSize:9,color:"var(--dim)",width:8},children:r?"â¶":"â¼"}),e.title,(0,t.jsx)("span",{style:{marginLeft:"auto",fontSize:10,
1color:"var(--dim)"},children:e.games.length})]}),(0,t.jsx)("div",{style:{height:1,background:"#4a4d3c",marginBottom:7}}),!r&&0===e.games.length&&(0,t.jsx)("div",{style:{color:"var(--dim)",fontSize:11,padding:"6px 0"},children:"Nothing here yet."}),!r&&e.games.map(e=>{let r;return(0,t.jsxs)(i.HoverLink,{appId:e.app_id,href:`/game/${e.app_id}`,style:{display:"flex",gap:8,padding:"5px 0",borderBottom:"1px solid #2a2d22",textDecoration:"none",color:"inherit",alignItems:"center"},children:[(0,t.jsx)(n.GameThumb,{appId:e.app_id,stored:e.header_image,name:e.name,w:60,h:28}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{color:"#dfe1d3",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:10,color:"var(--dim)"},children:null!=e.player_count?`${e.player_count.toLocaleString()} playing`:e.review_score?`${e.review_score}%`:"â"})]}),null!=e.player_count?null!=(r=e.prev_count?Math.round((e.player_count-e.prev_count)/e.prev_count*100):null)?(0,t.jsxs)("span",{className:r>=0?"up":"down",style:{fontVariantNumeric:"tabular-nums"},children:[r>=0?"â²":"â¼",Math.abs(r),"%"]}):null:null!=e.price_cents&&(0,t.jsxs)("div",{style:{color:"var(--gold)",fontWeight:"bold"},children:["â¬",(e.price_cents/100).toFixed(2)]})]},e.app_id)})]},e.title)})})}])},4481,e=>{"use strict";var t=e.i(14294),r=e.i(30878);let n=[{key:"quality",label:"Quality filter"},{key:"taste",label:"Taste match"}];e.s(["FilterChips",0,function({initial:e}){let[i,l]=(0,r.useState)(e);return(0,t.jsx)("div",{style:{display:"flex",gap:6,alignItems:"center"},children:n.map(({key:e,label:r})=>(0,t.jsx)("span",{className:`chip ${i[e]?"on":""}`,onClick:()=>{let t;l(t={...i,[e]:!i[e]}),fetch("/api/prefs",{method:"POST",body:JSON.stringify(t)}).then(()=>location.reload())},children:r},e))})}])}]);
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.