Repository navigation
Expand file tree
/
Copy pathapp.js
More file actions
13 lines (13 loc) · 25.5 KB
/
Copy pathapp.js
File metadata and controls
13 lines (13 loc) · 25.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
(()=>{const{useState:M,useEffect:b,useRef:C,useMemo:V,useCallback:W}=React,T={heroLayout:"center-left",heroHeadline:"plain",studioLayout:"split",introHeadline:0},O={refract:22,ridgeW:110};function X(){try{const e=getComputedStyle(document.documentElement).getPropertyValue("--accent").trim();if(e)return e}catch{}return"#F94520"}const i=window.COPY,H=[{key:"about",en:"Studio",uk:"\u0421\u0442\u0443\u0434\u0456\u044F"},{key:"method",en:"Method",uk:"\u041C\u0435\u0442\u043E\u0434"},{key:"faq",en:"FAQ",uk:"FAQ"},{key:"contact",en:"Contact",uk:"\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u0438"}],c=(e,n)=>e&&e[n]||e&&e.en||"";function f(e){return typeof e!="string"||e.indexOf("[")===-1&&e.indexOf("]")===-1?e:e.split(/(\[|\])/g).map((n,a)=>n==="["||n==="]"?React.createElement("span",{key:a,className:"brk"},n):n===""?null:React.createElement("span",{key:a,className:"brk-inner"},n))}function A(e){const n=String(e||""),a=`"\xBB'\u201D\u2019)]`,s=n[n.length-1],t=n[n.length-2];if(a.indexOf(s)>=0&&(t==="."||t==="\u3002")){const l=n.slice(0,-2);return React.createElement(React.Fragment,null,l,React.createElement("span",{className:"brand-dot","aria-hidden":"true"}),s)}const r=n.replace(/[.\u3002]$/,"");return React.createElement(React.Fragment,null,r,React.createElement("span",{className:"brand-dot","aria-hidden":"true"}))}const F=()=>typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function R({text:e,className:n="mono"}){const[a,s]=w(),t=String(e||"").replace(/^\[/,"").replace(/\]$/,""),[r,l]=M(t),d=C(!1);return b(()=>{if(!s||d.current)return;if(d.current=!0,F()){l(t);return}const o="\u25AA/\\|<>+=*\xB7",m=620,u=performance.now();let p;const v=L=>{const k=Math.min(1,(L-u)/m),h=Math.floor(k*t.length);let N=t.slice(0,h);for(let g=h;g<t.length;g++)N+=t[g]===" "?" ":o[Math.random()*o.length|0];l(N),k<1&&(p=requestAnimationFrame(v))};return p=requestAnimationFrame(v),()=>cancelAnimationFrame(p)},[s,t]),React.createElement("span",{ref:a,className:n},React.createElement("span",{className:"brk"},"["),React.createElement("span",{className:"brk-inner"},r),React.createElement("span",{className:"brk"},"]"))}function P({to:e,suffix:n="",duration:a=1100}){const[s,t]=w(),[r,l]=M(F()?e:0);return b(()=>{if(!t||F()){l(e);return}const d=performance.now();let o;const m=u=>{const p=Math.min(1,(u-d)/a);l(Math.round(e*(1-Math.pow(1-p,3)))),p<1&&(o=requestAnimationFrame(m))};return o=requestAnimationFrame(m),()=>cancelAnimationFrame(o)},[t,e,a]),React.createElement("span",{ref:s},r,n)}function z(e=.28,n=10){const a=C(null);return b(()=>{const s=a.current;if(!s||F()||!matchMedia("(hover: hover)").matches)return;const t=l=>{const d=s.getBoundingClientRect(),o=(l.clientX-(d.left+d.width/2))*e,m=(l.clientY-(d.top+d.height/2))*e,u=p=>Math.max(-n,Math.min(n,p));s.style.transform=`translate(${u(o)}px, ${u(m)}px)`},r=()=>{s.style.transform=""};return s.addEventListener("mousemove",t),s.addEventListener("mouseleave",r),()=>{s.removeEventListener("mousemove",t),s.removeEventListener("mouseleave",r)}},[e,n]),a}const Q=["MEET","IMMERSE","NERVE","DETONATE","LAUNCH","CAMPAIGNS","TRAFFIC","ANALYTICS","SCALE"];function Z(){const e=n=>React.createElement("div",{className:"ticker-row",key:n},Q.map((a,s)=>React.createElement(React.Fragment,{key:s},React.createElement("span",{className:"tick mono"},a),React.createElement("span",{className:"tick-arrow","aria-hidden":"true"},"\u2192"))),React.createElement("span",{className:"tick tick-repeat mono"},"REPEAT"),React.createElement("span",{className:"tick-arrow","aria-hidden":"true"},"\u2192"));return React.createElement("div",{className:"loop-ticker","aria-hidden":"true"},React.createElement("div",{className:"ticker-track"},e(1),e(2)))}function J({locale:e}){const[n,a]=w();return React.createElement("section",{ref:n,className:`numband ${a?"visible":""}`,"aria-label":"Mount Rocks in numbers"},(i.numbers||[]).map((s,t)=>React.createElement("div",{key:t,className:"numband-item",style:{transitionDelay:`${t*.09}s`}},React.createElement("span",{className:"numband-n"},a?React.createElement(P,{to:s.to,suffix:s.suffix}):"0"),React.createElement("span",{className:"numband-label mono"},c(s.label,e)))))}function w(e={}){const n=C(null),[a,s]=M(!1);return b(()=>{const t=n.current;if(!t)return;let r=null,l=!1;const d=()=>{l||(l=!0,s(!0),r&&r.disconnect(),clearInterval(m),removeEventListener("scroll",o),removeEventListener("resize",o))},o=()=>{const u=t.getBoundingClientRect(),p=window.innerHeight||0;u.height>0&&u.top<p*.92&&d()},m=setInterval(o,200);try{r=new IntersectionObserver(([u])=>{u.isIntersecting&&d()},{rootMargin:"-8% 0px",threshold:.05,...e}),r.observe(t)}catch{}return addEventListener("scroll",o,{passive:!0}),addEventListener("resize",o),o(),()=>{r&&r.disconnect(),clearInterval(m),removeEventListener("scroll",o),removeEventListener("resize",o)}},[]),[n,a]}function j(){const[e,n]=M(()=>q(new Date));return b(()=>{const a=setInterval(()=>n(q(new Date)),15e3);return()=>clearInterval(a)},[]),e}function q(e){try{return new Intl.DateTimeFormat("en-GB",{timeZone:"Europe/Madrid",hour:"2-digit",minute:"2-digit",hour12:!1}).format(e)}catch{return e.toTimeString().slice(0,5)}}function ee({accent:e}){const n=C(null);return b(()=>{let a;const s=()=>{const t=window.innerHeight,r=window.innerWidth,l=window.scrollY||0,d=t*1.2,o=l%d/d,m=performance.now()*15e-5,u=r*(.5+.3*Math.sin(m+l*8e-4)),p=t*.2+o*t*.6;n.current&&(n.current.style.transform=`translate3d(${u.toFixed(1)}px, ${p.toFixed(1)}px, 0) translate(-50%, -50%)`),a=requestAnimationFrame(s)};return s(),()=>cancelAnimationFrame(a)},[]),React.createElement("div",{ref:n,className:"cursor-blob is-mobile","aria-hidden":"true",style:{background:`radial-gradient(circle,
${y(e,.45)} 0%,
${y(e,.3)} 25%,
${y(e,.16)} 45%,
${y(e,.07)} 60%,
${y(e,.02)} 72%,
${y(e,0)} 82%)`}})}function ne({enabled:e,accent:n,refract:a,ridge:s}){const t=C(null),r=C(null),l=C(null),[d,o]=M("webgl"),[m,u]=M(!1);if(b(()=>{const v=()=>{const L=typeof matchMedia=="function"?matchMedia("(pointer: coarse)").matches:!1,k=window.innerWidth<=760;u(L||k);try{const h=document.createElement("canvas"),N=!!(h.getContext("webgl")||h.getContext("experimental-webgl"));o(N?"webgl":"fallback")}catch{o("fallback")}};return v(),addEventListener("resize",v),()=>removeEventListener("resize",v)},[]),b(()=>{if(d!=="webgl"||!e||!t.current)return;const v=new window.MountGlass;if(!v.init(t.current)){o("fallback");return}l.current=v,v.setAccent(n);let k;if(m){let h,N=0;const g=()=>{N=window.scrollY||0},S=()=>{typeof DeviceOrientationEvent!="undefined"&&typeof DeviceOrientationEvent.requestPermission=="function"&&DeviceOrientationEvent.requestPermission().catch(()=>{})};addEventListener("touchstart",S,{once:!0,passive:!0});const I=()=>{const E=window.innerHeight,$=window.innerWidth,D=Math.max(1,document.documentElement.scrollHeight-E),x=Math.min(1,Math.max(0,N/D)),Y=$*.1*Math.sin(x*Math.PI*2.5+1.4),U=E*.12*Math.sin(x*Math.PI*2),B=window.__tiltX||0,K=window.__tiltY||0,_=$*.5+Y+B*$*.9,G=E*.5+U+K*E*.8;v.setMouse(_,G),h=requestAnimationFrame(I)};addEventListener("scroll",g,{passive:!0}),g(),I(),k=()=>{cancelAnimationFrame(h),removeEventListener("scroll",g),removeEventListener("touchstart",S)}}else{let h=!1;const N=g=>{const S=document.querySelector(".hero");if(S&&S.querySelector("canvas")){const E=S.getBoundingClientRect(),$=g.clientY>=E.top&&g.clientY<=E.bottom;$!==h&&(h=$,t.current&&(t.current.style.opacity=$?"0":""),v.setEnabled(!$))}else h&&(h=!1,t.current&&(t.current.style.opacity=""),v.setEnabled(!0));h||v.setMouse(g.clientX,g.clientY)};addEventListener("mousemove",N),k=()=>removeEventListener("mousemove",N)}return()=>{k&&k(),v.destroy(),l.current=null}},[d,e,m]),b(()=>{l.current&&l.current.setAccent(n)},[n]),b(()=>{l.current&&(typeof a=="number"||typeof s=="number")&&l.current.setParams({refract:a,ridgeW:s})},[a,s]),b(()=>{if(d!=="fallback"||!e||!r.current)return;let v=innerWidth/2,L=innerHeight/2,k=v,h=L,N=null;const g=()=>{if(k+=(v-k)*.08,h+=(L-h)*.08,r.current&&(r.current.style.transform=`translate(${k}px, ${h}px) translate(-50%, -50%)`),Math.abs(v-k)<.25&&Math.abs(L-h)<.25){N=null;return}N=requestAnimationFrame(g)},S=()=>{N==null&&(N=requestAnimationFrame(g))},I=E=>{v=E.clientX,L=E.clientY,S()};return addEventListener("mousemove",I),S(),()=>{removeEventListener("mousemove",I),N!=null&&cancelAnimationFrame(N)}},[d,e]),!e)return null;const p=`radial-gradient(circle,
${y(n,.38)} 0%,
${y(n,.26)} 22%,
${y(n,.15)} 42%,
${y(n,.07)} 58%,
${y(n,.02)} 70%,
${y(n,0)} 80%)`;return d==="webgl"?React.createElement("canvas",{ref:t,className:"cursor-blob-canvas","aria-hidden":"true"}):d==="mobile"?React.createElement(ee,{accent:n}):React.createElement("div",{ref:r,className:"cursor-blob is-fallback","aria-hidden":"true",style:{background:p}})}function y(e,n){const a=/^#([0-9a-f]{6})$/i.exec(e);if(!a)return e;const s=parseInt(a[1],16);return`rgba(${s>>16&255}, ${s>>8&255}, ${s&255}, ${n})`}function te({locale:e,setLocale:n,onOpenMenu:a}){const s=j();return React.createElement("header",{className:"topnav"},React.createElement("a",{href:"#top",className:"brandmark","aria-label":"Mount Rocks home"},React.createElement("img",{src:window.MOUNT_LOGO_SRC||"assets/Mount_logo.svg",alt:"Mount Rocks"})),React.createElement("div",{className:"clock-pill glass-panel","aria-label":"Valencia time"},React.createElement("span",{className:"dot"}),React.createElement("span",{className:"mono"},c(i.heroLocation,e)," \xB7 ",s)),React.createElement("div",{className:"nav-right"},React.createElement("div",{className:"lang-pill glass-panel",role:"group","aria-label":"Language"},React.createElement("button",{"data-active":e==="en",onClick:()=>n("en")},"EN"),React.createElement("span",{className:"lang-sep"},"/"),React.createElement("button",{"data-active":e==="uk",onClick:()=>n("uk")},"UK")),React.createElement("button",{className:"menu-pill glass-panel",onClick:a},React.createElement("span",{className:"menu-dots"},React.createElement("i",null),React.createElement("i",null)),React.createElement("span",null,c(i.navMenu,e)))))}function se({open:e,onClose:n,locale:a,setLocale:s}){const t=C(null),r=C(null);return b(()=>{const l=t.current;l&&(l.inert=!e)},[e]),b(()=>{if(!e)return;r.current=document.activeElement;const l=o=>{o.key==="Escape"&&n()};addEventListener("keydown",l),document.body.style.overflow="hidden";const d=t.current&&t.current.querySelector(".menu-close");return d&&d.focus(),()=>{removeEventListener("keydown",l),document.body.style.overflow="";const o=r.current;o&&typeof o.focus=="function"&&o.focus()}},[e,n]),React.createElement("div",{ref:t,className:`menu-overlay ${e?"open":""}`,"aria-hidden":!e},React.createElement("div",{className:"menu-bg",onClick:n}),React.createElement("div",{className:"menu-curtain"},React.createElement("div",{className:"menu-topbar"},React.createElement("span",{className:"mono"},f("[MENU]")),React.createElement("button",{className:"menu-close glass-panel",onClick:n},"\u2715 ",React.createElement("span",null,c(i.navClose,a)))),React.createElement("nav",{className:"menu-links"},H.map((l,d)=>React.createElement("a",{key:l.key,href:`#${l.key}`,onClick:n,style:{animationDelay:`${.12+d*.06}s`}},React.createElement("span",{className:"menu-num mono"},"0",d+1),React.createElement("span",{className:"menu-label"},c(l,a)),React.createElement("span",{className:"menu-arrow"},"\u2197")))),React.createElement("div",{className:"menu-foot"},React.createElement("div",{className:"menu-direct mono"},React.createElement("div",null,React.createElement("span",null,f("[EMAIL]")),React.createElement("span",null,"hello@mount.rocks")),React.createElement("div",null,React.createElement("span",null,f("[IG]")),React.createElement("span",null,"@mountrocks.studio")),React.createElement("div",null,React.createElement("span",null,f("[LOC]")),React.createElement("span",null,"Valencia, ES"))),React.createElement("div",{className:"menu-lang"},React.createElement("span",{className:"mono"},f("[LANG]")),React.createElement("div",{className:"lang-pill",role:"group"},React.createElement("button",{"data-active":a==="en",onClick:()=>s("en")},"EN"),React.createElement("span",{className:"lang-sep"},"/"),React.createElement("button",{"data-active":a==="uk",onClick:()=>s("uk")},"UK"))))))}function ae({locale:e,layout:n,headlineStyle:a}){const[s,t]=w(),r=a==="chromatic"?"chromatic-headline":"",l=a==="plain"?"muted":a==="chromatic"?"chromatic-headline":"";return React.createElement("section",{id:"top",ref:s,className:`hero hero-${n} ${t?"shown":""}`},React.createElement("div",{className:"hero-tag mono"},f(c(i.npHeroTag||i.heroTag,e))),React.createElement("h1",{className:"hero-headline"},React.createElement("span",{className:`hero-line line-1 ${r}`},c(i.heroLine1,e)),React.createElement("span",{className:`hero-line line-2 ${l}`},(()=>{const d=c(i.heroLine2,e).replace(/\.$/,""),o=d.lastIndexOf(" "),m=o===-1?"":d.slice(0,o+1),u=o===-1?d:d.slice(o+1);return React.createElement(React.Fragment,null,m,React.createElement("span",{className:"nowrap-dot"},u,React.createElement("span",{className:"dot","aria-hidden":"true"})))})())),i.npHeroSub&&React.createElement("p",{className:"hero-sub"},c(i.npHeroSub,e)),n==="split"&&React.createElement("div",{className:"hero-ambient"},React.createElement("div",{className:"ambient-glass glass-panel"},React.createElement("div",{className:"ambient-line"},React.createElement("span",{className:"mono"},"[STUDIO]"),React.createElement("span",null,"Valencia \xB7 EU")),React.createElement("div",{className:"ambient-line"},React.createElement("span",{className:"mono"},"[SINCE]"),React.createElement("span",null,"2015 \xB7 10 YR")),React.createElement("div",{className:"ambient-line"},React.createElement("span",{className:"mono"},"[WORK]"),React.createElement("span",null,"100+ identities")),React.createElement("div",{className:"ambient-line"},React.createElement("span",{className:"mono"},"[NOW]"),React.createElement("span",null,"3 active")))),React.createElement("div",{className:"hero-scroll mono"},React.createElement("span",null,c(i.heroScroll,e)),React.createElement("i",{className:"scroll-line"})))}function ie({locale:e,headlineIdx:n=0}){const[a,s]=w(),t=window.COPY.introHeadlines||[window.COPY.introHeadline],r=i.npIntroHeadline||t[Math.max(0,Math.min(t.length-1,n))];return React.createElement("section",{ref:a,className:`intro-strip ${s?"shown":""}`},React.createElement(R,{text:c(i.introTag,e)}),React.createElement("div",{className:"intro-content"},React.createElement("h2",{className:"intro-headline"},A(c(r,e))),React.createElement("p",null,A(c(i.npIntroBody||i.introBody,e)))))}function oe({locale:e}){const[n,a]=w();return React.createElement("section",{id:"method",ref:n,className:`mind ${a?"visible":""}`},React.createElement("div",{className:"section-head section-head-headlined"},React.createElement(R,{text:c(i.mindTag,e)}),React.createElement("h2",{className:"featured-headline"},"360 MIND",React.createElement("span",{className:"brand-dot","aria-hidden":"true"}))),React.createElement("p",{className:"mind-intro"},c(i.mindIntro,e)),React.createElement("div",{className:"mind-grid"},i.mindSteps.map((s,t)=>React.createElement("div",{key:s.letter,className:"mind-step",style:{"--i":t}},React.createElement("div",{className:"mind-letter","aria-hidden":"true"},s.letter),React.createElement("div",{className:"mind-word mono"},React.createElement("span",{className:"brk"},"["),s.word,React.createElement("span",{className:"brk"},"]")),React.createElement("p",{className:"mind-desc"},c(s,e)),React.createElement("span",{className:"mind-num mono"},"0",t+1," / 04")))),i.mindOutro&&React.createElement("p",{className:"mind-outro"},c(i.mindOutro,e)),React.createElement("a",{className:"menu-pill glass-panel mind-link",href:window.MR_LINKS&&window.MR_LINKS.method||"Method.html"},React.createElement("span",null,e==="uk"?"\u0414\u0438\u0432\u0438\u0442\u0438\u0441\u044C \u043C\u0435\u0442\u043E\u0434 360 MIND":"See the 360 MIND method"," \u2192")))}function re({locale:e}){const[n,a]=w();return React.createElement("section",{ref:n,className:`prin ${a?"visible":""}`},React.createElement("div",{className:"section-head section-head-headlined"},React.createElement(R,{text:c(i.prinTag,e)}),React.createElement("h2",{className:"prin-headline"},A(c(i.prinHeadline,e)))),React.createElement("div",{className:"prin-grid"},(i.principles||[]).map((s,t)=>React.createElement("div",{key:t,className:"prin-item",style:{transitionDelay:`${t*.08}s`}},React.createElement("span",{className:"mono prin-n"},String(t+1).padStart(2,"0")),React.createElement("p",{className:"prin-story"},c(s.story,e)),React.createElement("p",{className:"prin-rule"},c(s.rule,e))))))}function ce({locale:e}){const[n,a]=w();return React.createElement("section",{id:"faq",ref:n,className:`faq ${a?"visible":""}`},React.createElement("div",{className:"section-head section-head-headlined"},React.createElement(R,{text:c(i.faqTag,e)}),React.createElement("h2",{className:"featured-headline"},A(c(i.faqHeadline,e)))),React.createElement("div",{className:"faq-list"},i.faqs.map((s,t)=>React.createElement("details",{key:t,className:"faq-item",style:{"--i":t}},React.createElement("summary",null,React.createElement("span",{className:"faq-num mono"},"0",t+1),React.createElement("span",{className:"faq-q"},c(s.q,e)),React.createElement("span",{className:"faq-plus","aria-hidden":"true"})),React.createElement("p",{className:"faq-a"},c(s.a,e))))))}function le({locale:e,layout:n="split"}){const[a,s]=w(),t=React.createElement(R,{className:"mono studio-eyebrow",text:c(i.npStudioTag||i.studioTag,e)}),r=React.createElement("p",{className:"studio-quote"},f(c(i.studioQuote,e))),l=React.createElement("div",{className:"studio-facts mono"},React.createElement("div",null,React.createElement("span",{className:"dim"},f("[STUDIO]")),React.createElement("span",null,"Valencia \xB7 EU")),React.createElement("div",null,React.createElement("span",{className:"dim"},f("[EXPERIENCE]")),React.createElement("span",null,React.createElement(P,{to:10,suffix:"+"})," ",e==="uk"?"\u0440\u043E\u043A\u0456\u0432 \u0434\u0440\u0430\u0439\u0432\u0443 \u0442\u0430 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F":"years of drive & making")),React.createElement("div",null,React.createElement("span",{className:"dim"},f("[FOCUS]")),React.createElement("span",null,e==="uk"?"\u0431\u0440\u0435\u043D\u0434 + \u0440\u0456\u0441\u0442":"brand + growth"))),d=React.createElement("p",{className:"studio-body"},c(i.npStudioBody||i.studioBody,e)),o=React.createElement("a",{className:"studio-link glass-panel",href:window.MR_LINKS&&window.MR_LINKS.about||"About.html"},React.createElement("span",null,c(i.studioLink,e)),React.createElement("i",{className:"cta-button-glow"})),m=React.createElement("div",{className:"studio-credentials mono"},React.createElement("span",null,f("[FALLING WALLS LAB \xB7 2016]")),React.createElement("span",null,f("[CREATIVE SPARKS \xB7 2019]")),React.createElement("span",null,f("[INVENTOR OF THE YEAR \xB7 UA \xB7 2015]")));let u;return n==="stacked"?u=React.createElement(React.Fragment,null,React.createElement("div",{className:"studio-banner"},t,r),React.createElement("div",{className:"studio-row3"},React.createElement("div",{className:"studio-col studio-col-lead"},d,o),React.createElement("div",{className:"studio-col"},l),React.createElement("div",{className:"studio-col"},m))):n==="centered"?u=React.createElement("div",{className:"studio-manifest"},t,r,d,l,React.createElement("div",{className:"studio-foot"},o,m)):n==="ledger"?u=React.createElement(React.Fragment,null,React.createElement("aside",{className:"studio-rail"},t,l,m),React.createElement("div",{className:"studio-main"},r,d,o)):u=React.createElement(React.Fragment,null,React.createElement("div",{className:"studio-left"},t,r,l),React.createElement("div",{className:"studio-right"},d,o,m)),React.createElement("section",{id:"about",ref:a,className:`studio studio-${n} ${s?"visible":""}`},u)}function de({locale:e}){const[n,a]=w(),[s,t]=M(null);return React.createElement("section",{id:"services",ref:n,className:`services ${a?"visible":""}`,onMouseLeave:()=>t(null)},React.createElement("div",{className:"section-head section-head-headlined"},React.createElement(R,{text:c(i.npServicesTag||i.servicesTag,e)}),React.createElement("h2",{className:"featured-headline"},A(c(i.npServicesHeadline,e)))),React.createElement("ul",{className:`service-list ${s!==null?"has-hover":""}`},(i.npServices||i.services).map((r,l)=>React.createElement("li",{key:r.n,className:s===l?"is-hover":"",onMouseEnter:()=>t(l)},React.createElement("a",{className:"svc-row",href:r.slug?window.MR_LINKS&&window.MR_LINKS.service?`${window.MR_LINKS.service}&s=${r.slug}`:`Service.html?s=${r.slug}`:"#services"},React.createElement("span",{className:"svc-n mono"},r.n),React.createElement("span",{className:"svc-main"},React.createElement("span",{className:"svc-name"},c(r,e)),r.det&&React.createElement("span",{className:"svc-det"},c(r.det,e))),React.createElement("span",{className:"svc-rule"}),React.createElement("span",{className:"svc-arrow"},"\u2197"))))))}function me({locale:e}){const[n,a]=w(),s=z(),[t,r]=M(!1),l=()=>{const o=c(i.ctaMail,e),m=()=>{r(!0),setTimeout(()=>r(!1),1600)},u=()=>{try{const p=document.createElement("textarea");p.value=o,p.style.position="fixed",p.style.opacity="0",document.body.appendChild(p),p.select();const v=document.execCommand("copy");document.body.removeChild(p),v&&m()}catch{}};navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(o).then(m).catch(u):u()},d=o=>{const m=o.currentTarget.getBoundingClientRect();o.currentTarget.style.setProperty("--mx",`${(o.clientX-m.left)/m.width*100}%`),o.currentTarget.style.setProperty("--my",`${(o.clientY-m.top)/m.height*100}%`)};return React.createElement("section",{id:"contact",ref:n,className:`cta ${a?"visible":""}`},React.createElement(R,{className:"mono cta-tag",text:c(i.npCtaTag||i.ctaTag,e)}),React.createElement("h2",{className:"cta-headline"},React.createElement("span",{className:"chromatic-headline"},c(i.ctaHeadline1,e))," ",React.createElement("span",{className:"chromatic-headline"},c(i.ctaHeadline2,e))),React.createElement("a",{href:`mailto:${c(i.ctaMail,e)}`,className:"cta-button glass-panel magnetic",ref:s,onMouseMove:d},React.createElement("span",null,c(i.ctaButton,e)),React.createElement("i",{className:"cta-button-glow"})),React.createElement("button",{type:"button",className:"cta-mail mono",onClick:l,title:e==="uk"?"\u0421\u043A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0443":"Copy address"},t?f(c(i.ctaCopied,e)):c(i.ctaMail,e)))}function ue({locale:e,setLocale:n}){return React.createElement("footer",{className:"footer"},React.createElement("div",{className:"footer-tag mono"},f(c(i.footerTagline,e))),React.createElement("div",{className:"footer-cols"},React.createElement("div",null,React.createElement("div",{className:"mono dim"},f(`[${c(i.footerColLinks,e).toUpperCase()}]`)),React.createElement("ul",null,H.map(a=>React.createElement("li",{key:a.key},React.createElement("a",{href:`#${a.key}`},c(a,e)))))),React.createElement("div",null,React.createElement("div",{className:"mono dim"},f(`[${c(i.footerColSocial,e).toUpperCase()}]`)),React.createElement("ul",{className:"mono-list"},React.createElement("li",null,React.createElement("span",{className:"mono dim"},f("[EMAIL]")),React.createElement("span",null,"hello@mount.rocks")),React.createElement("li",null,React.createElement("span",{className:"mono dim"},f("[IG]")),React.createElement("span",null,"@mountrocks.studio")),React.createElement("li",null,React.createElement("span",{className:"mono dim"},f("[LOC]")),React.createElement("span",null,"Valencia, ES")))),React.createElement("div",null,React.createElement("div",{className:"mono dim"},f(`[${c(i.footerColLang,e).toUpperCase()}]`)),React.createElement("div",{className:"lang-pill footer-lang",role:"group"},React.createElement("button",{"data-active":e==="en",onClick:()=>n("en")},"EN"),React.createElement("span",{className:"lang-sep"},"/"),React.createElement("button",{"data-active":e==="uk",onClick:()=>n("uk")},"UK")))),React.createElement("div",{className:"footer-signoff mono"},c(i.footerSignoff,e)))}function pe(){b(()=>{let e;const n=()=>{e||(e=requestAnimationFrame(()=>{e=null;const a=document.documentElement;a.style.setProperty("--scroll-y",String(scrollY));const s=a.scrollHeight-window.innerHeight;a.style.setProperty("--scroll-prog",String(s>0?Math.min(1,scrollY/s):0))}))};return addEventListener("scroll",n,{passive:!0}),n(),()=>removeEventListener("scroll",n)},[])}function ve(){try{return localStorage.getItem("mr-locale")==="uk"?"uk":"en"}catch{return"en"}}function fe(){const[e,n]=M(ve),[a,s]=M(!1);pe();const t=W(l=>{const d=l==="uk"?"uk":"en";n(d);try{localStorage.setItem("mr-locale",d)}catch{}},[]);b(()=>{document.documentElement.dataset.locale=e},[e]);const r=V(X,[]);return React.createElement(React.Fragment,null,React.createElement("a",{className:"skip-link",href:"#main"},c(i.skipToContent,e)),React.createElement("div",{className:"scroll-progress","aria-hidden":"true"}),React.createElement(ne,{enabled:!0,accent:r,refract:O.refract,ridge:O.ridgeW}),React.createElement(te,{locale:e,setLocale:t,onOpenMenu:()=>s(!0)}),React.createElement(se,{open:a,onClose:()=>s(!1),locale:e,setLocale:t}),React.createElement("main",{id:"main"},React.createElement(ae,{locale:e,layout:T.heroLayout,headlineStyle:T.heroHeadline}),React.createElement(ie,{locale:e,headlineIdx:T.introHeadline}),React.createElement(oe,{locale:e}),React.createElement(Z,null),React.createElement(re,{locale:e}),React.createElement(le,{locale:e,layout:T.studioLayout}),React.createElement(J,{locale:e}),React.createElement(de,{locale:e}),React.createElement(ce,{locale:e}),React.createElement(me,{locale:e})),React.createElement(ue,{locale:e,setLocale:t}))}const he=ReactDOM.createRoot(document.getElementById("root"));he.render(React.createElement(fe,null));})();