{"version":3,"file":"MsRecap.r6t5dH2H.mjs","names":["useState","c","useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/jJmX4I5GkrzcPryUE2U8/9tmCCCqVBhrMMmPS2aDo/MsRecap.js"],"sourcesContent":["// ===== MAINSTAGE shared scaffold (CENTER STAGE: warm black hall, cream paper, orange accent, PILL buttons = the approved hero v3) (inlined by mk.py; each Framer code file must be self-contained) =====\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useLayoutEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";const FONTS=\"https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,400..900&family=Schibsted+Grotesk:wght@400..800&family=IBM+Plex+Mono:wght@400;500;600&display=swap\";// Token-safe alpha: Styles-bound colours arrive as var(--token-…) so hex-alpha breaks; color-mix keeps a palette flip working. Never 0% (hue drops) — floor at 0.4%.\nconst A=(c,a)=>`color-mix(in srgb, ${c} ${Math.max(.4,Math.round(a*1e3)/10)}%, transparent)`;const MIX=(a,b,t)=>`color-mix(in srgb, ${a} ${Math.round((1-t)*100)}%, ${b})`;const srcOf=(v,fallback)=>v&&typeof v===\"object\"&&v.src?String(v.src).split(\"?\")[0]:typeof v===\"string\"&&v.trim()?v.trim().split(\"?\")[0]:fallback;const T=(s,fb)=>s&&s.trim()?s.trim():fb;// ink or white text on a CMS brand colour (luminance test; the brand colour is data, not a palette token)\nconst onBrand=hex=>{const m=String(hex||\"\").replace(\"#\",\"\").match(/^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(!m)return\"var(--ms-cloud)\";const[r,g,b]=[m[1],m[2],m[3]].map(x=>{const v=parseInt(x,16)/255;return v<=.03928?v/12.92:Math.pow((v+.055)/1.055,2.4);});const L=.2126*r+.7152*g+.0722*b;return L>.18?\"var(--ms-ink)\":\"var(--ms-cloud)\";};const cleanTel=s=>s.replace(/[^\\d+]/g,\"\");// Premium layout band (measured 09-13): container 1340 @1440 / 1520 @1920, body 16, button label 12–13.\nconst MAXW=\"clamp(1280px, 92vw, 1520px)\";// Responsive delivery: Framer's resizer serves any upload at ?scale-down-to=N (longest side). The query is stripped first so one file never downloads twice.\n// Responsive delivery. Framer uploads: the resizer serves ?scale-down-to=N. Unsplash stand-ins: ?w=N. The src is already the smallest width that covers the slot (a 52px avatar never pulls a 1600px photo), so a big image is never decoded for a small box — decode is what stalls scrolling.\nconst RS_W=[160,320,480,800,1200,1600];const rsTarget=sizes=>{const t=String(sizes||\"\").trim().split(\",\").pop()||\"\";const px=t.match(/(\\d+(?:\\.\\d+)?)px/);const vw=t.match(/(\\d+(?:\\.\\d+)?)vw/);const want=px?parseFloat(px[1])*2:vw?parseFloat(vw[1])/100*1600*1.25:1600;return RS_W.find(w=>w>=want)||1600;};const RS=(u,sizes)=>{const s=String(u||\"\");const b=s.split(\"?\")[0];if(/framerusercontent\\.com\\/images\\//.test(s)){const w=rsTarget(sizes);const d=w<=512?512:w<=1024?1024:2048;return{src:`${b}?scale-down-to=${d}`,srcSet:`${b}?scale-down-to=512 512w, ${b}?scale-down-to=1024 1024w, ${b}?scale-down-to=2048 2048w`,sizes};}if(/images\\.unsplash\\.com\\//.test(s)){const w=rsTarget(sizes);const q=n=>`${b}?w=${n}&q=70&fm=jpg&auto=format`;return{src:q(w),srcSet:RS_W.filter(n=>n<=Math.max(w*2,480)).map(n=>`${q(n)} ${n}w`).join(\", \"),sizes};}return{src:s};};// A Framer Font control stores a selector (GF;Family-700), not a CSS family — derive one, reject anything with ';'\nconst famOf=f=>{if(!f)return\"\";if(typeof f===\"string\")return f.includes(\";\")?\"\":f;if(f.fontFamily&&!String(f.fontFamily).includes(\";\"))return String(f.fontFamily);const sel=String(f.fontSelector||\"\");if(!sel)return\"\";const n=sel.split(\";\").pop()||\"\";return n.replace(/-(regular|italic|bold|\\d{3}(italic)?)$/i,\"\").replace(/-/g,\" \");};const wOf=(f,fb)=>{if(!f)return fb;if(f.fontWeight)return Number(f.fontWeight)||fb;const m=String(f.fontSelector||\"\").match(/-(\\d{3})/);return m?Number(m[1]):fb;};// famCss: Framer's Font `fontFamily` is ALREADY a stack — never wrap it in quotes (one fake family → fallback renders). A bare name gets quoted.\nconst famCss=f=>{const fa=famOf(f).replace(/\"/g,\"'\").trim();if(!fa)return\"\";return fa.includes(\",\")||fa.startsWith(\"'\")?fa:`'${fa}'`;};const stack=(custom,f,fb,tail)=>{const fam=custom?famCss(f):\"\";return`${fam?`${fam}, `:\"\"}${fb}, ${tail}`;};function useFonts(){useEffect(()=>{if(typeof document===\"undefined\"||document.getElementById(\"ms-fonts\"))return;const l=document.createElement(\"link\");l.id=\"ms-fonts\";l.rel=\"stylesheet\";l.href=FONTS;document.head.appendChild(l);},[]);}// live = client after hydration and not on the canvas. SSR and the first client render share the same markup.\n// TRUE on the Framer canvas AND in its export / thumbnail / screenshot renderers (anything that is not the running preview): no scroll and no hydration there, so every reveal / pinned stage must draw its FINAL state or the editor shows empty blocks.\nfunction useStill(){const isStatic=useIsStaticRenderer();let t=null;try{t=RenderTarget.current();}catch(e){}return isStatic||t!==null&&t!==RenderTarget.preview;}function useLive(){const isStatic=useIsStaticRenderer();const[live,setLive]=useState(false);useEffect(()=>{if(!isStatic&&RenderTarget.current()!==RenderTarget.canvas&&typeof window!==\"undefined\")setLive(true);},[isStatic]);return live;}// Width/height of the root + viewport height. SSR starts from the breakpoint hint (Framer renders the Tablet/Phone copies with the same code and no width).\nfunction useSize(root,hint){const ov=String(hint||\"\").toLowerCase();const[w,setW]=useState(ov===\"phone\"?390:ov===\"tablet\"?810:1440),[vh,setVh]=useState(ov===\"phone\"?844:ov===\"tablet\"?1080:900);useLayoutEffect(()=>{const el=root.current;if(!el)return;const ro=new ResizeObserver(([e])=>{const x=Math.round((e.borderBoxSize&&e.borderBoxSize[0]?e.borderBoxSize[0].inlineSize:0)||el.offsetWidth);if(x>0)setW(x);});ro.observe(el);const vv=()=>setVh(window.innerHeight);vv();const read=()=>{const x=Math.round(el.offsetWidth);if(x>0)setW(x);};const t1=window.setTimeout(read,150),t2=window.setTimeout(read,700),t3=window.setTimeout(read,1600);window.addEventListener(\"resize\",vv);window.addEventListener(\"load\",read);return()=>{ro.disconnect();window.clearTimeout(t1);window.clearTimeout(t2);window.clearTimeout(t3);window.removeEventListener(\"resize\",vv);window.removeEventListener(\"load\",read);};},[]);return{w,vh};}const useReduced=()=>{const[rm,setRm]=useState(false);useLayoutEffect(()=>{setRm(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches);},[]);return rm;};// One shared rAF for every section. Each frame runs ALL reads first (layout reads: getBoundingClientRect, offsetHeight), then ALL writes (CSS vars, transforms).\n// Interleaving read → write → read made the browser recalc the whole page's style once per section per frame (layout thrashing: 20+ recalcs a frame).\nfunction onTick(fn,read,pre){if(typeof window===\"undefined\")return()=>{};const w=window;if(!w.__msTick){w.__msTick={pre:new Set,subs:new Set,reads:new Set,raf:0};const loop=t=>{const T=w.__msTick;T.pre.forEach(r=>r(t));T.reads.forEach(r=>r(t));T.subs.forEach(s=>s(t));T.raf=requestAnimationFrame(loop);};w.__msTick.raf=requestAnimationFrame(loop);}w.__msTick.subs.add(fn);if(read)w.__msTick.reads.add(read);if(pre)w.__msTick.pre.add(pre);return()=>{w.__msTick.subs.delete(fn);if(read)w.__msTick.reads.delete(read);if(pre)w.__msTick.pre.delete(pre);};}const clamp01=v=>Math.min(1,Math.max(0,v));const easeIO=t=>{const x=clamp01(t);return x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2;};const DEF={bone:\"#F4EEE3\",ink:\"#0B0A09\",brass:\"#FF5A1F\",pine:\"#17130F\",fog:\"#D9D0C0\",stone:\"#7A7164\",cloud:\"#FFFFFF\",night:\"#0B0A09\"};const colorsOf=p=>({bone:p.bone||DEF.bone,ink:p.ink||DEF.ink,brass:p.brass||DEF.brass,pine:p.pine||DEF.pine,fog:p.fog||DEF.fog,stone:p.stone||DEF.stone,cloud:p.cloud||DEF.cloud,night:p.night||DEF.night});// a Style-bound colour arrives as var(--token-…, #hex): let the browser resolve it to r,g,b for canvas drawing\nconst cssRgb=(el,col,fb)=>{if(!el||typeof window===\"undefined\")return fb;const p=document.createElement(\"i\");p.style.display=\"none\";p.style.color=col;el.appendChild(p);const v=getComputedStyle(p).color;p.remove();const m=v.match(/(\\d+(?:\\.\\d+)?),\\s*(\\d+(?:\\.\\d+)?),\\s*(\\d+(?:\\.\\d+)?)/);return m?`${Math.round(+m[1])},${Math.round(+m[2])},${Math.round(+m[3])}`:fb;};// Stage 7: the sold-sign red is mixed 4% toward black so white labels on it (status tags, plates, chips) clear 4.5:1 (#D8452E alone = 4.37)\nconst cssVars=c=>({\"--ms-bone\":c.bone,\"--ms-ink\":c.ink,\"--ms-brass\":c.brass,\"--ms-pine\":c.pine,\"--ms-fog\":c.fog,\"--ms-stone\":c.stone,\"--ms-cloud\":c.cloud,\"--ms-night\":c.night});const COLOR_CONTROLS={bone:{type:ControlType.Color,title:\"Paper\",defaultValue:DEF.bone},ink:{type:ControlType.Color,title:\"Ink\",defaultValue:DEF.ink},brass:{type:ControlType.Color,title:\"Accent\",defaultValue:DEF.brass},pine:{type:ControlType.Color,title:\"Deep\",defaultValue:DEF.pine},fog:{type:ControlType.Color,title:\"Line\",defaultValue:DEF.fog},stone:{type:ControlType.Color,title:\"Muted\",defaultValue:DEF.stone},cloud:{type:ControlType.Color,title:\"White\",defaultValue:DEF.cloud},night:{type:ControlType.Color,title:\"Dark\",defaultValue:DEF.night}};// ---- Fonts: Custom Fonts toggle → Font controls; off = Archivo / Schibsted Grotesk / IBM Plex Mono ----\nconst FONT_CONTROLS={customFonts:{type:ControlType.Boolean,title:\"Custom Fonts\",description:\"Off = the site fonts (set once on the Header in the Site Layout). On = different fonts for this section only\",defaultValue:false},displayFont:{type:ControlType.Font,title:\"Display Font\",defaultFontType:\"sans-serif\",hidden:p=>!p.customFonts},bodyFont:{type:ControlType.Font,title:\"Body Font\",defaultFontType:\"sans-serif\",hidden:p=>!p.customFonts},monoFont:{type:ControlType.Font,title:\"Mono Font\",defaultFontType:\"monospace\",hidden:p=>!p.customFonts}};const NUMF=\"var(--ms-font-m, 'IBM Plex Mono'), ui-monospace, monospace\";// Site-wide fonts: the Header (Site Layout, every page) writes --ms-font-d/b/m (+ weights) on :root when its Custom Fonts is on. A section uses them unless its own Custom Fonts is on.\nconst siteFontCss=p=>{if(!p||!p.customFonts)return\"\";const v=[];const put=(k,f,w)=>{const fam=famCss(f);if(fam){v.push(`--ms-font-${k}:${fam}`);v.push(`--ms-font-${k}w:${wOf(f,w)}`);}};put(\"d\",p.displayFont,800);put(\"b\",p.bodyFont,400);put(\"m\",p.monoFont,400);put(\"a\",p.accentFont,400);return v.length?`:root{${v.join(\";\")}}`:\"\";};function fontsOf(p){const on=!!p.customFonts;const D={fontFamily:stack(on,p.displayFont,\"var(--ms-font-d, 'Archivo')\",\"'Arial Black', Arial, Helvetica, sans-serif\"),fontWeight:on?wOf(p.displayFont,800):\"var(--ms-font-dw, 800)\",fontStretch:on?undefined:\"var(--ms-font-ds, 125%)\",fontStyle:on&&p.displayFont&&p.displayFont.fontStyle?p.displayFont.fontStyle:\"normal\"};const B={fontFamily:stack(on,p.bodyFont,\"var(--ms-font-b, 'Schibsted Grotesk')\",\"Inter, system-ui, -apple-system, Arial, sans-serif\"),fontWeight:on?wOf(p.bodyFont,400):\"var(--ms-font-bw, 400)\"};const M={fontFamily:stack(on,p.monoFont,\"var(--ms-font-m, 'IBM Plex Mono')\",\"ui-monospace, SFMono-Regular, Menlo, monospace\"),fontWeight:on?wOf(p.monoFont,400):\"var(--ms-font-mw, 400)\"};return{D,B,M};}const BP_CONTROL={bpHint:{type:ControlType.Enum,title:\"Breakpoint Hint\",description:\"Set per breakpoint copy so the server render starts at the right width\",options:[\"auto\",\"desktop\",\"tablet\",\"phone\"],optionTitles:[\"Auto\",\"Desktop\",\"Tablet\",\"Phone\"],defaultValue:\"auto\",hidden:()=>true}};// ---- Button system: PILLS (the approved hero v3). solid = orange face, ink label, a fill sweeps in from the left, the arrow travels out and a second one arrives; ghost = hairline ring; quiet = small tinted pill; ink = ink face with cream label (for the ORANGE band). Magnetic on desktop (useMagnet). ----\nconst Glyph=({k})=>k===\"apple\"?/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M16.4 12.6c0-2.4 2-3.6 2.1-3.7-1.1-1.7-2.9-1.9-3.5-1.9-1.5-.2-2.9.9-3.7.9-.8 0-1.9-.9-3.2-.8-1.6 0-3.1 1-4 2.4-1.7 3-.4 7.4 1.2 9.8.8 1.2 1.8 2.5 3 2.4 1.2 0 1.7-.8 3.1-.8s1.9.8 3.2.7c1.3 0 2.1-1.2 2.9-2.4.9-1.4 1.3-2.7 1.3-2.8-.1 0-2.5-1-2.4-3.8zM14.1 5.5c.7-.8 1.1-1.9 1-3-1 0-2.1.7-2.8 1.5-.6.7-1.2 1.8-1 2.9 1 .1 2.1-.6 2.8-1.4z\"})}):k===\"play\"?/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M4.2 2.6c-.3.3-.4.7-.4 1.2v16.4c0 .5.1.9.4 1.2l.1.1 9.2-9.2v-.2L4.3 2.5l-.1.1zM16.6 15.4l-3.1-3.1v-.2l3.1-3.1.1.1 3.6 2.1c1 .6 1 1.6 0 2.2l-3.6 2-.1 0zM16.7 15.3L13.5 12 4.2 21.4c.3.4.9.4 1.5.1l11-6.2M16.7 8.7L5.7 2.5c-.6-.4-1.2-.3-1.5.1l9.3 9.4 3.2-3.3z\"})}):k===\"mail\"?/*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":true,fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"rect\",{x:\"3\",y:\"5\",width:\"18\",height:\"14\",rx:\"3\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M4 7l8 6 8-6\"})]}):k===\"down\"?/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":true,fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 4v11M7 10.5l5 5 5-5M5 20h14\"})}):/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":true,fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14M13 5l7 7-7 7\"})});// In-page CTA jumps (\"#download\", \"/#download\"): scroll to the section when it is on this page, otherwise go to it on the home page.\nfunction jumpTo(e,href){try{const m=String(href||\"\").match(/^\\/?#([\\w-]+)$/);if(!m)return;const el=document.getElementById(m[1]);if(el){e.preventDefault();const W=window;const L=W.__ltLenis||W.__vcLenis||W.lenis;if(L&&L.scrollTo)L.scrollTo(el,{offset:-20});else el.scrollIntoView({behavior:\"smooth\",block:\"start\"});try{history.replaceState(null,\"\",\"#\"+m[1]);}catch(x){}}else if(href.startsWith(\"#\")){e.preventDefault();window.location.href=\"/\"+href;}}catch(x){}}// display text that is NOT the wordmark (section headlines, card h3, big numbers): Archivo 760 at 110% width. With a section's Custom Fonts on, the picked font is used as is.\nconst HD=D=>D.fontStretch?{...D,fontWeight:\"var(--ms-font-hw, 760)\",fontStretch:\"var(--ms-font-hs, 110%)\"}:D;const BtnArrow=()=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.4\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14M13 5l7 7-7 7\"})});const Btn=({href,label,kind=\"solid\",arrow=true,style,className,onClick,ariaLabel,cur,icon,sub,as})=>{const inner=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"i\",{className:\"ms-btn-fill\",\"aria-hidden\":true}),icon===\"play\"&&/*#__PURE__*/_jsx(\"span\",{className:\"ms-btn-play\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M8.5 5.6v12.8a.9.9 0 0 0 1.37.77l10.2-6.4a.9.9 0 0 0 0-1.54l-10.2-6.4a.9.9 0 0 0-1.37.77z\"})})}),/*#__PURE__*/_jsxs(\"span\",{className:\"ms-btn-l\",children:[sub&&/*#__PURE__*/_jsx(\"small\",{className:\"ms-sub\",children:sub}),/*#__PURE__*/_jsx(\"span\",{className:\"ms-mark\",children:label})]}),arrow&&icon!==\"play\"&&/*#__PURE__*/_jsxs(\"span\",{className:\"ms-btn-a\",\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(BtnArrow,{}),/*#__PURE__*/_jsx(BtnArrow,{})]})]});const cls=`ms-btn ms-${kind}${sub?\" ms-two\":\"\"}${icon===\"play\"?\" ms-hasplay\":\"\"}${className?\" \"+className:\"\"}`;if(as===\"button\"||!href)return /*#__PURE__*/_jsx(\"button\",{type:\"button\",className:cls,\"data-mag\":true,\"data-cur\":cur||\"go\",onClick:onClick,\"aria-label\":ariaLabel,style:style,children:inner});return /*#__PURE__*/_jsx(\"a\",{className:cls,\"data-mag\":true,\"data-cur\":cur||\"go\",href:href,target:/^https?:\\/\\//.test(href||\"\")?\"_blank\":undefined,rel:/^https?:\\/\\//.test(href||\"\")?\"noopener\":undefined,onClick:onClick||(e=>jumpTo(e,href)),\"aria-label\":ariaLabel,style:style,children:inner});};function useNearFocus(root,live){useEffect(()=>{if(!live||!root.current)return;const el=root.current;const f=e=>{const t=e.target;const sc=t.closest?.(\".ms-inring\");if(!sc)return;try{t.scrollIntoView({block:\"nearest\",inline:\"nearest\"});}catch(x){}};el.addEventListener(\"focusin\",f);return()=>el.removeEventListener(\"focusin\",f);},[live]);}function useMagnet(root,live){useEffect(()=>{if(!live||!root.current||!window.matchMedia(\"(hover:hover) and (pointer:fine)\").matches)return;const r=root.current;const btns=()=>Array.from(r.querySelectorAll(\"[data-mag]\"));const mv=e=>{for(const b of btns()){const rc=b.getBoundingClientRect();const dx=e.clientX-(rc.left+rc.width/2),dy=e.clientY-(rc.top+rc.height/2);const d=Math.hypot(dx,dy);const pull=d<150?(1-d/150)*8:0;b.style.setProperty(\"--mx\",`${dx/(d||1)*pull}px`);b.style.setProperty(\"--my\",`${dy/(d||1)*pull}px`);}};const lv=()=>{for(const b of btns()){b.style.setProperty(\"--mx\",\"0px\");b.style.setProperty(\"--my\",\"0px\");}};r.addEventListener(\"pointermove\",mv);r.addEventListener(\"pointerleave\",lv);return()=>{r.removeEventListener(\"pointermove\",mv);r.removeEventListener(\"pointerleave\",lv);};},[live]);}const CSS_BASE=`\n:where(.ms){position:relative;z-index:10} .ms,.ms *{box-sizing:border-box;min-width:0} .ms-sr{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;padding:0!important;margin:-1px!important;border:0!important} :where(.ms) a{color:inherit} html,body{overflow-x:clip}\n:where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex=\"-1\"]),[role=\"button\"]):focus-visible{outline:3px solid var(--ms-ink,#0E1014)!important;outline-offset:2px!important;box-shadow:0 0 0 2px var(--ms-bone,#F1EEE7)!important} :where(.ms-dark) :where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex=\"-1\"])):focus-visible{outline-color:var(--ms-cloud,#FFFFFF)!important;box-shadow:0 0 0 2px var(--ms-night,#0A0B0F)!important} :where(.ms-inring) :where(a[href],button):focus-visible{outline-offset:-4px!important;box-shadow:none!important} :where(.ms) :is(input:not([type=range]):not([type=checkbox]):not([type=radio]),textarea,select):focus-visible{outline:2px solid currentColor!important;outline-offset:2px!important;box-shadow:none!important} :where(.ms) textarea{resize:none} .ms-inring:focus-visible{outline-offset:-3px!important;box-shadow:none!important} html{scroll-padding-top:96px;scroll-padding-bottom:88px}\n/* any other focusable (e.g. a keyboard-focusable scroll row) gets the kit ring, never the browser default */ :where(.ms) :focus-visible{outline:3px solid var(--ms-ink,#0E1014);outline-offset:2px} :where(.ms-dark) :focus-visible{outline-color:var(--ms-cloud,#FFFFFF)}\n/* controls inside clipped / sideways-scrolling rows draw their ring INSIDE the control so overflow never cuts it: put class ms-inring on the scrolling row */ :where(.ms-inring,.msfq-tabs,.mssc-days,.mssc-chips) :where(a[href],button,input,[tabindex]):focus-visible{outline-offset:-3px!important;box-shadow:none!important} :where(.ms-inring,.msfq-tabs,.mssc-days,.mssc-chips) :where([aria-pressed=\"true\"],[aria-selected=\"true\"],[aria-checked=\"true\"],[aria-current=\"page\"]):focus-visible{outline-color:var(--ms-bone,#F4EEE3)!important} :where(.ms-dark) :where(.ms-inring,.msfq-tabs,.mssc-days,.mssc-chips) :where([aria-pressed=\"true\"],[aria-selected=\"true\"],[aria-checked=\"true\"],[aria-current=\"page\"]):focus-visible{outline-color:var(--ms-night,#0B0A09)!important}\n/* a light card inside a dark section keeps the INK ring (a white ring on a white card is invisible) */ :where(.ms-dark) :where(.ms-lt) :where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex=\"-1\"])):focus-visible{outline-color:var(--ms-ink,#0E1014)!important;box-shadow:0 0 0 2px var(--ms-cloud,#FFFFFF)!important}\n.ms-btn{position:relative;display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 22px;border:0;border-radius:999px;overflow:hidden;isolation:isolate;text-decoration:none;white-space:nowrap;font:inherit;font-size:14px;font-weight:600;line-height:1;letter-spacing:0;cursor:pointer;-webkit-appearance:none;appearance:none;background:var(--face);color:var(--fg)!important;box-shadow:var(--ring,none);transform:translate(var(--mx,0px),var(--my,0px));transition:transform .45s cubic-bezier(.34,1.56,.64,1),box-shadow .4s,color .35s .05s}\n.ms-btn:hover,.ms-btn:focus-visible{color:var(--fg2)!important} .ms-btn:active{transform:translate(var(--mx,0px),var(--my,0px)) scale(.96);transition-duration:.12s}\n.ms-btn-fill{position:absolute;z-index:-1;inset:0;border-radius:inherit;background:var(--fill);transform:translateX(-101%);transition:transform .6s cubic-bezier(.3,.9,.3,1)} .ms-btn:hover .ms-btn-fill,.ms-btn:focus-visible .ms-btn-fill{transform:none}\n.ms-btn-l{position:relative;display:inline-flex;flex-direction:column;justify-content:center;line-height:1.15} .ms-sub{display:block;font-size:10.5px;font-weight:500;letter-spacing:.04em;opacity:.75;margin-bottom:1px} .ms-mark{display:inline-block}\n.ms-btn-a{position:relative;display:block;flex:none;width:16px;height:16px;overflow:hidden} .ms-btn-a svg{position:absolute;inset:0;width:16px;height:16px;transition:transform .55s cubic-bezier(.3,.9,.3,1)} .ms-btn-a svg+svg{transform:translateX(-130%)} .ms-btn:hover .ms-btn-a svg:first-child,.ms-btn:focus-visible .ms-btn-a svg:first-child{transform:translateX(130%)} .ms-btn:hover .ms-btn-a svg+svg,.ms-btn:focus-visible .ms-btn-a svg+svg{transform:none}\n.ms-btn.ms-hasplay{padding-left:9px} .ms-btn-play{position:relative;display:grid;place-items:center;width:30px;height:30px;flex:none;border-radius:50%;background:var(--fg);color:var(--playfg,var(--ms-night));transition:background .35s,transform .45s cubic-bezier(.34,1.56,.64,1)} .ms-btn-play svg{width:13px;height:13px;translate:1px 0} .ms-btn:hover .ms-btn-play{background:var(--ms-brass);transform:scale(1.08)}\n/* solid: the orange pill with an INK label everywhere (white on the orange is 3.1:1). The sweep is white on dark grounds, ink on cream. */\n.ms-btn.ms-solid{--face:var(--ms-brass);--fg:var(--ms-ink);--fill:var(--ms-cloud);--fg2:var(--ms-ink);--ring:0 10px 30px -12px color-mix(in srgb,var(--ms-brass) 80%,transparent)}\n.ms:not(.ms-dark) .ms-btn.ms-solid,.ms-lt .ms-btn.ms-solid{--fill:var(--ms-ink);--fg2:var(--ms-cloud)}\n.ms-btn.ms-ghost{--face:transparent;--fg:var(--ms-cloud);--fill:var(--ms-cloud);--fg2:var(--ms-ink);--ring:inset 0 0 0 1px color-mix(in srgb,var(--ms-cloud) 34%,transparent);--playfg:var(--ms-night)}\n.ms:not(.ms-dark) .ms-btn.ms-ghost,.ms-lt .ms-btn.ms-ghost{--fg:var(--ms-ink);--fill:var(--ms-ink);--fg2:var(--ms-cloud);--ring:inset 0 0 0 1px color-mix(in srgb,var(--ms-ink) 30%,transparent);--playfg:var(--ms-bone)}\n.ms-btn.ms-quiet{height:38px;padding:0 15px;gap:8px;font-size:13px;--face:color-mix(in srgb,var(--ms-cloud) 11%,transparent);--fg:var(--ms-cloud);--fill:var(--ms-brass);--fg2:var(--ms-ink)} .ms-btn.ms-quiet .ms-btn-a,.ms-btn.ms-quiet .ms-btn-a svg{width:14px;height:14px}\n.ms:not(.ms-dark) .ms-btn.ms-quiet,.ms-lt .ms-btn.ms-quiet{--face:color-mix(in srgb,var(--ms-ink) 8%,transparent);--fg:var(--ms-ink);--fill:var(--ms-ink);--fg2:var(--ms-cloud)}\n/* ink: for the ORANGE band and cream plates — ink face, cream label, white sweep */\n.ms .ms-btn.ms-ink,.ms-btn.ms-ink{--face:var(--ms-ink);--fg:var(--ms-bone);--fill:var(--ms-cloud);--fg2:var(--ms-ink);--ring:none}\n.ms-lt .ms-btn.ms-ink{--fill:var(--ms-brass);--fg2:var(--ms-ink)}\n/* on the orange band the solid button turns ink (orange on orange is invisible); on a cream plate inside the band it is orange again */\n.ms-band .ms-btn.ms-solid{--face:var(--ms-ink);--fg:var(--ms-bone);--fill:var(--ms-cloud);--fg2:var(--ms-ink);--ring:none} .ms-band .ms-lt .ms-btn.ms-solid{--face:var(--ms-brass);--fg:var(--ms-ink);--fill:var(--ms-ink);--fg2:var(--ms-cloud)}\n.ms-btn:disabled,.ms-btn[aria-disabled=\"true\"]{opacity:.5;pointer-events:none}\n@media (max-width:600px),(hover:none){.ms .ms-btn{max-width:100%;height:46px;padding:0 19px} .ms .ms-btn.ms-quiet{height:40px;padding:0 15px}}\n.ms button,.ms input,.ms select,.ms textarea{font-family:inherit}\n/* TEXT-SAFE accents: the orange is a SURFACE colour on cream (2.7:1 as text). Accent TEXT on cream / white plates = orange mixed 30% toward ink (#B64218, 4.8:1 on #F4EEE3, 5.5:1 on white); on dark grounds the orange itself reads (6.3:1). On the orange band (.ms-band) the accent is an ink plate with cream text. */\n.ms{--ms-acc:color-mix(in srgb,var(--ms-brass) 70%,var(--ms-ink));--ms-acc-lg:color-mix(in srgb,var(--ms-brass) 70%,var(--ms-ink));--ms-hl:var(--ms-brass);--ms-mut:color-mix(in srgb,var(--ms-stone) 70%,var(--ms-ink));--ms-acc-d:var(--ms-brass)}\n.ms-lt,.ms .ms-lt{--ms-acc:color-mix(in srgb,var(--ms-brass) 70%,var(--ms-ink));--ms-acc-lg:color-mix(in srgb,var(--ms-brass) 70%,var(--ms-ink));--ms-hl:var(--ms-brass);--ms-mut:color-mix(in srgb,var(--ms-stone) 70%,var(--ms-ink));color:var(--ms-ink)}\n.ms-dark,.ms.ms-dark{--ms-acc:var(--ms-brass);--ms-acc-lg:var(--ms-brass);--ms-hl:transparent;--ms-mut:color-mix(in srgb,var(--ms-stone) 30%,var(--ms-cloud))}\n.ms-band,.ms.ms-band{--ms-acc:var(--ms-ink);--ms-acc-lg:var(--ms-ink);--ms-mut:color-mix(in srgb,var(--ms-ink) 82%,var(--ms-brass))}\n/* section grounds */\n.ms-sec{background:var(--ms-bone);color:var(--ms-ink)} .ms-sec.ms-dark{background:var(--ms-night);color:var(--ms-cloud)} .ms-sec.ms-band{background:var(--ms-brass);color:var(--ms-ink)}\n/* photos come up like house lights: slightly dim until the holder is on (.is-on) or hovered — brightness on the IMAGE only */\n.ms-lit{filter:brightness(.72) saturate(.9);transition:filter 1.2s ease} .is-on>.ms-lit,.is-on .ms-lit,.ms-lit.is-on,.ms-lit:hover{filter:none}\n/* the giant word: Archivo 900 uppercase, tight, like the hero wordmark */\n.ms-giant{font-weight:900!important;font-stretch:100%!important;text-transform:uppercase;letter-spacing:-.045em;line-height:.8;white-space:nowrap;user-select:none}\n/* mono programme data */\n.ms-mono{font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;line-height:1.5}\n.ms-port,.ms-live{display:inline-block;width:7px;height:7px;flex:none;border-radius:50%;background:var(--ms-brass);animation:ms-blink 1.6s ease-in-out infinite} @keyframes ms-blink{50%{opacity:.3}}\n@media (prefers-reduced-motion:reduce){.ms *,.sth *{animation-duration:.01ms!important;transition-duration:.01ms!important}}`;const IcoArrow=({s=15})=>/*#__PURE__*/_jsx(\"svg\",{width:s,height:s,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14M13 5l7 7-7 7\"})});const Stars=({v=5,s=13})=>/*#__PURE__*/_jsx(\"span\",{className:\"ms-stars\",\"aria-hidden\":true,children:[0,1,2,3,4].map(i=>/*#__PURE__*/_jsx(\"svg\",{width:s,height:s,viewBox:\"0 0 24 24\",style:{opacity:i<Math.round(v)?1:.28},children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M12 2.6l2.9 6.1 6.7.9-4.9 4.6 1.2 6.6L12 17.6 6.1 20.8l1.2-6.6L2.4 9.6l6.7-.9z\"})},i))});// ===== MAINSTAGE motion layer (composed by mk.py after _common) =====\n// One shared rAF (onTick). Sections write --sp (0 = top edge enters the viewport bottom → 1 = bottom edge leaves the top) and,\n// for tall pinned wrappers, --pp (0 = wrapper top hits the viewport top → 1 = wrapper bottom hits the viewport bottom). IO-gated.\nconst SCRUB_K=.18;// Decode a section's photos while it is still a screen and a half away, so the first frame it is on screen never waits for a decode.\nfunction usePre(el){try{const io=new IntersectionObserver(es=>{if(!es[0].isIntersecting)return;io.disconnect();el.querySelectorAll(\"img\").forEach(im=>{try{im.loading=\"eager\";im.decode().catch(()=>{});}catch(e){}});},{rootMargin:\"150% 0px 150% 0px\"});io.observe(el);}catch(e){}}function focusTo(el,frac){if(!el||typeof window===\"undefined\")return;if(window.innerWidth<810)return;const r=el.getBoundingClientRect();const vh=window.innerHeight;if(r.height<=vh*1.05)return;const y=r.top+window.scrollY+(r.height-vh)*Math.min(1,Math.max(0,frac));if(Math.abs(window.scrollY-y)<8)return;const w=window;if(w.__ltLenis)w.__ltLenis.scrollTo(y,{immediate:true,force:true});else window.scrollTo(0,y);}function useScrollVars(ref,live,rm,cb){useEffect(()=>{if(!live||rm||!ref.current)return;const el=ref.current;let vis=true,last=-9,cs=-1,cp=-1,settled=false;usePre(el);const io=new IntersectionObserver(es=>{vis=es[0].isIntersecting;},{rootMargin:\"25% 0px 25% 0px\"});io.observe(el);// eased scrub: the values glide toward the true scroll position (K per frame), so wheel steps never jump a pinned scene\nlet rt=0,rh=0,vh=1,fresh=false;const read=()=>{if(!vis&&settled){fresh=false;return;}const r=el.getBoundingClientRect();rt=r.top;rh=r.height;vh=window.innerHeight||1;fresh=true;};const off=onTick(()=>{if(!fresh)return;const sp=clamp01((vh-rt)/(vh+rh));const pp=rh>vh*1.05?clamp01(-rt/(rh-vh)):sp;if(cs<0){cs=sp;cp=pp;}else{cs+=(sp-cs)*SCRUB_K;cp+=(pp-cp)*SCRUB_K;if(Math.abs(sp-cs)<5e-4)cs=sp;if(Math.abs(pp-cp)<5e-4)cp=pp;}settled=cs===sp&&cp===pp;if(Math.abs(cs+cp-last)<3e-4)return;last=cs+cp;el.style.setProperty(\"--sp\",cs.toFixed(4));el.style.setProperty(\"--pp\",cp.toFixed(4));if(cb)cb(cs,cp);},read);return()=>{off();io.disconnect();};},[live,rm]);}// STAGE — false while the loader or the page-transition cover is on screen (html.ms-hold-*), so first-screen intros play AFTER the cover lifts, never under it. 9 s safety.\nfunction useStage(live){const[r,setR]=useState(false);useEffect(()=>{if(!live)return;const h=document.documentElement;const ok=()=>!/(^|\\s)ms-hold/.test(h.className);if(ok()){setR(true);return;}const mo=new MutationObserver(()=>{if(ok()){mo.disconnect();setR(true);}});mo.observe(h,{attributes:true,attributeFilter:[\"class\"]});const t=window.setTimeout(()=>{mo.disconnect();setR(true);},9e3);return()=>{mo.disconnect();window.clearTimeout(t);};},[live]);return r;}// true once the element has entered the viewport (stays true) — and only once the stage is clear. Reduced motion = true at once.\nfunction useOn(ref,live,rm,amount=.16){const[on,setOn]=useState(false);const still=useStill();const ready=useStage(live);useEffect(()=>{if(!live)return;if(rm){setOn(true);return;}if(!ready)return;const el=ref.current;if(!el)return;let off=()=>{};// keyboard focus: mark the section FIRST and flush styles, so the reveal that follows runs with instant transitions (a transition keeps the timing it started with)\nconst fin=e=>{try{if(e.target.matches(\":focus-visible\")){el.setAttribute(\"data-kb\",\"\");void el.offsetWidth;}}catch(x){}setOn(true);};const fout=e=>{if(!el.contains(e.relatedTarget))el.removeAttribute(\"data-kb\");};el.addEventListener(\"focusin\",fin);el.addEventListener(\"focusout\",fout);const io=new IntersectionObserver(es=>{for(const e of es)if(e.isIntersecting){io.disconnect();// IO ignores occlusion: under a curtain (Reveal) wait until about a quarter of it is uncovered\noff=onTick(()=>{const rev=el.closest(\".ms-rev.is-act\");const rv=rev?parseFloat(rev.style.getPropertyValue(\"--rv\")||\"0\"):1;if(rv>.24){setOn(true);off();}});}},{threshold:Math.min(amount,Math.max(.005,window.innerHeight*.3/Math.max(1,el.offsetHeight))),rootMargin:\"0px 0px -6% 0px\"});io.observe(el);return()=>{io.disconnect();off();el.removeEventListener(\"focusin\",fin);el.removeEventListener(\"focusout\",fout);};},[live,rm,ready]);return on||still;}// CURTAIN REVEAL — the section is pinned BEHIND the one above it and is uncovered as that one lifts away (the footer movement, for any section).\n// Wrapper = section + a spacer of T, pulled up by T (page length unchanged); the section is sticky for exactly T of scroll. T = min(section height, 100svh):\n// a tall section pins at the top, a short one sits on the bottom edge of the viewport. The section ABOVE needs a higher Layer (z-index).\nfunction Reveal({on,layer=9,style,children}){const live=useLive();const rm=useReduced();const wrap=useRef(null);const inner=useRef(null);const sp=useRef(null);const[h,setH]=useState(0);const[kb,setKb]=useState(false);// keyboard users get the footer as a normal section: a curtain taller than the screen hides its top row under the page above / the fixed header\nconst act=on&&live&&!rm&&h>0&&!kb;useEffect(()=>{if(!on||!live||rm||!inner.current)return;const el=inner.current;const m=()=>setH(el.offsetHeight);m();const ro=new ResizeObserver(m);ro.observe(el);return()=>ro.disconnect();},[on,live,rm]);useEffect(()=>{if(!act||!wrap.current)return;const el=wrap.current;let vis=true,last=-1;const io=new IntersectionObserver(es=>{vis=es[0].isIntersecting;},{rootMargin:\"30% 0px 30% 0px\"});io.observe(el);let cur=-1,T=0,vh=1,top=0,fresh=false;const read=()=>{if(!vis){fresh=false;return;}T=sp.current?sp.current.offsetHeight:0;vh=window.innerHeight;top=el.getBoundingClientRect().top;fresh=true;};const off=onTick(()=>{if(!fresh||!T)return;const rv=clamp01((vh-T-top)/T);if(cur<0||el.dataset.snap){cur=rv;delete el.dataset.snap;}else{cur+=(rv-cur)*SCRUB_K;if(Math.abs(rv-cur)<5e-4)cur=rv;}if(Math.abs(cur-last)<4e-4)return;last=cur;el.style.setProperty(\"--rv\",cur.toFixed(4));},read);return()=>{off();io.disconnect();};},[act]);return /*#__PURE__*/_jsxs(\"div\",{ref:wrap,className:`ms-rev${act?\" is-act\":\"\"}`,style:{...style||{},[\"--h\"]:`${h}px`,[\"--layer\"]:layer},onFocusCapture:e=>{if(!act||!wrap.current)return;try{if(e.target.matches(\":focus-visible\")){const t0=e.target;setKb(true);requestAnimationFrame(()=>requestAnimationFrame(()=>{try{t0.scrollIntoView({block:\"center\"});}catch(x){}}));return;}}catch(x){}const t=e.target;const w=window;const r=wrap.current.getBoundingClientRect();const T=sp.current?sp.current.offsetHeight:0;const y=Math.max(0,Math.min(document.documentElement.scrollHeight-window.innerHeight,r.top+window.scrollY-window.innerHeight+2*T));if(Math.abs(window.scrollY-y)>4){if(w.__ltLenis)w.__ltLenis.scrollTo(y,{immediate:true,force:true});else window.scrollTo(0,y);}wrap.current.dataset.snap=\"1\";requestAnimationFrame(()=>{try{const q=t.getBoundingClientRect();if(q.top<0||q.bottom>window.innerHeight)t.scrollIntoView({block:\"nearest\"});}catch(x){}});},children:[/*#__PURE__*/_jsx(\"div\",{ref:inner,className:\"ms-rev-in\",children:children}),/*#__PURE__*/_jsx(\"div\",{ref:sp,className:\"ms-rev-sp\",\"aria-hidden\":true})]});}const REVEAL_CONTROLS={reveal:{type:ControlType.Boolean,title:\"Reveal\",description:\"Curtain: this section waits behind the one above and is uncovered as that one lifts away\",enabledTitle:\"Curtain\",disabledTitle:\"Off\",defaultValue:true},layer:{type:ControlType.Number,title:\"Layer\",description:\"Stacking order. Must be LOWER than the section above (sections default to 10)\",min:0,max:20,step:1,displayStepper:true,defaultValue:9,hidden:p=>p.reveal===false}};const splitWords=s=>String(s||\"\").replace(/\\*([^*]+)\\*/g,(_m,g)=>g.trim().split(/\\s+/).map(w=>{const m=w.match(/^(.*?)([.,!?;:’']*)$/);return m&&m[1]?`*${m[1]}*${m[2]}`:w;}).join(\" \")).split(/\\s+/).filter(Boolean).map(t=>{const m=t.match(/^\\*(.+?)\\*([.,!?;:’']*)$/);return m?{t:m[1],tail:m[2],acc:true}:{t:t.replace(/\\*/g,\"\"),tail:\"\",acc:false};});const plainOf=s=>String(s||\"\").replace(/\\*/g,\"\").replace(/\\s*\\|\\s*/g,\" \").replace(/\\s+/g,\" \").trim();// Heading whose words rise out of masks. \"|\" forces a line break, *word* = the accent: orange on dark, text-safe orange (--ms-acc) on cream, ink plate on the orange band.\nconst Head=({text,on,D,tag=\"h2\",size=\"clamp(40px,4.3vw,64px)\",lh=1,delay=0,step=55,style,className})=>{const Tag=tag;let k=0;return /*#__PURE__*/_jsx(Tag,{className:`ms-hd${on?\" is-on\":\"\"}${tag===\"h1\"?\" is-ssr\":\"\"}${className?\" \"+className:\"\"}`,\"aria-label\":plainOf(text),style:{...HD(D),fontSize:size,lineHeight:lh,...style||{}},children:String(text).split(\"|\").map((line,li)=>/*#__PURE__*/_jsx(\"span\",{className:\"ms-hd-l\",\"aria-hidden\":true,children:splitWords(line).map((w,i)=>{const d=delay+k++*step;return /*#__PURE__*/_jsxs(\"span\",{className:`ms-hd-w${w.acc?\" is-accw\":\"\"}`,children:[/*#__PURE__*/_jsx(\"span\",{className:`ms-hd-i${w.acc?\" is-acc\":\"\"}`,style:{transitionDelay:`${d}ms`,[\"--pd\"]:`${d+500}ms`,[\"--dl\"]:`${d}ms`},children:w.acc?/*#__PURE__*/_jsxs(\"span\",{className:\"ms-it\",children:[w.t,w.tail,/*#__PURE__*/_jsx(\"svg\",{className:\"ms-spark\",viewBox:\"0 0 24 24\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 1.5C12.9 8 16 11.1 22.5 12 16 12.9 12.9 16 12 22.5 11.1 16 8 12.9 1.5 12 8 11.1 11.1 8 12 1.5Z\"})})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[w.t,w.tail]})}),\" \"]},i);})},li))});};const Eyebrow=({text,on,M,delay=0,style})=>text?/*#__PURE__*/_jsxs(\"p\",{className:`ms-eb${on?\" is-on\":\"\"}`,style:{...M,transitionDelay:`${delay}ms`,...style||{}},children:[/*#__PURE__*/_jsx(\"i\",{\"aria-hidden\":true}),text]}):null;// one-shot rise for copy / rows\nconst rise=(on,d=0,y=22)=>({opacity:on?1:0,translate:on?\"0 0\":`0 ${y}px`,transition:`opacity .9s ease ${d}ms, translate 1s cubic-bezier(.2,.8,.2,1) ${d}ms`});// Image that UNMASKS through a shape as it enters, settles from a zoom, then drifts with scroll (needs --sp on an ancestor).\nconst SHAPES={up:[\"inset(100% 0 0 0)\",\"inset(0 0 0 0)\"],down:[\"inset(0 0 100% 0)\",\"inset(0 0 0 0)\"],left:[\"inset(0 100% 0 0)\",\"inset(0 0 0 0)\"],right:[\"inset(0 0 0 100%)\",\"inset(0 0 0 0)\"],diag:[\"polygon(0 100%,0 100%,0 100%,0 100%)\",\"polygon(0 -160%,260% 100%,0 100%,0 100%)\"],iris:[\"circle(0% at 50% 55%)\",\"circle(85% at 50% 55%)\"],slit:[\"inset(0 50% 0 50%)\",\"inset(0 0 0 0)\"]};const Um=({src,alt=\"\",on,shape=\"up\",ratio=\"4/5\",delay=0,par=1,focus=\"50% 40%\",radius=4,sizes=\"(max-width: 809px) 100vw, 50vw\",style,className,eager=false})=>{const sh=SHAPES[shape]||SHAPES.up;const im=RS(src,sizes);return /*#__PURE__*/_jsx(\"div\",{className:`ms-um${on?\" is-on\":\"\"}${className?\" \"+className:\"\"}`,style:{aspectRatio:ratio,borderRadius:radius,clipPath:on?sh[1]:sh[0],WebkitClipPath:on?sh[1]:sh[0],transitionDelay:`${delay}ms`,[\"--par\"]:par,...style||{}},children:/*#__PURE__*/_jsx(\"img\",{src:im.src,srcSet:im.srcSet,sizes:im.sizes,alt:alt,loading:eager?\"eager\":\"lazy\",decoding:\"async\",draggable:false,style:{objectPosition:focus,transitionDelay:`${delay}ms`}})});};const CSS_MOTION=`\n.ms[data-kb] *,.ms[data-kb] *::before,.ms[data-kb] *::after,.ms [data-kb],.ms [data-kb] *,.ms [data-kb] *::before,.ms [data-kb] *::after{transition:none!important}\n.ms-sec{position:relative;z-index:10;display:block;width:100%;--sp:.5;--pp:0}\n.ms-rev{position:relative;width:100%;--rv:1} .ms-rev-in{position:relative} .ms-rev-sp{height:0}\n.ms-rev.is-act{--rv:0;--t:min(var(--h),100vh);--t:min(var(--h),100svh);z-index:var(--layer,9);margin-top:calc(var(--t)*-1)}\n.ms-rev.is-act>.ms-rev-in{position:sticky;top:calc(100vh - var(--t));top:calc(100svh - var(--t))} .ms-rev.is-act>.ms-rev-sp{height:var(--t)}\n/* the lifting edge throws a shadow on the section beneath, and that section comes out of the dark as it is uncovered */\n.ms-rev.is-act>.ms-rev-in::before{content:\"\";position:absolute;z-index:40;left:0;right:0;top:0;height:120px;translate:0 calc((1 - var(--rv))*var(--t));background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,0));opacity:min(1,calc(var(--rv)*(1 - var(--rv))*9));pointer-events:none}\n.ms-rev.is-act>.ms-rev-in::after{content:\"\";position:absolute;z-index:39;left:0;right:0;top:0;height:var(--t);background:#000;opacity:calc((1 - var(--rv))*.16);pointer-events:none}\n.ms-wrap{--pad:56px;width:100%;max-width:calc(${MAXW} + var(--pad)*2);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}\n.ms-eb{display:inline-flex;align-items:center;gap:9px;width:max-content;max-width:100%;margin:0;padding:0;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;line-height:1.5;color:var(--ms-acc);opacity:0;translate:0 10px;transition:opacity .8s ease,translate .9s cubic-bezier(.2,.8,.2,1)} .ms-eb.is-on{opacity:1;translate:0 0}\n.ms-eb i{display:block;flex:none;order:-1;width:7px;height:7px;border-radius:50%;background:var(--ms-brass);animation:ms-blink 1.6s ease-in-out infinite}\n.ms-dark .ms-eb{color:color-mix(in srgb,var(--ms-brass) 46%,var(--ms-cloud))} .ms-lt .ms-eb{color:var(--ms-acc)}\n.ms-band .ms-eb{padding:6px 12px 6px 10px;border-radius:999px;background:var(--ms-ink);color:var(--ms-bone)} .ms-band .ms-lt .ms-eb{padding:0;background:none;color:var(--ms-acc)}\n.ms-hd{margin:0;letter-spacing:-.03em;text-wrap:balance} .ms-hd-l{display:block}\n.ms-hd-w{display:inline-block;overflow:hidden;vertical-align:top;padding:0 .04em .12em;margin:0 -.04em -.12em;white-space:pre}\n.ms-hd-i{position:relative;display:inline-block;translate:0 108%;transition:translate 1.05s cubic-bezier(.2,.85,.15,1)}\n.ms-hd.is-on .ms-hd-i{translate:0 0}\n/* page h1: rises by CSS from the server HTML (no wait for hydration); paused only while a loader / transition cover holds the page */\n@keyframes ms-hd-rise{from{translate:0 108%}to{translate:0 0}}\n.ms-hd.is-ssr .ms-hd-i{animation:ms-hd-rise .8s cubic-bezier(.2,.85,.15,1) var(--dl,0ms) both}\nhtml[class*=\"ms-hold\"] .ms-hd.is-ssr .ms-hd-i{animation-play-state:paused}\n.ms-hd-w.is-accw{overflow:hidden}\n.ms-it{position:relative;display:inline-block;font-style:normal;color:var(--ms-acc)} .ms-dark .ms-it{color:var(--ms-brass)} .ms-lt .ms-it{color:var(--ms-acc)}\n.ms-band .ms-it{color:var(--ms-bone);background:var(--ms-ink);border-radius:.14em;padding:0 .16em;margin:0 -.02em} .ms-band .ms-lt .ms-it{color:var(--ms-acc);background:none;padding:0;margin:0}\n.ms-spark{display:none}\n\n.ms-um{position:relative;overflow:hidden;transition:clip-path 1.35s cubic-bezier(.7,0,.2,1);background:color-mix(in srgb,var(--ms-stone) 22%,transparent)}\n.ms-um img{position:absolute;left:0;top:-9%;width:100%;height:118%;display:block;object-fit:cover;scale:1.28;translate:0 calc((var(--sp,.5) - .5)*var(--par,1)*-7%);transition:scale 1.9s cubic-bezier(.16,.84,.24,1);user-select:none}\n.ms-um.is-on img{scale:1}\n/* diagonal cuts: the section hangs over its neighbour and is cut on a slope (clip-path, so the neighbour shows through) */\n.ms-cut-t{margin-top:calc(var(--cut,7vw)*-1);clip-path:polygon(0 var(--cut,7vw),100% 0,100% 100%,0 100%);padding-top:var(--cut,7vw)}\n.ms-cut-b{margin-bottom:calc(var(--cut,7vw)*-1);padding-bottom:var(--cut,7vw)}\n.ms-cut-t.ms-cut-b{clip-path:polygon(0 var(--cut,7vw),100% 0,100% calc(100% - var(--cut,7vw)),0 100%)}\n.ms-cut-b:not(.ms-cut-t){clip-path:polygon(0 0,100% 0,100% calc(100% - var(--cut,7vw)),0 100%)}\n@media (max-width:1099px){.ms-wrap{--pad:32px}}\n@media (max-width:699px){.ms-wrap{--pad:20px}}\n@media (prefers-reduced-motion:reduce){.ms-hd-i{translate:0 0!important} .ms-hd.is-ssr .ms-hd-i{animation:none!important} .ms-spark{scale:1!important;rotate:0deg!important;animation:none!important} .ms-um{clip-path:none!important} .ms-um img{scale:1!important;translate:0 0!important}}\n`;const SEED={site:[{\"slug\":\"site\",\"f1\":\"Mainstage\",\"f2\":\"Tech conference & summit\",\"f3\":\"Three days of talks, workshops and late hallway conversations for the people who build software, products and AI. One summit, one stage, 1,800 seats.\",\"f4\":\"hello@mainstage.events\",\"f5\":\"18–20 May 2027\",\"f6\":\"Lisbon\",\"f7\":\"Pavilh\\xe3o do Rio\",\"f8\":\"Europe/Lisbon\",\"f9\":\"2027-05-18T09:00:00+01:00\",\"f10\":\"/register\",\"f11\":\"/tickets\",\"f12\":\"X:https://x.com, LinkedIn:https://linkedin.com, YouTube:https://youtube.com, Instagram:https://instagram.com\",\"f13\":\"27\",\"f14\":\"64 speakers \\xb7 1,800 seats \\xb7 3 days\",\"f15\":\"/speakers\",\"f16\":\"€\",\"img\":\"https://framerusercontent.com/images/oPFpzaMWN4NDaSkVZ2pm5QF60I.webp\",\"img2\":\"https://framerusercontent.com/images/hzb4tz2FTR7VoWUK174y3gdhQ.webp\",\"n1\":\"1\",\"f17\":\"Cais do Rio 14, 1200-450 Lisbon, Portugal\",\"f18\":\"+351 21 555 0142\",\"img3\":\"https://framerusercontent.com/images/YB8LrqBpj2cax497GKc8CVVo.webp\"}]};const SW_BUILD=\"MsRecap@cms1\";// An override control wins only when it holds real text; empty (or a single space) inherits from the CMS.\nconst pick=(o,fb)=>o!==undefined&&o!==null&&String(o).trim()?String(o).trim():fb;const imgOf=(r,k=\"img\")=>String(r&&r[k]||\"\").split(\"?\")[0];// A cleared CMS image draws this quiet placeholder — never a stock photo, and list positions stay aligned with their rows.\nconst EMPTY_IMG=\"data:image/svg+xml;utf8,\"+encodeURIComponent(\"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 500' preserveAspectRatio='xMidYMid slice'><rect width='400' height='500' fill='#2A241D'/><rect x='120' y='170' width='160' height='160' rx='8' fill='none' stroke='#AEB6C6' stroke-width='1.5'/><rect x='100' y='150' width='200' height='200' rx='10' fill='none' stroke='#C3CAD8' stroke-width='1' stroke-dasharray='2 6'/></svg>\");const imgOr=(r,k=\"img\")=>imgOf(r,k)||EMPTY_IMG;const cmsNum=(r,k,fb=0)=>{const v=parseFloat(String((r&&r[k])??\"\"));return isFinite(v)?v:fb;};const useIso=typeof window===\"undefined\"?useEffect:useLayoutEffect;function readCMS(kind){if(typeof document===\"undefined\")return null;if(!document.querySelector('[data-ms-row=\"bridge\"]'))return null;const seen=new Set;const out=[];document.querySelectorAll(`[data-ms-row=\"${kind}\"]`).forEach(el=>{const o={};for(const a of Array.from(el.attributes))if(a.name.startsWith(\"data-\"))o[a.name.slice(5)]=a.value;const key=o.slug||JSON.stringify(o);if(seen.has(key))return;seen.add(key);out.push(o);});return out.sort((a,b)=>(parseFloat(a.n1)||0)-(parseFloat(b.n1)||0));}function useCMS(kind,fallback){const[rows,setRows]=useState(fallback);const sig=useRef(\"\");useIso(()=>{let n=0,t=0,ok=0;try{const w=window;if(!w.__ltCms||typeof w.__ltCms!==\"object\")w.__ltCms={};w.__ltCms[SW_BUILD]=1;}catch(e){}const pull=()=>{const r=readCMS(kind);if(!r)return false;const s=JSON.stringify(r);if(s!==sig.current){sig.current=s;setRows(r);}return true;};const mo=new MutationObserver(()=>{if(pull()){ok++;if(ok>2)mo.disconnect();}});mo.observe(document.body,{childList:true,subtree:true});if(pull())ok++;const poll=()=>{if(n++<30){pull();t=window.setTimeout(poll,150);}};t=window.setTimeout(poll,150);return()=>{mo.disconnect();window.clearTimeout(t);};},[kind]);return rows;}// The one-row Site collection holds every event-wide fact (name, dates, city, venue, doors time, register / tickets links). A section's \"… Override\" control only replaces it on that one section.\nfunction useSite(){const r=useCMS(\"site\",SEED.site||[]);const s=r[0]||(SEED.site||[])[0]||{};const g=k=>String(s[k]??\"\").trim();return{name:g(\"f1\"),descriptor:g(\"f2\"),tagline:g(\"f3\"),email:g(\"f4\"),dates:g(\"f5\"),city:g(\"f6\"),venue:g(\"f7\"),tz:g(\"f8\"),doors:g(\"f9\"),register:g(\"f10\")||\"/register\",tickets:g(\"f11\")||\"/tickets\",socials:g(\"f12\"),edition:g(\"f13\"),proof:g(\"f14\"),speakers:g(\"f15\")||\"/speakers\",currency:g(\"f16\")||\"€\",address:g(\"f17\"),phone:g(\"f18\"),stage:String(s.img||\"\").split(\"?\")[0],crowd:String(s.img2||\"\").split(\"?\")[0],venuePhoto:String(s.img3||\"\").split(\"?\")[0]};}// Shared lookups (Speakers and Tracks are referenced BY NAME from Sessions / Workshops / Speakers.Track). Case- and space-insensitive; undefined when the row was deleted (callers must render without it).\nconst normName=v=>String(v??\"\").trim().toLowerCase().replace(/\\s+/g,\" \");const speakerByName=(rows,name)=>{const k=normName(name);return k?rows.find(r=>normName(r.f1)===k):undefined;};const trackByName=(rows,name)=>{const k=normName(name);return k?rows.find(r=>normName(r.f2)===k||normName(r.f1)===k):undefined;};const trackColour=(rows,name,fb=\"var(--ms-brass)\")=>{const t=trackByName(rows,name);return t&&/^#[0-9a-f]{3,8}$/i.test(String(t.f5||\"\").trim())?String(t.f5).trim():fb;};// distinct values of one field, in row order (\"Day 1 · Tue 18 May\", tiers, FAQ groups)\nconst uniqOf=(rows,k)=>{const out=[];rows.forEach(r=>{const v=String(r[k]||\"\").trim();if(v&&!out.includes(v))out.push(v);});return out;};// \"Day 1 · Tue 18 May\" → { n: \"Day 1\", d: \"Tue 18 May\" }\nconst dayParts=s=>{const[n,d]=String(s||\"\").split(\"\\xb7\").map(x=>x.trim());return{n:n||\"\",d:d||\"\"};};const isSoldOut=(r,k)=>{const v=String((r&&r[k])??\"\").trim().toLowerCase();return v===\"0\"||v===\"yes\"||v===\"true\"||v===\"sold out\";};const linkList=s=>String(s||\"\").split(\",\").map(x=>x.trim()).filter(Boolean).map(x=>{const i=x.indexOf(\":\");return{l:i<0?x:x.slice(0,i).trim(),h:i<0?\"/\":x.slice(i+1).trim()};});const listOf=s=>String(s||\"\").split(\";\").map(x=>x.trim()).filter(Boolean);// The row a CMS detail page is about: the bound Slug control wins (server render included), else the last URL segment, else the first row.\nfunction useRow(kind,fallback,slug){const rows=useCMS(kind,fallback);const[path,setPath]=useState(\"\");useEffect(()=>{try{setPath(decodeURIComponent(window.location.pathname.split(\"/\").filter(Boolean).pop()||\"\"));}catch(e){}},[]);const want=String(slug||\"\").trim()||path;const row=rows.find(r=>r.slug===want)||rows[0]||{};return{row,rows};}const crumbs=s=>linkList(s);// Open now? Open Hours = \"1-6 07:00-19:00\" (weekday numbers, Mon = 1 … Sun = 7) evaluated in the Site Time Zone.\nfunction openState(spec,tz){try{const m=String(spec||\"\").match(/(\\d)\\s*-\\s*(\\d)\\s+(\\d{1,2}):(\\d{2})\\s*-\\s*(\\d{1,2}):(\\d{2})/);if(!m)return null;const parts=new Intl.DateTimeFormat(\"en-US\",{timeZone:tz||\"UTC\",weekday:\"short\",hour:\"2-digit\",minute:\"2-digit\",hour12:false}).formatToParts(new Date);const g=t=>(parts.find(p=>p.type===t)||{value:\"\"}).value;const wd=[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"].indexOf(g(\"weekday\"))+1;const mins=Number(g(\"hour\"))%24*60+Number(g(\"minute\"));const d1=Number(m[1]),d2=Number(m[2]),a=Number(m[3])*60+Number(m[4]),b=Number(m[5])*60+Number(m[6]);const open=wd>=d1&&wd<=d2&&mins>=a&&mins<b;return{open,label:open?`Open \\xb7 till ${m[5].padStart(2,\"0\")}:${m[6]}`:`Closed \\xb7 opens ${m[3].padStart(2,\"0\")}:${m[4]}`};}catch(e){return null;}}// ---- LAST YEAR: a long row of photos you can drag (mouse, with inertia), move with the arrow keys / the two buttons, or simply scroll past — the page scroll\n// (--sp) carries the row sideways. The first tile is the aftermovie. Under the row one attendee quote at a time, following the photo nearest the centre.\n// Hover a photo: full brightness and its caption slides up. Touch, phone, reduced motion and the canvas: a native scroll-snap row. ----\nconst RE_IMG=[\"1429962714451-bb934ecdc4ec\",\"1501281668745-f7f57925c3b4\",\"1515169067868-5387ec356754\",\"1528605248644-14dd04022da1\",\"1540575467063-178a50c2df87\",\"1505373877841-8d25f7d46678\",\"1591115765373-5207764f72e7\"].map(i=>({\"1429962714451-bb934ecdc4ec\":\"https://framerusercontent.com/images/hzb4tz2FTR7VoWUK174y3gdhQ.webp\",\"1501281668745-f7f57925c3b4\":\"https://framerusercontent.com/images/4t0hzwgLilvAkUvvCxjk75hnBc.webp\",\"1505373877841-8d25f7d46678\":\"https://framerusercontent.com/images/OMnTnPbzBQ0RmPr5U00kdEacY.webp\",\"1515169067868-5387ec356754\":\"https://framerusercontent.com/images/oaJqh2p6xHtk94e6lh4t7yfqnws.webp\",\"1528605248644-14dd04022da1\":\"https://framerusercontent.com/images/dFeRgg3zGJcfBfJo4NsBS6rCbN0.webp\",\"1540575467063-178a50c2df87\":\"https://framerusercontent.com/images/qwR2qk9zvVIVSl5n3WJCnswaEWY.webp\",\"1591115765373-5207764f72e7\":\"https://framerusercontent.com/images/Od0sLPh3UNsr4tc9mwj2XeBTyb8.webp\"})[i]||\"\");const RE_SHAPE=[\"3/2\",\"4/5\",\"3/2\",\"4/5\",\"3/2\",\"3/2\",\"4/5\",\"3/2\",\"4/5\",\"3/2\"];const RE_W=[\"Photos from last year\",\"Previous photos\",\"Next photos\",\"Drag, or use the arrow keys\",\"Quote\"];const reWords=s=>{const g=String(s??\"\").split(\";\");return RE_W.map((d,i)=>(g[i]||\"\").trim()||d);};const reQuotes=s=>String(s||\"\").split(\";\").map(x=>{const[q,n,r]=x.split(\"|\").map(y=>(y||\"\").trim());return{q,n,r};}).filter(x=>x.q);export default function MsRecap(props){const{eyebrow=\"09 \\xb7 Last year\",heading=\"It got|*loud.*\",stats=\"1,640 attendees \\xb7 38 countries \\xb7 4.8/5 rated\",ctaLabel=\"Past editions\",ctaLink=\"/past-editions\",captions=\"Closing night, main hall;Front row, day two;The hallway track;Speaker dinner;Main hall, 09:30;Opening keynote;Workshop room B\",movieLabel=\"Watch the aftermovie\",movieLength=\"2:14\",movieLink=\"/past-editions\",quotes=\"I came for two talks and stayed for every hallway conversation.|Marta Kowalczyk|Staff engineer;The only conference where I filled a notebook and my calendar.|Devon Achebe|Product lead;The best-run event I have been to. The workshops alone paid for the ticket.|Yuki Tanabe|Design engineer\",words=\"\",bpHint=\"auto\"}=props;const c=colorsOf(props);const{D,B,M}=fontsOf(props);useFonts();const live=useLive();const rm=useReduced();const still=useStill();const W=reWords(words);const root=useRef(null);const rail=useRef(null);const track=useRef(null);const{w}=useSize(root,bpHint);const ph=w<810,tab=!ph&&w<1100;const on=useOn(root,live,rm,.1);useMagnet(root,live);const[fine,setFine]=useState(false);useEffect(()=>{try{setFine(window.matchMedia(\"(hover:hover) and (pointer:fine)\").matches);}catch(e){}},[]);const drive=live&&!rm&&!still;const slide=drive&&!ph&&fine// transform mode: scroll + drag move the track; everything else = a native scroll row\n;const list=(Array.isArray(props.photos)?props.photos:[]).map(p=>srcOf(p,\"\")).filter(Boolean);const IM=(list.length?list:RE_IMG).slice(0,10);const CAP=listOf(captions);const Q=reQuotes(quotes);const[act,setAct]=useState(0);const[manual,setManual]=useState(-1);useEffect(()=>{setManual(-1);},[act]);const qi=Q.length?manual>=0?Math.min(manual,Q.length-1):Math.min(Q.length-1,Math.floor(act*Q.length/Math.max(1,IM.length))):0;const st=useRef({s:0,dx:0,v:0,max:0,pos:0,drag:false,lx:0,moved:0,target:null,mids:[],vw:0,act:0});const near=pos=>{const S=st.current;const cx=pos+S.vw/2;let b=0,bd=1e9;S.mids.forEach((m,i)=>{const d=Math.abs(m-cx);if(d<bd){bd=d;b=i;}});if(b!==S.act){S.act=b;setAct(b);}};const apply=()=>{const S=st.current,t=track.current;if(!t)return;S.pos=Math.min(S.max,Math.max(0,S.s+S.dx));t.style.transform=`translate3d(${(-S.pos).toFixed(1)}px,0,0)`;near(S.pos);};// measure the row (and each photo's centre) whenever it or the rail resizes\nuseLayoutEffect(()=>{const r=rail.current,t=track.current;if(!r||!t)return;const f=()=>{const S=st.current;S.vw=r.clientWidth;S.max=Math.max(0,t.scrollWidth-r.clientWidth);S.mids=Array.from(t.children).map(li=>li.offsetLeft+li.offsetWidth/2);if(slide)apply();else{t.style.transform=\"\";near(r.scrollLeft);}};f();const ro=new ResizeObserver(f);ro.observe(r);ro.observe(t);return()=>ro.disconnect();},[IM.length,slide]);// page scroll carries the row\nuseScrollVars(root,drive,rm,sp=>{if(!slide)return;const S=st.current;S.s=clamp01((sp-.2)/.5)*S.max*.82;if(!S.drag)apply();});// inertia after a drag + the eased step of the buttons / arrow keys\nuseEffect(()=>{if(!slide)return;return onTick(()=>{const S=st.current;if(S.drag)return;if(S.target!==null){const d=S.target-S.pos;if(Math.abs(d)<.6){S.dx=S.target-S.s;S.target=null;}else S.dx+=d*.16;apply();return;}if(Math.abs(S.v)>.15){S.dx-=S.v;S.v*=.93;const p=S.s+S.dx;if(p<0||p>S.max){S.dx=Math.min(S.max,Math.max(0,p))-S.s;S.v=0;}apply();}});},[slide]);// native row: follow its own scroll for the quote\nuseEffect(()=>{if(slide)return;const r=rail.current;if(!r)return;const f=()=>near(r.scrollLeft);r.addEventListener(\"scroll\",f,{passive:true});return()=>r.removeEventListener(\"scroll\",f);},[slide]);const go=dir=>{const S=st.current,r=rail.current;if(!r)return;const step=Math.max(260,r.clientWidth*.46);if(slide){S.v=0;S.target=Math.min(S.max,Math.max(0,(S.target!==null?S.target:S.pos)+dir*step));}else{try{r.scrollBy({left:dir*step,behavior:rm?\"auto\":\"smooth\"});}catch(e){r.scrollLeft+=dir*step;}}};const down=e=>{if(!slide||e.pointerType!==\"mouse\"||e.button!==0)return;const S=st.current;S.drag=true;S.lx=e.clientX;S.moved=0;S.v=0;S.target=null;S.dx=S.pos-S.s;try{e.currentTarget.setPointerCapture(e.pointerId);}catch(x){}root.current&&root.current.classList.add(\"is-grab\");};const move=e=>{const S=st.current;if(!S.drag)return;const d=e.clientX-S.lx;S.lx=e.clientX;S.moved+=Math.abs(d);S.dx-=d;S.v=d*.6+S.v*.4;const p=S.s+S.dx;S.dx=Math.min(S.max,Math.max(0,p))-S.s;apply();};const up=e=>{const S=st.current;if(!S.drag)return;S.drag=false;try{e.currentTarget.releasePointerCapture(e.pointerId);}catch(x){}root.current&&root.current.classList.remove(\"is-grab\");};const seen=e=>{const r=rail.current,S=st.current;const li=e.target&&e.target.closest?e.target.closest(\"li\"):null;if(!r||!li)return;let kb=false;try{kb=e.target.matches(\":focus-visible\");}catch(x){}if(!kb)return;if(slide){r.scrollLeft=0;const pad=parseFloat(getComputedStyle(r).paddingLeft||\"0\");S.v=0;S.target=null;S.dx=Math.min(S.max,Math.max(0,li.offsetLeft-pad))-S.s;apply();}else{try{li.scrollIntoView({block:\"nearest\",inline:\"nearest\"});}catch(x){}}};const key=e=>{if(e.key===\"ArrowRight\"){e.preventDefault();go(1);}else if(e.key===\"ArrowLeft\"){e.preventDefault();go(-1);}};const cls=`ms ms-sec ms-dark msre${ph?\" is-ph\":tab?\" is-tab\":\"\"}${on?\" is-on\":\"\"}${slide?\" is-slide\":\"\"}`;return /*#__PURE__*/_jsxs(\"section\",{ref:root,className:cls,\"aria-label\":plainOf(heading),style:{...cssVars(c),...B,...props.style||{}},children:[/*#__PURE__*/_jsx(\"link\",{rel:\"stylesheet\",href:FONTS}),/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS_BASE+CSS_MOTION+CSS_RECAP}}),/*#__PURE__*/_jsxs(\"div\",{className:\"ms-wrap msre-top\",children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(Eyebrow,{text:eyebrow,on:on,M:M}),/*#__PURE__*/_jsx(Head,{text:heading,on:on,D:D,size:ph?\"clamp(40px,11vw,52px)\":\"clamp(40px,4.3vw,64px)\",delay:90,style:{marginTop:ph?18:26}})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"msre-side\",style:rise(on,280),children:[stats&&stats.trim()&&/*#__PURE__*/_jsx(\"p\",{className:\"msre-stats ms-mono\",style:M,children:stats}),ctaLabel&&ctaLabel.trim()&&/*#__PURE__*/_jsx(Btn,{href:T(ctaLink,\"/past-editions\"),label:ctaLabel,kind:\"ghost\"})]})]}),/*#__PURE__*/_jsx(\"div\",{ref:rail,className:`msre-rail${on?\" is-on\":\"\"}`,role:\"group\",\"aria-label\":W[0],tabIndex:0,onKeyDown:key,onFocus:seen,onPointerDown:down,onPointerMove:move,onPointerUp:up,onPointerCancel:up,onClickCapture:e=>{if(st.current.moved>6){e.preventDefault();e.stopPropagation();st.current.moved=0;}},children:/*#__PURE__*/_jsx(\"ul\",{ref:track,className:\"msre-track\",children:IM.map((u,i)=>{const im=RS(u,ph?\"86vw\":\"640px\");const cap=CAP[i]||\"\";const sh=RE_SHAPE[i%RE_SHAPE.length];const first=i===0&&!!(movieLabel&&movieLabel.trim());const pic=/*#__PURE__*/_jsx(\"img\",{className:\"ms-lit\",src:im.src,srcSet:im.srcSet,sizes:im.sizes,alt:first?\"\":cap||`${W[0]} ${i+1}`,loading:\"lazy\",decoding:\"async\",draggable:false});return /*#__PURE__*/_jsx(\"li\",{className:`msre-tile${first?\" is-movie\":\"\"}${i===act?\" is-act\":\"\"}`,style:{aspectRatio:sh,...rise(on,160+Math.min(i,5)*80,36)},children:first?/*#__PURE__*/_jsxs(\"a\",{className:\"msre-movie\",href:T(movieLink,\"/past-editions\"),draggable:false,\"aria-label\":`${movieLabel}${movieLength?`, ${movieLength}`:\"\"}`,children:[pic,/*#__PURE__*/_jsx(\"span\",{className:\"msre-play\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M8.5 5.6v12.8a.9.9 0 0 0 1.37.77l10.2-6.4a.9.9 0 0 0 0-1.54l-10.2-6.4a.9.9 0 0 0-1.37.77z\"})})}),/*#__PURE__*/_jsxs(\"span\",{className:\"msre-mlab\",children:[/*#__PURE__*/_jsx(\"b\",{style:HD(D),children:movieLabel}),movieLength&&/*#__PURE__*/_jsx(\"span\",{className:\"ms-mono\",style:M,children:movieLength})]})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[pic,cap&&/*#__PURE__*/_jsx(\"span\",{className:\"msre-cap ms-mono\",style:M,children:cap})]})},i);})})}),/*#__PURE__*/_jsxs(\"div\",{className:\"ms-wrap msre-bot\",children:[Q.length>0&&/*#__PURE__*/_jsx(\"div\",{className:\"msre-quotes\",\"aria-live\":\"polite\",children:Q.map((q,i)=>/*#__PURE__*/_jsxs(\"figure\",{className:`msre-q${i===qi?\" is-act\":\"\"}`,\"aria-hidden\":i===qi?undefined:true,children:[/*#__PURE__*/_jsxs(\"blockquote\",{style:HD(D),children:[\"“\",q.q,\"”\"]}),/*#__PURE__*/_jsxs(\"figcaption\",{className:\"ms-mono\",style:M,children:[/*#__PURE__*/_jsx(\"b\",{children:q.n}),q.r&&/*#__PURE__*/_jsxs(\"span\",{children:[\" \\xb7 \",q.r]})]})]},i))}),/*#__PURE__*/_jsxs(\"div\",{className:\"msre-ctl\",style:rise(on,420),children:[Q.length>1&&/*#__PURE__*/_jsx(\"div\",{className:\"msre-dots\",children:Q.map((q,i)=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:i===qi?\"is-act\":\"\",\"aria-pressed\":i===qi,\"aria-label\":`${W[4]} ${i+1}: ${q.n}`,onClick:()=>setManual(i),children:/*#__PURE__*/_jsx(\"i\",{})},i))}),/*#__PURE__*/_jsxs(\"div\",{className:\"msre-nav\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"msre-arrow\",\"aria-label\":W[1],onClick:()=>go(-1),children:/*#__PURE__*/_jsx(IcoArrow,{s:16})}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"msre-arrow\",\"aria-label\":W[2],onClick:()=>go(1),children:/*#__PURE__*/_jsx(IcoArrow,{s:16})})]}),!ph&&/*#__PURE__*/_jsx(\"p\",{className:\"msre-hint ms-mono\",style:M,children:W[3]})]})]})]});}const CSS_RECAP=`\n.msre{padding:clamp(96px,9vw,140px) 0 clamp(96px,9vw,140px);overflow:hidden}\n.msre-top{display:flex;justify-content:space-between;align-items:flex-end;gap:28px 48px;flex-wrap:wrap}\n.msre-side{display:flex;flex-direction:column;align-items:flex-end;gap:18px}\n.msre-stats{margin:0;color:var(--ms-mut);text-align:right}\n.msre-rail{--pad:56px;--h:clamp(320px,33vw,500px);position:relative;margin-top:clamp(40px,4.4vw,64px);padding:8px max(var(--pad),calc((100% - ${MAXW}) / 2));overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory;scroll-padding-inline:max(var(--pad),calc((100% - ${MAXW}) / 2));outline-offset:-3px!important}\n.msre-rail::-webkit-scrollbar{display:none} .ms.msre .msre-rail:focus-visible{outline-offset:-5px!important;box-shadow:none!important} .ms.msre .msre-movie:focus-visible{outline-offset:-6px!important;box-shadow:none!important}\n.msre.is-slide .msre-rail{overflow:hidden;scroll-snap-type:none;cursor:grab;touch-action:pan-y} .msre.is-slide.is-grab .msre-rail{cursor:grabbing} .msre.is-grab .msre-rail *{user-select:none}\n.msre-track{list-style:none;margin:0;padding:0;display:flex;gap:clamp(10px,1.1vw,16px);width:max-content;will-change:transform}\n.msre-tile{position:relative;flex:none;height:var(--h);border-radius:18px;overflow:hidden;background:var(--ms-pine);scroll-snap-align:start}\n.msre-tile img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover;transition:filter .7s ease,scale 1.2s cubic-bezier(.16,.84,.24,1);user-select:none;-webkit-user-drag:none}\n.msre .msre-tile .ms-lit{filter:brightness(.78) saturate(.92)} .msre .msre-tile.is-act .ms-lit{filter:none}\n@media (hover:hover){.msre .msre-tile:hover .ms-lit{filter:none;scale:1.03} .msre-tile:hover .msre-cap{opacity:1;translate:0 0}}\n.msre-cap{position:absolute;left:14px;bottom:14px;max-width:calc(100% - 28px);padding:7px 11px;border-radius:999px;background:var(--ms-night);color:var(--ms-cloud);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;translate:0 12px;transition:opacity .35s,translate .5s cubic-bezier(.2,.8,.2,1)}\n.msre-tile.is-act .msre-cap{opacity:1;translate:0 0}\n.msre-movie{position:absolute;inset:0;display:block;color:var(--ms-cloud);text-decoration:none;-webkit-user-drag:none}\n.msre-movie::after{content:\"\";position:absolute;inset:auto 0 0 0;height:60%;background:linear-gradient(180deg,color-mix(in srgb,var(--ms-night) 0%,transparent),color-mix(in srgb,var(--ms-night) 82%,transparent));pointer-events:none}\n.msre .msre-tile.is-movie .ms-lit{filter:none}\n.msre-play{position:absolute;z-index:2;left:50%;top:46%;translate:-50% -50%;display:grid;place-items:center;width:clamp(72px,7vw,104px);aspect-ratio:1;border-radius:50%;background:var(--ms-brass);color:var(--ms-ink);transition:scale .5s cubic-bezier(.34,1.56,.64,1),background .35s}\n.msre-play::before{content:\"\";position:absolute;inset:-12px;border-radius:50%;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ms-cloud) 60%,transparent);animation:msre-ring 2.4s ease-out infinite}\n@keyframes msre-ring{from{opacity:.9;scale:.86}to{opacity:0;scale:1.3}}\n.msre-play svg{width:34%;height:34%;translate:6% 0}\n.msre-movie:hover .msre-play,.msre-movie:focus-visible .msre-play{scale:1.1;background:var(--ms-cloud)}\n.msre-mlab{position:absolute;z-index:2;left:22px;right:22px;bottom:20px;display:flex;align-items:baseline;justify-content:space-between;gap:14px}\n.msre-mlab b{font-size:clamp(20px,1.9vw,28px);line-height:1.05;letter-spacing:-.025em} .msre-mlab span{flex:none;color:var(--ms-cloud)}\n.msre-bot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px 56px;align-items:end;margin-top:clamp(36px,3.8vw,56px)}\n.msre-quotes{display:grid}\n.msre-q{grid-area:1/1;margin:0;max-width:30em;opacity:0;translate:0 14px;transition:opacity .5s ease,translate .7s cubic-bezier(.2,.8,.2,1);pointer-events:none}\n.msre-q.is-act{opacity:1;translate:0 0;pointer-events:auto;transition-delay:.12s}\n.msre-q blockquote{margin:0;font-size:clamp(24px,2.4vw,36px);line-height:1.12;letter-spacing:-.025em;text-wrap:balance}\n.msre-q figcaption{margin-top:16px;color:var(--ms-mut)} .msre-q figcaption b{font-weight:500;color:var(--ms-cloud)}\n.msre-ctl{display:flex;flex-direction:column;align-items:flex-end;gap:16px}\n.msre-dots{display:flex;gap:2px} .msre-dots button{display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}\n.msre-dots i{display:block;width:8px;height:8px;border-radius:50%;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--ms-cloud) 60%,transparent);transition:background .3s,box-shadow .3s,scale .3s} .msre-dots .is-act i{background:var(--ms-brass);box-shadow:none;scale:1.25}\n.msre-nav{display:flex;gap:10px}\n.msre-arrow{display:grid;place-items:center;width:52px;height:52px;padding:0;border:0;border-radius:50%;background:none;color:var(--ms-cloud);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ms-cloud) 34%,transparent);cursor:pointer;transition:background .3s,color .3s,box-shadow .3s}\n.msre-arrow:first-child svg{rotate:180deg} .msre-arrow:hover{background:var(--ms-cloud);color:var(--ms-ink);box-shadow:none}\n.msre-hint{margin:0;color:var(--ms-mut);font-size:11px}\n@media (max-width:1099px){.msre-rail{--pad:32px}}\n@media (max-width:699px){.msre-rail{--pad:20px}}\n.msre.is-ph{padding:84px 0} .msre.is-ph .msre-top{display:block} .msre.is-ph .msre-side{align-items:flex-start;margin-top:20px} .msre.is-ph .msre-stats{text-align:left}\n.msre.is-ph .msre-rail{--h:min(92vw,360px);margin-top:32px} .msre.is-ph .msre-tile{border-radius:16px;max-width:86vw} .msre.is-ph .msre-cap{opacity:1;translate:0 0}\n.msre.is-ph .msre-bot{grid-template-columns:minmax(0,1fr);gap:22px;margin-top:28px} .msre.is-ph .msre-ctl{flex-direction:row;align-items:center;justify-content:space-between} .msre.is-ph .msre-arrow{width:48px;height:48px}\n.msre.is-ph .msre-q blockquote{font-size:24px}\n@media (prefers-reduced-motion:reduce){.msre-play::before{animation:none} .msre-track{transform:none!important}}\n`;addPropertyControls(MsRecap,{...COLOR_CONTROLS,...FONT_CONTROLS,...BP_CONTROL,eyebrow:{type:ControlType.String,title:\"Eyebrow\",defaultValue:\"09 \\xb7 Last year\"},heading:{type:ControlType.String,title:\"Heading\",description:\"| = line break, *word* = the accent word\",defaultValue:\"It got|*loud.*\",displayTextArea:true},stats:{type:ControlType.String,title:\"Stats line\",defaultValue:\"1,640 attendees \\xb7 38 countries \\xb7 4.8/5 rated\"},ctaLabel:{type:ControlType.String,title:\"Button\",defaultValue:\"Past editions\"},ctaLink:{type:ControlType.Link,title:\"Button link\",defaultValue:\"/past-editions\"},photos:{type:ControlType.Array,title:\"Photos\",description:\"Up to 10. The first one is the aftermovie tile. Empty = the demo photos\",control:{type:ControlType.Image},maxCount:10},captions:{type:ControlType.String,title:\"Captions\",description:\"One per photo, in order, separated by ;\",defaultValue:\"Closing night, main hall;Front row, day two;The hallway track;Speaker dinner;Main hall, 09:30;Opening keynote;Workshop room B\",displayTextArea:true},movieLabel:{type:ControlType.String,title:\"Aftermovie label\",description:\"Empty = the first photo is a normal photo\",defaultValue:\"Watch the aftermovie\"},movieLength:{type:ControlType.String,title:\"Aftermovie length\",defaultValue:\"2:14\"},movieLink:{type:ControlType.Link,title:\"Aftermovie link\",defaultValue:\"/past-editions\"},quotes:{type:ControlType.String,title:\"Quotes\",description:\"quote|name|role, separated by ;\",defaultValue:\"I came for two talks and stayed for every hallway conversation.|Marta Kowalczyk|Staff engineer;The only conference where I filled a notebook and my calendar.|Devon Achebe|Product lead;The best-run event I have been to. The workshops alone paid for the ticket.|Yuki Tanabe|Design engineer\",displayTextArea:true},words:{type:ControlType.String,title:\"Small labels\",description:\"In this order, separated by ; — gallery name; previous button; next button; hint; quote\",defaultValue:\"\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MsRecap\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MsRecap.map"],"mappings":"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"}