{"version":3,"file":"ConversionBandSection.elKzcjJS.mjs","names":["useRef","useState","__esmMin","init_ssg_sandbox_shims","window","_e","p","c","init_jsx_runtime","ce","init_npm_react_18_3_1","de","init_framer_D6uXRwWs","RenderTarget","ControlType","addPropertyControls","init_GlassCta_gNbKgs","GlassCta","useReveal","isStatic","ref","shown","setShown","el","obs","entries","deadline","inset","bottomInsetFromRootMargin","rootMargin","guard","isOnScreen","threshold","usePrefersReducedMotion","reduced","setReduced","mq","onChange","TrustLink","props","hovered","setHovered","accent","label","resolveCtaLabel","trimmed","match","core","SMCO_CANONICAL_EVENT_CTA","SMCO_LEGACY_EVENT_CTAS","scriptLengthMultiplier","chars","maxChars","mult","SMCO_SCRIPT_LENGTH_BANDS","SMCO_SCRIPT_MIN_MULT","ConversionBandSection","textPrimary","ease","reducedMotion","headerRef","headerShown","ctaRef","ctaShown","trustRef","trustShown","isMobile","setIsMobile","headerVisible","ctaVisible","trustVisible","verticalPadding","horizontalPadding","hS","headlineScale","scS","scriptScale","scriptEm","headlineLine2","scriptClipTop","SMCO_SCRIPT_CLIP_TOP_EM","scriptClipBottom","SMCO_SCRIPT_CLIP_BOTTOM_EM","reveal","distance","delay","hasEyebrow","eyebrow","effPrimaryCtaLabel","primaryCtaLabel","trustSegments","trustLine","s","linkText","trustLinkText","headlineLine1","SMCO_SCRIPT_LINE_HEIGHT","subhead","primaryCtaLink","secondaryCtaLabel","secondaryCtaLink","i","seg","trustLinkHref","init_ConversionBandSection","node","rect","vh","visible","bottomInset","parts","bottom","pct"],"sources":["https:/framerusercontent.com/modules/0YlV47ftzJv8G8haTaej/wbPePGMBb0Ovcn6qD8Ye/ConversionBandSection.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{GlassCta}from\"https://framer.com/m/GlassCta-gNbKgs.js\";import{useEffect,useRef,useState}from\"react\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicHeight 720\n */// Mirrors the observer's own threshold AND rootMargin, so the guard fires at the\n// same scroll position a working observer would — a healthy observer always wins\n// the race and the motion is unchanged. Anything unmeasurable reveals.\nconst isOnScreen=(node,threshold,bottomInset=0)=>{if(typeof node.getBoundingClientRect!==\"function\")return true;const rect=node.getBoundingClientRect();const vh=window.innerHeight||document.documentElement.clientHeight||0;if(rect.height<=0||vh<=0)return true;const visible=Math.min(rect.bottom,vh*(1-bottomInset))-Math.max(rect.top,0);return visible>0&&visible/rect.height>=threshold;};// This file's useReveal takes rootMargin per call site (three of them, each with a\n// different bottom inset), so the guard derives the inset from the same string the\n// observer was handed rather than hard-coding it — \"0px 0px -22% 0px\" -> 0.22.\n// Anything that isn't a negative bottom percentage means no inset.\nconst bottomInsetFromRootMargin=rootMargin=>{const parts=String(rootMargin).trim().split(/\\s+/);const bottom=parts.length>=3?parts[2]:\"\";const match=/^(-?\\d+(?:\\.\\d+)?)%$/.exec(bottom);if(!match)return 0;const pct=parseFloat(match[1]);return pct<0?Math.abs(pct)/100:0;};// FAIL-OPEN REVEAL (2026-08-11): this is the closing CTA band on most pages — both\n// CTAs, the headline and the trust line all hung off a bare IntersectionObserver whose\n// only escape hatch was prefers-reduced-motion. All three call sites (header, cta,\n// trust) now run this contract. Static export and canvas start revealed, a missing OR\n// throwing IntersectionObserver reveals immediately, the rect guard force-reveals if\n// the observer is constructed but never reports, and a hard deadline force-reveals even\n// if the rect can't be trusted.\n// TRANSFORM END-STATE: the boolean this hook returns is the single gate behind BOTH the\n// opacity and the transform on every node it drives — including the two masked headline\n// lines parked at translateY(112%) inside overflow:hidden clip boxes. Flipping it lands\n// opacity 1 AND translateY(0) together, so no exit path can leave text opaque but still\n// clipped outside its own mask.\nfunction useReveal(threshold=.22,rootMargin=\"0px 0px -10% 0px\"){const isStatic=RenderTarget.current()===RenderTarget.canvas||typeof window===\"undefined\";const ref=useRef(null);const[shown,setShown]=useState(isStatic);useEffect(()=>{if(isStatic||shown)return;const el=ref.current;if(!el||typeof IntersectionObserver===\"undefined\"){setShown(true);return;}let obs=null;try{obs=new IntersectionObserver(entries=>{entries.forEach(e=>{if(e.isIntersecting){setShown(true);}});},{threshold,rootMargin});obs.observe(el);}catch{setShown(true);return;}// Guard: the observer is decoration, never a gate. Poll the rect at this\n// call site's own trigger point, and force-reveal outright once the\n// deadline passes even if the rect can't be trusted.\nconst deadline=Date.now()+2e4;const inset=bottomInsetFromRootMargin(rootMargin);const guard=window.setInterval(()=>{if(isOnScreen(el,threshold,inset)||Date.now()>deadline){setShown(true);}},400);return()=>{if(obs)obs.disconnect();window.clearInterval(guard);};},[isStatic,shown,threshold,rootMargin]);return[ref,shown];}function usePrefersReducedMotion(){const[reduced,setReduced]=useState(false);useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const onChange=()=>setReduced(mq.matches);onChange();if(mq.addEventListener){mq.addEventListener(\"change\",onChange);return()=>mq.removeEventListener(\"change\",onChange);}mq.addListener(onChange);return()=>mq.removeListener(onChange);},[]);return reduced;}function TrustLink(props){const{href,label,accent}=props;const[hovered,setHovered]=useState(false);return /*#__PURE__*/_jsx(\"a\",{href:href,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),style:{color:hovered?accent:\"inherit\",textDecoration:hovered?\"underline\":\"none\",textUnderlineOffset:3,transition:\"color 200ms ease\",cursor:\"pointer\"},children:label});}// ── TEMPORARY MIGRATION SHIM (2026-08-17) ───────────────────────────────────\n// RULING (Brent): every call-to-action that invites someone to START AN EVENT\n// reads \"Build My Event\". His reasoning is why this is a rename and not a synonym\n// swap: \"we want it to be not a booking thing, but they're building something\n// creative and something cool.\"\n//\n// WHY A SHIM AND NOT JUST THE DEFAULT. primaryCtaLabel's defaultValue is corrected\n// below as well, but a default reaches nothing that already exists: Framer copies\n// defaultProps onto each canvas instance at insert time and the instance wins\n// forever after. The homepage instance (page augiA20Il, node JFqIShlg_) carries\n// \"Book Your Event\" as its own value — this is the closing CTA on the busiest page\n// on the site — and String props on a linked code-component instance cannot be\n// written through the MCP XML API (updateXmlForNode answers \"No changes were\n// made\"). So the correction is applied at render time, on the same pattern as the\n// copyright / contactEmail shims in Footer.tsx and resolveCategories() in\n// CategoryGridSection.tsx.\n//\n// DELIBERATELY NARROW. Four whole-string legacy phrases and nothing else. It is\n// applied ONLY to the PRIMARY CTA — the secondary CTA (\"Talk to a Chef →\") is a\n// descriptive label pointing at a conversation, not an invitation to start an\n// event, and Brent named it explicitly as one to leave alone. A shim that rewrote\n// every CTA-shaped string would be worse than the drift it fixes.\n//\n// The comparison is case-insensitive and tolerates a trailing arrow only so one\n// legacy phrase is not four entries.\n//\n// ARROW DROPPED (2026-08-17, second pass — Brent: \"We can drop the arrow for the\n// Build my Event.\"). The arrow used to be handed straight back on the way out; it is\n// now DISCARDED, so the primary CTA paints exactly \"Build My Event\" — no trailing\n// arrow, no trailing space. This band's primary is a filled button and carried no\n// arrow today anyway, so nothing visible changes here; the shim is brought in line\n// with its siblings so an instance that DOES carry one is normalised. The secondary\n// CTA (\"Talk to a Chef →\") never goes through this function and keeps its arrow.\n// The canonical phrase is on the match list so \"Build My Event →\" is caught too.\n//\n// FAILS OPEN, like everything else in this file: a blank label, a non-string, or\n// anything outside the four phrases is returned UNCHANGED, so an author's genuine\n// custom string always wins and a deliberately blanked CTA stays blank.\n//\n// PURE RENDER-TIME DERIVATION — no state, no effect. Framer static-renders this\n// band, and a falsy-seeded state corrected in an effect is a known first-paint bug\n// on this project.\n//\n// TEMPORARY. Delete this block, and the resolveCtaLabel() call at the GlassCta\n// below, once every canvas instance carries \"Build My Event\" as its own value. A\n// silent rewrite inside a render is a trap for whoever reads this next.\nconst SMCO_CANONICAL_EVENT_CTA=\"Build My Event\";const SMCO_LEGACY_EVENT_CTAS=[\"book your event\",\"build your event\",\"design your event\",\"start booking\"];function resolveCtaLabel(label){if(typeof label!==\"string\")return label;const trimmed=label.trim();if(trimmed.length===0)return label;// Split a single trailing arrow off so a phrase typed WITH one still matches.\n// 2026-08-17 (second pass): what comes off is DISCARDED, not re-attached.\nconst match=/^(.*?)(\\s*→)$/.exec(trimmed);const core=(match?match[1]:trimmed).trim().toLowerCase();if(core!==SMCO_CANONICAL_EVENT_CTA.toLowerCase()&&SMCO_LEGACY_EVENT_CTAS.indexOf(core)<0)return label;return SMCO_CANONICAL_EVENT_CTA;}// ── LENGTH-AWARE SCRIPT ACCENT SIZE (2026-08-17) ────────────────────────────\n// headlineLine2 is the Janelotus accent, and it is an author-editable prop, so a\n// hand-set size is the wrong DEFAULT: whatever an author dials in has to be\n// retuned the next time the copy changes. The default size is therefore derived\n// from the accent's own character count, and scriptScale MULTIPLIES whatever that\n// resolves to — an override, not a requirement.\n//\n// PURE DERIVATION, COMPUTED DURING RENDER. No state, no effect, no measurement:\n// the character count is known before layout, so nothing here has to wait for a\n// pass and then correct itself. Framer static-renders this component, and a\n// falsy-seeded state fixed up in an effect ships the wrong thing in the served\n// HTML — the same rule the fail-open reveal notes below are written to enforce.\n//\n// WHERE THE THRESHOLDS COME FROM. Sorted character counts of every Janelotus\n// accent this project actually ships — 21 distinct strings harvested from the\n// published site, plus this component's own code default — are:\n//   4 4 5 6 7 7 8 8 8 9 9 10 10 10 11 12 13 14 14 15 | 17 17\n// The corpus is dense from 4 to 15 with exactly one hole in it (16) and then it\n// stops. There is no observed copy above 17, so density cannot place the upper\n// cuts and pretending otherwise would be inventing data. Above the corpus the\n// governing constraint is geometric instead: this accent is headline line 2 and\n// is meant to hold ONE line. The binding case is the widest desktop, where the\n// headline clamp is already pinned at its 96px cap while the h2 is still capped\n// at 920px — a script size of 1.38 x 96 = 132.48px in a 920px box. Measured on\n// the real face with canvas TextMetrics, the widest per-character advance among\n// corpus strings of 13+ characters is 0.29em (\"Still Deciding?\"), letter-spacing\n// included. A line therefore fits while\n//   n x 0.29em x 132.48px x mult <= 920px   ->   n <= 23.95 / mult\n// and each cut below is the exact last integer that still fits at that\n// multiplier: 23, 28, 33, 38. None of them is round, none splits an observed\n// cluster, and every one sits above the entire corpus — so no accent the project\n// ships today changes size at all, which is correct: the reported bug was\n// clipping, not size.\nconst SMCO_SCRIPT_LENGTH_BANDS=[[23,1],[28,.84],[33,.72],[38,.62]];// 39+ characters is a sentence, not an accent: it wraps whatever we do, so the\n// floor stops the size collapsing further rather than chasing a one-line fit.\nconst SMCO_SCRIPT_MIN_MULT=.55;// FAIL OPEN, like everything else in this file: an empty accent, a NaN, or any\n// value that is not a positive count returns 1 (the full authored size) rather\n// than collapsing the line to nothing.\nfunction scriptLengthMultiplier(chars){if(!(chars>0))return 1;for(const[maxChars,mult]of SMCO_SCRIPT_LENGTH_BANDS){if(chars<=maxChars)return mult;}return SMCO_SCRIPT_MIN_MULT;}// ── SCRIPT CLIP ROOM (2026-08-17) ───────────────────────────────────────────\n// Measured off the real Janelotus face at 100px with canvas TextMetrics: the\n// font's own ascent and descent are 0.75em and 0.25em, and they sum to exactly\n// 1em — which is precisely why lineHeight 1.0 LOOKED like it fitted. The INK\n// runs far outside that box: max actualBoundingBoxAscent 0.935em ('R') and max\n// actualBoundingBoxDescent 0.823em ('Y', whose swash tail is the deepest glyph\n// in the face). At line-height L the ink escapes the inline-block by\n//   top:     0.935 - (L - 1) / 2 - 0.75\n//   bottom:  (L - 1) / 2 + 0.75 + 0.823 - L\n// which at L = 1.3 is 0.035em above and 0.423em below. The two values below\n// carry that worst case with headroom, so no glyph in the face can be sheared by\n// the mask whatever an author types. Both are expressed in SCRIPT em and are\n// converted to the wrapper's own em at the call site.\n// TRADE-OFF, STATED: 0.46em of bottom clip room puts the mask edge below the\n// deepest ink, so the accent's reveal reads as a fade-rise rather than a hard\n// mask wipe. That is deliberate and it is the conclusion this project already\n// reached in SectionHeader, whose note reads \"Script/subline keep fade-rise\n// (masking clips Janelotus descenders)\". Line 1 keeps its hard mask. Durations,\n// easing and the translateY(112%) park are untouched.\nconst SMCO_SCRIPT_CLIP_TOP_EM=.1;const SMCO_SCRIPT_CLIP_BOTTOM_EM=.46;const SMCO_SCRIPT_LINE_HEIGHT=1.3;export default function ConversionBandSection(props){const{eyebrow=\"Ready When You Are\",headlineLine1=\"Let's plan something\",headlineLine2=\"they'll remember.\",headlineScale=1,scriptScale=1,subhead=\"Tell us about your team, your moment, your timeline. We'll handle the rest — ingredient kits to every guest, live chef instruction, all logistics on us.\",// 2026-08-17: was \"Book Your Event\". See the CTA shim above — the default is\n// corrected here for anything inserted from now on, and the shim catches the\n// instances that already exist. No trailing arrow, per the same day's second\n// ruling; the secondary label below keeps its own.\nprimaryCtaLabel=\"Build My Event\",// /book/ is RETIRED — /design-your-event/ is the primary path. Do not reintroduce /book/.\nprimaryCtaLink=\"/design-your-event/\",secondaryCtaLabel=\"Talk to a Chef →\",// /book/ is RETIRED — secondary CTA routes to /contact/; /design-your-event/ is the primary path.\nsecondaryCtaLink=\"/contact/\",trustLine=\"Free shipping nationwide | Live chef instruction | Event Guarantee\",trustLinkText=\"\",trustLinkHref=\"\"}=props;// Theme-fixed dark surface: the conversion closer is canonically fixed\n// dark in BOTH themes — no theme switching in this section.\nconst surface=\"#0e0e0e\";const textPrimary=\"#FAF8F3\";const textSecondary=\"rgba(250, 248, 243, 0.70)\";const textTertiary=\"rgba(250, 248, 243, 0.45)\";const accent=\"#96c0a5\";const hairlineSage=\"rgba(150, 192, 165, 0.20)\";const ease=\"cubic-bezier(0.16, 1, 0.3, 1)\";const reducedMotion=usePrefersReducedMotion();const[headerRef,headerShown]=useReveal(.25,\"0px 0px -22% 0px\");const[ctaRef,ctaShown]=useReveal(.35);const[trustRef,trustShown]=useReveal(.5);const[isMobile,setIsMobile]=useState(false);// Reduced motion collapses every reveal to its static final state.\nconst headerVisible=reducedMotion||headerShown;const ctaVisible=reducedMotion||ctaShown;const trustVisible=reducedMotion||trustShown;useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(max-width: 880px)\");const onChange=()=>setIsMobile(mq.matches);onChange();if(mq.addEventListener){mq.addEventListener(\"change\",onChange);return()=>mq.removeEventListener(\"change\",onChange);}mq.addListener(onChange);return()=>mq.removeListener(onChange);},[]);const verticalPadding=isMobile?\"120px\":\"clamp(160px, 16vw, 220px)\";const horizontalPadding=isMobile?\"24px\":\"clamp(40px, 6vw, 96px)\";// ── SIZE CONTROLS (2026-08-17) ──────────────────────────────────────────\n// Sanitising idiom matches SectionHeader's eyebrowScale / headlineScale /\n// scriptScale / bodyScale and the quoteScale added to ReviewsResultsSection\n// today: anything that is not a positive number falls back to 1.\nconst hS=typeof headlineScale===\"number\"&&headlineScale>0?headlineScale:1;const scS=typeof scriptScale===\"number\"&&scriptScale>0?scriptScale:1;// scriptScale MULTIPLIES the length-aware default rather than replacing it,\n// so the control reads as \"a little bigger / a little smaller than right\"\n// instead of an absolute that the next copy edit invalidates.\nconst scriptMult=scriptLengthMultiplier(String(headlineLine2).trim().length)*scS;// The accent is sized in em of the headline, so headlineScale is already\n// folded in — scriptEm is the accent's size RELATIVE to the headline, and\n// 1.38 x 1 reproduces the previous fixed \"1.38em\" exactly.\nconst scriptEm=1.38*scriptMult;// Clip room: expressed in the wrapper's em (which is the headline's) but\n// DERIVED FROM THE SCRIPT's size — that mismatch was the bug.\nconst scriptClipTop=SMCO_SCRIPT_CLIP_TOP_EM*scriptEm;const scriptClipBottom=SMCO_SCRIPT_CLIP_BOTTOM_EM*scriptEm;const reveal=(delay,distance=24)=>({opacity:headerVisible?1:0,transform:headerVisible?\"translateY(0)\":`translateY(${distance}px)`,transition:reducedMotion?\"none\":`opacity 0.85s ${ease} ${delay}ms, transform 0.85s ${ease} ${delay}ms`});// BLANKABLE LABEL (2026-08-17): same String()/trim() shape the trust line\n// below already uses, so a non-string instance value cannot throw here.\nconst hasEyebrow=String(eyebrow??\"\").trim().length>0;// TEMPORARY MIGRATION SHIM (2026-08-17) — see resolveCtaLabel above. Primary\n// CTA only; the secondary label is deliberately left exactly as authored.\nconst effPrimaryCtaLabel=resolveCtaLabel(primaryCtaLabel);// Pipe-separated trust line; the segment matching trustLinkText (when\n// non-empty) renders as a link, styled identically with hover affordance.\nconst trustSegments=String(trustLine).split(\"|\").map(s=>s.trim()).filter(s=>s.length>0);const linkText=String(trustLinkText).trim();return /*#__PURE__*/_jsxs(\"section\",{\"data-section\":\"conversion-band\",style:{position:\"relative\",width:\"100%\",background:surface,color:textPrimary,paddingTop:verticalPadding,paddingBottom:verticalPadding,paddingLeft:horizontalPadding,paddingRight:horizontalPadding,boxSizing:\"border-box\",fontFamily:\"'Urbanist', sans-serif\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                /* SCRIPT FACE (2026-08-11): Framer only emits an @font-face for fonts used\n                   by canvas TEXT LAYERS. This band is a code component — it names the family\n                   in an inline style but cannot cause Framer to load it, so the script line\n                   fell through to the generic 'cursive' keyword (Comic Sans on Windows\n                   Chrome, a plain sans on Android). The component therefore declares the face\n                   itself. Identical duplicates in sibling components are harmless: the\n                   browser dedupes by src and fetches the file once. */\n                @font-face {\n                    font-family: 'janelotus Regular';\n                    src: url('https://framerusercontent.com/assets/4XS7AMSvhz9Z8Mfz7OOsX6PrA.woff2') format('woff2');\n                    font-weight: 400;\n                    font-style: normal;\n                    /* FONT-DISPLAY (2026-08-17): was 'swap'. 'swap' paints the\n                       generic 'cursive' fallback — Comic Sans on Windows, Apple\n                       Chancery on macOS — the instant this text lays out, then\n                       snaps to Janelotus when the 77KB file lands. Measured on\n                       the published homepage: the Urbanist faces start at ~442ms\n                       but this one starts at ~731ms, because it is declared in a\n                       body <style> and so is not discovered until React renders\n                       the component. At 132px the cursive fallback measures\n                       918px against Janelotus' 454px, so that swap is a 102%\n                       reflow — this is the \"weird script\" the owner reports.\n                       'block' renders the glyphs INVISIBLE for the block period\n                       (~3s) instead of painting a fallback, then swaps once.\n                       Every above-the-fold script accent already sits inside a\n                       reveal wrapper at opacity 0, and the file fetches in\n                       ~230ms cold, so the block period costs nothing visible.\n                       NOT 'optional': that commits permanently to the 102%-wider\n                       cursive on any load missing its ~100ms window, which is\n                       far worse than the flash it removes.\n                       DUPLICATED BY DESIGN across HeroSection, WhoWeServeSection,\n                       ConversionBandSection and StrongloveAccent — the browser\n                       dedupes on src. All four must stay byte-identical. */\n                    font-display: block;\n                }\n            `}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",top:\"50%\",left:\"50%\",width:\"60%\",height:\"60%\",transform:\"translate(-50%, -50%)\",background:\"radial-gradient(circle, rgba(150, 192, 165, 0.10) 0%, transparent 60%)\",pointerEvents:\"none\",opacity:headerVisible?1:0,transition:reducedMotion?\"none\":`opacity 1.4s ${ease} 200ms`}}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",bottom:\"-10%\",right:\"-10%\",width:\"50%\",height:\"70%\",background:\"radial-gradient(circle, rgba(255, 127, 80, 0.10) 0%, transparent 65%)\",pointerEvents:\"none\",opacity:headerVisible?1:0,transition:reducedMotion?\"none\":`opacity 1.6s ${ease} 400ms`}}),/*#__PURE__*/_jsxs(\"div\",{ref:headerRef,style:{position:\"relative\",maxWidth:1100,margin:\"0 auto\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",textAlign:\"center\",zIndex:2},children:[hasEyebrow&&/*#__PURE__*/_jsx(\"div\",{style:{...reveal(0,14),fontFamily:\"'Urbanist', sans-serif\",// SMALL-TEXT SCALE (2026-08-12): eyebrow 13px -> 14px, matching the\n// Navigation and Footer treatment so the site reads as one system.\n// Tracking eased 0.24em -> 0.22em: at 13px/0.24em the rendered\n// letter-space was 3.12px, at 14px/0.22em it is 3.08px, so the label\n// gets its size back without gaining width or a second line at 390px.\nfontSize:14,fontWeight:600,letterSpacing:\"0.22em\",textTransform:\"uppercase\",color:accent,marginBottom:32},children:eyebrow}),/*#__PURE__*/_jsxs(\"h2\",{style:{fontFamily:\"'Urbanist', sans-serif\",// MOBILE TYPE SCALE (2026-08-11): the old mobile clamp was\n// clamp(40px, 10vw, 56px) — at 400px 10vw IS 40px, so the vw\n// term governed and both headline lines wrapped to 2 lines.\n// 7.2vw lands 28.8px at 400px (the 28–30px display target) and\n// still scales up to 34px by the 880px isMobile boundary.\n// The desktop clamp below is untouched.\n// SIZE CONTROL (2026-08-17): headlineScale multiplies every\n// term of both clamps, so the responsive behaviour is\n// unchanged and only the magnitude moves. At headlineScale 1\n// both branches resolve to exactly the values above —\n// clamp(26.0px, 7.20vw, 34.0px) and clamp(54.0px, 6.20vw,\n// 96.0px) — so the default renders identically to before this\n// change. The floors are held at the project's 13px small-text\n// floor: 26 x 0.5 (the control's minimum) is exactly 13, so\n// the guard is a no-op at every reachable setting and exists\n// to keep it that way.\nfontSize:isMobile?`clamp(${Math.max(13,26*hS).toFixed(1)}px, ${(7.2*hS).toFixed(2)}vw, ${(34*hS).toFixed(1)}px)`:`clamp(${Math.max(13,54*hS).toFixed(1)}px, ${(6.2*hS).toFixed(2)}vw, ${(96*hS).toFixed(1)}px)`,fontWeight:700,lineHeight:1.02,letterSpacing:\"-0.03em\",color:textPrimary,margin:0,marginBottom:36,maxWidth:920},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",overflow:\"hidden\",// CLIPPING FIX (2026-08-17): 0.04em -> 0.12em. Urbanist\n// 700 at lineHeight 1.02 puts the 'g' descender of\n// \"something\" 0.09em below this box, and 0.04em of clip\n// room shaved 1.7px off it at 1214px — the same bug as the\n// script line, one order smaller. 0.12em clears it with\n// headroom. This is em of the headline's own size, so it\n// already tracks headlineScale with no arithmetic.\npadding:\"0.12em 0\",margin:\"-0.12em 0\"},children:/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",opacity:headerVisible?1:0,transform:headerVisible?\"translateY(0)\":\"translateY(112%)\",transition:reducedMotion?\"none\":`opacity 0.98s ${ease} 0ms, transform 0.98s ${ease} 0ms`},children:headlineLine1})}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",overflow:\"hidden\",// CLIPPING FIX (2026-08-17): this mask is what the owner\n// saw as \"getting cut off\". The padding/margin here are a\n// matched pair — the padding buys clip room, the equal\n// negative margin hands it straight back, so the box grows\n// without moving anything. The bug was the unit: 0.12em is\n// 0.12em of the HEADLINE, and the script is 1.38x bigger,\n// so the mask only ever had 0.087em of the script's own\n// size — about half the room its ascenders need and 40% of\n// what its descenders need. Measured at 1214px that sheared\n// 10.2px off the top of the T and R and 12.6px off the y\n// tails. Both values are now computed from the script's\n// size, so they track scriptScale instead of silently going\n// short when the accent is scaled up.\npadding:`${scriptClipTop.toFixed(4)}em 0 ${scriptClipBottom.toFixed(4)}em`,margin:`${(-scriptClipTop).toFixed(4)}em 0 ${(-scriptClipBottom).toFixed(4)}em`},children:/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",opacity:headerVisible?1:0,transform:headerVisible?\"translateY(0)\":\"translateY(112%)\",transition:reducedMotion?\"none\":`opacity 0.98s ${ease} 95ms, transform 0.98s ${ease} 95ms`,color:accent,// 2026-08-11: fontStyle \"italic\" removed. Janelotus is already a\n// script face; now that the real face actually loads, the synthetic\n// slant would render off-brand. Matches the 2026-08-09 decision\n// recorded in StrongloveAccent.\n// 2026-08-11: chain leads with the real family name and drops the\n// bare 'Janelotus' guess, which never resolved.\nfontFamily:\"'janelotus Regular', 'Allura', cursive\",fontWeight:500,// SCRIPT SIZE (2026-08-17): was a fixed \"1.38em\". It is\n// now 1.38 x the length-aware multiplier x scriptScale.\n// At a multiplier of 1 this resolves to 1.3800em — the\n// previous value exactly — so the shipped copy is\n// unchanged. The max() holds the project's 13px\n// small-text floor: the smallest reachable combination\n// (mobile headline floor 13px x the 0.55 length floor x\n// scriptScale 0.5) would otherwise emit ~4.9px. An em\n// inside a font-size max() resolves against the parent,\n// so the guard costs nothing at normal settings.\nfontSize:`max(13px, ${scriptEm.toFixed(4)}em)`,letterSpacing:\"0.02em\",// CLIPPING FIX (2026-08-17): was 1.0. See the clip-room\n// note at the head of this file — at 1.0 Janelotus' ink\n// sits 0.185em above and 0.208em below its own box,\n// which both sheared it against the mask AND drove it\n// into the headline line above (21px of ink overlap at\n// 1214px). 1.3 is SectionHeader's value for this same\n// face; it drops the ink 0.15em and takes that overlap\n// to nil without touching any timing.\nlineHeight:SMCO_SCRIPT_LINE_HEIGHT},children:headlineLine2})})]}),/*#__PURE__*/_jsx(\"p\",{style:{...reveal(360,18),fontFamily:\"'Urbanist', sans-serif\",fontSize:isMobile?17:\"clamp(17px, 1.3vw, 20px)\",fontWeight:400,lineHeight:1.6,color:textSecondary,margin:0,marginBottom:isMobile?48:64,maxWidth:640},children:subhead}),/*#__PURE__*/_jsxs(\"div\",{ref:ctaRef,style:{display:\"flex\",flexDirection:isMobile?\"column\":\"row\",alignItems:\"center\",gap:isMobile?16:20,opacity:ctaVisible?1:0,transform:ctaVisible?\"translateY(0)\":\"translateY(18px)\",transition:reducedMotion?\"none\":`opacity 0.85s ${ease}, transform 0.85s ${ease}`},children:[/*#__PURE__*/_jsx(GlassCta,{label:effPrimaryCtaLabel,href:primaryCtaLink,variant:\"primary\",accentColor:\"#96c0a5\",actionColor:\"#ff7f50\",isDark:true,ease:\"cubic-bezier(0.16, 1, 0.3, 1)\"}),/*#__PURE__*/_jsx(GlassCta,{label:secondaryCtaLabel,href:secondaryCtaLink,variant:\"secondary\",accentColor:\"#96c0a5\",actionColor:\"#ff7f50\",textColor:\"rgb(244,244,244)\",isDark:true,ease:\"cubic-bezier(0.16, 1, 0.3, 1)\"})]}),/*#__PURE__*/_jsx(\"div\",{ref:trustRef,style:{marginTop:isMobile?72:96,paddingTop:32,borderTop:`1px solid ${hairlineSage}`,width:\"100%\",maxWidth:720,textAlign:\"center\",opacity:trustVisible?1:0,transform:trustVisible?\"translateY(0)\":\"translateY(12px)\",transition:reducedMotion?\"none\":`opacity 0.85s ${ease}, transform 0.85s ${ease}`},children:/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"'Urbanist', sans-serif\",// SMALL-TEXT SCALE (2026-08-12): trust line 12px -> 13px. Held one\n// step below the 14px eyebrow above rather than letting both land\n// on 14, so the closing band keeps its hierarchy instead of\n// flattening. Tracking stays 0.16em — it is already at the eased\n// end of the 0.16–0.18em band, and easing further would under-track\n// uppercase text. lineHeight 1.5 already carries the wrap.\nfontSize:13,fontWeight:600,letterSpacing:\"0.16em\",textTransform:\"uppercase\",color:textTertiary,lineHeight:1.5},children:trustSegments.map((seg,i)=>/*#__PURE__*/_jsxs(\"span\",{children:[i>0&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",children:\"  |  \"}),linkText.length>0&&seg===linkText?/*#__PURE__*/_jsx(TrustLink,{href:trustLinkHref,label:seg,accent:accent}):seg]},i))})})]})]});}addPropertyControls(ConversionBandSection,{eyebrow:{type:ControlType.String,title:\"Eyebrow\",defaultValue:\"Ready When You Are\"},headlineLine1:{type:ControlType.String,title:\"Headline L1\",defaultValue:\"Let's plan something\"},// 2026-08-17: proportional multiplier on the headline's responsive clamp.\n// Range / step / stepper match the eyebrowScale / headlineScale / scriptScale\n// / bodyScale convention in SectionHeader and the quoteScale in\n// ReviewsResultsSection.\nheadlineScale:{type:ControlType.Number,title:\"Headline Size\",defaultValue:1,min:.5,max:1.5,step:.05,displayStepper:true},headlineLine2:{type:ControlType.String,title:\"Headline L2 (Script)\",defaultValue:\"they'll remember.\"},// 2026-08-17: multiplies the length-aware default computed in the render\n// body — an override, not the whole size. Same range / step / stepper as\n// above.\nscriptScale:{type:ControlType.Number,title:\"Script Size\",defaultValue:1,min:.5,max:1.5,step:.05,displayStepper:true},subhead:{type:ControlType.String,title:\"Subhead\",defaultValue:\"Tell us about your team, your moment, your timeline. We'll handle the rest — ingredient kits to every guest, live chef instruction, all logistics on us.\",displayTextArea:true},primaryCtaLabel:{type:ControlType.String,title:\"Primary CTA\",// 2026-08-17: was \"Book Your Event\". See the CTA shim near the top of this\n// file — this default only reaches instances inserted from now on. No\n// trailing arrow: the owner dropped it for this label the same day.\ndefaultValue:\"Build My Event\"},primaryCtaLink:{type:ControlType.Link,title:\"Primary Link\"},secondaryCtaLabel:{type:ControlType.String,title:\"Secondary CTA\",defaultValue:\"Talk to a Chef →\"},secondaryCtaLink:{type:ControlType.Link,title:\"Secondary Link\"},trustLine:{type:ControlType.String,title:\"Trust Line\",defaultValue:\"Free shipping nationwide | Live chef instruction | Event Guarantee\",displayTextArea:true},trustLinkText:{type:ControlType.String,title:\"Trust Link Text\",defaultValue:\"\"},trustLinkHref:{type:ControlType.String,title:\"Trust Link URL\",defaultValue:\"\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ConversionBandSection\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ConversionBandSection.map"],"mappings":"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"}