{"version":3,"file":"shared-lib.D1GoqIsY.mjs","names":["React.useRef","React.useMemo","React.useCallback","css","p","fonts","css","className"],"sources":["https:/framerusercontent.com/modules/lsmdAVVELWb2u6RF1tFA/EkjGjlskGUsf5dsl7Elb/HideAfterCaseHero.js","https:/framerusercontent.com/modules/jCW7Bszco4CAiZ4t68wu/NyO0KHLNjs115gDSLlrV/VaneMotion.js","https:/framerusercontent.com/modules/1N7OqU7tInSY4MWMIj5X/7YVNJBzVhZy1wYsat1ke/BELvvo8AU.js","https:/framerusercontent.com/modules/4SvWwpwDAiJyihkCQejD/8vqGsHZVXCZRwOoqVLac/fnFrLJo1F.js","https:/framerusercontent.com/modules/JrM0xl01f0TYdT0z4tUh/gA3DTnsT7WdSCAPTMvH5/siteMetadata.js"],"sourcesContent":["// User request: Create a code OVERRIDE export HideAfterCaseHero for an existing fixed canvas navigation, preserving all styling/structure. On case study page locate element id case-study-hero (assigned to hero section). Using guarded browser effects, scroll and resize or IntersectionObserver, hide nav (opacity 0, pointerEvents none, aria-hidden true) once hero section bottom reaches viewport top; show again when scrolling back above that threshold. Keep header visible on canvas and SSR. Don't hide merely based on scroll direction; remains hidden below hero. Clean up listeners. Preserve incoming style and ref. No component widget needed.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{RenderTarget}from\"framer\";import{useMotionValue,useSpring,useTransform,useReducedMotion,useMotionValueEvent}from\"framer-motion\";export function HideAfterCaseHero(Component){return buildHideAfterHeroOverride(Component,()=>{if(typeof document===\"undefined\")return null;return document.getElementById(\"case-study-hero\");});}export function HideAfterHomeHero(Component){return buildHideAfterHeroOverride(Component,()=>{if(typeof document===\"undefined\")return null;const byId=document.getElementById(\"home-hero\");if(byId)return byId;const main=document.querySelector(\"main\")||document.querySelector('[role=\"main\"]')||document.body?.firstElementChild||null;if(!main)return null;const firstRootChild=main.firstElementChild;if(firstRootChild)return firstRootChild;return main;});}export function HideAfterPageHero(Component){return buildHideAfterHeroOverride(Component,()=>{if(typeof document===\"undefined\")return null;return document.getElementById(\"page-hero\");});}function buildHideAfterHeroOverride(Component,getHeroElement){return /*#__PURE__*/React.forwardRef(function HideAfterCaseHeroOverride(props,ref){const nodeRef=React.useRef(null);const reducedMotion=useReducedMotion();const progressRaw=useMotionValue(0);const progressSpring=useSpring(progressRaw,{stiffness:240,damping:32});const progress=reducedMotion?progressRaw:progressSpring;const opacity=useTransform(progress,v=>1-v);const y=useTransform(progress,v=>-110*v);const hiddenRef=React.useRef(false);const isCanvas=React.useMemo(()=>{const target=RenderTarget.current();return target===RenderTarget.canvas||target===RenderTarget.thumbnail;},[]);const setWrappedNode=React.useCallback(node=>{nodeRef.current=node;if(typeof ref===\"function\"){ref(node);}else if(ref&&\"current\"in ref){ref.current=node;}},[ref]);const setHiddenDomState=React.useCallback(shouldHide=>{const node=nodeRef.current;if(!node)return;node.style.pointerEvents=shouldHide?\"none\":\"\";if(shouldHide){node.setAttribute(\"aria-hidden\",\"true\");node.inert=true;}else{if(props[\"aria-hidden\"]===undefined){node.removeAttribute(\"aria-hidden\");}else{node.setAttribute(\"aria-hidden\",String(Boolean(props[\"aria-hidden\"])));}node.inert=false;}},[props]);const evaluateProgress=React.useCallback(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const hero=getHeroElement();if(!hero){progressRaw.set(0);return;}const bottom=hero.getBoundingClientRect().bottom;const next=Math.min(1,Math.max(0,-bottom/100));progressRaw.set(next);},[getHeroElement,progressRaw]);React.useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;if(isCanvas){progressRaw.set(0);hiddenRef.current=false;setHiddenDomState(false);return;}let raf=0;const onChange=()=>{if(raf)cancelAnimationFrame(raf);raf=requestAnimationFrame(evaluateProgress);};evaluateProgress();window.addEventListener(\"scroll\",onChange,{passive:true});window.addEventListener(\"resize\",onChange);return()=>{if(raf)cancelAnimationFrame(raf);window.removeEventListener(\"scroll\",onChange);window.removeEventListener(\"resize\",onChange);};},[evaluateProgress,isCanvas,progressRaw,setHiddenDomState]);useMotionValueEvent(progress,\"change\",value=>{const shouldHide=value>=.98;if(shouldHide===hiddenRef.current)return;hiddenRef.current=shouldHide;setHiddenDomState(shouldHide);});React.useEffect(()=>{if(isCanvas||typeof window===\"undefined\"){setHiddenDomState(false);return;}setHiddenDomState(hiddenRef.current);},[isCanvas,props[\"aria-hidden\"],setHiddenDomState]);const baseTransform=typeof props.style?.transform===\"string\"?props.style.transform:\"\";const motionStyle={...props.style,opacity,y};return /*#__PURE__*/_jsx(Component,{ref:setWrappedNode,...props,style:motionStyle,transformTemplate:baseTransform?(_latest,generated)=>`${generated} ${baseTransform}`.trim():props.transformTemplate});});}\nexport const __FramerMetadata__ = {\"exports\":{\"HideAfterHomeHero\":{\"type\":\"reactHoc\",\"name\":\"HideAfterHomeHero\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HideAfterPageHero\":{\"type\":\"reactHoc\",\"name\":\"HideAfterPageHero\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HideAfterCaseHero\":{\"type\":\"reactHoc\",\"name\":\"HideAfterCaseHero\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HideAfterCaseHero.map","// Vane Motion — global motion layer for the Vane template.\n// Drop ONE instance on every page (any position). It is invisible on the published site.\n// It animates layers by their layer names, so buyers can re-use the effects by naming layers:\n//   Meta           — caption stack inside a CMS card: the card gets image zoom + \"View\" cursor\n//   Next Label     — text inside the next-case link: the link gets image zoom + \"Next\" cursor\n//   Category       — text inside a Project card (used by the Project Filter)\n//   Count          — text replaced with the number of Project cards on the page (e.g. 06)\n//   Letters        — big display text: letters rise one by one\n//   Hello          — text drawn in with a left→right wipe\n//   Underline Word — word gets a vermilion underline that draws in\n//   Pill           — small image that springs in (0.6 → 1)\n//   Counter        — number that counts up (e.g. 212)\n//   Service Row    — row whose big word goes 35% → 100% on hover\n//   Clients        — row of client wordmarks (62% → 100% on hover)\n//   Frames Row     — tilted prints that straighten on hover\n//   Play Disc      — disc follows the cursor inside its link / \"Reel\" frame\n//   CTA            — section that is uncovered by 20 vertical slats\n//   Case Hero      — image that settles from 110% on load\n//   Nav Pill       — glass nav pill (blur + shrinks on scroll)\n// Everything else: text rises + un-blurs, images reveal with a clip-path, pill buttons get a\n// magnetic hover and rotating ↗ arrow, text links get a growing underline, internal links use\n// a slat page transition. prefers-reduced-motion is respected.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const EASE=\"cubic-bezier(0.22, 1, 0.36, 1)\";const T='[data-framer-component-type=\"RichTextContainer\"]';const I=\"[data-framer-background-image-wrapper]\";const N=n=>`[data-framer-name=\"${n}\"]`;// link frames lose their layer name when published, so cards are also found by their contents\nconst PROJECT=`${N(\"Project\")},a:has(${N(\"Meta\")})`;const NEXT=`${N(\"Next Project\")},a:has(${N(\"Next Label\")})`;const REEL=`${N(\"Reel\")},a:has(${N(\"Play Disc\")})`;const SPECIAL_TEXT=[\"Letters\",\"Hello\",\"Count\",\"Counter\"].map(n=>`:not(${N(n)})`).join(\"\");const SPECIAL_IMG=[\"Pill\",\"Case Hero\"].map(n=>`${N(n)} ${I}, ${N(n)}${I}`).join(\", \");function css(p){const noMotion=\"@media (prefers-reduced-motion: reduce)\";return`\nhtml.vm-js ${T}${SPECIAL_TEXT}:not(.vm-in){${p.reveal?\"opacity:0!important;translate:0 40px;filter:blur(8px);\":\"\"}}\nhtml.vm-js ${T}.vm-in{transition:opacity 700ms ${EASE} var(--vm-d,0ms),translate 700ms ${EASE} var(--vm-d,0ms),filter 700ms ${EASE} var(--vm-d,0ms)}\nhtml.vm-js ${I}:not(.vm-in):not(:is(${SPECIAL_IMG})){${p.images?\"clip-path:inset(12%);\":\"\"}}\nhtml.vm-js ${I}:not(.vm-in):not(:is(${SPECIAL_IMG})) img{${p.images?\"scale:1.06;\":\"\"}}\nhtml.vm-js ${I}.vm-in{transition:clip-path 900ms ${EASE} var(--vm-d,0ms)}\nhtml.vm-js ${I}.vm-in img{transition:scale 900ms ${EASE} var(--vm-d,0ms)}\n:is(${PROJECT},${NEXT}) ${I} img{transition:scale 1100ms ${EASE}!important}\n:is(${PROJECT},${NEXT}):hover ${I} img{scale:1.05}\n:is(${PROJECT}) ${N(\"Title\")}{transition:translate 500ms ${EASE}}\n:is(${PROJECT}):hover ${N(\"Title\")}.vm-done{translate:10px 0}\n.vm-arrow{display:inline-block;transition:rotate 350ms ${EASE}}\na:hover .vm-arrow{rotate:45deg}\n.vm-btn{transition:filter 300ms ${EASE},translate 450ms ${EASE}!important}\n.vm-btn:hover{filter:brightness(.86)}\n.vm-ul .framer-text{background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:0 100%;background-size:0% 1px;transition:background-size 250ms ${EASE}}\n.vm-ul:hover .framer-text{background-size:100% 1px}\n${N(\"Nav Pill\")}{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);transition:padding 300ms ${EASE}}\nhtml.vm-scrolled ${N(\"Nav Pill\")}{padding-left:20px!important;padding-right:20px!important}\n${N(\"Letters\")} .framer-text{clip-path:inset(-60% -10% 0 -10%)}\n.vm-l{display:inline-block;will-change:transform}\nhtml.vm-js ${N(\"Letters\")}:not(.vm-in) .vm-l{translate:0 105%}\n${N(\"Letters\")}.vm-in .vm-l{transition:translate 900ms ${EASE} calc(var(--i) * 45ms)}\nhtml.vm-js ${N(\"Hello\")}:not(.vm-in){clip-path:inset(-20% 100% -20% -10%)}\n${N(\"Hello\")}.vm-in{transition:clip-path 800ms ${EASE} 150ms;clip-path:inset(-20% -10% -20% -10%)}\n${N(\"Underline Word\")} .framer-text{background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:0 94%;background-size:0% .06em}\n${N(\"Underline Word\")}.vm-in .framer-text{animation:vm-draw 1600ms ${EASE} 500ms both}\n@keyframes vm-draw{0%{background-size:0% .06em;background-position:0 94%}45%{background-size:100% .06em;background-position:0 94%}55%{background-size:100% .06em;background-position:100% 94%}100%{background-size:100% .06em;background-position:100% 94%}}\nhtml.vm-js ${N(\"Pill\")}:not(.vm-in){scale:.6;opacity:0}\n${N(\"Pill\")}.vm-in{transition:scale 800ms cubic-bezier(.34,1.56,.64,1) var(--vm-d,0ms),opacity 400ms ${EASE} var(--vm-d,0ms)}\n${N(\"Service Row\")} ${T}:first-child .framer-text{opacity:.35;transition:opacity 400ms ${EASE}}\n${N(\"Service Row\")}:hover ${T}:first-child .framer-text{opacity:1}\n${N(\"Clients\")} ${T}:not(:first-child) .framer-text{opacity:.62;transition:opacity 300ms ${EASE}}\n${N(\"Clients\")} ${T}:not(:first-child):hover .framer-text{opacity:1}\n${N(\"Frames Row\")}>*{transition:transform 400ms ${EASE}}\n${N(\"Frames Row\")}>*:hover{transform:rotate(0deg)!important}\n${N(\"Play Disc\")}{transition:scale 400ms ${EASE}}\n:is(${REEL}):hover ${N(\"Play Disc\")}{scale:1.08}\n${N(\"CTA\")}{background-image:repeating-linear-gradient(90deg,transparent 0 71px,rgba(13,13,11,.12) 71px 72px)}\n.vm-slat{position:absolute;top:0;bottom:0;z-index:50;pointer-events:none;background:${p.slatColor};transform-origin:50% 0;transition:transform 700ms ${EASE}}\n.vm-slats-in .vm-slat{transform:scaleY(0)}\nhtml.vm-js ${N(\"Case Hero\")} ${I} img,html.vm-js ${N(\"Case Hero\")}${I} img{scale:1.1}\n${N(\"Case Hero\")}.vm-in ${I} img,${N(\"Case Hero\")}.vm-in${I} img{scale:1;transition:scale 1600ms ${EASE}}\n.vm-cursor{position:fixed;left:0;top:0;z-index:9998;pointer-events:none;width:92px;height:92px;margin:-46px 0 0 -46px}\n.vm-cursor b{width:100%;height:100%;border-radius:50%;background:${p.cursorColor};color:${p.cursorText};display:flex;align-items:center;justify-content:center;font:500 13px/1 \"Geist\",\"Inter\",sans-serif;letter-spacing:.02em;scale:0;transition:scale 350ms ${EASE}}\n.vm-cursor.on b{scale:1}\n.vm-cover{position:fixed;inset:0;z-index:9999;pointer-events:none;display:flex}\n.vm-cover i{flex:1;height:100%;background:${p.slatColor};transform:scaleY(0);transform-origin:50% 0;transition:transform 450ms ${EASE}}\n.vm-cover.up i{transform-origin:50% 100%}\n.vm-cover.on i{transform:scaleY(1.02)}\nhtml.vm-covered body:after{content:\"\";position:fixed;inset:0;z-index:9999;background:${p.slatColor}}\n${noMotion}{html.vm-js ${T}:not(.vm-in),html.vm-js ${I}:not(.vm-in),html.vm-js ${N(\"Pill\")}:not(.vm-in){translate:none!important;filter:none!important;clip-path:none!important;scale:1!important}\n.vm-cover,.vm-slat,.vm-cursor{display:none!important} html.vm-js ${N(\"Letters\")}:not(.vm-in) .vm-l{translate:none}}\n`;}// runs while the HTML is parsed (before hydration) so hidden states apply on first paint\nconst BOOT=`(function(){try{var d=document.documentElement;d.classList.add('vm-js');if(sessionStorage.getItem('vm-nav')){d.classList.add('vm-covered')}setTimeout(function(){if(!window.__vm){d.classList.remove('vm-js');d.classList.remove('vm-covered')}},4000);setTimeout(function(){d.classList.remove('vm-covered')},1600)}catch(e){}})()`;function onCanvas(){const t=RenderTarget.current();return t===RenderTarget.canvas||t===RenderTarget.thumbnail;}export default function VaneMotion(props){const p={...defaults,...props};const canvas=onCanvas();React.useEffect(()=>{if(canvas||typeof window===\"undefined\")return;const w=window;w.__vm=true;const root=document.documentElement;root.classList.add(\"vm-js\");const reduced=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const fine=window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;const cleanups=[];const seen=new WeakSet;// ---------- helpers ----------\nconst done=(el,ms)=>setTimeout(()=>{el.style.setProperty(\"--vm-d\",\"0ms\");el.classList.add(\"vm-done\");},ms);const splitLetters=el=>{el.querySelectorAll(\".framer-text\").forEach(t=>{if(t.dataset.vmSplit)return;t.dataset.vmSplit=\"1\";const walker=document.createTreeWalker(t,NodeFilter.SHOW_TEXT);const nodes=[];while(walker.nextNode())nodes.push(walker.currentNode);let i=0;nodes.forEach(n=>{const frag=document.createDocumentFragment();for(const ch of Array.from(n.nodeValue||\"\")){if(ch===\" \"){frag.appendChild(document.createTextNode(\" \"));continue;}const s=document.createElement(\"span\");s.className=\"vm-l\";s.style.setProperty(\"--i\",String(i++));s.textContent=ch;frag.appendChild(s);}n.nodeValue=\"\";n.parentNode?.insertBefore(frag,n);});});};const countUp=el=>{const t=el.querySelector(\".framer-text\");if(!t)return;const raw=(t.textContent||\"\").trim();const m=raw.match(/^(\\D*)(\\d+)(\\D*)$/);if(!m)return;const target=parseInt(m[2],10);const pad=m[2].length;if(reduced)return;const t0=performance.now();const tick=now=>{const k=Math.min(1,(now-t0)/1200);const e=1-Math.pow(1-k,3);t.textContent=m[1]+String(Math.round(target*e)).padStart(pad,\"0\")+m[3];if(k<1)requestAnimationFrame(tick);};requestAnimationFrame(tick);};const slatsIn=el=>{if(el.querySelector(\":scope > .vm-slat\")||reduced)return;if(getComputedStyle(el).position===\"static\")el.style.position=\"relative\";const n=20;for(let k=0;k<n;k++){const s=document.createElement(\"div\");s.className=\"vm-slat\";s.style.left=`${k*100/n}%`;s.style.width=`${100/n+.2}%`;s.style.transitionDelay=`${k*60}ms`;el.appendChild(s);}};// ---------- reveal observer ----------\nconst io=new IntersectionObserver(entries=>{let k=0;entries.filter(e=>e.isIntersecting).sort((a,b)=>a.boundingClientRect.top-b.boundingClientRect.top||a.boundingClientRect.left-b.boundingClientRect.left).forEach(e=>{const el=e.target;io.unobserve(el);const delay=Math.min(k++,8)*90;el.style.setProperty(\"--vm-d\",`${delay}ms`);requestAnimationFrame(()=>el.classList.add(\"vm-in\"));done(el,delay+950);if(el.matches(N(\"Counter\")))setTimeout(()=>countUp(el),delay);if(el.matches(N(\"CTA\")))setTimeout(()=>el.classList.add(\"vm-slats-in\"),50);});},{threshold:.15,rootMargin:\"0px 0px -5% 0px\"});const scan=()=>{const list=document.querySelectorAll([T,I,N(\"Pill\"),N(\"Case Hero\"),N(\"CTA\")].join(\",\"));list.forEach(el=>{if(seen.has(el))return;seen.add(el);if(el.closest(\".vm-cursor\"))return;if(el.matches(N(\"Letters\")))splitLetters(el);if(el.matches(N(\"CTA\")))slatsIn(el);io.observe(el);});// Count: number of Project cards on this page\nconst cards=document.querySelectorAll(PROJECT).length;if(cards)document.querySelectorAll(`${N(\"Count\")} .framer-text`).forEach(t=>{t.textContent=String(cards).padStart(2,\"0\");});// buttons + text links\ndocument.querySelectorAll(\"a\").forEach(a=>{if(a.__vm)return;a.__vm=true;// rotate ↗ arrows\nconst walker=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);const hits=[];while(walker.nextNode()){const n=walker.currentNode;if(/[↗→]/.test(n.nodeValue||\"\")&&!n.parentElement?.classList.contains(\"vm-arrow\"))hits.push(n);}hits.forEach(n=>{const v=n.nodeValue||\"\";const idx=Math.max(v.lastIndexOf(\"↗\"),v.lastIndexOf(\"→\"));const span=document.createElement(\"span\");span.className=\"vm-arrow\";span.textContent=v[idx];const after=document.createTextNode(v.slice(idx+1));n.nodeValue=v.slice(0,idx);n.parentNode?.insertBefore(span,n.nextSibling);span.parentNode?.insertBefore(after,span.nextSibling);});if(a.matches(PROJECT)||a.matches(NEXT)||a.closest(PROJECT))return;const cs=getComputedStyle(a);const bg=cs.backgroundColor;const solid=bg&&bg!==\"transparent\"&&!/rgba\\(.*,\\s*0\\)$/.test(bg);if(solid&&parseFloat(cs.borderTopLeftRadius)>=16){a.classList.add(\"vm-btn\");if(fine&&!reduced){const move=e=>{const r=a.getBoundingClientRect();const dx=((e.clientX-r.left)/r.width-.5)*16;const dy=((e.clientY-r.top)/r.height-.5)*16;a.style.translate=`${dx.toFixed(1)}px ${dy.toFixed(1)}px`;};const leave=()=>a.style.translate=\"0px 0px\";a.addEventListener(\"pointermove\",move);a.addEventListener(\"pointerleave\",leave);cleanups.push(()=>{a.removeEventListener(\"pointermove\",move);a.removeEventListener(\"pointerleave\",leave);});}}else if(a.querySelector(T)&&!a.querySelector(I)&&!(parseFloat(cs.borderBottomWidth)>0)){a.classList.add(\"vm-ul\");}});};scan();const t1=setTimeout(scan,400);const t2=setTimeout(scan,1500);let mo=new MutationObserver(()=>{clearTimeout(mo._t);mo._t=setTimeout(scan,120);});mo.observe(document.body,{childList:true,subtree:true});// ---------- scroll: nav pill + frames parallax ----------\nconst onScroll=()=>{root.classList.toggle(\"vm-scrolled\",window.scrollY>120);if(reduced)return;document.querySelectorAll(N(\"Frames Row\")).forEach(row=>{const r=row.getBoundingClientRect();const k=(r.top+r.height/2-window.innerHeight/2)/window.innerHeight;row.style.translate=`${(k*80).toFixed(1)}px 0`;});};onScroll();window.addEventListener(\"scroll\",onScroll,{passive:true});cleanups.push(()=>window.removeEventListener(\"scroll\",onScroll));// ---------- cursor + reel disc ----------\nlet raf=0;if(fine&&!reduced&&p.cursor){const c=document.createElement(\"div\");c.className=\"vm-cursor\";const dot=document.createElement(\"b\");dot.textContent=p.cursorLabel;c.appendChild(dot);document.body.appendChild(c);let x=-200,y=-200,vx=0,vy=0,tx=-200,ty=-200;const disc={el:null,x:0,y:0,tx:0,ty:0};// fixed elements can be offset when an ancestor is transformed — measure and correct\nlet ox=0,oy=0,moves=0;const calibrate=()=>{const r=c.getBoundingClientRect();ox+=r.left+r.width/2-x;oy+=r.top+r.height/2-y;};const move=e=>{tx=e.clientX;ty=e.clientY;if(moves++%40===1)calibrate();const tgt=e.target;const card=tgt?.closest?.(`${PROJECT},${NEXT}`);c.classList.toggle(\"on\",!!card);if(card)dot.textContent=card.matches(NEXT)?\"Next →\":p.cursorLabel;const reel=tgt?.closest?.(REEL);const d=reel?.querySelector(N(\"Play Disc\"));if(d){if(disc.el!==d)disc.el=d;d.style.translate=\"0px 0px\";const r=d.getBoundingClientRect();d.style.translate=`${disc.x}px ${disc.y}px`;disc.tx=e.clientX-(r.left+r.width/2);disc.ty=e.clientY-(r.top+r.height/2);}else{disc.tx=0;disc.ty=0;}};const loop=()=>{// spring 300 / 30\nconst dt=1/60;vx+=((tx-x)*300-vx*30)*dt;vy+=((ty-y)*300-vy*30)*dt;x+=vx*dt;y+=vy*dt;c.style.transform=`translate3d(${x-ox}px, ${y-oy}px, 0)`;if(disc.el){disc.x+=(disc.tx-disc.x)*.15;disc.y+=(disc.ty-disc.y)*.15;disc.el.style.translate=`${disc.x.toFixed(1)}px ${disc.y.toFixed(1)}px`;}raf=requestAnimationFrame(loop);};raf=requestAnimationFrame(loop);window.addEventListener(\"pointermove\",move,{passive:true});cleanups.push(()=>{window.removeEventListener(\"pointermove\",move);c.remove();});}// ---------- page transition ----------\nlet cover=null;const makeCover=()=>{if(cover)return cover;cover=document.querySelector(\".vm-cover\");if(!cover){cover=document.createElement(\"div\");cover.className=\"vm-cover\";for(let k=0;k<20;k++){const s=document.createElement(\"i\");s.style.transitionDelay=`${k*30}ms`;cover.appendChild(s);}document.body.appendChild(cover);}return cover;};const uncover=()=>{const cv=makeCover();cv.classList.add(\"on\");root.classList.remove(\"vm-covered\");requestAnimationFrame(()=>requestAnimationFrame(()=>{cv.classList.add(\"up\");cv.classList.remove(\"on\");}));try{sessionStorage.removeItem(\"vm-nav\");}catch(e){}};let covering=false;try{if(sessionStorage.getItem(\"vm-nav\")||w.__vmCovering)uncover();}catch(e){}w.__vmCovering=false;root.classList.remove(\"vm-covered\");const onClick=e=>{if(!p.transitions||reduced)return;if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;const a=e.target?.closest?.(\"a\");if(!a||!a.href)return;if(w.__vmPass===a){w.__vmPass=null;return;}if(a.target===\"_blank\"||a.hasAttribute(\"download\"))return;const url=new URL(a.href,location.href);if(url.origin!==location.origin)return;if(url.pathname===location.pathname&&url.hash)return;if(url.pathname===location.pathname&&url.search===location.search)return;e.preventDefault();e.stopImmediatePropagation();if(covering)return;covering=true;const cv=makeCover();cv.classList.remove(\"up\");requestAnimationFrame(()=>cv.classList.add(\"on\"));try{sessionStorage.setItem(\"vm-nav\",\"1\");}catch(err){}setTimeout(()=>{w.__vmCovering=true;w.__vmPass=a;a.click();// safety: never leave the screen covered\nsetTimeout(()=>{covering=false;if(cv.classList.contains(\"on\"))uncover();},1400);},1050);};document.addEventListener(\"click\",onClick,true);cleanups.push(()=>document.removeEventListener(\"click\",onClick,true));return()=>{clearTimeout(t1);clearTimeout(t2);mo?.disconnect();mo=null;io.disconnect();cancelAnimationFrame(raf);cleanups.forEach(f=>f());};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[canvas]);if(canvas){return /*#__PURE__*/_jsx(\"div\",{style:{...props.style,display:\"flex\",alignItems:\"center\",gap:8,padding:\"6px 12px\",borderRadius:40,background:\"rgba(255,61,23,0.12)\",border:\"1px dashed rgba(255,61,23,0.6)\",color:\"#FF3D17\",font:\"500 11px/1.2 ui-monospace, monospace\",letterSpacing:\"0.04em\",textTransform:\"uppercase\",whiteSpace:\"nowrap\",width:\"100%\",height:\"100%\",boxSizing:\"border-box\"},children:\"✦ Vane Motion — plays in preview\"});}return /*#__PURE__*/_jsxs(\"div\",{style:{...props.style,width:1,height:1,pointerEvents:\"none\",opacity:0},\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:css(p)}}),/*#__PURE__*/_jsx(\"script\",{dangerouslySetInnerHTML:{__html:BOOT}})]});}const defaults={reveal:true,images:true,cursor:true,transitions:true,cursorColor:\"#FF3D17\",cursorText:\"#0D0D0B\",cursorLabel:\"View ↗\",slatColor:\"#0D0D0B\"};VaneMotion.defaultProps=defaults;VaneMotion.displayName=\"Vane Motion\";addPropertyControls(VaneMotion,{reveal:{type:ControlType.Boolean,title:\"Text reveal\"},images:{type:ControlType.Boolean,title:\"Image reveal\"},cursor:{type:ControlType.Boolean,title:\"View cursor\"},cursorLabel:{type:ControlType.String,title:\"Cursor text\",hidden:p=>!p.cursor},cursorColor:{type:ControlType.Color,title:\"Cursor\",hidden:p=>!p.cursor},cursorText:{type:ControlType.Color,title:\"Cursor ink\",hidden:p=>!p.cursor},transitions:{type:ControlType.Boolean,title:\"Page slats\"},slatColor:{type:ControlType.Color,title:\"Slat color\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VaneMotion\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VaneMotion.map","// Generated by Framer (f8e97a5)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;ABC Areal Regular\",\"CUSTOMV2;ABC Areal Bold\",\"CUSTOMV2;ABC Areal Bold Italic\",\"CUSTOMV2;ABC Areal Regular Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"ABC Areal Regular\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"ABC Areal\",url:\"https://framerusercontent.com/assets/mFdeW0aj6bnfhg866hEdBsPI.woff2\",weight:\"400\"},{cssFamilyName:\"ABC Areal Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"ABC Areal\",url:\"https://framerusercontent.com/assets/i45N3uqitsRxZtrn3RfoMn9JQQ.woff2\",weight:\"700\"},{cssFamilyName:\"ABC Areal Bold Italic\",openType:true,source:\"custom\",style:\"italic\",uiFamilyName:\"ABC Areal\",url:\"https://framerusercontent.com/assets/2CdZ6qq5EZziBGGgc3PZzSaDA.woff2\",weight:\"700\"},{cssFamilyName:\"ABC Areal Regular Italic\",openType:true,source:\"custom\",style:\"italic\",uiFamilyName:\"ABC Areal\",url:\"https://framerusercontent.com/assets/Yii2RmDFawpR1lUWlWIXpu9LG8.woff2\",weight:\"400\"}]}];export const css=['.framer-J3PLr .framer-styles-preset-1biguqp:not(.rich-text-wrapper), .framer-J3PLr .framer-styles-preset-1biguqp.rich-text-wrapper p { --framer-font-family: \"ABC Areal Regular\", \"ABC Areal Regular Placeholder\", sans-serif; --framer-font-family-bold: \"ABC Areal Bold\", \"ABC Areal Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"ABC Areal Bold Italic\", \"ABC Areal Bold Italic Placeholder\", sans-serif; --framer-font-family-italic: \"ABC Areal Regular Italic\", \"ABC Areal Regular Italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 14px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.01em; --framer-line-height: 1.3em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-c5c16eec-8426-4267-ac4a-e8f52c31f664, #efece4); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-J3PLr\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (f8e97a5)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;ABC Areal Mono Regular\",\"CUSTOMV2;ABC Areal Mono Bold\",\"CUSTOMV2;ABC Areal Mono Bold Italic\",\"CUSTOMV2;ABC Areal Mono Regular Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"ABC Areal Mono Regular\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"ABC Areal Mono\",url:\"https://framerusercontent.com/assets/XtOXKdfGslAXtb4rVWLwYKsqv7s.woff2\",weight:\"400\"},{cssFamilyName:\"ABC Areal Mono Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"ABC Areal Mono\",url:\"https://framerusercontent.com/assets/MMqqxqtvT8eTYbC6E2ybKUV8AnU.woff2\",weight:\"700\"},{cssFamilyName:\"ABC Areal Mono Bold Italic\",openType:true,source:\"custom\",style:\"italic\",uiFamilyName:\"ABC Areal Mono\",url:\"https://framerusercontent.com/assets/mlQEE1lNmOVvo367KPqg6pw0KDQ.woff2\",weight:\"700\"},{cssFamilyName:\"ABC Areal Mono Regular Italic\",openType:true,source:\"custom\",style:\"italic\",uiFamilyName:\"ABC Areal Mono\",url:\"https://framerusercontent.com/assets/9fkzXVkrwwSfDSbNbT5XMYOruA.woff2\",weight:\"400\"}]}];export const css=['.framer-I2Xzo .framer-styles-preset-1q97ap0:not(.rich-text-wrapper), .framer-I2Xzo .framer-styles-preset-1q97ap0.rich-text-wrapper p { --framer-font-family: \"ABC Areal Mono Regular\", \"ABC Areal Mono Regular Placeholder\", monospace; --framer-font-family-bold: \"ABC Areal Mono Bold\", \"ABC Areal Mono Bold Placeholder\", monospace; --framer-font-family-bold-italic: \"ABC Areal Mono Bold Italic\", \"ABC Areal Mono Bold Italic Placeholder\", monospace; --framer-font-family-italic: \"ABC Areal Mono Regular Italic\", \"ABC Areal Mono Regular Italic Placeholder\", monospace; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 12px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0.04em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #ffffff; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: uppercase; }'];export const className=\"framer-I2Xzo\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (6964d48)\nexport default function metadata(params,activeLocale){return{description:\"Louver is a kinetic portfolio for photographers, directors and visual designers. The hero is a Trivision wall: 20 rotating vanes that turn from your name card into your projects. No 3D files or extra assets — just upload your photos.\",favicon:\"https://framerusercontent.com/assets/S3oUypJ6Kz8dXvNVge88ZX7PG8.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/MUlCa1EeokexCvz3Gn0D3uOBexA.jpg\",title:\"Louver\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}