{"version":3,"file":"WallGrid_1.C9rgP8rJ.mjs","names":["React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","sharedStyle.className","sharedStyle1.className","className","Image1","RichText","sharedStyle.css","sharedStyle1.css","sharedStyle.fonts","sharedStyle1.fonts","React.useId","React.useRef","React.useState","React.useCallback","React.startTransition","_Fragment","c","React.useLayoutEffect","React.useEffect"],"sources":["https:/framerusercontent.com/modules/Bpyl9mzacMPCqMmVHI4B/i62wW4ASCIoHsbyj5PfZ/YNmiecrou.js","https:/framerusercontent.com/modules/pjGvPyjkzDUgJ6eo5fhG/yqsziUMv5bosTBursDhC/WallGrid_1.js"],"sourcesContent":["// Generated by Framer (f8e97a5)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getLoadingLazyAtYPosition,Image as Image1,Link,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Video}from\"https://framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/I6H5ZhUPA8PwvfVPIGXQ/Video.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/DMzrQ7sfmXJzKKE51zNR/UQW3LNwJvU7bOytMcDMm/eb8RK70Xm.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/PgVPzLeSYnh5FwJ2vdCF/02CAczWI7onCOhCerrpR/F0aKitU3A.js\";const VideoFonts=getFonts(Video);const enabledGestures={RKS9iDv4G:{hover:true}};const serializationHash=\"framer-mDZ2P\";const variantClassNames={RKS9iDv4G:\"framer-v-f3u3pn\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const tEsbVYP0f=undefined;const POEdi0JX8=undefined;const X5YUdHjHF=undefined;const YtAAp0a7e=undefined;const nylGwBcNx=undefined;const AD4f2wCnu=undefined;const transition1={delay:0,duration:.45,ease:[.22,1,.36,1],type:\"tween\"};const isSet=value=>{if(Array.isArray(value))return value.length>0;return value!==undefined&&value!==null&&value!==\"\";};const negate=value=>{return!value;};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({category,height,id,image,link,thumbnail,title,video,width,...props})=>{return{...props,AD4f2wCnu:category??props.AD4f2wCnu??\"Category\",nylGwBcNx:title??props.nylGwBcNx??\"Project title\",POEdi0JX8:thumbnail??props.POEdi0JX8,tEsbVYP0f:link??props.tEsbVYP0f,X5YUdHjHF:image??props.X5YUdHjHF??{pixelHeight:2026,pixelWidth:1600,src:\"https://framerusercontent.com/images/YpdjetdXt0ZwMqQXtBfdFCY7mKE.jpg?width=1600&height=2026\",srcSet:\"https://framerusercontent.com/images/YpdjetdXt0ZwMqQXtBfdFCY7mKE.jpg?scale-down-to=1024&width=1600&height=2026 808w,https://framerusercontent.com/images/YpdjetdXt0ZwMqQXtBfdFCY7mKE.jpg?width=1600&height=2026 1600w\"},YtAAp0a7e:video??props.YtAAp0a7e};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,X5YUdHjHF,POEdi0JX8,YtAAp0a7e,nylGwBcNx,AD4f2wCnu,tEsbVYP0f,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"RKS9iDv4G\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const visible=negate(isSet(POEdi0JX8));const visible1=isSet(POEdi0JX8);const visible2=isSet(YtAAp0a7e);const visible3=isSet(AD4f2wCnu);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:tEsbVYP0f,motionChild:true,nodeId:\"RKS9iDv4G\",scopeId:\"YNmiecrou\",children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-f3u3pn\",className,classNames)} framer-kzcch1`,\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"RKS9iDv4G\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-4c60ea3a-7e03-4b0a-9771-791a46627ea9)\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backgroundColor:\"var(--token-2457c45e-8dcc-4d69-826d-d3bf5c94612f)\",borderBottomLeftRadius:14,borderBottomRightRadius:14,borderTopLeftRadius:14,borderTopRightRadius:14,...style},variants:{\"RKS9iDv4G-hover\":{\"--border-color\":\"var(--token-6dfdcbfa-528f-4c89-a284-f01b14e567e7)\"}},...addPropertyOverrides({\"RKS9iDv4G-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[visible!==false&&/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),pixelHeight:2026,pixelWidth:1600,sizes:componentViewport?.width||\"100vw\",...toResponsiveImage(X5YUdHjHF)},className:\"framer-4j82ej\",\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"sR4ydp36g\"}),visible1!==false&&/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),sizes:componentViewport?.width||\"100vw\",...toResponsiveImage(POEdi0JX8)},className:\"framer-aupoq3\",\"data-framer-name\":\"Thumbnail\",layoutDependency:layoutDependency,layoutId:\"hqVJ6BHCY\"}),visible2!==false&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1nxnib0-container\",\"data-framer-name\":\"Video\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"fcWSROeuS-container\",name:\"Video\",nodeId:\"fcWSROeuS\",rendersWithMotion:true,scopeId:\"YNmiecrou\",children:/*#__PURE__*/_jsx(Video,{backgroundColor:\"var(--token-ea9e9b09-8fc3-4d94-908e-b45e91fce64a)\",borderRadius:0,bottomLeftRadius:0,bottomRightRadius:0,controls:false,height:\"100%\",id:\"fcWSROeuS\",isMixedBorderRadius:false,layoutId:\"fcWSROeuS\",loop:true,muted:true,name:\"Video\",objectFit:\"cover\",playing:true,posterEnabled:false,srcFile:YtAAp0a7e,srcType:\"Upload\",srcUrl:\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",startTime:0,style:{height:\"100%\",width:\"100%\"},topLeftRadius:0,topRightRadius:0,volume:25,width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-117rsps\",\"data-framer-name\":\"Caption\",layoutDependency:layoutDependency,layoutId:\"e2VTFWZHK\",style:{background:\"linear-gradient(0deg, var(--token-42d96816-8636-4db0-b97c-0206edbf581f) 0%, var(--token-ea9e9b09-8fc3-4d94-908e-b45e91fce64a) 100%)\",opacity:0},variants:{\"RKS9iDv4G-hover\":{opacity:1}},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-9da8qm\",\"data-styles-preset\":\"eb8RK70Xm\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-5ff9d12f-7874-4b9d-9277-f32ebc149abc))\"},children:\"Project title\"})}),className:\"framer-18zcai\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"j933T2iCK\",style:{\"--extracted-r6o4lv\":\"var(--token-5ff9d12f-7874-4b9d-9277-f32ebc149abc)\"},text:nylGwBcNx,verticalAlignment:\"top\",withExternalLayout:true}),visible3!==false&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-80aov5\",\"data-styles-preset\":\"F0aKitU3A\",dir:\"auto\",style:{\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-5ff9d12f-7874-4b9d-9277-f32ebc149abc))\"},children:\"Category\"})}),className:\"framer-1o706ct\",\"data-framer-name\":\"Category\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"FYztfG8Ee\",style:{\"--extracted-r6o4lv\":\"var(--token-5ff9d12f-7874-4b9d-9277-f32ebc149abc)\",opacity:0},text:AD4f2wCnu,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\".framer-mDZ2P.framer-kzcch1, .framer-mDZ2P .framer-kzcch1 { display: block; }\",\".framer-mDZ2P.framer-f3u3pn { cursor: pointer; height: 360px; overflow: var(--overflow-clip-fallback, clip); position: relative; text-decoration: none; width: 280px; will-change: var(--framer-will-change-override, transform); }\",\".framer-mDZ2P .framer-4j82ej, .framer-mDZ2P .framer-aupoq3, .framer-mDZ2P .framer-1nxnib0-container { flex: none; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%; }\",\".framer-mDZ2P .framer-117rsps { align-content: flex-start; align-items: flex-start; bottom: 0px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 1px; height: min-content; justify-content: flex-start; left: 0px; padding: 32px 12px 11px 12px; position: absolute; right: 0px; }\",\".framer-mDZ2P .framer-18zcai { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-mDZ2P .framer-1o706ct { bottom: 0px; flex: none; height: auto; left: 12px; position: absolute; white-space: pre-wrap; width: 200px; word-break: break-word; word-wrap: break-word; }\",...sharedStyle.css,...sharedStyle1.css,'.framer-mDZ2P[data-border=\"true\"]::after, .framer-mDZ2P [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 360\n * @framerIntrinsicWidth 280\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"D5zVKZR5a\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"X5YUdHjHF\":\"image\",\"POEdi0JX8\":\"thumbnail\",\"YtAAp0a7e\":\"video\",\"nylGwBcNx\":\"title\",\"AD4f2wCnu\":\"category\",\"tEsbVYP0f\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerYNmiecrou=withCSS(Component,css,\"framer-mDZ2P\");export default FramerYNmiecrou;FramerYNmiecrou.displayName=\"Tile\";FramerYNmiecrou.defaultProps={height:360,width:280};addPropertyControls(FramerYNmiecrou,{X5YUdHjHF:{__defaultAssetReference:\"data:framer/asset-reference,YpdjetdXt0ZwMqQXtBfdFCY7mKE.jpg?originalFilename=photo-1541961017774-22349e4a1262%3Fcrop%3Dentropy%26cs%3Dsrgb%26fm%3Djpg%26q%3D85%26w%3D1600.jpg&width=1600&height=2026\",title:\"Image\",type:ControlType.ResponsiveImage},POEdi0JX8:{title:\"Thumbnail\",type:ControlType.ResponsiveImage},YtAAp0a7e:{allowedFileTypes:[\".mp4\",\".webm\"],title:\"Video\",type:ControlType.File},nylGwBcNx:{defaultValue:\"Project title\",title:\"Title\",type:ControlType.String},onnylGwBcNxChange:{changes:\"nylGwBcNx\",type:ControlType.ChangeHandler},AD4f2wCnu:{defaultValue:\"Category\",title:\"Category\",type:ControlType.String},onAD4f2wCnuChange:{changes:\"AD4f2wCnu\",type:ControlType.ChangeHandler},tEsbVYP0f:{title:\"Link\",type:ControlType.Link}});addFonts(FramerYNmiecrou,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...VideoFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerYNmiecrou\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"X5YUdHjHF\\\":\\\"image\\\",\\\"POEdi0JX8\\\":\\\"thumbnail\\\",\\\"YtAAp0a7e\\\":\\\"video\\\",\\\"nylGwBcNx\\\":\\\"title\\\",\\\"AD4f2wCnu\\\":\\\"category\\\",\\\"tEsbVYP0f\\\":\\\"link\\\"}\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"D5zVKZR5a\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicHeight\":\"360\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"280\",\"framerDisplayContentsDiv\":\"false\",\"framerColorSyntax\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./YNmiecrou.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * Wallfolio WallGrid — an endless masonry wall.\n *\n * Content: connect a Collection List (or any frame whose children are the tiles) to \"Content\".\n * Every tile keeps its own design, link and hover; this component only sizes and places them.\n * Each tile's height comes from its first image (Framer writes the image's real width/height on\n * the <img>), so the masonry keeps every piece's original aspect ratio.\n * Without a connected list, the \"Images\" list below is used instead.\n *\n * The wall wraps in every direction: columns repeat sideways, and every column loops on its own\n * height, offset by \"Desync\", so the repeat never lines up. When there are few tiles, the list is\n * rendered again (aria-hidden copies) until the wall is full.\n *\n * 3D (optional): the wall is bent over a sphere and seen in perspective, and a soft light follows\n * the cursor while the rest of the wall falls into shade. The tiles stay real tiles (links, hover,\n * captions); only their transform changes.\n *\n * A click on a tile (or its row in the list) opens the project page through the tile's own link, and\n * the tile grows into the page's cover on the way (see Fit Image → Morph).\n */// ---------- text styles (the project's Label/S and Body/S styles; fallbacks carry the full set)\nconst PRESETS={label:\"\",title:\"\",meta:\"\"};const FALLBACK={label:{size:\"12px\",weight:500,lh:\"1.2em\",ls:\"0.005em\"},title:{size:\"13px\",weight:500,lh:\"1.45em\",ls:\"-0.003em\"},meta:{size:\"13px\",weight:400,lh:\"1.45em\",ls:\"-0.003em\"}};function textClass(role,fb){const hash=PRESETS[role];return\"framer-text \"+(hash?\"framer-styles-preset-\"+hash+\" \":\"\")+fb;}// placeholder for the wall's class name while its style text is built (then swapped for the real name)\nconst CLS=\"wfwgCLS\";// ---------- small helpers\nfunction mulberry32(seed){let a=seed>>>0;return function(){a|=0;a=a+1831565813|0;let t=Math.imul(a^a>>>15,1|a);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)/4294967296;};}const useIsoLayoutEffect=typeof window!==\"undefined\"?React.useLayoutEffect:React.useEffect;function mod(n,m){return(n%m+m)%m;}function clamp(v,a,b){return Math.max(a,Math.min(b,v));}// element children, looking through wrappers that take no box (display: contents)\nfunction kids(el){const out=[];const list=Array.from(el.children);for(const c of list){const tag=c.tagName;if(tag===\"STYLE\"||tag===\"SCRIPT\"||tag===\"TEMPLATE\"||tag===\"NOSCRIPT\")continue;const d=window.getComputedStyle(c).display;if(d===\"contents\")out.push(...kids(c));else if(d!==\"none\")out.push(c);}return out;}function hasMedia(el){return el.matches(\"img,video\")||!!el.querySelector(\"img,video\");}function firstClass(el){return(el.getAttribute(\"class\")||\"\").split(\" \").filter(Boolean)[0]||el.tagName;}// The tiles are the repeated children of the list. Walk down through single wrappers until a level\n// holds two or more siblings that share a class and contain media (repeated items share one class).\nfunction findItems(root){let level=kids(root);let parent=null;for(let guard=0;guard<14&&level.length===1;guard++){const next=kids(level[0]);const media=next.filter(hasMedia);const counts={};let best=0;for(const m of media){const k=firstClass(m);counts[k]=(counts[k]||0)+1;best=Math.max(best,counts[k]);}if(media.length>=2&&best>=2){parent=level[0];level=next;break;}if(next.length===1){parent=level[0];level=next;continue;}break;}const items=level.filter(hasMedia);return{items,list:items.length?items[0].parentElement:parent};}function ratioOf(el){const img=el.querySelector(\"img\");if(img){let w=parseFloat(img.getAttribute(\"width\")||\"\");let h=parseFloat(img.getAttribute(\"height\")||\"\");if(!(w>0&&h>0)){// Framer image URLs carry the original size: …/image.jpg?width=1600&height=2000\nconst m=/[?&]width=(\\d+)&height=(\\d+)/.exec(img.currentSrc||img.src||\"\");if(m){w=Number(m[1]);h=Number(m[2]);}}if(!(w>0&&h>0)){w=img.naturalWidth;h=img.naturalHeight;}if(w>0&&h>0)return w/h;}const video=el.querySelector(\"video\");if(video&&video.videoWidth>0&&video.videoHeight>0)return video.videoWidth/video.videoHeight;if(el.offsetWidth>0&&el.offsetHeight>0)return el.offsetWidth/el.offsetHeight;return .8;}function columnsFor(width,layout,mobile){const gap=layout.gap;let n=layout.columns;if(width<810)n=mobile.columns;else if(width<1200)n=layout.tabletColumns;if(layout.mode===\"fixed\"&&width>=810){const colW=Math.max(80,layout.columnWidth);return{colW,visible:(width+gap)/(colW+gap)};}n=Math.max(1,n);// one more column peeks in at the edges, so the wall reads as something to drag\nconst colW=Math.max(60,(width+gap)/(n+.35)-gap);return{colW,visible:n+.35};}// `reach` (≥ 1): how much more of the wall can come into view when the visitor zooms out (1 / smallest zoom);\n// the wall is laid out for that much from the start, so zooming never re-arranges the tiles\nfunction copiesFor(count,ratios,width,height,layout,mobile,reach=1){if(count===0)return 1;const{colW}=columnsFor(width,layout,mobile);const gap=layout.gap;const C=Math.ceil((width*reach+gap)/(colW+gap))+2;let sum=0;let maxH=0;for(const r of ratios){const h=colW/clamp(r,.3,3);sum+=h+gap;maxH=Math.max(maxH,h);}const avg=sum/ratios.length;const perColumn=Math.ceil((height*reach+2*maxH+2*gap)/avg)+1;return clamp(Math.ceil(C*perColumn/count),1,12);}function buildLayout(ratios,copies,width,height,layout,mobile,reach=1){const gap=layout.gap;const{colW,visible}=columnsFor(width,layout,mobile);const C=Math.ceil((width*reach+gap)/(colW+gap))+2;const W=C*(colW+gap);const N=ratios.length;const rand=mulberry32(Math.round(layout.seed)*7919+17);const hOf=i=>Math.round(colW/clamp(ratios[i],.3,3));// the order: first pass as the list is sorted (Featured first) unless shuffled, later passes shuffled\nconst order=[];for(let c=0;c<copies;c++){const idx=Array.from({length:N},(_,i)=>i);if(c>0||layout.order===\"shuffle\"){for(let i=idx.length-1;i>0;i--){const j=Math.floor(rand()*(i+1));const t=idx[i];idx[i]=idx[j];idx[j]=t;}}for(const i of idx)order.push({copy:c,index:i});}// columns on screen first, the middle ones before the edges (the one peeking in on the left counts too)\nconst shown=Math.min(C,Math.ceil(visible));const ox0=Math.round((width-(Math.min(visible,C)*(colW+gap)-gap))/2);const peekLeft=ox0>gap&&C-1>=shown;const onScreen=c=>c<shown||peekLeft&&c===C-1;const rank=[];for(let c=0;c<C;c++)rank[c]=c<shown?Math.abs(c-(shown-1)/2):onScreen(c)?shown/2+.5:100+c;// the first set goes to the columns on screen, about a screen and a half deep, before any piece goes off\n// screen: the wall shows complete while its copies are still rendering (they fill everything else)\nconst firstDepth=height*1.6;const heights=new Array(C).fill(0);const maxH=new Array(C).fill(0);const byColumn=Array.from({length:C},()=>[]);const tiles=[];for(const t of order){const h=hOf(t.index);let best=0;let bestScore=Infinity;for(let c=0;c<C;c++){let score=heights[c]+rank[c]*.5+(t.copy===0&&!onScreen(c)?firstDepth:0);// keep the same piece apart: not in this column or its neighbours at a similar height\n// (with only a handful of pieces that is impossible, so it is skipped)\nif(N>=6)for(const d of[-1,0,1]){const cc=mod(c+d,C);for(const o of byColumn[cc]){if(o.index===t.index&&Math.abs(o.y-heights[c])<height+h)score+=1e6;}}if(score<bestScore){bestScore=score;best=c;}}const y=heights[best];tiles.push({copy:t.copy,index:t.index,col:best,y,h});byColumn[best].push({index:t.index,y});heights[best]=y+h+gap;maxH[best]=Math.max(maxH[best],h);}const avg=N?colW/(ratios.reduce((a,r)=>a+clamp(r,.3,3),0)/N):colW;const offsets=[];for(let c=0;c<C;c++)offsets[c]=c<shown&&layout.order!==\"shuffle\"&&layout.desync===0?0:-Math.round(rand()*layout.desync*avg);const used=Math.min(visible,C)*(colW+gap)-gap;return{colW,gap,C,W,heights:heights.map(h=>Math.max(h,1)),offsets,maxH,tiles,ox:Math.round((width-used)/2),oy:layout.gap};}// A tile whose middle sits (fx, fy) from the middle of the wall, bent over a sphere of radius R and\n// seen from distance P: it turns away and sinks back towards the edges. The view is scaled by s so\n// the edge of the wall still meets the edge of the frame. The vanishing point is the wall's middle.\nfunction bend(d,fx,fy){const a=clamp(fx/d.R,-1.4,1.4);const b=clamp(fy/d.R,-1.4,1.4);const X=d.R*Math.sin(a);const Y=d.R*Math.sin(b);const Z=-d.R*(2-Math.cos(a)-Math.cos(b));return\"translate(\"+(-fx).toFixed(1)+\"px,\"+(-fy).toFixed(1)+\"px) scale(\"+d.s.toFixed(4)+\") perspective(\"+Math.round(d.P)+\"px) translate3d(\"+X.toFixed(1)+\"px,\"+Y.toFixed(1)+\"px,\"+Z.toFixed(1)+\"px) rotateY(\"+a.toFixed(4)+\"rad) rotateX(\"+(-b).toFixed(4)+\"rad)\";}// ---------- list view: the same tiles, shrunk to thumbnails, one piece per row\n// `bar` is the room the category chips take above the rows (0 without categories); `under` the part of the wall\n// hidden under the browser's own bars (a 100vh wall on phones), added to the bottom space\nfunction listLayout(width,height,list,mobile,count,thumbW,bar,under){const phone=width<810;const pad=phone?16:24;const w=Math.max(240,Math.min(Math.max(320,list.maxWidth||1200),width-pad*2));const rowH=phone?76:clamp(list.rowHeight||88,56,160);const barTop=phone?mobile.listTop===undefined?84:mobile.listTop:list.top===undefined?148:list.top;const top=barTop+(bar||0);const bottom=(phone?mobile.listBottom===undefined?160:mobile.listBottom:list.bottom===undefined?120:list.bottom)+(under||0);return{phone,x0:Math.round((width-w)/2),w,rowH,thumbH:rowH-16,thumbW,num:phone||list.numbers===false?0:52,barTop,bar:bar||0,top,bottom,total:count*rowH,min:Math.min(0,height-bottom-top-count*rowH)};}// the list's texts follow the project's text styles (framer-styles-preset hashes read from the published site,\n// 2026-10-16); the chips use Label/S like the View Switch's tabs\nconst LIST_STYLES={num:{hash:\"80aov5\",size:\"13px\",weight:400,lh:\"1.45em\",ls:\"-0.003em\"},title:{hash:\"1i0l4b1\",size:\"18px\",weight:400,lh:\"1.4em\",ls:\"-0.011em\"},meta:{hash:\"1kpmfgs\",size:\"15px\",weight:400,lh:\"1.45em\",ls:\"-0.006em\"},chip:{hash:\"nvauov\",size:\"12px\",weight:500,lh:\"1.2em\",ls:\"0.005em\"},chipn:{hash:\"nvauov\",size:\"12px\",weight:500,lh:\"1.2em\",ls:\"0.005em\"}};// a category name as it is compared: the same record shows the same name on the tile and in the list of\n// categories, so only spacing and case are evened out\nfunction catKey(s){return(s||\"\").replace(/\\s+/g,\" \").trim().toLowerCase();}// the category names of a connected Collection List, in its own order: the first text of every item (the\n// list may be wrapped, and an item may hold more texts than the name)\nfunction readCategories(box){if(!box)return[];let el=box;const isText=n=>/^(P|H1|H2|H3|H4|H5|H6)$/.test(n.tagName);while(el.children.length===1&&!isText(el.children[0]))el=el.children[0];const items=isText(el)?[el]:Array.from(el.children);const out=[];for(const it of items){const t=isText(it)?it:it.querySelector(\"p,h1,h2,h3,h4,h5,h6\");const name=t?(t.textContent||\"\").replace(/\\s+/g,\" \").trim():\"\";const key=catKey(name);if(key&&!out.some(c=>c.key===key))out.push({key,name});}return out;}// Zoom Out: the smallest zoom visitors can reach (1 = no zoom). Off on the canvas.\nfunction zoomMinOf(o){const m=o.motion||{};const z=m.zoom===undefined||m.zoom===null?.6:Number(m.zoom);if(!(z>0)||z>=.999||o.isCanvas)return 1;return clamp(z,.3,1);}// Instant open: the code files a project page needs (its own module preloads, read from the page's HTML) are\n// loaded ahead, each once, so a click opens the page at once instead of waiting for them. Every project shares\n// one page template, so this happens once. Skipped when the visitor saves data.\nconst preloaded=new Set;function preloadModules(doc){try{const nav=typeof navigator!==\"undefined\"?navigator:null;if(nav&&nav.connection&&nav.connection.saveData)return;const links=Array.from(doc.querySelectorAll(\"link[rel=modulepreload][href]\"));for(const l of links.slice(0,40)){const href=l.getAttribute(\"href\")||\"\";if(!/\\.m?js(\\?|$)/.test(href)||preloaded.has(href))continue;preloaded.add(href);const n=document.createElement(\"link\");n.rel=\"modulepreload\";n.href=href;const co=l.getAttribute(\"crossorigin\");if(co!==null)n.setAttribute(\"crossorigin\",co);n.setAttribute(\"fetchpriority\",\"low\");document.head.appendChild(n);}}catch(e){}}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 800\n */export default function WallGrid(panel){// the panel's Colors group holds the twelve colours; read as plain props everywhere below\nconst props={...panel,...panel.colors||{}};const{content,images=[],layout,motion,hover,effects,mobile}=props;const depth=props.depth||{};const lightOn=!!(depth.on&&depth.light>0);const list=props.list||{};const isCanvas=RenderTarget.current()===RenderTarget.canvas;// the class name is made from the wall's own style text further down (see \"one class name\"), never from\n// React's id: until then it is this placeholder\nlet uid=CLS;// the motion-blur filter needs an id of its own per wall\nconst fid=\"wg\"+React.useId().replace(/[^a-zA-Z0-9]/g,\"\");const slot=content&&content.length?content[0]:null;const manual=!slot&&images.length>0;// Categories (optional): a Collection List of the categories, read for its names only (never shown)\nconst catSlot=props.categories&&props.categories.length?props.categories[0]:null;const rootRef=React.useRef(null);const layerRef=React.useRef(null);// the tiles' layer inside it, scaled by the zoom (the layer keeps the edge fade still)\nconst zoomRef=React.useRef(null);const labelRef=React.useRef(null);const lightRef=React.useRef(null);const blurRef=React.useRef(null);const[copies,setCopies]=React.useState(1);const[hint,setHint]=React.useState(false);const listRef=React.useRef(null);const catsRef=React.useRef(null);const[rows,setRows]=React.useState(null);// List → Hover Focus: while a row is under the pointer (or has keyboard focus), the other rows and their thumbnails\n// step back (a version with a fill band under the row is in _archive/WallGrid-with-row-band.tsx)\nconst rowOnRef=React.useRef({i:-1,t:0});const focusOn=list.focus!==false&&!isCanvas;// phones: the categories' card under the category button\nconst[menu,setMenu]=React.useState(false);const pickRef=React.useRef(null);// the card closes on a tap anywhere else or on Esc (focus back on the button)\nReact.useEffect(()=>{if(!menu)return;const onDown=e=>{const box=pickRef.current;if(box&&!box.contains(e.target))setMenu(false);};const onKey=e=>{if(e.key!==\"Escape\")return;e.preventDefault();setMenu(false);const b=pickRef.current&&pickRef.current.querySelector(\"button\");if(b)b.focus();};document.addEventListener(\"pointerdown\",onDown,true);document.addEventListener(\"keydown\",onKey,true);return()=>{document.removeEventListener(\"pointerdown\",onDown,true);document.removeEventListener(\"keydown\",onKey,true);};},[menu]);// no card left open when the list goes away or the screen is no longer a phone's\nif(menu&&(!rows||!rows.bar||!rows.phone))setMenu(false);// everything the animation loop needs lives in one mutable object, never in React state\nconst S=React.useRef(null);if(!S.current){S.current={items:[],layout:null,sig:\"\",ox:0,oy:0,vx:0,vy:0,px:0,py:0,down:null,dragging:false,suppress:false,lastInput:0,hoverEl:null,raf:0,running:false,width:0,height:0,zoom:1,driftAmt:0,// Glide In on load: { t0, dist, done, dur } while it runs\nintro:null,// zoom: zs = now, zt = where it eases to, zMin = farthest out, zc = the point it zooms around\n// (root px; null = the middle); pinch = two fingers on the wall, touches = fingers down\nzs:1,zt:1,zMin:1,zc:null,pinch:null,touches:new Map,revealed:false,reduce:false,list:null,// \"wall\" or \"list\"; lsy is the list's scroll offset (0 = top, negative = scrolled down)\nview:isCanvas&&props.canvasView===\"list\"?\"list\":\"wall\",lsy:0,listL:null,// Shuffle: a new seed lays the wall out in a fresh random order (0 = the panel's own order)\nshuffleSeed:0,// Instant open: a project page has been read ahead once\nreadAhead:false,// the list's category (\"\" = all), as a catKey\ncat:\"\"};}const opts=React.useRef({});opts.current={layout,motion,hover,effects,depth,list,mobile,isCanvas};// ---------- collect the tiles of every copy and lay them out\nconst collect=React.useCallback(()=>{const root=rootRef.current;const st=S.current;if(!root)return;const o=opts.current;const width=root.offsetWidth;const height=root.offsetHeight;if(!width||!height)return;const copyEls=Array.from(root.querySelectorAll(\"[data-wg-copy]\"));const perCopy=[];for(const ce of copyEls){const found=findItems(ce);perCopy[Number(ce.getAttribute(\"data-wg-copy\"))]=found.items;if(ce.getAttribute(\"data-wg-copy\")===\"0\")st.list=found.list;// the list and its wrappers must not clip or position the tiles: the copy layer does\nlet p=found.items[0]?found.items[0].parentElement:null;while(p&&p!==ce){p.style.setProperty(\"position\",\"static\",\"important\");p.style.setProperty(\"overflow\",\"visible\",\"important\");p.style.setProperty(\"transform\",\"none\",\"important\");p=p.parentElement;}}const base=perCopy[0]||[];const ratios=base.map(ratioOf);// When the set of tiles changes (a filter, a CMS edit), Framer has already removed tiles, so the\n// rest is hidden at once, laid out again and faded back in from the middle. Tiles never fly\n// across each other.\nconst itemsSig=base.length+\":\"+ratios.map(r=>r.toFixed(3)).join(\",\");const animated=st.revealed&&!o.isCanvas&&!st.reduce&&o.effects.reveal;if(st.layout&&st.itemsSig!==undefined&&itemsSig!==st.itemsSig&&animated&&!st.swap){st.swap=\"ready\";window.clearTimeout(st.fadeTimer);root.removeAttribute(\"data-wg-fading\");root.setAttribute(\"data-wg-swap\",\"\");}// after Shuffle the wall uses its own random order (a fresh seed) instead of the panel's\nconst lay=st.shuffleSeed?{...o.layout,order:\"shuffle\",seed:st.shuffleSeed}:o.layout;// Zoom Out: the wall is laid out for the farthest zoom; with only a few pieces that would take too\n// many copies, so the reach shrinks (down to no zoom) instead of leaving holes\nlet reach=1/zoomMinOf(o);while(reach>1&&copiesFor(base.length,ratios,width,height,lay,o.mobile,reach)>=12)reach=Math.max(1,reach-.1);st.zMin=1/reach;if(st.zt<st.zMin)st.zt=st.zMin;announceZoom();const want=copiesFor(base.length,ratios,width,height,lay,o.mobile,reach);// The wall is laid out for all the copies it needs right away, and shows what is there (the first set)\n// without waiting for the rest to render: they step into their places as they arrive. The first set's\n// places do not depend on how many copies follow, so nothing moves when they come.\n// Before the first reveal they are asked for after the next frame is painted, at low priority.\nif(base.length&&want!==copyEls.length&&st.copiesAsked!==want){st.copiesAsked=want;const ask=()=>React.startTransition(()=>setCopies(want));if(st.revealed)ask();else window.requestAnimationFrame(()=>window.setTimeout(ask,0));}if(want===copyEls.length)st.copiesAsked=0;const useCopies=base.length?want:Math.min(want,copyEls.length);const sig=[width,height,useCopies,reach.toFixed(2),JSON.stringify(lay),JSON.stringify(o.mobile),ratios.map(r=>r.toFixed(3)).join(\",\")].join(\"|\");const first=!st.layout;if(sig!==st.sig){const L=buildLayout(ratios,useCopies,width,height,lay,o.mobile,reach);if(first||!st.layout){st.ox=L.ox;st.oy=L.oy;}st.layout=L;st.sig=sig;}const L=st.layout;st.width=width;st.height=height;// 3D: the sphere is sized on the longer side of the frame; flat for visitors who prefer\n// reduced motion (the canvas always shows it, so the design can be judged there)\nconst d3=o.depth;if(d3&&d3.on&&d3.curve>0&&(!st.reduce||o.isCanvas)){const half=Math.max(width,height)/2;const R=half/Math.max(.05,clamp(d3.curve,0,1)*.9);const P=Math.max(width,height)*1.2;const a=half/R;const edge=R*Math.sin(a)*P/(P+R*(1-Math.cos(a)));st.d3={R,P,s:half/edge,cx:width/2,cy:height/2};}else st.d3=null;if(st.lx===undefined){st.lx=width/2;st.ly=height/2;}const items=[];for(const t of L.tiles){const el=perCopy[t.copy]&&perCopy[t.copy][t.index];if(!el)continue;el.setAttribute(\"data-wg-item\",\"\");el.style.removeProperty(\"display\");if(t.copy>0){el.setAttribute(\"data-wg-dupe\",\"\");el.querySelectorAll(\"a,button,[tabindex]\").forEach(a=>a.setAttribute(\"tabindex\",\"-1\"));}el.style.setProperty(\"width\",L.colW+\"px\",\"important\");el.style.setProperty(\"height\",t.h+\"px\",\"important\");const videos=Array.from(el.querySelectorAll(\"video\"));for(const v of videos){v.muted=true;v.playsInline=true;v.loop=true;}items.push({el,t,videos,playing:null,off:null});}// tiles left over (more copies than needed) stay hidden\nfor(const list of perCopy)for(const el of list||[])if(!el.hasAttribute(\"data-wg-item\"))el.style.setProperty(\"display\",\"none\");// a copy layer shows only once its tiles have their places\nfor(const ce of copyEls)ce.setAttribute(\"data-wg-placed\",\"\");st.items=items;st.itemsSig=itemsSig;if(st.view===\"list\"){root.setAttribute(\"data-wg-list\",\"\");buildList();}place(true);root.setAttribute(\"data-wg-ready\",\"\");if(!st.revealed&&items.length)reveal();else for(const it of items)it.el.setAttribute(\"data-wg-in\",\"\");if(st.swap===\"ready\"){st.swap=null;if(st.view===\"list\")listIn();else fadeIn();}kick();},[copies]);// the Shuffle listener is set up once, so it reaches the current collect through here\nS.current.collect=collect;// ---------- Shuffle (the \"wallfolio:shuffle\" event, e.g. from the View Switch): the wall fades out in\n// place, is laid out again in a new random order and fades back in from the middle. Nothing travels.\nconst shuffle=()=>{const st=S.current;const root=rootRef.current;if(!root||!st.layout||st.view===\"list\")return;const animate=!st.reduce&&!opts.current.isCanvas;const apply=()=>{let seed=st.shuffleSeed;while(seed===st.shuffleSeed)seed=1+Math.floor(Math.random()*998);st.shuffleSeed=seed;st.sig=\"\";st.vx=st.vy=st.px=st.py=0;setHover(null);if(animate)root.setAttribute(\"data-wg-swap\",\"\");root.removeAttribute(\"data-wg-leaving\");if(st.collect)st.collect();if(animate)window.requestAnimationFrame(fadeIn);};window.clearTimeout(st.shuffleT);if(animate){root.setAttribute(\"data-wg-leaving\",\"\");st.shuffleT=window.setTimeout(apply,340);}else apply();};// ---------- list view\nconst linkOf=el=>el.matches(\"a[href]\")?el:el.querySelector(\"a[href]\");// rows in the list's own order; their texts come from the tiles (the first text is the title). With a list\n// of categories connected, chips above the rows narrow them to one category: a piece belongs to a category\n// when one of its texts (after the title) is that category's name, so a renamed, added or deleted category\n// follows the CMS by itself. A category without pieces gets no chip.\nconst buildList=()=>{const st=S.current;const o=opts.current;if(!st.layout)return;const all=st.items.filter(x=>x.t.copy===0).sort((a,b)=>a.t.index-b.t.index);const rowH=st.width<810?76:clamp(o.list&&o.list.rowHeight||88,56,160);let thumbW=0;for(const it of all)thumbW=Math.max(thumbW,st.layout.colW*(rowH-16)/it.t.h);const data=all.map(it=>({it,d:readTile(it.el)||{title:\"\",meta:\"\",href:\"\",keys:[]}}));const cats=readCategories(catsRef.current);const chips=[];for(const c of cats){const n=data.filter(x=>x.d.keys.includes(c.key)).length;if(n)chips.push({key:c.key,name:c.name,n});}// the chosen category may have been renamed or deleted since: back to all\nif(st.cat&&!chips.some(c=>c.key===st.cat))st.cat=\"\";const shown=st.cat?data.filter(x=>x.d.keys.includes(st.cat)):data;// pieces of other categories step out of the list (place() hides anything without a row)\nfor(const it of all)it.li=undefined;shown.forEach((x,i)=>x.it.li=i);const barOn=chips.length>0;const phone=st.width<810;// the browser's own bars may cover the bottom of the wall (phones, a 100vh wall): the last rows stay clear of them\nlet under=0;if(!o.isCanvas&&typeof window!==\"undefined\"&&rootRef.current){const r=rootRef.current.getBoundingClientRect();const vv=window.visualViewport;const seen=vv?vv.offsetTop+vv.height:window.innerHeight;if(r.top<seen)under=clamp(Math.round(r.bottom-seen),0,200);}const LL=listLayout(st.width,st.height,o.list||{},o.mobile||{},shown.length,Math.round(thumbW),barOn?phone?45:53:0,under);LL.base=shown.map(x=>x.it);st.listL=LL;st.lsy=clamp(st.lsy||0,LL.min,0);const items=shown.map((x,i)=>({key:st.cat+\":\"+x.it.t.index,n:i+1,title:x.d.title,meta:x.d.meta,href:x.d.href}));const allLabel=o.list&&o.list.allLabel!==undefined?o.list.allLabel:\"All\";const counts=!(o.list&&o.list.counts===false);const bar=barOn?{top:LL.barTop,cat:st.cat,counts,chips:[{key:\"\",name:allLabel||\"All\",n:all.length}].concat(chips)}:null;const next={items,rowH:LL.rowH,top:LL.top,num:LL.num,thumbW:LL.thumbW,phone:LL.phone,x0:LL.x0,w:LL.w,bar};const sig=JSON.stringify(next);if(sig!==st.rowsSig){st.rowsSig=sig;rowOn(-1);setRows(next);}};// Hover Focus: marks row i (the row and its thumbnail) and the wall root; -1 = none\nconst rowOn=i=>{const ro=rowOnRef.current;window.clearTimeout(ro.t);const root=rootRef.current;if(ro.i===i||!root)return;ro.i=i;const mark=(box,attr)=>{if(box)box.querySelectorAll(\"[\"+attr+\"]\").forEach(el=>Number(el.getAttribute(attr))===i?el.setAttribute(\"data-on\",\"\"):el.removeAttribute(\"data-on\"));};mark(listRef.current,\"data-wg-row\");for(const it of S.current.items){if(i>=0&&it.t.copy===0&&it.li===i)it.el.setAttribute(\"data-wg-row-on\",\"\");else it.el.removeAttribute(\"data-wg-row-on\");}if(i>=0)root.setAttribute(\"data-wg-rows-on\",\"\");else root.removeAttribute(\"data-wg-rows-on\");};// moving from one row to the next never clears in between\nconst rowOff=()=>{const ro=rowOnRef.current;window.clearTimeout(ro.t);ro.t=window.setTimeout(()=>rowOn(-1),90);};// a chip: the list fades out in place, narrows to the category from the top, and comes back in (nothing\n// travels, as when the view changes)\nconst setCat=key=>{const st=S.current;const root=rootRef.current;if(!root||st.cat===key||st.view!==\"list\")return;const animate=!st.reduce&&!opts.current.isCanvas;window.clearTimeout(st.catT);rowOn(-1);const apply=()=>{st.cat=key;st.lsy=0;st.py=0;if(animate)root.setAttribute(\"data-wg-swap\",\"\");root.removeAttribute(\"data-wg-leaving\");buildList();place(true);if(animate)window.requestAnimationFrame(listIn);kick();};if(animate){root.setAttribute(\"data-wg-leaving\",\"\");st.catT=window.setTimeout(apply,300);}else apply();};// after the view or the list changes: the thumbnails come in from the top down\nconst listIn=()=>{const st=S.current;const root=rootRef.current;if(!root||!st.listL)return;st.listL.base.forEach((it,i)=>it.el.style.transitionDelay=Math.min(i,14)*30+\"ms\");root.setAttribute(\"data-wg-fading\",\"\");void root.offsetWidth;root.removeAttribute(\"data-wg-swap\");window.clearTimeout(st.fadeTimer);st.fadeTimer=window.setTimeout(()=>{root.removeAttribute(\"data-wg-fading\");for(const it of st.items)it.el.style.transitionDelay=\"\";},1100);};// Wall <-> List: the current view fades out in place, the other one comes in. Nothing travels.\nconst setView=(v,immediate)=>{const st=S.current;const root=rootRef.current;if(!root||st.view===v&&!immediate)return;const animate=!immediate&&!st.reduce&&!opts.current.isCanvas&&!!st.layout;window.clearTimeout(st.viewT);rowOn(-1);// the list is never seen through the opening iris\nif(v===\"list\"&&st.iris){try{st.iris.cancel();}catch(e){}st.iris=null;}const apply=()=>{st.view=v;st.lsy=0;st.vx=st.vy=st.px=st.py=0;st.driftAmt=0;// the list is never zoomed: back to 1 around the middle (nothing shifts)\nst.zc=null;zoomTo(1);st.zt=1;st.pinch=null;if(zoomRef.current)zoomRef.current.style.transform=\"\";announceZoom();setHover(null);if(v===\"list\")root.setAttribute(\"data-wg-list\",\"\");else root.removeAttribute(\"data-wg-list\");if(animate)root.setAttribute(\"data-wg-swap\",\"\");root.removeAttribute(\"data-wg-leaving\");// in the list the rows are the links: the tiles' own links step out of the tab order\nfor(const it of st.items){if(it.t.copy!==0)continue;const a=linkOf(it.el);if(!a)continue;if(v===\"list\"){if(!a.hasAttribute(\"tabindex\")){a.setAttribute(\"tabindex\",\"-1\");a.setAttribute(\"data-wg-tab\",\"\");}}else if(a.hasAttribute(\"data-wg-tab\")){a.removeAttribute(\"tabindex\");a.removeAttribute(\"data-wg-tab\");}}if(v===\"list\")buildList();else{st.rowsSig=\"\";setRows(null);}place(true);if(animate)window.requestAnimationFrame(()=>v===\"list\"?listIn():fadeIn());kick();};if(animate){root.setAttribute(\"data-wg-leaving\",\"\");st.viewT=window.setTimeout(apply,340);}else apply();};// ---------- after a change of tiles: fade back in, from the middle outwards\nconst fadeIn=()=>{const st=S.current;const root=rootRef.current;if(!root)return;const cx=st.width/2;const cy=st.height/2;const diag=Math.hypot(cx,cy)||1;for(const it of st.items){const d=Math.hypot((it.sx||0)+st.layout.colW/2-cx,(it.sy||0)+it.t.h/2-cy);it.el.style.transitionDelay=Math.round(d/diag*320)+\"ms\";}// start the fade-in now: the browser runs it on the compositor even while the page is\n// still busy mounting the new tiles\nroot.setAttribute(\"data-wg-fading\",\"\");void root.offsetWidth;root.removeAttribute(\"data-wg-swap\");window.clearTimeout(st.fadeTimer);st.fadeTimer=window.setTimeout(()=>{root.removeAttribute(\"data-wg-fading\");for(const it of st.items)it.el.style.transitionDelay=\"\";},1e3);};// ---------- reveal: tiles fade in from the middle outwards, once\nconst reveal=()=>{const st=S.current;st.revealed=true;const cx=st.width/2;const cy=st.height/2;const diag=Math.hypot(cx,cy)||1;const animate=opts.current.effects.reveal&&!st.reduce&&!opts.current.isCanvas;for(const it of st.items){const d=Math.hypot((it.sx||0)+st.layout.colW/2-cx,(it.sy||0)+it.t.h/2-cy);it.el.style.transitionDelay=animate?Math.round(d/diag*520)+\"ms\":\"0ms\";}const go=()=>{for(const it of st.items)it.el.setAttribute(\"data-wg-in\",\"\");window.setTimeout(()=>{rootRef.current&&rootRef.current.setAttribute(\"data-wg-settled\",\"\");for(const it of st.items)it.el.style.transitionDelay=\"\";},animate?1300:0);};if(animate)window.requestAnimationFrame(()=>window.requestAnimationFrame(go));else go();// Opening → Iris: the wall opens as a circle from its middle (the tiles' layer only; nothing stays clipped)\nconst layer=layerRef.current;const q=new URLSearchParams(window.location.search).get(\"view\");const opensInList=q===\"index\"||q===\"list\"||q!==\"wall\"&&!!opts.current.list&&opts.current.list.start===\"list\";if(animate&&st.view!==\"list\"&&!opensInList&&opts.current.effects.opening===\"iris\"&&layer&&typeof layer.animate===\"function\"){const r=Math.ceil(Math.hypot(st.width,st.height)/2)+2;try{// kept so the list can stop it (the page may open in the list, or switch to it mid-opening)\nst.iris=layer.animate([{clipPath:\"circle(0px at 50% 50%)\"},{clipPath:\"circle(\"+r+\"px at 50% 50%)\"}],{duration:1400,easing:\"cubic-bezier(.45,0,.15,1)\"});st.iris.onfinish=()=>st.iris=null;}catch(e){}}// Glide In: the wall arrives with a soft move in the drift's Direction that flows into the slow drift. Timed by the clock,\n// not by frames, so it keeps its pace while the page is still loading. Not in the list, not with reduced\n// motion.\nconst gi=opts.current.effects.glideIn;const glide=animate&&st.view!==\"list\"?Math.max(0,gi===undefined||gi===null?260:Number(gi)||0):0;if(glide){const gt=Number(opts.current.effects.glideTime);const dur=Math.round(clamp(Number.isFinite(gt)&&gt>0?gt:2.2,.4,6)*1e3);st.intro={t0:performance.now(),dist:glide,done:0,dur};// the drift starts under it at once (as if the visitor had been still for a while), so the glide\n// hands over to it without a stop\nst.lastInput=Math.min(st.lastInput,performance.now()-2600);kick();}// Instant open: once the wall has settled, one project page is read ahead, which loads the page\n// template's files (every project shares them) before the first click\nif(!opts.current.isCanvas){window.setTimeout(()=>{const first=st.items&&st.items[0];const a=first?linkOf(first.el):null;if(a)readAhead(a.href);},2600);}};// ---------- positions\nconst place=force=>{const st=S.current;const L=st.layout;if(!L)return;const LL=st.view===\"list\"?st.listL:null;// zoomed out, more of the wall is on screen: the band that is laid out grows by ex / ey on each side,\n// and the 3D sphere grows with it, so it looks the same with more pieces on it\nconst zs=LL?1:st.zs;const d3=LL||!st.d3?null:zs<1?{...st.d3,R:st.d3.R/zs,P:st.d3.P/zs}:st.d3;// a new zoom bends every tile again, even those that did not move\nconst rebend=!!d3&&st.placedZs!==zs;st.placedZs=zs;// bent tiles near the edges are drawn further in, so more of the flat wall is kept on\nconst margin=d3?120+L.colW:120;const bufX=L.colW+L.gap;const ex=zs<1?st.width/2*(1/zs-1):0;const ey=zs<1?st.height/2*(1/zs-1):0;const animating=false;if(LL&&listRef.current)listRef.current.style.translate=\"0px \"+st.lsy.toFixed(1)+\"px\";for(const it of st.items){const t=it.t;let x=0;let y=0;let off=false;let k=0;if(LL){// list: each piece once, as a thumbnail at the start of its row; the copies wait hidden\nif(t.copy!==0||it.li===undefined){x=it.sx||0;y=it.sy||0;off=true;}else{k=LL.thumbH/t.h;x=LL.x0+LL.num;y=LL.top+it.li*LL.rowH+(LL.rowH-LL.thumbH)/2+st.lsy;off=y+LL.thumbH<-40||y>st.height+40;}}else{const H=L.heights[t.col];const bufY=L.maxH[t.col]+L.gap;x=mod(t.col*(L.colW+L.gap)+st.ox+bufX+ex,L.W)-bufX-ex;y=mod(t.y+L.offsets[t.col]+st.oy+bufY+ey,H)-bufY-ey;off=x+L.colW<-margin-ex||x>st.width+margin+ex||y+t.h<-margin-ey||y>st.height+margin+ey;}if(force||rebend||it.sx!==x||it.sy!==y||it.k!==k){it.el.style.setProperty(\"translate\",x.toFixed(1)+\"px \"+y.toFixed(1)+\"px 0px\");if(k){it.el.style.setProperty(\"transform-origin\",\"0 0\",\"important\");it.el.style.setProperty(\"transform\",\"scale(\"+k.toFixed(4)+\")\",\"important\");it.el.setAttribute(\"data-wg-listed\",\"\");it.el.removeAttribute(\"data-wg-bent\");}else{if(it.el.hasAttribute(\"data-wg-listed\")){it.el.style.removeProperty(\"transform\");it.el.style.removeProperty(\"transform-origin\");it.el.removeAttribute(\"data-wg-listed\");}if(d3){it.el.style.setProperty(\"transform\",bend(d3,x+L.colW/2-d3.cx,y+t.h/2-d3.cy),\"important\");it.el.setAttribute(\"data-wg-bent\",\"\");}else if(it.el.hasAttribute(\"data-wg-bent\")){it.el.style.removeProperty(\"transform\");it.el.removeAttribute(\"data-wg-bent\");}}it.sx=x;it.sy=y;it.k=k;}if(off!==it.off){it.off=off;if(off)it.el.setAttribute(\"data-wg-off\",\"\");else it.el.removeAttribute(\"data-wg-off\");}const play=!off&&!st.reduce&&!opts.current.isCanvas;if(it.videos.length&&play!==it.playing){it.playing=play;for(const v of it.videos){if(play){const p=v.play();if(p&&p.catch)p.catch(()=>{});}else v.pause();}}}return animating;};// ---------- the page: the tile (or its thumbnail in the list) shares the cover's view-transition name for a\n// moment, so the page effect grows it into the project page's cover (see Fit Image → Morph); gone again if\n// the page stays\nconst nameForMorph=el=>{const st=S.current;if(st.reduce||typeof document===\"undefined\"||!(\"startViewTransition\"in document))return;if(st.morphEl&&st.morphEl!==el&&st.morphEl.isConnected)st.morphEl.style.removeProperty(\"view-transition-name\");el.style.setProperty(\"view-transition-name\",\"wallfolio-cover\");st.morphEl=el;window.setTimeout(()=>{if(el.isConnected)el.style.removeProperty(\"view-transition-name\");if(st.morphEl===el)st.morphEl=null;},1500);};// ---------- zoom to s around st.zc (root px; the middle when null): what is under that point stays there\nconst zoomTo=s=>{const st=S.current;const old=st.zs;if(s===old)return;const cx=st.width/2;const cy=st.height/2;const p=st.zc||{x:cx,y:cy};st.ox+=(p.x-cx)*(1/s-1/old);st.oy+=(p.y-cy)*(1/s-1/old);st.zs=s;};// a zoom asked for by the wheel, the keys, the View Switch or a Safari pinch: the loop eases to it\nconst zoomRequest=(target,p)=>{const st=S.current;if(st.view===\"list\"||st.zMin>=.999)return;st.zc=p;st.zt=clamp(target,st.zMin,1);st.lastInput=performance.now();setHint(false);announceZoom();kick();};// tells the View Switch (\"wallfolio:zoomed\") whether zoom is there and whether the wall is zoomed out,\n// so its button can say Zoom out / Zoom in; only when that changes, unless asked\nconst announceZoom=force=>{const st=S.current;if(typeof window===\"undefined\"||opts.current.isCanvas||!st)return;const available=st.zMin<.999&&st.view!==\"list\";const zoomed=available&&st.zt<.99;const key=(available?\"a\":\"-\")+(zoomed?\"z\":\"1\");if(!force&&st.zAnn===key)return;st.zAnn=key;window.dispatchEvent(new CustomEvent(\"wallfolio:zoomed\",{detail:{available,zoomed}}));};// ---------- the loop runs only while something moves\nconst kick=()=>{const st=S.current;if(st.running||opts.current.isCanvas)return;st.running=true;let last=performance.now();const step=now=>{const o=opts.current;const dt=Math.min(48,now-last)/16.667;last=now;let moving=false;const listing=st.view===\"list\"&&!!st.listL;if(!st.dragging){// wheel and key input ease in, a flick glides out\nconst ex=st.px*.22;const ey=st.py*.22;st.px-=ex;st.py-=ey;if(listing)st.lsy+=ey+st.vy*dt;else{st.ox+=ex+st.vx*dt;st.oy+=ey+st.vy*dt;}const f=Math.pow(clamp(o.motion.friction,.5,.995),dt);st.vx*=f;st.vy*=f;if(Math.abs(st.vx)<.02)st.vx=0;if(Math.abs(st.vy)<.02)st.vy=0;if(Math.abs(st.px)<.1)st.px=0;if(Math.abs(st.py)<.1)st.py=0;moving=!!(st.vx||st.vy||st.px||st.py);}// Glide In (see reveal): starts from rest, picks up softly, peaks at a third of its time and slows\n// over a long tail into the drift, which already runs underneath (speed 12u(1-u)², no jolt at\n// either end). Any drag, wheel or key stops it where it is.\nif(st.intro){const g=st.intro;if(listing||st.dragging||st.lastInput>g.t0)st.intro=null;else{const p=clamp((now-g.t0)/g.dur,0,1);const want=g.dist*(1-Math.pow(1-p,3)*(1+3*p));// along the drift's Direction (270° = straight up), so the glide flows on into the drift\nconst deg=Number(o.motion.angle);const a=(Number.isFinite(deg)?deg:250)*Math.PI/180;st.ox+=Math.cos(a)*(want-g.done);st.oy+=Math.sin(a)*(want-g.done);g.done=want;moving=true;if(p>=1)st.intro=null;}}// the list scrolls between its first and its last row\nif(listing){if(st.lsy>0){st.lsy=0;st.vy=0;st.py=0;}else if(st.lsy<st.listL.min){st.lsy=st.listL.min;st.vy=0;st.py=0;}}// slow drift, paused while the visitor is busy or hovering a tile (never in the list)\nconst speed=listing?0:o.motion.drift;const idle=now-st.lastInput>2500&&!st.down&&!(o.motion.pauseOnHover&&st.hoverEl);const target=speed>0&&idle&&!st.reduce?1:0;st.driftAmt+=(target-st.driftAmt)*.03*dt;if(st.driftAmt<.001&&target===0)st.driftAmt=0;if(st.driftAmt>0){const a=o.motion.angle*Math.PI/180;st.ox+=Math.cos(a)*speed*st.driftAmt*(dt/60);st.oy+=Math.sin(a)*speed*st.driftAmt*(dt/60);moving=true;// the wall moves under a still cursor: check now and then which tile is under it\nif(st.mouse&&!st.dragging&&(st.frame=(st.frame||0)+1)%8===0){const hit=document.elementFromPoint(st.mouse.x,st.mouse.y);const item=hit&&rootRef.current&&rootRef.current.contains(hit)?hit.closest(\"[data-wg-item]\"):null;setHover(item);}}// Zoom Out: eases to its target around its point (the fingers, the cursor, or the middle for keys)\nif(st.zs!==st.zt){let ns=st.reduce?st.zt:st.zs+(st.zt-st.zs)*(1-Math.pow(.72,dt));if(Math.abs(ns-st.zt)<8e-4)ns=st.zt;zoomTo(ns);moving=true;}// a slight zoom out while dragging\nconst zt=st.dragging&&!st.reduce?1-o.effects.dragZoom:1;st.zoom+=(zt-st.zoom)*.15*dt;if(Math.abs(st.zoom-zt)<5e-4)st.zoom=zt;const layer=layerRef.current;const zoomer=zoomRef.current;const scale=st.zoom*(listing?1:st.zs);if(zoomer)zoomer.style.transform=scale!==1?\"scale(\"+scale.toFixed(4)+\")\":\"\";if(blurRef.current){const sp=o.effects.motionBlur&&!st.reduce?Math.min(12,Math.hypot(st.vx,st.vy)*.35):0;blurRef.current.setAttribute(\"stdDeviation\",(Math.abs(st.vx)>Math.abs(st.vy)?sp:sp*.3).toFixed(2)+\" \"+(Math.abs(st.vy)>=Math.abs(st.vx)?sp:sp*.3).toFixed(2));if(layer)layer.style.filter=sp>.3?\"url(#\"+fid+\"-blur)\":\"\";}const animating=place();// the light eases after the cursor, and back to the middle when the cursor leaves\nlet lighting=false;const light=lightRef.current;if(light&&st.lx!==undefined){const tx=st.lightTarget?st.lightTarget.x:st.width/2;const ty=st.lightTarget?st.lightTarget.y:st.height/2;const k=1-Math.pow(.86,dt);st.lx+=(tx-st.lx)*k;st.ly+=(ty-st.ly)*k;if(Math.abs(tx-st.lx)<.3&&Math.abs(ty-st.ly)<.3){st.lx=tx;st.ly=ty;}else lighting=true;light.style.translate=(st.lx-st.width/2).toFixed(1)+\"px \"+(st.ly-st.height/2).toFixed(1)+\"px\";}const drifting=speed>0&&!st.reduce;if(moving||animating||lighting||st.dragging||st.zoom!==1||st.zs!==st.zt||drifting||st.driftAmt>0){st.raf=window.requestAnimationFrame(step);}else{st.running=false;}};st.raf=window.requestAnimationFrame(step);};// ---------- lifecycle: measure, observe, listen\nuseIsoLayoutEffect(()=>{const root=rootRef.current;if(!root)return;const st=S.current;st.reduce=typeof window!==\"undefined\"&&!!window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;collect();});React.useEffect(()=>{const root=rootRef.current;if(!root)return;const st=S.current;let timer=0;const later=()=>{window.clearTimeout(timer);timer=window.setTimeout(collect,60);};const ro=new ResizeObserver(later);ro.observe(root);// the browser's bars come and go without the wall changing size: the list's bottom space follows them\nconst vv=typeof window!==\"undefined\"?window.visualViewport:null;const onBars=()=>{if(st.view===\"list\"&&st.layout){buildList();kick();}};if(vv)vv.addEventListener(\"resize\",onBars);// the list changes when a filter is applied or the CMS changes: lay out again\nconst mo=new MutationObserver(records=>{const list=st.list;for(const r of records){if(!list||!list.isConnected||r.target===list||r.target.contains(list)){later();return;}}});root.querySelectorAll(\"[data-wg-copy]\").forEach(c=>mo.observe(c,{childList:true,subtree:true}));// the categories' list: a name added, renamed or deleted in the CMS rebuilds the chips\nconst mc=new MutationObserver(()=>{window.clearTimeout(st.catsT);st.catsT=window.setTimeout(()=>{if(st.view!==\"list\")return;buildList();place(true);},60);});if(catsRef.current)mc.observe(catsRef.current,{childList:true,subtree:true,characterData:true});// images whose size was unknown at first\nconst onLoad=e=>{const t=e.target;if(t&&(t.tagName===\"IMG\"||t.tagName===\"VIDEO\"))later();};root.addEventListener(\"load\",onLoad,true);root.addEventListener(\"loadedmetadata\",onLoad,true);return()=>{window.clearTimeout(timer);window.clearTimeout(st.catsT);ro.disconnect();mo.disconnect();mc.disconnect();if(vv)vv.removeEventListener(\"resize\",onBars);root.removeEventListener(\"load\",onLoad,true);root.removeEventListener(\"loadedmetadata\",onLoad,true);};},[collect,copies]);// pointer, wheel, keys, focus\nReact.useEffect(()=>{const root=rootRef.current;if(!root||isCanvas)return;const st=S.current;const THRESHOLD=6;// a finger moves a little even in a tap: up to 10 px is still a tap (as phones count it), and the wall or the\n// list only starts to follow the finger beyond that\nconst slop=e=>e.pointerType===\"mouse\"?THRESHOLD:10;// opens a tile's own link from code. Framer opens its links on a press (pointer down + up) on phones and on a\n// click on computers, so it gets both; only one navigation follows (tested live with both identities)\nconst openLink=a=>{const r=a.getBoundingClientRect();const o={bubbles:true,cancelable:true,composed:true,isPrimary:true,pointerId:77,pointerType:\"touch\",button:0,buttons:1,clientX:r.left+r.width/2,clientY:r.top+r.height/2};try{a.dispatchEvent(new PointerEvent(\"pointerdown\",o));a.dispatchEvent(new PointerEvent(\"pointerup\",{...o,buttons:0}));}catch(err){}a.click();};// a point on screen in the wall's own px (the page may be scaled, e.g. in a preview)\nconst rootPoint=(x,y)=>{const r=root.getBoundingClientRect();const k=root.offsetWidth?r.width/root.offsetWidth:1;return{x:(x-r.left)/k,y:(y-r.top)/k};};const onDown=e=>{if(e.button!==0&&e.pointerType===\"mouse\")return;// the press openLink sends a link is not a new touch on the wall\nif(!e.isTrusted)return;const tg=e.target;// a finger's tap is recognised here (see onUp): browsers drop the click of the first tap after a\n// finger has dragged the wall or the list, so taps must not depend on it\n// (a tap that stops the wall or the list while it still glides only stops it, as on any phone)\nst.tap=e.pointerType!==\"mouse\"&&(!st.touches.size||e.pointerType!==\"touch\")?{id:e.pointerId,x:e.clientX,y:e.clientY,t0:performance.now(),target:tg,moving:Math.hypot(st.vx||0,st.vy||0)>2}:null;// the category chips are not a place to grab the list (on phones the chips scroll sideways)\nif(tg&&tg.closest&&tg.closest(\"[data-wg-chips]\"))return;if(e.pointerType===\"touch\"){st.touches.set(e.pointerId,{x:e.clientX,y:e.clientY});// a second finger: pinch to zoom (it takes over from the drag the first finger began)\nif(st.touches.size===2&&st.view!==\"list\"&&st.zMin<.999){const[a,b]=Array.from(st.touches.values());const m=rootPoint((a.x+b.x)/2,(a.y+b.y)/2);st.pinch={d0:Math.max(10,Math.hypot(a.x-b.x,a.y-b.y)),s0:st.zs,mx:m.x,my:m.y};st.zt=st.zs;st.down=null;st.dragging=false;root.removeAttribute(\"data-wg-dragging\");st.vx=st.vy=st.px=st.py=0;setHover(null);setHint(false);st.lastInput=performance.now();kick();return;}if(st.pinch)return;}st.down={id:e.pointerId,x:e.clientX,y:e.clientY,lx:e.clientX,ly:e.clientY,lt:performance.now()};st.vx=0;st.vy=0;st.lastInput=performance.now();if(e.pointerType!==\"mouse\")aim(e);kick();};// the light follows a mouse anywhere over the wall (also under the panels), a finger while it is down\nconst aim=e=>{if(!lightRef.current)return;const r=root.getBoundingClientRect();const sx=root.offsetWidth?r.width/root.offsetWidth:1;const inside=e.clientX>=r.left&&e.clientX<=r.right&&e.clientY>=r.top&&e.clientY<=r.bottom;st.lightTarget=inside?{x:(e.clientX-r.left)/sx,y:(e.clientY-r.top)/sx}:null;kick();};const onOut=e=>{if(e.relatedTarget||e.pointerType!==\"mouse\"||!st.lightTarget)return;st.lightTarget=null;kick();};const onMove=e=>{if(e.pointerType===\"touch\"&&st.touches.has(e.pointerId)){st.touches.set(e.pointerId,{x:e.clientX,y:e.clientY});if(st.pinch&&st.touches.size>=2){// the fingers' middle carries the wall, their distance zooms it\nconst[a,b]=Array.from(st.touches.values());const m=rootPoint((a.x+b.x)/2,(a.y+b.y)/2);const P=st.pinch;st.ox+=(m.x-P.mx)/st.zs;st.oy+=(m.y-P.my)/st.zs;P.mx=m.x;P.my=m.y;st.zc=m;const s=clamp(P.s0*Math.hypot(a.x-b.x,a.y-b.y)/P.d0,st.zMin,1);zoomTo(s);st.zt=s;announceZoom();st.lastInput=performance.now();kick();return;}}if(e.pointerType===\"mouse\"||st.down)aim(e);// a finger that moves is no longer a tap\nif(st.tap&&st.tap.id===e.pointerId&&Math.hypot(e.clientX-st.tap.x,e.clientY-st.tap.y)>slop(e))st.tap=null;const d=st.down;// the \"View\" label follows the cursor over a tile\nif(e.pointerType===\"mouse\"){st.mouse=root.contains(e.target)?{x:e.clientX,y:e.clientY}:null;const item=e.target.closest?e.target.closest(\"[data-wg-item]\"):null;setHover(item&&!st.dragging?item:null);const label=labelRef.current;if(label){const r=root.getBoundingClientRect();const sx=root.offsetWidth?r.width/root.offsetWidth:1;label.style.translate=((e.clientX-r.left)/sx+14).toFixed(1)+\"px \"+((e.clientY-r.top)/sx+14).toFixed(1)+\"px\";}}if(!d||d.id!==e.pointerId)return;const dx=e.clientX-d.lx;const dy=e.clientY-d.ly;if(!st.dragging&&Math.hypot(e.clientX-d.x,e.clientY-d.y)>slop(e)){st.dragging=true;root.setAttribute(\"data-wg-dragging\",\"\");setHover(null);try{root.setPointerCapture(e.pointerId);}catch(err){}setHint(false);}if(st.dragging){const now=performance.now();const dt=Math.max(1,now-d.lt)/16.667;// zoomed out, a screen px covers more of the wall\nconst zs=st.view===\"list\"?1:st.zs;if(st.view===\"list\")st.lsy+=dy;else{st.ox+=dx/zs;st.oy+=dy/zs;}st.vx=st.vx*.6+dx/zs/dt*.4;st.vy=st.vy*.6+dy/zs/dt*.4;d.lt=now;st.lastInput=now;}d.lx=e.clientX;d.ly=e.clientY;};const onUp=e=>{if(!e.isTrusted)return;// a finger's tap (short, hardly moved, one finger): act on it here\nconst tap=st.tap;st.tap=null;if(tap&&tap.id===e.pointerId&&e.type===\"pointerup\"&&!tap.moving&&!st.pinch&&!st.dragging&&performance.now()-tap.t0<700)onTap(tap.target,tap.x,tap.y);if(e.pointerType===\"touch\"){st.touches.delete(e.pointerId);if(st.pinch){// the pinch ends with the second finger; no tap, no drag from what is left\nif(st.touches.size<2){st.pinch=null;st.suppress=true;window.setTimeout(()=>st.suppress=false,0);st.lastInput=performance.now();kick();}return;}}const d=st.down;if(!d||d.id!==e.pointerId)return;if(st.dragging){st.suppress=true;window.setTimeout(()=>st.suppress=false,0);if(performance.now()-d.lt>80){st.vx=0;st.vy=0;}}st.dragging=false;st.down=null;root.removeAttribute(\"data-wg-dragging\");st.lastInput=performance.now();if(e.pointerType!==\"mouse\")st.lightTarget=null;kick();};// a tap opens what it landed on: a chip or the category button, a list row (its tile's page) or a tile;\n// the browser's own click, if it still comes, is then left out (see onClick)\nconst onTap=(target,x,y)=>{if(!target||!target.closest||!root.contains(target))return;const btn=target.closest(\"[data-wg-chips] button\");if(btn){st.tapAt=performance.now();btn.click();return;}const openRow=i=>{const it=st.listL&&st.listL.base[i];const a=it?linkOf(it.el):null;if(!a)return false;st.tapAt=performance.now();// the thumbnail grows into the page's cover (named before Framer starts the page effect)\nnameForMorph(it.el);openLink(a);return true;};const row=target.closest(\"[data-wg-row]\");if(row){openRow(Number(row.getAttribute(\"data-wg-row\")));return;}// in the list a tap opens the row it landed on by its place, whatever the browser hit-tested under the\n// finger (Safari on iPhone can hand the tap to the thumbnail or to the wall itself)\nif(st.view===\"list\"&&st.listL&&x!==undefined&&y!==undefined){const LL=st.listL;const pt=rootPoint(x,y);const i=Math.floor((pt.y-LL.top-st.lsy)/LL.rowH);if(pt.x>=LL.x0&&pt.x<=LL.x0+LL.w&&i>=0&&i<LL.base.length&&openRow(i))return;if(st.view===\"list\")return;}const item=target.closest(\"[data-wg-item]\");const a=item?linkOf(item):null;if(!item||!a)return;st.tapAt=performance.now();nameForMorph(item);a.click();};const onClick=e=>{// the browser's click of a tap already acted on (the click that tap sent itself is not trusted)\nif(e.isTrusted&&st.tapAt&&performance.now()-st.tapAt<800){e.preventDefault();e.stopPropagation();return;}if(st.suppress){e.preventDefault();e.stopPropagation();st.suppress=false;return;}const o=opts.current;// a list row acts for its tile: the tile's own link (its page)\nconst row=e.target.closest?e.target.closest(\"[data-wg-row]\"):null;if(row&&root.contains(row)){if(e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;const it=st.listL&&st.listL.base[Number(row.getAttribute(\"data-wg-row\"))];const a=it?linkOf(it.el):null;if(!it||!a)return;e.preventDefault();e.stopPropagation();nameForMorph(it.el);openLink(a);return;}// a plain click on a tile: its own link opens the page, and the tile grows into the page's cover on\n// the way (a click with a modifier key just opens the page, e.g. in a new tab)\nif(e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.defaultPrevented)return;const item=e.target.closest?e.target.closest(\"[data-wg-item]\"):null;if(!item||!root.contains(item))return;if(!(item.matches(\"a[href]\")||item.querySelector(\"a[href]\")))return;nameForMorph(item);};const onWheel=e=>{const o=opts.current;const unit=e.deltaMode===1?16:e.deltaMode===2?st.height:1;// Ctrl / ⌘ + wheel, and a trackpad pinch (browsers send it as one): zoom around the cursor.\n// Without zoom it stays the browser's own page zoom.\nif((e.ctrlKey||e.metaKey)&&st.view!==\"list\"){if(st.zMin<.999){e.preventDefault();zoomRequest(st.zt*Math.exp(-e.deltaY*unit*.0022),rootPoint(e.clientX,e.clientY));}return;}if(o.motion.wheel!==\"pan\"&&st.view!==\"list\")return;e.preventDefault();let dx=e.deltaX*unit;let dy=e.deltaY*unit;if(e.shiftKey&&!dx){dx=dy;dy=0;}if(st.view===\"list\")st.py-=(dy||dx)*o.motion.wheelSpeed;else{st.px-=dx*o.motion.wheelSpeed/st.zs;st.py-=dy*o.motion.wheelSpeed/st.zs;}st.lastInput=performance.now();setHint(false);kick();};const onKey=e=>{const o=opts.current;if(!o.motion.keyboard||e.defaultPrevented||e.altKey||e.metaKey||e.ctrlKey)return;const t=e.target;if(t&&(t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName)))return;const listing=st.view===\"list\";// − / + step the zoom (out to the farthest, back in to 1), 0 resets it; Ctrl / ⌘ with them\n// stays the browser's own page zoom\nif(!listing&&(e.key===\"-\"||e.key===\"_\"||e.key===\"+\"||e.key===\"=\"||e.key===\"0\")){if(st.zMin>=.999)return;const levels=[1,(1+st.zMin)/2,st.zMin];let t=1;if(e.key===\"-\"||e.key===\"_\"){const out=levels.find(l=>l<st.zt-.01);t=out===undefined?st.zMin:out;}else if(e.key!==\"0\"){const up=levels.slice().reverse().find(l=>l>st.zt+.01);t=up===undefined?1:up;}e.preventDefault();zoomRequest(t,null);return;}const step=Math.round(st.height*.35/(listing?1:st.zs));let dx=0;let dy=0;if(e.key===\"ArrowLeft\"&&!listing)dx=step;else if(e.key===\"ArrowRight\"&&!listing)dx=-step;else if(e.key===\"ArrowUp\")dy=step;else if(e.key===\"ArrowDown\")dy=-step;else if(listing&&e.key===\"PageUp\")dy=st.height*.8;else if(listing&&e.key===\"PageDown\")dy=-st.height*.8;else return;e.preventDefault();st.px+=dx;st.py+=dy;st.lastInput=performance.now();kick();};// a tile reached with Tab slides fully into view\nconst onFocus=e=>{// a row reached with Tab scrolls fully into view\nconst row=e.target.closest(\"[data-wg-row]\");if(row&&st.view===\"list\"&&st.listL){const LL=st.listL;const top=LL.top+Number(row.getAttribute(\"data-wg-row\"))*LL.rowH+st.lsy;if(top<LL.top)st.py+=LL.top-top;else if(top+LL.rowH>st.height-LL.bottom)st.py+=st.height-LL.bottom-(top+LL.rowH);st.lastInput=performance.now();kick();return;}const item=e.target.closest(\"[data-wg-item]\");if(!item)return;const it=st.items.find(x=>x.el===item);if(!it||it.sx===undefined)return;// the part of the wall on screen, in the wall's own px (larger when zoomed out)\nconst z=st.zs;const cx=st.width/2;const cy=st.height/2;const pad=48/z;const L=cx-cx/z+pad;const R=cx+cx/z-pad;const T=cy-cy/z+pad;const B=cy+cy/z-pad;let dx=0;let dy=0;if(it.sx<L)dx=L-it.sx;else if(it.sx+st.layout.colW>R)dx=R-(it.sx+st.layout.colW);if(it.sy<T)dy=T-it.sy;else if(it.sy+it.t.h>B)dy=B-(it.sy+it.t.h);st.px+=dx;st.py+=dy;st.lastInput=performance.now();kick();};const onLeave=()=>{st.mouse=null;setHover(null);};const noDrag=e=>e.preventDefault();// Safari's trackpad pinch comes as gesture events (a finger pinch is handled by the pointers above)\nconst onGesture=e=>{if(st.zMin>=.999||st.view===\"list\")return;e.preventDefault();if(st.touches.size)return;if(e.type===\"gesturestart\")st.gs0=st.zt;else if(e.type===\"gesturechange\")zoomRequest((st.gs0||st.zt)*e.scale,rootPoint(e.clientX,e.clientY));};root.addEventListener(\"pointerdown\",onDown);window.addEventListener(\"pointermove\",onMove);window.addEventListener(\"pointerup\",onUp);window.addEventListener(\"pointercancel\",onUp);root.addEventListener(\"click\",onClick,true);root.addEventListener(\"wheel\",onWheel,{passive:false});root.addEventListener(\"focusin\",onFocus);root.addEventListener(\"pointerleave\",onLeave);root.addEventListener(\"dragstart\",noDrag);for(const g of[\"gesturestart\",\"gesturechange\",\"gestureend\"])root.addEventListener(g,onGesture);window.addEventListener(\"keydown\",onKey);window.addEventListener(\"pointerout\",onOut);return()=>{window.removeEventListener(\"pointerout\",onOut);root.removeEventListener(\"pointerdown\",onDown);window.removeEventListener(\"pointermove\",onMove);window.removeEventListener(\"pointerup\",onUp);window.removeEventListener(\"pointercancel\",onUp);root.removeEventListener(\"click\",onClick,true);root.removeEventListener(\"wheel\",onWheel);root.removeEventListener(\"focusin\",onFocus);root.removeEventListener(\"pointerleave\",onLeave);root.removeEventListener(\"dragstart\",noDrag);for(const g of[\"gesturestart\",\"gesturechange\",\"gestureend\"])root.removeEventListener(g,onGesture);window.removeEventListener(\"keydown\",onKey);window.cancelAnimationFrame(st.raf);st.running=false;};},[isCanvas]);const setHover=el=>{const st=S.current;if(st.hoverEl===el)return;if(st.hoverEl)st.hoverEl.removeAttribute(\"data-wg-hover\");st.hoverEl=el;const root=rootRef.current;if(el){el.setAttribute(\"data-wg-hover\",\"\");root&&root.setAttribute(\"data-wg-hovering\",\"\");}else root&&root.removeAttribute(\"data-wg-hovering\");if(!el)kick();};// ---------- read ahead: one project page's HTML is fetched once, which loads the page template's files\n// (see Instant open); a page on another site is left alone\nconst readAhead=href=>{const st=S.current;if(st.readAhead)return;st.readAhead=true;try{const u=new URL(href,window.location.href);if(u.origin!==window.location.origin)return;fetch(u.href,{credentials:\"same-origin\"}).then(r=>r.ok?r.text():\"\").then(html=>{if(html)preloadModules(new DOMParser().parseFromString(html,\"text/html\"));}).catch(()=>{});}catch(e){}};// what a list row shows comes from the tile itself: its link and its texts (the first one is the title)\nconst readTile=item=>{const a=item.matches(\"a[href]\")?item:item.querySelector(\"a[href]\");if(!a)return null;const img=item.querySelector(\"img\");const texts=Array.from(item.querySelectorAll(\"p,h1,h2,h3,h4,h5,h6\")).map(t=>(t.textContent||\"\").trim()).filter(Boolean);return{href:a.href,title:texts[0]||img&&img.alt||\"\",meta:texts.slice(1).join(\" \\xb7 \"),// every text of the tile, compared with the category names (wherever the tile shows its category)\nkeys:texts.map(catKey)};};// Canvas View: on the canvas the panel's Wall / Index switch picks the view, so the list and its category\n// filter can be checked while editing (a category added or removed shows at once). Never on the live site.\nReact.useEffect(()=>{if(!isCanvas)return;setView(props.canvasView===\"list\"?\"list\":\"wall\",true);},[isCanvas,props.canvasView]);// Wall | List: the View Switch (or any script) sends \"wallfolio:view\" with { view: \"list\" | \"wall\" };\n// the address's ?view=index (or list) opens the list straight away\nReact.useEffect(()=>{if(isCanvas)return;const fromUrl=()=>{const q=new URLSearchParams(window.location.search).get(\"view\");return q===\"index\"||q===\"list\"?\"list\":q===\"wall\"?\"wall\":null;};const first=fromUrl()||(opts.current.list&&opts.current.list.start===\"list\"?\"list\":null);if(first===\"list\")setView(\"list\",true);const onView=e=>{const v=e&&e.detail&&e.detail.view;setView(v===\"list\"||v===\"index\"?\"list\":\"wall\");};const onPop=()=>{const v=fromUrl();if(v)setView(v);};const onShuffle=()=>shuffle();// the View Switch's zoom button sends { to: \"out\" | \"in\" }, and asks for the state when it appears\nconst onZoom=e=>{const to=e&&e.detail&&e.detail.to;zoomRequest(to===\"in\"?1:S.current.zMin,null);};const onAsk=()=>announceZoom(true);window.addEventListener(\"wallfolio:view\",onView);window.addEventListener(\"wallfolio:shuffle\",onShuffle);window.addEventListener(\"wallfolio:zoom\",onZoom);window.addEventListener(\"wallfolio:zoom-ask\",onAsk);window.addEventListener(\"popstate\",onPop);announceZoom(true);return()=>{window.removeEventListener(\"wallfolio:view\",onView);window.removeEventListener(\"wallfolio:shuffle\",onShuffle);window.removeEventListener(\"wallfolio:zoom\",onZoom);window.removeEventListener(\"wallfolio:zoom-ask\",onAsk);window.removeEventListener(\"popstate\",onPop);window.clearTimeout(S.current.viewT);window.clearTimeout(S.current.shuffleT);};},[isCanvas]);// first visit hint\nReact.useEffect(()=>{if(isCanvas||!mobile.hint)return;let seen=false;try{seen=window.sessionStorage.getItem(\"wallfolio-hint\")===\"1\";window.sessionStorage.setItem(\"wallfolio-hint\",\"1\");}catch(e){}if(seen)return;const show=window.setTimeout(()=>setHint(true),900);const hide=window.setTimeout(()=>setHint(false),5200);return()=>{window.clearTimeout(show);window.clearTimeout(hide);};},[isCanvas,mobile.hint]);// ---------- list styles\nconst listClass=role=>\"framer-text framer-styles-preset-\"+LIST_STYLES[role].hash+\" \"+uid+\"-l\"+role;const listCss=()=>{const text=props.listText||\"#F2F2F2\";const muted=props.listMuted||\"#8C8C8C\";const line=props.listLine||\"rgba(255,255,255,0.09)\";const chip=props.listChip||\"rgba(255,255,255,0.08)\";const ease=\"cubic-bezier(.22,1,.36,1)\";const fbl=(role,color)=>{const s=LIST_STYLES[role];return R+\"-l\"+role+\"{display:block;--framer-font-family:Inter,Inter Placeholder,sans-serif;--framer-font-style:normal;--framer-font-weight:\"+s.weight+\";--framer-font-size:\"+s.size+\";--framer-line-height:\"+s.lh+\";--framer-letter-spacing:\"+s.ls+\";--framer-text-color:\"+color+\";--framer-text-alignment:left;--framer-text-transform:none;color:\"+color+\"!important;margin:0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\";};return R+\"-list{position:absolute;top:0;height:0;z-index:1;pointer-events:none}\"+R+\"-row{position:absolute;left:0;right:0;display:flex;align-items:center;gap:24px;box-sizing:border-box;padding-right:4px;text-decoration:none;border-bottom:1px solid \"+line+\";pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent;animation:\"+uid+\"-rowin .6s \"+ease+\" both;animation-delay:var(--d,0ms)}\"+R+\"-row:first-of-type{border-top:1px solid \"+line+\"}\"+R+\"-row[data-phone]{gap:14px}\"+\"@keyframes \"+uid+\"-rowin{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}\"+R+\"-rn{position:absolute;left:0;top:50%;translate:0 -50%;font-variant-numeric:tabular-nums}\"+R+\"-rt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}\"+R+\"-rc{flex:none;width:220px;transition:color .25s ease}\"+// the arrow shows on every row (quiet, like the meta), and turns to Text on the row in focus\nR+\"-ra{flex:none;color:\"+muted+\";transition:color .25s ease}\"+R+\"-row:focus-visible .\"+uid+\"-ra,\"+R+\"-row:hover .\"+uid+\"-ra{color:\"+text+\"}\"+R+\"-row:hover .\"+uid+\"-rc{color:\"+text+\"!important}\"+R+\"-row:focus-visible{outline:2px solid \"+text+\";outline-offset:-2px}\"+fbl(\"num\",muted)+fbl(\"title\",text)+fbl(\"meta\",muted)+// category chips: the View Switch's tabs (Label/S, a fill on hover and on the chosen one); on phones\n// one row that scrolls sideways\nR+\"-chips{position:absolute;left:0;right:0;display:flex;flex-wrap:wrap;gap:4px;pointer-events:auto;cursor:default;animation:\"+uid+\"-chipsin .45s ease both}\"+R+\"-chips[data-phone]{flex-wrap:nowrap;z-index:3}\"+\"@keyframes \"+uid+\"-chipsin{from{opacity:0}to{opacity:1}}\"+R+\"-chip{display:inline-flex;align-items:center;gap:6px;flex:none;min-height:29px;padding:7px 11px 8px;margin:0;border:0;border-radius:10px;background:transparent;cursor:pointer;transition:background-color .2s ease;-webkit-tap-highlight-color:transparent;font:inherit}\"+R+\"-chip:hover,\"+R+\"-chip[aria-pressed=true],\"+R+\"-pick{background:\"+chip+\"}\"+R+\"-chip:focus-visible{outline:2px solid \"+text+\";outline-offset:2px}\"+R+\"-chip .\"+uid+\"-lchip,\"+R+\"-chip .\"+uid+\"-lchipn{overflow:visible}\"+// the categories not chosen are quieter, so the chosen one stands out in both themes\nR+\"-chip[aria-pressed=false]:not(:hover) .\"+uid+\"-lchip{color:\"+muted+\"!important}\"+// the count on a filled chip (chosen, hover, the phone button) a step darker than Muted, which falls\n// below AA on the fill in the light theme; plain Text where color-mix is missing\nR+\"-chip:hover .\"+uid+\"-lchipn,\"+R+\"-chip[aria-pressed=true] .\"+uid+\"-lchipn,\"+R+\"-pick .\"+uid+\"-lchipn{color:\"+text+\"!important;color:color-mix(in srgb,\"+text+\" 30%,\"+muted+\")!important}\"+// phones: the category button and its card (it unfolds from the top, nothing slides)\nR+\"-pick{min-height:32px;padding:8px 10px 9px 12px}\"+R+\"-chev{flex:none;color:\"+muted+\";transition:rotate .25s ease}\"+R+\"-pick[aria-expanded=true] .\"+uid+\"-chev{rotate:180deg}\"+R+\"-menu{position:absolute;left:0;top:calc(100% + 6px);display:flex;flex-direction:column;gap:2px;min-width:220px;max-width:100%;max-height:60vh;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:6px;box-sizing:border-box;border-radius:16px;background:\"+(props.listMenu||\"#171717\")+\";box-shadow:inset 0 0 0 1px \"+line+\";animation:\"+uid+\"-menuin .28s cubic-bezier(.22,1,.36,1) both}\"+\"@keyframes \"+uid+\"-menuin{from{clip-path:inset(0 0 100% 0 round 16px);opacity:0}to{clip-path:inset(0 0 0 0 round 16px);opacity:1}}\"+R+\"-mi{justify-content:space-between;width:100%;min-height:40px;padding:10px 12px 11px}\"+R+\"[data-wg-leaving] .\"+uid+\"-chips{pointer-events:none}\"+fbl(\"chip\",text)+fbl(\"chipn\",muted)+R+\"[data-wg-leaving] [data-wg-item]{opacity:0!important;scale:.94!important;transition:opacity .3s ease,scale .34s \"+ease+\"!important}\"+R+\"[data-wg-leaving] .\"+uid+\"-row{opacity:0;transition:opacity .25s ease}\"+// Hover Focus: the other rows and thumbnails step back\nR+\"-row{transition:opacity .3s ease}\"+R+\":not([data-wg-leaving])[data-wg-rows-on] .\"+uid+\"-row:not([data-on]){opacity:.42}\"+R+\"[data-wg-list]:not([data-wg-leaving])[data-wg-rows-on] [data-wg-item]:not([data-wg-row-on]){filter:opacity(.42)}\"+R+\"[data-wg-list]{cursor:default}\"+R+\"[data-wg-list] .\"+uid+\"-label,\"+R+\"[data-wg-list] .\"+uid+\"-hint{display:none}\"+R+\"[data-wg-list] .\"+uid+\"-light{opacity:0!important;transition:opacity .3s ease}\"+\"@media (prefers-reduced-motion: reduce){\"+R+\"-row,\"+R+\"-chips,\"+R+\"-menu{animation:none}}\";};// ---------- render\nconst fade=Math.max(0,effects.edgeFade);const mask=fade>0?\"linear-gradient(to right, transparent 0px, #000 \"+fade+\"px, #000 calc(100% - \"+fade+\"px), transparent 100%), linear-gradient(to bottom, transparent 0px, #000 \"+fade+\"px, #000 calc(100% - \"+fade+\"px), transparent 100%)\":\"none\";const R=\".\"+uid;const fb=(name,f,color)=>\".\"+uid+\"-\"+name+\"{--framer-font-family:Inter,Inter Placeholder,sans-serif;--framer-font-style:normal;--framer-font-weight:\"+f.weight+\";--framer-font-size:\"+f.size+\";--framer-line-height:\"+f.lh+\";--framer-letter-spacing:\"+f.ls+\";--framer-text-color:\"+color+\";--framer-text-alignment:left;--framer-text-transform:none}\";const css=R+\"{position:relative;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;-webkit-tap-highlight-color:transparent}\"+R+\"[data-wg-dragging],\"+R+\"[data-wg-dragging] *{cursor:grabbing!important}\"+R+\" img{-webkit-user-drag:none;user-drag:none}\"+R+\" .framer-text{margin:0!important}\"+R+\":not([data-wg-ready]) [data-wg-copy]{opacity:0}\"+R+\" [data-wg-copy]{pointer-events:none}\"+R+\" [data-wg-copy]:not([data-wg-placed]){opacity:0}\"+R+\" [data-wg-item]{pointer-events:auto;position:absolute!important;left:0!important;top:0!important;right:auto!important;bottom:auto!important;margin:0!important;flex:none!important;transition:opacity .7s cubic-bezier(.22,1,.36,1),scale .7s cubic-bezier(.22,1,.36,1),filter .35s ease}\"+// the tile inside each slot fills it, whatever size the Tile instance in the Collection List has (an\n// auto-sized instance would keep its own 280 × 360 and the tiles would overlap)\nR+\" [data-wg-item]>*{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important}\"+R+\" [data-wg-item]:not([data-wg-in]){opacity:0;scale:\"+(effects.reveal?.94:1)+\"}\"+R+\"[data-wg-settled] [data-wg-item]{transition:scale .45s cubic-bezier(.22,1,.36,1),filter .35s ease}\"+R+\"[data-wg-fading] [data-wg-item]{transition:opacity .5s cubic-bezier(.22,1,.36,1),scale .5s cubic-bezier(.22,1,.36,1),filter .35s ease!important}\"+R+\"[data-wg-swap] [data-wg-item]{opacity:0!important;scale:.97;transition:none!important}\"+R+\" [data-wg-item][data-wg-off]{opacity:0;pointer-events:none}\"+R+\" [data-wg-dupe][data-wg-off]{visibility:hidden}\"+R+\" [data-wg-item][data-wg-hover]{scale:\"+hover.scale+\";z-index:2}\"+(hover.dim>0?R+\"[data-wg-hovering]:not([data-wg-dragging]) [data-wg-item]:not([data-wg-hover]){filter:opacity(\"+(1-hover.dim)+\")}\":\"\")+R+\"-label{position:absolute;left:0;top:0;z-index:3;pointer-events:none;padding:6px 10px 7px;border-radius:999px;background:\"+props.labelFill+\";opacity:0;scale:.85;transition:opacity .2s ease,scale .25s cubic-bezier(.22,1,.36,1);white-space:nowrap}\"+R+\"[data-wg-hovering]:not([data-wg-dragging]) .\"+uid+\"-label{opacity:1;scale:1}\"+R+\"-hint{position:absolute;left:50%;top:50%;z-index:3;pointer-events:none;padding:9px 14px 10px;border-radius:999px;background:\"+props.hintFill+\";translate:-50% -40%;opacity:0;transition:opacity .4s ease,translate .5s cubic-bezier(.22,1,.36,1);white-space:nowrap}\"+R+\"-hint[data-on=true]{opacity:1;translate:-50% -50%}\"+R+\"-own{display:block;position:relative;overflow:hidden;background:\"+props.tileFill+\";border-radius:\"+layout.radius+\"px;text-decoration:none}\"+R+\"-own img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}\"+R+\"-cap{position:absolute;left:0;right:0;bottom:0;padding:28px 12px 11px;background:linear-gradient(0deg,rgba(0,0,0,.55),rgba(0,0,0,0));opacity:0;translate:0 6px;transition:opacity .3s ease,translate .4s cubic-bezier(.22,1,.36,1)}\"+R+\"-own:hover .\"+uid+\"-cap,\"+R+\"-own:focus-visible .\"+uid+\"-cap{opacity:1;translate:0 0}\"+(lightOn?R+\"-light{position:absolute;left:-50%;top:-50%;width:200%;height:200%;z-index:2;pointer-events:none;opacity:\"+clamp(depth.light,0,1)+\";background:radial-gradient(circle at 50% 50%,transparent 0px,transparent \"+Math.round(Math.max(40,depth.lightSize||560)*.18)+\"px,\"+(props.shade||\"#000000\")+\" \"+Math.round(Math.max(40,depth.lightSize||560))+\"px)}\":\"\")+listCss()+R+\"-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center}\"+\"@media (prefers-reduced-motion: reduce){\"+R+\" [data-wg-item]{transition:none!important}\"+R+\"-hint,\"+R+\"-label{transition:none}}\"+fb(\"lb\",FALLBACK.label,props.labelText)+fb(\"hn\",FALLBACK.label,props.hintText)+fb(\"tt\",FALLBACK.title,props.captionText)+fb(\"mt\",FALLBACK.meta,props.captionText)+fb(\"em\",FALLBACK.meta,props.labelFill);// one class name: a short hash of this style text, so it is the same on the server and in the browser;\n// walls with the same settings share it, walls with other settings (another breakpoint) get their own\nlet h=5381;for(let i=0;i<css.length;i++)h=(h<<5)+h+css.charCodeAt(i)|0;uid=\"wfwg\"+(h>>>0).toString(36);const styleText=css.split(CLS).join(uid);const renderOwn=()=>/*#__PURE__*/_jsx(\"div\",{\"data-wg-own-list\":\"\",children:images.map((im,i)=>{const img=im.image||{};const inner=/*#__PURE__*/_jsxs(_Fragment,{children:[img.src?/*#__PURE__*/_jsx(\"img\",{src:img.src,srcSet:img.srcSet,alt:img.alt||im.title||\"\",draggable:false,loading:\"lazy\",decoding:\"async\",width:im.width||undefined,height:im.height||undefined}):null,im.title||im.category?/*#__PURE__*/_jsxs(\"div\",{className:uid+\"-cap\",children:[im.title?/*#__PURE__*/_jsx(\"p\",{className:textClass(\"title\",uid+\"-tt\"),children:im.title}):null,im.category?/*#__PURE__*/_jsx(\"p\",{className:textClass(\"meta\",uid+\"-mt\"),style:{opacity:.72},children:im.category}):null]}):null]});return im.link?/*#__PURE__*/_jsx(\"a\",{className:uid+\"-own\",href:im.link,draggable:false,children:inner},i):/*#__PURE__*/_jsx(\"div\",{className:uid+\"-own\",children:inner},i);})});const body=slot?slot:manual?renderOwn():null;const layers=[];if(body){for(let i=0;i<copies;i++){layers.push(/*#__PURE__*/_jsx(\"div\",{\"data-wg-copy\":i,\"aria-hidden\":i>0?true:undefined,style:{position:\"absolute\",inset:0},children:body},i));}}return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:uid,style:{...props.style,width:\"100%\",height:\"100%\"},\"data-lenis-prevent\":\"\",children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:styleText}}),effects.motionBlur?/*#__PURE__*/_jsx(\"svg\",{width:\"0\",height:\"0\",style:{position:\"absolute\"},\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"filter\",{id:fid+\"-blur\",children:/*#__PURE__*/_jsx(\"feGaussianBlur\",{ref:blurRef,stdDeviation:\"0 0\"})})}):null,/*#__PURE__*/_jsx(\"div\",{ref:layerRef,style:{position:\"absolute\",inset:0,isolation:\"isolate\",transformOrigin:\"50% 50%\",WebkitMaskImage:mask,maskImage:mask,WebkitMaskComposite:\"source-in\",maskComposite:\"intersect\"},children:/*#__PURE__*/_jsx(\"div\",{ref:zoomRef,style:{position:\"absolute\",inset:0,transformOrigin:\"50% 50%\"},children:layers})}),catSlot?/*#__PURE__*/_jsx(\"div\",{ref:catsRef,\"data-wg-cats\":\"\",\"aria-hidden\":\"true\",style:{display:\"none\"},children:catSlot}):null,rows?// as tall as its rows (a 0-high moved layer leaves Safari unsure what is under a finger); it lets touches\n// through, only the rows and chips take them\n/*#__PURE__*/_jsxs(\"div\",{ref:listRef,className:uid+\"-list\",style:{left:rows.x0,width:rows.w,height:rows.top+rows.items.length*rows.rowH+2,translate:\"0px \"+(S.current.lsy||0).toFixed(1)+\"px\"},children:[rows.bar&&!rows.phone?/*#__PURE__*/_jsx(\"div\",{className:uid+\"-chips\",\"data-wg-chips\":\"\",role:\"group\",\"aria-label\":\"Categories\",style:{top:rows.bar.top},children:rows.bar.chips.map(c=>/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:uid+\"-chip\",\"aria-pressed\":rows.bar.cat===c.key,onClick:()=>setCat(c.key),children:[/*#__PURE__*/_jsx(\"span\",{className:listClass(\"chip\"),children:c.name}),rows.bar.counts?/*#__PURE__*/_jsx(\"span\",{className:listClass(\"chipn\"),children:c.n}):null]},c.key||\"all\"))}):null,rows.bar&&rows.phone?(()=>{// phones: one button with the chosen category; the categories open below it in a\n// small card (however many there are)\nconst cur=rows.bar.chips.find(c=>c.key===rows.bar.cat)||rows.bar.chips[0];return /*#__PURE__*/_jsxs(\"div\",{ref:pickRef,className:uid+\"-chips\",\"data-wg-chips\":\"\",\"data-phone\":\"\",style:{top:rows.bar.top},children:[/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:uid+\"-chip \"+uid+\"-pick\",\"aria-haspopup\":\"true\",\"aria-expanded\":menu,\"aria-label\":\"Category: \"+cur.name,onClick:()=>setMenu(!menu),children:[/*#__PURE__*/_jsx(\"span\",{className:listClass(\"chip\"),children:cur.name}),rows.bar.counts?/*#__PURE__*/_jsx(\"span\",{className:listClass(\"chipn\"),children:cur.n}):null,/*#__PURE__*/_jsx(\"svg\",{className:uid+\"-chev\",width:\"12\",height:\"12\",viewBox:\"0 0 12 12\",fill:\"none\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M3 4.5 6 7.5 9 4.5\",stroke:\"currentColor\",strokeWidth:\"1.4\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})]}),menu?/*#__PURE__*/_jsx(\"div\",{className:uid+\"-menu\",role:\"group\",\"aria-label\":\"Categories\",children:rows.bar.chips.map(c=>/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:uid+\"-chip \"+uid+\"-mi\",\"aria-pressed\":rows.bar.cat===c.key,onClick:()=>{setMenu(false);setCat(c.key);},children:[/*#__PURE__*/_jsx(\"span\",{className:listClass(\"chip\"),children:c.name}),rows.bar.counts?/*#__PURE__*/_jsx(\"span\",{className:listClass(\"chipn\"),children:c.n}):null]},c.key||\"all\"))}):null]});})():null,rows.items.map((r,i)=>/*#__PURE__*/_jsxs(\"a\",{\"data-wg-row\":i,\"data-phone\":rows.phone?\"\":undefined,className:uid+\"-row\",href:r.href||undefined,draggable:false,onPointerEnter:focusOn?e=>e.pointerType!==\"touch\"&&rowOn(i):undefined,onPointerLeave:focusOn?rowOff:undefined,onFocus:focusOn?e=>{let kb=false;try{kb=e.currentTarget.matches(\":focus-visible\");}catch(err){}if(kb)rowOn(i);}:undefined,onBlur:focusOn?rowOff:undefined,style:{top:rows.top+i*rows.rowH,height:rows.rowH,paddingLeft:rows.num+rows.thumbW+(rows.phone?14:24),[\"--d\"]:Math.min(i,14)*30+\"ms\"},children:[rows.num?/*#__PURE__*/_jsx(\"span\",{className:listClass(\"num\")+\" \"+uid+\"-rn\",\"aria-hidden\":\"true\",children:String(r.n).padStart(2,\"0\")}):null,/*#__PURE__*/_jsxs(\"span\",{className:uid+\"-rt\",children:[/*#__PURE__*/_jsx(\"span\",{className:listClass(\"title\"),children:r.title}),rows.phone&&r.meta?/*#__PURE__*/_jsx(\"span\",{className:listClass(\"num\")+\" \"+uid+\"-rm\",children:r.meta}):null]}),!rows.phone&&r.meta?/*#__PURE__*/_jsx(\"span\",{className:listClass(\"meta\")+\" \"+uid+\"-rc\",children:r.meta}):null,/*#__PURE__*/_jsx(\"svg\",{className:uid+\"-ra\",width:\"16\",height:\"16\",viewBox:\"0 0 12 12\",fill:\"none\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M3.5 8.5 8.5 3.5M4.5 3.5h4v4\",stroke:\"currentColor\",strokeWidth:\"1.3\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})]},r.key))]}):null,lightOn?/*#__PURE__*/_jsx(\"div\",{ref:lightRef,className:uid+\"-light\",\"aria-hidden\":\"true\"}):null,!body?/*#__PURE__*/_jsx(\"div\",{className:uid+\"-empty\",children:/*#__PURE__*/_jsx(\"p\",{className:textClass(\"meta\",uid+\"-em\"),children:\"Connect a Collection List to Content, or add Images in the properties panel.\"})}):null,hover.label?/*#__PURE__*/_jsx(\"div\",{ref:labelRef,className:uid+\"-label\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"p\",{className:textClass(\"label\",uid+\"-lb\"),children:hover.label})}):null,mobile.hint?/*#__PURE__*/_jsx(\"div\",{className:uid+\"-hint\",\"data-on\":hint?\"true\":\"false\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"p\",{className:textClass(\"label\",uid+\"-hn\"),children:mobile.hint})}):null]});}addPropertyControls(WallGrid,{content:{type:ControlType.Slot,title:\"Content\",maxCount:1},categories:{type:ControlType.Slot,title:\"Categories\",maxCount:1,description:\"Optional: a Collection List of the categories (one text, the name, per item). The list view then shows them as filters; a category without pieces is left out.\"},canvasView:{type:ControlType.Enum,title:\"Canvas View\",options:[\"wall\",\"list\"],optionTitles:[\"Wall\",\"Index\"],displaySegmentedControl:true,defaultValue:\"wall\",description:\"Only on the canvas: see the Index (the list and its category filter) while you edit. The live site opens as set in List → Opens As.\"},images:{type:ControlType.Array,title:\"Images\",description:\"Used when no Collection List is connected.\",control:{type:ControlType.Object,controls:{image:{type:ControlType.ResponsiveImage,title:\"Image\"},title:{type:ControlType.String,title:\"Title\",defaultValue:\"\"},category:{type:ControlType.String,title:\"Category\",defaultValue:\"\"},link:{type:ControlType.Link,title:\"Link\"}}},defaultValue:[]},layout:{type:ControlType.Object,title:\"Layout\",icon:\"object\",controls:{mode:{type:ControlType.Enum,title:\"Columns\",options:[\"fit\",\"fixed\"],optionTitles:[\"Fit\",\"Fixed\"],displaySegmentedControl:true,defaultValue:\"fit\"},columns:{type:ControlType.Number,title:\"Desktop\",min:2,max:10,step:1,displayStepper:true,defaultValue:5,hidden:p=>p.mode===\"fixed\"},tabletColumns:{type:ControlType.Number,title:\"Tablet\",min:2,max:8,step:1,displayStepper:true,defaultValue:3,hidden:p=>p.mode===\"fixed\"},columnWidth:{type:ControlType.Number,title:\"Width\",min:120,max:600,step:10,unit:\"px\",defaultValue:280,hidden:p=>p.mode!==\"fixed\"},gap:{type:ControlType.Number,title:\"Gap\",min:0,max:48,step:1,unit:\"px\",defaultValue:14},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:32,step:1,unit:\"px\",defaultValue:14,description:\"Used by the Images list. Collection tiles keep their own radius.\"},desync:{type:ControlType.Number,title:\"Desync\",min:0,max:1,step:.05,defaultValue:.6},order:{type:ControlType.Enum,title:\"Order\",options:[\"list\",\"shuffle\"],optionTitles:[\"As listed\",\"Shuffle\"],displaySegmentedControl:true,defaultValue:\"list\"},seed:{type:ControlType.Number,title:\"Seed\",min:1,max:999,step:1,displayStepper:true,defaultValue:7,description:\"Change it to reshuffle the wall.\"}}},motion:{type:ControlType.Object,title:\"Motion\",icon:\"interaction\",controls:{friction:{type:ControlType.Number,title:\"Glide\",min:.8,max:.98,step:.01,defaultValue:.93},wheel:{type:ControlType.Enum,title:\"Wheel\",options:[\"pan\",\"page\"],optionTitles:[\"Pan wall\",\"Scroll page\"],displaySegmentedControl:true,defaultValue:\"pan\"},wheelSpeed:{type:ControlType.Number,title:\"Wheel Speed\",min:.2,max:3,step:.1,defaultValue:1,hidden:p=>p.wheel!==\"pan\"},keyboard:{type:ControlType.Boolean,title:\"Arrow Keys\",defaultValue:true},zoom:{type:ControlType.Number,title:\"Zoom Out\",min:.4,max:1,step:.05,defaultValue:.6,description:\"How far visitors can zoom out to see more of the wall: pinch, Ctrl/⌘ + wheel, or the − / + keys (0 resets). 1 turns zoom off.\"},drift:{type:ControlType.Number,title:\"Drift\",min:0,max:80,step:1,unit:\"px/s\",defaultValue:14},angle:{type:ControlType.Number,title:\"Direction\",min:0,max:359,step:1,unit:\"\\xb0\",defaultValue:250,description:\"The way the wall drifts and glides in on load (270\\xb0 = straight up).\"},pauseOnHover:{type:ControlType.Boolean,title:\"Pause on Hover\",defaultValue:true,hidden:p=>!p.drift}}},hover:{type:ControlType.Object,title:\"Hover\",icon:\"effect\",controls:{scale:{type:ControlType.Number,title:\"Scale\",min:1,max:1.1,step:.005,defaultValue:1},dim:{type:ControlType.Number,title:\"Dim Others\",min:0,max:.8,step:.05,defaultValue:.55},label:{type:ControlType.String,title:\"Cursor Label\",defaultValue:\"View\"}}},effects:{type:ControlType.Object,title:\"Effects\",icon:\"effect\",controls:{edgeFade:{type:ControlType.Number,title:\"Edge Fade\",min:0,max:240,step:4,unit:\"px\",defaultValue:0},reveal:{type:ControlType.Boolean,title:\"Reveal\",defaultValue:true},opening:{type:ControlType.Enum,title:\"Opening\",options:[\"none\",\"iris\"],optionTitles:[\"None\",\"Iris\"],defaultValue:\"none\",displaySegmentedControl:true,description:\"Iris: on load the wall opens as a circle from its middle.\",hidden:p=>!p.reveal},glideIn:{type:ControlType.Number,title:\"Glide In\",min:0,max:600,step:10,unit:\"px\",defaultValue:260,description:\"On load the wall glides this far in the Direction set under Motion while it fades in, easing into the drift. 0 turns it off.\",hidden:p=>!p.reveal},glideTime:{type:ControlType.Number,title:\"Glide Time\",min:.4,max:6,step:.1,unit:\"s\",defaultValue:2.2,description:\"How long the glide takes: longer is softer.\",hidden:p=>!p.reveal||!p.glideIn},dragZoom:{type:ControlType.Number,title:\"Drag Zoom\",min:0,max:.1,step:.005,defaultValue:0},motionBlur:{type:ControlType.Boolean,title:\"Motion Blur\",defaultValue:false}}},depth:{type:ControlType.Object,title:\"3D\",icon:\"effect\",controls:{on:{type:ControlType.Boolean,title:\"3D Wall\",defaultValue:false,description:\"Bends the wall over a sphere, with a light that follows the cursor. Flat for visitors who prefer reduced motion.\"},curve:{type:ControlType.Number,title:\"Curve\",min:0,max:1,step:.05,defaultValue:.5,description:\"0 = flat tiles, only the light.\",hidden:p=>!p.on},light:{type:ControlType.Number,title:\"Light\",min:0,max:.9,step:.05,defaultValue:.65,description:\"How dark the wall gets away from the cursor. 0 = no light.\",hidden:p=>!p.on},lightSize:{type:ControlType.Number,title:\"Light Size\",min:160,max:1400,step:10,unit:\"px\",defaultValue:560,hidden:p=>!p.on||!p.light}}},list:{type:ControlType.Object,title:\"List\",icon:\"object\",controls:{start:{type:ControlType.Enum,title:\"Opens As\",options:[\"wall\",\"list\"],optionTitles:[\"Wall\",\"List\"],displaySegmentedControl:true,defaultValue:\"wall\",description:\"A View Switch set to Switch View moves between the wall and the list; ?view=index opens the list.\"},rowHeight:{type:ControlType.Number,title:\"Row Height\",min:56,max:160,step:2,unit:\"px\",defaultValue:88},maxWidth:{type:ControlType.Number,title:\"Max Width\",min:600,max:1800,step:20,unit:\"px\",defaultValue:1200},numbers:{type:ControlType.Boolean,title:\"Numbers\",defaultValue:true},focus:{type:ControlType.Boolean,title:\"Hover Focus\",defaultValue:true,description:\"While a row is under the pointer, the other rows step back.\"},top:{type:ControlType.Number,title:\"Top Space\",min:0,max:320,step:4,unit:\"px\",defaultValue:148,description:\"Room above the list for whatever sits over the wall.\"},bottom:{type:ControlType.Number,title:\"Bottom Space\",min:0,max:320,step:4,unit:\"px\",defaultValue:120},allLabel:{type:ControlType.String,title:\"All Label\",defaultValue:\"All\",description:\"The first filter, with Categories connected.\"},counts:{type:ControlType.Boolean,title:\"Counts\",defaultValue:true,description:\"The number of pieces on each filter.\"}}},mobile:{type:ControlType.Object,title:\"Mobile\",icon:\"object\",controls:{columns:{type:ControlType.Number,title:\"Columns\",min:1,max:4,step:1,displayStepper:true,defaultValue:2},hint:{type:ControlType.String,title:\"Hint\",defaultValue:\"Drag to explore\"},listTop:{type:ControlType.Number,title:\"List Top\",min:0,max:320,step:4,unit:\"px\",defaultValue:84},listBottom:{type:ControlType.Number,title:\"List Bottom\",min:0,max:320,step:4,unit:\"px\",defaultValue:160}}},colors:{type:ControlType.Object,title:\"Colors\",description:\"Bind these to the project's colour styles so both themes follow.\",controls:{tileFill:{type:ControlType.Color,title:\"Tile Fill\",defaultValue:\"#E4E4E1\",description:\"Behind a tile while its image loads.\"},captionText:{type:ControlType.Color,title:\"Caption\",defaultValue:\"#FFFFFF\",description:\"A tile's title and category, over the image.\"},shade:{type:ControlType.Color,title:\"3D Shade\",defaultValue:\"#000000\",description:\"The colour the wall falls into away from the 3D light.\"},labelFill:{type:ControlType.Color,title:\"Cursor Fill\",defaultValue:\"#111111\",description:\"The cursor label over a tile.\"},labelText:{type:ControlType.Color,title:\"Cursor Text\",defaultValue:\"#FFFFFF\"},hintFill:{type:ControlType.Color,title:\"Hint Fill\",defaultValue:\"#111111\"},hintText:{type:ControlType.Color,title:\"Hint Text\",defaultValue:\"#FFFFFF\"},listText:{type:ControlType.Color,title:\"List Text\",defaultValue:\"#F2F2F2\",description:\"The Index list.\"},listMuted:{type:ControlType.Color,title:\"List Muted\",defaultValue:\"#8C8C8C\"},listLine:{type:ControlType.Color,title:\"List Line\",defaultValue:\"rgba(255,255,255,0.09)\"},listChip:{type:ControlType.Color,title:\"Filter Fill\",defaultValue:\"rgba(255,255,255,0.08)\",description:\"The chosen filter and the hover fill.\"},listMenu:{type:ControlType.Color,title:\"Filter Menu\",defaultValue:\"#171717\",description:\"Phones: the card that lists the categories.\"}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"WallGrid\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"800\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WallGrid_1.map"],"mappings":"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"}