1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,92962,e=>{"use strict";var r=e.i(43476),t=e.i(57688),a=e.i(71645),i=e.i(62319);let n=Array.from({length:10},(e,r)=>`/assets/hero_sticker${r+1}.webp`),o=Math.round(1218/1356*148),s=e=>Math.floor(e/10).toLocaleString();function l(e,r,t,a,i=0){let o=e,s=()=>{let e,[r,t]=[(e=(1664525*o+0x3c6ef35f)%0x100000000)/0x100000000,e];return o=t,r},d=Math.round(54+52*s()),c=Math.max(28,a-28-d);return{sticker:{id:r,src:n[Math.floor(s()*n.length)],x:-d-i-s()*(.65*t),y:Math.round(28+s()*(c-28)),size:d,speed:220+170*s(),rot:360*s(),spin:-140+280*s()},seed:o}}e.s(["Game",0,function(){let[e,n]=(0,a.useState)("idle"),[d,c]=(0,a.useState)(0),[p,m]=(0,a.useState)(0),[g,u]=(0,a.useState)(0),[h,x]=(0,a.useState)([]),f="idle"!==e,y=(0,a.useRef)(null),b=(0,a.useRef)(null),v=(0,a.useRef)(null),w=(0,a.useRef)(0),k=(0,a.useRef)({width:0,height:0}),_=(0,a.useRef)(505505),j=(0,a.useRef)([]),N=(0,a.useRef)(0),z=(0,a.useRef)(0),M=(0,a.useRef)("idle"),R=e=>{j.current=e,x(e)},S=e=>{N.current=e,m(e)},$=()=>{let e=y.current?.getBoundingClientRect();k.current={width:e?.width??window.innerWidth,height:e?.height??window.innerHeight}},A=e=>{z.current=Math.min(Math.max(e,28),Math.max(28,k.current.height-28-148))},E=(0,a.useCallback)(()=>{j.current=[],x([]),w.current=0,n("idle"),c(0),u(0)},[]);(0,a.useEffect)(()=>{M.current=e},[e]),(0,a.useEffect)(()=>{if("idle"!==e||0===d)return;let r=window.setTimeout(()=>c(0),1800);return()=>window.clearTimeout(r)},[d,e]),(0,a.useEffect)(()=>{if(!f)return;let e=document.body.style.overflow;document.body.style.overflow="hidden",$();let r=()=>{$(),A(z.current)},t=e=>{if("Escape"===e.key)return void E();if("playing"!==M.current)return;let r=/^(ArrowUp|w)$/i.test(e.key)?-1:+!!/^(ArrowDown|s)$/i.test(e.key);r&&(e.preventDefault(),A(z.current+72*r))};return window.addEventListener("resize",r),window.addEventListener("keydown",t),()=>{document.body.style.overflow=e,window.removeEventListener("resize",r),window.removeEventListener("keydown",t)}},[E,f]),(0,a.useEffect)(()=>{if("playing"!==e){null!==b.current&&cancelAnimationFrame(b.current),b.current=null,v.current=null;return}let r=e=>{if(null===v.current){v.current=e,b.current=requestAnimationFrame(r);return}let t=Math.min((e-v.current)/1e3,.032);v.current=e,w.current+=1e3*t;let a=N.current+(z.current-N.current)*Math.min(1,10*t);N.current=a;let i=1+Math.min(2.5,w.current/1e4),s=k.current.width-88-o+14,d=k.current.width-88-14,c=a+14,p=a+148-14,m=!1;(R(j.current.map(e=>{let r={...e,x:e.x+e.speed*i*t,rot:e.rot+e.spin*t};r.x>k.current.width+r.size+36&&(r=(e=>{let{width:r,height:t}=k.current,a=l(_.current,e,r,t);return _.current=a.seed,a.sticker})(e.id));let a=r.x+10,n=r.x+r.size-10,o=r.y+10,g=r.y+r.size-10;return n>=s&&a<=d&&g>=c&&o<=p&&(m=!0),r})),S(a),u(w.current),m)?n("lost"):b.current=requestAnimationFrame(r)};return b.current=requestAnimationFrame(r),()=>{null!==b.current&&cancelAnimationFrame(b.current),b.current=null,v.current=null}},[e]);let C=r=>{if("playing"!==e)return;let t=y.current?.getBoundingClientRect();t&&A(r-t.top-74)};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h1",{style:{position:"relative",margin:0,lineHeight:.9,letterSpacing:"-0.03em",fontWeight:400,fontSize:"clamp(64px, 16vw, 172px)",color:"var(--foreground)"},children:(0,r.jsxs)("button",{type:"button",className:"glitch-trigger",onClick:()=>{if(!f){if(d+1>=3)return void(R([]),w.current=0,c(0),u(0),n("intro"));c(d+1)}},"aria-label":"Tap the 404 three times to open Sticker Run",children:[(0,r.jsx)("span",{className:"glitch-layer base",children:"404"}),(0,r.jsx)("span",{className:"glitch-layer cyan","aria-hidden":"true",children:"404"}),(0,r.jsx)("span",{className:"glitch-layer red","aria-hidden":"true",children:"404"})]})}),d>0?(0,r.jsx)("div",{className:"arming-strip","aria-hidden":"true",children:Array.from({length:3},(e,t)=>(0,r.jsx)("span",{className:t<d?"arming-dot active":"arming-dot",style:{animationDelay:`${70*t}ms`}},t))}):null,f?(0,r.jsxs)("dialog",{open:!0,className:"game-overlay","aria-modal":"true","aria-labelledby":"sticker-game-title",children:[(0,r.jsx)(i.Navbar,{}),(0,r.jsx)("div",{className:"game-overlay__wash","aria-hidden":"true"}),(0,r.jsxs)("div",{ref:y,className:`game-overlay__field${"playing"===e?" is-live":""}`,onPointerMove:e=>C(e.clientY),onPointerDown:e=>C(e.clientY),children:[(0,r.jsx)("div",{className:"game-lane game-lane--top","aria-hidden":"true"}),(0,r.jsx)("div",{className:"game-lane game-lane--mid","aria-hidden":"true"}),(0,r.jsx)("div",{className:"game-lane game-lane--bottom","aria-hidden":"true"}),h.map(e=>(0,r.jsx)("div",{className:"game-sticker",style:{transform:`translate3d(${e.x}px, ${e.y}px, 0) rotate(${e.rot}deg)`,width:e.size,height:e.size},children:(0,r.jsx)(t.default,{src:e.src,alt:"",width:e.size,height:e.size,className:"game-image"})},e.id)),(0,r.jsxs)("div",{className:`game-ship${"lost"===e?" is-dead":""}`,style:{transform:`translate3d(0, ${p}px, 0)`},"aria-hidden":"true",children:[(0,r.jsx)("div",{className:"game-ship__trail"}),(0,r.jsx)(t.default,{src:"/assets/openlake.svg",alt:"",width:1218,height:1356,className:"game-ship__image"})]})]}),(0,r.jsxs)("div",{className:"game-overlay__hud",children:[(0,r.jsxs)("div",{className:"game-chip",children:["Score ",s(g)]}),(0,r.jsx)("button",{type:"button",className:"game-exit",onClick:E,children:"Exit"})]}),(0,r.jsxs)("div",{className:`game-overlay__panel game-overlay__panel--${e}`,children:[(0,r.jsx)("h2",{id:"sticker-game-title",children:"lost"===e?"Sled destroyed":""}),(0,r.jsx)("p",{children:"intro"===e?"Pilot the sled on the right. Move up and down with your mouse, finger, or arrow keys. Survive as long as you can without crashing into a sticker!":"lost"===e?`Score: ${s(g)}. Better luck next time!`:""}),("intro"===e||"lost"===e)&&(0,r.jsx)("div",{className:"game-actions",children:(0,r.jsx)("button",{type:"button",className:"game-primary",onClick:()=>{$();let{width:e,height:r}=k.current,t=function(e,r,t){let a=e,i=[];for(let e=0;e<10;e+=1){let n=l(a,e,r,t,120*e);i.push(n.sticker),a=n.seed}return{stickers:i,seed:a}}(_.current,e,r);_.current=t.seed,w.current=0,v.current=null,R(t.stickers);let a=Math.max(28,(r-148)/2);A(a),S(a),u(0),n("playing")},children:"intro"===e?"Start run":"Play again"})})]}),(0,r.jsx)("style",{children:` 2 .game-overlay { 3 position: fixed; 4 inset: 0; 5 width: 100%; 6 max-width: none; 7 height: 100%; 8 max-height: none; 9 margin: 0; 10 padding: 0; 11 border: 0; 12 z-index: 2000; 13 overflow: hidden; 14 color: inherit; 15 background: 16 radial-gradient(circle at 18% 18%, rgba(40, 169, 226, 0.16), transparent 30%), 17 radial-gradient(circle at 86% 16%, rgba(40, 169, 226, 0.10), transparent 24%), 18 linear-gradient(180deg, var(--paper) 0%, var(--sky-100) 100%); 19 animation: overlay-enter 260ms cubic-bezier(0.22, 1, 0.36, 1); 20 } 21 22 html.dark .game-overlay { 23 background: 24 radial-gradient(circle at 18% 18%, rgba(40, 169, 226, 0.12), transparent 30%), 25 radial-gradient(circle at 86% 16%, rgba(40, 169, 226, 0.08), transparent 24%), 26 linear-gradient(180deg, var(--deep-970) 0%, var(--deep-990) 100%); 27 } 28 29 .game-overlay__wash { 30 position: absolute; 31 inset: 0; 32 background: radial-gradient(circle at center, rgba(23, 54, 83, 0.06), transparent 40%); 33 pointer-events: none; 34 } 35 36 .game-overlay__field { 37 position: absolute; 38 inset: 0; 39 overflow: hidden; 40 cursor: default; 41 } 42 43 .game-overlay__field.is-live {
44 cursor: none; 45 } 46 47 .game-lane { 48 position: absolute; 49 left: -10%; 50 right: 22%; 51 height: 1px; 52 border-top: 1px dashed var(--border); 53 opacity: 0.8; 54 animation: lane-drift 1.4s linear infinite; 55 } 56 57 .game-lane--top { top: 28%; } 58 .game-lane--mid { top: 50%; } 59 .game-lane--bottom { top: 72%; } 60 61 .game-sticker { 62 position: absolute; 63 left: 0; 64 top: 0; 65 will-change: transform; 66 filter: drop-shadow(0 12px 22px rgba(0, 0, 0, 0.28)); 67 } 68 69 .game-image { 70 display: block; 71 width: 100%; 72 height: auto; 73 animation: bob 2.8s ease-in-out infinite alternate; 74 } 75 76 .game-ship { 77 position: absolute; 78 right: 88px; 79 top: 0; 80 width: ${o}px; 81 height: 148px; 82 display: flex; 83 align-items: center; 84 justify-content: flex-end; 85 pointer-events: none; 86 will-change: transform; 87 } 88 89 .game-ship.is-dead { 90 filter: saturate(0.3) brightness(0.86); 91 } 92 93 .game-ship__trail { 94 position: absolute; 95 right: -18px; 96 top: 50%; 97 width: 52px; 98 height: 18px; 99 border-radius: 999px; 100 background: linear-gradient(90deg, rgba(40, 169, 226, 0.6), rgba(40, 169, 226, 0.05)); 101 filter: blur(4px); 102 transform: translateY(-50%); 103 animation: thruster 240ms ease-in-out infinite alternate; 104 z-index: 0; 105 } 106 107 .game-ship__image { 108 position: relative; 109 z-index: 1; 110 display: block; 111 width: 100%; 112 height: auto; 113 filter: drop-shadow(0 10px 20px rgba(23, 54, 83, 0.22)); 114 } 115 116 .game-overlay__hud { 117 position: absolute; 118 top: 94px; 119 left: 22px; 120 right: 22px; 121 z-index: 3; 122 display: flex; 123 align-items: center; 124 gap: 10px; 125 flex-wrap: wrap; 126 animation: panel-enter 320ms 60ms cubic-bezier(0.22, 1, 0.36, 1) both; 127 } 128 129 .game-chip, 130 .game-exit { 131 display: inline-flex; 132 align-items: center; 133 justify-content: center; 134 min-height: 42px; 135 padding: 0 16px; 136 border-radius: 999px; 137 border: 1px solid var(--border); 138 background: var(--nav-bg); 139 backdrop-filter: blur(12px); 140 color: var(--foreground); 141 font-family: var(--font-phantom); 142 font-size: 14px; 143 line-height: 1; 144 letter-spacing: 0.08em; 145 text-transform: uppercase; 146 } 147 148 .game-exit { 149 margin-left: auto; 150 cursor: pointer; 151 transition: background-color 160ms ease, border-color 160ms ease; 152 } 153 154 .game-exit:hover { 155 background: rgba(23, 54, 83, 0.14); 156 border-color: rgba(23, 54, 83, 0.28); 157 } 158 159 .game-overlay__panel { 160 position: absolute; 161 left: 24px; 162 bottom: 24px; 163 z-index: 3; 164 max-width: 440px; 165 padding: 18px 18px 16px; 166 border-radius: 24px; 167 background: var(--nav-bg); 168 border: 1px solid var(--border); 169 box-shadow: var(--shadow-dd); 170 backdrop-filter: blur(20px); 171 animation: panel-enter 320ms 80ms cubic-bezier(0.22, 1, 0.36, 1) both; 172 } 173 174 .game-overlay__panel--playing { 175 max-width: 300px; 176 padding: 14px 14px 12px; 177 } 178 179 .game-overlay__panel h2 { 180 margin: 0; 181 font-weight: 700; 182 font-size: clamp(34px, 7vw, 56px); 183 line-height: 0.92; 184 font-weight: 400; 185 color: var(--foreground); 186 } 187 188 .game-overlay__panel p { 189 margin: 10px 0 0; 190 max-width: 28ch; 191 font-family: var(--font-phantom); 192 font-size: clamp(15px, 1.8vw, 19px); 193 line-height: 1.3; 194 color: var(--muted); 195 } 196 197 .game-actions { 198 display: flex; 199 gap: 10px; 200 flex-wrap: wrap; 201 margin-top: 16px; 202 } 203 204 .game-primary, 205 .game-secondary { 206 min-height: 48px; 207 padding: 0 18px; 208 border-radius: 999px; 209 font-family: var(--font-phantom); 210 font-size: 18px; 211 line-height: 1; 212 cursor: pointer; 213 transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease; 214 } 215 216 .game-primary { 217 border: 0; 218 background: var(--foreground); 219 color: var(--background); 220 } 221 222 .game-primary:hover { 223 background: var(--red); 224 color: var(--paper); 225 } 226 227 .game-secondary { 228 border: 1px solid var(--border); 229 background: transparent; 230 color: var(--foreground); 231 } 232 233 .game-secondary:hover { 234 background: var(--surface-hover); 235 } 236 237 @keyframes overlay-enter { 238 from { opacity: 0; transform: scale(1.02); } 239 to { opacity: 1; transform: scale(1); } 240 } 241 242 @keyframes panel-enter { 243 from { opacity: 0; transform: translateY(18px); } 244 to { opacity: 1; transform: translateY(0); } 245 } 246 247 @keyframes lane-drift { 248 from { transform: translateX(0); } 249 to { transform: translateX(-54px); } 250 } 251 252 @keyframes thruster { 253 from { transform: scaleX(0.82); opacity: 0.7; } 254 to { transform: scaleX(1.12); opacity: 1; } 255 } 256 257 @keyframes bob { 258 from { translate: 0 -5px; } 259 to { translate: 0 5px; } 260 } 261 262 @media (max-width: 767px) { 263 .game-overlay__hud { 264 top: 92px; 265 left: 16px; 266 right: 16px; 267 } 268 269 .game-exit { 270 margin-left: 0; 271 } 272 273 .game-overlay__panel { 274 left: 16px; 275 right: 16px; 276 bottom: 16px; 277 max-width: none; 278 padding: 20px 18px 18px; 279 } 280 281 .game-ship {
282 right: 26px; 283 } 284 } 285 286 @media (prefers-reduced-motion: reduce) { 287 .game-overlay, 288 .game-lane, 289 .game-image, 290 .game-ship__trail, 291 .game-overlay__hud, 292 .game-overlay__panel, 293 .game-exit, 294 .game-primary, 295 .game-secondary { 296 animation: none !important; 297 transition: none !important; 298 } 299 } 300 `})]}):null,(0,r.jsx)("style",{children:` 301 .glitch-trigger { 302 position: relative; 303 display: inline-grid; 304 place-items: center; 305 padding: 0; 306 border: 0; 307 background: transparent; 308 color: inherit; 309 font: inherit; 310 cursor: pointer; 311 } 312 313 .glitch-trigger:focus-visible { 314 outline: 3px solid rgba(23, 54, 83, 0.32); 315 outline-offset: 12px; 316 border-radius: 24px; 317 } 318 319 .glitch-layer { 320 position: absolute; 321 inset: 0; 322 display: inline-block; 323 } 324 325 .glitch-layer.base { 326 position: relative; 327 } 328 329 .glitch-layer.cyan { 330 color: var(--brand-sky); 331 transform: translate(-2px, 0); 332 clip-path: inset(6% 0 64% 0); 333 animation: cyan 1.8s steps(2, jump-end) infinite alternate; 334 } 335 336 .glitch-layer.red { 337 color: var(--red); 338 transform: translate(2px, 0); 339 clip-path: inset(54% 0 12% 0); 340 animation: red 2.2s steps(2, jump-end) infinite alternate; 341 } 342 343 .arming-strip { 344 display: inline-flex; 345 align-items: center; 346 gap: 12px; 347 margin-top: 18px; 348 padding: 10px 16px; 349 border-radius: 999px; 350 background: var(--nav-bg); 351 border: 1px solid var(--border); 352 box-shadow: var(--shadow-dd); 353 animation: arming-enter 180ms ease-out; 354 } 355 356 .arming-dot { 357 width: 10px; 358 height: 10px; 359 border-radius: 999px; 360 background: var(--border); 361 transform: scale(0.6); 362 opacity: 0; 363 animation: arming-dot-in 260ms cubic-bezier(0.22, 1, 0.36, 1) forwards; 364 } 365 366 .arming-dot.active { 367 background: var(--red); 368 } 369 370 @keyframes arming-enter { 371 from { opacity: 0; transform: translateY(6px); } 372 to { opacity: 1; transform: translateY(0); } 373 } 374 375 @keyframes arming-dot-in { 376 from { opacity: 0; transform: scale(0.6); } 377 to { opacity: 1; transform: scale(1); } 378 } 379 380 @keyframes cyan { 381 0% { clip-path: inset(6% 0 64% 0); } 382 20% { clip-path: inset(78% 0 4% 0); } 383 40% { clip-path: inset(32% 0 36% 0); } 384 60% { clip-path: inset(10% 0 66% 0); } 385 80% { clip-path: inset(62% 0 14% 0); } 386 100% { clip-path: inset(48% 0 24% 0); } 387 } 388 389 @keyframes red { 390 0% { clip-path: inset(54% 0 12% 0); } 391 20% { clip-path: inset(16% 0 58% 0); } 392 40% { clip-path: inset(70% 0 8% 0); } 393 60% { clip-path: inset(26% 0 42% 0); } 394 80% { clip-path: inset(48% 0 16% 0); } 395 100% { clip-path: inset(8% 0 66% 0); } 396 } 397 398 @media (max-width: 767px) { 399 .glitch-layer.cyan, 400 .glitch-layer.red { 401 transform: none; 402 } 403 } 404 405 @media (prefers-reduced-motion: reduce) { 406 .glitch-layer.cyan, 407 .glitch-layer.red, 408 .arming-strip, 409 .arming-dot { 410 animation: none !important; 411 transition: none !important; 412 } 413 414 .glitch-layer.cyan, 415 .glitch-layer.red { 416 clip-path: inset(0 0 0 0); 417 color: inherit; 418 transform: none; 419 } 420 } 421 `})]})}])}]); 422 423//# sourceMappingURL=0ipeh1clv3cy2.js.map
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.