1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,30747,e=>{"use strict";e.i(74046),e.s(["DUR_REVEAL",0,.5,"EASE_OUT_EXPO",0,[.25,.4,.25,1],"SPRING_BUTTON",0,{type:"spring",stiffness:360,damping:28,mass:.9},"SPRING_GENTLE",0,{type:"spring",stiffness:300,damping:30},"SPRING_SNAPPY",0,{type:"spring",stiffness:400,damping:30},"STAGGER_DELAY",0,.08])},41872,e=>{"use strict";var t=e.i(71645);let i="summerup-consent-v1",n="2026-06-01",r="summerup-consent-change";function a(){try{let e=window.localStorage.getItem(i);if(!e)return null;let t=JSON.parse(e);if(t.version!==n||"granted"!==t.status&&"denied"!==t.status)return null;return{status:t.status,registration:!0===t.registration,decided:!0===t.decided,version:t.version,timestamp:"string"==typeof t.timestamp?t.timestamp:""}}catch{return null}}function s(){try{let e=[];for(let t=0;t<window.localStorage.length;t+=1){let i=window.localStorage.key(t);i&&i.toLowerCase().startsWith("luma")&&e.push(i)}e.forEach(e=>window.localStorage.removeItem(e))}catch{}}function o(e){let t=t=>{(t.key===i||null===t.key)&&e()};return window.addEventListener(r,e),window.addEventListener("storage",t),()=>{window.removeEventListener(r,e),window.removeEventListener("storage",t)}}e.s(["reopenConsent",0,function(){try{window.localStorage.removeItem(i)}catch{}s(),window.dispatchEvent(new Event(r))},"setConsent",0,function(e){let t={status:e?"granted":"denied",registration:e,decided:!0,version:n,timestamp:new Date().toISOString()};try{window.localStorage.setItem(i,JSON.stringify(t))}catch{}e||s(),window.dispatchEvent(new Event(r))},"useConsentDecided",0,function(){return(0,t.useSyncExternalStore)(o,()=>a()?.decided===!0,()=>!1)},"useConsentRegistration",0,function(){return(0,t.useSyncExternalStore)(o,()=>a()?.registration===!0,()=>!1)}])},59544,e=>{"use strict";var t=e.i(43476),i=e.i(46932),n=e.i(72328),r={success:{pattern:[{duration:30,intensity:.5},{delay:60,duration:40,intensity:1}]},warning:{pattern:[{duration:40,intensity:.8},{delay:100,duration:40,intensity:.6}]},error:{pattern:[{duration:40,intensity:.9},{delay:40,duration:40,intensity:.9},{delay:40,duration:40,intensity:.9}]},light:{pattern:[{duration:15,intensity:.4}]},medium:{pattern:[{duration:25,intensity:.7}]},heavy:{pattern:[{duration:35,intensity:1}]},soft:{pattern:[{duration:40,intensity:.5}]},rigid:{pattern:[{duration:10,intensity:1}]},selection:{pattern:[{duration:8,intensity:.3}]},nudge:{pattern:[{duration:80,intensity:.8},{delay:80,duration:50,intensity:.3}]},buzz:{pattern:[{duration:1e3,intensity:1}]}},a=0,s=class e{hapticLabel=null;domInitialized=!1;instanceId;debug;showSwitch;rafId=null;patternResolve=null;audioCtx=null;audioFilter=null;audioGain=null;audioBuffer=null;constructor(e){this.instanceId=++a,this.debug=e?.debug??!1,this.showSwitch=e?.showSwitch??!1}static isSupported="u">typeof navigator&&"function"==typeof navigator.vibrate;async trigger(t=[{duration:25,intensity:.7}],i){let n=function(e){if("number"==typeof e)return{vibrations:[{duration:e}]};if("string"==typeof e){let t=r[e];return t?{vibrations:t.pattern.map(e=>({...e}))}:(console.warn(`[web-haptics] Unknown preset: "${e}"`),null)}if(Array.isArray(e)){if(0===e.length)return{vibrations:[]};if("number"==typeof e[0]){let t=[];for(let i=0;i<e.length;i+=2){let n=i>0?e[i-1]:0;t.push({...n>0&&{delay:n},duration:e[i]})}return{vibrations:t}}return{vibrations:e.map(e=>({...e}))}}return{vibrations:e.pattern.map(e=>({...e}))}}(t);if(!n)return;let{vibrations:a}=n;if(0===a.length)return;let s=Math.max(0,Math.min(1,i?.intensity??.5));for(let e of a)if(e.duration>1e3&&(e.duration=1e3),!Number.isFinite(e.duration)||e.duration<0||void 0!==e.delay&&(!Number.isFinite(e.delay)||e.delay<0))return void console.warn("[web-haptics] Invalid vibration values. Durations and delays must be finite non-negative numbers.");if(e.isSupported&&navigator.vibrate(function(e,t){let i=[];for(let n=0;n<e.length;n++){let r=e[n],a=Math.max(0,Math.min(1,r.intensity??t)),s=r.delay??0;s>0&&(i.length>0&&i.length%2==0?i[i.length-1]+=s:(0===i.length&&i.push(0),i.push(s)));let o=function(e,t){if(t>=1)return[e];if(t<=0)return[];let i=Math.max(1,Math.round(20*t)),n=20-i,r=[],a=e;for(;a>=20;)r.push(i),r.push(n),a-=20;if(a>0){let e=Math.max(1,Math.round(a*t));
1r.push(e);let i=a-e;i>0&&r.push(i)}return r}(r.duration,a);if(0===o.length){i.length>0&&i.length%2==0?i[i.length-1]+=r.duration:r.duration>0&&(i.push(0),i.push(r.duration));continue}for(let e of o)i.push(e)}return i}(a,s)),!e.isSupported||this.debug){if(this.ensureDOM(),!this.hapticLabel)return;this.debug&&await this.ensureAudio(),this.stopPattern();let e=(a[0]?.delay??0)===0;if(e&&(this.hapticLabel.click(),this.debug&&this.audioCtx)){let e=Math.max(0,Math.min(1,a[0].intensity??s));this.playClick(e)}await this.runPattern(a,s,e)}}cancel(){this.stopPattern(),e.isSupported&&navigator.vibrate(0)}destroy(){this.stopPattern(),this.hapticLabel&&(this.hapticLabel.remove(),this.hapticLabel=null,this.domInitialized=!1),this.audioCtx&&(this.audioCtx.close(),this.audioCtx=null,this.audioFilter=null,this.audioGain=null,this.audioBuffer=null)}setDebug(e){this.debug=e,!e&&this.audioCtx&&(this.audioCtx.close(),this.audioCtx=null,this.audioFilter=null,this.audioGain=null,this.audioBuffer=null)}setShowSwitch(e){if(this.showSwitch=e,this.hapticLabel){let t=this.hapticLabel.querySelector("input");this.hapticLabel.style.display=e?"":"none",t&&(t.style.display=e?"":"none")}}stopPattern(){null!==this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.patternResolve?.(),this.patternResolve=null}runPattern(e,t,i){return new Promise(n=>{this.patternResolve=n;let r=[],a=0;for(let i of e){let e=Math.max(0,Math.min(1,i.intensity??t)),n=i.delay??0;n>0&&(a+=n,r.push({end:a,isOn:!1,intensity:0})),a+=i.duration,r.push({end:a,isOn:!0,intensity:e})}let s=a,o=0,l=-1,u=e=>{0===o&&(o=e);let t=e-o;if(t>=s){this.rafId=null,this.patternResolve=null,n();return}let a=r[0];for(let e of r)if(t<e.end){a=e;break}if(a.isOn){let t=16+(1-a.intensity)*184;-1===l?(l=e,i||(this.hapticLabel?.click(),this.debug&&this.audioCtx&&this.playClick(a.intensity),i=!0)):e-l>=t&&(this.hapticLabel?.click(),this.debug&&this.audioCtx&&this.playClick(a.intensity),l=e)}this.rafId=requestAnimationFrame(u)};this.rafId=requestAnimationFrame(u)})}playClick(e){if(!this.audioCtx||!this.audioFilter||!this.audioGain||!this.audioBuffer)return;let t=this.audioBuffer.getChannelData(0);for(let e=0;e<t.length;e++)t[e]=(2*Math.random()-1)*Math.exp(-e/25);this.audioGain.gain.value=.5*e;let i=1+(Math.random()-.5)*.3;this.audioFilter.frequency.value=(2e3+2e3*e)*i;let n=this.audioCtx.createBufferSource();n.buffer=this.audioBuffer,n.connect(this.audioFilter),n.onended=()=>n.disconnect(),n.start()}async ensureAudio(){if(!this.audioCtx&&"u">typeof AudioContext){this.audioCtx=new AudioContext,this.audioFilter=this.audioCtx.createBiquadFilter(),this.audioFilter.type="bandpass",this.audioFilter.frequency.value=4e3,this.audioFilter.Q.value=8,this.audioGain=this.audioCtx.createGain(),this.audioFilter.connect(this.audioGain),this.audioGain.connect(this.audioCtx.destination),this.audioBuffer=this.audioCtx.createBuffer(1,.004*this.audioCtx.sampleRate,this.audioCtx.sampleRate);let e=this.audioBuffer.getChannelData(0);for(let t=0;t<e.length;t++)e[t]=(2*Math.random()-1)*Math.exp(-t/25)}this.audioCtx?.state==="suspended"&&await this.audioCtx.resume()}ensureDOM(){if(this.domInitialized||typeof document>"u")return;let e=`web-haptics-${this.instanceId}`,t=document.createElement("label");t.setAttribute("for",e),t.textContent="Haptic feedback",t.style.position="fixed",t.style.bottom="10px",t.style.left="10px",t.style.padding="5px 10px",t.style.backgroundColor="rgba(0, 0, 0, 0.7)",t.style.color="white",t.style.fontFamily="sans-serif",t.style.fontSize="14px",t.style.borderRadius="4px",t.style.zIndex="9999",t.style.userSelect="none",this.hapticLabel=t;let i=document.createElement("input");i.type="checkbox",i.setAttribute("switch",""),i.id=e,i.style.all="initial",i.style.appearance="auto",this.showSwitch||(t.style.display="none",i.style.display="none"),t.appendChild(i),document.body.appendChild(t),this.domInitialized=!0}},o=e.i(71645),l=e.i(75157),u=e.i(30747),d=e.i(41872);e.s(["Button",0,function({children:e,href:r,onClick:a,onPointerDown:c,disabled:p,variant:f="primary",size:h="default",icon:m,lumaEventId:y,className:g}){let v,b=(0,n.useReducedMotion)(),x=(0,d.useConsentRegistration)(),w=(v=(0,o.useRef)(null),(0,o.useEffect)(()=>
1(v.current=new s(void 0),()=>{v.current?.destroy(),v.current=null}),[]),(0,o.useEffect)(()=>{v.current?.setDebug((void 0)??!1)},[void 0]),(0,o.useEffect)(()=>{v.current?.setShowSwitch((void 0)??!1)},[void 0]),{trigger:(0,o.useCallback)((e,t)=>v.current?.trigger(e,t),[]),cancel:(0,o.useCallback)(()=>v.current?.cancel(),[]),isSupported:s.isSupported}),_=r?i.motion.a:i.motion.button,C=r?.startsWith("http"),S=!!y&&x,j=C&&!S;return(0,t.jsxs)(_,{href:r,target:j?"_blank":void 0,rel:j?"noopener noreferrer":void 0,onClick:a,onPointerDown:()=>{w.isSupported&&window.matchMedia("(pointer: coarse)").matches&&w.trigger("primary"===f?14:8),c?.()},disabled:r?void 0:p,"aria-disabled":p||void 0,...S?{"data-luma-action":"checkout","data-luma-event-id":y}:{},className:(0,l.cn)("group relative inline-flex items-center justify-center gap-2 font-semibold rounded-full select-none transition-[background-color,border-color,color] duration-200 ease-out will-change-transform disabled:pointer-events-none disabled:opacity-55 aria-disabled:opacity-55",{primary:"text-white [background-image:linear-gradient(to_bottom,rgba(194,65,12,0.92),rgba(154,52,18,0.96))] lg:supports-[backdrop-filter]:backdrop-blur-md shadow-[inset_0_1px_0_rgba(255,255,255,0.34),inset_0_-1.5px_2px_rgba(75,20,5,0.35),0_1px_2px_-1px_rgba(154,52,18,0.5),0_10px_24px_-12px_rgba(154,52,18,0.5)] ",secondary:"card-glass card-rim text-foreground border border-[var(--border-card)] hover:border-accent/30 ",ghost:"bg-transparent text-foreground hover:bg-accent/10 lg:supports-[backdrop-filter]:hover:backdrop-blur-sm"}[f],{default:"px-6 py-3 text-sm",medium:"px-5 py-3 text-sm",large:"px-8 py-4 text-base"}[h],g),whileHover:b?void 0:{y:-2},whileTap:b?void 0:{scale:.97,y:-2},transition:u.SPRING_BUTTON,children:[!b&&(0,t.jsx)("span",{"aria-hidden":!0,className:(0,l.cn)("pointer-events-none absolute inset-0 -z-10 rounded-full opacity-0","transition-opacity duration-200 ease-out group-hover:opacity-100",{primary:"shadow-[inset_0_1px_0_rgba(255,255,255,0.42),inset_0_-1.5px_2px_rgba(75,20,5,0.38),0_2px_5px_-1px_rgba(154,52,18,0.5),0_18px_36px_-12px_rgba(154,52,18,0.58)]",secondary:"shadow-[inset_0_1px_0_rgba(255,255,255,0.7),0_2px_8px_-4px_rgba(28,25,23,0.12),0_18px_36px_-18px_rgba(120,90,40,0.24)]",ghost:"shadow-[0_10px_28px_-16px_rgba(154,52,18,0.28)]"}[f])}),(0,t.jsx)("span",{children:e}),m?(0,t.jsx)("span",{className:"inline-flex transition-transform duration-200 ease-out group-hover:translate-x-[3px] motion-reduce:transform-none",children:m}):null]})}],59544)},18566,(e,t,i)=>{t.exports=e.r(76562)},85506,e=>{"use strict";var t=e.i(43476),i=e.i(46932),n=e.i(72328),r=e.i(74046);let a=[.4,0,.2,1];e.s(["ConsentToken",0,function({size:e=18}){let s=(0,r.useHydrated)(),o=(0,n.useReducedMotion)(),l=!s||o;return(0,t.jsx)(i.motion.span,{"aria-hidden":"true",layout:!l,layoutId:l?void 0:"summerup-consent-token",transition:l?{duration:0}:{duration:.55,ease:a},className:"pointer-events-none inline-flex items-center justify-center select-none",style:{fontSize:e,lineHeight:1},children:"ðª"})}],85506)},67585,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"BailoutToCSR",{enumerable:!0,get:function(){return r}});let n=e.r(32061);function r({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new n.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,i)=>{"use strict";function n(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"encodeURIPath",{enumerable:!0,get:function(){return n}})},52157,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"PreloadChunks",{enumerable:!0,get:function(){return l}});let n=e.r(43476),r=e.r(74080),a=e.r(63599),s=e.r(9885),o=e.r(43369);function l({moduleIds:e}){if("u">typeof window)return null;let t=a.workAsyncStorage.getStore();if(void 0===t)return null;let i=[];if(t.reactLoadableManifest&&e){let n=t.reactLoadableManifest;for(let t of e){if(!n[t])continue;let e=n[t].files;i.push(...e)}}if(0===i.length)return null;let u=(0,o.getAssetTokenQuery)();return(0,n.jsx)(n.Fragment,{children:i.map(e=>{let i=`${t.assetPrefix}/_next/${(0,s.encodeURIPath)(e)}${u}`;return e.endsWith(".css")?(0,n.jsx)("link",{precedence:"dynamic",href:i,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,r.preload)(i,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return u}});let n=e.r(43476),r=e.r(71645),a=e.r(67585),s=e.r(52157);function o(e){return{default:e&&"default"in e?e.default:e}}let l={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},u=function(e){let t={...l,...e},i=(0,r.lazy)(()=>t.loader().then(o)),u=t.loading;function d(e){let o=u?(0,n.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,l=!t.ssr||!!t.loading,d=l?r.Suspense:r.Fragment,c=t.ssr?(0,n.jsxs)(n.Fragment,{children:["u"<typeof window?(0,n.jsx)(s.PreloadChunks,{moduleIds:t.modules}):null,(0,n.jsx)(i,{...e})]}):(0,n.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,n.jsx)(i,{...e})});return(0,n.jsx)(d,{...l?{fallback:o}:{},children:c})}return d.displayName="LoadableComponent",d}},70703,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return r}});let n=e.r(55682)._(e.r(69093));function r(e,t){let i={};"function"==typeof e&&(i.loader=e);let r={...i,...t};return(0,n.default)({...r,modules:r.loadableGenerated?.modules})}("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esMo
1dule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},36471,e=>{"use strict";e.s(["isAppRoute",0,function(e){return e.startsWith("/internal")||"/reveal"===e||"/testreveal"===e}])},31009,e=>{"use strict";var t=e.i(43476),i=e.i(71645),n=e.i(70703),r=e.i(18566),a=e.i(36471),s=e.i(72328);function o({className:e}){return(0,t.jsxs)("div",{"aria-hidden":"true",className:e,style:{position:"absolute",inset:0,overflow:"hidden"},children:[(0,t.jsx)("div",{style:{position:"absolute",inset:0,background:"radial-gradient(58% 42% at 26% 82%, rgba(232,89,12,0.12), rgba(232,89,12,0.04) 38%, transparent 64%)"}}),(0,t.jsxs)("svg",{viewBox:"0 0 1440 900",preserveAspectRatio:"xMidYMax slice",style:{position:"absolute",inset:0,width:"100%",height:"100%"},children:[(0,t.jsxs)("defs",{children:[(0,t.jsxs)("linearGradient",{id:"sp-far",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#F3E8CF"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#EBE0CA"})]}),(0,t.jsxs)("linearGradient",{id:"sp-mid",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#E9E0CB"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#DDD2BE"})]}),(0,t.jsxs)("linearGradient",{id:"sp-near",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#DCD1BC"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#D1C9BC"})]}),(0,t.jsxs)("linearGradient",{id:"sp-rim",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"rgba(245,209,143,0.45)"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"rgba(245,209,143,0)"})]})]}),(0,t.jsx)("path",{d:"M0,548 C 240,512 480,536 720,552 C 980,569 1200,536 1440,514 L1440,900 L0,900 Z",fill:"url(#sp-far)"}),(0,t.jsx)("path",{d:"M0,636 C 300,596 540,664 840,636 C 1120,610 1260,604 1440,648 L1440,900 L0,900 Z",fill:"url(#sp-mid)"}),(0,t.jsx)("path",{d:"M0,636 C 300,596 540,664 840,636 C 1120,610 1260,604 1440,648 L1440,664 C 1260,620 1120,626 840,652 C 540,680 300,612 0,652 Z",fill:"url(#sp-rim)",opacity:"0.7"}),(0,t.jsx)("path",{d:"M0,762 C 280,706 600,786 900,744 C 1140,710 1300,734 1440,772 L1440,900 L0,900 Z",fill:"url(#sp-near)"}),(0,t.jsx)("path",{d:"M0,762 C 280,706 600,786 900,744 C 1140,710 1300,734 1440,772 L1440,786 C 1300,748 1140,724 900,758 C 600,800 280,720 0,776 Z",fill:"url(#sp-rim)",opacity:"0.5"})]})]})}let l=` 2precision highp float; 3 4uniform float uTime; 5uniform float uScroll; // document scroll progress 0..1 -> time of day 6uniform float uVelocity; // scroll speed -> kinetic "breath" (0 until wired) 7uniform float uPointerEnergy; // 1 while pointer moves, decays to 0 -> sand heals 8uniform vec2 uMouse; 9uniform vec2 uResolution; 10 11varying vec2 vUv; 12 13/* ---- value noise (shared lineage with dune.frag, mobile-safe, no sin storms) ---- */ 14float hash(vec2 p) { 15 p = fract(p * vec2(123.34, 456.21)); 16 p += dot(p, p + 45.32); 17 return fract(p.x * p.y); 18} 19 20float noise(vec2 p) { 21 vec2 i = floor(p); 22 vec2 f = fract(p); 23 vec2 u = f * f * (3.0 - 2.0 * f); 24 return mix( 25 mix(hash(i), hash(i + vec2(1.0, 0.0)), u.x), 26 mix(hash(i + vec2(0.0, 1.0)), hash(i + vec2(1.0, 1.0)), u.x), 27 u.y 28 ); 29} 30 31float fbm(vec2 p) { 32 float v = 0.0; 33 float a = 0.5; 34 for (int i = 0; i < 3; i++) { 35 v += a * noise(p); 36 p *= 2.02; 37 a *= 0.5; 38 } 39 return v; 40} 41 42float ridged(vec2 p) { 43 return 1.0 - abs(fbm(p) * 2.0 - 1.0); 44} 45 46/* Divergence-free wind from the gradient of a single noise potential. */ 47vec2 curl(vec2 p) { 48 float e = 0.15; 49 float dx = (noise(p + vec2(e, 0.0)) - noise(p - vec2(e, 0.0))) / (2.0 * e); 50 float dy = (noise(p + vec2(0.0, e)) - noise(p - vec2(0.0, e))) / (2.0 * e); 51 return vec2(dy, -dx); 52} 53 54/* Sand height = domain-warped silhouette + wind ripples + a cursor disturbance 55 that parts the sand (concentric rings) and heals away from the pointer. */ 56float duneHeight(vec2 p, vec2 wind, vec2 mp) { 57 float warp = fbm(p * 0.6 + uTime * 0.012); 58 vec2 pw = p + warp * 0.28; 59 float dunes = fbm(pw * 1.15); 60 float ripple = ridged(pw * vec2(3.0, 6.5) + wind); 61 float base = dunes * 0.62 + ripple * 0.38; 62 63 // Cursor sand-parting: emanating rings, strong near the pointer, healing with 64 // distance. Lit because it feeds the height field before the normal is taken. 65 float md = distance(p, mp); 66 float rings = sin(md * 20.0 - uTime * 3.2); 67 float cursor = rings * exp(-md * 5.5) * 0.14 * uPointerEnergy; 68 69 return base + cursor; 70} 71 72/* Ordered Bayer dither without array indexing (ES 1.00 safe) â kills banding. */ 73float bayer2(vec2 a) { a = floor(a);
73 return fract(a.x * 0.5 + a.y * a.y * 0.75); } 74float bayer4(vec2 a) { return bayer2(0.5 * a) * 0.25 + bayer2(a); } 75 76void main() { 77 vec2 uv = vUv; 78 79 // Hero (uScroll~0): horizon at ~0.62, page cream + haze show above. Past the 80 // hero the lit band RISES so sand reads as the general full-viewport background. 81 // Wide feather keeps a soft fade (never a hard horizon line) and preserves the 82 // cheap top discard (full ~38% early-out in the hero, shrinking as it fills). 83 float fill = smoothstep(0.04, 0.20, uScroll); 84 float topEdge = mix(0.62, 1.06, fill); 85 float feather = mix(0.20, 0.34, fill); 86 float band = 1.0 - smoothstep(topEdge - feather, topEdge, uv.y); 87 if (band <= 0.002) { 88 gl_FragColor = vec4(0.0); 89 return; 90 } 91 92 vec2 aspect = vec2(uResolution.x / uResolution.y, 1.0); 93 vec2 p = uv * aspect; 94 vec2 mp = uMouse * aspect; 95 96 vec2 wind = curl(p * 1.4 + uTime * 0.035) * 0.22; 97 98 // Finite-difference normal (portable; no GL derivatives / extensions). 99 float e = 0.012; 100 float h0 = duneHeight(p, wind, mp); 101 float hx = duneHeight(p + vec2(e, 0.0), wind, mp); 102 float hy = duneHeight(p + vec2(0.0, e), wind, mp); 103 vec2 grad = vec2(hx - h0, hy - h0) / e; 104 vec3 n = normalize(vec3(-grad * 0.55, 1.0)); 105 106 // Sun azimuth: scroll = time of day; slow autonomous creep; small cursor rake. 107 float mouseBias = (uMouse.x - 0.5) * 0.4; 108 float az = mix(0.55, 2.45, uScroll) + uTime * 0.02 + mouseBias; 109 vec3 L = normalize(vec3(cos(az), sin(az), 0.42)); 110 111 float diffuse = clamp(dot(n, L), 0.0, 1.0); 112 // Midday (mid-scroll) sits brightest + flattest so heaviest-text sections read. 113 float ambient = 0.38 + 0.12 * sin(uScroll * 3.14159); 114 diffuse = ambient + (1.0 - ambient) * diffuse; 115 116 // Grazing specular crest glint â TONED DOWN vs prior (was the "too orange" 117 // culprit on real GPU): lower amplitude, narrower crest mask, paler at dawn. 118 vec3 V = vec3(0.0, 0.0, 1.0); 119 vec3 H = normalize(L + V); 120 float spec = pow(clamp(dot(n, H), 0.0, 1.0), 30.0); 121 spec = min(spec, 0.35) * smoothstep(0.55, 0.9, h0); 122 // Fast scroll makes the crests shimmer ("breath"). 123 spec *= 1.0 + clamp(uVelocity, 0.0, 1.0) * 1.2; 124 125 // Palette dawn -> dusk, desaturated ~30-40% from the old heavy amber. 126 vec3 litDawn = vec3(0.953, 0.910, 0.812); 127 vec3 shadowDawn = vec3(0.820, 0.788, 0.738); 128 vec3 litDusk = vec3(0.922, 0.700, 0.476); // muted amber-sand, not neon 129 vec3 shadowDusk = vec3(0.604, 0.470, 0.360); // lifted warm shadow 130 vec3 lit = mix(litDawn, litDusk, uScroll); 131 vec3 shadow = mix(shadowDawn, shadowDusk, uScroll); 132 // Specular rim: pale gold at dawn -> soft amber at dusk (never saturated/neon). 133 vec3 rim = mix(vec3(0.960, 0.820, 0.560), vec3(0.910, 0.560, 0.300), uScroll); 134 135 vec3 c = mix(shadow, lit, diffuse); 136 // Foreground (low in frame) keeps full lit relief; the upper sand lifts toward 137 // the lit tone (paler, lower-contrast) and drops its crest specular, so once 138 // the band fills the viewport, header text rides over calm, near-flat sand. 139 float lowFrame = 1.0 - smoothstep(0.55, 0.95, uv.y); // 1 at bottom, 0 near top 140 c = mix(mix(lit, c, 0.55), c, lowFrame); 141 spec *= lowFrame; 142 c += rim * spec; 143 144 // Dither + quantize to kill banding and give the sand a tactile pixel grain. 145 // Slightly stronger dither (/15) reads as the chunky screenshot-era texture. 146 float d = (bayer4(gl_FragCoord.xy) - 0.5) / 15.0; 147 c = floor(c * 24.0 + d * 24.0) / 24.0; 148 149 gl_FragColor = vec4(c, band * 0.95); 150} 151`;var u=e.i(74046);let d=(0,n.default)(()=>e.A(55263).then(e=>e.ShaderCanvas),{loadableGenerated:{modules:[27182]},ssr:!1});e.s(["PageBackdrop",0,function(){let e=(0,u.useHydrated)(),n=(0,r.usePathname)(),c=(0,s.useReducedMotion)(),[p,f]=(0,i.useState)(!1),[h,m]=(0,i.useState)(!1),y=(0,a.isAppRoute)(n),g=c||h||y,v=y||e&&g,b=e&&!g;return(0,t.jsxs)("div",{"aria-hidden":"true",className:"fixed inset-x-0 top-0 -z-[1] pointer-events-none h-[100lvh]",children:[v&&(0,t.jsx)(o,{}),y&&(0,t.jsx)("div",{className:"absolute inset-0 bg-background/85"}),b&&(0,t.jsx)(d,{fragment:l,documentScroll:!0,useMouse:!0,renderScale:.5,fps:30,idleFps:15,onReady:()=>f(!0),onError:()=>m(!0),style:{opacity:+!!p,transition:"opacity 600ms ease-out"}})]})}],31009)},8341,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n={cancelIdleCallback:function(){return s},requestIdleCallback:function(){return a}};for(var r in n)Object.defineProperty(i,r,{enumerable:!0,get:n[r]});let a="u">typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},s="u">typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esMo
151dule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},19083,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n={ESCAPE_REGEX:function(){return s},htmlEscapeAttributeString:function(){return d},htmlEscapeJsonString:function(){return u}};for(var r in n)Object.defineProperty(i,r,{enumerable:!0,get:n[r]});let a={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},s=/[&><\u2028\u2029]/g,o={"&":"&",'"':""","'":"'","<":"<",">":">"},l=/[&"'<>]/g;function u(e){return e.replace(s,e=>a[e])}function d(e){return e.replace(l,e=>o[e])}},79520,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n={default:function(){return x},handleClientScriptLoad:function(){return g},initScriptLoader:function(){return v}};for(var r in n)Object.defineProperty(i,r,{enumerable:!0,get:n[r]});let a=e.r(55682),s=e.r(90809),o=e.r(43476),l=a._(e.r(74080)),u=s._(e.r(71645)),d=e.r(42732),c=e.r(22737),p=e.r(8341),f=e.r(19083),h=new Map,m=new Set,y=e=>{let{src:t,id:i,onLoad:n=()=>{},onReady:r=null,dangerouslySetInnerHTML:a,children:s="",strategy:o="afterInteractive",onError:u,stylesheets:d}=e,p=i||t;if(p&&m.has(p))return;if(h.has(t)){m.add(p),h.get(t).then(n,u);return}let f=()=>{r&&r(),m.add(p)},y=document.createElement("script"),g=new Promise((e,t)=>{y.addEventListener("load",function(t){e(),n&&n.call(this,t),f()}),y.addEventListener("error",function(e){t(e)})}).catch(function(e){u&&u(e)});a?(y.innerHTML=a.__html||"",f()):s?(y.textContent="string"==typeof s?s:Array.isArray(s)?s.join(""):"",f()):t&&(y.src=t,h.set(t,g)),(0,c.setAttributesFromProps)(y,e),"worker"===o&&y.setAttribute("type","text/partytown"),y.setAttribute("data-nscript",o),d&&(e=>{if(l.default.preinit)return e.forEach(e=>{l.default.preinit(e,{as:"style"})});if("u">typeof window){let t=document.head;e.forEach(e=>{let i=document.createElement("link");i.type="text/css",i.rel="stylesheet",i.href=e,t.appendChild(i)})}})(d),document.body.appendChild(y)};function g(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,p.requestIdleCallback)(()=>y(e))}):y(e)}function v(e){e.forEach(g),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");m.add(t)})}function b(e){let{id:t,src:i="",onLoad:n=()=>{},onReady:r=null,strategy:a="afterInteractive",onError:s,stylesheets:c,...h}=e,{updateScripts:g,scripts:v,getIsSsr:b,appDir:x,nonce:w}=(0,u.useContext)(d.HeadManagerContext);w=h.nonce||w;let _=(0,u.useRef)(!1);(0,u.useEffect)(()=>{let e=t||i;_.current||(r&&e&&m.has(e)&&r(),_.current=!0)},[r,t,i]);let C=(0,u.useRef)(!1);if((0,u.useEffect)(()=>{if(!C.current){if("afterInteractive"===a)y(e);else"lazyOnload"===a&&("complete"===document.readyState?(0,p.requestIdleCallback)(()=>y(e)):window.addEventListener("load",()=>{(0,p.requestIdleCallback)(()=>y(e))}));C.current=!0}},[e,a]),("beforeInteractive"===a||"worker"===a)&&(g?(v[a]=(v[a]||[]).concat([{id:t,src:i,onLoad:n,onReady:r,onError:s,...h,nonce:w}]),g(v)):b&&b()?m.add(t||i):b&&!b()&&y({...e,nonce:w})),x){if(c&&c.forEach(e=>{l.default.preinit(e,{as:"style"})}),"beforeInteractive"===a)if(!i)return h.dangerouslySetInnerHTML&&(h.children=h.dangerouslySetInnerHTML.__html,delete h.dangerouslySetInnerHTML),(0,o.jsx)("script",{nonce:w,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,f.htmlEscapeJsonString)(JSON.stringify([0,{...h,id:t}]))})`}});else return l.default.preload(i,h.integrity?{as:"script",integrity:h.integrity,nonce:w,crossOrigin:h.crossOrigin}:{as:"script",nonce:w,crossOrigin:h.crossOrigin}),(0,o.jsx)("script",{nonce:w,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,f.htmlEscapeJsonString)(JSON.stringify([i,{...h,id:t}]))})`}});"afterInteractive"===a&&i&&l.default.preload(i,h.integrity?{as:"script",integrity:h.integrity,nonce:w,crossOrigin:h.crossOrigin}:{as:"script",nonce:w,crossOrigin:h.crossOrigin})}return null}Object.defineProperty(b,"__nextScript",{value:!0});let x=b;("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esMo
151dule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},3303,(e,t,i)=>{t.exports=e.r(79520)},19698,e=>{"use strict";var t=e.i(43476),i=e.i(3303),n=e.i(18566),r=e.i(41872);e.s(["LumaConsentGate",0,function(){let e=(0,r.useConsentRegistration)(),a=(0,n.usePathname)();return!e||a.startsWith("/internal")?null:(0,t.jsx)(i.default,{id:"luma-checkout",src:"https://embed.lu.ma/checkout-button.js",strategy:"afterInteractive",onLoad:()=>window.luma?.initCheckout(),onReady:()=>window.luma?.initCheckout()})}])},44525,e=>{"use strict";var t=e.i(43476),i=e.i(46932),n=e.i(72328),r=e.i(71645),a=e.i(22016),s=e.i(18566),o=e.i(36471),l=e.i(59544),u=e.i(75157),d=e.i(74046),c=e.i(41872),p=e.i(85506);let f=[.4,0,.2,1];e.s(["ConsentBanner",0,function(){let e=(0,d.useHydrated)(),h=(0,c.useConsentDecided)(),m=(0,n.useReducedMotion)(),y=(0,s.usePathname)(),[g,v]=(0,r.useState)(!1);if((0,r.useEffect)(()=>{if(!e||h)return;let t=()=>{let e=window.scrollY;v(t=>t?e>=56:e>120)};return t(),window.addEventListener("scroll",t,{passive:!0}),()=>window.removeEventListener("scroll",t)},[e,h]),!e||h||(0,o.isAppRoute)(y))return null;let b=!m;return(0,t.jsx)(i.motion.div,{initial:b?{opacity:0,y:24}:{opacity:0},animate:{opacity:1,y:0},transition:b?{type:"spring",stiffness:320,damping:30}:{duration:.15},className:"fixed right-4 z-50",style:{bottom:"calc(env(safe-area-inset-bottom, 0px) + 1rem)"},children:(0,t.jsxs)(i.motion.div,{role:g?"button":"dialog","aria-modal":!!g&&void 0,"aria-label":g?"Open cookie consent":void 0,"aria-labelledby":g?void 0:"consent-title","aria-describedby":g?void 0:"consent-desc",tabIndex:g?0:void 0,onClick:g?()=>v(!1):void 0,onKeyDown:g?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),v(!1))}:void 0,layout:b,transition:{layout:b?{duration:.42,ease:f}:{duration:0}},className:(0,u.cn)("flex overflow-hidden border border-[var(--border-card)] card-glass card-rim liquid-glass",g?"h-12 w-12 cursor-pointer items-center justify-center p-0":"w-[min(22rem,calc(100vw-2rem))] items-start gap-2.5 p-5"),style:{borderRadius:g?9999:16},children:[(0,t.jsx)(p.ConsentToken,{size:g?22:18}),!g&&(0,t.jsxs)(i.motion.div,{initial:!!b&&{opacity:0},animate:{opacity:1},transition:{duration:.2*!!b},className:"min-w-0",children:[(0,t.jsx)("h2",{id:"consent-title",className:"text-sm font-semibold text-foreground",children:"Registration via Luma"}),(0,t.jsxs)("p",{id:"consent-desc",className:"mt-1.5 text-xs leading-relaxed text-foreground-secondary",children:["To handle sign-ups we load"," ",(0,t.jsx)("strong",{className:"font-semibold text-foreground",children:"Luma"}),", a US service that may set cookies and receive your IP. You can decline and still register in a new tab."," ",(0,t.jsx)(a.default,{href:"/datenschutz",className:"text-accent-text underline underline-offset-2 hover:text-accent-hover",children:"Details"}),"."]}),(0,t.jsxs)("div",{className:"mt-4 flex items-center gap-3",children:[(0,t.jsx)(l.Button,{variant:"primary",size:"medium",onClick:()=>(0,c.setConsent)(!0),children:"Accept"}),(0,t.jsx)(l.Button,{variant:"secondary",size:"medium",onClick:()=>(0,c.setConsent)(!1),children:"Decline"})]})]})]})})}])},55263,e=>{e.v(t=>Promise.all(["static/chunks/0skh6gp21602q.js","static/chunks/23v2anw4kwcbm.js"].map(t=>e.l(t))).then(()=>t(27182)))}]);
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.