{"version":3,"file":"shared-lib.GMluaPSK.mjs","names":["React.useState","React.useRef","React.useCallback","_Fragment","__esmMin","init_npm_react_18_3_1","ne","init_ssg_sandbox_shims","window","l","_e","p","init_jsx_runtime","ce","de","init_framer_BL70qLPA","addPropertyControls","ControlType","SiteNav","LOGO","links","LINKS","t","href","label1","label2","label3","label4","label5","label6","label7","i","tight","setTight","open","setOpen","light","theme","onScroll","onKey","onResize","previous","barRef","el","sync","ro","nav","id","cancelled","release","settle","visibleAnchor","fonts","active","setActive","nodes","h","pick","line","best","bestTop","n","top","onAnchor","hash","target","e","still","measured","bar","anchorTop","had","CSS","MOTION_CSS","solid","logoOnLight","logo","logoColor","wordmarkFont","wordmark","label","labelFont","num","LABEL_PX","MONO","ctaFont","ctaLabel","ctaShortLabel","v","init_SiteNav","rect","node","style"],"sources":["https:/framerusercontent.com/modules/FMi07O4JOQJOqAeEb9lE/8fcUo7IYfpLQ1TAqwY3k/SiteNav.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Site-wide dark glass navigation.\n *\n * `solid` prop: the default translucent background (alpha 0.5) reads as black glass over\n * the homepage's dark hero, but washes out to grey over the light #F5F5F5 ground of the\n * inner pages. Inner-page instances set solid=true for an opaque bar. The homepage\n * instance leaves it false and keeps the glass treatment.\n *\n * Desktop rendering is intentionally identical to NavGlass5 so the six inner pages\n * match the homepage exactly. What NavGlass5 lacks and this adds: a real mobile\n * menu below 900px, where seven links plus a CTA cannot fit on one row.\n *\n * SSR notes (see framer/STAGING.md, \"Entrance animations\"):\n * - No window access during render. Server and client emit identical markup.\n * - The menu panel is always in the DOM; only transform/opacity/visibility change,\n *   so there is no hydration-time markup swap and no animation replay.\n * - Nothing here is gated behind an entrance animation, so content is visible at\n *   first paint even if JS never runs.\n *//**\n * Six items, numbered 01-06, in Stephanie's note-18 order. Notes applied here:\n * - N12 \"Capitalize\" (pinned on the top nav): Title Case labels, set in small caps.\n * - N41: \"Insights\" is renamed \"Modernization Mindset\". The ROUTE stays /blog, so all\n *   11 indexed post URLs keep working and no redirects are needed.\n * - N18: Workforce Development follows Modernization Mindset; \"Start Here\" is the CTA.\n * The old standalone \"Start here\" link is gone: it IS the CTA now, so keeping both put\n * the same destination on the bar twice.\n *//**\n * Stephanie's footer note lists the seven items and their numbers explicitly:\n *   01 Who We Serve / 02 Why It Fails / 03 How We Help / 04 Why It Works / 05 Start Here\n *   (all five anchors on the home page), 06 Modernization Mindset, 07 Workshops (pages).\n * \"Relabel this column to match header\" and \"These numbers tie to the header\" make this\n * list and the footer's Company column one thing, so they are generated from it.\n *\n * Two changes from the previous nav: Start Here was missing entirely, and the last item\n * was \"Workforce Development\" where she writes \"Workshops\". The ROUTE is unchanged, so\n * the indexed /workforce-development URL keeps working.\n */const LINKS=[[\"Who We Serve\",\"/#who-we-serve\"],[\"Why It Fails\",\"/#problems\"],[\"How We Help\",\"/#how-we-help\"],[\"Why It Works\",\"/#why-it-works\"],[\"Start Here\",\"/#start-here\"],[\"Modernization Mindset\",\"/blog\"],[\"Workforce Development\",\"/workforce-development\"]];const MONO='ui-monospace, \"Cascadia Mono\", \"SF Mono\", Menlo, Consolas, monospace';const num=i=>String(i+1).padStart(2,\"0\");// Framer can keep more than one responsive instance in the document. IDs are therefore\n// not reliably unique at runtime: getElementById() may return a hidden breakpoint and a\n// menu click appears to do nothing or lands beside the intended band. Always resolve the\n// rendered instance instead.\nconst visibleAnchor=id=>{const matches=Array.from(document.querySelectorAll(`[id=\"${id}\"]`));return matches.find(node=>{const rect=node.getBoundingClientRect();const style=window.getComputedStyle(node);return rect.width>0&&rect.height>0&&style.display!==\"none\"&&style.visibility!==\"hidden\";})||null;};/**\n * ANCHOR MOTION. The nav is position:fixed, so a bare anchor jump parks the section's\n * heading UNDERNEATH the bar - the target is on screen but its title is not, which reads\n * as a broken link rather than a short scroll. Nothing in this project set\n * scroll-margin-top or scroll-behavior before now.\n *\n * The offset is a live variable, not a constant, because the bar is not a fixed height:\n * it shrinks from 18px padding to 11px past 24px of scroll, and the wordmark drops out\n * under 1339px. --sn-h is measured from the real element every time it changes.\n */const MOTION_CSS=`\n:root { --sn-h: 68px }\nhtml { scroll-behavior: smooth }\n/* every in-page target clears the bar, plus a breath so the heading is not welded to it */\n:where(section, div, main)[id] { scroll-margin-top: calc(var(--sn-h) + 20px) }\n/* Direct-hash arrivals and footer links take the CSS path; these mirror the JS rule\n   above by discounting each band's measured internal top padding (84/40/~44px). */\n#why-it-works, #start-here { scroll-margin-top: calc(var(--sn-h) - 108px) }\n#problems { scroll-margin-top: calc(var(--sn-h) - 16px) }\n#how-we-help { scroll-margin-top: calc(var(--sn-h) - 64px) }\n#who-we-serve { scroll-margin-top: calc(var(--sn-h) - 68px) }\n\n/* You are here. The underline is already the hover affordance, so the active state uses\n   the same gesture held open rather than inventing a second visual language. */\n.sn-l[aria-current=\"true\"]::after { transform: scaleX(1) }\n.sn-l[aria-current=\"true\"] { color: #EAF4FF }\n.sn-l[aria-current=\"true\"] .sn-n { color: #FFB0CF; opacity: 1 }\n.sn-ml[aria-current=\"true\"] .sn-mn { color: #FFB0CF; opacity: 1 }\n\n/* WCAG 2.3.3: honour a stated preference for less motion. A long smooth scroll is\n   exactly the kind of large movement that setting exists for. */\n@media (prefers-reduced-motion: reduce) {\n  html { scroll-behavior: auto }\n}\n`;/**\n * Stephanie's note: the numbers do not match the label size.\n *\n * They were set in a monospace face at a smaller px, and even at EQUAL px they still read\n * short, because cap height is a different fraction of the em in every typeface. Deriving\n * a corrective px for the mono face was possible but fragile: it is only valid for the\n * exact pair of faces measured, and it silently goes wrong the moment the site typeface\n * changes - which it just did, to Neue Montreal.\n *\n * So the numerals now inherit the label's font outright and differ only in colour. Equal\n * size is then true by construction, in any face, with no constant to maintain. Tabular\n * figures keep the column even. harness/capheight.py measures the rendered ink to prove\n * it, and its control - the numerals put back into a mono face - fails.\n */const LABEL_PX=11;const CSS=`\n.sn-l { position: relative; color: rgba(210,228,248,0.82); text-decoration: none; font-size: ${LABEL_PX}px; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; white-space: nowrap; transition: color .18s ease }\n.sn-l:hover { color: #fff }\n/* 01-06. Sized by cap height (see NUM_PX), and bright enough to read as part of the\n   label rather than as a faded prefix. */\n.sn-n { font: inherit; font-variant-numeric: tabular-nums; font-style: normal; color: rgba(255,176,207,0.92); margin-right: 5px }\n.sn-light .sn-n { color: #FFB0CF }\n/* The numbering is the first thing to go when the row tightens: it is decoration, the\n   labels are not. Floor measured in the harness, not guessed. */\n/* Leo 2026-08-31: item 7 renamed \"Workforce Development\" (+~70px). The numerals are\n   decoration and yield first: hidden up to 1679px now, and the row tightens its gap in\n   the mid band. Thresholds measured, not guessed - see check-sitenav's overhang oracle. */\n@media (max-width: 1279px) { .sn-n { display: none } }\n@media (max-width: 1559px) { .sn-cta { padding-left: 15px !important; padding-right: 15px !important } }\n@media (max-width: 1439px) { .sn-desktop { gap: 16px } }\n@media (max-width: 1199px) { .sn-desktop { gap: 12px } .sn-l { letter-spacing: .015em } }\n.sn-l::after { content: \"\"; position: absolute; left: 0; bottom: -6px; width: 100%; height: 1.5px; background: #FFB0CF; transform: scaleX(0); transform-origin: left; transition: transform .25s cubic-bezier(.22,1,.36,1) }\n.sn-l:hover::after { transform: scaleX(1) }\n/* The same control as the hero's primary button. It was a 999px pill with a vertical\n   gradient and a glow, which is the one thing on this site that looked like a generic\n   marketing CTA rather than an instrument: 2px radii, hairline rules and mono microtype\n   everywhere else. Solid fill, real bevel, corner registration tick, and hover as a\n   measured step rather than a brightness bump. */\n.sn-cta { position: relative; white-space: nowrap; display: inline-flex; align-items: center;\n  gap: 10px; border-radius: 999px; background: #FFB0CF; border: 1px solid #FFB0CF;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 1px 0 rgba(0,0,0,.35);\n  transition: background .24s ease, border-color .24s ease, transform .18s cubic-bezier(.22,1,.36,1) }\n.sn-cta:hover { background: #FFB0CF; border-color: #FFB0CF }\n.sn-cta:active { transform: translateY(1px) }\n/* the label rule, the same gesture the section underlines and the hero controls use */\n.sn-cta-l { position: relative; display: inline-block }\n.sn-cta-short { display: none }\n@media (max-width: 1559px) { .sn-cta-full { display: none } .sn-cta-short { display: inline } }\n.sn-cta-l::after { content: \"\"; position: absolute; left: 0; right: 0; bottom: -4px; height: 1px;\n  background: currentColor; opacity: .55; transform: scaleX(0); transform-origin: left;\n  transition: transform .38s cubic-bezier(.22,1,.36,1) }\n.sn-cta:hover .sn-cta-l::after { transform: scaleX(1) }\n@media (prefers-reduced-motion: reduce) {\n  .sn-cta, .sn-cta-l::after { transition: none }\n}\n.sn-cta:hover { transform: translateY(-1px); filter: brightness(1.07); box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 8px 24px -8px rgba(255,176,207,0.6) }\n.sn-cta:active { transform: translateY(0) scale(0.98) }\n.sn-cta:focus-visible, .sn-l:focus-visible, .sn-burger:focus-visible, .sn-ml:focus-visible { outline: 2px solid #FFB0CF; outline-offset: 3px }\n.sn-wm-wrap { position: relative; display: inline-block; white-space: nowrap }\n.sn-wm-txt { font-family: \"Hanken Grotesk\", Inter, sans-serif; font-weight: 600; font-size: 11.5px; letter-spacing: 0.15em; text-transform: uppercase; line-height: 1; white-space: nowrap; display: block }\n.sn-wm-base { color: rgba(214,233,255,0.82) }\n.sn-wm-sweep { position: absolute; left: 0; top: 0; pointer-events: none;\n  color: transparent; -webkit-text-fill-color: transparent;\n  background-image: linear-gradient(100deg, transparent 40%, rgba(150,215,255,0.95) 50%, transparent 60%);\n  background-size: 260% 100%; background-repeat: no-repeat;\n  -webkit-background-clip: text; background-clip: text;\n  animation: sn-sweep 9s linear infinite }\n@keyframes sn-sweep { from { background-position: 170% 0 } to { background-position: -70% 0 } }\n.sn-wm { display: block }\n/* With the wordmark shown, the row measures ~1323px. NavGlass5 drops it at 1180px,\n   which leaves it overflowing between 1181 and ~1330 (verified). 1339 is the real floor. */\n/* Stephanie 2026-09-01: the 01-07 numbers must be visible on the inner pages, i.e.\n   at ordinary desktop widths. The wordmark TEXT yields to them up to 1679px (the logo\n   mark stays); both coexist from 1680. */\n@media (max-width: 1679px) { .sn-wm { display: none } }\n\n/* desktop row / mobile trigger swap */\n.sn-desktop { display: flex; align-items: center; gap: 22px }\n.sn-burger { display: none; align-items: center; justify-content: center; width: 44px; height: 44px; margin: -6px -8px -6px 0; padding: 0; background: transparent; border: 0; cursor: pointer; -webkit-tap-highlight-color: transparent }\n/* Breakpoint is measured, not guessed: the seven links plus the CTA measure ~1070px,\n   so the desktop row only clears the viewport padding from about 1096px up. Below\n   that it overflowed horizontally (verified in harness/mq-test.html at 901 and 1024). */\n@media (max-width: 1129px) {\n  .sn-desktop { display: none }\n  .sn-burger { display: inline-flex }\n}\n\n/* burger glyph: three bars that become an X, transform only */\n.sn-bar { display: block; width: 22px; height: 1.6px; border-radius: 2px; background: rgba(214,233,255,0.9); transition: transform .28s cubic-bezier(.22,1,.36,1), opacity .18s ease }\n.sn-bar + .sn-bar { margin-top: 5px }\n.sn-open .sn-bar1 { transform: translateY(6.6px) rotate(45deg) }\n.sn-open .sn-bar2 { opacity: 0 }\n.sn-open .sn-bar3 { transform: translateY(-6.6px) rotate(-45deg) }\n\n/* mobile sheet: always mounted, never conditionally rendered */\n.sn-sheet { position: fixed; left: 0; right: 0; top: 0; z-index: 998; padding: 92px 26px 34px; background: rgba(10,15,26,0.97); backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px); border-bottom: 1px solid rgba(190,222,255,0.12); transform: translateY(-101%); opacity: 0; visibility: hidden; transition: transform .34s cubic-bezier(.22,1,.36,1), opacity .22s ease, visibility 0s linear .34s; max-height: 100dvh; overflow-y: auto; -webkit-overflow-scrolling: touch }\n.sn-sheet-open { transform: translateY(0); opacity: 1; visibility: visible; transition: transform .34s cubic-bezier(.22,1,.36,1), opacity .22s ease, visibility 0s linear 0s }\n@media (min-width: 1130px) { .sn-sheet { display: none } }\n.sn-ml { display: block; padding: 15px 0; color: rgba(214,233,255,0.92); text-decoration: none; font-size: 17px; font-weight: 500; letter-spacing: -0.01em; border-bottom: 1px solid rgba(190,222,255,0.09) }\n.sn-ml:active { color: #FFB0CF }\n/* Sheet numbering is its own class so the desktop tighten-breakpoint cannot hide it:\n   in the sheet there is a whole column of room and the numbers are a wayfinding aid. */\n.sn-mn { font: inherit; font-variant-numeric: tabular-nums; font-style: normal; color: rgba(255,176,207,0.85); margin-right: 12px }\n.sn-sheet.sn-light .sn-mn { color: #FFB0CF }\n.sn-scrim { position: fixed; inset: 0; z-index: 997; background: rgba(4,8,16,0.5); opacity: 0; visibility: hidden; transition: opacity .28s ease, visibility 0s linear .28s }\n.sn-scrim-open { opacity: 1; visibility: visible; transition: opacity .28s ease, visibility 0s linear 0s }\n@media (min-width: 1130px) { .sn-scrim { display: none } }\n\n@media (prefers-reduced-motion: reduce) {\n  .sn-wm-sweep { display: none }\n  .sn-l::after, .sn-cta, .sn-bar, .sn-sheet, .sn-scrim { transition: none !important }\n}\n\n/* ---- light theme (2026-08 redesign): white glass bar for the white inner pages.\n   Scoped overrides only; the dark defaults above stay byte-identical for the homepage. */\n.sn-light .sn-l { color: #3D577A }\n.sn-light .sn-l:hover { color: #0A0F1A }\n.sn-light .sn-wm-base { color: #253851 }\n.sn-light .sn-wm-sweep { background-image: linear-gradient(100deg, transparent 40%, rgba(255,176,207,0.85) 50%, transparent 60%) }\n.sn-light .sn-bar { background: #253851 }\n.sn-light .sn-cta:focus-visible, .sn-light .sn-l:focus-visible, .sn-light .sn-burger:focus-visible { outline-color: #FFB0CF }\n.sn-sheet.sn-light { background: rgba(255,255,255,0.97); border-bottom: 1px solid rgba(37,56,81,0.12) }\n.sn-sheet.sn-light .sn-ml { color: #253851; border-bottom: 1px solid rgba(37,56,81,0.08) }\n.sn-sheet.sn-light .sn-ml:active { color: #FFB0CF }\n.sn-sheet.sn-light .sn-ml:focus-visible { outline-color: #FFB0CF }\n`;// Default logo; replace from the sidebar (\"Logo\") per instance, or change here for the whole site.\nconst LOGO=\"https://framerusercontent.com/images/i9NnvbfPS58I4E197oUCVdnKDo.png\";export default function SiteNav({solid=false,theme=\"dark\",logo=LOGO,logoOnLight=\"https://framerusercontent.com/images/hawVsxTO1ZBqqfwNYkMLWc4uybU.png\",logoColor=\"auto\",label1=\"Who We Serve\",label2=\"Why It Fails\",label3=\"How We Help\",label4=\"Why It Works\",label5=\"Start Here\",label6=\"Modernization Mindset\",label7=\"Workforce Development\",ctaLabel=\"Book R&D Assessment\",ctaShortLabel=\"R&D Assessment\",wordmark=\"Humanity Innovation Labs\",labelFont={},ctaFont={},wordmarkFont={}}){const links=LINKS.map(([t,href],i)=>[[label1,label2,label3,label4,label5,label6,label7][i]||t,href]);const[tight,setTight]=React.useState(false);const[open,setOpen]=React.useState(false);// Framer may store the enum by option value (\"light\") or option title (\"Light\").\nconst light=String(theme).toLowerCase()===\"light\";React.useEffect(()=>{const onScroll=()=>setTight(window.scrollY>24);window.addEventListener(\"scroll\",onScroll,{passive:true});onScroll();return()=>window.removeEventListener(\"scroll\",onScroll);},[]);// Close on Escape, and whenever the viewport grows past the mobile breakpoint,\n// so the sheet can never be left open and stranded on a desktop resize.\nReact.useEffect(()=>{const onKey=e=>{if(e.key===\"Escape\")setOpen(false);};const onResize=()=>{if(window.innerWidth>1129)setOpen(false);};window.addEventListener(\"keydown\",onKey);window.addEventListener(\"resize\",onResize);return()=>{window.removeEventListener(\"keydown\",onKey);window.removeEventListener(\"resize\",onResize);};},[]);// Lock background scroll while the sheet is open; always restore on unmount.\nReact.useEffect(()=>{if(!open)return;const previous=document.body.style.overflow;document.body.style.overflow=\"hidden\";return()=>{document.body.style.overflow=previous;};},[open]);/**\n     * Publish the bar's real height so scroll-margin-top is exact at every width and in\n     * both the loose and tight states. Measured from the element, never hardcoded: the\n     * padding animates on scroll, so a constant would be wrong for 300ms after every\n     * transition and permanently wrong at the widths where the wordmark drops out.\n     */const barRef=React.useRef(null);React.useEffect(()=>{const el=barRef.current;if(!el)return;const sync=()=>document.documentElement.style.setProperty(\"--sn-h\",el.offsetHeight+\"px\");sync();const ro=new ResizeObserver(sync);ro.observe(el);return()=>ro.disconnect();},[tight]);/**\n     * A hash that arrives with the DOCUMENT rather than from a click - following\n     * /#who-we-serve from /blog, or opening a shared link. The browser resolves that hash\n     * before layout settles and before --sn-h exists, so it lands in the wrong place and\n     * under the bar. Re-run it once the page is real.\n     *\n     * A RELOAD is different and must not do this. Because the nav writes the current\n     * section into the URL, refreshing after any nav click would drop the visitor halfway\n     * down the page - they asked for the home page and got the middle of it, with the hero\n     * never seen. Scroll restoration is taken off automatic for the same reason: the\n     * browser would otherwise put back an offset the visitor did not choose.\n     */React.useEffect(()=>{try{history.scrollRestoration=\"manual\";}catch{}const nav=performance.getEntriesByType(\"navigation\")[0];if(nav&&nav.type===\"reload\"){// strip the hash so a second refresh behaves identically to the first\ntry{history.replaceState(null,\"\",location.pathname+location.search);}catch{}window.scrollTo(0,0);return;}const id=window.location.hash.slice(1);if(!id){window.scrollTo(0,0);return;}let cancelled=false;// If the visitor has started scrolling for themselves, the deep link has served its\n// purpose and must let go. Without this, fonts.ready resolving late would yank the\n// page back to the anchor under someone already reading elsewhere.\nconst release=()=>{cancelled=true;};window.addEventListener(\"wheel\",release,{once:true,passive:true});window.addEventListener(\"touchmove\",release,{once:true,passive:true});window.addEventListener(\"keydown\",release,{once:true});const settle=()=>{if(cancelled)return;const t=visibleAnchor(id);if(t)t.scrollIntoView({behavior:\"auto\",block:\"start\"});};// two frames, then again after fonts: each of these moves layout under us\nrequestAnimationFrame(()=>requestAnimationFrame(settle));const fonts=document.fonts;if(fonts&&fonts.ready&&fonts.ready.then)fonts.ready.then(settle);return()=>{cancelled=true;window.removeEventListener(\"wheel\",release);window.removeEventListener(\"touchmove\",release);window.removeEventListener(\"keydown\",release);};},[]);/**\n     * You-are-here. Without it the menu is six links that never acknowledge the page,\n     * which is what makes a long single-page scroll feel unmoored.\n     *\n     * The band nearest the top WINS rather than the largest intersection: these sections\n     * are 1000-3000px tall, so on most viewports two are visible at once and an\n     * area-based rule flickers between them mid-scroll.\n     */const[active,setActive]=React.useState(\"\");React.useEffect(()=>{const ids=LINKS.map(([,h])=>h).filter(h=>h.indexOf(\"/#\")===0).map(h=>h.slice(2));const nodes=ids.map(visibleAnchor).filter(Boolean);if(!nodes.length)return;const pick=()=>{const line=(barRef.current&&barRef.current.offsetHeight||68)+24;let best=\"\",bestTop=-Infinity;for(const n of nodes){const top=n.getBoundingClientRect().top-line;// the last section whose top has passed the bar\nif(top<=0&&top>bestTop){bestTop=top;best=n.id;}}// past the final band nothing is current, rather than the last one sticking\nconst end=nodes[nodes.length-1];if(end.getBoundingClientRect().bottom<line)best=\"\";setActive(best);};pick();window.addEventListener(\"scroll\",pick,{passive:true});window.addEventListener(\"resize\",pick);return()=>{window.removeEventListener(\"scroll\",pick);window.removeEventListener(\"resize\",pick);};},[]);/**\n     * Same-page anchor clicks. CSS smooth scrolling alone would nearly do this, but three\n     * things need JS: the mobile sheet has to close and release the body scroll lock\n     * BEFORE the scroll starts, or the browser scrolls a locked document and nothing\n     * moves; the URL should update without a second native jump fighting the smooth one;\n     * and keyboard focus has to follow, or a keyboard user scrolls the page while their\n     * tab position stays behind in the nav.\n     */const onAnchor=React.useCallback(href=>e=>{const hash=href.indexOf(\"/#\")===0?href.slice(2):\"\";if(!hash){setOpen(false);return;}// These five bands live only on Home. On every other route, allow the real /#...\n    // navigation to occur even if Framer happens to retain a hidden homepage instance.\n    const onHome=window.location.pathname===\"/\"||window.location.pathname===\"\";if(!onHome){setOpen(false);return;}const target=visibleAnchor(hash);if(!target){setOpen(false);return;}e.preventDefault();setOpen(false);const go=()=>{const still=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;/* The bar SHRINKS ~14px once scrolled past 24px. Measuring it before the\n               scroll landed every anchor 14px low - the band's top rule peeked out. */const measured=barRef.current&&barRef.current.offsetHeight||68;const bar=window.scrollY<=24?measured-14:measured;/* Leo 2026-09-01: land the band's HEADING 24px under the bar, not the\n               section box - the bands carry 40-84px of internal top padding, which\n               plus a box-relative offset read as a big blank slice. */const head=target.querySelector(\".fhead, .wws-head\");const anchorTop=(head??target).getBoundingClientRect().top;/* Leo: tighter still - the heading block's own top rule tucks UNDER the bar\n               (the bar is near-opaque glass), so the kicker is the first visible thing. */const top=window.scrollY+anchorTop-bar+10;window.scrollTo({top:Math.max(0,top),behavior:still?\"auto\":\"smooth\"});// replaceState, NOT pushState. Pushing added a history entry per nav click, so\n    // five clicks meant five presses of Back before the visitor could leave the\n    // page. Replacing keeps the URL shareable without turning Back into a section\n    // stepper. Hash only, never the full href: a path is a same-document navigation\n    // the smooth scroll has to fight, and it throws outright on a file:// origin,\n    // which silently killed the focus call below it.\n    try{history.replaceState(null,\"\",\"#\"+hash);}catch{}// focus WITHOUT scrolling, so assistive tech follows the eye and the smooth\n    // scroll is not cut short by a second competing jump\n    const had=target.hasAttribute(\"tabindex\");if(!had)target.setAttribute(\"tabindex\",\"-1\");target.focus({preventScroll:true});if(!had){target.addEventListener(\"blur\",()=>target.removeAttribute(\"tabindex\"),{once:true});}};// one frame, so the sheet's scroll lock is lifted before the scroll is issued\n    requestAnimationFrame(go);},[]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:CSS}),/*#__PURE__*/_jsx(\"style\",{children:MOTION_CSS}),/*#__PURE__*/_jsx(\"div\",{ref:barRef,className:[open?\"sn-open\":\"\",light?\"sn-light\":\"\"].filter(Boolean).join(\" \")||undefined,style:{position:\"fixed\",top:0,left:0,right:0,zIndex:999,padding:tight?\"11px 26px\":\"18px 26px\",background:light?solid||tight||open?\"rgba(255,255,255,0.95)\":\"rgba(255,255,255,0.72)\":solid||tight||open?\"rgba(10,15,26,0.94)\":\"rgba(10,15,26,0.5)\",boxShadow:light?solid||tight?\"0 8px 24px -16px rgba(37,56,81,0.18)\":\"none\":solid?\"0 1px 24px -8px rgba(6,12,24,0.55)\":\"none\",backdropFilter:\"blur(18px)\",WebkitBackdropFilter:\"blur(18px)\",borderBottom:light?\"1px solid rgba(37,56,81,0.10)\":\"1px solid rgba(190,222,255,0.10)\",transition:\"padding .3s cubic-bezier(.22,1,.36,1), background .3s ease\",fontFamily:'\"Neue Montreal\", \"Neue Montreal Regular\", Inter, sans-serif'},children:/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:1520,margin:\"0 auto\",width:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:16},children:[/*#__PURE__*/_jsxs(\"a\",{href:\"/\",\"aria-label\":\"Humanity Innovation Labs, home\",style:{display:\"inline-flex\",alignItems:\"center\",gap:14,textDecoration:\"none\",flexShrink:0},children:[/*#__PURE__*/_jsx(\"img\",{src:light&&logoOnLight||logo||LOGO,alt:\"\",style:{height:46,width:\"auto\",display:\"block\",filter:logoColor===\"original\"||light&&logoOnLight?\"none\":light?\"brightness(0)\":\"brightness(0) invert(1)\",opacity:logoColor===\"original\"||light&&logoOnLight?1:light?.88:.96}}),/*#__PURE__*/_jsx(\"span\",{className:\"sn-wm\",\"aria-hidden\":\"true\",style:{width:1,height:26,background:light?\"rgba(37,56,81,0.20)\":\"rgba(190,222,255,0.20)\"}}),/*#__PURE__*/_jsxs(\"span\",{className:\"sn-wm sn-wm-wrap\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"sn-wm-txt sn-wm-base\",style:{...wordmarkFont},children:wordmark}),/*#__PURE__*/_jsx(\"span\",{className:\"sn-wm-txt sn-wm-sweep\",\"aria-hidden\":\"true\",style:{...wordmarkFont},children:wordmark})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"sn-desktop\",children:[links.map(([label,href],i)=>/*#__PURE__*/_jsxs(\"a\",{className:\"sn-l\",href:href,onClick:onAnchor(href),style:{...labelFont},\"aria-current\":href===\"/#\"+active?\"true\":undefined,children:[/*#__PURE__*/_jsx(\"i\",{className:\"sn-n\",\"aria-hidden\":\"true\",children:num(i)}),label]},href)),/*#__PURE__*/_jsxs(\"a\",{className:\"sn-cta\",href:\"/contact\",style:{padding:\"11px 18px\",color:\"#fff\",fontWeight:600,fontSize:LABEL_PX,fontFamily:MONO,letterSpacing:\".14em\",textTransform:\"uppercase\",textDecoration:\"none\",...ctaFont},children:[/*#__PURE__*/_jsxs(\"span\",{className:\"sn-cta-l\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"sn-cta-full\",children:ctaLabel}),/*#__PURE__*/_jsx(\"span\",{className:\"sn-cta-short\",children:ctaShortLabel})]}),/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",children:\"→\"})]})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"sn-burger\",\"aria-label\":open?\"Close menu\":\"Open menu\",\"aria-expanded\":open,\"aria-controls\":\"sn-mobile-menu\",onClick:()=>setOpen(v=>!v),children:/*#__PURE__*/_jsxs(\"span\",{\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"sn-bar sn-bar1\"}),/*#__PURE__*/_jsx(\"span\",{className:\"sn-bar sn-bar2\"}),/*#__PURE__*/_jsx(\"span\",{className:\"sn-bar sn-bar3\"})]})})]})}),/*#__PURE__*/_jsx(\"div\",{className:\"sn-scrim\"+(open?\" sn-scrim-open\":\"\"),\"aria-hidden\":\"true\",onClick:()=>setOpen(false)}),/*#__PURE__*/_jsxs(\"nav\",{id:\"sn-mobile-menu\",className:\"sn-sheet\"+(open?\" sn-sheet-open\":\"\")+(light?\" sn-light\":\"\"),\"aria-label\":\"Site menu\",\"aria-hidden\":!open,children:[links.map(([label,href],i)=>/*#__PURE__*/_jsxs(\"a\",{className:\"sn-ml\",href:href,tabIndex:open?0:-1,onClick:onAnchor(href),style:{...labelFont},\"aria-current\":href===\"/#\"+active?\"true\":undefined,children:[/*#__PURE__*/_jsx(\"i\",{className:\"sn-mn\",\"aria-hidden\":\"true\",children:num(i)}),label]},href)),/*#__PURE__*/_jsx(\"a\",{className:\"sn-cta\",href:\"/contact\",tabIndex:open?0:-1,onClick:()=>setOpen(false),style:{justifyContent:\"center\",marginTop:24,padding:\"16px 20px\",color:\"#fff\",fontWeight:600,fontSize:13,fontFamily:MONO,letterSpacing:\".14em\",textTransform:\"uppercase\",textDecoration:\"none\",...ctaFont},children:/*#__PURE__*/_jsx(\"span\",{className:\"sn-cta-l\",children:ctaLabel})})]})]});}addPropertyControls(SiteNav,{logo:{type:ControlType.Image,title:\"Logo\"},logoOnLight:{type:ControlType.Image,title:\"Logo (light pages)\"},logoColor:{type:ControlType.Enum,title:\"Logo colour\",options:[\"auto\",\"original\"],optionTitles:[\"Recolour to fit background\",\"As uploaded\"],defaultValue:\"auto\"},// EDITABILITY RULE (CLAUDE.md 2026-08-31): labels, CTA and typography editable from\n// the sidebar. Defaults mirror the shipped design. MEASURED CONSTRAINT (2026-08-31):\n// at 1440-1559px the row fits label size 11px only; 12.5px fits at 1680+, 14px at\n// 1920+. Raising the size here without checking those widths overflows the bar.\nlabel1:{type:ControlType.String,title:\"Item 1\",defaultValue:\"Who We Serve\"},label2:{type:ControlType.String,title:\"Item 2\",defaultValue:\"Why It Fails\"},label3:{type:ControlType.String,title:\"Item 3\",defaultValue:\"How We Help\"},label4:{type:ControlType.String,title:\"Item 4\",defaultValue:\"Why It Works\"},label5:{type:ControlType.String,title:\"Item 5\",defaultValue:\"Start Here\"},label6:{type:ControlType.String,title:\"Item 6\",defaultValue:\"Modernization Mindset\"},label7:{type:ControlType.String,title:\"Item 7\",defaultValue:\"Workforce Development\"},ctaLabel:{type:ControlType.String,title:\"CTA label\",defaultValue:\"Book R&D Assessment\"},ctaShortLabel:{type:ControlType.String,title:\"CTA label (narrow)\",defaultValue:\"R&D Assessment\"},wordmark:{type:ControlType.String,title:\"Wordmark\",defaultValue:\"Humanity Innovation Labs\"},labelFont:{type:ControlType.Font,title:\"Item font\",controls:\"extended\",defaultValue:{fontFamily:'\"Hanken Grotesk\", Inter, sans-serif',fontWeight:600}},ctaFont:{type:ControlType.Font,title:\"CTA font\",controls:\"extended\",defaultValue:{fontFamily:'ui-monospace, \"Cascadia Mono\", \"SF Mono\", Menlo, Consolas, monospace',fontWeight:600}},wordmarkFont:{type:ControlType.Font,title:\"Wordmark font\",controls:\"extended\",defaultValue:{fontFamily:'\"Hanken Grotesk\", Inter, sans-serif',fontWeight:600}},solid:{type:ControlType.Boolean,title:\"Solid\",defaultValue:false,enabledTitle:\"Opaque\",disabledTitle:\"Glass\"},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"dark\",\"light\"],optionTitles:[\"Dark\",\"Light\"],defaultValue:\"dark\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SiteNav\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SiteNav.map"],"mappings":"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"}