{"version":3,"file":"shared.Beo0QcSc.mjs","names":["useState","useRef","useDarkMode","smcoImage","SMCO_IMAGE_WIDTHS","useState","_Fragment","useRef","useDarkMode","useState","smcoImage","SMCO_IMAGE_WIDTHS","useState","_Fragment","useRef","useId","useCallback","useMemo","useLayoutEffect","useEffect","useDarkMode","useState","useRef","useState","useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/GXcMT71CSRAmTtDsJmha/rGFI5gPnWiQxv0Lktndm/GlassCta.js","https:/framer.com/m/GlassCta-gNbKgs.js","https:/framerusercontent.com/modules/E34gPrYxFjRy4WL28ZY0/LUPIoff4TVouCvwW4UMO/Footer.js","https:/framerusercontent.com/modules/VDSxtkmVgVv0F2v3oBFb/ezOaZFwti6MP4dZHsTXI/SchemaOrgOrganization_3.js","https:/framerusercontent.com/modules/N4kzhq86KYI4vWDtOQHQ/xaPPcLxs3QcNm6cK6coN/ThemePageSurface.js","https:/framerusercontent.com/modules/1Tmvt0vTfkK56hhfh4gX/2tia0SdzaMUmpQsodxpp/Navigation.js","https:/framerusercontent.com/modules/YPNqqkji50JkT5twIbDZ/fZmRUyysLo7wle2Vi7sY/ScrollLaptop.js","https:/framer.com/m/ScrollLaptop-YpCv7F.js","https:/framerusercontent.com/modules/efAT0qwfCXJfL3Wc1HN3/GYgrGpdxBxqt9QUv9eDD/InteriorHero.js","https:/framerusercontent.com/modules/x6DLlauhSeoDMaVhrzRS/VNhW8Vs4idWLEtE8po6y/SchemaWebPage.js"],"sourcesContent":["// SMCo GlassCta — THE canonical CTA pill. Locked SMCo Glass System recipe (2026-06-10):\n// primary = solid Burnt Orange + sheen + 1.5px top bevel + dark under-edge + cursor-tracking\n// glow (saturated base absorbs all layers) · secondary = frosted fill + sage border + ONE\n// crisp top bevel (no sheen/under-edge — reads milky on light frost), reduced glow, fills\n// SOLID sage on hover · tertiary = bare sage text link. Hover = tracking radial glow, never sweeps.\n// Use the named export GlassCta from code components; use the default export on canvas.\n// NOTE: Framer passes undefined for unset controls — all optional props default-guarded.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useRef,useState}from\"react\";export function GlassCta({label,href,variant,accentColor=\"#96c0a5\",actionColor=\"#ff7f50\",textColor=\"#0e0e0e\",isDark=false,ease=\"cubic-bezier(0.16, 1, 0.3, 1)\",size=\"md\"}){const[hovered,setHovered]=useState(false);const glowRef=useRef(null);const glowStrength=variant===\"primary\"?.38:isDark?.12:.3;const handleMove=e=>{const rect=e.currentTarget.getBoundingClientRect();const x=e.clientX-rect.left;const y=e.clientY-rect.top;if(glowRef.current){glowRef.current.style.background=`radial-gradient(circle 90px at ${x}px ${y}px, rgba(255,255,255,${glowStrength}), rgba(255,255,255,0) 72%)`;}};const glow=/*#__PURE__*/_jsx(\"span\",{ref:glowRef,style:{position:\"absolute\",inset:0,opacity:hovered?1:0,transition:`opacity 380ms ${ease}`,pointerEvents:\"none\"}});const baseStyle={position:\"relative\",overflow:\"hidden\",textDecoration:\"none\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:8,borderRadius:999,padding:size===\"lg\"?\"14px 28px\":\"12px 24px\",fontFamily:\"Urbanist, sans-serif\",fontSize:size===\"lg\"?15:14,fontWeight:600,letterSpacing:\"0.02em\"};if(variant===\"primary\"){const sheen=/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,borderRadius:999,background:\"linear-gradient(180deg, rgba(255,255,255,0.28) 0%, rgba(255,255,255,0.07) 45%, rgba(255,255,255,0) 58%)\",pointerEvents:\"none\"}});const bevel=\"inset 0 1.5px 1.5px rgba(255, 255, 255, 0.75), inset 0 -1px 1.5px rgba(0, 0, 0, 0.14)\";return /*#__PURE__*/_jsxs(\"a\",{href:href,onClick:e=>e.stopPropagation(),onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),onMouseMove:handleMove,style:{...baseStyle,backgroundColor:actionColor,color:\"#ffffff\",transform:hovered?\"translateY(-2px)\":\"translateY(0)\",boxShadow:hovered?`0 8px 20px rgba(255, 127, 80, 0.32), ${bevel}`:`0 4px 10px rgba(255, 127, 80, 0.18), ${bevel}`,transition:`transform 320ms ${ease}, box-shadow 320ms ${ease}`},children:[sheen,glow,/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\"},children:label})]});}if(variant===\"secondary\"){const bevelRest=isDark?\"inset 0 1.5px 1.5px rgba(255, 255, 255, 0.14)\":\"inset 0 1.5px 1.5px rgba(255, 255, 255, 0.8)\";const bevelHover=\"inset 0 1.5px 1.5px rgba(255, 255, 255, 0.55)\";return /*#__PURE__*/_jsxs(\"a\",{href:href,onClick:e=>e.stopPropagation(),onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),onMouseMove:handleMove,style:{...baseStyle,backgroundColor:hovered?accentColor:isDark?\"rgba(58, 51, 42, 0.4)\":\"rgba(255, 255, 255, 0.4)\",backdropFilter:\"blur(10px)\",WebkitBackdropFilter:\"blur(10px)\",color:hovered?\"#ffffff\":textColor,border:`1px solid ${accentColor}`,boxShadow:hovered?bevelHover:bevelRest,transition:`transform 320ms ${ease}, background-color 320ms ${ease}, color 320ms ${ease}, box-shadow 320ms ${ease}`,transform:hovered?\"translateY(-2px)\":\"translateY(0)\"},children:[glow,/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\"},children:label})]});}return /*#__PURE__*/_jsx(\"a\",{href:href,onClick:e=>e.stopPropagation(),onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),style:{...baseStyle,overflow:\"visible\",color:accentColor,padding:size===\"lg\"?\"14px 6px\":\"12px 4px\",transition:`opacity 220ms ${ease}`,opacity:hovered?.7:1},children:label});}function useDarkMode(){const[isDark,setIsDark]=useState(false);useEffect(()=>{if(typeof document===\"undefined\")return;const check=()=>setIsDark(document.documentElement.classList.contains(\"dark\"));check();const onChange=()=>check();document.addEventListener(\"smco-theme-change\",onChange);const observer=new MutationObserver(check);observer.observe(document.documentElement,{attributes:true,attributeFilter:[\"class\"]});return()=>{document.removeEventListener(\"smco-theme-change\",onChange);observer.disconnect();};},[]);return isDark;}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function GlassCtaButton(props){// DEAD-LINK DEFECT CLASS: href is a ControlType.Link with no defaultValue; an empty href\n// renders a live-looking pill that just reloads the current page. Default = primary CTA.\nconst{label=\"Book Your Event →\",href=\"/design-your-event/\",variant=\"primary\",size=\"md\",accentColor=\"#96c0a5\",actionColor=\"#ff7f50\",textColor=\"#0e0e0e\",textDarkColor=\"#f4f4f4\"}=props;const isDark=useDarkMode();return /*#__PURE__*/_jsx(GlassCta,{label:label,href:href,variant:variant,size:size,accentColor:accentColor,actionColor:actionColor,textColor:isDark?textDarkColor:textColor,isDark:isDark});}addPropertyControls(GlassCtaButton,{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Book Your Event →\"},href:{type:ControlType.Link,title:\"Link\"},variant:{type:ControlType.Enum,title:\"Variant\",options:[\"primary\",\"secondary\",\"tertiary\"],defaultValue:\"primary\"},size:{type:ControlType.Enum,title:\"Size\",options:[\"md\",\"lg\"],defaultValue:\"md\"},accentColor:{type:ControlType.Color,title:\"Accent (Sage)\",defaultValue:\"#96c0a5\"},actionColor:{type:ControlType.Color,title:\"Action (Burnt Orange)\",defaultValue:\"#ff7f50\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#0e0e0e\"},textDarkColor:{type:ControlType.Color,title:\"Text Dark\",defaultValue:\"#f4f4f4\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"GlassCta\":{\"type\":\"reactComponent\",\"name\":\"GlassCta\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"GlassCtaButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GlassCta.map","/*\n * GlassCta\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/GXcMT71CSRAmTtDsJmha/rGFI5gPnWiQxv0Lktndm/GlassCta.js\"\nexport { default } from \"https://framerusercontent.com/modules/GXcMT71CSRAmTtDsJmha/rGFI5gPnWiQxv0Lktndm/GlassCta.js\"\n","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useRef,useState}from\"react\";// ── SMCo RESPONSIVE IMAGE (added 2026-08-10) ──────────────────────────────\n// logoSrc is intentionally a plain String control, so Framer never emits a\n// srcSet and the browser pulls the full-size original — a 2400px file into a\n// 266px slot. framerusercontent.com accepts ?scale-down-to=<w> and never\n// upscales past the original, so we synthesise the srcSet from the URL. No\n// control-type change, no unbind/rebind required.\nconst SMCO_IMAGE_WIDTHS=[128,256,384,512,768,1024,1536,2048];function smcoImage(input,displayWidth){if(!input)return null;const raw=typeof input===\"string\"?input:input?.src;if(!raw||typeof raw!==\"string\")return null;const src=raw.trim();if(!src)return null;const alt=typeof input===\"string\"?undefined:input?.alt;let srcSet=typeof input===\"string\"?undefined:input?.srcSet;if(!srcSet&&src.includes(\"framerusercontent.com\")&&!src.includes(\"scale-down-to\")){// Cover up to 3x DPR. The browser downloads only the single candidate\n// it needs, so an oversized entry costs nothing — whereas a ladder that\n// stops short forces a permanently soft render.\nconst need=displayWidth?Math.ceil(displayWidth*3):2048;const widths=[];for(const w of SMCO_IMAGE_WIDTHS){widths.push(w);if(w>=need)break;}const join=src.includes(\"?\")?\"&\":\"?\";srcSet=widths.map(w=>`${src}${join}scale-down-to=${w} ${w}w`).join(\", \");}return{src,srcSet,alt};}/**\n * SMCo Footer — 4-column editorial pattern.\n *\n * Layout (desktop):\n *   Col 1: Brand mark + tagline + newsletter signup\n *   Col 2: Site nav (Experiences, Why SMCo, For Teams, Pricing, Resources)\n *   Col 3: Why SMCo deep links + Sustainability\n *   Col 4: Contact + social + secondary utility\n *\n * Bottom utility row: copyright + legal links.\n * Newsletter submit button wears the locked SMCo Glass System primary finish (2026-06-10):\n * sheen + 1.5px top bevel + dark under-edge + cursor-tracking glow over solid Burnt Orange.\n *\n * LOGO (2026-08-09): \"Logo URL\" takes the STACKED REVERSED mark, which is the ceremonial\n * lockup and the right one for a dark footer. It is a plain String, not ControlType.Image,\n * on purpose — Framer Image controls cannot be set through the MCP, and this value has to be\n * settable programmatically across 57 pages. Empty falls back to the {brandName} wordmark,\n * so the footer never breaks.\n *\n * CTA DOCTRINE (2026-08-09, Brent): the site has exactly TWO calls to action and no third.\n * Primary \"Build My Event\" -> /design-your-event/. Secondary \"Get in Touch\" -> /contact/,\n * with \"Talk to a founder\" living underneath the second rather than standing beside it.\n * /book/ is retired — do not reintroduce it here.\n *\n * Mobile (2026-08-11): brand + newsletter run full width, then the link columns go\n * TWO-UP instead of stacking one per row. See the grid comment below for the maths.\n *\n * MOBILE TAP TARGETS (2026-08-12): every footer anchor rendered as a 22.1px line box on a\n * phone (13px x 1.7), well under the 40px touch minimum. Below 880px each anchor is now a\n * 40px-tall flex box with its label optically centred, and the link lists drop their 6px\n * row gaps because the boxes supply their own separation. Connect's own link list also\n * stops being a two-column grid — five links across two 153.5px tracks wrapped to a ragged\n * three rows (2 / 2 / 1), so on mobile it runs as one full-width column of tap rows.\n * The social strip is pinned to a single row. Desktop is byte-for-byte unchanged.\n *\n * SMALL-TEXT SCALE RAISE (2026-08-12): site-wide legibility pass, applied to BOTH\n * breakpoints. Link rows 13/14 -> 14/16, column + newsletter eyebrows 11 -> 13 (tracking\n * eased 0.22em -> 0.18em so the wider glyphs do not add a line), tagline 15 -> 16, email\n * input and Subscribe button 14 -> 16, contact line 13 -> 14, social strip 12 -> 13,\n * copyright and legal links 12 -> 13. The 18/20px brand wordmark is out of scope.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicHeight 560\n */export default function Footer(props){const{brandName=\"Sweet Moments Co.\",logoSrc=\"\",logoHeight=140,logoAlign=\"center\",tagline=\"Premium chef-led cooking experiences for the events that matter. Coast to coast.\",newsletterHeading=\"Join the table.\",newsletterPlaceholder=\"your@email.com\",newsletterCtaText=\"Subscribe →\",newsletterEndpoint=\"\",col2Heading=\"Explore\",col2Links=[{label:\"Experiences\",href:\"/experiences/\"},{label:\"Pricing\",href:\"/pricing/\"},{label:\"For Sales Teams\",href:\"/sales-teams/\"},{label:\"For People & Culture\",href:\"/people-and-culture/\"},// DEAD LINK REMOVED (2026-08-16): \"For Executive Teams\" pointed at\n// /executive-teams/, which answers HTTP 200 with a zero-byte body —\n// no content, no nav, no footer. That is worse than a 404, because\n// nothing signals the failure to the visitor or to a crawler. This\n// row shipped on all 152 pages carrying the footer. Restore it the\n// day the page returns real content.\n{label:\"Event Upgrades\",href:\"/event-upgrades/\"},{label:\"Build My Event\",href:\"/design-your-event/\"}],col3Heading=\"Why SMCo\",col3Links=[{label:\"The SMCo Difference\",href:\"/why-smco/the-smco-difference/\"},{label:\"How It Works\",href:\"/why-smco/how-it-works/\"},// LABEL CORRECTED (2026-08-16): this row read \"Ridiculous\n// Shipping\". The destination is unchanged and the page is healthy,\n// but it is titled \"A Great Event Guaranteed\" and carries FIVE\n// named promises — Ridiculous Shipping, Late-Add, Flexible\n// Headcount, Dietary, and Flexible Reschedule. Shipping is one of\n// the five, so the old label both mismatched the H1 and undersold\n// four other promises. Label now matches the page.\n{label:\"Event Guarantee\",href:\"/why-smco/event-guarantee/\"},{label:\"Meet Your Chefs\",href:\"/why-smco/meet-your-chefs/\"},{label:\"Reviews & Results\",href:\"/why-smco/reviews-and-results/\"}],col4Heading=\"Connect\",col4Links=[{label:\"Blog\",href:\"/resources/blog/\"},{label:\"Recipes\",href:\"/resources/recipes/\"},{label:\"FAQ\",href:\"/resources/faq/\"},// RESTORED 2026-08-20: the Playbook collection now carries 5 published\n// items, so the condition the 2026-08-16 removal set for restoring this\n// row is met. It returns to its original slot — after FAQ, before \"Get\n// in Touch\" — with its original label and href. Prior note kept for the\n// record:\n//   EMPTY COLLECTION REMOVED (2026-08-16): \"Event Playbook\" pointed\n//   at /resources/playbook/, whose CMS collection has zero items, so\n//   the page renders the words \"No items.\" The page chrome itself is\n//   healthy — it simply has nothing in it, which is not something to\n//   send 152 pages of footer traffic to. Restore the row once the\n//   collection is populated.\n{label:\"Event Playbook\",href:\"/resources/playbook/\"},{label:\"Get in Touch\",href:\"/contact/\"}],contactEmail=\"info@smcoaz.com\",contactPhone=\"(480) 401-1385\",contactLine=\"Phoenix, AZ \\xb7 Coast-to-coast shipping\",socialLinks=[{label:\"Instagram\",href:\"https://www.instagram.com/smcoaz/\"},{label:\"LinkedIn\",href:\"https://www.linkedin.com/company/sweet-moments-co\"},{label:\"Facebook\",href:\"https://www.facebook.com/SMCoAZ/\"}],copyrightText=\"\\xa9 2026 Sweet Moments Co., a brand of Ludwig Concepts LLC. All rights reserved.\",legalLinks=[{label:\"Privacy\",href:\"/privacy/\"},{label:\"Terms\",href:\"/terms/\"},{label:\"Cookie Policy\",href:\"/cookie-policy/\"},// ADDED (2026-08-16): /participant-terms/ is the participant-facing\n// legal document — \"not an allergen-free kitchen\", cross-contact\n// with wheat/tree nuts/peanuts/dairy/eggs/soy/sesame, and the\n// cook-at-your-own-risk liability language. It is a healthy page,\n// but it was reachable from only three body links and from no\n// footer at all, so a guest sent to the site had no site-wide path\n// to it. It renders through the same FooterAnchor and the same\n// 13px legal-row baseStyle as the three rows above, so the styling,\n// hover colour and transitions are identical by construction.\n{label:\"Participant Terms\",href:\"/participant-terms/\"}],backgroundColor=\"#1a1612\",textColor=\"#f4f4f4\",textSubtleColor=\"rgba(244, 244, 244, 0.62)\",accentColor=\"#96c0a5\",actionColor=\"#ff7f50\",hairlineColor=\"rgba(244, 244, 244, 0.14)\"}=props;// ── TEMPORARY MIGRATION SHIM (2026-08-16) ────────────────────────────\n// The copyright line now names the brand as well as the registered entity.\n// Changing the default above is not enough on its own: all ~57 Footer\n// instances on the canvas carry their own copyrightText value, and an\n// instance prop always beats the code default. Those instance values cannot\n// be rewritten page by page through the MCP, so until someone re-binds them\n// in the Framer editor this normalises the legacy string at render time.\n//\n// Deliberately narrow: it fires only when the incoming value still names\n// Ludwig Concepts LLC without naming Sweet Moments. No year is matched, so\n// it survives the roll-over to 2027. Anything else — an empty string, or a\n// line an author genuinely customised — passes straight through untouched,\n// and the line is never blanked. This is a pure derivation computed during\n// render: no state, no effect, so the statically rendered page cannot flash\n// the old copyright on first paint.\n//\n// TEMPORARY. Delete this block once the canvas instances carry the new\n// string — a silent string rewrite inside a render is a trap for whoever\n// reads this next.\nconst isLegacyCopyright=typeof copyrightText===\"string\"&&copyrightText.includes(\"Ludwig Concepts LLC\")&&!copyrightText.includes(\"Sweet Moments\");const resolvedCopyrightText=isLegacyCopyright?\"\\xa9 2026 Sweet Moments Co., a brand of Ludwig Concepts LLC. All rights reserved.\":copyrightText;// ── CONTACT EMAIL SHIM (2026-08-17, DIRECTION REVERSED) ──────────────\n// CONTACT EMAIL NORMALISED TO info@smcoaz.com.\n//\n// THIS SHIM USED TO POINT THE OTHER WAY. An earlier pass today treated\n// hello@ as canonical and rewrote info@ into it, on the single argument\n// that hello@ was already on 128 of 152 pages. That was backwards, and the\n// reasoning is written down here so nobody re-derives the wrong answer:\n//\n//   1. The owner ruled on it. Brent, 2026-08-17: \"in the footer, I am\n//      seeing 'Hello@smcoaz.com'. it should be info@smcoaz.com.\"\n//   2. The legal pages name info@ in their own bodies. /privacy/ tells a\n//      visitor to email info@ to exercise a data right; /terms/ and\n//      /cookie-policy/ print info@ in their registered-contact lines. A\n//      footer reading hello@ on those pages contradicts the document it\n//      is sitting underneath.\n//   3. Being on more pages is not the same as being correct. Majority was\n//      the only argument for hello@, and it loses to both of the above.\n//\n// Nothing shipped in the wrong direction: production was last published\n// from a build that predates every 2026-08-16/17 footer change, so the\n// hello@ normalisation never reached a live page. There is exactly ONE\n// contact-email shim in this file — this one. Do not layer a second.\n//\n// WHY A SHIM AND NOT JUST THE DEFAULT: contactEmail HAS a property control,\n// so Framer has already materialised a value onto every canvas instance —\n// read a Footer instance's XML and it carries contactEmail=\"hello@...\"\n// spelled out. An instance prop always beats the code default above, and\n// instance values cannot be rewritten through the MCP (updateXmlForNode\n// reports \"No changes were made\" for a component-instance prop), so\n// changing the default alone would reach nothing. This normalises the\n// legacy address at render time instead, exactly as the 2026-08-16\n// copyright shim above does.\n//\n// Deliberately narrow: it fires ONLY on the exact legacy address, compared\n// case-insensitively and after trimming, so a genuinely different mailbox\n// (events@, an author's custom address, or an empty string that correctly\n// hides the row) passes straight through untouched. Both the mailto: href\n// and the visible label are driven off the same resolved value, so they can\n// never disagree. Pure derivation during render — no state, no effect — so\n// the statically rendered page cannot paint hello@ and then swap it.\n//\n// NOT IN SCOPE: the legal-page BODY copy. /participant-terms/ names\n// events@smcoaz.com twice in its own text, and the legal pages state their\n// own contact addresses inline. Whether a legal document should carry a\n// different address from the site chrome is the owner's call, not a\n// normalisation this component should make silently.\n//\n// TEMPORARY. Delete this block once the instances carry info@ — a silent\n// string rewrite inside a render is a trap for whoever reads this next.\nconst SMCO_LEGACY_CONTACT_EMAIL=\"hello@smcoaz.com\";const SMCO_CANONICAL_CONTACT_EMAIL=\"info@smcoaz.com\";const resolvedContactEmail=typeof contactEmail===\"string\"&&contactEmail.trim().toLowerCase()===SMCO_LEGACY_CONTACT_EMAIL?SMCO_CANONICAL_CONTACT_EMAIL:contactEmail;// ── CONTACT PHONE (2026-08-17) ───────────────────────────────────────\n// Added at the owner's request — the footer carried no phone number at all.\n// The number is (480) 401-1385.\n//\n// NO SHIM HERE, deliberately. The three shims in this file exist because\n// their props ALREADY had property controls, so Framer had long since\n// materialised a value onto all ~153 instances and the code default was\n// dead on arrival. contactPhone is a BRAND-NEW control: no existing\n// instance carries the attribute, so the default above is what every page\n// renders. A live Footer instance's XML confirms both halves of that — it\n// spells out every controlled prop (contactEmail, newsletterEndpoint,\n// logoHeight, ...) and spells each one out at its DECLARED defaultValue\n// wherever the author never touched it. So whichever way Framer resolves a\n// newly added control — leaving it undefined, or materialising the declared\n// default — the number reaches production with no editor work.\n//\n// A shim would be actively harmful here: normalising blank -> the number,\n// the way the newsletter-endpoint shim does, would make it impossible for\n// the owner to remove the phone by clearing the field. Blank must hide the\n// row, so blank passes through untouched.\n//\n// The tel: URI is DERIVED from the visible label rather than hardcoded, so\n// editing the one control moves the link too and the two can never\n// disagree. tel: needs bare E.164 — digits only, no spaces, brackets or\n// dashes — while the label stays human-readable. A 10-digit US number gains\n// the +1; an 11-digit number already starting with 1 is complete as-is;\n// anything else emits its own digits so an international number is not\n// mangled. No digits at all (whitespace, or a label with no number in it)\n// hides the row rather than shipping a broken tel: link. Pure derivation\n// during render — no state, no effect.\nconst contactPhoneDigits=typeof contactPhone===\"string\"?contactPhone.replace(/\\D/g,\"\"):\"\";const contactPhoneHref=contactPhoneDigits.length===10?`tel:+1${contactPhoneDigits}`:`tel:+${contactPhoneDigits}`;const hasContactPhone=contactPhoneDigits.length>0;// ── TEMPORARY MIGRATION SHIM (2026-08-17) ────────────────────────────\n// NEWSLETTER ENDPOINT DEFAULTED TO THE LIVE book-intake FUNCTION.\n//\n// newsletterEndpoint HAS a property control, so every one of the ~57 Footer\n// instances carries its own value — and every one of them carries the empty\n// string. Changing the default below is therefore not enough on its own: an\n// instance prop always beats the code default, exactly as with the\n// copyright and contactEmail shims above. Those instance values cannot be\n// rewritten page by page through the MCP, so until someone re-binds them in\n// the Framer editor this substitutes the real endpoint at render time.\n//\n// Deliberately narrow: it fires ONLY when the incoming value is missing or\n// blank after trimming. An instance that genuinely sets its own endpoint\n// still wins and passes straight through untouched. This is a pure\n// derivation computed during render — no state, no effect — so the\n// statically rendered page cannot paint a form and then change where it\n// posts.\n//\n// NOTE: this re-enables the newsletter section on ~153 pages, because\n// hasNewsletterEndpoint below now resolves true everywhere. That is\n// intended. The section was hidden on 2026-08-16 only because there was\n// nowhere to send a signup; there now is.\n//\n// TEMPORARY. Delete this block once the canvas instances carry the URL — a\n// silent value substitution inside a render is a trap for whoever reads\n// this next.\nconst SMCO_NEWSLETTER_ENDPOINT=\"https://uerzpnbppzsthutvrkxi.supabase.co/functions/v1/book-intake\";const resolvedNewsletterEndpoint=typeof newsletterEndpoint===\"string\"&&newsletterEndpoint.trim().length>0?newsletterEndpoint:SMCO_NEWSLETTER_ENDPOINT;// ── HONEST NEWSLETTER (2026-08-16) ───────────────────────────────────\n// The submit handler below only POSTs when newsletterEndpoint is set, but\n// the success state fired unconditionally. With no endpoint the subscriber\n// saw \"Welcome aboard ✓\", the field cleared, and the address was discarded\n// in the same tick. That is a consent problem rather than a lost signup: we\n// were telling people they had subscribed to something that stores nothing.\n//\n// Unlike the link lists, newsletterEndpoint HAS a property control, so the\n// canvas instances carry their own value — and every one of them carries\n// the empty string. The form was therefore lying on all 153 pages.\n//\n// Fix is to make the UI honest, not to invent an endpoint: with no endpoint\n// configured the newsletter eyebrow and form are not rendered at all. The\n// section is simply absent — nothing claimed, nothing to discard. Column 1\n// is a plain flex column, so dropping its last two children only shortens\n// it; the 1.6fr desktop track, the mobile full-width span and the other\n// three columns are untouched, which is why the removal is preferred over\n// keeping a field with a reworded message.\n//\n// The working path is deliberately unchanged: the moment a real endpoint is\n// configured, the eyebrow, the form, the POST and the \"Welcome aboard ✓\"\n// state all render and behave exactly as they do today.\n//\n// Derived from a prop during render — no state, no effect — so the static\n// render cannot paint a form that then vanishes.\n//\n// UPDATE 2026-08-17: an endpoint now exists, and the shim directly above\n// supplies it, so this derivation resolves true on every page and the\n// section renders again. The remaining half of the dishonesty — a success\n// state that fired even on a 4xx/5xx — is fixed in submitNewsletter below,\n// which now checks res.ok and surfaces a real error instead.\nconst hasNewsletterEndpoint=typeof resolvedNewsletterEndpoint===\"string\"&&resolvedNewsletterEndpoint.trim().length>0;const[email,setEmail]=useState(\"\");const[submitted,setSubmitted]=useState(false);const[failed,setFailed]=useState(false);const[isMobile,setIsMobile]=useState(false);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 ease=\"cubic-bezier(0.16, 1, 0.3, 1)\";// MOBILE TWO-UP (2026-08-11). Spans the brand block across both mobile\n// tracks; desktop keeps its own cell in the 1.6fr 1fr 1fr 1fr row.\nconst fullWidthOnMobile={gridColumn:isMobile?\"1 / -1\":\"auto\"};// HONEST SUCCESS (2026-08-17). This used to swallow every error and call\n// setSubmitted(true) unconditionally, so a 400/404/500 — or a network drop —\n// still rendered \"Welcome aboard ✓\" while the address went nowhere. The\n// success state is now gated on res.ok; anything else shows a real error and\n// deliberately keeps the typed address in the field so the visitor can retry\n// without retyping it.\n//\n// `form: \"newsletter\"` is MANDATORY. book-intake defaults an absent form to\n// \"book\", which would file every subscriber as a C — Self-Book row on the COG\n// board and fire an SMS to Brent's phone.\nconst submitNewsletter=async e=>{e.preventDefault();if(!email.includes(\"@\"))return;let ok=false;try{const res=await fetch(resolvedNewsletterEndpoint,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({form:\"newsletter\",email,source:\"footer\",attribution:typeof window!==\"undefined\"?window.location.pathname:\"\"})});ok=res.ok;}catch{ok=false;}if(!ok){setFailed(true);setTimeout(()=>setFailed(false),6e3);return;}setFailed(false);setSubmitted(true);setEmail(\"\");setTimeout(()=>setSubmitted(false),4e3);};const linkStyle={textDecoration:\"none\",color:textSubtleColor,fontFamily:\"'Urbanist', sans-serif\",// MOBILE TWO-UP (2026-08-11). ~158px of column at a 385px iPhone, and\n// \"For People & Culture\" measures ~132px at 14px — too close to the\n// edge once the 6px hover shift lands, so the longest labels would\n// wrap to two lines. 13px brings the worst case to ~123px and every\n// label stays on one line. Desktop type is untouched at 14px.\n//\n// SUPERSEDED 2026-08-12 by the small-text scale raise: the owner reads\n// these rows as too small on both breakpoints, so mobile goes 13 -> 14\n// and desktop 14 -> 16. The mobile worst case is back to ~132px of\n// label in ~158px of track, which still fits on one line but only just.\n// The two longest labels — \"For People & Culture\" and \"For Executive\n// Teams\" — are the ones to watch on a narrow phone.\nfontSize:isMobile?14:16,lineHeight:1.7,// MOBILE TAP TARGET (2026-08-12). 13px x 1.7 line-height is a 22.1px\n// box — that was the measured height of every footer link on a phone,\n// barely half the 40px touch minimum. Below 880px the anchor becomes a\n// 40px-tall flex box with the label vertically centred; the type size,\n// colour and 220ms transitions are unchanged, only the hit area grows.\n// Desktop stays display:block on its natural 23.8px line box.\ndisplay:isMobile?\"flex\":\"block\",alignItems:isMobile?\"center\":undefined,minHeight:isMobile?40:undefined,transition:`color 220ms ${ease}, padding-left 220ms ${ease}`};const headingStyle={fontFamily:\"'Urbanist', sans-serif\",// SMALL-TEXT SCALE RAISE (2026-08-12): column eyebrow 11 -> 13. The\n// tracking eases 0.22em -> 0.18em, which holds the tracked gap near the\n// 2.4px it was at 11px, so \"Why SMCo\" and \"Connect\" cannot gain a line.\nfontSize:13,fontWeight:600,letterSpacing:\"0.18em\",textTransform:\"uppercase\",color:accentColor,marginBottom:18};const renderColumn=(heading,links)=>// minWidth: 0 (2026-08-11) — without it a grid track's auto minimum is\n    // the widest link, which would push the two-up row past the viewport.\n    /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",minWidth:0},children:[/*#__PURE__*/_jsx(\"div\",{style:headingStyle,children:heading}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:isMobile?0:6},children:links.map(link=>/*#__PURE__*/_jsx(FooterAnchor,{link:link,baseStyle:linkStyle,hoverColor:textColor,accentColor:accentColor,ease:ease},link.label+link.href))})]});const hasLogo=typeof logoSrc===\"string\"&&logoSrc.trim().length>0;// Logo is sized by height with width:auto + objectFit:contain; the stacked\n// reversed mark measures ~1.21:1, so display width ≈ logoHeight * 1.35.\n// Erring high is the safe direction — a re-crop must not push sizes under\n// the painted width.\nconst logoDisplayWidth=Math.round(logoHeight*1.35);const im=smcoImage(logoSrc,logoDisplayWidth);return /*#__PURE__*/_jsx(\"footer\",{style:{width:\"100%\",backgroundColor,color:textColor,paddingTop:isMobile?64:96,paddingBottom:32,paddingLeft:isMobile?24:\"clamp(24px, 6vw, 96px)\",paddingRight:isMobile?24:\"clamp(24px, 6vw, 96px)\",boxSizing:\"border-box\",fontFamily:\"'Urbanist', sans-serif\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:1440,margin:\"0 auto\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gridTemplateColumns:isMobile?\"1fr 1fr\":\"1.6fr 1fr 1fr 1fr\",columnGap:isMobile?20:56,rowGap:isMobile?40:56,marginBottom:isMobile?48:80},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",minWidth:0,...fullWidthOnMobile},children:[hasLogo?/*#__PURE__*/_jsx(\"img\",{src:im?.src,srcSet:im?.srcSet,sizes:`${logoDisplayWidth}px`,alt:brandName,loading:\"lazy\",decoding:\"async\",style:{height:isMobile?Math.round(logoHeight*.8):logoHeight,width:\"auto\",maxWidth:\"100%\",objectFit:\"contain\",// flexShrink 0 is load-bearing: this sits in a column flex\n// container, so the main axis is vertical and the default\n// shrink squashes the logo's height out of ratio.\nflexShrink:0,alignSelf:logoAlign===\"center\"?\"center\":\"flex-start\",display:\"block\",marginBottom:24}}):/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"'Urbanist', sans-serif\",fontSize:isMobile?18:20,fontWeight:800,letterSpacing:\"0.16em\",textTransform:\"uppercase\",color:textColor,marginBottom:16},children:brandName}),/*#__PURE__*/_jsx(\"div\",{style:{// SMALL-TEXT SCALE RAISE (2026-08-12): tagline 15 -> 16.\nfontSize:16,lineHeight:1.6,color:textSubtleColor,maxWidth:360,marginBottom:32},children:tagline}),hasNewsletterEndpoint&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{// SMALL-TEXT SCALE RAISE (2026-08-12): newsletter eyebrow\n// 11 -> 13, tracking eased 0.22em -> 0.18em to match the\n// column headings and hold \"Join the table.\" on one line.\nfontSize:13,fontWeight:600,letterSpacing:\"0.18em\",textTransform:\"uppercase\",color:accentColor,marginBottom:12},children:newsletterHeading}),/*#__PURE__*/_jsxs(\"form\",{onSubmit:submitNewsletter,style:{display:\"flex\",flexDirection:isMobile?\"column\":\"row\",gap:8,alignItems:\"stretch\",maxWidth:380},children:[/*#__PURE__*/_jsx(\"input\",{type:\"email\",placeholder:newsletterPlaceholder,value:email,onChange:e=>setEmail(e.target.value),required:true,style:{flex:1,background:\"transparent\",border:`1px solid ${hairlineColor}`,borderRadius:999,padding:\"12px 18px\",color:textColor,fontFamily:\"'Urbanist', sans-serif\",// SMALL-TEXT SCALE RAISE (2026-08-12): 14 -> 16. A 16px\n// input also stops iOS zooming the page on focus.\nfontSize:16,outline:\"none\",transition:`border-color 220ms ${ease}`},onFocus:e=>{e.currentTarget.style.borderColor=accentColor;},onBlur:e=>{e.currentTarget.style.borderColor=hairlineColor;}}),/*#__PURE__*/_jsx(GlassSubmitButton,{actionColor:actionColor,ease:ease,children:submitted?\"Welcome aboard ✓\":newsletterCtaText})]}),failed&&/*#__PURE__*/_jsxs(\"div\",{role:\"alert\",style:{marginTop:10,maxWidth:380,fontFamily:\"'Urbanist', sans-serif\",fontSize:13,lineHeight:1.5,color:actionColor},children:[\"Something went wrong — please try again, or email \",resolvedContactEmail,\".\"]})]})]}),renderColumn(col2Heading,col2Links),renderColumn(col3Heading,col3Links),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",minWidth:0,...fullWidthOnMobile},children:[/*#__PURE__*/_jsx(\"div\",{style:headingStyle,children:col4Heading}),/*#__PURE__*/_jsx(\"div\",{style:{// MOBILE TWO-UP (2026-08-11): Connect spans the\n// full width, so its links went two-up inside it\n// rather than running a long single file.\n//\n// SUPERSEDED 2026-08-12. Five links across two\n// tracks cannot balance: at 375px the span is\n// 327px, so the grid computed 153.5px 153.5px\n// and the list wrapped to a ragged three rows\n// (2 / 2 / 1) with a lone \"Get in Touch\" — the\n// primary secondary CTA — orphaned on the last\n// row. Mobile now runs one full-width column of\n// 40px tap rows, which reads as a list and puts\n// 327px of hit area behind every link. Desktop\n// was already flex/column and is unchanged.\ndisplay:\"flex\",flexDirection:\"column\",columnGap:20,rowGap:isMobile?0:6,marginBottom:28},children:col4Links.map(link=>/*#__PURE__*/_jsx(FooterAnchor,{link:link,baseStyle:linkStyle,hoverColor:textColor,accentColor:accentColor,ease:ease},link.label+link.href))}),/*#__PURE__*/_jsxs(\"div\",{style:{paddingTop:18,borderTop:`1px solid ${hairlineColor}`,display:\"flex\",flexDirection:\"column\",gap:8},children:[resolvedContactEmail&&/*#__PURE__*/_jsx(\"a\",{href:`mailto:${resolvedContactEmail}`,style:{...linkStyle,color:textColor,fontWeight:600},children:resolvedContactEmail}),hasContactPhone&&/*#__PURE__*/_jsx(\"a\",{href:contactPhoneHref,style:{...linkStyle,color:textColor,fontWeight:600},children:contactPhone}),contactLine&&/*#__PURE__*/_jsx(\"div\",{style:{// SMALL-TEXT SCALE RAISE (2026-08-12): 13 -> 14.\nfontSize:14,color:textSubtleColor,lineHeight:1.6},children:contactLine}),socialLinks.length>0&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",// SINGLE ROW ON MOBILE (2026-08-12).\n// The strip is three fixed labels —\n// INSTAGRAM / LINKEDIN / FACEBOOK at\n// 12px uppercase, ~214px of type — so\n// with a 12px gap it occupies ~238px\n// against 327px of content at 375px and\n// 272px at 320px. nowrap therefore can\n// never overflow, and it guarantees the\n// strip stays one row instead of\n// breaking into a second the user has\n// to scroll past. Desktop keeps wrap,\n// because the ~235px col 4 track is\n// narrower than the strip and is meant\n// to break there.\ngap:isMobile?12:16,marginTop:12,flexWrap:isMobile?\"nowrap\":\"wrap\"},children:socialLinks.filter(s=>s.href).map(s=>/*#__PURE__*/_jsx(FooterAnchor,{link:s,baseStyle:{...linkStyle,// SMALL-TEXT SCALE RAISE\n    // (2026-08-12): 12 -> 13,\n    // with the tracking eased\n    // 0.06em -> 0.055em so the\n    // measured width of the\n    // nowrap row above grows\n    // only with the glyphs. At\n    // 13px the strip is ~232px\n    // against 272px of content\n    // at a 320px viewport, so\n    // it still clears one row.\n    fontSize:13,letterSpacing:\"0.055em\",fontWeight:600,textTransform:\"uppercase\",// 2026-08-12: pairs with the\n    // nowrap row above so a multi\n    // word label can never break\n    // mid-label on a phone. Left\n    // off desktop so the wrapping\n    // strip there is untouched.\n    whiteSpace:isMobile?\"nowrap\":undefined},hoverColor:accentColor,accentColor:accentColor,ease:ease,openExternal:true},s.label))})]})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{paddingTop:24,borderTop:`1px solid ${hairlineColor}`,display:\"flex\",flexDirection:isMobile?\"column\":\"row\",gap:isMobile?12:24,alignItems:isMobile?\"flex-start\":\"center\",justifyContent:\"space-between\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{// SMALL-TEXT SCALE RAISE (2026-08-12): 12 -> 13.\nfontSize:13,color:textSubtleColor},children:resolvedCopyrightText}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:20,flexWrap:\"wrap\"},children:legalLinks.map(link=>/*#__PURE__*/_jsx(FooterAnchor,{link:link,baseStyle:{...linkStyle,// SMALL-TEXT SCALE RAISE (2026-08-12): 12 -> 13.\n    // Kept level with the copyright line beside it,\n    // exactly as the two sat at 12px before.\n    fontSize:13},hoverColor:textColor,accentColor:accentColor,ease:ease},link.label))})]})]})});}function GlassSubmitButton({children,actionColor,ease}){const[hovered,setHovered]=useState(false);const glowRef=useRef(null);const handleMove=e=>{const rect=e.currentTarget.getBoundingClientRect();const x=e.clientX-rect.left;const y=e.clientY-rect.top;if(glowRef.current){glowRef.current.style.background=`radial-gradient(circle 90px at ${x}px ${y}px, rgba(255,255,255,0.38), rgba(255,255,255,0) 72%)`;}};const bevel=\"inset 0 1.5px 1.5px rgba(255, 255, 255, 0.75), inset 0 -1px 1.5px rgba(0, 0, 0, 0.14)\";return /*#__PURE__*/_jsxs(\"button\",{type:\"submit\",onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),onMouseMove:handleMove,style:{position:\"relative\",overflow:\"hidden\",background:actionColor,border:\"none\",borderRadius:999,padding:\"12px 22px\",color:\"#ffffff\",fontFamily:\"'Urbanist', sans-serif\",// SMALL-TEXT SCALE RAISE (2026-08-12): Subscribe label 14 -> 16, so the\n// button matches the 16px email field it sits beside.\nfontSize:16,fontWeight:600,letterSpacing:\"0.01em\",cursor:\"pointer\",whiteSpace:\"nowrap\",transform:hovered?\"translateY(-2px)\":\"translateY(0)\",boxShadow:hovered?`0 8px 20px rgba(255, 127, 80, 0.32), ${bevel}`:`0 4px 10px rgba(255, 127, 80, 0.18), ${bevel}`,transition:`transform 320ms ${ease}, box-shadow 320ms ${ease}`},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,borderRadius:999,background:\"linear-gradient(180deg, rgba(255,255,255,0.28) 0%, rgba(255,255,255,0.07) 45%, rgba(255,255,255,0) 58%)\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"span\",{ref:glowRef,style:{position:\"absolute\",inset:0,opacity:hovered?1:0,transition:`opacity 380ms ${ease}`,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\"},children:children})]});}function FooterAnchor(props){const{link,baseStyle,hoverColor,ease,openExternal}=props;const[hovered,setHovered]=useState(false);if(!link.href)return null;return /*#__PURE__*/_jsx(\"a\",{href:link.href,target:openExternal?\"_blank\":undefined,rel:openExternal?\"noreferrer noopener\":undefined,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),style:{...baseStyle,color:hovered?hoverColor:baseStyle.color,paddingLeft:hovered?6:0,transition:`color 220ms ${ease}, padding-left 240ms ${ease}`},children:link.label});}addPropertyControls(Footer,{brandName:{type:ControlType.String,title:\"Brand\",defaultValue:\"Sweet Moments Co.\"},logoSrc:{type:ControlType.String,title:\"Logo URL\",defaultValue:\"\",placeholder:\"framerusercontent.com/... (stacked reversed)\",description:\"Stacked reversed lockup. Empty falls back to the text wordmark.\"},logoHeight:{type:ControlType.Number,title:\"Logo Height\",defaultValue:140,min:32,max:260,step:1,unit:\"px\"},logoAlign:{type:ControlType.Enum,title:\"Logo Align\",options:[\"left\",\"center\"],optionTitles:[\"Left\",\"Center\"],defaultValue:\"center\",displaySegmentedControl:true},tagline:{type:ControlType.String,title:\"Tagline\",defaultValue:\"Premium chef-led cooking experiences for the events that matter. Coast to coast.\",displayTextArea:true},newsletterHeading:{type:ControlType.String,title:\"NL Heading\",defaultValue:\"Join the table.\"},newsletterPlaceholder:{type:ControlType.String,title:\"NL Placeholder\",defaultValue:\"your@email.com\"},newsletterCtaText:{type:ControlType.String,title:\"NL CTA\",defaultValue:\"Subscribe →\"},newsletterEndpoint:{type:ControlType.String,title:\"NL Endpoint\",defaultValue:\"\",placeholder:\"POST URL (optional)\"},col2Heading:{type:ControlType.String,title:\"Col 2 Heading\",defaultValue:\"Explore\"},col3Heading:{type:ControlType.String,title:\"Col 3 Heading\",defaultValue:\"Why SMCo\"},col4Heading:{type:ControlType.String,title:\"Col 4 Heading\",defaultValue:\"Connect\"},contactEmail:{type:ControlType.String,title:\"Contact Email\",// 2026-08-17: default returned to info@ when the render-time\n// normalisation shim above had its direction reversed. info@ is what\n// the owner asked for and what the legal-page bodies already name.\ndefaultValue:\"info@smcoaz.com\"},contactPhone:{type:ControlType.String,title:\"Contact Phone\",// ADDED 2026-08-17. Human-readable label; the tel: click-to-call link\n// is generated from it, so editing the one field moves both.\ndefaultValue:\"(480) 401-1385\",placeholder:\"(480) 401-1385\",description:\"Shown under the contact email. The click-to-call link is generated from this number. Leave empty to hide the row.\"},contactLine:{type:ControlType.String,title:\"Contact Line\",defaultValue:\"Phoenix, AZ \\xb7 Coast-to-coast shipping\"},copyrightText:{type:ControlType.String,title:\"Copyright\",defaultValue:\"\\xa9 2026 Sweet Moments Co., a brand of Ludwig Concepts LLC. All rights reserved.\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#1a1612\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#f4f4f4\"},textSubtleColor:{type:ControlType.Color,title:\"Text Subtle\",defaultValue:\"rgba(244, 244, 244, 0.62)\"},accentColor:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#96c0a5\"},actionColor:{type:ControlType.Color,title:\"Action\",defaultValue:\"#ff7f50\"},hairlineColor:{type:ControlType.Color,title:\"Hairline\",defaultValue:\"rgba(244, 244, 244, 0.14)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Footer\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"560\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Footer.map","/**\n * Emits the canonical SMCo Organization JSON-LD for AI/GEO/AEO.\n * Drop once per page (Page Master / Layout Template).\n *\n * ENTITY-DISAMBIGUATION FIX (2026-06-15): the org data is HARDCODED here as a single\n * source of truth — every page emits identical, correct schema (real sameAs profiles,\n * legalName, anti-bakery description, knowsAbout) regardless of any per-instance prop\n * overrides left over from earlier. This is what stops AI engines confusing us with\n * same-named bakery / dessert companies.\n *\n * SERVER-RENDER FIX (2026-08-05, schema audit S-01): this component previously injected\n * its JSON-LD inside a useEffect via document.head.appendChild. React does NOT run effects\n * during server rendering, so the script was absent from the server-sent HTML — meaning\n * Googlebot saw it (it executes JS) but GPTBot / ClaudeBot / PerplexityBot did not. The\n * entire disambiguation payload was invisible to the exact engines it was written for.\n * The schema now renders as a JSX <script> tag so it ships in view-source HTML.\n * Re-verified 2026-09-01 by reading the raw server response (not the DOM) on 23 published\n * URLs across every template: the block ships server-side on all of them, exactly once.\n *\n * AGGREGATE RATING (2026-08-05, audit S-06): the company rating lives HERE and only here.\n * Per `Experience Schema.org Spec — AEO` (v1, LOCKED): \"No aggregateRating on the Course\n * at launch — the company 5.0/29 goes on the Organization block only. Never backfill the\n * company average onto a class — that's the manual-action risk.\"\n * ⚠ THIS IS A FACTUAL CLAIM TO SEARCH ENGINES. Update RATING below whenever the real\n * Google review count changes. Do not round, do not aspirationally inflate.\n * Verified with Brent 2026-08-05: 5.0 from 29 Google reviews.\n * Re-confirmed with Brent 2026-08-27: still 29. Expected to move — recheck monthly.\n * 2026-08-31: Birdeye's listing shows 31 reviews, but Birdeye aggregates across sources\n * and this field tracks GOOGLE reviews specifically. Not a conflict — do not sync this\n * value to Birdeye. Verify against the Google Business Profile count only.\n *\n * CONSEQUENCE — READ BEFORE PLACING: the old useEffect version self-deduplicated by\n * removing any existing script[data-smco-schema=\"organization\"] before appending. A\n * server-rendered tag CANNOT do that. Place EXACTLY ONE instance per page. Two instances\n * now means two Organization entities on one URL. Preferred home is the Layout Template,\n * outside the content slot, so every page inherits exactly one automatically.\n * 2026-09-01 spot check across 23 URLs found exactly one block on every page — placement\n * is behaving as intended.\n *\n * LOGO (2026-08-27, confirmed by Brent): two Framer-hosted variants exist. Schema.org\n * logos are rendered by search and assistant surfaces on WHITE, so the white-background\n * variant is the correct one and is set below.\n *   ...LbV8.png  — for a WHITE background  ← the one in use\n *   ...RjtsS.png — for a DARK background   (do not use here; it would render invisible)\n * Full dark-background URL, kept for reference only:\n * https://framerusercontent.com/images/ooYJ7QjRSaXkhV3zPnaXJBQRjts.png\n *\n * FOUNDER IDENTITY (2026-08-31): the founder array previously carried bare names, which\n * declares two ANONYMOUS Person nodes — disconnected from the real Person nodes the chef\n * pages publish at /why-smco/meet-your-chefs/<slug>#person. The graph held the same two\n * people twice and could not tell they were the same. Founders now carry @ids matching\n * AuthorPage.tsx exactly (no trailing slash before the #person fragment — AuthorPage\n * builds SITE + CHEF_BASE + slug, and a trailing slash here would fork the entity again).\n *\n * ✅ CLOSED 2026-09-01 — the warning that used to sit here was WRONG. It claimed\n * BlogArticle.tsx, PlaybookArticle.tsx and RecipeDetail.tsx still built this Person @id\n * WITH a trailing slash. Verified against live server-sent HTML on nine published URLs\n * (2 blog posts, 2 playbooks, 2 recipes, 2 experience pages, 1 chef page): ZERO forked\n * @ids. Every emitted value is the correct .../<slug>#person form. Do not re-open this\n * without new evidence from live HTML.\n * ExperienceDetail.tsx WAS genuinely broken and was fixed 2026-08-31 (118 forked\n * references across 59 published items); that fix is confirmed still holding.\n *\n * NAME FORM (2026-08-31): primary name now carries the period. Every other record —\n * Brand Voice Guide, Crunchbase, BBB, D&B, the site footer — writes \"Sweet Moments Co.\"\n * The unperioded form moved into alternateName so both still resolve to this entity.\n *\n * FOUNDING DATE (2026-08-31): was the bare year \"2020\" with nothing corroborating it.\n * Brent verified the Arizona Corporation Commission Articles of Organization for Ludwig\n * Concepts, LLC: filed 2020-02-03. Now an exact ISO 8601 date, which Wikidata's\n * `inception` statement and the Crunchbase founded date should both be brought to match.\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n */// Real Google Business rating. Last verified 2026-08-27 (Brent): unchanged at 5.0 / 29.\nimport{jsx as _jsx}from\"react/jsx-runtime\";const RATING={value:\"5.0\",count:\"29\"};// Canonical path base for chef/founder Person nodes. MUST match AuthorPage.tsx's\n// CHEF_BASE exactly, or the founder @ids below will point at entities that do not exist.\nconst CHEF_BASE=\"/why-smco/meet-your-chefs/\";const ORG={name:\"Sweet Moments Co.\",legalName:\"Ludwig Concepts, LLC\",// The unperioded form lives here so legacy citations of \"Sweet Moments Co\" still\n// resolve to this entity. Every nested publisher/provider node across the site emits\n// the perioded form, which is now the primary name.\nalternateName:[\"SMCo\",\"SMCoAZ\",\"Sweet Moments Company\",\"Sweet Moments Co\"],url:\"https://smcoaz.com\",// White-background variant — see LOGO note in the header block above.\nlogo:\"https://framerusercontent.com/images/OOQULDvhROXpwwa5XPs0nigLbV8.png\",// 2026-08-27: \"nationwide\" removed. Brand Voice Guide §2.5 claims discipline bans it\n// by name alongside \"coast to coast\" — canon is \"all 50 states\". This string ships on\n// every page carrying this component, so the banned word was live site-wide.\ndescription:\"Sweet Moments Co (SMCo) is a premium provider of chef-led, virtual corporate cooking experiences. We ship fresh, pre-portioned ingredient kits to all 50 states and run live online classes led by professional chefs for corporate team building, sales kickoffs, client appreciation, holiday parties, and employee engagement. We are not a bakery, dessert shop, or catering company.\",// AZCC Articles of Organization, verified by Brent 2026-08-31.\nfoundingDate:\"2020-02-03\",// slug must match the chef page's CMS slug — it builds the founder's Person @id.\nfounders:[{name:\"Brent Ludwig\",slug:\"brent-ludwig\"},{name:\"Therese Ludwig\",slug:\"therese-ludwig\"}],// 2026-08-17: canonical contact address is info@smcoaz.com (owner ruling); the\n// footer was changed to match. Was hello@smcoaz.com — structured data must not\n// contradict the visible footer.\nemail:\"info@smcoaz.com\",// 2026-08-17: OWNER RULING — (480) 401-1385 is the current number and the 844 is\n// retired. Was \"+1-844-476-2629\". This value becomes ContactPoint.telephone, and\n// this component is dropped once per page, so a stale number here is a wrong\n// factual claim to search engines and AI assistants on EVERY URL of the site.\n// Format is the schema-style +1-XXX-XXX-XXXX this field has always used; the\n// footer's visible label reads \"(480) 401-1385\". Same number, two conventions,\n// one per surface — deliberately.\nphone:\"+1-480-401-1385\",areaServed:\"US\",// ─────────────────────────────────────────────────────────────────────────────\n// LINKEDIN — CLOSED 2026-09-01. The 2026-08-31 note here asked someone to check the\n// live footer before assuming the /company/sweet-moments-company problem was fixed.\n// Checked: the live homepage's footer <a href> emits /company/sweet-moments-co. The\n// only \"sweet-moments-company\" string on the page is the Crunchbase URL below, which\n// is correct. Brent confirmed the old LinkedIn slug returns a hard 404 (\"This LinkedIn\n// Page isn't available\") — the vanity URL was renamed and LinkedIn does not redirect\n// retired ones. There is ONE company page, not two. Nothing to merge; the ~16 stale\n// AI citations pointing at the old slug decay as engines recrawl and hit the 404.\n//\n// TRAILING SLASH FORK — FIXED AND VERIFIED 2026-09-01. This entry previously read\n// \".../company/sweet-moments-co/\" while the footer's <a href> has no trailing slash,\n// so the site declared the same LinkedIn page as two different URLs. Ahrefs reported\n// linked_pages: 2 for linkedin.com across 217 links from this domain. Identical fork\n// class to the Person @id bug — a trailing slash makes a second entity. Slash removed;\n// confirmed against live server-sent HTML that the raw response now contains exactly\n// ONE LinkedIn URL, matching the footer character for character and matching the form\n// AI engines actually cite (80 citations on the unslashed URL vs 16 on the dead one).\n// ⚠ RULE: any URL added to sameAs must match the site's rendered <a href> exactly.\n// ─────────────────────────────────────────────────────────────────────────────\nsameAs:[\"https://www.linkedin.com/company/sweet-moments-co\",\"https://www.instagram.com/smcoaz/\",\"https://www.facebook.com/SMCoAZ\",\"https://www.youtube.com/@sweetmomentscompany3157\",\"https://www.crunchbase.com/organization/sweet-moments-company\",\"https://www.wikidata.org/wiki/Q140348243\"],knowsAbout:[\"virtual team building\",\"chef-led virtual cooking classes\",\"corporate cooking events\",\"fresh pre-portioned ingredient kits\",\"virtual sales kickoffs\",\"client appreciation events\"]};// Built once at module scope — fully static, so there is nothing to recompute per render\n// and nothing that needs to wait for the browser.\nconst ORG_SCHEMA={\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"@id\":`${ORG.url}/#organization`,name:ORG.name,legalName:ORG.legalName,alternateName:ORG.alternateName,url:ORG.url,description:ORG.description,foundingDate:ORG.foundingDate,founder:ORG.founders.map(({name,slug})=>({\"@type\":\"Person\",\"@id\":`${ORG.url}${CHEF_BASE}${slug}#person`,name})),areaServed:ORG.areaServed,knowsAbout:ORG.knowsAbout,contactPoint:{\"@type\":\"ContactPoint\",contactType:\"customer support\",email:ORG.email,telephone:ORG.phone},sameAs:ORG.sameAs,aggregateRating:{\"@type\":\"AggregateRating\",ratingValue:RATING.value,reviewCount:RATING.count,bestRating:\"5\",worstRating:\"1\"},...ORG.logo?{logo:ORG.logo}:{}};const ORG_JSON=JSON.stringify(ORG_SCHEMA,null,2);export default function SchemaOrgOrganization(){return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:1,height:1,opacity:0,pointerEvents:\"none\",overflow:\"hidden\"},\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"script\",{type:\"application/ld+json\",\"data-smco-schema\":\"organization\",dangerouslySetInnerHTML:{__html:ORG_JSON}})});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SchemaOrgOrganization\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SchemaOrgOrganization_3.map","// SMCo ThemePageSurface — paints the page background from the custom class-based theme system.\n// WHY: Framer color-style tokens (e.g. /Tokens/surface-primary) only follow the OS/native theme,\n// while the SMCo nav toggle flips a `dark` class + dispatches `smco-theme-change`. Interior-page\n// Library sections are transparent and rely on the page background — without this atom, toggling\n// the theme flips text colors but not the canvas behind them.\n// USAGE: drop ONCE as the FIRST child of every interior page. Renders a fixed, full-viewport,\n// pointer-transparent layer behind all content. Atom bucket.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useState}from\"react\";function useDarkMode(){const[isDark,setIsDark]=useState(false);useEffect(()=>{if(typeof document===\"undefined\")return;const check=()=>setIsDark(document.documentElement.classList.contains(\"dark\"));check();const onChange=()=>check();document.addEventListener(\"smco-theme-change\",onChange);const observer=new MutationObserver(check);observer.observe(document.documentElement,{attributes:true,attributeFilter:[\"class\"]});return()=>{document.removeEventListener(\"smco-theme-change\",onChange);observer.disconnect();};},[]);return isDark;}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n */export default function ThemePageSurface(props){const{lightColor,darkColor}=props;const isDark=useDarkMode();return /*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,backgroundColor:isDark?darkColor:lightColor,transition:\"background-color 320ms cubic-bezier(0.16, 1, 0.3, 1)\",pointerEvents:\"none\",zIndex:0}});}addPropertyControls(ThemePageSurface,{lightColor:{type:ControlType.Color,title:\"Light Surface\",defaultValue:\"#f8f5f0\"},darkColor:{type:ControlType.Color,title:\"Dark Surface\",defaultValue:\"#1a1612\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ThemePageSurface\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"1\",\"framerIntrinsicHeight\":\"1\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ThemePageSurface.map","// SMCo Universal Nav — single canonical navigation for every page.\n// \"Build My Event\" CTA wears the locked SMCo Glass System primary finish (2026-06-10).\n// (Renamed from \"Book Your Event\" on 2026-08-17 — see the CTA shim below. The finish,\n// the geometry and the link target are unchanged; only the words moved.)\n// DROPDOWN ROBUSTNESS (2026-06-10): Framer unreliably delivers NESTED array defaults\n// (dropdownItems inside navItems) to instances — if items arrive without dropdowns, menus\n// silently become plain links. Fix: the locked nav structure lives in FALLBACK_NAV below and\n// is used whenever the incoming navItems carry no dropdowns. Menus also open on CLICK\n// (first click opens, second navigates) so trackpads/touch work, not just hover.\n// LOGO (2026-06-15): \"Logo Image\" control renders an uploaded logo; if empty it falls back\n// to the \"Logo Text\" wordmark, so the header never breaks. Optional dark-mode logo.\n// Logo has TWO sizes: \"Logo Height (Top)\" at the top of the page, shrinking to\n// \"Logo Height (Scrolled)\" once scrolled (requires Compact on Scroll). The header bar grows\n// to fit whichever size is active and the logo transitions smoothly between them.\n// LABEL-ONLY PARENTS (2026-08-05, Brent): a nav item with an EMPTY href is a pure menu\n// label — it renders as a button, never navigates, and only opens its dropdown. Locked:\n// \"For Teams\", \"Why SMCo\" and \"Resources\" are labels with no page behind them (the SMCo\n// Difference is the real landing page for the Why SMCo section). \"Experiences\" and\n// \"Pricing\" keep real destinations. On mobile a label-only parent renders as a plain\n// section heading above its children instead of a tappable link.\n// (Superseded on mobile 2026-08-11: in the two-level drawer ANY parent with children — with\n// or without an href — is a submenu row, and a parent that has an href gets that page as the\n// first link inside its level-2 list. Desktop behaviour above is unchanged.)\n// SEASONAL REMOVED (2026-08-05, Brent): the Seasonal category page is being dropped —\n// it carried zero classes and had no SEO/AEO purpose. Season becomes a FILTER on the main\n// Experiences page instead. Eight experience categories now.\n// MOBILE TOUCH PASS (2026-08-11): measured on a real 400px phone — bar was 68px with the\n// lockup spanning 309px of it, the hamburger was a 38 × 31px target, and drawer sub-links\n// were 17px tall. Logo shrinks (again below 520px), the bar drops to 56–58px, and every\n// drawer target clears 44px. Nothing about the drawer's behaviour changed.\n// NO-JUMP HEADER (2026-08-11, Brent): \"on mobile the header jumps from a larger size to\n// smaller right away.\" Two separate causes, both fixed below — the compact state seeded\n// `false` instead of reading the real scroll position, and the mobile/desktop switch seeded\n// `false` too, so the phone painted the 80px desktop shell before the 56px mobile bar\n// replaced it. Below 880px the bar is now ONE fixed height that never compacts on scroll;\n// the desktop compact behaviour is unchanged.\n// TWO-LEVEL MOBILE DRAWER (2026-08-11, Brent): \"the menu system is too large and clunky —\n// on the phone it's just keep scrolling, scrolling, scrolling.\" The drawer used to render\n// every heading AND all ~30 child links in one column. It is now a two-level panel that\n// slides horizontally: level 1 is the toggle + CTA and the five top-level rows (nothing\n// else, no scrolling), level 2 is one group's children. Same nav data, same hrefs.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useCallback,useEffect,useId,useLayoutEffect,useMemo,useRef,useState}from\"react\";// LOAD-JUMP PLUMBING (2026-08-11): the compact + breakpoint state has to be settled BEFORE\n// the first painted frame, which is what useLayoutEffect gives us. It warns when React runs\n// on the server during Framer's static render, so it degrades to useEffect there.\nconst useIsomorphicLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;const MOBILE_QUERY=\"(max-width: 880px)\";const NARROW_QUERY=\"(max-width: 519.98px)\";const REDUCED_MOTION_QUERY=\"(prefers-reduced-motion: reduce)\";function matchesQuery(query){if(typeof window===\"undefined\"||!window.matchMedia)return false;return window.matchMedia(query).matches;}// ── SMCo SRCSET SYNTHESIS (added 2026-08-10) ──────────────────────────────\n// Framer only supplies a real srcSet when the bound value is a true\n// ResponsiveImage object. A legacy plain-string binding yields src only, so the\n// browser downloads the full-size original — the 4089px logo into a 354px slot.\n// framerusercontent.com accepts ?scale-down-to=<w> and never upscales past the\n// original, so we synthesise the srcSet from the URL and avoid forcing a\n// manual unbind/rebind of every logo.\nconst SMCO_IMAGE_WIDTHS=[128,256,384,512,768,1024,1536,2048];function smcoImage(input,displayWidth){if(!input)return null;const raw=typeof input===\"string\"?input:input?.src;if(!raw||typeof raw!==\"string\")return null;const src=raw.trim();if(!src)return null;const alt=typeof input===\"string\"?undefined:input?.alt;let srcSet=typeof input===\"string\"?undefined:input?.srcSet;if(!srcSet&&src.includes(\"framerusercontent.com\")&&!src.includes(\"scale-down-to\")){// Cover up to 3x DPR. The browser downloads only the single candidate\n// it needs, so an oversized entry costs nothing — whereas a ladder that\n// stops short forces a permanently soft render.\nconst need=displayWidth?Math.ceil(displayWidth*3):2048;const widths=[];for(const w of SMCO_IMAGE_WIDTHS){widths.push(w);if(w>=need)break;}const join=src.includes(\"?\")?\"&\":\"?\";srcSet=widths.map(w=>`${src}${join}scale-down-to=${w} ${w}w`).join(\", \");}return{src,srcSet,alt};}// ── 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 the reason this is a rename and not a\n// synonym swap: \"we want it to be not a booking thing, but they're building\n// something creative and something cool.\"\n//\n// WHY A SHIM AND NOT A DEFAULT. `ctaText`'s defaultValue below is ALREADY\n// \"Build My Event\", and it reaches nothing: Framer copies defaultProps onto each\n// canvas instance at insert time and the instance wins forever after. Seven nav\n// instances audited on 2026-08-17 still carry \"Book Your Event\" as an instance\n// value (sales-teams, people-and-culture, executive-teams, the-smco-difference,\n// how-it-works, resources/faq, why-smco/event-guarantee), and String props on a\n// linked code-component instance cannot be written through the MCP XML API —\n// updateXmlForNode answers \"No changes were made\". So the correction is applied\n// at render time, on the same pattern as the copyright / contactEmail shims in\n// Footer.tsx and resolveCategories() in CategoryGridSection.tsx.\n//\n// DELIBERATELY NARROW. This matches FOUR known legacy phrases, plus the canonical\n// phrase itself, and nothing else. It does not rewrite anything that merely looks\n// like a CTA — a shim that rewrote every CTA-shaped string would be worse than the\n// drift it fixes, and descriptive labels (\"Explore Experiences\", \"Talk to a\n// Founder\", \"See the full guarantee\") must keep saying what they say. An author's\n// genuine custom string therefore still wins: anything outside the list passes\n// through untouched.\n//\n// The comparison is case-insensitive and tolerates a trailing arrow only so the\n// same phrases are caught however they were typed (\"Start booking →\" and\n// \"Start Booking →\" are one legacy value, not two).\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 split off and handed straight back on the\n// way out. It is now DISCARDED, so every surface renders exactly \"Build My Event\" —\n// no trailing arrow, no trailing space. This is scoped to THIS ONE LABEL: nothing\n// else on the site loses an arrow, because nothing else goes through this function.\n// \"Event Upgrades →\" in the dropdown below, \"Talk to a Chef →\", \"Explore\n// Signature →\" and \"See the full guarantee →\" all keep theirs. The canonical phrase\n// is on the match list for exactly this reason — an instance or an authored row\n// already reading \"Build My Event →\" has to lose its arrow like everything else,\n// rather than end up the last CTA still carrying one.\n//\n// PURE RENDER-TIME DERIVATION — no state, no effect. Framer static-renders this\n// nav, 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 in the render, the\n// moment 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\"];// FAILS OPEN, like everything else in this file: anything that is not exactly one\n// of the four legacy phrases above is returned UNCHANGED — including a blank label\n// (an author may have blanked the CTA on purpose) and anything that is not a\n// string. This function can only ever rewrite a known-wrong value.\nfunction 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;}// ── WITHDRAWN-ROW FILTER ─────────────────────────────────\n// REVERSED 2026-08-17 (Brent): \"nevermind then. lets add the Lunch and learn back\n// in.\" The roll-up into Office-Ready is off, so the row is restored in FALLBACK_NAV\n// below and \"/experiences/lunch-and-learn/\" comes OUT of this list — which leaves the\n// list EMPTY and the href filter a no-op today.\n//\n// The list is kept, empty, rather than deleted, because withoutUnlinkedItems() below\n// is not only a filter: it is also the single point where an AUTHORED navItems array\n// gets its CTA labels normalised (see resolveCtaLabel above), so the function has to\n// stay either way. An empty list is the honest way to say \"nothing is withdrawn right\n// now\", and it keeps withdrawing the next row a one-line change. Adding an href here\n// drops that row from an authored array; it never touches the page itself.\nconst SMCO_UNLINKED_NAV_HREFS=[];function withoutUnlinkedItems(items){return items.map(item=>{const dropdownItems=item.dropdownItems;if(!dropdownItems||dropdownItems.length===0)return item;const kept=dropdownItems.filter(d=>SMCO_UNLINKED_NAV_HREFS.indexOf(String(d?.href??\"\").trim())<0);// Same match list as the bar's own CTA, so an authored dropdown row reading\n// \"Design Your Event →\" — or \"Build My Event →\" — lands on the canonical\n// wording and, since 2026-08-17, loses its trailing arrow with it. Every\n// other label — category names, \"Talk to a Founder\", \"Event Upgrades →\" —\n// is outside the list and passes straight through, arrow included.\nconst resolved=kept.map(d=>typeof d?.label===\"string\"&&resolveCtaLabel(d.label)!==d.label?{...d,label:resolveCtaLabel(d.label)}:d);return{...item,dropdownItems:resolved};});}const FALLBACK_NAV=[{label:\"Experiences\",href:\"/experiences/\",dropdownItems:[{label:\"Global Flavors\",href:\"/experiences/global-flavors/\",description:\"Cuisines explored together. Coast to coast.\"},{label:\"Charcuterie\",href:\"/experiences/charcuterie/\",description:\"Premium boards. Built to share.\"},{label:\"Office-Ready\",href:\"/experiences/office-ready/\",description:\"In-person events. Made simple.\"},// RESTORED 2026-08-17 (Brent): \"nevermind then. lets add the Lunch and learn\n// back in.\" This reverses that morning's withdrawal — the roll-up into\n// Office-Ready is off, so the row is back in its ORIGINAL position (after\n// Office-Ready, before Fresh & Light) with its ORIGINAL description text. It\n// was only ever commented out and the page was never deleted, so there is\n// nothing else to undo and no redirect is needed: the page stays live and\n// linked from here and from the /experiences/ catalog.\n{label:\"Lunch & Learn\",href:\"/experiences/lunch-and-learn/\",description:\"Real connection. Workday-friendly.\"},{label:\"Fresh & Light\",href:\"/experiences/fresh-and-light/\",description:\"Bright and healthy. Crowd-loved.\"},{label:\"Holidays & Celebrations\",href:\"/experiences/holidays-and-celebrations/\"},{label:\"Sweet Celebrations\",href:\"/experiences/sweet-celebrations/\"},{label:\"Small Plates & Starters\",href:\"/experiences/small-plates-and-starters/\"},{label:\"Event Upgrades →\",href:\"/event-upgrades/\",description:\"Branded kits \\xb7 Mixology \\xb7 Pairings\"}]},{// Label only — there is no /for-teams/ page and never was.\nlabel:\"For Teams\",href:\"\",dropdownItems:[{label:\"Sales Teams\",href:\"/sales-teams/\",description:\"Make every kickoff stick.\"},{label:\"People & Culture\",href:\"/people-and-culture/\",description:\"Bring everyone to the table.\"},// REMOVED 2026-08-10 (Brent): \"Executive Teams\" -> /executive-teams/ — page is a\n// \"This one's still in the kitchen.\" coming-soon stub. Restore this entry when the\n// page is built. Page still exists in the project.\n// { label: \"Executive Teams\", href: \"/executive-teams/\", description: \"Hospitality that opens conversations.\" },\n// RENAMED 2026-08-17 (Brent): was \"Design Your Event →\". This row is a CTA —\n// it invites someone to start an event — so it takes the canonical wording.\n// The sibling rows in this dropdown are category DESTINATIONS and keep their\n// own names. Href unchanged.\n// ARROW DROPPED 2026-08-17 (Brent, same day): \"We can drop the arrow for the\n// Build my Event.\" THIS LABEL ONLY — the \"Event Upgrades →\" row above is a\n// destination, not this CTA, and keeps its arrow.\n{label:\"Build My Event\",href:\"/design-your-event/\",description:\"Not sure which fits? We'll help.\"}]},{// Label only — The SMCo Difference is the landing page for this section.\nlabel:\"Why SMCo\",href:\"\",dropdownItems:[{label:\"The SMCo Difference\",href:\"/why-smco/the-smco-difference/\",description:\"What makes us different.\"},{label:\"Event Guarantee\",href:\"/why-smco/event-guarantee/\",description:\"A great event. Guaranteed.\"},{label:\"Everything In-House\",href:\"/why-smco/everything-in-house/\",description:\"Studio + kitchen + production. All under one roof.\"},{label:\"Meet Your Chefs\",href:\"/why-smco/meet-your-chefs/\",description:\"Brent + Therese, on camera.\"},{label:\"How It Works\",href:\"/why-smco/how-it-works/\",description:\"From booking to your event.\"},{label:\"Reviews & Results\",href:\"/why-smco/reviews-and-results/\",description:\"What hosts say. What teams remember.\"}]},{// Label only — no /resources/ landing page.\nlabel:\"Resources\",href:\"\",dropdownItems:[// RESTORED 2026-08-20 (Brent): the Playbook collection now carries 5 PUBLISHED\n// items (draft: false), so the hub no longer renders Framer's \"No items.\" empty\n// state and the condition set by the 2026-08-16 removal is met. The row returns\n// to its original FIRST position in this dropdown with its original description,\n// byte-for-byte as withdrawn. Prior note kept for the record:\n//   REMOVED 2026-08-16 (Brent): \"Event Playbook\" -> /resources/playbook/ — the\n//   page renders an EMPTY CMS collection and reads \"No items.\" It was carried in\n//   the nav on 151 pages, so every one of them advertised a dead end. Restore this\n//   entry when the Playbook collection has published items. The page, its\n//   /resources/playbook/:slug template and the collection all still exist in the\n//   project — only the nav entry is withdrawn. Same treatment as the 2026-08-10\n//   Executive Teams and Case Studies removals above.\n{label:\"Event Playbook\",href:\"/resources/playbook/\",description:\"How to host a great team event.\"},{label:\"Blog\",href:\"/resources/blog/\",description:\"Stories, ideas, behind-the-scenes.\"},{label:\"Recipes\",href:\"/resources/recipes/\",description:\"From our kitchen to yours.\"},{label:\"FAQ\",href:\"/resources/faq/\",description:\"Everything you'd want to know.\"}]},{label:\"Pricing\",href:\"/pricing/\"}];// MOBILE DRAWER LABELS (2026-08-11, Brent): the phone panel wants shorter labels than the\n// desktop bar — \"Teams\", not \"For Teams\". This map applies ONLY inside the mobile drawer;\n// the desktop nav still renders item.label verbatim. Any label without an entry (including\n// custom navItems set in the Framer panel) passes straight through unchanged.\n// DRAWER LABEL SHORTENING. \"Why SMCo\" -> \"SMCo\" REMOVED 2026-08-12 at the\n// owner's request: the drawer read \"SMCo\", which loses the \"Why\" that carries\n// the whole promise of the section. The full label now passes straight through.\n// It still paints as \"WHY SMCO\" because drawer rows inherit textTransform\n// uppercase from the nav font — that is the existing brand treatment and is\n// deliberately left alone; only the underlying label changed. \"For Teams\" ->\n// \"Teams\" is kept: it was checked against the new 18px level-1 type and the\n// full \"For Teams\" also fits, so this mapping is now a styling choice rather\n// than a fit constraint.\nconst MOBILE_NAV_LABELS={\"For Teams\":\"Teams\"};function mobileNavLabel(label){return MOBILE_NAV_LABELS[label]??label;}// Drawer chevrons (2026-08-11). Right = \"this row opens a submenu\", left = \"go back\".\n// Decorative only — the row itself carries the label and the accessible name.\nfunction DrawerChevron({direction,color,size=18}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:color,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":\"true\",focusable:\"false\",style:{flexShrink:0,display:\"block\"},children:direction===\"right\"?/*#__PURE__*/_jsx(\"polyline\",{points:\"9 5 16 12 9 19\"}):/*#__PURE__*/_jsx(\"polyline\",{points:\"15 5 8 12 15 19\"})});}const STORAGE_KEY=\"smco-theme\";function getOSTheme(){if(typeof window!==\"undefined\"&&window.matchMedia){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\";}return\"light\";}function useTheme(){const[isDark,setIsDark]=useState(null);const[isLoaded,setIsLoaded]=useState(false);useEffect(()=>{if(typeof window===\"undefined\")return;const stored=localStorage.getItem(STORAGE_KEY);if(stored===\"light\"||stored===\"dark\"){setIsDark(stored===\"dark\");}else{setIsDark(getOSTheme()===\"dark\");}},[]);useEffect(()=>{if(isDark===null||typeof document===\"undefined\")return;const theme=isDark?\"dark\":\"light\";const opposite=isDark?\"light\":\"dark\";const styleTags=document.querySelectorAll(\"style\");styleTags.forEach(tag=>{if(tag.textContent&&tag.textContent.includes(\"prefers-color-scheme\")){tag.innerHTML=tag.textContent.replace(new RegExp(`prefers-color-scheme: ${opposite}`,\"g\"),`prefers-color-scheme: ${theme}`);}});try{localStorage.setItem(STORAGE_KEY,theme);}catch{// localStorage unavailable\n}document.documentElement.classList.toggle(\"dark\",isDark);document.documentElement.style.colorScheme=theme;document.dispatchEvent(new CustomEvent(\"smco-theme-change\",{detail:{theme}}));setIsLoaded(true);},[isDark]);useEffect(()=>{if(typeof document===\"undefined\")return;const onChange=e=>{const detail=e.detail;if(detail&&detail.theme){const next=detail.theme===\"dark\";setIsDark(prev=>prev===next?prev:next);}};document.addEventListener(\"smco-theme-change\",onChange);return()=>document.removeEventListener(\"smco-theme-change\",onChange);},[]);const toggleTheme=()=>setIsDark(prev=>!prev);const setTheme=next=>setIsDark(next===\"dark\");return[isDark,toggleTheme,setTheme,isLoaded];}// FONT FALLBACKS (2026-08-09): the six ControlType.Font props carried no defaultValue and no\n// page instance ever set them, so every nav label rendered in the browser's default sans\n// rather than Urbanist. Same failure mode as ctaHref. These apply only when the prop is\n// undefined — a Font control set in the Framer panel still wins.\n// SMALL-TEXT SCALE RAISE (2026-08-12): site-wide legibility pass. Nav labels 13 → 14,\n// utility + CTA 14 → 16, dropdown label 15 → 16, dropdown description 13 → 14. The 20px\n// logo wordmark is out of scope (>= 18). The uppercase nav label carries tracking, so its\n// letter-spacing drops 0.14em → 0.13em — that holds the tracked gap at the same ~1.8px it\n// was at 13px, so the row grows only by the glyphs, not by the tracking.\n// NAV ROW FIT AT 1280px (2026-08-16, Brent): the desktop row overflowed. Measured at a\n// 1280px viewport: 1209.94px of content against 1137.00px of available track — over by\n// 72.94px. That wrapped \"FOR TEAMS\" and \"WHY SMCO\" onto two lines and closed the gap\n// between the logo and \"EXPERIENCES\" to exactly 0.00px. Three owner-picked levers: the nav\n// label 14 → 13, its letter-spacing 0.13em → 0.08em, and the nav item gap 36 → 20 (in the\n// flex row further down; four gaps across five top-level items = 64px of the 72.94px on its\n// own). Together they leave 54.95px of slack at 1280px and hold one row down to ~1225px.\n// 13px is the project's floor — do NOT go lower. It is still an INCREASE on what actually\n// shipped: until the mergeFont() fix below landed these labels rendered at 12px in the\n// browser's default sans, because Framer hands an UNSET Font control {} and a JS default\n// parameter never fires on {}. Supersedes the 2026-08-12 line above for the NAV LABEL ONLY —\n// utility, CTA and both dropdown styles keep their 2026-08-12 sizes.\n// Mobile is deliberately untouched: mobileTopLinkStyle (18px) and mobileSubLinkStyle (16px)\n// each re-set fontSize AND letterSpacing after spreading navFont, so neither value below can\n// reach the drawer. The owner tuned the drawer separately.\nconst URBANIST=\"'Urbanist', system-ui, -apple-system, 'Helvetica Neue', sans-serif\";const FALLBACK_LOGO_FONT={fontFamily:URBANIST,fontSize:20,fontWeight:800,letterSpacing:\"0.16em\",textTransform:\"uppercase\"};const FALLBACK_NAV_FONT={fontFamily:URBANIST,fontSize:13,fontWeight:600,letterSpacing:\"0.08em\",textTransform:\"uppercase\"};const FALLBACK_UTILITY_FONT={fontFamily:URBANIST,fontSize:16,fontWeight:600,letterSpacing:\"0.02em\"};const FALLBACK_CTA_FONT={fontFamily:URBANIST,fontSize:16,fontWeight:700,letterSpacing:\"0.01em\"};const FALLBACK_DROPDOWN_LABEL_FONT={fontFamily:URBANIST,fontSize:16,fontWeight:700,letterSpacing:\"0.01em\"};const FALLBACK_DROPDOWN_DESC_FONT={fontFamily:URBANIST,fontSize:14,fontWeight:400,letterSpacing:\"0.01em\"};// EMPTY-OBJECT GAP — DO NOT GO BACK TO DEFAULT PARAMETERS (2026-08-16, Brent).\n// Measured on the published site: Framer hands an UNSET ControlType.Font prop the value {}\n// — a real, present, empty object — not undefined. Read off the live React props on\n// crowded-attributes-017142.framer.app: navFont {}, utilityFont {}, ctaFont {},\n// dropdownLabelFont {}, dropdownDescFont {}, and logoFont (the one control actually set in\n// the panel) fully populated. A JS default parameter fires ONLY on exactly undefined, so\n// `dropdownLabelFont = FALLBACK_DROPDOWN_LABEL_FONT` never fired, `{...labelFont}` spread\n// nothing, and the element emitted no font-family/size/weight/tracking at all. It then\n// inherited Framer's published reset, `body, input, textarea, select, button { font-size:\n// 12px }` in the browser default sans — which is why 42 nav elements measured 12px and the\n// two dropdown styles (16 and 14 in code) collapsed to one identical size. Every one of the\n// six controls was broken this way, not just the dropdown pair; the nav labels and the CTA\n// were 12px too. The 9px caret is a literal fontSize on the span, which is why it survived.\n// Fix: merge explicitly with the fallback as the BASE so an unset {} still lands on Urbanist,\n// while any value an author DOES set in the Framer panel layers on top and wins.\nfunction mergeFont(fallback,authored){const merged={...fallback};if(!authored)return merged;// Skip undefined/null/\"\" so a half-filled Font control can't blank out a fallback key.\nfor(const[key,value]of Object.entries(authored)){if(value!==undefined&&value!==null&&value!==\"\"){merged[key]=value;}}return merged;}function LogoMark({logo,logoDark,logoSrc,logoDarkSrc,logoText,logoHeight,logoHeightMax,logoTrim,ease,isDark}){const img=isDark&&logoDark&&logoDark.src?logoDark:logo;// An uploaded Image control wins when present. Otherwise fall back to the plain\n// string URL: Framer Image controls cannot be set through the MCP, and this value\n// has to be settable programmatically across every page. Text wordmark last.\nconst fallback=isDark?logoDarkSrc||logoSrc:logoSrc;const src=img&&img.src?img.src:fallback&&fallback.trim().length>0?fallback.trim():\"\";// LOGO TRIM (2026-08-09): the horizontal lockup PNG carries 150px of transparent\n// clear-space per side at 3x — the artwork is only 66.7% of the file's height, so a\n// raw `height: logoHeight` renders the wordmark at an illegible 8.7px cap height.\n// Render oversize and pull the overflow back with negative margins, so the VISIBLE\n// artwork equals logoHeight while the element still occupies logoHeight of layout.\n// Set logoTrim to 1 if a pre-trimmed asset is ever swapped in.\nconst trim=typeof logoTrim===\"number\"&&logoTrim>1?logoTrim:1;const renderedHeight=logoHeight*trim;const bleed=(renderedHeight-logoHeight)/2;// Responsive delivery for BOTH logo paths: `img` already resolves to the\n// dark-mode logo when active, and `src` carries the legacy plain-string\n// fallback. Either way it goes through smcoImage, which keeps a real\n// srcSet when Framer supplies one and synthesises it when it does not.\n// Widths are measured off renderedHeight (which INCLUDES logoTrim) — the size\n// the element actually paints at — not the raw logoHeight, at the ~4.5:1\n// lockup ratio. The candidate list is capped off the LARGEST height the logo\n// ever paints at (top vs scrolled) so shrinking on scroll never leaves the\n// top-of-page size without a big enough candidate; `sizes` tracks the current one.\nconst maxRenderedHeight=Math.max(renderedHeight,(logoHeightMax??logoHeight)*trim);const im=smcoImage(img&&img.src?img:src,maxRenderedHeight*5);if(im){return /*#__PURE__*/_jsx(\"img\",{src:im.src,srcSet:im.srcSet,sizes:`${Math.round(renderedHeight*5)}px`,alt:logoText,style:{height:renderedHeight,width:\"auto\",display:\"block\",objectFit:\"contain\",marginTop:-bleed,marginBottom:-bleed,transition:`height 360ms ${ease}`}});}return /*#__PURE__*/_jsx(_Fragment,{children:logoText});}function NavGlassCta({href,label,actionColor,actionTextColor,fontStyle,ease,padding,onClick}){const[hovered,setHovered]=useState(false);const glowRef=useRef(null);const handleMove=e=>{const rect=e.currentTarget.getBoundingClientRect();const x=e.clientX-rect.left;const y=e.clientY-rect.top;if(glowRef.current){glowRef.current.style.background=`radial-gradient(circle 90px at ${x}px ${y}px, rgba(255,255,255,0.38), rgba(255,255,255,0) 72%)`;}};const bevel=\"inset 0 1.5px 1.5px rgba(255, 255, 255, 0.75), inset 0 -1px 1.5px rgba(0, 0, 0, 0.14)\";return /*#__PURE__*/_jsxs(\"a\",{href:href,onClick:onClick,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),onMouseMove:handleMove,style:{position:\"relative\",overflow:\"hidden\",textDecoration:\"none\",display:\"inline-block\",backgroundColor:actionColor,color:actionTextColor,border:\"none\",borderRadius:999,padding:padding,transform:hovered?\"translateY(-2px)\":\"translateY(0)\",boxShadow:hovered?`0 8px 20px rgba(255, 127, 80, 0.28), ${bevel}`:`0 4px 10px rgba(255, 127, 80, 0.18), ${bevel}`,transition:`transform 320ms ${ease}, box-shadow 320ms ${ease}`,...fontStyle},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,borderRadius:999,background:\"linear-gradient(180deg, rgba(255,255,255,0.28) 0%, rgba(255,255,255,0.07) 45%, rgba(255,255,255,0) 58%)\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"span\",{ref:glowRef,style:{position:\"absolute\",inset:0,opacity:hovered?1:0,transition:`opacity 380ms ${ease}`,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\"},children:label})]});}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicHeight 80\n */export default function Navigation(props){const{logoText,logo,logoDark,logoSrc,logoDarkSrc,logoHeight,logoTrim=1.5,logoHeightScrolled,logoHref,navItems,signInText,signInHref,ctaText,ctaHref,enableThemeToggle,compactOnScroll,surfaceColor,borderColor,textColor,textSubtleColor,accentColor,actionColor,actionTextColor,dropdownBgColor,dropdownShadow,logoFont:logoFontProp,navFont:navFontProp,utilityFont:utilityFontProp,ctaFont:ctaFontProp,dropdownLabelFont:dropdownLabelFontProp,dropdownDescFont:dropdownDescFontProp}=props;// 2026-08-16: merged, NOT default parameters — see the empty-object note above\n// mergeFont. Every downstream `...navFont` / `...labelFont` spread below is unchanged;\n// only the source of those objects moved from \"default param\" to \"fallback + authored\".\nconst logoFont=mergeFont(FALLBACK_LOGO_FONT,logoFontProp);const navFont=mergeFont(FALLBACK_NAV_FONT,navFontProp);const utilityFont=mergeFont(FALLBACK_UTILITY_FONT,utilityFontProp);const ctaFont=mergeFont(FALLBACK_CTA_FONT,ctaFontProp);const dropdownLabelFont=mergeFont(FALLBACK_DROPDOWN_LABEL_FONT,dropdownLabelFontProp);const dropdownDescFont=mergeFont(FALLBACK_DROPDOWN_DESC_FONT,dropdownDescFontProp);const effLogoHref=logoHref||\"/\";const effCtaHref=ctaHref||\"/design-your-event/\";const effSignInHref=signInHref||\"\";// TEMPORARY MIGRATION SHIM (2026-08-17) — see resolveCtaLabel above.\nconst effCtaText=resolveCtaLabel(ctaText);// Framer sometimes strips nested array defaults from instances — if no item carries\n// dropdowns, fall back to the locked canonical nav so menus always work.\nconst effNavItems=navItems&&navItems.length>0&&navItems.some(i=>(i.dropdownItems?.length??0)>0)?withoutUnlinkedItems(navItems):FALLBACK_NAV;const[openIndex,setOpenIndex]=useState(null);// LOAD JUMP — CAUSE (a) (2026-08-11): `scrolled` seeded `false`, so a page opened at a\n// non-zero scroll position (browser scroll restoration, or an #anchor) painted the tall\n// 80px bar with the 52px logo for one frame and then snapped to 64/44. Seed from the\n// REAL scroll position instead — the first painted frame is now already correct.\nconst[scrolled,setScrolled]=useState(()=>{if(typeof window===\"undefined\"||!compactOnScroll)return false;return window.scrollY>40;});// LOAD JUMP — CAUSE (c) (2026-08-11): the bigger one on a phone. These seeded `false`\n// too, so the FIRST client render was the desktop shell and the mobile bar only\n// appeared once the effect ran. Seeding from matchMedia settles the branch before the\n// first paint. Still false-by-default on the server, so the desktop nav stays the\n// fail-open render — the static HTML always ships a working nav.\nconst[isMobile,setIsMobile]=useState(()=>matchesQuery(MOBILE_QUERY));// NARROW PHONE (2026-08-11): a second breakpoint under the 880px mobile switch —\n// below 520px the horizontal lockup eats the whole bar, so it shrinks again there.\nconst[isNarrow,setIsNarrow]=useState(()=>matchesQuery(NARROW_QUERY));const[reduceMotion,setReduceMotion]=useState(()=>matchesQuery(REDUCED_MOTION_QUERY));const[drawerOpen,setDrawerOpen]=useState(false);// DRAWER LEVEL (2026-08-11): null = level 1 (the five top-level rows), otherwise the\n// index of the group whose children are showing. Level 1 is always the default.\nconst[activeGroup,setActiveGroup]=useState(null);// Set for exactly one frame when the level has to be reset without animating.\nconst[noSlide,setNoSlide]=useState(false);const[isDark,toggleTheme,,themeLoaded]=useTheme();const[signInHovered,setSignInHovered]=useState(false);const[logoHovered,setLogoHovered]=useState(false);const closeTimer=useRef(null);// Drawer focus bookkeeping (2026-08-11).\nconst returnFocusTo=useRef(null);const groupRowRefs=useRef({});const backRowRefs=useRef({});const drawerBaseId=useId();const drawerPanelId=index=>`${drawerBaseId}-drawer-level2-${index}`;const isDarkMode=isDark===true;const effSurface=isDarkMode?\"#1a1612\":surfaceColor;const effBorder=isDarkMode?\"rgba(244, 244, 244, 0.10)\":borderColor;const effText=isDarkMode?\"#f4f4f4\":textColor;const effTextSubtle=isDarkMode?\"rgba(244, 244, 244, 0.62)\":textSubtleColor;const effDropdownBg=isDarkMode?\"#252521\":dropdownBgColor;const effDropdownShadow=isDarkMode?\"0 16px 40px rgba(0, 0, 0, 0.5)\":dropdownShadow;useEffect(()=>{if(typeof document===\"undefined\")return;const STYLE_ID=\"smco-global-motion\";if(document.getElementById(STYLE_ID))return;const style=document.createElement(\"style\");style.id=STYLE_ID;style.textContent=`\n            html { scroll-behavior: smooth; }\n            section[data-section] { scroll-margin-top: 96px; }\n            @media (prefers-reduced-motion: reduce) {\n                html { scroll-behavior: auto; }\n                *, *::before, *::after {\n                    animation-duration: 0.01ms !important;\n                    animation-iteration-count: 1 !important;\n                    transition-duration: 0.01ms !important;\n                }\n            }\n        `;document.head.appendChild(style);return()=>{const existing=document.getElementById(STYLE_ID);if(existing)existing.remove();};},[]);// 2026-08-11: was a useEffect — the correction landed AFTER the browser had already\n// painted the wrong size. A layout effect runs before that paint.\nuseIsomorphicLayoutEffect(()=>{if(!compactOnScroll){setScrolled(false);return;}const onScroll=()=>setScrolled(window.scrollY>40);onScroll();window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>window.removeEventListener(\"scroll\",onScroll);},[compactOnScroll]);// 2026-08-11: same reason — the breakpoint has to be settled pre-paint, not post-paint.\nuseIsomorphicLayoutEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(MOBILE_QUERY);// 2026-08-11: the same listener pair also tracks the 520px narrow-phone breakpoint\n// and the reduced-motion preference the drawer slide honours.\nconst mqNarrow=window.matchMedia(NARROW_QUERY);const mqMotion=window.matchMedia(REDUCED_MOTION_QUERY);const onChange=()=>{setIsMobile(mq.matches);setIsNarrow(mqNarrow.matches);setReduceMotion(mqMotion.matches);};onChange();if(mq.addEventListener){mq.addEventListener(\"change\",onChange);mqNarrow.addEventListener(\"change\",onChange);mqMotion.addEventListener(\"change\",onChange);return()=>{mq.removeEventListener(\"change\",onChange);mqNarrow.removeEventListener(\"change\",onChange);mqMotion.removeEventListener(\"change\",onChange);};}mq.addListener(onChange);mqNarrow.addListener(onChange);mqMotion.addListener(onChange);return()=>{mq.removeListener(onChange);mqNarrow.removeListener(onChange);mqMotion.removeListener(onChange);};},[]);// CLOSING RESETS TO LEVEL 1 (2026-08-11): the drawer never reopens deep inside a group.\n// The reset rides in on the same commit as the OPEN rather than the close — reset it on\n// the way out and the panel empties itself mid-animation, since the level it was showing\n// would snap off screen while the panel is still sliding away. Riding in with the open\n// also survives a close-then-reopen inside the animation window.\nconst openDrawer=useCallback(()=>{setNoSlide(true);setActiveGroup(null);returnFocusTo.current=null;setDrawerOpen(true);},[]);// Every close path routes through here: hamburger, Escape, and every link in the drawer.\nconst closeDrawer=useCallback(()=>{returnFocusTo.current=null;setDrawerOpen(false);},[]);useEffect(()=>{if(!noSlide)return;// Two frames: one to paint the reset with transitions off, one to switch them back\n// on without the paint that follows animating.\nlet inner=0;const outer=requestAnimationFrame(()=>{inner=requestAnimationFrame(()=>setNoSlide(false));});return()=>{cancelAnimationFrame(outer);cancelAnimationFrame(inner);};},[noSlide]);useEffect(()=>{if(!drawerOpen)return;const onKey=e=>{if(e.key===\"Escape\")closeDrawer();};document.addEventListener(\"keydown\",onKey);document.body.style.overflow=\"hidden\";return()=>{document.removeEventListener(\"keydown\",onKey);document.body.style.overflow=\"\";};},[drawerOpen,closeDrawer]);// FOCUS MANAGEMENT (2026-08-11): entering a group moves focus to that group's back\n// button; coming back returns it to the row that opened the group. Opening the drawer\n// at level 1 moves nothing — returnFocusTo is only set by a row press.\nuseEffect(()=>{if(!drawerOpen)return;if(activeGroup!==null){const back=backRowRefs.current[activeGroup];if(back)back.focus({preventScroll:true});return;}const origin=returnFocusTo.current;if(origin===null)return;returnFocusTo.current=null;const row=groupRowRefs.current[origin];if(row)row.focus({preventScroll:true});},[activeGroup,drawerOpen]);// Click-away closes any open dropdown.\nuseEffect(()=>{if(openIndex===null||typeof document===\"undefined\")return;const onDocClick=()=>setOpenIndex(null);document.addEventListener(\"click\",onDocClick);return()=>document.removeEventListener(\"click\",onDocClick);},[openIndex]);// Logo: expanded at the top, compact once scrolled. Header grows to fit whichever\n// size is active so the logo stays legible. Reserve the taller (top) height for layout.\n// LOAD JUMP — CAUSE (b) (2026-08-11, Brent): compacting is a DESKTOP refinement. On a\n// phone the bar is already short, so the shrink reads as a glitch rather than a\n// refinement — `isCompact` is hard-off below the breakpoint and the mobile bar below\n// uses one fixed height. Desktop compact behaviour is exactly as it was.\nconst isCompact=scrolled&&!isMobile;const effLogoHeight=isCompact?logoHeightScrolled:logoHeight;const baseNavHeight=isCompact?64:80;const navHeight=Math.max(baseNavHeight,effLogoHeight+24);const navReserve=Math.max(80,logoHeight+24);const ease=\"cubic-bezier(0.16, 1, 0.3, 1)\";const handleEnter=index=>{if(closeTimer.current){clearTimeout(closeTimer.current);closeTimer.current=null;}setOpenIndex(index);};const handleLeave=()=>{closeTimer.current=setTimeout(()=>setOpenIndex(null),120);};// SMALL-TEXT SCALE RAISE (2026-08-12): mobile wordmark fallback 13 → 14.\nconst mobileLogoStyle={...logoFont,fontSize:14};// DRAWER TYPE (2026-08-12): the owner called the drawer fonts \"overpowering\".\n// Level-1 rows drop 22 -> 18. TAP TARGETS ARE NOT TOUCHED: drawerRowBase\n// keeps minHeight 56 (the hit areas were deliberately enlarged 2026-08-11\n// and every drawer row stays >= 48px). Only the glyphs got smaller, not the\n// thing you press. Level-2 child rows stay at 15 -- they were already below\n// the level-1 size and shrinking them further would hurt legibility.\n// (Superseded 2026-08-12 by the small-text scale raise: level-2 rows are now 16,\n// still below level-1's 18.) The\n// level-2 \"back\" header row is a separate 18/52 style further down and is\n// left as-is; it now matches level-1's size, which is correct for a row\n// that echoes the level-1 label it came from. Desktop nav type is\n// untouched -- these styles are only spread into the mobile drawer.\nconst mobileTopLinkStyle={...navFont,fontSize:18,fontWeight:700,letterSpacing:\"-0.01em\"};// SMALL-TEXT SCALE RAISE (2026-08-12): level-2 drawer child rows 15 → 16. They stay two\n// steps under the 18px level-1 row above, so the drawer hierarchy is unchanged.\nconst mobileSubLinkStyle={...navFont,fontSize:16,fontWeight:400,letterSpacing:\"0.01em\",textTransform:\"none\"};const mobileCtaStyle={...ctaFont,fontWeight:600};// MOBILE BAR HEIGHT (2026-08-11): the bar measured 68px on a 400px phone and the lockup\n// spanned 309px of it. Logo drops 48 → 40 on mobile and again to 36 below 520px, and the\n// bar floor drops 64 → 56, landing the bar at 56–58px.\n// NOTE (2026-08-11): the \"SWEET MOMENTS CO.\" wordmark cannot be hidden on its own — the\n// logo is a single horizontal lockup PNG with the mark and the wordmark baked into one\n// image (logoSrc / Logo Image), so there is no separate wordmark element to hide below\n// 520px. Shrinking is the only lever until a mark-only asset exists.\nconst mobileLogoH=Math.min(logoHeight,isNarrow?36:40);const mobileBarHeight=Math.max(56,mobileLogoH+18);// PRE-HYDRATION SHELL HEIGHT (2026-08-11): Framer statically renders this component, and\n// `isMobile` can only become true once JS runs — so the HTML a phone receives contains\n// the DESKTOP shell and the browser paints an 80px bar before the mobile bar replaces\n// it. That swap is the jump the owner reported, and no amount of state seeding reaches\n// it, because it happens before any of our JS does. These two rules ship INSIDE the\n// markup (so they are in the static HTML) and pin the shell to the mobile bar height\n// below the breakpoint — same height before and after hydration, no visible change.\n// Nothing is hidden and nothing is gated: if JS never runs, the nav still renders in\n// full and still works. Above 880px the rules do not apply at all — desktop untouched.\nconst shellCss=useMemo(()=>{const wide=Math.max(56,Math.min(logoHeight,40)+18);const narrow=Math.max(56,Math.min(logoHeight,36)+18);// NAV LAYOUT OVERHANG (2026-08-12): the shell above is the component's\n// OWN root and was already correct at 56px, but every page still began\n// 81px down. Measured on the branch at 414px: the nav paints to y=56\n// while the first page section starts at y=81. The missing 25px is the\n// Framer canvas container that wraps this component instance -- a\n// generated `height: 80px` class sized for the DESKTOP bar (80px) and\n// applied at every breakpoint. It is canvas geometry, so it cannot be\n// reached from props; the only handle from inside the component is the\n// parent selector below. That container is this shell's direct parent,\n// so `:has(> [data-smco-nav-shell])` collapses it to the same painted\n// height the shell already uses, removing 25px of dead air from the top\n// of EVERY page in one place -- which is exactly where HeroSection.tsx's\n// 2026-08-11 \"fix it where it lives\" note said this belonged.\n// Both media queries are mobile-only, so desktop keeps its 80px bar and\n// its 80px container untouched. Fails open: if :has() is unsupported the\n// rule is simply dropped and the layout is today's, never broken.\nreturn`@media ${MOBILE_QUERY} { [data-smco-nav-shell] { height: ${wide}px !important; } }\n@media ${MOBILE_QUERY} { div:has(> [data-smco-nav-shell]) { height: ${wide}px !important; } }\n@media ${NARROW_QUERY} { [data-smco-nav-shell] { height: ${narrow}px !important; } }\n@media ${NARROW_QUERY} { div:has(> [data-smco-nav-shell]) { height: ${narrow}px !important; } }`;},[logoHeight]);const shellStyleTag=/*#__PURE__*/_jsx(\"style\",{\"data-smco-nav-shell-css\":\"\",dangerouslySetInnerHTML:{__html:shellCss}});// ── MOBILE DRAWER, TWO LEVELS (2026-08-11) ───────────────────────────────\n// Level 1 = toggle + CTA, then the five top-level rows. Level 2 = one group's children.\n// Both levels live in the same fixed panel; only the active one is visible, and the\n// panel slides horizontally between them.\nconst SLIDE_MS=280;const DRAWER_MS=420;const openGroup=index=>{returnFocusTo.current=index;setActiveGroup(index);};const backToRoot=()=>setActiveGroup(null);// Reduced motion swaps instantly — no slide, no delays.\nconst paneStyle=(isActiveLevel,restOffset)=>{const visible=drawerOpen&&isActiveLevel;// Explicit visibility keeps the level that is off screen out of the tab order. It\n// has to LAG whichever animation is carrying the pane away, or the pane blanks out\n// while it is still on screen: the slide when the level changes, the full drawer\n// animation when the whole panel is closing.\nconst hideDelay=reduceMotion?0:drawerOpen?SLIDE_MS:DRAWER_MS;const visibilityStep=`visibility 0s linear ${visible?0:hideDelay}ms`;return{position:\"absolute\",inset:0,overflowY:\"auto\",padding:\"16px 20px 28px\",boxSizing:\"border-box\",display:\"flex\",flexDirection:\"column\",transform:isActiveLevel?\"translateX(0)\":restOffset,visibility:visible?\"visible\":\"hidden\",transition:reduceMotion||noSlide?visibilityStep:`transform ${SLIDE_MS}ms ${ease}, ${visibilityStep}`,willChange:\"transform\"};};// Every drawer row is one tappable block of at least 48px — the chevron is part of the\n// row, never a separate little target beside a link.\nconst drawerRowBase={display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12,width:\"100%\",minHeight:56,padding:\"8px 0\",margin:0,boxSizing:\"border-box\",background:\"transparent\",border:\"none\",borderBottom:`1px solid ${effBorder}`,borderRadius:0,textAlign:\"left\",textDecoration:\"none\",cursor:\"pointer\",color:effText,...mobileTopLinkStyle};const drawerSubRowStyle={display:\"flex\",alignItems:\"center\",width:\"100%\",minHeight:56,padding:\"8px 0\",boxSizing:\"border-box\",borderBottom:`1px solid ${effBorder}`,textDecoration:\"none\",color:effTextSubtle,...mobileSubLinkStyle};if(isMobile){return /*#__PURE__*/_jsxs(\"div\",{\"data-smco-nav-shell\":\"\",style:{width:\"100%\",height:mobileBarHeight},children:[shellStyleTag,/*#__PURE__*/_jsxs(\"nav\",{\"data-smco-nav-shell\":\"\",style:{position:\"fixed\",top:0,left:0,right:0,width:\"100%\",height:mobileBarHeight,backgroundColor:effSurface,borderBottom:`1px solid ${effBorder}`,padding:\"0 20px\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",zIndex:9e3,transition:`background-color 320ms ${ease}`},children:[/*#__PURE__*/_jsx(\"a\",{href:effLogoHref,style:{textDecoration:\"none\",color:effText,display:\"inline-flex\",alignItems:\"center\",...mobileLogoStyle},children:/*#__PURE__*/_jsx(LogoMark,{logo:logo,logoDark:logoDark,logoSrc:logoSrc,logoDarkSrc:logoDarkSrc,logoText:logoText,logoHeight:mobileLogoH,logoTrim:logoTrim,ease:ease,isDark:isDarkMode})}),/*#__PURE__*/_jsxs(\"button\",{type:\"button\",\"aria-label\":drawerOpen?\"Close menu\":\"Open menu\",\"aria-expanded\":drawerOpen,onClick:()=>drawerOpen?closeDrawer():openDrawer(),style:{background:\"transparent\",border:\"none\",cursor:\"pointer\",// TAP TARGET (2026-08-11): the button measured 38 × 31px — under the\n// 44px minimum, on the single most important control on mobile. More\n// padding plus a 44px floor grow the HIT AREA only; the three bars\n// keep their 22/16/22 × 1.5px geometry, so the icon looks the same.\npadding:11,boxSizing:\"border-box\",minWidth:44,minHeight:44,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",gap:5,alignItems:\"flex-end\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",width:22,height:1.5,background:effText,transform:drawerOpen?\"translateY(6.5px) rotate(45deg)\":\"none\",transition:`transform 320ms ${ease}`}}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",width:16,height:1.5,background:effText,opacity:drawerOpen?0:1,transition:`opacity 220ms ${ease}`}}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",width:22,height:1.5,background:effText,transform:drawerOpen?\"translateY(-6.5px) rotate(-45deg)\":\"none\",transition:`transform 320ms ${ease}`}})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",top:mobileBarHeight,left:0,right:0,bottom:0,backgroundColor:effSurface,zIndex:8999,overflow:\"hidden\",transform:drawerOpen?\"translateY(0)\":\"translateY(-100%)\",opacity:drawerOpen?1:0,visibility:drawerOpen?\"visible\":\"hidden\",pointerEvents:drawerOpen?\"auto\":\"none\",transition:reduceMotion?\"none\":`transform ${DRAWER_MS}ms ${ease}, opacity 320ms ${ease}, visibility 0s linear ${drawerOpen?0:DRAWER_MS}ms`},children:[/*#__PURE__*/_jsxs(\"div\",{style:paneStyle(activeGroup===null,\"translateX(-100%)\"),children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12,minHeight:48,marginBottom:12},children:[enableThemeToggle&&themeLoaded&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:toggleTheme,\"aria-label\":isDark?\"Switch to light mode\":\"Switch to dark mode\",style:{background:\"transparent\",border:`1px solid ${effBorder}`,borderRadius:999,padding:\"10px 18px\",minHeight:44,boxSizing:\"border-box\",color:effText,cursor:\"pointer\",whiteSpace:\"nowrap\",...utilityFont},children:isDark?\"Light mode\":\"Dark mode\"}),/*#__PURE__*/_jsx(NavGlassCta,{href:effCtaHref,label:effCtaText,actionColor:actionColor,actionTextColor:actionTextColor,fontStyle:mobileCtaStyle,ease:ease,padding:\"14px 28px\",onClick:closeDrawer})]}),effNavItems.map((item,index)=>{const kids=item.dropdownItems??[];const hasKids=kids.length>0;const label=mobileNavLabel(item.label);// A group: the WHOLE row is the button that opens level 2.\nif(hasKids){return /*#__PURE__*/_jsxs(\"button\",{type:\"button\",ref:el=>{groupRowRefs.current[index]=el;},\"aria-expanded\":activeGroup===index,\"aria-controls\":drawerPanelId(index),onClick:()=>openGroup(index),style:drawerRowBase,children:[/*#__PURE__*/_jsx(\"span\",{children:label}),/*#__PURE__*/_jsx(DrawerChevron,{direction:\"right\",color:effTextSubtle})]},item.label);}// No children: a direct link (Pricing), no chevron.\nif(item.href){return /*#__PURE__*/_jsx(\"a\",{href:item.href,onClick:closeDrawer,style:drawerRowBase,children:/*#__PURE__*/_jsx(\"span\",{children:label})},item.label);}// Label with neither children nor a destination: a plain row.\nreturn /*#__PURE__*/_jsx(\"div\",{style:{...drawerRowBase,cursor:\"default\"},children:/*#__PURE__*/_jsx(\"span\",{children:label})},item.label);}),effSignInHref&&/*#__PURE__*/_jsx(\"a\",{href:effSignInHref,onClick:closeDrawer,style:{display:\"flex\",alignItems:\"center\",minHeight:48,marginTop:8,textDecoration:\"none\",color:effText,...utilityFont},children:signInText})]}),effNavItems.map((item,index)=>{const kids=item.dropdownItems??[];if(kids.length===0)return null;const label=mobileNavLabel(item.label);return /*#__PURE__*/_jsxs(\"div\",{id:drawerPanelId(index),role:\"group\",\"aria-label\":label,style:paneStyle(activeGroup===index,\"translateX(100%)\"),children:[/*#__PURE__*/_jsxs(\"button\",{type:\"button\",ref:el=>{backRowRefs.current[index]=el;},// Inside the panel, \"Experiences, button\" alone tells a\n// screen-reader user nothing. The visible label stays in\n// the accessible name, so voice control still matches it.\n\"aria-label\":`Back to main menu, ${label}`,onClick:backToRoot,style:{...drawerRowBase,justifyContent:\"flex-start\",gap:8,minHeight:52,fontSize:18,color:effText},children:[/*#__PURE__*/_jsx(DrawerChevron,{direction:\"left\",color:effText}),/*#__PURE__*/_jsx(\"span\",{children:label})]}),item.href&&/*#__PURE__*/_jsx(\"a\",{href:item.href,onClick:closeDrawer,style:drawerSubRowStyle,children:item.label}),kids.map(d=>/*#__PURE__*/_jsx(\"a\",{href:d.href,onClick:closeDrawer,style:drawerSubRowStyle,children:d.label},d.label))]},`level2-${item.label}`);})]})]});}return(// data-smco-nav-shell (2026-08-11): below 880px the stylesheet above pins both the\n// spacer and the bar to the mobile bar height, so the shell Framer static-renders\n// is already the right size on a phone and hydration swaps the CONTENTS without\n// changing the height. Above 880px the rules never match.\n/*#__PURE__*/_jsxs(\"div\",{\"data-smco-nav-shell\":\"\",style:{width:\"100%\",height:navReserve},children:[shellStyleTag,/*#__PURE__*/_jsxs(\"nav\",{\"data-smco-nav-shell\":\"\",style:{position:\"fixed\",top:0,left:0,right:0,width:\"100%\",height:navHeight,backgroundColor:effSurface,borderBottom:`1px solid ${effBorder}`,padding:\"0 64px\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",zIndex:9e3,transition:`height 360ms ${ease}, background-color 320ms ${ease}, box-shadow 360ms ${ease}`,boxShadow:scrolled?`0 1px 24px ${isDarkMode?\"rgba(0,0,0,0.4)\":\"rgba(0, 0, 0, 0.04)\"}`:\"none\"},children:[/*#__PURE__*/_jsx(\"a\",{href:effLogoHref,onMouseEnter:()=>setLogoHovered(true),onMouseLeave:()=>setLogoHovered(false),style:{textDecoration:\"none\",color:logoHovered?accentColor:effText,transition:`color 220ms ${ease}`,display:\"inline-flex\",alignItems:\"center\",...logoFont},children:/*#__PURE__*/_jsx(LogoMark,{logo:logo,logoDark:logoDark,logoSrc:logoSrc,logoDarkSrc:logoDarkSrc,logoText:logoText,logoHeight:effLogoHeight,logoHeightMax:Math.max(logoHeight,logoHeightScrolled),logoTrim:logoTrim,ease:ease,isDark:isDarkMode})}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",// NAV ROW FIT AT 1280px (2026-08-16, Brent): 36 → 20. This row's\n// only child is the effNavItems map — five top-level items, so\n// four gaps. 4 × 16 = 64px of the 72.94px overflow measured at\n// 1280px (1209.94px used vs 1137.00px available) comes back here;\n// the 14 → 13 label size and 0.13em → 0.08em tracking on\n// FALLBACK_NAV_FONT cover the rest and leave 54.95px of slack.\n// Desktop only — the mobile drawer returns earlier, at `if\n// (isMobile)`, and never reaches this row.\ngap:20,alignItems:\"center\"},children:effNavItems.map((item,index)=>{const isOpen=openIndex===index;const hasDropdown=!!item.dropdownItems&&item.dropdownItems.length>0;const hasHref=!!item.href;const triggerStyle={position:\"relative\",textDecoration:\"none\",color:isOpen?accentColor:effText,display:\"inline-flex\",alignItems:\"center\",gap:6,cursor:\"pointer\",transition:`color 220ms ${ease}`,background:\"transparent\",border:\"none\",padding:\"0 0 4px 0\",...navFont};const triggerInner=/*#__PURE__*/_jsxs(_Fragment,{children:[item.label,hasDropdown&&/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",fontSize:9,opacity:.7,transform:isOpen?\"rotate(180deg)\":\"rotate(0deg)\",transition:`transform 320ms ${ease}`},children:\"▾\"}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",bottom:0,left:0,width:\"100%\",height:1,backgroundColor:accentColor,transform:isOpen?\"scaleX(1)\":\"scaleX(0)\",transformOrigin:\"left\",transition:`transform 320ms ${ease}`}})]});return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},onMouseEnter:()=>handleEnter(index),onMouseLeave:handleLeave,children:[hasHref?/*#__PURE__*/_jsx(\"a\",{href:item.href,onClick:e=>{// First interaction opens the menu (covers touch +\n// environments where hover doesn't fire); when the\n// menu is already open, the click navigates normally.\nif(hasDropdown&&!isOpen){e.preventDefault();e.stopPropagation();handleEnter(index);}},style:triggerStyle,children:triggerInner}):// Label-only parent: never navigates, only toggles its menu.\n/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-expanded\":isOpen,onClick:e=>{e.preventDefault();e.stopPropagation();if(isOpen){setOpenIndex(null);}else{handleEnter(index);}},style:triggerStyle,children:triggerInner}),hasDropdown&&/*#__PURE__*/_jsx(\"div\",{onClick:e=>e.stopPropagation(),style:{position:\"absolute\",top:\"100%\",left:\"50%\",transform:isOpen?\"translate(-50%, 0)\":\"translate(-50%, -8px)\",paddingTop:18,pointerEvents:isOpen?\"auto\":\"none\",opacity:isOpen?1:0,transition:`opacity 240ms ${ease}, transform 320ms ${ease}`,zIndex:9100},children:/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:effDropdownBg,borderRadius:20,border:`1px solid ${effBorder}`,boxShadow:effDropdownShadow,padding:12,display:\"flex\",flexDirection:\"column\",gap:2,minWidth:280},children:item.dropdownItems?.map(d=>/*#__PURE__*/_jsx(DropdownLink,{item:d,textColor:effText,textSubtleColor:effTextSubtle,accentColor:accentColor,labelFont:dropdownLabelFont,descFont:dropdownDescFont,ease:ease},d.label))})})]},item.label);})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:20},children:[enableThemeToggle&&themeLoaded&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:toggleTheme,\"aria-label\":isDark?\"Switch to light mode\":\"Switch to dark mode\",style:{background:\"transparent\",border:\"none\",cursor:\"pointer\",padding:8,color:effText,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:36,height:36,borderRadius:999,transition:`background-color 220ms ${ease}, color 220ms ${ease}`},onMouseEnter:e=>{e.currentTarget.style.color=accentColor;},onMouseLeave:e=>{e.currentTarget.style.color=effText;},children:isDark?/*#__PURE__*/_jsxs(\"svg\",{width:\"18\",height:\"18\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.6\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"12\",r:\"4\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41\"})]}):/*#__PURE__*/_jsx(\"svg\",{width:\"18\",height:\"18\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.6\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"})})}),effSignInHref&&/*#__PURE__*/_jsx(\"a\",{href:effSignInHref,onMouseEnter:()=>setSignInHovered(true),onMouseLeave:()=>setSignInHovered(false),style:{textDecoration:\"none\",color:signInHovered?accentColor:effText,transition:`color 220ms ${ease}`,...utilityFont},children:signInText}),/*#__PURE__*/_jsx(NavGlassCta,{href:effCtaHref,label:effCtaText,actionColor:actionColor,actionTextColor:actionTextColor,fontStyle:ctaFont,ease:ease,padding:\"12px 24px\"})]})]})]}));}function DropdownLink(props){const[hovered,setHovered]=useState(false);const{item,textColor,textSubtleColor,accentColor,labelFont,descFont,ease}=props;return /*#__PURE__*/_jsxs(\"a\",{href:item.href,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),style:{textDecoration:\"none\",display:\"block\",padding:\"10px 14px\",borderRadius:12,backgroundColor:hovered?\"rgba(150, 192, 165, 0.10)\":\"transparent\",transition:`background-color 220ms ${ease}`},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:hovered?accentColor:textColor,transition:`color 220ms ${ease}`,...labelFont},children:item.label}),item.description&&/*#__PURE__*/_jsx(\"div\",{style:{color:textSubtleColor,marginTop:2,...descFont},children:item.description})]});}addPropertyControls(Navigation,{logoText:{type:ControlType.String,title:\"Logo Text\",defaultValue:\"SWEET MOMENTS CO.\"},logo:{type:ControlType.ResponsiveImage,title:\"Logo Image\",description:\"Upload your logo. Leave empty to show the text wordmark.\"},logoDark:{type:ControlType.ResponsiveImage,title:\"Logo (Dark)\",description:\"Optional. Shown in dark mode; falls back to Logo Image.\"},logoSrc:{type:ControlType.String,title:\"Logo URL\",defaultValue:\"https://framerusercontent.com/images/OOQULDvhROXpwwa5XPs0nigLbV8.png\",description:\"Horizontal lockup, no tagline. A string rather than an Image control so it can be set programmatically.\"},logoDarkSrc:{type:ControlType.String,title:\"Logo URL (Dark)\",defaultValue:\"https://framerusercontent.com/images/ooYJ7QjRSaXkhV3zPnaXJBQRjts.png\",description:\"Horizontal reversed lockup, shown in dark mode.\"},logoHeight:{type:ControlType.Number,title:\"Logo Height (Top)\",defaultValue:52,min:12,max:120,step:1,unit:\"px\"},logoHeightScrolled:{type:ControlType.Number,title:\"Logo Height (Scrolled)\",defaultValue:44,min:12,max:120,step:1,unit:\"px\"},logoTrim:{type:ControlType.Number,title:\"Logo Trim\",defaultValue:1.5,min:1,max:2.5,step:.05,description:\"Compensates for transparent padding baked into the logo file. 1 = no trim.\"},logoHref:{type:ControlType.Link,title:\"Logo Link\"},navItems:{type:ControlType.Array,title:\"Nav Items (empty = locked SMCo nav)\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,defaultValue:\"Nav Item\"},href:{type:ControlType.Link,title:\"Link (leave empty = label only)\"},dropdownItems:{type:ControlType.Array,title:\"Dropdown\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,defaultValue:\"Item\"},href:{type:ControlType.Link,title:\"Link\"},description:{type:ControlType.String,title:\"Description\",defaultValue:\"\",placeholder:\"Optional one-liner\"}}},defaultValue:[]}}},defaultValue:[]},signInText:{type:ControlType.String,title:\"Sign-In Text\",defaultValue:\"Sign In\"},signInHref:{type:ControlType.Link,title:\"Sign-In Link\"},ctaText:{type:ControlType.String,title:\"CTA Text\",defaultValue:\"Build My Event\"},ctaHref:{type:ControlType.Link,title:\"CTA Link\",defaultValue:\"/design-your-event/\"},enableThemeToggle:{type:ControlType.Boolean,title:\"Theme Toggle\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},compactOnScroll:{type:ControlType.Boolean,title:\"Compact on Scroll\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},surfaceColor:{type:ControlType.Color,title:\"Surface\",defaultValue:\"#f8f5f0\"},borderColor:{type:ControlType.Color,title:\"Hairline\",defaultValue:\"rgba(14, 14, 14, 0.10)\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#0e0e0e\"},textSubtleColor:{type:ControlType.Color,title:\"Text Subtle\",defaultValue:\"rgba(14, 14, 14, 0.62)\"},accentColor:{type:ControlType.Color,title:\"Accent (Sage)\",defaultValue:\"#96c0a5\"},actionColor:{type:ControlType.Color,title:\"Action (Burnt Orange)\",defaultValue:\"#ff7f50\"},actionTextColor:{type:ControlType.Color,title:\"Action Text\",defaultValue:\"#ffffff\"},dropdownBgColor:{type:ControlType.Color,title:\"Dropdown BG\",defaultValue:\"#ffffff\"},dropdownShadow:{type:ControlType.String,title:\"Dropdown Shadow\",defaultValue:\"0 16px 40px rgba(14, 14, 14, 0.08)\"},logoFont:{type:ControlType.Font,title:\"Logo Font\",controls:\"extended\"},navFont:{type:ControlType.Font,title:\"Nav Font\",controls:\"extended\"},utilityFont:{type:ControlType.Font,title:\"Utility Font\",controls:\"extended\"},ctaFont:{type:ControlType.Font,title:\"CTA Font\",controls:\"extended\"},dropdownLabelFont:{type:ControlType.Font,title:\"Dropdown Label\",controls:\"extended\"},dropdownDescFont:{type:ControlType.Font,title:\"Dropdown Desc\",controls:\"extended\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Navigation\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"80\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Navigation.map","// SMCo ScrollLaptop — renders the hero cutout image (transparent PNG) in the split hero's\n// right column, with optional horizontal flip, a soft GROUND SHADOW seated beneath the image\n// (radial ellipse — a darker contact shadow in light mode, a soft warm GLOW in dark mode), and\n// a selectable scroll MOTION (scrollY-driven so it responds from the first scroll):\n//   • \"stationary\" — no scroll transform (reveal fade only)\n//   • \"roll\"       — tumbles up and off to the side, fading; the ground shadow tracks it exactly\n//   • \"slidefade\"  — drifts upward and fades out as you scroll\n// Motion only animates in Preview / published — static on the Framer canvas.\n// Theme-aware via the smco-theme-change hook.\n//\n// PLACEHOLDER SHIPPED TO PRODUCTION (2026-08-17): the \"Hero image\" empty state is now\n// CANVAS-ONLY, the same treatment ImmersiveBand.tsx gave its \"Drop band photo here\" hint on\n// 2026-08-12. Eight live pages rendered this component through InteriorHero's split variant with\n// no image bound — /sales-teams/, /why-smco/how-it-works/ and six /experiences/<category>/ heroes\n// — so the dashed 3:2 box and its 12px uppercase label were reaching real visitors, sitting in\n// the right half of the hero on top of the page's own background photo. It is in the\n// SERVER-RENDERED HTML, not just the hydrated DOM, so no-JS readers and crawlers saw it too.\n// Gating on RenderTarget.canvas removes it from every published page while keeping the drop\n// target for whoever binds the photo in the editor. The string itself is unchanged and stays in\n// the file. NOTE: InteriorHero.tsx now ALSO refuses to mount this component at all when nothing\n// is bound (see its 2026-08-17 showSplitVisual gate) — it has to, because hiding a grid CHILD\n// never removes its column TRACK. This gate is the second line of defence, and the one that\n// covers any future instance placed on a page directly rather than through the hero.\n//\n// SHADOW GEOMETRY (fixed 2026-07-19): the shadow's positioned box is FULL WIDTH (left:0/right:0)\n// with the visible ellipse inset on a child element. This matters because CSS translate\n// percentages resolve against the ELEMENT'S OWN width — previously the box was inset 12% each\n// side (76% as wide as the image), so a \"150%\" shadow translate travelled a different pixel\n// distance than the image's \"130%\" and the two drifted apart mid-scroll. Both now share the same\n// 100%-of-wrapper basis, so the shadow stays welded under the image at any size.\n//\n// SHADOW PLACEMENT (2026-07-19): positioned by shadowGap = the distance from the IMAGE'S BOTTOM\n// EDGE to the TOP of the shadow. The box is offset by (shadowHeight + shadowGap) so the shadow\n// always clears its own height and can never hide behind the opaque image. gap 0 = shadow starts\n// exactly at the image edge; negative gap intentionally tucks it under (right for transparent\n// cutouts); positive gap floats it lower. Height/offset are PX, not % of image height, so the\n// shadow does not move when Max Width or the image aspect ratio changes.\n// NOTE: Framer Image controls can't be set via MCP/XML — imageSrc (string URL) is the fallback.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef,useState}from\"react\";function imgUrl(v){if(typeof v===\"string\")return v.trim();if(v&&typeof v===\"object\"&&typeof v.src===\"string\")return v.src.trim();return\"\";}function useDarkMode(forceTheme){const[isDark,setIsDark]=useState(false);useEffect(()=>{if(forceTheme===\"dark\"){setIsDark(true);return;}if(forceTheme===\"light\"){setIsDark(false);return;}if(typeof document===\"undefined\")return;const check=()=>setIsDark(document.documentElement.classList.contains(\"dark\"));check();const onChange=()=>check();document.addEventListener(\"smco-theme-change\",onChange);const observer=new MutationObserver(check);observer.observe(document.documentElement,{attributes:true,attributeFilter:[\"class\"]});return()=>{document.removeEventListener(\"smco-theme-change\",onChange);observer.disconnect();};},[forceTheme]);return isDark;}// Roll motion constants — the image and the shadow MUST share TRAVEL_X so they stay locked.\nconst TRAVEL_X=130;const LIFT_Y=-14;const SPIN=160;/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 560\n * @framerIntrinsicHeight 380\n */export default function ScrollLaptop(props){const{imageUrl=\"\",imageSrc=\"\",imageAlt=\"A live virtual cooking event on a laptop\",flipX=false,maxWidth=560,motion=\"stationary\",scrollDistance=700,shadow=true,shadowWidth=76,shadowHeight=30,shadowGap=6,shadowOpacity=1,shadowBlur=15,forceTheme=\"auto\"}=props;const wrapRef=useRef(null);const innerRef=useRef(null);const shadowRef=useRef(null);const[revealed,setRevealed]=useState(false);const isDark=useDarkMode(forceTheme);// isCanvas also gates the empty-state placeholder below. Deliberately NOT isStatic: that\n// also matches server-side rendering, and the whole point of the 2026-08-17 fix is that the\n// placeholder was reaching the server-rendered HTML of eight published pages.\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const isStatic=isCanvas||typeof window===\"undefined\";const src=imgUrl(imageUrl)||(typeof imageSrc===\"string\"?imageSrc.trim():\"\");const hasImg=src.length>0;const fx=flipX?-1:1;const ease=\"cubic-bezier(0.16, 1, 0.3, 1)\";// Light mode: darker contact shadow (25% heavier). Dark mode: soft warm glow (a dark shadow\n// would be invisible on the dark surface), lifting the object off the background.\nconst groundShadowBg=isDark?\"radial-gradient(ellipse at center, rgba(255, 186, 128, 0.30) 0%, rgba(255, 186, 128, 0) 72%)\":\"radial-gradient(ellipse at center, rgba(14, 14, 14, 0.33) 0%, rgba(14, 14, 14, 0) 72%)\";// Inset for the visible ellipse, derived from shadowWidth (% of the image width).\nconst sw=Math.min(Math.max(shadowWidth,20),100);const inset=`${((100-sw)/2).toFixed(2)}%`;// Offset the box by its OWN height + the gap, so the shadow's TOP edge lands `shadowGap`\n// below the image's bottom edge. Guarantees it never hides behind the image.\nconst shadowDrop=shadowHeight+shadowGap;const reservedBelow=Math.max(shadowDrop+shadowBlur+8,24);useEffect(()=>{if(isStatic){setRevealed(true);return;}const node=wrapRef.current;if(!node||typeof IntersectionObserver===\"undefined\"){setRevealed(true);return;}const io=new IntersectionObserver(entries=>entries.forEach(e=>{if(e.isIntersecting){setRevealed(true);io.disconnect();}}),{threshold:.2});io.observe(node);return()=>io.disconnect();},[isStatic]);useEffect(()=>{if(isStatic||motion===\"stationary\")return;if(window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;let raf=0;const apply=()=>{raf=0;if(!innerRef.current)return;const dist=Math.max(scrollDistance,1);const progress=Math.min(Math.max(window.scrollY/dist,0),1);if(motion===\"roll\"){const tx=progress*TRAVEL_X;const ty=progress*LIFT_Y;const rot=progress*SPIN;innerRef.current.style.transform=`translate(${tx.toFixed(1)}%, ${ty.toFixed(1)}px) rotate(${rot.toFixed(1)}deg) scaleX(${fx})`;innerRef.current.style.opacity=(1-progress*.85).toFixed(3);if(shadowRef.current){// Same TRAVEL_X, same 100%-of-wrapper basis => stays under the image.\n// The shadow stays on the ground line (no lift) and shrinks as the object\n// leaves it, which is what a real contact shadow does.\nconst squash=Math.max(1-progress*.55,.18);shadowRef.current.style.transform=`translateX(${tx.toFixed(1)}%) scaleX(${squash.toFixed(3)})`;shadowRef.current.style.opacity=(Math.max(1-progress*1.1,0)*shadowOpacity).toFixed(3);}}else{const ty=progress*-110;innerRef.current.style.transform=`translateY(${ty.toFixed(1)}px) scaleX(${fx})`;innerRef.current.style.opacity=Math.max(1-progress*1.4,0).toFixed(3);if(shadowRef.current){// Object lifts away: shadow spreads slightly and fades, it does not travel.\nconst spread=1+progress*.12;shadowRef.current.style.transform=`scaleX(${spread.toFixed(3)})`;shadowRef.current.style.opacity=(Math.max(1-progress*1.4,0)*shadowOpacity).toFixed(3);}}};const onScroll=()=>{if(!raf)raf=window.requestAnimationFrame(apply);};window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll,{passive:true});apply();return()=>{window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);if(raf)window.cancelAnimationFrame(raf);};},[isStatic,motion,scrollDistance,fx,shadowOpacity]);return /*#__PURE__*/_jsx(\"div\",{ref:wrapRef,style:{width:\"100%\",display:\"flex\",justifyContent:\"center\",padding:`8px 0 ${reservedBelow}px`,opacity:revealed?1:0,transition:`opacity 820ms ${ease}`},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",maxWidth:maxWidth},children:[shadow&&hasImg&&/*#__PURE__*/_jsx(\"div\",{ref:shadowRef,style:{// FULL WIDTH box so translate% matches the image's translate%.\nposition:\"absolute\",left:0,right:0,bottom:-shadowDrop,height:shadowHeight,transformOrigin:\"center center\",willChange:\"transform, opacity\",opacity:shadowOpacity,zIndex:0,pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:inset,right:inset,top:0,bottom:0,borderRadius:\"50%\",background:groundShadowBg,filter:`blur(${shadowBlur}px)`}})}),/*#__PURE__*/_jsx(\"div\",{ref:innerRef,style:{position:\"relative\",zIndex:1,width:\"100%\",transform:`scaleX(${fx})`,transformOrigin:\"center bottom\",willChange:\"transform, opacity\"},children:hasImg?/*#__PURE__*/_jsx(\"img\",{src:src,alt:imageAlt,draggable:false,style:{width:\"100%\",height:\"auto\",display:\"block\",pointerEvents:\"none\",userSelect:\"none\"}}):isCanvas?/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",aspectRatio:\"3 / 2\",borderRadius:14,border:\"1.5px dashed #96c0a5\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",fontFamily:\"Urbanist, sans-serif\",fontSize:12,fontWeight:600,letterSpacing:\"0.18em\",textTransform:\"uppercase\",color:\"#96c0a5\"},children:\"Hero image\"}):null})]})});}addPropertyControls(ScrollLaptop,{imageUrl:{type:ControlType.Image,title:\"Hero Image\"},imageSrc:{type:ControlType.String,title:\"Hero Image URL (preview)\",defaultValue:\"\"},imageAlt:{type:ControlType.String,title:\"Alt\",defaultValue:\"A live virtual cooking event on a laptop\"},flipX:{type:ControlType.Boolean,title:\"Flip Horizontally\",defaultValue:false},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:560,min:240,max:1e3,step:10},motion:{type:ControlType.Enum,title:\"Motion\",options:[\"stationary\",\"roll\",\"slidefade\"],optionTitles:[\"Stationary\",\"Roll Out\",\"Slide & Fade\"],defaultValue:\"stationary\"},scrollDistance:{type:ControlType.Number,title:\"Scroll Distance (px)\",defaultValue:700,min:200,max:2e3,step:20},shadow:{type:ControlType.Boolean,title:\"Ground Shadow\",defaultValue:true},shadowGap:{type:ControlType.Number,title:\"Shadow Gap (px)\",defaultValue:6,min:-40,max:120,step:2,hidden:props=>!props.shadow},shadowWidth:{type:ControlType.Number,title:\"Shadow Width (%)\",defaultValue:76,min:20,max:100,step:2,hidden:props=>!props.shadow},shadowHeight:{type:ControlType.Number,title:\"Shadow Height (px)\",defaultValue:30,min:8,max:90,step:2,hidden:props=>!props.shadow},shadowBlur:{type:ControlType.Number,title:\"Shadow Blur (px)\",defaultValue:15,min:0,max:60,step:1,hidden:props=>!props.shadow},shadowOpacity:{type:ControlType.Number,title:\"Shadow Opacity\",defaultValue:1,min:0,max:1,step:.05,hidden:props=>!props.shadow},forceTheme:{type:ControlType.Enum,title:\"Force Theme\",options:[\"auto\",\"light\",\"dark\"],defaultValue:\"auto\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollLaptop\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"380\",\"framerIntrinsicWidth\":\"560\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollLaptop.map","/*\n * ScrollLaptop\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/YPNqqkji50JkT5twIbDZ/fZmRUyysLo7wle2Vi7sY/ScrollLaptop.js\"\nexport { default } from \"https://framerusercontent.com/modules/YPNqqkji50JkT5twIbDZ/fZmRUyysLo7wle2Vi7sY/ScrollLaptop.js\"\n","// SMCo InteriorHero — page-level hero for interior content pages.\n// Headline lockup: line 1 (Urbanist) over line 2; when line 2 is script AND line 3 exists,\n// they render on ONE ROW — script DOMINANT (clamp 64-130px), the Urbanist word ~30% smaller\n// than H1, 0.4em horizontal gap, baseline-aligned.\n// HEADLINE SIZE: headlineScale prop (0.5–1.3, default 1) scales the whole headline lockup.\n// SIZE CONTROLS (2026-06-30): eyebrowScale + sublineScale (0.5–1.5, default 1).\n// DATA-POINT SIZE (2026-07-19): dataValueScale + dataLabelScale (0.5–1.5, default 1).\n// TYPE SCALE FLOOR (2026-08-12): small text lifted to the house minimum, matching the same pass\n// already applied to Navigation.tsx and Footer.tsx — nothing below 13px, captions/meta to 14px,\n// 14-15px secondary body to 16px. Only the BOTTOM of the scale moves: the headline clamps, the\n// 20px subline and the 36px stat value are untouched, so hierarchy is preserved everywhere.\n// Uppercase tracked labels that grew also had their letter-spacing eased (0.22em→0.18em,\n// 0.18em→0.16em) so the wider glyphs do not push a label onto an extra line at 390px.\n// HERO ROLL IMAGE: optional transparent-cutout food image on the RIGHT that rolls out on scroll.\n// SPLIT HERO IMAGE: split variant exposes a Hero Image + motion selector.\n// SPLIT COLUMN BALANCE (2026-07-19): splitTextRatio (0.5–1.5, default 0.82).\n// HERO BACKGROUND: opt-in full-bleed background layer (bgWash + bgImage) + theme-aware scrim.\n// SCRIM MODEL (2026-07-27, Adobe-style): the background scrim is a LEFT-heavy horizontal\n// gradient controlled by three independent knobs —\n//   • bgScrim      = Scrim AMOUNT   (0–100) — peak opacity of the heavy (left) side.\n//   • scrimPosition= Scrim POSITION (0–100) — where the transition sits, % from the left.\n//   • scrimFalloff = Scrim FALLOFF  (0–100) — feather width of the transition band; lower =\n//                    sharp/dramatic edge, higher = soft/gradual.\n// scrimDarkness (0–100, default 0) adds a black wash on the heavy side (same shape) for extra\n// drama — best with light text / forced-dark hero.\n// TEXT PLACEMENT (2026-07-27): heroTextAlign (\"default\" | \"left-column\") + textColumnWidth pin the\n// non-split hero text to a left column (split-style) while a background image fills the right.\n// DATA-POINT COUNT-UP: numeric runs count up from 0 — see the ⚠ COUNT-UP note above CountUpValue.\n// CTAs use the shared GlassCta atom.\n// EDITORIAL CHROME (2026-07-19): corner labels gated behind showChrome, DEFAULT OFF.\n// NOTE: Framer coerces empty Color controls to black — black is treated as \"auto\" (theme text color).\n// NOTE: Image controls can't be set via MCP/XML — heroImageSrc / laptopImageSrc / bgImageSrc (string URLs) are the fallback.\n// HEADLINE SEMANTICS (2026-08-11): the whole lockup renders as ONE <h1> (headlineIsH1, default ON) —\n// never one h1 per line. The h1 is a SEMANTIC-ONLY wrapper nested inside the reveal div; it carries\n// no visual style of its own. Switch it off for pages that already carry an h1 elsewhere.\n// RESPONSIVE IMAGES (2026-08-11): the roll cutout + the background image are served through the shared\n// smcoImage() srcSet synthesiser. The split variant's image is painted by ScrollLaptop, which takes no\n// srcSet/sizes props — it still ships its full-size original and needs a fix in ScrollLaptop.tsx.\n// MOBILE COLUMN COLLAPSE (2026-08-11): ≤768px the hero grid, the split visual and the data-point row\n// are collapsed in the existing @media block via data-* hooks (data-smco-ih-grid / -split / -data).\n// `display: none` on a grid CHILD does not remove its COLUMN TRACK — the tracks have to be collapsed\n// too, or the text column stays ~169px (default) / ~121px (split) and clips against overflow: hidden.\n// MOBILE/TABLET (2026-08-12) — three changes, all inside the <style> block, all width-gated:\n//   • The collapse breakpoint moved 768px → 880px so iPad portrait (810px) gets the tablet/mobile\n//     layout instead of a desktop grid squeezed into a 349px text column. No intermediate design\n//     existed between 641-767px, so nothing else keys off the old value.\n//   • data-smco-ih-script / -scriptrow zero the headline's negative top margin BELOW 768px only.\n//     That pull is absorbed by the script's leading at desktop sizes and is not at the clamp floor,\n//     which is what put the script glyphs on top of the Urbanist line above on five live pages.\n//   • The data-point band stays a SINGLE ROW on mobile (house standard for stat bands): three\n//     minmax(0, 1fr) tracks with the value/label type capped, instead of stacking to one column.\n// Desktop (>880px) renders byte-identically; no clamp, colour, copy string or control was changed.\n//\n// ⚠ REVEAL — FAIL OPEN (2026-08-11 hotfix). READ BEFORE EDITING revealStyle.\n// The staggered entrance is a PURE CSS keyframe (smcoIHReveal). It is NOT React state.\n// Every reveal element's own inline style is the VISIBLE END STATE (opacity 1 / transform none);\n// the keyframe merely borrows the element for 880ms via animation-fill-mode: both.\n// Consequence: if the stylesheet is missing, the keyframe name fails to resolve, JS never loads,\n// hydration dies, or an effect throws — the element still resolves to VISIBLE.\n// This replaced a `revealed` useState(false) + IntersectionObserver gate. That gate rendered the\n// ENTIRE hero at opacity 0 by default and only flipped it to visible from a mount effect, so on the\n// published site (where that effect was not running) the hero stayed permanently blank — headline,\n// subline, CTAs and data points all at opacity 0. Two successive structural revisions showed the\n// identical stuck values on whichever node happened to carry revealStyle, which is the signature of\n// the state never flipping rather than of any one element.\n// RULE: never make hero copy's DEFAULT rendered state invisible. If you reintroduce a JS-driven\n// reveal, the un-revealed state must not be what renders when the effect does not run.\n// 2026-08-12: the CSS keyframe above is NOT fail-open on its own. `both` fill-mode means the\n// element takes the FROM keyframe (opacity 0) until the animation advances, and that beats the\n// inline opacity 1 — so a document with no rendering lifecycle pins the hero invisible. See the\n// ⚠ RENDERING-LIFECYCLE GUARD effect in the component body, which is what actually enforces the\n// RULE above. Do not remove it while revealStyle still uses `both`.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef,useState}from\"react\";// @ts-ignore — Framer cross-file module import; resolves at bundle time (typecheck flake is advisory)\nimport{GlassCta}from\"https://framer.com/m/GlassCta-gNbKgs.js\";// @ts-ignore — Framer cross-file module import\nimport ScrollLaptop from\"https://framer.com/m/ScrollLaptop-YpCv7F.js\";// ── SMCo RESPONSIVE IMAGE (added 2026-08-10) ──────────────────────────────\n// Framer only emits a srcSet for ControlType.ResponsiveImage. Anything bound\n// through ControlType.Image or a plain String URL ships the full-size original.\n// framerusercontent.com accepts ?scale-down-to=<w> and never upscales past the\n// original, so we synthesise a srcSet from the URL. Handles BOTH shapes — a\n// ResponsiveImage object and a legacy plain string — so nothing has to be\n// unbound and rebound in the editor.\nconst SMCO_IMAGE_WIDTHS=[128,256,384,512,768,1024,1536,2048];function smcoImage(input,displayWidth){if(!input)return null;const raw=typeof input===\"string\"?input:input?.src;if(!raw||typeof raw!==\"string\")return null;const src=raw.trim();if(!src)return null;const alt=typeof input===\"string\"?undefined:input?.alt;let srcSet=typeof input===\"string\"?undefined:input?.srcSet;if(!srcSet&&src.includes(\"framerusercontent.com\")&&!src.includes(\"scale-down-to\")){// Cover up to 3x DPR. The browser downloads only the single candidate\n// it needs, so an oversized entry costs nothing — whereas a ladder that\n// stops short forces a permanently soft render.\nconst need=displayWidth?Math.ceil(displayWidth*3):2048;const widths=[];for(const w of SMCO_IMAGE_WIDTHS){widths.push(w);if(w>=need)break;}const join=src.includes(\"?\")?\"&\":\"?\";srcSet=widths.map(w=>`${src}${join}scale-down-to=${w} ${w}w`).join(\", \");}return{src,srcSet,alt};}// Full-bleed hero background is an object-fit:cover box spanning the viewport\n// width, so its LONGEST EDGE is the width. scale-down-to caps the longest edge,\n// which is what the candidate ladder has to clear.\nconst BG_DISPLAY_WIDTH=1920;function useDarkMode(forceTheme){const[isDark,setIsDark]=useState(false);useEffect(()=>{if(forceTheme===\"dark\"){setIsDark(true);return;}if(forceTheme===\"light\"){setIsDark(false);return;}if(typeof document===\"undefined\")return;const check=()=>setIsDark(document.documentElement.classList.contains(\"dark\"));check();const onChange=()=>check();document.addEventListener(\"smco-theme-change\",onChange);const observer=new MutationObserver(check);observer.observe(document.documentElement,{attributes:true,attributeFilter:[\"class\"]});return()=>{document.removeEventListener(\"smco-theme-change\",onChange);observer.disconnect();};},[forceTheme]);return isDark;}// 2026-08-11: leads with the real, case-sensitive family name. The bare 'Janelotus'\n// entry was a name-guess that never resolved and only added a failed lookup, so it\n// is gone; every SMCo script accent now shares this exact chain.\nconst JANELOTUS_CHAIN=\"'janelotus Regular', 'Allura', cursive\";function isAutoColor(c){const s=c.trim().toLowerCase().replace(/\\s/g,\"\");return s===\"\"||s===\"rgb(0,0,0)\"||s===\"rgba(0,0,0,1)\"||s===\"#000\"||s===\"#000000\"||s===\"black\";}const MOTION_MAP={\"Roll Out\":\"roll\",\"Stationary\":\"stationary\",\"Slide & Fade\":\"slidefade\"};const COUNT_UP_DURATION=1400;const COUNT_UP_TOKEN=/(\\d[\\d,]*(?:\\.\\d+)?)/g;const COUNT_UP_HAS_LETTERS=/[A-Za-z]/;const easeOutCubic=p=>1-Math.pow(1-p,3);function formatCountToken(current,token){const decimals=token.includes(\".\")?(token.split(\".\")[1]||\"\").length:0;const fixed=(decimals>0?current:Math.round(current)).toFixed(decimals);if(!token.includes(\",\"))return fixed;const[int,frac]=fixed.split(\".\");const grouped=int.replace(/\\B(?=(\\d{3})+(?!\\d))/g,\",\");return frac?`${grouped}.${frac}`:grouped;}// ⚠ COUNT-UP — FAIL OPEN (2026-08-11 hotfix). READ BEFORE EDITING CountUpValue.\n// `phase === null` means \"render every segment verbatim\", i.e. the exact authored string. It is\n// BOTH the initial state AND the terminal state; the ramp is a transient detour between two\n// renders of the truth. Consequence: no JS, hydration never happening, a dead effect, a starved /\n// throttled / cancelled rAF, an unmount, reduced motion, the Framer canvas, or a value with\n// nothing countable in it all leave the TRUE value on screen.\n// This replaced an IntersectionObserver-gated `started` flag driving a rAF loop whose displayed\n// text was `target * progress`. Once `started` flipped, the number became a pure function of\n// animation state with no floor and no ceiling other than the final frame landing — so ANY frame\n// the loop failed to deliver froze a WRONG number permanently. Measured live on\n// /why-smco/event-guarantee/: the row rendered 1 / 11 / 0, then 4 / 37 / 0, then stayed at\n// 4 / 37 / 0 for the rest of the session. It started, animated a few frames, and died.\n// RULES:\n//   1. The settled render must go down the SAME verbatim path as the no-JS render. Never settle\n//      by setting phase to 1 — settle by setting it back to null.\n//   2. The `guard` timeout is NOT optional. It is the thing that converts a stalled rAF from a\n//      permanently wrong number into a merely missing animation.\n//   3. Do not reintroduce an IntersectionObserver (or any other gate) in front of the value.\n//      Motion may be gated; truth may not.\nfunction CountUpValue({value}){const segments=value.split(COUNT_UP_TOKEN);// Only clean numeric values ramp. Anything with letters in it — \"$5K–$15K\", \"10 wks\" — is\n// never parsed to a number at all; it renders exactly as authored, at every moment.\nconst animatable=!COUNT_UP_HAS_LETTERS.test(value)&&segments.some(s=>/^\\d/.test(s));const[phase,setPhase]=useState(null);useEffect(()=>{setPhase(null)// every re-run restarts from the truth, including the bail-outs below\n;if(!animatable||typeof window===\"undefined\"||!window.requestAnimationFrame)return;if(RenderTarget.current()===RenderTarget.canvas)return;if(window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;let raf=0;let settled=false;const settle=()=>{if(settled)return;settled=true;setPhase(null);};const guard=window.setTimeout(settle,COUNT_UP_DURATION+400);const startedAt=performance.now();const tick=now=>{if(settled)return;const p=(now-startedAt)/COUNT_UP_DURATION;if(p>=1){settle();return;}setPhase(p<=0?0:easeOutCubic(p));raf=window.requestAnimationFrame(tick);};setPhase(0);raf=window.requestAnimationFrame(tick);return()=>{settled=true;window.clearTimeout(guard);if(raf)window.cancelAnimationFrame(raf);};},[animatable,value]);return /*#__PURE__*/_jsx(\"span\",{style:{fontVariantNumeric:\"tabular-nums\"},children:segments.map((seg,i)=>{if(phase===null||!/^\\d/.test(seg))return /*#__PURE__*/_jsx(\"span\",{children:seg},i);const target=parseFloat(seg.replace(/,/g,\"\"));return /*#__PURE__*/_jsx(\"span\",{children:formatCountToken(target*phase,seg)},i);})});}// ── TEMPORARY MIGRATION SHIM (2026-08-17) ────────────────────────\n// CATEGORY HERO PRICE. Same shape, and the same reasoning, as the copyright shim in\n// Footer.tsx (jbrFv3v, 2026-08-16) and the catalog shim in CategoryGridSection.tsx\n// (nYOAKmO, 2026-08-17).\n//\n// THE DEFECT. Seven of the eight /experiences/<category>/ heroes carried a flat\n// dataPoint1Value of \"$150\" under the label \"Per Kit, All Inclusive\", and on five of them\n// that number is ABOVE the top-priced class on the page's own menu grid. Charcuterie quoted\n// \"$160\" in its hero while /experiences/ quoted \"$150\" for the same category. A prospect read\n// the hero, clicked, and saw a different number. Owner ruling (2026-08-17): each hero shows\n// its OWN real floor, as \"From $X per kit, all-inclusive\".\n//\n// WHY A RENDER-TIME SHIM. dataPoint1Value is a per-INSTANCE ControlType.String set on the\n// canvas of eight separate pages, and updateXmlForNode only writes the page currently open in\n// the editor — so eight pages cannot be corrected from one tool session. An instance prop also\n// always beats a code defaultValue, so editing addPropertyControls alone would never have\n// reached production. The correction is therefore applied on the way out, here.\n//\n// WHY A TABLE AND NOT A CMS READ. Deriving each floor from the Experiences collection\n// (ELEZNJ4hz) at render time would be strictly better — Office-Ready would self-heal and no\n// future price change would need a code edit — but Framer code components have no runtime\n// collection API. CMS data reaches a component only through a canvas Collection List binding,\n// which is how each category page's own menu grid below this hero is fed; the hero sits\n// outside any such list. A client-side fetch was rejected outright: it would leave the price\n// missing from the server-rendered HTML that GPTBot / ClaudeBot / Google actually read, and it\n// is precisely the \"initialise falsy, correct in an effect\" pattern this file already bans.\n//\n// THE FLOORS are the LOWEST published class in each category, read from ELEZNJ4hz on\n// 2026-08-17 (59 published classes, none draft) and identical to the table in\n// CategoryGridSection.tsx: charcuterie $160 (n=10) · global-flavors $118 (n=21) ·\n// lunch-and-learn $145 (n=1) · small-plates-and-starters $125 (n=7) · sweet-celebrations $118\n// (n=15) · fresh-and-light $125 (n=6) · holidays-and-celebrations $118 (n=10).\n//\n// OFFICE-READY IS DELIBERATELY ABSENT FROM THE TABLE. Zero of the 59 published classes\n// reference it, so it has no floor and nothing on the page would back a number. Its price\n// stat is DROPPED rather than printed — see resolveCategoryHeroPrice. This does NOT\n// self-correct when classes land: add \"office-ready\" and its floor to CATEGORY_PRICE_FLOORS.\n//\n// SIDE EFFECT, INTENDED. \"From $160\" contains letters, so CountUpValue stops treating it as\n// countable and renders it verbatim at every moment (see the ⚠ COUNT-UP note above). The stat\n// no longer ramps; it is simply true from first paint, which is the safer of the two.\n//\n// DELETE THIS SHIM once all eight dataPoint1Value props have been corrected by hand on the\n// canvas, or once Framer gives code components a runtime collection read.\nconst CATEGORY_HERO_PRICE_LABEL=\"Per Kit, All Inclusive\";// Only these exact authored strings are rewritten. A blank, or any value an editor has since\n// typed by hand, is left verbatim — so a canvas edit always wins and the shim goes inert the\n// moment the props are corrected.\nconst LEGACY_CATEGORY_HERO_PRICES=[\"$150\",\"$160\"];const CATEGORY_PRICE_FLOORS={\"charcuterie\":\"From $160\",\"fresh-and-light\":\"From $125\",\"global-flavors\":\"From $118\",\"holidays-and-celebrations\":\"From $118\",\"lunch-and-learn\":\"From $145\",\"small-plates-and-starters\":\"From $125\",\"sweet-celebrations\":\"From $118\"};// Allow-listed, so a NEW category page carrying the legacy \"$150\" cannot be silently stripped\n// of its price by falling through the table. Verified against the project's pages 2026-08-17.\nconst KNOWN_CATEGORY_PAGE_SLUGS=[\"charcuterie\",\"fresh-and-light\",\"global-flavors\",\"holidays-and-celebrations\",\"lunch-and-learn\",\"office-ready\",\"small-plates-and-starters\",\"sweet-celebrations\"];// Every category page sets eyebrow=\"Experiences / <Category Title>\" — read off all eight\n// instances on 2026-08-17 (Charcuterie, Global Flavors, Office-Ready, Holidays & Celebrations,\n// Lunch & Learn, Small Plates & Starters, Sweet Celebrations, Fresh & Light). Slugified with\n// the same rules as CategoryGridSection.categorySlug, so \"Holidays & Celebrations\" and\n// \"Office-Ready\" land on their real page slugs. Any eyebrow not of that shape yields \"\", which\n// makes the shim a no-op — which is what every other InteriorHero in the project needs\n// (/pricing/, /sales-teams/, /why-smco/*, /people-and-culture/*, …).\nfunction categoryHeroSlug(eyebrow){if(typeof eyebrow!==\"string\")return\"\";const parts=eyebrow.split(\"/\");if(parts.length!==2)return\"\";if(parts[0].trim().toLowerCase()!==\"experiences\")return\"\";return parts[1].trim().toLowerCase().replace(/&/g,\" and \").replace(/[^a-z0-9]+/g,\"-\").replace(/^-+/,\"\").replace(/-+$/,\"\");}// Returns the value to print and whether the stat should be dropped outright. `drop` is true\n// ONLY for a recognised category page whose category has no published class to quote — today\n// Office-Ready alone. Every other caller in the project takes one of the early returns and\n// gets back its own dataPoint1Value untouched, i.e. today's exact output.\nfunction resolveCategoryHeroPrice(eyebrow,label,value){const raw=typeof value===\"string\"?value:\"\";if(typeof label!==\"string\"||label.trim()!==CATEGORY_HERO_PRICE_LABEL)return{value:raw,drop:false};if(LEGACY_CATEGORY_HERO_PRICES.indexOf(raw.trim())<0)return{value:raw,drop:false};const slug=categoryHeroSlug(eyebrow);if(slug.length===0)return{value:raw,drop:false};const floor=CATEGORY_PRICE_FLOORS[slug];if(typeof floor===\"string\"&&floor.length>0)return{value:floor,drop:false};if(KNOWN_CATEGORY_PAGE_SLUGS.indexOf(slug)<0)return{value:raw,drop:false};return{value:raw,drop:true};}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicHeight 720\n */export default function InteriorHero(props){const{variant=\"default\",eyebrow=\"\",headlineLine1=\"\",headlineLine2=\"\",headlineLine2Style=\"match\",headlineLine3=\"\",headlineIsH1=true,headlineScale=1,eyebrowScale=1,sublineScale=1,scriptColor=\"\",subline=\"\",primaryCtaLabel=\"\",primaryCtaHref=\"\",secondaryCtaLabel=\"\",secondaryCtaHref=\"\",scrollCueLabel=\"\",bgImage=\"\",bgImageSrc=\"\",bgWash=false,bgScrim=82,scrimPosition=50,scrimFalloff=55,scrimDarkness=0,heroImageUrl=\"\",heroImageSrc=\"\",heroImageAlt=\"\",heroImagePlaceholder=\"\",heroImageSize=440,rollSpeed=1,groundShadow=true,dataPoint1Label=\"\",dataPoint1Value=\"\",dataPoint2Label=\"\",dataPoint2Value=\"\",dataPoint3Label=\"\",dataPoint3Value=\"\",dataValueScale=1,dataLabelScale=1,dataNoWrap=false,splitImageUrl=\"\",splitImageAlt=\"\",splitUseLaptop=false,laptopImage=\"\",laptopImageSrc=\"\",laptopFlipX=false,laptopMaxWidth=800,splitTextRatio=.82,heroTextAlign=\"default\",textColumnWidth=620,heroImageMotion=\"Stationary\",splitGroundShadow=true,showChrome=false,sectionLabel=\"\",sectionNumber=\"\",typeTag=\"\",forceTheme=\"auto\",paddingTop=140,paddingBottom=120,surfaceColor=\"#f8f5f0\",surfaceDarkColor=\"#1a1612\",accentColor=\"#96c0a5\",textColor=\"#0e0e0e\",textDarkColor=\"#f4f4f4\",subtleTextColor=\"rgba(14, 14, 14, 0.62)\",subtleTextDarkColor=\"rgba(244, 244, 244, 0.7)\",hairlineColor=\"rgba(14, 14, 14, 0.1)\",actionColor=\"#ff7f50\"}=props;const isDark=useDarkMode(forceTheme);const containerRef=useRef(null);const rollRef=useRef(null);const shadowRef=useRef(null);const[cueHovered,setCueHovered]=useState(false);const effSurface=isDark?surfaceDarkColor:surfaceColor;const effText=isDark?textDarkColor:textColor;const effSubtle=isDark?subtleTextDarkColor:subtleTextColor;const effHairline=isDark?\"rgba(244, 244, 244, 0.14)\":hairlineColor;const effScript=isAutoColor(scriptColor)?effText:scriptColor;const hs=typeof headlineScale===\"number\"&&headlineScale>0?headlineScale:1;const eS=typeof eyebrowScale===\"number\"&&eyebrowScale>0?eyebrowScale:1;const sS=typeof sublineScale===\"number\"&&sublineScale>0?sublineScale:1;const dvS=typeof dataValueScale===\"number\"&&dataValueScale>0?dataValueScale:1;const dlS=typeof dataLabelScale===\"number\"&&dataLabelScale>0?dataLabelScale:1;const textFr=Math.min(Math.max(typeof splitTextRatio===\"number\"&&splitTextRatio>0?splitTextRatio:.82,.4),1.6);const imageFr=Math.max(2-textFr,.4);const bgUrl=typeof bgImage===\"string\"&&bgImage.trim().length>0?bgImage:bgImageSrc.trim().length>0?bgImageSrc:\"\";const hasBgImage=bgUrl.length>0;const showBgLayer=hasBgImage||bgWash;const bgImg=smcoImage(bgUrl,BG_DISPLAY_WIDTH);const surfRgb=isDark?\"26, 22, 18\":\"248, 245, 240\";// Adobe-style scrim: AMOUNT (peak opacity, left/heavy side) · POSITION (where the transition\n// sits, % from left) · FALLOFF (feather width of the transition band; lower = sharp/dramatic,\n// higher = soft/gradual). Heavy side is the LEFT (where the hero text sits).\nconst scrimAmount=Math.max(0,Math.min(100,bgScrim))/100;const scrimPos=Math.max(0,Math.min(100,typeof scrimPosition===\"number\"?scrimPosition:50))/100;const scrimFeather=Math.max(0,Math.min(100,typeof scrimFalloff===\"number\"?scrimFalloff:55))/100;const featherHalf=scrimFeather/2;const heavyEnd=Math.max(0,Math.min(1,scrimPos-featherHalf));const clearStart=Math.max(heavyEnd+.002,Math.min(1,scrimPos+featherHalf));const pct=v=>(v*100).toFixed(2);const scrimDark=Math.max(0,Math.min(100,typeof scrimDarkness===\"number\"?scrimDarkness:0))/100;const scrimGradient=`linear-gradient(90deg, rgba(${surfRgb}, ${scrimAmount.toFixed(3)}) 0%, rgba(${surfRgb}, ${scrimAmount.toFixed(3)}) ${pct(heavyEnd)}%, rgba(${surfRgb}, 0) ${pct(clearStart)}%, rgba(${surfRgb}, 0) 100%)`;const scrimDarkGradient=scrimDark>0?`linear-gradient(90deg, rgba(0, 0, 0, ${scrimDark.toFixed(3)}) 0%, rgba(0, 0, 0, ${scrimDark.toFixed(3)}) ${pct(heavyEnd)}%, rgba(0, 0, 0, 0) ${pct(clearStart)}%, rgba(0, 0, 0, 0) 100%)`:\"\";const bottomVignette=`linear-gradient(180deg, rgba(${surfRgb}, 0) 60%, rgba(${surfRgb}, 1) 100%)`;const baseWash=isDark?\"radial-gradient(130% 120% at 85% 12%, rgba(150, 192, 165, 0.16) 0%, rgba(150, 192, 165, 0) 55%), linear-gradient(180deg, #1a1612 0%, #141009 100%)\":\"radial-gradient(130% 120% at 85% 12%, rgba(150, 192, 165, 0.24) 0%, rgba(150, 192, 165, 0) 55%), linear-gradient(180deg, #f8f5f0 0%, #f0ede4 100%)\";const effHeroImage=heroImageUrl.trim().length>0?heroImageUrl:heroImageSrc;const hasHeroImage=effHeroImage.trim().length>0;// EDITOR PLACEHOLDER GATE (2026-08-17) — the same treatment ImmersiveBand.tsx got on\n// 2026-08-12 for its \"Drop band photo here\" hint. Editor-only affordances key off\n// RenderTarget.canvas, NOT an isStatic that also matches RenderTarget.export — an export\n// render is an artefact a visitor can end up looking at.\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;// Mirrors ScrollLaptop's own hasImg (imgUrl(imageUrl) || imageSrc.trim()) exactly, so this\n// gate can never disagree with what ScrollLaptop would have painted. smcoImage() already\n// accepts BOTH shapes a Framer Image control hands over — a ResponsiveImage object and a\n// legacy plain string — so nothing has to be unbound and rebound in the editor.\nconst splitImg=smcoImage(laptopImage);const hasSplitImage=splitImg!==null&&splitImg.src.length>0||typeof laptopImageSrc===\"string\"&&laptopImageSrc.trim().length>0;// PLACEHOLDER SHIPPED TO PRODUCTION (2026-08-17): the roll slot's empty state is a dashed\n// circle carrying the \"Image\" mini-label and the heroImagePlaceholder name text. Both were\n// reachable on a published page whenever that label was set and no cutout was bound. The\n// gate is on the SLOT, not on the two strings inside it: killing only the strings would\n// leave the \"1.15fr 0.85fr\" grid standing with an empty 0.85fr track — the same dead-column\n// failure the split half of this fix exists to avoid. Pages WITH a cutout bound are\n// untouched, because hasHeroImage alone still opens the slot on every render target.\nconst showRollSlot=(hasHeroImage||isCanvas&&heroImagePlaceholder.trim().length>0)&&variant!==\"split\"&&variant!==\"centered\";// Free-standing transparent cutout: no object-fit, natural aspect, painted at\n// `width: heroImageSize` (capped by 38vw). Width-driven, so heroImageSize IS\n// the display width and the longest-edge caveat for cover boxes doesn't apply.\nconst rollImg=smcoImage(effHeroImage,heroImageSize);useEffect(()=>{if(!showRollSlot||typeof window===\"undefined\")return;if(window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;let raf=0;const onScroll=()=>{if(raf)return;raf=window.requestAnimationFrame(()=>{raf=0;if(!containerRef.current||!rollRef.current)return;const h=containerRef.current.offsetHeight||1;const speed=Math.max(rollSpeed,.2);const progress=Math.min(Math.max(window.scrollY*speed/(h*.8),0),1);rollRef.current.style.transform=`translate(${(progress*58).toFixed(2)}vw, ${(progress*10).toFixed(2)}vh) rotate(${(progress*170).toFixed(1)}deg)`;rollRef.current.style.opacity=(1-progress*.7).toFixed(3);if(shadowRef.current){shadowRef.current.style.transform=`translate(${(progress*58).toFixed(2)}vw, ${(progress*10).toFixed(2)}vh) scaleX(${(1-progress*.45).toFixed(3)})`;shadowRef.current.style.opacity=(1-progress*.9).toFixed(3);}});};window.addEventListener(\"scroll\",onScroll,{passive:true});onScroll();return()=>{window.removeEventListener(\"scroll\",onScroll);if(raf)window.cancelAnimationFrame(raf);};},[showRollSlot,rollSpeed]);// ⚠ RENDERING-LIFECYCLE GUARD (2026-08-12). READ WITH THE ⚠ REVEAL NOTE AT THE TOP.\n// The 2026-08-11 hotfix closed ONE failure mode — if the @keyframes rule is missing the\n// `animation` declaration is dropped and the element renders at its inline opacity 1 — but\n// not the other. `animation-fill-mode: both` includes BACKWARDS fill, so while the animation\n// sits at 0% the element takes the FROM keyframe (opacity 0, translateY(16px)), and a\n// declaration from the animation origin OUTRANKS the inline style. So whenever the document\n// has no rendering lifecycle the timeline never advances past 0% and the entire hero is\n// pinned invisible while playState still reports \"running\".\n// Measured on the published /pricing/ hero: document.timeline.currentTime stuck at 0,\n// requestAnimationFrame never firing, and all five reveal nodes carrying inline\n// `opacity: 1` yet computing to opacity 0 — headline, eyebrow, subline, CTA and scroll cue.\n// That state is reachable in a backgrounded/occluded tab, a prerendered document, and\n// headless renderers that run script without a compositor (the AEO/LLM crawlers this project\n// targets), so the copy must not depend on the timeline to become visible.\n// The guard is deliberately WALL-CLOCK (setInterval/Date.now), never rAF or the animation\n// timeline: wall-clock timers still fire when the rendering lifecycle is suspended, which is\n// precisely when rAF and the keyframe clock do not. It restores EVERY property the keyframe\n// touches — opacity AND transform — and only touches nodes still measuring opacity 0 after\n// the animation has had well past its longest run (400ms delay + 880ms duration) to finish,\n// so a healthy browser never has its entrance animation cut short.\nuseEffect(()=>{if(typeof window===\"undefined\")return;if(RenderTarget.current()===RenderTarget.canvas)return;const root=containerRef.current;// Fail open: nothing to scope to → nothing this guard can safely repair.\nif(!root)return;const SELECTOR='[style*=\"smcoIHReveal\"]';const reveal=el=>{el.style.animation=\"none\";el.style.opacity=\"1\";el.style.transform=\"none\";};const start=Date.now();const settleAfter=2e3;const deadline=start+2e4;let guard=0;const sweep=()=>{const now=Date.now();if(now-start<settleAfter)return;const past=now>=deadline;try{root.querySelectorAll(SELECTOR).forEach(el=>{if(past||window.getComputedStyle(el).opacity===\"0\"){reveal(el);}});}catch{// Anything unmeasurable reveals rather than staying hidden.\ntry{root.querySelectorAll(SELECTOR).forEach(reveal);}catch{// Nothing further is safe to touch; the sweep simply stops.\n}}if(past&&guard){window.clearInterval(guard);guard=0;}};guard=window.setInterval(sweep,400);return()=>{if(guard)window.clearInterval(guard);};},[]);const scrollToNextSection=()=>{if(typeof window===\"undefined\"||!containerRef.current)return;const wrapper=containerRef.current.parentElement;const next=wrapper?.nextElementSibling;if(next&&typeof next.scrollIntoView===\"function\"){next.scrollIntoView({behavior:\"smooth\",block:\"start\"});}else{window.scrollBy({top:Math.round(window.innerHeight*.85),behavior:\"smooth\"});}};const ease=\"cubic-bezier(0.16, 1, 0.3, 1)\";const isCentered=variant===\"centered\";const isSplit=variant===\"split\";const showDataPoints=variant===\"data-points\";// 2026-08-17: see the TEMPORARY MIGRATION SHIM note above the component. On the eight\n// /experiences/<category>/ heroes this swaps the contradicted flat price for that\n// category's real CMS floor; everywhere else heroPrice.value IS dataPoint1Value and\n// heroPrice.drop is false, so allDataPoints is the same three-item array as before.\nconst heroPrice=resolveCategoryHeroPrice(eyebrow,dataPoint1Label,dataPoint1Value);const allDataPoints=[{label:dataPoint1Label,value:heroPrice.value},{label:dataPoint2Label,value:dataPoint2Value},{label:dataPoint3Label,value:dataPoint3Value}];const dataPoints=heroPrice.drop?allDataPoints.slice(1):allDataPoints;const line2IsScript=headlineLine2Style===\"script\";const splitMotion=MOTION_MAP[heroImageMotion]||\"stationary\";// PLACEHOLDER SHIPPED TO PRODUCTION (2026-08-17): the split visual is ScrollLaptop, which\n// paints its own dashed \"Hero image\" box whenever nothing is bound. That box was live copy\n// on EIGHT published pages — /sales-teams/, /why-smco/how-it-works/ and six\n// /experiences/<category>/ heroes — sitting over the hero on real visitor traffic. Gating\n// the WHOLE visual rather than the box inside it is what also lets the grid drop its empty\n// track below. The editor still renders it, so the drop target stays where the owner\n// expects it.\nconst showSplitVisual=isSplit&&(hasSplitImage||isCanvas);// EMPTY COLUMN (2026-08-17). Hiding a grid CHILD never removes its TRACK — the same trap the\n// ≤880px block documents. Two cases, and they want opposite things:\n//   • a background PHOTO is bound: the \"empty\" half IS the photo, and the scrim is\n//     deliberately heavy on the LEFT (0 → scrimPosition) where the hero text sits.\n//     Collapsing to one track would run the headline out past the scrim's clear edge onto\n//     raw photo, so the two tracks are LEFT ALONE and the right one simply shows through.\n//   • no background photo (flat surface, or a bare wash with nothing to reveal): the half\n//     really is dead space, so the grid collapses to a single track and the text takes the\n//     standard 900px hero measure instead of ~41% of the container. display stays \"grid\" on\n//     purpose — the item stays start-aligned at the same x and align-items:center keeps its\n//     BLOCK-axis meaning, whereas a switch to flex would move the copy on BOTH axes at once.\nconst splitCollapse=isSplit&&!showSplitVisual&&!hasBgImage;const leftColumn=heroTextAlign===\"left-column\"&&!isSplit&&!isCentered&&!showRollSlot;const colWidth=typeof textColumnWidth===\"number\"&&textColumnWidth>0?textColumnWidth:620;const outerAlign=leftColumn?\"flex-start\":\"center\";const outerMaxWidth=isSplit?1440:leftColumn?1440:1200;const textBlockMaxWidth=splitCollapse?900:isSplit||showRollSlot?\"100%\":leftColumn?colWidth:900;// FAIL-OPEN REVEAL. The returned style IS the visible end state — opacity 1, no transform.\n// The staggered entrance is layered on top as a CSS keyframe (smcoIHReveal, defined in the\n// <style> block below) using animation-fill-mode: both, so the element is only borrowed for\n// the 880ms the animation actually runs. Nothing here depends on React state, an effect, an\n// IntersectionObserver, hydration, or JS of any kind. If the keyframe never resolves the\n// declaration is simply dropped and the element renders visible. There is deliberately no\n// branch that can return opacity 0 as a resting state — see the ⚠ REVEAL note at the top.\n// 2026-08-12: `both` still pins opacity 0 while the animation sits at 0%, so the\n// ⚠ RENDERING-LIFECYCLE GUARD above is what makes this genuinely fail-open.\nconst revealStyle=delayMs=>({opacity:1,transform:\"none\",animation:`smcoIHReveal 880ms ${ease} ${delayMs}ms both`});const hasPrimaryCta=primaryCtaLabel.trim().length>0;const hasSecondaryCta=secondaryCtaLabel.trim().length>0;const hasScrollCue=scrollCueLabel.trim().length>0;// BLANKABLE LABEL (2026-08-17): same `.trim().length > 0` idiom as the lines\n// and CTAs above. NOTE: this gates the RENDER only. resolveCategoryHeroPrice()\n// still reads the raw `eyebrow` prop for its category slug, so the\n// CATEGORY_PRICE_FLOORS shim is unaffected by hiding the label — but clearing\n// the eyebrow TEXT on a /experiences/<category>/ hero does remove the slug that\n// shim matches on, which is a property of the prop, not of this condition.\nconst hasEyebrow=eyebrow.trim().length>0;const hasLine2=headlineLine2.trim().length>0;const hasLine3=headlineLine3.trim().length>0;// SEO (2026-08-11): the whole headline lockup — all three lines — is ONE <h1>.\n// The h1 is a PURELY SEMANTIC wrapper nested INSIDE the reveal div. It gets no\n// opacity / transform / transition / animation, so it cannot affect rendering.\n// headlineIsH1=false swaps a <div> into the same slot with the same neutral\n// styles, so DOM depth and layout are identical either way. fontSize stays\n// inherited because the script+word flex row sizes its 0.42em columnGap from it.\nconst HeadlineTag=headlineIsH1?\"h1\":\"div\";const headlineSemanticStyle={margin:0,fontSize:\"inherit\",fontWeight:\"inherit\",color:\"inherit\"};const urbanistH1={fontFamily:\"Urbanist, sans-serif\",fontSize:`clamp(${(36*hs).toFixed(1)}px, ${(5.5*hs).toFixed(2)}vw, ${(84*hs).toFixed(1)}px)`,fontWeight:800,lineHeight:1.02,letterSpacing:\"-0.025em\",color:effText};const urbanistRowWord={...urbanistH1,fontSize:`clamp(${(25*hs).toFixed(1)}px, ${(3.85*hs).toFixed(2)}vw, ${(59*hs).toFixed(1)}px)`};// MOBILE CLAMP FLOOR (2026-08-11): the FLOOR was 64px, so a single script word could never\n// shrink below ~64px and blew past the ~342px text column at 390px (clipped by the container's\n// overflow: hidden). Only the floor moves, 64 → 40; the 8.4vw preferred value and the 130px\n// MAX are untouched, so ≥768px is byte-identical in effect (8.4vw ≥ 64.5px there — the floor\n// never binds). Below ~476px the floor now yields ~40px, which fits a ~19-character word.\nconst scriptStyle={fontFamily:JANELOTUS_CHAIN,fontWeight:500,fontSize:`clamp(${(40*hs).toFixed(1)}px, ${(8.4*hs).toFixed(2)}vw, ${(130*hs).toFixed(1)}px)`,lineHeight:1.22,letterSpacing:\"0.02em\",color:effScript};const groundShadowBg=isDark?\"radial-gradient(ellipse at center, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 55%), radial-gradient(ellipse at center, rgba(255, 178, 110, 0.22) 10%, rgba(255, 178, 110, 0) 78%)\":\"radial-gradient(ellipse at center, rgba(14, 14, 14, 0.42) 0%, rgba(14, 14, 14, 0) 72%)\";const rollImage=showRollSlot&&/*#__PURE__*/_jsx(\"div\",{\"data-smco-ih-roll\":\"\",style:{position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",minWidth:0},children:/*#__PURE__*/_jsxs(\"div\",{style:{...revealStyle(220),position:\"relative\"},children:[groundShadow&&/*#__PURE__*/_jsx(\"div\",{ref:shadowRef,style:{position:\"absolute\",left:\"3%\",right:\"3%\",bottom:-32,height:42,borderRadius:\"50%\",background:groundShadowBg,filter:\"blur(11px)\",willChange:\"transform, opacity\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{ref:rollRef,style:{willChange:\"transform, opacity\",position:\"relative\"},children:hasHeroImage?/*#__PURE__*/_jsx(\"img\",{src:rollImg?rollImg.src:effHeroImage,srcSet:rollImg?rollImg.srcSet:undefined,sizes:`${heroImageSize}px`,decoding:\"async\",alt:heroImageAlt,style:{width:heroImageSize,maxWidth:\"38vw\",height:\"auto\",display:\"block\",filter:isDark?\"drop-shadow(0 10px 22px rgba(0, 0, 0, 0.45))\":\"drop-shadow(0 10px 18px rgba(14, 14, 14, 0.14))\",pointerEvents:\"none\",userSelect:\"none\"},draggable:false}):/*#__PURE__*/_jsx(\"div\",{style:{width:heroImageSize*.85,maxWidth:\"32vw\",aspectRatio:\"1 / 1\",borderRadius:\"50%\",border:`1.5px dashed ${accentColor}90`,backgroundColor:`${accentColor}14`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",textAlign:\"center\",padding:24},children:/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"Urbanist, sans-serif\",fontSize:13,fontWeight:700,letterSpacing:\"0.18em\",textTransform:\"uppercase\",color:accentColor,marginBottom:8},children:\"Image\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"Urbanist, sans-serif\",fontSize:14,fontWeight:600,letterSpacing:\"0.12em\",textTransform:\"uppercase\",color:effSubtle,lineHeight:1.6},children:heroImagePlaceholder})]})})})]})});// MOBILE (2026-08-11): data-smco-ih-split is a targeting hook only — it lets the @media block\n// hide the split visual ≤768px exactly the way [data-smco-ih-roll] is hidden, so the split\n// text column gets the full width. Element type and inline styles are unchanged.\nconst splitVisual=showSplitVisual&&/*#__PURE__*/_jsx(\"div\",{\"data-smco-ih-split\":\"\",style:{...revealStyle(160),width:\"100%\",display:\"flex\",justifyContent:\"center\",minWidth:0},children:/*#__PURE__*/_jsx(ScrollLaptop,{imageUrl:laptopImage,imageSrc:laptopImageSrc,imageAlt:splitImageAlt,flipX:laptopFlipX,maxWidth:laptopMaxWidth,motion:splitMotion,shadow:splitGroundShadow,forceTheme:forceTheme,scrollDistance:760})});return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,\"data-smco-ih\":\"\",style:{position:\"relative\",width:\"100%\",backgroundColor:effSurface,paddingTop:paddingTop,paddingBottom:paddingBottom,paddingLeft:64,paddingRight:64,boxSizing:\"border-box\",overflow:\"hidden\"},children:[showBgLayer&&/*#__PURE__*/_jsxs(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,zIndex:0,overflow:\"hidden\",pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:baseWash}}),hasBgImage&&/*#__PURE__*/_jsx(\"img\",{src:bgImg?bgImg.src:bgUrl,srcSet:bgImg?bgImg.srcSet:undefined,sizes:`${BG_DISPLAY_WIDTH}px`,alt:\"\",decoding:\"async\",draggable:false,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:\"center right\",filter:isDark?\"brightness(0.8) saturate(0.9)\":\"saturate(0.96)\"}}),scrimDarkGradient&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:scrimDarkGradient}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:scrimGradient}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:bottomVignette}})]}),showChrome&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{\"data-smco-ih-tl\":\"\",style:{position:\"absolute\",top:24,left:64,zIndex:2,fontFamily:\"Urbanist, sans-serif\",fontSize:13,fontWeight:600,letterSpacing:\"0.16em\",textTransform:\"uppercase\",color:effSubtle,pointerEvents:\"none\"},children:[sectionLabel,\" / \\xa92026\"]}),/*#__PURE__*/_jsxs(\"div\",{\"data-smco-ih-tr\":\"\",style:{position:\"absolute\",top:24,right:64,zIndex:2,fontFamily:\"Urbanist, sans-serif\",fontSize:13,fontWeight:600,letterSpacing:\"0.16em\",textTransform:\"uppercase\",color:accentColor,pointerEvents:\"none\"},children:[\"(\",typeTag,\")\"]}),/*#__PURE__*/_jsx(\"div\",{\"data-smco-ih-br\":\"\",style:{position:\"absolute\",bottom:24,right:64,zIndex:2,fontFamily:\"Urbanist, sans-serif\",fontSize:13,fontWeight:600,letterSpacing:\"0.16em\",color:effSubtle,pointerEvents:\"none\"},children:sectionNumber})]}),/*#__PURE__*/_jsxs(\"div\",{\"data-smco-ih-grid\":\"\",style:{position:\"relative\",zIndex:1,display:isSplit||showRollSlot?\"grid\":\"flex\",gridTemplateColumns:splitCollapse?\"1fr\":isSplit?`${textFr.toFixed(2)}fr ${imageFr.toFixed(2)}fr`:showRollSlot?\"1.15fr 0.85fr\":undefined,gap:isSplit||showRollSlot?48:undefined,alignItems:outerAlign,flexDirection:\"column\",textAlign:isCentered?\"center\":\"left\",maxWidth:outerMaxWidth,margin:\"0 auto\",minHeight:\"60vh\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:isCentered?\"center\":\"flex-start\",gap:28,maxWidth:textBlockMaxWidth},children:[hasEyebrow&&/*#__PURE__*/_jsx(\"div\",{style:{...revealStyle(0),fontFamily:\"Urbanist, sans-serif\",fontSize:16*eS,fontWeight:600,letterSpacing:\"0.18em\",textTransform:\"uppercase\",color:accentColor},children:eyebrow}),/*#__PURE__*/_jsx(\"div\",{style:{...revealStyle(80)},children:/*#__PURE__*/_jsxs(HeadlineTag,{style:headlineSemanticStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:urbanistH1,children:headlineLine1}),hasLine2&&line2IsScript&&hasLine3?/*#__PURE__*/_jsxs(\"div\",{\"data-smco-ih-scriptrow\":\"\",style:{display:\"flex\",alignItems:\"baseline\",flexWrap:\"wrap\",columnGap:\"0.42em\",marginTop:-8},children:[/*#__PURE__*/_jsx(\"span\",{style:scriptStyle,children:headlineLine2}),/*#__PURE__*/_jsx(\"span\",{style:urbanistRowWord,children:headlineLine3})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[hasLine2&&(line2IsScript?/*#__PURE__*/_jsx(\"div\",{\"data-smco-ih-script\":\"\",style:{...scriptStyle,padding:\"0.1em 0\",marginTop:-14,marginBottom:-14},children:headlineLine2}):/*#__PURE__*/_jsx(\"div\",{style:urbanistH1,children:headlineLine2})),hasLine3&&/*#__PURE__*/_jsx(\"div\",{style:urbanistH1,children:headlineLine3})]})]})}),/*#__PURE__*/_jsx(\"div\",{style:{...revealStyle(160),fontFamily:\"Urbanist, sans-serif\",fontSize:20*sS,lineHeight:1.55,color:effSubtle,maxWidth:680},children:subline}),(hasPrimaryCta||hasSecondaryCta)&&/*#__PURE__*/_jsxs(\"div\",{style:{...revealStyle(240),display:\"flex\",gap:16,flexWrap:\"wrap\",marginTop:12},children:[hasPrimaryCta&&/*#__PURE__*/_jsx(GlassCta,{label:primaryCtaLabel,href:primaryCtaHref,variant:\"primary\",size:\"lg\",accentColor:accentColor,actionColor:actionColor,textColor:effText,isDark:isDark,ease:ease}),hasSecondaryCta&&/*#__PURE__*/_jsx(GlassCta,{label:secondaryCtaLabel,href:secondaryCtaHref,variant:\"secondary\",size:\"lg\",accentColor:accentColor,actionColor:actionColor,textColor:effText,isDark:isDark,ease:ease})]}),(showDataPoints||isSplit)&&/*#__PURE__*/_jsx(\"div\",{\"data-smco-ih-data\":\"\",\"data-smco-ih-dpcount\":String(dataPoints.length),style:{...revealStyle(320),display:\"grid\",gridTemplateColumns:`repeat(${dataPoints.length}, 1fr)`,gap:24,marginTop:40,paddingTop:32,borderTop:`1px solid ${effHairline}`,width:\"100%\"},children:dataPoints.map((dp,i)=>/*#__PURE__*/_jsxs(\"div\",{style:{minWidth:0},children:[/*#__PURE__*/_jsx(\"div\",{\"data-smco-ih-dv\":\"\",style:{fontFamily:\"Urbanist, sans-serif\",fontSize:`${(36*dvS).toFixed(1)}px`,fontWeight:800,color:effText,lineHeight:1.1,whiteSpace:dataNoWrap?\"nowrap\":\"normal\"},children:/*#__PURE__*/_jsx(CountUpValue,{value:dp.value})}),/*#__PURE__*/_jsx(\"div\",{\"data-smco-ih-dl\":\"\",style:{fontFamily:\"Urbanist, sans-serif\",fontSize:`${(13*dlS).toFixed(2)}px`,fontWeight:600,letterSpacing:`${(.16*Math.min(dlS,1)).toFixed(3)}em`,textTransform:\"uppercase\",color:effSubtle,marginTop:8,lineHeight:1.45},children:dp.label})]},i))}),hasScrollCue&&/*#__PURE__*/_jsxs(\"button\",{type:\"button\",onClick:scrollToNextSection,onMouseEnter:()=>setCueHovered(true),onMouseLeave:()=>setCueHovered(false),\"aria-label\":`Scroll to next section: ${scrollCueLabel}`,style:{...revealStyle(400),marginTop:showDataPoints||isSplit?32:56,display:\"flex\",alignItems:\"center\",gap:12,color:cueHovered?accentColor:effSubtle,fontFamily:\"Urbanist, sans-serif\",fontSize:13,fontWeight:600,letterSpacing:\"0.16em\",textTransform:\"uppercase\",background:\"transparent\",border:\"none\",padding:0,cursor:\"pointer\",transition:`color 220ms ${ease}`},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:cueHovered?56:40,height:1,backgroundColor:cueHovered?accentColor:effHairline,transition:`width 320ms ${ease}, background-color 220ms ${ease}`}}),/*#__PURE__*/_jsx(\"span\",{children:scrollCueLabel})]})]}),rollImage,splitVisual]}),/*#__PURE__*/_jsx(\"style\",{children:`/* SCRIPT FACE (2026-08-11): Framer only emits an @font-face for fonts used by canvas TEXT LAYERS. These pages are built almost entirely from code components, which name the family in inline styles but cannot cause Framer to load it — so every script accent fell through to the generic 'cursive' keyword (Comic Sans on Windows Chrome, a plain sans on Android). Each code component therefore declares the face itself. Identical duplicates across components are harmless: the browser dedupes by src and fetches the file once. */ @font-face { font-family: 'janelotus Regular'; src: url('https://framerusercontent.com/assets/4XS7AMSvhz9Z8Mfz7OOsX6PrA.woff2') format('woff2'); font-weight: 400; font-style: normal; /* FONT-DISPLAY (2026-08-17): was 'swap'. This declaration is RUNTIME-INJECTED by React, so it lands AFTER every statically-emitted @font-face in document order. Duplicate @font-face rules for the same family/weight/style resolve last-one-wins, so while this said 'swap' it OVERRODE the 'block' rules the sibling components already carried — anywhere the interior hero renders, the whole page reverted to swap. 'swap' paints the generic 'cursive' fallback (Comic Sans on Windows, Apple Chancery on macOS), which measures ~102% wider than janelotus, then snaps back — text more than doubles in width and reflows. 'block' holds the glyphs invisible for the block period (~3s) and paints once; the accents already sit inside reveal wrappers at opacity 0 at first paint, so it costs nothing visible. NOT 'optional': that would commit permanently to the 102%-wider cursive on any load that misses its ~100ms window. DUPLICATED BY DESIGN — the identical declaration also lives in HeroSection.tsx, WhoWeServeSection.tsx, ConversionBandSection.tsx, StrongloveAccent.tsx and Library/Sections/SectionHeader.tsx. The browser dedupes on src, so the duplication is harmless ONLY while all six stay byte-identical. Changing font-display in one file alone re-breaks the set nondeterministically, page by page — do not do it. */ font-display: block; } @keyframes smcoIHReveal { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } } /* TABLET (2026-08-12): this collapse ran at 768px, so iPad portrait (810px) got the DESKTOP grid — a 349px text column carrying a 68px script word, i.e. a crushed desktop rather than a tablet layout. Raised to 880px. Safe here because the file has no intermediate 641-767px design: this was the only width-based rule in the sheet, so 769-880px simply inherits the same single-column treatment 768px and below already had. */ @media (max-width: 880px) { [data-smco-ih] { padding-left: 24px !important; padding-right: 24px !important; } /* GAP ABOVE HEADLINE (2026-08-12): measured on the branch at 414px, nav-bottom to first-text was 165px on /why-smco/event-guarantee/ and /sales-teams/, 100px on /experiences/charcuterie/ and 244px on /pricing/. Attribution: 25px of nav layout overhang (fixed in Navigation.tsx) + this padding-top +, on /pricing/ only, 78.5px of centring slack. paddingTop is a per-INSTANCE prop (default 140; instances set 140 and 75), so it cannot be fixed from defaultProps without touching desktop -- this mobile-only rule overrides every instance the same way the padding-left/right rule above already does. Desktop keeps its instance values. Bottom padding is deliberately NOT touched: PageHero.tsx couples its bottom padding to FADE_PX/the dissolve overlay, and although THIS component has no such overlay the same discipline is kept here. The min-height reset is the /pricing/ half: the grid carries min-height:60vh (537.6px) with align-items:center while its content is only 380.5px tall, so the content was being centred in a box taller than itself and a padding cut alone would have been half-absorbed by re-centring. Dropping the floor on mobile removes that slack; pages whose content already exceeds 60vh are unaffected. */ [data-smco-ih] { padding-top: 32px !important; } [data-smco-ih-grid] { min-height: 0 !important; } [data-smco-ih-tl] { left: 24px !important; } [data-smco-ih-tr] { right: 24px !important; } [data-smco-ih-br] { right: 24px !important; } [data-smco-ih-roll] { display: none !important; } /* 2026-08-11: display:none on a grid CHILD leaves its COLUMN TRACK standing, so the text column stayed ~169px (roll) / ~121px (split) at 390px and the script headline clipped against overflow:hidden. Collapse the tracks, and hide the split visual the same way the roll cutout is hidden. */ [data-smco-ih-grid] { grid-template-columns: 1fr !important; } [data-smco-ih-split] { display: none !important; } /* STAT BAND — ONE ROW (2026-08-12). This rule used to be grid-template-columns: 1fr, which stacked the three data points into three rows the reader scrolls past. House standard is a single row with SHRUNKEN items. The 2026-08-11 note is right that plain 1fr floors each track at the max-content width of an unbreakable value like \"$5K–$15K\" (~152px at 36px) — minmax(0, 1fr) drops that floor, and the two rules below shrink the type so the content actually fits: at 400px each track is ~111px and the widest default value measures ~98px. Value 20px / label 10.4px at 400px; both scale back up to 30px / 12px by 600px. NOTE: these caps override the dataValueScale / dataLabelScale controls below 880px — the controls still shape desktop, where the band has room. */ [data-smco-ih-data] { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 10px !important; } /* 2026-08-17: the rule above is UNCHANGED and still the only thing that touches a normal three-stat band, so every existing instance behaves exactly as it did. This one addition covers the single case that band cannot: a category with no published class to quote drops its price stat (Office-Ready today), and two items in three tracks leave an empty third. Deliberately a plain static selector rather than repeat(var(--count, 3), ...) — a custom property that ever substituted to something unparseable would make grid-template-columns invalid at computed-value time and collapse the band to a stack, whereas an attribute selector that fails to match simply leaves the three-column rule above standing. Equal specificity to that rule (0,1,0) and both !important, so it wins on source order alone; it must stay AFTER it. */ [data-smco-ih-dpcount=\"2\"] { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } [data-smco-ih-dv] { font-size: clamp(15px, 5vw, 30px) !important; } /* TYPE SCALE — MOBILE STAT LABEL (2026-08-12): was clamp(9px, 2.6vw, 12px), i.e. 10.4px at 400px — the smallest type in the file and squarely the illegibility the owner reported. Both ends of the clamp sat under the 13px floor, so BOTH move (floor 9 → 13, cap 12 → 13); the preferred 2.6vw is kept in place so the shape of the rule still reads as a clamp, it simply resolves flat at 13px and matches the desktop label exactly. Fit re-checked against the 2026-08-12 one-row band: at 390px each track is ~107px, and the constraint is the unbreakable VALUE, not the label — labels wrap on spaces at lineHeight 1.45, and the longest default word (\"PROGRAMS\") measures ~81px at 13px/0.16em. \"ANNUAL PROGRAMS\" already wrapped to two lines at 10.4px, so the line count is unchanged. A custom single word longer than ~12 characters would be the first thing to overflow a track. The VALUE cap below is untouched: it is display type, and it is the element the three-across fit is actually budgeted around. */ [data-smco-ih-dl] { font-size: clamp(13px, 2.6vw, 13px) !important; } } /* SCRIPT LOCKUP OVERLAP (2026-08-12) — mobile only. The script line is pulled up 14px (stacked) / 8px (script+word row) to tighten the lockup. That negative margin is only safe while the script's own leading can absorb it: usable space above the glyphs is (1.22 - 1)/2 + 0.1em padding = 0.21em stacked, 0.11em in the row. At the 130px desktop size that is 27px against a 14px pull; at the clamp FLOOR (40px, i.e. every viewport under ~476px) it is 8.4px against the same 14px, so the box crosses 14px into the Urbanist line above and the glyphs collide — measured on /experiences/charcuterie/ (14px x 320px) and /experiences/global-flavors/ (14px x 327px), with the row variant's 8px pull doing the same on /pricing/, /sales-teams/ and /people-and-culture/. Zeroing the pull below 768px removes the crossing outright. The clamps themselves are untouched. 768px and above is unchanged: the pull is fully absorbed from ~794px up and the residual below that is under 1px. Inline margins need !important to be overridden from here. */ @media (max-width: 767px) { [data-smco-ih-script] { margin-top: 0 !important; margin-bottom: 0 !important; } [data-smco-ih-scriptrow] { margin-top: 0 !important; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } [data-smco-ih] * { animation-delay: 0ms !important; } }`})]});}addPropertyControls(InteriorHero,{variant:{type:ControlType.Enum,title:\"Variant\",options:[\"default\",\"data-points\",\"centered\",\"split\"],defaultValue:\"default\"},heroTextAlign:{type:ControlType.Enum,title:\"Text Placement\",options:[\"default\",\"left-column\"],optionTitles:[\"Centered block\",\"Left column\"],defaultValue:\"default\",hidden:props=>props.variant===\"split\"||props.variant===\"centered\"},textColumnWidth:{type:ControlType.Number,title:\"Left Column Width\",defaultValue:620,min:360,max:980,step:10,hidden:props=>props.variant===\"split\"||props.variant===\"centered\"||props.heroTextAlign!==\"left-column\"},eyebrow:{type:ControlType.String,title:\"Eyebrow\",defaultValue:\"COOK | CREATE | CONNECT\"},headlineLine1:{type:ControlType.String,title:\"Headline Line 1\",defaultValue:\"Premium Events\"},headlineLine2:{type:ControlType.String,title:\"Headline Line 2\",defaultValue:\"Transparent\"},headlineLine2Style:{type:ControlType.Enum,title:\"Line 2 Style\",options:[\"match\",\"script\"],defaultValue:\"script\"},headlineLine3:{type:ControlType.String,title:\"Headline Line 3 (same row when Line 2 is script)\",defaultValue:\"Pricing\"},headlineScale:{type:ControlType.Number,title:\"Headline Size\",defaultValue:1,min:.5,max:1.3,step:.05},headlineIsH1:{type:ControlType.Boolean,title:\"Headline is H1\",defaultValue:true,enabledTitle:\"H1\",disabledTitle:\"Div\",description:\"Renders the whole headline lockup as the page's single <h1>. Turn OFF only if this page already has an h1 in another component.\"},eyebrowScale:{type:ControlType.Number,title:\"Eyebrow Size\",defaultValue:1,min:.5,max:1.5,step:.05,displayStepper:true},sublineScale:{type:ControlType.Number,title:\"Subline Size\",defaultValue:1,min:.5,max:1.5,step:.05,displayStepper:true},scriptColor:{type:ControlType.Color,title:\"Script Color (black = auto)\",defaultValue:\"#96c0a5\"},subline:{type:ControlType.String,title:\"Subline\",displayTextArea:true,defaultValue:\"What you see is what you pay. Premium ingredients, live chef instruction, free express shipping, and taxes — every kit, every event, all-in.\"},primaryCtaLabel:{type:ControlType.String,title:\"Primary CTA\",defaultValue:\"\"},primaryCtaHref:{type:ControlType.Link,title:\"Primary CTA Link\"},secondaryCtaLabel:{type:ControlType.String,title:\"Secondary CTA\",defaultValue:\"\"},secondaryCtaHref:{type:ControlType.Link,title:\"Secondary CTA Link\"},scrollCueLabel:{type:ControlType.String,title:\"Scroll Cue Label\",defaultValue:\"See the tiers ↓\"},bgImage:{type:ControlType.Image,title:\"Hero Background Image\"},bgImageSrc:{type:ControlType.String,title:\"Hero Background URL (fallback)\",defaultValue:\"\",hidden:()=>true},bgWash:{type:ControlType.Boolean,title:\"Background Wash\",defaultValue:false},bgScrim:{type:ControlType.Number,title:\"Scrim Amount\",defaultValue:82,min:0,max:100,step:2,description:\"Peak opacity of the heavy (left) side of the scrim.\"},scrimPosition:{type:ControlType.Number,title:\"Scrim Position\",defaultValue:50,min:0,max:100,step:1,displayStepper:true,description:\"Where the transition sits, % from the left. Lower = heavy scrim hugs the left; higher = heavy scrim reaches further right.\"},scrimFalloff:{type:ControlType.Number,title:\"Scrim Falloff\",defaultValue:55,min:2,max:100,step:2,displayStepper:true,description:\"Feather width of the transition band. Lower = sharp, dramatic edge; higher = soft, gradual blend.\"},scrimDarkness:{type:ControlType.Number,title:\"Scrim Darkness\",defaultValue:0,min:0,max:100,step:2,displayStepper:true,description:\"Adds a dark wash on the heavy (left) side for extra drama — best with light text / forced-dark hero. 0 = off.\"},laptopImage:{type:ControlType.Image,title:\"Hero Image\",hidden:props=>props.variant!==\"split\"},heroImageMotion:{type:ControlType.Enum,title:\"Hero Image Motion\",options:[\"Roll Out\",\"Stationary\",\"Slide & Fade\"],defaultValue:\"Stationary\",hidden:props=>props.variant!==\"split\"},laptopMaxWidth:{type:ControlType.Number,title:\"Hero Image Width\",defaultValue:800,min:240,max:980,step:10,hidden:props=>props.variant!==\"split\"},splitTextRatio:{type:ControlType.Number,title:\"Text Column Width\",defaultValue:.82,min:.5,max:1.5,step:.02,displayStepper:true,hidden:props=>props.variant!==\"split\"},laptopFlipX:{type:ControlType.Boolean,title:\"Flip Horizontal\",defaultValue:false,hidden:props=>props.variant!==\"split\"},splitGroundShadow:{type:ControlType.Boolean,title:\"Contact Shadow\",defaultValue:true,hidden:props=>props.variant!==\"split\"},splitImageAlt:{type:ControlType.String,title:\"Hero Image Alt\",defaultValue:\"\",hidden:props=>props.variant!==\"split\"},laptopImageSrc:{type:ControlType.String,title:\"Hero Image URL (preview)\",defaultValue:\"\",hidden:()=>true},splitImageUrl:{type:ControlType.Image,title:\"Split Image (legacy)\",hidden:()=>true},splitUseLaptop:{type:ControlType.Boolean,title:\"Use Laptop (legacy)\",defaultValue:false,hidden:()=>true},heroImageUrl:{type:ControlType.Image,title:\"Roll Image (transparent PNG cutout)\",hidden:props=>props.variant===\"split\"},heroImageSrc:{type:ControlType.String,title:\"Roll Image URL (fallback / CMS-bindable)\",defaultValue:\"\",hidden:props=>props.variant===\"split\"},heroImageAlt:{type:ControlType.String,title:\"Roll Image Alt\",defaultValue:\"\",hidden:props=>props.variant===\"split\"},heroImagePlaceholder:{type:ControlType.String,title:\"Roll Image Placeholder Label (empty = no slot)\",defaultValue:\"\",hidden:props=>props.variant===\"split\"},heroImageSize:{type:ControlType.Number,title:\"Roll Image Size\",defaultValue:440,min:240,max:720,step:10,hidden:props=>props.variant===\"split\"},rollSpeed:{type:ControlType.Number,title:\"Roll Speed (1 = default)\",defaultValue:1,min:.4,max:3,step:.1,hidden:props=>props.variant===\"split\"},groundShadow:{type:ControlType.Boolean,title:\"Ground Shadow\",defaultValue:true,hidden:props=>props.variant===\"split\"},dataPoint1Label:{type:ControlType.String,title:\"Data Point 1 Label\",defaultValue:\"Average Event\",hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataPoint1Value:{type:ControlType.String,title:\"Data Point 1 Value\",defaultValue:\"$5K–$15K\",hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataPoint2Label:{type:ControlType.String,title:\"Data Point 2 Label\",defaultValue:\"Group Sizes\",hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataPoint2Value:{type:ControlType.String,title:\"Data Point 2 Value\",defaultValue:\"10–200+\",hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataPoint3Label:{type:ControlType.String,title:\"Data Point 3 Label\",defaultValue:\"Annual Programs\",hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataPoint3Value:{type:ControlType.String,title:\"Data Point 3 Value\",defaultValue:\"$50K+\",hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataValueScale:{type:ControlType.Number,title:\"Data Value Size\",defaultValue:1,min:.5,max:1.5,step:.05,displayStepper:true,hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataLabelScale:{type:ControlType.Number,title:\"Data Label Size\",defaultValue:1,min:.5,max:1.5,step:.05,displayStepper:true,hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},dataNoWrap:{type:ControlType.Boolean,title:\"Data Value One Line\",defaultValue:false,enabledTitle:\"No Wrap\",disabledTitle:\"Wrap\",hidden:props=>props.variant!==\"data-points\"&&props.variant!==\"split\"},showChrome:{type:ControlType.Boolean,title:\"Show Chrome\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"},sectionLabel:{type:ControlType.String,title:\"Section Label\",defaultValue:\"Pricing\",hidden:props=>!props.showChrome},sectionNumber:{type:ControlType.String,title:\"Section Number\",defaultValue:\"/01\",hidden:props=>!props.showChrome},typeTag:{type:ControlType.String,title:\"Type Tag\",defaultValue:\"Transparent\",hidden:props=>!props.showChrome},forceTheme:{type:ControlType.Enum,title:\"Force Theme\",options:[\"auto\",\"light\",\"dark\"],defaultValue:\"auto\"},paddingTop:{type:ControlType.Number,title:\"Padding Top\",defaultValue:140,min:60,max:280,step:8},paddingBottom:{type:ControlType.Number,title:\"Padding Bottom\",defaultValue:120,min:60,max:280,step:8},surfaceColor:{type:ControlType.Color,title:\"Surface\",defaultValue:\"#f8f5f0\"},surfaceDarkColor:{type:ControlType.Color,title:\"Surface Dark\",defaultValue:\"#1a1612\"},accentColor:{type:ControlType.Color,title:\"Accent (Sage)\",defaultValue:\"#96c0a5\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#0e0e0e\"},textDarkColor:{type:ControlType.Color,title:\"Text Dark\",defaultValue:\"#f4f4f4\"},subtleTextColor:{type:ControlType.Color,title:\"Text Subtle\",defaultValue:\"rgba(14, 14, 14, 0.62)\"},subtleTextDarkColor:{type:ControlType.Color,title:\"Text Subtle Dark\",defaultValue:\"rgba(244, 244, 244, 0.7)\"},hairlineColor:{type:ControlType.Color,title:\"Hairline\",defaultValue:\"rgba(14, 14, 14, 0.1)\"},actionColor:{type:ControlType.Color,title:\"Action (Burnt Orange)\",defaultValue:\"#ff7f50\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InteriorHero\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"720\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./InteriorHero.map","// SMCo SchemaWebPage — emits page-level WebPage JSON-LD, linked to the SMCo entity.\n// Drop once per interior page alongside SchemaOrgOrganization. Plain string props\n// (no raw JSON passing) so it composes cleanly via the Framer MCP/canvas.\n//\n// SERVER-RENDER FIX (2026-08-05, schema audit S-03): previously injected via useEffect +\n// document.head, which React never runs during server rendering — so this markup was\n// absent from view-source and invisible to GPTBot / ClaudeBot / PerplexityBot. Now\n// rendered as a JSX <script> tag.\n//\n// ENTITY LINKING (same audit): the old version emitted a bare WebPage with no @id and no\n// reference to anything, so it floated unattached to the SMCo entity. It now emits a\n// small @graph — WebSite + WebPage — where the WebPage isPartOf the WebSite and both are\n// published by https://smcoaz.com/#organization. That is what lets an engine say\n// \"Sweet Moments Co. published this page\" rather than \"a page that mentions that name.\"\n//\n// FAIL-SAFE (same audit): defaults used to be the Pricing page's real name, URL and\n// description. Any instance dropped on another page and left unconfigured emitted\n// Pricing schema on the wrong URL. Defaults are now empty and the component renders\n// NOTHING unless the page name and a resolvable URL are both present. Configure every\n// instance.\n//\n// CMS TEMPLATE SUPPORT (2026-08-27, audit S-09): the five :slug templates\n// (/experiences/, /resources/blog/, /resources/recipes/, /resources/playbook/,\n// /why-smco/meet-your-chefs/) carried Organization schema but no WebPage, leaving ~107\n// live CMS URLs with no page-level entity. This component could not fix that as written:\n// pageUrl was a single static string, so one instance on a template emitted the SAME\n// name and URL for every item rendered through it — identical wrong schema on 100+ URLs,\n// which is worse than none.\n//\n// It now accepts a composed URL. Set `pathPrefix` statically to the template's collection\n// path and BIND `slug` to the collection's Slug; the URL is assembled per item.\n// `pageName` binds to the item's Meta Title (or Title). Static interior pages are\n// unaffected — leave the new props empty and `pageUrl` behaves exactly as before.\n//\n//   Static page:   pageUrl = \"https://smcoaz.com/pricing/\"\n//   CMS template:  pathPrefix = \"/resources/recipes/\"   slug = {bound Slug}\n//\n// Precedence is pathPrefix+slug first, then pageUrl. Both empty renders nothing.\n//\n// TRAILING SLASH (2026-08-27, corrected before first use): verified against the live\n// sitemap.xml — SMCo CMS item URLs carry NO trailing slash\n// (https://smcoaz.com/resources/recipes/salted-pistachio-olive-oil-cakes), while static\n// category pages do (/experiences/charcuterie/). The static ones are typed into pageUrl\n// so they are unaffected; the composer therefore defaults to NO trailing slash. Getting\n// this wrong makes the WebPage @id and url point at a URL that is not the page.\n// The `trailingSlash` toggle exists for any future collection that routes with one.\n//\n// @framerSupportedLayoutWidth fixed\n// @framerSupportedLayoutHeight fixed\n// @framerIntrinsicWidth 1\n// @framerIntrinsicHeight 1\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";const SITE=\"https://smcoaz.com\";const ORG_ID=`${SITE}/#organization`;const SITE_ID=`${SITE}/#website`;// Joins a collection path and a CMS slug into one absolute, single-slashed URL.\n// Tolerates a missing or duplicated leading/trailing slash on either side, and a slug\n// that arrives already fully qualified (some CMS fields do).\nfunction composeUrl(pathPrefix,slug,trailingSlash){const rawSlug=(slug||\"\").trim();if(!rawSlug)return\"\";if(/^https?:\\/\\//i.test(rawSlug))return rawSlug;const prefix=(pathPrefix||\"\").trim();if(!prefix)return\"\";const cleanPrefix=`/${prefix.replace(/^\\/+|\\/+$/g,\"\")}`;const cleanSlug=rawSlug.replace(/^\\/+|\\/+$/g,\"\");if(!cleanSlug)return\"\";return`${SITE}${cleanPrefix}/${cleanSlug}${trailingSlash?\"/\":\"\"}`;}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n */export default function SchemaWebPage(props){const{pageName=\"\",pageUrl=\"\",pageDescription=\"\",pathPrefix=\"\",slug=\"\",trailingSlash=false}=props;const name=(pageName||\"\").trim();const description=(pageDescription||\"\").trim();// A bound slug wins over a static URL, so a template instance never falls back to\n// whatever literal URL was typed while configuring it.\nconst composed=composeUrl(pathPrefix,slug,trailingSlash);const url=composed||(pageUrl||\"\").trim();// Fail safe: an unconfigured instance emits nothing rather than wrong schema.\nif(!name||!url){return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:1,height:1,opacity:0,pointerEvents:\"none\"},\"aria-hidden\":\"true\"});}const graph=[{\"@type\":\"WebSite\",\"@id\":SITE_ID,url:SITE,name:\"Sweet Moments Co.\",publisher:{\"@id\":ORG_ID},inLanguage:\"en-US\"},{\"@type\":\"WebPage\",\"@id\":`${url}#webpage`,url,name,...description?{description}:{},isPartOf:{\"@id\":SITE_ID},publisher:{\"@id\":ORG_ID},about:{\"@id\":ORG_ID},inLanguage:\"en-US\"}];const json=JSON.stringify({\"@context\":\"https://schema.org\",\"@graph\":graph},null,2);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:1,height:1,opacity:0,pointerEvents:\"none\",overflow:\"hidden\"},\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"script\",{type:\"application/ld+json\",\"data-smco-schema\":\"webpage\",dangerouslySetInnerHTML:{__html:json}})});}addPropertyControls(SchemaWebPage,{pageName:{type:ControlType.String,title:\"Page Name\",placeholder:\"e.g. Pricing — Sweet Moments Co.\",defaultValue:\"\",description:\"Required. On a CMS template, bind to the item's Meta Title (or Title). Empty emits nothing.\"},pageUrl:{type:ControlType.String,title:\"Page URL\",placeholder:\"https://smcoaz.com/pricing/\",defaultValue:\"\",description:\"Static pages only. Full absolute URL. Ignored when Path Prefix + Slug are set.\"},pathPrefix:{type:ControlType.String,title:\"Path Prefix\",placeholder:\"/resources/recipes/\",defaultValue:\"\",description:\"CMS templates only. The collection path, typed once. Pairs with Slug.\"},slug:{type:ControlType.String,title:\"Slug\",placeholder:\"bind to the collection Slug\",defaultValue:\"\",description:\"CMS templates only. BIND to the collection's Slug — do not type a literal.\"},trailingSlash:{type:ControlType.Boolean,title:\"Trailing Slash\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Leave OFF for all current SMCo collections — their live URLs have no trailing slash.\"},pageDescription:{type:ControlType.String,title:\"Description\",displayTextArea:true,placeholder:\"One or two sentences describing this page.\",defaultValue:\"\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SchemaWebPage\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SchemaWebPage.map"],"mappings":"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"}