{"version":3,"file":"Behaviours.auF_DMt7.mjs","names":["useRef","_Fragment","useState"],"sources":["https:/framerusercontent.com/modules/1ZfqcksoR6fUvf6krfHy/lAE8npj3w5Z9EfG8RjIm/Behaviours.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef,useEffect,useRef,useState}from\"react\";// Runtime behaviours for native layers. Each override wraps a canvas layer\n// that stays fully editable in Framer; the override only adds motion or\n// interaction the canvas can't express. Apply them from the layer's\n// Code Override setting:\n//   withHeroArrival  → hero image group (its children are the tiles)\n//   withShelf        → intro cards row (a sideways shelf below 810px)\n//   withShelfPrev / withShelfNext → the two arrow buttons under the shelf\n//   withFlipBook     → a frame whose children are stacked images\n//   withHeaderLine   → header bar (hairline appears once the page scrolls)\n//   withHero         → hero section (desktop min-height; short-laptop spacing)\n//   withRowStretch   → card grid (cards in a row share the row's height)\nconst mergeRefs=(...refs)=>el=>{for(const r of refs){if(typeof r===\"function\")r(el);else if(r&&typeof r===\"object\")r.current=el;}};const reduced=()=>typeof window!==\"undefined\"&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;/* ── Hero arrival ────────────────────────────────────────────────────────\n   Tiles stay hidden until their pictures are decoded (≤300ms past load,\n   2.5s cap), the words get a 280ms beat, then the set arrives in order:\n   each tile fades up from 16px while its picture settles from 108%.\n   Desktop (≥1200): the group rises 56px over the first screen of scroll.\n   In the server-rendered page each tile sits in an .ssr-variant wrapper\n   (display:contents) that stays after the page hydrates, so every rule also\n   reaches the tile inside its wrapper. */const ARRIVAL_CSS=`\n.p3-tiles>*,.p3-tiles>.ssr-variant>*{opacity:0;transform:translate3d(0,16px,0);transition:opacity .8s cubic-bezier(.16,1,.3,1) var(--d,0ms),transform 1.2s cubic-bezier(.16,1,.3,1) var(--d,0ms)}\n.p3-tiles>* img{transform:scale(1.08);transition:transform 1.6s cubic-bezier(.16,1,.3,1) var(--d,0ms)}\n.p3-tiles.on>.ld,.p3-tiles.on>.ssr-variant.ld>*{opacity:1;transform:none}\n.p3-tiles.on>.ld img{transform:none}\n@media (prefers-reduced-motion:reduce){.p3-tiles>*,.p3-tiles>.ssr-variant>*,.p3-tiles>* img{transform:none!important;transition:opacity .3s linear!important}}\n/* the zigzag: even tiles sit lower (desktop 40, tablet 28, phone 18) */\n.p3-tiles>*:nth-child(2),.p3-tiles>*:nth-child(4),.p3-tiles>.ssr-variant:nth-child(2)>*,.p3-tiles>.ssr-variant:nth-child(4)>*{translate:0 40px}\n@media (max-width:1199.98px){.p3-tiles>*:nth-child(2),.p3-tiles>*:nth-child(4),.p3-tiles>.ssr-variant:nth-child(2)>*,.p3-tiles>.ssr-variant:nth-child(4)>*{translate:0 28px}}\n@media (max-width:809.98px){.p3-tiles>*:nth-child(2),.p3-tiles>*:nth-child(4),.p3-tiles>.ssr-variant:nth-child(2)>*,.p3-tiles>.ssr-variant:nth-child(4)>*{translate:0 18px}}\n/* short laptop screens: a slimmer tile column, right-aligned */\n@media (min-width:1200px) and (max-height:860px){.p3-tiles{max-width:440px;margin-left:auto}}\n`;export function withHeroArrival(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const el=useRef(null);useEffect(()=>{const g=el.current;if(!g)return;let alive=true;const tiles=Array.from(g.children).filter(c=>c.tagName!==\"STYLE\");tiles.forEach((t,i)=>t.style.setProperty(\"--d\",i*90+\"ms\"));const decode=img=>Promise.race([img.decode?img.decode().catch(()=>{}):Promise.resolve(),new Promise(r=>setTimeout(r,300))]);const ready=t=>new Promise(res=>{const img=t.querySelector(\"img\");const done=()=>{if(alive)t.classList.add(\"ld\");res();};if(!img)return done();if(img.complete&&img.naturalWidth)decode(img).then(done);else{img.addEventListener(\"load\",()=>decode(img).then(done),{once:true});img.addEventListener(\"error\",done,{once:true});}});const beat=new Promise(r=>setTimeout(r,280));Promise.all([Promise.all(tiles.map(ready)),beat]).then(()=>alive&&g.classList.add(\"on\"));const cap=setTimeout(()=>{if(!alive)return;tiles.forEach(t=>t.classList.add(\"ld\"));g.classList.add(\"on\");},2500);// parallax, desktop only\nlet raf=0;const update=()=>{raf=0;if(reduced()||window.innerWidth<1200)return void(g.style.translate=\"\");const p=Math.min(1,Math.max(0,window.scrollY/Math.max(1,window.innerHeight)));g.style.translate=`0 ${-56*p}px`;};const onScroll=()=>{if(!raf)raf=requestAnimationFrame(update);};update();window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);return()=>{alive=false;clearTimeout(cap);window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);if(raf)cancelAnimationFrame(raf);};},[]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:ARRIVAL_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(ref,el),className:[props.className,\"p3-tiles\"].filter(Boolean).join(\" \")})]});});}// Each shelf keeps its own state, so a page can have several shelves; each\n// arrow pair drives the shelf that shares its section.\nconst shelves=new WeakMap;const stateOf=s=>{let st=shelves.get(s);if(!st){st={start:true,end:false,subs:new Set};shelves.set(s,st);}return st;};const findShelf=from=>{let p=from?from.parentElement:null;while(p){const s=p.querySelector(\".p3-shelf\");if(s)return s;p=p.parentElement;}return null;};const SHELF_CSS=`\n.p3-shelf>*,.p3-shelf>.ssr-variant>*{align-self:stretch!important;height:auto!important}\n.p3-shelf>*:not(style):not(.ssr-variant),.p3-shelf>.ssr-variant>*:not(style){display:flex!important;flex-direction:column!important}\n.p3-shelf>*:not(style):not(.ssr-variant)>*:not(style),.p3-shelf>.ssr-variant>*:not(style)>*:not(style){flex:1 0 auto!important;height:auto!important}\n.p3-shelf>* [data-framer-name=\"Copy\"],.p3-shelf>.ssr-variant>* [data-framer-name=\"Copy\"]{flex:1 0 auto!important}\n@media (max-width:809.98px){\n  .p3-shelf{overflow-x:auto!important;overflow-y:hidden!important;scroll-snap-type:x mandatory;overscroll-behavior-x:none;touch-action:pan-x pan-y;scrollbar-width:none}\n  .p3-shelf::-webkit-scrollbar{display:none}\n  .p3-shelf>*,.p3-shelf>.ssr-variant>*{scroll-snap-align:start;scroll-snap-stop:always;flex:none!important;width:min(74vw,300px)!important}\n}`;export function withShelf(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const el=useRef(null);useEffect(()=>{const s=el.current;if(!s)return;const st=stateOf(s);const pad=()=>parseFloat(getComputedStyle(s).paddingLeft)||0;s.style.scrollPaddingInline=pad()+\"px\";const read=()=>{const start=s.scrollLeft<4;const end=s.scrollLeft+s.clientWidth>s.scrollWidth-4;if(start!==st.start||end!==st.end){st.start=start;st.end=end;st.subs.forEach(f=>f());}};read();s.addEventListener(\"scroll\",read,{passive:true});window.addEventListener(\"resize\",read);return()=>{s.removeEventListener(\"scroll\",read);window.removeEventListener(\"resize\",read);};},[]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:SHELF_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(ref,el),className:[props.className,\"p3-shelf\"].filter(Boolean).join(\" \")})]});});}// The first card with a box: a server-rendered card sits in an .ssr-variant wrapper (display:contents),\n// and the other breakpoints' copies are display:none.\nconst firstCard=s=>{for(const c of Array.from(s.children)){if(c.tagName===\"STYLE\")continue;const box=c.classList.contains(\"ssr-variant\")?c.firstElementChild:c;if(box&&box.offsetWidth>0)return box;}return undefined;};const shelfStep=(s,dir)=>{const card=s?firstCard(s):undefined;if(!s||!card)return;const gap=parseFloat(getComputedStyle(s).columnGap||\"0\")||10;s.scrollBy({left:dir*(card.offsetWidth+gap),behavior:reduced()?\"auto\":\"smooth\"});};function ShelfArrow({Component,dir,props,fwd}){const el=useRef(null);const[shelfEl,setShelfEl]=useState(null);const[,force]=useState(0);useEffect(()=>{const s=findShelf(el.current);if(!s)return;setShelfEl(s);const st=stateOf(s);const f=()=>force(n=>n+1);st.subs.add(f);f();return()=>void st.subs.delete(f);},[]);const st=shelfEl?stateOf(shelfEl):{start:true,end:false};const off=dir<0?st.start:st.end;return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(fwd,el),onTap:()=>!off&&shelfStep(shelfEl,dir),\"aria-label\":dir<0?\"Previous\":\"Next\",\"aria-disabled\":off,style:{...props.style,opacity:off?.32:1,pointerEvents:off?\"none\":undefined,transition:\"opacity .2s\"}});}export function withShelfPrev(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsx(ShelfArrow,{Component:Component,dir:-1,props:props,fwd:ref}));}export function withShelfNext(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsx(ShelfArrow,{Component:Component,dir:1,props:props,fwd:ref}));}/* ── Flip-book ───────────────────────────────────────────────────────────\n   Shows one child at a time, cutting to the next every 1.1s while in view,\n   every 0.5s while hovered. */export function withFlipBook(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const el=useRef(null);useEffect(()=>{const f=el.current;if(!f)return;// a server-rendered slide sits in an .ssr-variant wrapper (display:contents): fade what is inside it\nconst kids=()=>Array.from(f.children).filter(c=>c.tagName!==\"STYLE\"&&getComputedStyle(c).display!==\"none\");const fade=(k,o)=>k.classList.contains(\"ssr-variant\")?Array.from(k.children).forEach(c=>c.style.opacity=o):k.style.opacity=o;let i=0;const show=()=>kids().forEach((k,n)=>fade(k,n===i?\"1\":\"0\"));show();if(reduced())return;let visible=false;let hover=false;let timer=0;const tick=()=>{const k=kids();if(visible&&k.length>1){i=(i+1)%k.length;show();}timer=window.setTimeout(tick,hover?500:1100);};const io=new IntersectionObserver(([e])=>visible=e.isIntersecting,{threshold:.3});io.observe(f);const over=()=>hover=true;const out=()=>hover=false;// the whole service row is the hover target when present\nconst host=f.closest(\"a\")||f;host.addEventListener(\"mouseenter\",over);host.addEventListener(\"mouseleave\",out);timer=window.setTimeout(tick,1100);return()=>{io.disconnect();window.clearTimeout(timer);host.removeEventListener(\"mouseenter\",over);host.removeEventListener(\"mouseleave\",out);};},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(ref,el)});});}/* ── Header hairline ─────────────────────────────────────────────────────\n   The bar's bottom hairline appears once the page has scrolled 8px. */export function withHeaderLine(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[moved,setMoved]=useState(false);useEffect(()=>{const on=()=>setMoved(window.scrollY>8);on();window.addEventListener(\"scroll\",on,{passive:true});return()=>window.removeEventListener(\"scroll\",on);},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,style:{...props.style,borderBottom:\"1px solid\",borderBottomColor:moved?\"rgba(255,255,255,0.08)\":\"transparent\",transition:\"border-color .3s\"}});});}/* ── Phone menu sheet ────────────────────────────────────────────────────\n   While the header shows its \"Phone Open\" variant: the page holds still\n   behind the sheet and Escape closes it. (The open/close motion itself — the\n   card unfolding from the capsule — is in HeaderCapsule.tsx; while the card\n   folds back, html carries data-mp-menu=\"closing\" for 0.4s.)\n   It also closes when the browser's back/forward buttons change the page.\n   Everything else is native Framer interactions on the component (each menu\n   row and the logo close it 0.3s after the tap, the Backdrop behind the card\n   0.1s after, so a link is followed before the menu moves away). The menu\n   button is announced as a button with its label and open state.\n   Stray-tap guard: a phone sends its click a moment after the finger lifts.\n   If the menu has already closed by then (a slow phone, or the new page\n   arriving first), that click would land on whatever is underneath and could\n   open another link. So when the menu closes after a touch whose click has\n   not arrived yet, an invisible layer catches that one late click (for at\n   most 0.7s); if the click has already landed, nothing is put in the way. */const SHEET_OPEN='[data-framer-name=\"Phone Open\"], [data-framer-name=\"Phone Scrolled Open\"]';let lastPointer=\"mouse\";let lateClickSince=0// when the finger last lifted, until that touch's click has arrived (0 = none pending)\n;if(typeof window!==\"undefined\"){window.addEventListener(\"pointerdown\",e=>{lastPointer=e.pointerType||\"mouse\";},{capture:true,passive:true});window.addEventListener(\"touchend\",()=>{lateClickSince=Date.now();},{capture:true,passive:true});window.addEventListener(\"click\",()=>{lateClickSince=0;},{capture:true,passive:true});}function catchLateClick(){// only when that touch's click is still on its way: otherwise nothing is held back and the next tap is free\nif(typeof document===\"undefined\"||lastPointer===\"mouse\"||!lateClickSince||Date.now()-lateClickSince>1e3)return;const layer=document.createElement(\"div\");layer.setAttribute(\"aria-hidden\",\"true\");layer.style.cssText=\"position:fixed;inset:0;z-index:2147483647;background:transparent\";const done=()=>{window.clearTimeout(t);layer.remove();};layer.addEventListener(\"click\",e=>{e.preventDefault();e.stopPropagation();done();},true);const t=window.setTimeout(done,700);document.body.appendChild(layer);}// the 0.4s the card takes to fold back into the capsule (HeaderCapsule.tsx keeps the glass on the card until then)\nlet closingTimer=0;function markClosing(){if(typeof document===\"undefined\")return;document.documentElement.setAttribute(\"data-mp-menu\",\"closing\");window.clearTimeout(closingTimer);closingTimer=window.setTimeout(()=>{// the card is back in the capsule: hand the glass back to the bar in this very frame (no fade)\ndocument.documentElement.setAttribute(\"data-mp-menu\",\"handback\");closingTimer=window.setTimeout(clearClosing,80);},400);}function clearClosing(){if(typeof document===\"undefined\")return;window.clearTimeout(closingTimer);document.documentElement.removeAttribute(\"data-mp-menu\");}export function withSheet(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const el=useRef(null);const[open,setOpen]=useState(false);// Framer's tap listens for pointer events, not click()\nconst close=()=>{const node=el.current;if(!node||!node.closest(SHEET_OPEN))return;const menu=node.parentElement?.querySelector('[data-framer-name=\"Menu\"]');if(!menu)return;const r=menu.getBoundingClientRect();const o={bubbles:true,clientX:r.x+r.width/2,clientY:r.y+r.height/2,pointerId:1,isPrimary:true,button:0};menu.dispatchEvent(new PointerEvent(\"pointerdown\",o));menu.dispatchEvent(new PointerEvent(\"pointerup\",o));menu.dispatchEvent(new MouseEvent(\"click\",o));};useEffect(()=>{const node=el.current;if(!node)return;const root=node.closest(\"header\")||node.parentElement?.parentElement?.parentElement||document.body;let was=!!node.closest(SHEET_OPEN);setOpen(was);// runs as the variant changes (before the phone's late click arrives)\nconst check=()=>{const now=!!node.closest(SHEET_OPEN);if(was&&!now){catchLateClick();markClosing();}if(now)clearClosing();was=now;setOpen(now);};const mo=new MutationObserver(check);mo.observe(root,{attributes:true,subtree:true,attributeFilter:[\"data-framer-name\",\"class\"]});return()=>mo.disconnect();},[]);// the menu button: announced as a button, with its label and state\nuseEffect(()=>{const menu=el.current?.parentElement?.querySelector('[data-framer-name=\"Menu\"]');if(!menu)return;menu.setAttribute(\"role\",\"button\");menu.setAttribute(\"aria-label\",open?\"Close menu\":\"Open menu\");menu.setAttribute(\"aria-expanded\",open?\"true\":\"false\");// the Backdrop (tap outside the card to close) is not a control for keyboards or screen readers\nconst backdrop=el.current?.querySelector(':scope > [data-framer-name=\"Backdrop\"]');if(backdrop){backdrop.tabIndex=-1;backdrop.setAttribute(\"aria-hidden\",\"true\");}},[open]);useEffect(()=>{if(!open)return;const html=document.documentElement;const prev=html.style.overflow;html.style.overflow=\"hidden\";const onKey=e=>{if(e.key===\"Escape\")close();};window.addEventListener(\"keydown\",onKey);// back / forward changed the page under the open menu: close it\nwindow.addEventListener(\"popstate\",close);return()=>{html.style.overflow=prev;window.removeEventListener(\"keydown\",onKey);window.removeEventListener(\"popstate\",close);};},[open]);const setRef=n=>{el.current=n;if(typeof ref===\"function\")ref(n);else if(ref)ref.current=n;};return /*#__PURE__*/_jsx(Component,{...props,ref:setRef,style:{...props.style,pointerEvents:open?\"auto\":\"none\"}});});}/* ── Hero ────────────────────────────────────────────────────────────────\n   Desktop (≥1200): the hero is at least a screen tall less the header,\n   capped at 860px. On short laptop screens (≤860px tall) its copy tightens. */const HERO_CSS=`\n@media (min-width:1200px){.p3-hero{min-height:min(calc(100svh - 72px),860px)!important}}\n@media (min-width:1200px) and (max-height:860px){\n  .p3-hero [data-framer-name=\"Hero Copy\"]{gap:24px!important}\n  .p3-hero [data-framer-name=\"Hero Sub\"]{gap:32px!important}\n}`;export function withHero(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:HERO_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:ref,className:[props.className,\"p3-hero\"].filter(Boolean).join(\" \")})]}));}/* ── Cap-top ─────────────────────────────────────────────────────────────\n   A title set beside an image starts on the image's top edge: the leading\n   above its capitals is trimmed (text-box), so cap height meets the image.\n   Desktop only — on tablet and phone the title sits under the image. */const CAP_CSS=`@media (min-width:1200px){.mp-cap :is(h1,h2,h3,h4,h5,h6,p){text-box-trim:trim-start;text-box-edge:cap alphabetic}}`;export function withCapTop(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CAP_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:ref,className:[props.className,\"mp-cap\"].filter(Boolean).join(\" \")})]}));}/* ── Row baseline ────────────────────────────────────────────────────────\n   In a desktop press row the publication's name (Card Title) and its line\n   (Body) sit side by side; centred by their boxes, the name's baseline lands\n   2px below the line's. The lift puts the name, the line and the arrow's foot\n   on one baseline. Desktop only — below 1200 the two are stacked. */const ROW_BASE_CSS=`@media (min-width:1200px){.mp-rowbase{translate:0 -2px}}`;export function withRowBaseline(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:ROW_BASE_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:ref,className:[props.className,\"mp-rowbase\"].filter(Boolean).join(\" \")})]}));}/* ── Film baseline ───────────────────────────────────────────────────────\n   Beside the Contact opening, the film is bottom-aligned with the copy, so its\n   foot sat on the paragraph's line box, 9px below the last line's baseline.\n   The lift puts the picture's bottom edge on that baseline. Desktop and\n   tablet only — on the phone the film sits under the copy. */const FILM_BASE_CSS=`@media (min-width:810px){.mp-filmbase{translate:0 -9px}}`;export function withFilmBaseline(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:FILM_BASE_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:ref,className:[props.className,\"mp-filmbase\"].filter(Boolean).join(\" \")})]}));}/* ── Row stretch ─────────────────────────────────────────────────────────\n   Grid rows size to their own content; every card in a row stretches to\n   that row's height, so card bottoms (and bottom-aligned meta) line up.\n   A server-rendered card sits in an .ssr-variant wrapper: the wrapper stays\n   display:contents, so the card itself is the grid item (and keeps its span). */const STRETCH_CSS=`.p3-stretch>*,.p3-stretch>.ssr-variant>*{align-self:stretch!important;height:auto!important}\n.p3-stretch>*:not(style):not(.ssr-variant),.p3-stretch>.ssr-variant>*:not(style){display:flex!important;flex-direction:column!important}\n.p3-stretch>*:not(style):not(.ssr-variant)>*:not(style),.p3-stretch>.ssr-variant>*:not(style)>*:not(style){flex:1 0 auto!important;height:auto!important}\n.p3-stretch>* [data-framer-name=\"Copy\"],.p3-stretch>.ssr-variant>* [data-framer-name=\"Copy\"]{flex:1 0 auto!important}`;export function withRowStretch(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:STRETCH_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:ref,className:[props.className,\"p3-stretch\"].filter(Boolean).join(\" \")})]}));}/* ── Logo balance ────────────────────────────────────────────────────────\n   Sizes a logo by how big it looks, not by its box. Each press logo has a\n   hand-tuned height (phone scale; ×1.15 from 810px up) chosen from its shape\n   and ink density, so a bold square mark and a light wide wordmark carry the\n   same weight in the list. A logo not in the table is sized from its aspect\n   ratio (equal area, 14–30px tall, ≤150px wide). */// [height at phone (×1.15 from 810px), aspect ratio, height on desktop ≥1200px, tuned by eye for equal weight]\nconst LOGO_BALANCE={\"IP9VbmgvG9K8u7SBwwqV7GJRFSU\":[30,3.679,36],\"fgdPfYVJH2hcQapGVtrM9XqMMs\":[22,6.326,23],\"fYGYG12diRHejslNjhRnowQ6JMw\":[21,6.326,22],\"Mfxvzlonnp9qLVDcXmCzGFAMFU4\":[19,5.84,21],\"OK2wVRblZRhVz1pZosFTkNjt894\":[19,6.748,22],\"5B6rrI0hdUecqnnV1XXqqn5cZo\":[30,1.631,44],\"3mONuNyqu9mw3uJbaGrKuJupI\":[26,3.321,33],\"P0yvvdG87WMy7OW8UhUrCLX1g\":[30,4.229,36],\"deBFYHRkTHzBU0x1U0JF383fGo\":[21,6.799,24],\"xPuc2PPEnpjXOAD5zYL7SLX6G2E\":[32,3.659,46],\"2T06VkcRIlYuiDaPMKtvKW552yo\":[28,1.199,40],\"BBhFpuArskgqegYLs0BbbfJpmKQ\":[19,7.467,23],\"dDDb2EDvJ9rglj6Nk7BhnO7WTC0\":[14,10.845,17],\"aV5bW8Ee6OkTaU57NWcfrUXG9Sc\":[16.5,8.738,20],\"R8ZN49TeFqWbY9wi9bJhnWRYu0\":[19,6.155,22],\"OS1srtbk2L4OC3ZG2WeHQIPiiM\":[32,1.432,46],\"jM1GCTB13czj6LjQQhSPuFaXf6w\":[28,3.996,32]};const LOGO_CSS=`:root{--lb-s:1.15}@media (max-width:809.98px){:root{--lb-s:1}}`;function balancedHeight(r){let h=Math.sqrt(3400/r);h=Math.max(14,Math.min(30,h));if(h*r>150)h=150/r;return h;}// Desktop gets its own logo heights: the row is wider and taller there, so compact marks need more room.\nfunction useDesktop(){const[d,setD]=useState(false);useEffect(()=>{const m=window.matchMedia(\"(min-width: 1200px)\");const f=()=>setD(m.matches);f();m.addEventListener(\"change\",f);return()=>m.removeEventListener(\"change\",f);},[]);return d;}export function withLogoBalance(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const el=useRef(null);const[dim,setDim]=useState(null);useEffect(()=>{const img=el.current?.querySelector(\"img\");if(!img)return;const src=img.currentSrc||img.src;const key=Object.keys(LOGO_BALANCE).find(k=>src.includes(k));if(key)return setDim(LOGO_BALANCE[key]);const go=()=>{const r=img.naturalWidth/img.naturalHeight;if(r)setDim([balancedHeight(r),r]);};if(img.complete)go();else img.addEventListener(\"load\",go,{once:true});},[]);const desktop=useDesktop();const hd=desktop&&dim?dim[2]:undefined;const style=!dim?props.style:hd?{...props.style,height:`${hd}px`,width:`${(hd*dim[1]).toFixed(2)}px`,flexShrink:0}:{...props.style,height:`calc(${dim[0]}px * var(--lb-s, 1))`,width:`calc(${(dim[0]*dim[1]).toFixed(2)}px * var(--lb-s, 1))`,flexShrink:0};return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:LOGO_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(ref,el),style:style})]});});}/* ── Press Card logos (Home \"Featured in\") ───────────────────────────────\n   The same marks as About, balanced by the same table, so a logo carries the\n   same weight wherever it appears. A card logo never follows the card's width\n   (that let wide wordmarks balloon as the screen grew): it keeps one size per\n   breakpoint — the phone heights below 810px, the desktop heights ×0.85 from\n   810px up (tablet and desktop cards share the 40px logo row) — and only when\n   a card is too narrow for the widest mark do all logos shrink by the same\n   factor, so the set stays even at every width. Plain CSS: right on first paint. */const PRESS_SCALE=.85// desktop table → the card's 40px logo row (tallest mark 39px)\n;function pressSize(e){const[hp,r,hd]=e;return{r,phone:hp*r,wide:(hd??hp*1.15)*PRESS_SCALE*r};}const PRESS_MAX=Object.values(LOGO_BALANCE).map(e=>pressSize(e)).reduce((m,s)=>({phone:Math.max(m.phone,s.phone),wide:Math.max(m.wide,s.wide)}),{phone:0,wide:0});const PRESS_CSS=`.press-logo{flex-shrink:0!important;height:auto!important;aspect-ratio:var(--pl-r)!important;`+`width:min(calc(var(--pl-wide) * 1px),calc(100% * var(--pl-wide) / ${PRESS_MAX.wide.toFixed(2)}),100%)!important}`+`@media (max-width:809.98px){.press-logo{width:min(calc(var(--pl-phone) * 1px),calc(100% * var(--pl-phone) / ${PRESS_MAX.phone.toFixed(2)}),100%)!important}}`;function balanceEntry(src){const key=Object.keys(LOGO_BALANCE).find(k=>src.includes(k));return key?LOGO_BALANCE[key]:null;}export function withPressLogo(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const el=useRef(null);const src=props.background?.src||\"\";const known=balanceEntry(src);const[late,setLate]=useState(null);useEffect(()=>{if(known)return;const img=el.current?.querySelector(\"img\");if(!img)return;const hit=balanceEntry(img.currentSrc||img.src);if(hit)return setLate(hit);const go=()=>{const r=img.naturalWidth/img.naturalHeight;if(r)setLate([balancedHeight(r),r]);};if(img.complete)go();else img.addEventListener(\"load\",go,{once:true});},[src]);const entry=known||late;const s=entry&&pressSize(entry);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:PRESS_CSS}}),/*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(ref,el),className:s?[props.className,\"press-logo\"].filter(Boolean).join(\" \"):props.className,style:s?{...props.style,\"--pl-r\":s.r,\"--pl-phone\":s.phone.toFixed(2),\"--pl-wide\":s.wide.toFixed(2)}:props.style})]});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withFlipBook\":{\"type\":\"reactHoc\",\"name\":\"withFlipBook\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeaderLine\":{\"type\":\"reactHoc\",\"name\":\"withHeaderLine\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPressLogo\":{\"type\":\"reactHoc\",\"name\":\"withPressLogo\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHero\":{\"type\":\"reactHoc\",\"name\":\"withHero\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRowBaseline\":{\"type\":\"reactHoc\",\"name\":\"withRowBaseline\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFilmBaseline\":{\"type\":\"reactHoc\",\"name\":\"withFilmBaseline\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShelfPrev\":{\"type\":\"reactHoc\",\"name\":\"withShelfPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShelfNext\":{\"type\":\"reactHoc\",\"name\":\"withShelfNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCapTop\":{\"type\":\"reactHoc\",\"name\":\"withCapTop\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroArrival\":{\"type\":\"reactHoc\",\"name\":\"withHeroArrival\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRowStretch\":{\"type\":\"reactHoc\",\"name\":\"withRowStretch\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLogoBalance\":{\"type\":\"reactHoc\",\"name\":\"withLogoBalance\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSheet\":{\"type\":\"reactHoc\",\"name\":\"withSheet\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShelf\":{\"type\":\"reactHoc\",\"name\":\"withShelf\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Behaviours.map"],"mappings":"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"}