{"version":3,"file":"Section.Dysobcgw.mjs","names":["useContext","useRef","useState"],"sources":["https:/framerusercontent.com/modules/QAOPTtLoApnb5MkIYZk8/OtTOdEBa3m1YNpcPzZSP/Section.js"],"sourcesContent":["// Shared full-width section shell — the only place section padding is applied.\n// Spec: PROJECT_CONTEXT.md §1 (container), §2 (spacing), \"Section relationships\".\n//\n//   <Section tone=\"surface\">\n//       <SectionHeader heading=\"…\" body=\"…\" />\n//       {content}\n//   </Section>\n//\n// Direct children of <Section> are separated by headerGap (56 / 40 / 32).\n// Components render content only: no local hPad / vPad, no own ResizeObserver for spacing.\n// Two sections meeting with the same tone need a semantic.border hairline between them (borderBottom), or join:\n//   upper section join=\"below\" (bottom padding = headerGap), lower section join=\"above\" (top padding = 0).\n//\n// pinned: the section becomes a tall scroll runway (`runway` vh) with a sticky full-viewport frame; content is\n//   centred (pinAlign=\"center\") or fills the frame (pinAlign=\"fill\"). Section owns the scroll listener and shares\n//   `progress` (0 to 1) and the effective `pinned` flag through useSection(). It falls back to normal flow\n//   (pinned = false) on the canvas, with reduced motion, below 768px (unless pinOnMobile) and when the window\n//   is shorter than `minViewport`px. Components must render a complete static layout when pinned is false.\n//\n// pinFit=\"content\" (added 2026-09-24, home landing): the sticky frame is as tall as its content (not 100vh) and\n//   sticks at `stickyTop` px, which may be negative — the frame pins once part of it has scrolled off the top.\n//   `runway` is then the extra scroll (vh) after the pin; `progress` runs 0 to 1 over that extra scroll only.\n// toneBelow + splitAt: the background switches from `tone` to `toneBelow` at `splitAt` px from the section top\n//   (a hard edge, e.g. red hero → slate under the circle). Applies pinned and static. Ink still follows `tone`;\n//   content below the split reads surfaceInk(toneBelow) itself.\n// snapPoints (pinFit=\"content\" only): progress values (0–1) of the story's rest points. Inside the story one swipe,\n//   one wheel/trackpad gesture or one scroll key = one point (step paging, see the effect below); the page top is a\n//   rest point too.\n//\n// fullHeight (added 2026-10-04, coming soon page; approved exception to PROJECT_CONTEXT §9): the section is at least\n//   as tall as the screen (100svh) and its content is centred vertically. Top and bottom padding become the header\n//   gap (56 / 40 / 32): the centring gives the margin on a tall screen, the padding is only the minimum on a short one,\n//   so the content still fits a laptop screen. Static layout only (ignored when pinned).\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{createContext,useContext,useEffect,useRef,useState}from\"react\";import{RenderTarget,ControlType}from\"framer\";import{semantic,space,layout,typography,getSpacing,surfaceInk,ledeType}from\"https://framerusercontent.com/modules/HDAkrahb3ethcU2GAef2/nCb5ot8a39Uw7ZcMqia0/tokens.js\";import{prefersReducedMotion,animatedScrollTo,isAutoScrolling,dur}from\"https://framerusercontent.com/modules/YFy4SNb784n2qKl2hppy/GBtnVzB0BJq3YcX7fdeG/motion.js\";// Shared property control for any component that lets the canvas pick its surface (2026-09-23).\n// \"surfaceAlt\" is deliberately not offered — it is a deprecated alias of cream.\nexport function toneControl(defaultValue=\"surface\",title=\"Background\"){return{type:ControlType.Enum,title,options:[\"surface\",\"surfaceDark\",\"surfaceYellow\",\"surfaceRed\",\"surfaceEmber\"],optionTitles:[\"Cream\",\"Slate\",\"Yellow\",\"Red\",\"Ember\"],defaultValue,description:\"Text colours follow the surface (tokens.tsx surfaceInk). Red/ember: large text only.\"};}const SectionContext=/*#__PURE__*/createContext({...getSpacing(1200),tone:\"surface\",pinned:false,progress:0,vh:900});export function useSection(){return useContext(SectionContext);}// For full-width components that don't render <Section> (legacy own-padding sections): sets the surface\n// for descendants that read it through useSection() — e.g. InlineLink's per-surface hover.\nexport function ToneScope({tone,children}){const parent=useContext(SectionContext);return /*#__PURE__*/_jsx(SectionContext.Provider,{value:{...parent,tone},children:children});}export function Section({children,tone=\"surface\",join=\"none\",id,borderBottom=false,pinned=false,runway=300,pinAlign=\"center\",pinOnMobile=false,minViewport=720,progressBar=false,pinFit=\"viewport\",stickyTop=0,toneBelow,splitAt=0,snapPoints,fullHeight=false}){const ref=useRef(null);const[w,setW]=useState(1200);const[vh,setVh]=useState(900);const[reduced,setReduced]=useState(false);const[progress,setProgress]=useState(0);const[frameH,setFrameH]=useState(0);const frameRef=useRef(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{const el=ref.current;if(!el||typeof ResizeObserver===\"undefined\")return;if(el.offsetWidth>0)setW(el.offsetWidth);setReduced(prefersReducedMotion());setVh(window.innerHeight);const ro=new ResizeObserver(([e])=>{if(e.contentRect.width>0)setW(e.contentRect.width);});ro.observe(el);// A phone's URL bar collapsing/expanding changes innerHeight by ~50–120px mid-scroll; ignore that\n// (same width, small height change) so pinned runways and snap points don't move under the finger.\nlet lastW=window.innerWidth;const onResize=()=>{const wNow=window.innerWidth;setVh(prev=>wNow===lastW&&Math.abs(window.innerHeight-prev)<160?prev:window.innerHeight);lastW=wNow;};window.addEventListener(\"resize\",onResize,{passive:true});return()=>{ro.disconnect();window.removeEventListener(\"resize\",onResize);};},[]);const s=getSpacing(w);const active=pinned&&!isCanvas&&!reduced&&(pinOnMobile||!s.isMobile)&&vh>=minViewport;const fitContent=active&&pinFit===\"content\";useEffect(()=>{const el=frameRef.current;if(!fitContent||!el||typeof ResizeObserver===\"undefined\")return;setFrameH(el.offsetHeight);const ro=new ResizeObserver(()=>setFrameH(el.offsetHeight));ro.observe(el);return()=>ro.disconnect();},[fitContent]);// Step paging (touch 2026-09-25; wheel, trackpad and keys 2026-09-26 — \"if I scroll fast it skips the whole\n// thing\"): inside the story one gesture moves exactly one point and glides there (dur.long, ease.primary), so a\n// fling can't skip points. Loose CSS proximity snap skipped several points per flick on phones. Rest points: the\n// page top, the pin start, then the middle of each later step. Past the last point the page scrolls natively\n// again; scrolling back up from just below (within one screen) steps onto the last point, and native momentum\n// from further down is stopped there too.\nconst snapKey=fitContent&&snapPoints&&snapPoints.length?snapPoints.join(\",\"):\"\";useEffect(()=>{if(!snapKey||typeof window===\"undefined\")return;const root=document.documentElement;const run=runway/100*vh;const points=()=>{const el=ref.current;if(!el)return[];const top=el.getBoundingClientRect().top+window.scrollY-stickyTop;return[0,...snapPoints.map(p=>Math.round(top+p*run))];};const glide=dur.long;let busy=false,busyTimer;let sx=0,sy=0,decided=\"none\";let lastY=window.scrollY;let queued=0// gestures that arrived during a glide: +n down, −n up (max 2)\n;const goTo=y=>{busy=true;animatedScrollTo(y,glide);if(busyTimer)clearTimeout(busyTimer);busyTimer=setTimeout(()=>{busy=false;lastY=window.scrollY;if(queued){const down=queued>0;queued-=down?1:-1;const t=stepTarget(down);if(t!==undefined)goTo(t);else queued=0;}},glide*1e3+80);};// The rest point one step on from the current position, or undefined when the page should scroll natively\nconst stepTarget=down=>{const P=points(),y=window.scrollY,last=P[P.length-1];if(y<=last+4)return down?P.find(p=>p>y+4):[...P].reverse().find(p=>p<y-4);if(!down&&y<last+vh)return last;return undefined;};// Wheel / trackpad: one gesture = one step (2026-09-28 rework — \"after number 1 it takes 3 scrolls\" had two\n// causes, both reproduced on the live site: a gentle scroll on a 120Hz Mac sends deltas under 2px, which never\n// triggered a step yet were blocked, so nothing moved; and a new flick landing on the previous flick's momentum\n// wasn't recognised, so it was swallowed).\n// - A gesture ends after WHEEL_GAP ms without wheel events. Its deltas add up: STEP_PX in total moves a point.\n// - A trackpad flick keeps sending momentum for 1–2s. That belongs to the gesture that made it and is swallowed.\n// - A new flick usually lands on that momentum (no pause), so it is recognised by what momentum can't do.\n//   Momentum only fades and never turns around; once this gesture's smoothed delta has faded (under 60% of its\n//   peak) for FADE_MS, a climb to 3× its lowest point is a new flick; so is beating the gesture's own peak, and\n//   any delta in the other direction. A slow drag's wobble never fades that long, so it can't skip a point.\n//   SETTLE keeps the finger movement right after a step from counting twice.\n// - Gestures that arrive during a glide queue (up to two) and run when it ends.\nconst WHEEL_GAP=180,STEP_PX=6,SETTLE=250,FADE_MS=180;let wheelT=0,acc=0,stepped=false,stepT=0,ema=0,peak=0,fadeT=0,low=Infinity,lastDown=true;const onWheel=e=>{if(e.ctrlKey||Math.abs(e.deltaX)>Math.abs(e.deltaY))return;// pinch-zoom / sideways\nconst now=performance.now(),mag=Math.abs(e.deltaY),down=e.deltaY>0;const gap=now-wheelT>WHEEL_GAP;wheelT=now;ema=gap?mag:ema*.5+mag*.5// smoothed: one merged (doubled) event can't fake a flick\n;let fresh=gap;if(stepped&&!gap){if(mag>=3&&down!==lastDown)fresh=true// momentum never turns around\n;else if(now-stepT>SETTLE&&fadeT&&(now-fadeT>=FADE_MS&&ema>=3&&ema>low*3||ema>=8&&ema>peak*1.2))fresh=true;if(!fresh){if(!fadeT){peak=Math.max(peak,ema);if(ema<peak*.6){fadeT=now;low=ema;}}else if(ema>=peak*.6)fadeT=0// climbed back: a wobble, not a fade\n;else low=Math.min(low,ema);}}if(mag>0)lastDown=down;if(fresh){stepped=false;acc=gap?0:STEP_PX;}// a recognised new flick steps at once\nif(stepped){e.preventDefault();return;}// the rest of a gesture that already moved one point\nconst target=busy?undefined:stepTarget(down);if(!busy&&target===undefined)return;// outside the story: the page scrolls natively\ne.preventDefault();acc+=mag;if(acc<STEP_PX)return;// not enough yet — a gentle scroll adds up\nstepped=true;stepT=now;peak=ema;fadeT=0;low=Infinity;if(busy){queued=Math.max(-2,Math.min(2,queued+(down?1:-1)));return;}goTo(target);};// Keys that scroll the page step too (not while typing in a field)\nconst onKey=e=>{const el=e.target;if(e.metaKey||e.ctrlKey||e.altKey||el&&(el.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName)))return;const down=e.key===\"ArrowDown\"||e.key===\"PageDown\"||e.key===\" \"&&!e.shiftKey;const up=e.key===\"ArrowUp\"||e.key===\"PageUp\"||e.key===\" \"&&e.shiftKey;if(!down&&!up)return;if(busy){e.preventDefault();return;}const target=stepTarget(down);if(target===undefined)return;e.preventDefault();goTo(target);};// Touch. iOS WebKit decides on the FIRST touchmove whether the page pans natively: if that one isn't cancelled\n// the pan starts and every later preventDefault is ignored (2026-09-27, \"on phone it still does not snap\" —\n// Chrome allows cancelling until its ~15px slop, so emulation never showed it). So a gesture is claimed on its\n// first move — inside the story always (the direction is read at 6px), from just below the story only when it\n// moves up — or left native for good. A swipe that can only go natively (down past the last point, up at the\n// page top) is never claimed.\nlet claimed=false;const onStart=e=>{const t=e.touches[0];sx=t.clientX;sy=t.clientY;decided=\"none\";claimed=false;};const onMove=e=>{if(busy){if(e.cancelable)e.preventDefault();return;}if(decided===\"native\")return;if(decided===\"page\"){if(e.cancelable)e.preventDefault();return;}if(e.touches.length>1){decided=\"native\";return;}// pinch-zoom\nconst t=e.touches[0];const dx=sx-t.clientX,dy=sy-t.clientY;if(!claimed){const P=points(),last=P[P.length-1];const inStory=window.scrollY<=last+4;const canPage=inStory?dy===0||stepTarget(dy>0)!==undefined:Math.abs(dy)>=Math.abs(dx)&&dy<0&&stepTarget(false)!==undefined;if(!canPage){decided=\"native\";return;}claimed=true;}if(e.cancelable)e.preventDefault();if(Math.abs(dx)<6&&Math.abs(dy)<6)return;// claimed: wait for a direction\nif(Math.abs(dx)>Math.abs(dy))return;// sideways: nothing to page\nconst target=stepTarget(dy>0);if(target===undefined)return;decided=\"page\";goTo(target);};// Backup for the first-move claim: while the page is inside the story, before the last point, the section itself\n// refuses native panning (touch-action is read when a touch starts). Not on the last point: from there a swipe\n// onward must scroll the page natively (the claim still takes a swipe back up). Pinch-zoom stays allowed where\n// the browser supports it.\nconst el=ref.current;const noPan=typeof CSS!==\"undefined\"&&CSS.supports&&CSS.supports(\"touch-action\",\"pinch-zoom\")?\"pinch-zoom\":\"none\";const setTouchAction=()=>{const P=points();if(el&&P.length)el.style.touchAction=window.scrollY<P[P.length-1]-4?noPan:\"\";};setTouchAction();// Native momentum from below the story: stop it on the last point instead of flying through the story.\nconst onScroll=()=>{const y=window.scrollY;if(!busy&&decided!==\"page\"&&!isAutoScrolling()){const P=points(),last=P[P.length-1];if(P.length>1&&lastY>last+4&&y<last-4){root.style.overflow=\"hidden\"// ends iOS momentum\n;window.scrollTo(0,last);requestAnimationFrame(()=>{root.style.overflow=\"\";});}}lastY=window.scrollY;setTouchAction();};window.addEventListener(\"wheel\",onWheel,{passive:false});window.addEventListener(\"keydown\",onKey);window.addEventListener(\"touchstart\",onStart,{passive:true});window.addEventListener(\"touchmove\",onMove,{passive:false});window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>{if(busyTimer)clearTimeout(busyTimer);window.removeEventListener(\"wheel\",onWheel);window.removeEventListener(\"keydown\",onKey);window.removeEventListener(\"touchstart\",onStart);window.removeEventListener(\"touchmove\",onMove);window.removeEventListener(\"scroll\",onScroll);if(el)el.style.touchAction=\"\";};},[snapKey,stickyTop,runway,vh]);useEffect(()=>{if(!active){setProgress(0);return;}let raf=0;const update=()=>{const el=ref.current;if(!el)return;const top=el.getBoundingClientRect().top;// Same stable height as the runway and the snap points (a phone toolbar hiding must not shift the steps)\nconst v=fitContent?Math.max(0,Math.min(1,(stickyTop-top)/(runway/100*vh))):(()=>{const total=el.offsetHeight-window.innerHeight;return total<=0?0:Math.max(0,Math.min(1,-top/total));})();setProgress(prev=>Math.abs(prev-v)<.002?prev:v);};const onScroll=()=>{cancelAnimationFrame(raf);raf=requestAnimationFrame(update);};window.addEventListener(\"scroll\",onScroll,{passive:true});update();return()=>{window.removeEventListener(\"scroll\",onScroll);cancelAnimationFrame(raf);};},[active,fitContent,stickyTop,runway,vh]);const padY=fullHeight&&!active?s.headerGap:s.vPad;const top=join===\"above\"||join===\"both\"?\"0px\":padY;const bottom=join===\"below\"||join===\"both\"?s.headerGap:padY;const ink=surfaceInk(tone);const line=borderBottom?`1px solid ${ink.border}`:undefined;const value={...s,tone,pinned:active,progress,vh};const background=toneBelow?`linear-gradient(${semantic[tone]} 0 ${splitAt}px, ${semantic[toneBelow]} ${splitAt}px)`:semantic[tone];if(fitContent){return /*#__PURE__*/_jsx(SectionContext.Provider,{value:value,children:/*#__PURE__*/_jsx(\"div\",{ref:ref,id:id,style:{position:\"relative\",width:\"100%\",height:frameH?frameH+runway/100*vh:undefined,background,borderBottom:line,boxSizing:\"border-box\"},children:/*#__PURE__*/_jsxs(\"div\",{ref:frameRef,style:{position:\"sticky\",top:stickyTop,minHeight:vh-stickyTop,overflowX:\"clip\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{maxWidth:layout.containerMax,margin:\"0 auto\",padding:`${top} ${s.hPad} ${bottom}`,boxSizing:\"border-box\",display:\"flex\",flexDirection:\"column\",gap:s.headerGap},children:children}),progressBar?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:0,bottom:0,height:3,width:`${(progress*100).toFixed(1)}%`,backgroundColor:surfaceInk(toneBelow??tone).fill}}):null]})})});}if(active){return /*#__PURE__*/_jsx(SectionContext.Provider,{value:value,children:/*#__PURE__*/_jsx(\"div\",{ref:ref,id:id,style:{position:\"relative\",width:\"100%\",height:`${runway}vh`,background,borderBottom:line,boxSizing:\"border-box\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"sticky\",top:0,height:\"100vh\",overflow:\"hidden\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{maxWidth:layout.containerMax,margin:\"0 auto\",height:\"100%\",padding:`${s.vPad} ${s.hPad}`,boxSizing:\"border-box\",display:\"flex\",flexDirection:\"column\",justifyContent:pinAlign===\"center\"?\"center\":\"flex-start\",gap:s.headerGap},children:children}),progressBar?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:0,top:0,height:3,width:`${(progress*100).toFixed(1)}%`,backgroundColor:ink.fill}}):null]})})});}return /*#__PURE__*/_jsx(SectionContext.Provider,{value:value,children:/*#__PURE__*/_jsx(\"div\",{ref:ref,id:id,style:{width:\"100%\",background,borderBottom:line,boxSizing:\"border-box\",...fullHeight?{minHeight:\"100svh\",display:\"flex\",flexDirection:\"column\"}:null},children:/*#__PURE__*/_jsx(\"div\",{style:{maxWidth:layout.containerMax,margin:\"0 auto\",padding:`${top} ${s.hPad} ${bottom}`,boxSizing:\"border-box\",display:\"flex\",flexDirection:\"column\",gap:s.headerGap,...fullHeight?{flex:\"1 0 auto\",width:\"100%\",justifyContent:\"center\"}:null},children:children})})});}// Layout only. `as` sets the HTML tag (semantics); the heading always uses the standard section scale\n// (typography.h2 / h2Mobile). A larger heading would be an explicit named variant, not a per-call size.\n// Animation is not handled here — motion is applied by the caller via motion.tsx.\nexport function SectionHeader({eyebrow,heading,body,as=\"h2\",accent=false}){const s=useSection();// Colors come from surfaceInk (tokens.tsx): slate text on cream/yellow, cream text on slate/red/ember.\nconst ink=surfaceInk(s.tone);const headingType=s.isMobile?typography.h2Mobile:typography.h2;// Body under a heading steps up to the h4 scale on red/ember (large-text rule, tokens.tsx ledeType).\nconst bodyType=ledeType(s.tone,s.isMobile);const Heading=as;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:space.gapStandard},children:[heading?/*#__PURE__*/_jsx(Heading,{style:{...headingType,color:accent?ink.accent:ink.heading,margin:0,maxWidth:layout.headingMax},children:heading}):null,body?/*#__PURE__*/_jsx(\"p\",{style:{...bodyType,color:ink.text,margin:0,maxWidth:layout.bodyMax},children:body}):null]});}export default function SectionModule(){return null;}\nexport const __FramerMetadata__ = {\"exports\":{\"SectionHeader\":{\"type\":\"reactComponent\",\"name\":\"SectionHeader\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SectionJoin\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Section\":{\"type\":\"reactComponent\",\"name\":\"Section\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SectionTone\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSection\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toneControl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ToneScope\":{\"type\":\"reactComponent\",\"name\":\"ToneScope\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}