{"version":3,"file":"KdProcess.CeqiEp2O.mjs","names":["useState","useRef","c","useMemo","p","_Fragment","useEffect","useLayoutEffect"],"sources":["https:/framerusercontent.com/modules/GJO1D1rXbbAKq44vz5km/ZLgvf8BlnZLbcktsgXFN/KdProcess.js"],"sourcesContent":["// ===== KINDLING shared scaffold (design language «THE CHEQUE BOOK»: a bone page (#EDE8DC) with two ink bands (#101210) and one yellow band, photographs, the paper cheque and the six-page memo; ONE accent = SPARK YELLOW #FFD12E (--kd-brass) as a FILL under ink text (button faces, chips, bars) and as text / marks on ink only — never yellow text on bone (--kd-acc = deep ochre there, AA); Hanken Grotesk 600 display (-.045em) with Newsreader italic accent words (Head), Hanken Grotesk body, IBM Plex Mono labels; ROUND: buttons and chips are pills (the solid button has a round ink arrow seat), picture frames 20, plates 8) (inlined by mk.py; each Framer code file must be self-contained) =====\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useLayoutEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";const FONTS=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=Newsreader:ital,opsz,wght@1,6..72,400;1,6..72,500&family=IBM+Plex+Mono:wght@400;500&display=swap\";// Token-safe alpha: Styles-bound colours arrive as var(--token-…) so hex-alpha breaks; color-mix keeps a palette flip working. Never 0% (hue drops) — floor at 0.4%.\nconst A=(c,a)=>`color-mix(in srgb, ${c} ${Math.max(.4,Math.round(a*1e3)/10)}%, transparent)`;const MIX=(a,b,t)=>`color-mix(in srgb, ${a} ${Math.round((1-t)*100)}%, ${b})`;const srcOf=(v,fallback)=>v&&typeof v===\"object\"&&v.src?String(v.src).split(\"?\")[0]:typeof v===\"string\"&&v.trim()?v.trim().split(\"?\")[0]:fallback;const T=(s,fb)=>s&&s.trim()?s.trim():fb;// ink or white text on a CMS brand colour (luminance test; the brand colour is data, not a palette token)\nconst onBrand=hex=>{const raw=String(hex||\"\");const q=raw.match(/rgba?\\(\\s*(\\d+)[\\s,]+(\\d+)[\\s,]+(\\d+)/i);const h6=raw.match(/#([0-9a-f]{6})\\b/i);const m=q?[0,q[1],q[2],q[3]]:h6?[0,h6[1].slice(0,2),h6[1].slice(2,4),h6[1].slice(4,6)]:raw.replace(\"#\",\"\").match(/^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(!m)return\"var(--kd-cloud)\";const[r,g,b]=[m[1],m[2],m[3]].map(x=>{const v=parseInt(x,q?10:16)/255;return v<=.03928?v/12.92:Math.pow((v+.055)/1.055,2.4);});const L=.2126*r+.7152*g+.0722*b;return L>.18?\"var(--kd-ink)\":\"var(--kd-cloud)\";};const cleanTel=s=>s.replace(/[^\\d+]/g,\"\");// Premium layout band (measured 09-13): container 1340 @1440 / 1520 @1920, body 16, button label 12–13.\nconst MAXW=\"clamp(1280px, 92vw, 1520px)\";// Responsive delivery: Framer's resizer serves any upload at ?scale-down-to=N (longest side). The query is stripped first so one file never downloads twice.\n// Responsive delivery. Framer uploads: the resizer serves ?scale-down-to=N. Unsplash stand-ins: ?w=N. The src is already the smallest width that covers the slot (a 52px avatar never pulls a 1600px photo), so a big image is never decoded for a small box — decode is what stalls scrolling.\nconst RS_W=[160,320,480,800,1200,1600];const rsTarget=sizes=>{const t=String(sizes||\"\").trim().split(\",\").pop()||\"\";const px=t.match(/(\\d+(?:\\.\\d+)?)px/);const vw=t.match(/(\\d+(?:\\.\\d+)?)vw/);const want=px?parseFloat(px[1])*2:vw?parseFloat(vw[1])/100*1600*1.25:1600;return RS_W.find(w=>w>=want)||1600;};// tall = height / width of a PORTRAIT picture (9:16 → 1.78). Framer's scale-down-to caps the LONG edge, so a 512 step of a 9:16 file is only 288 px wide: the w descriptors are divided by tall so the browser picks a step that is really wide enough.\n// Framer merges the `sizes` of the three breakpoint copies by prefixing each with its own media query; a sizes string that already holds media queries comes out broken\n// (\"(min-width: 1200px) (max-width: 1099px) 100vw, 45vw, …\") and the browser falls back to the LAST value on every screen → phones downloaded the 512 px variant. So media queries are rewritten as one length:\n// \"(max-width: 1099px) 100vw, 45vw\" → \"max(45vw, min(100vw, calc((1100px - 100vw) * 9999)))\". Same slot at every width (checked in Chromium + WebKit); anything it cannot parse is passed through.\nconst rsSizes=sz=>{const parts=String(sz||\"\").split(\",\").map(p=>p.trim());if(parts.length<2)return sz;const steps=[];for(const p of parts.slice(0,-1)){const m=p.match(/^\\(max-width:\\s*(\\d+)px\\)\\s*(\\d+)vw$/);if(!m)return sz;steps.push([+m[1],+m[2]]);}const zm=parts[parts.length-1].match(/^(\\d+)vw$/);if(!zm)return sz;const z=+zm[1];if(steps.length===1&&steps[0][1]<z)return`min(${z}vw, max(${steps[0][1]}vw, calc((100vw - ${steps[0][0]}px) * 9999)))`;for(let i=0;i<steps.length;i++)if(steps[i][1]<(i+1<steps.length?steps[i+1][1]:z))return sz;return`max(${[`${z}vw`].concat(steps.map(([b,x])=>`min(${x}vw, calc((${b+1}px - 100vw) * 9999))`)).join(\", \")})`;};const RS=(u,sizes,tall=1)=>{const s=String(u||\"\");const b=s.split(\"?\")[0];const tl=Math.max(1,tall||1);if(/framerusercontent\\.com\\/images\\//.test(s)){const w=rsTarget(sizes)*tl;const d=w<=512?512:w<=1024?1024:2048;const dw=n=>Math.round(n/tl);return{src:`${b}?scale-down-to=${d}`,srcSet:`${b}?scale-down-to=512 ${dw(512)}w, ${b}?scale-down-to=1024 ${dw(1024)}w, ${b}?scale-down-to=2048 ${dw(2048)}w`,sizes:rsSizes(sizes)};}if(/images\\.unsplash\\.com\\//.test(s)){const w=rsTarget(sizes);const q=n=>`${b}?w=${n}&q=70&fm=jpg&auto=format`;return{src:q(w),srcSet:RS_W.filter(n=>n<=Math.max(w*2,480)).map(n=>`${q(n)} ${n}w`).join(\", \"),sizes};}// Wikimedia Commons stand-ins from media/standins.json (thumb urls …/1280px-Name.jpg): only the standard thumb steps exist. A 1920px url (the hero photo) is passed through untouched.\nconst wm=s.match(/wikimedia\\.org\\/.*\\/(\\d+)px-/);if(wm&&+wm[1]<=1280){const w=rsTarget(sizes);const q=n=>b.replace(/\\/\\d+px-/,`/${n}px-`);const st=[500,960,1280].filter(n=>n<=+wm[1]);return{src:q(st.find(n=>n>=w)||st[st.length-1]),srcSet:st.map(n=>`${q(n)} ${n}w`).join(\", \"),sizes};}return{src:s};};// A Framer Font control stores a selector (GF;Family-700), not a CSS family — derive one, reject anything with ';'\nconst famOf=f=>{if(!f)return\"\";if(typeof f===\"string\")return f.includes(\";\")?\"\":f;if(f.fontFamily&&!String(f.fontFamily).includes(\";\"))return String(f.fontFamily);const sel=String(f.fontSelector||\"\");if(!sel)return\"\";const n=sel.split(\";\").pop()||\"\";return n.replace(/-(regular|italic|bold|\\d{3}(italic)?)$/i,\"\").replace(/-/g,\" \");};const wOf=(f,fb)=>{if(!f)return fb;if(f.fontWeight)return Number(f.fontWeight)||fb;const m=String(f.fontSelector||\"\").match(/-(\\d{3})/);return m?Number(m[1]):fb;};// famCss: Framer's Font `fontFamily` is ALREADY a stack — never wrap it in quotes (one fake family → fallback renders). A bare name gets quoted.\nconst famCss=f=>{const fa=famOf(f).replace(/\"/g,\"'\").trim();if(!fa)return\"\";return fa.includes(\",\")||fa.startsWith(\"'\")?fa:`'${fa}'`;};const stack=(custom,f,fb,tail)=>{const fam=custom?famCss(f):\"\";return`${fam?`${fam}, `:\"\"}${fb}, ${tail}`;};function useFonts(){useEffect(()=>{if(typeof document===\"undefined\"||document.getElementById(\"kd-fonts\"))return;const l=document.createElement(\"link\");l.id=\"kd-fonts\";l.rel=\"stylesheet\";l.href=FONTS;document.head.appendChild(l);},[]);}// live = client after hydration and not on the canvas. SSR and the first client render share the same markup.\n// TRUE on the Framer canvas AND in its export / thumbnail / screenshot renderers (anything that is not the running preview): no scroll and no hydration there, so every reveal / pinned stage must draw its FINAL state or the editor shows empty blocks.\nfunction useStill(){const isStatic=useIsStaticRenderer();let t=null;try{t=RenderTarget.current();}catch(e){}return isStatic||t!==null&&t!==RenderTarget.preview;}function useLive(){const isStatic=useIsStaticRenderer();const[live,setLive]=useState(false);useEffect(()=>{if(!isStatic&&RenderTarget.current()!==RenderTarget.canvas&&typeof window!==\"undefined\")setLive(true);},[isStatic]);return live;}// Width/height of the root + viewport height. SSR starts from the breakpoint hint (Framer renders the Tablet/Phone copies with the same code and no width).\nfunction useSize(root,hint){const ov=String(hint||\"\").toLowerCase();const[w,setW]=useState(ov===\"phone\"?390:ov===\"tablet\"?810:1440),[vh,setVh]=useState(ov===\"phone\"?844:ov===\"tablet\"?1080:900);useLayoutEffect(()=>{const el=root.current;if(!el)return;const ro=new ResizeObserver(([e])=>{const x=Math.round((e.borderBoxSize&&e.borderBoxSize[0]?e.borderBoxSize[0].inlineSize:0)||el.offsetWidth);if(x>0)setW(x);});ro.observe(el);const vv=()=>setVh(window.innerHeight);vv();const read=()=>{const x=Math.round(el.offsetWidth);if(x>0)setW(x);};const t1=window.setTimeout(read,150),t2=window.setTimeout(read,700),t3=window.setTimeout(read,1600);window.addEventListener(\"resize\",vv);window.addEventListener(\"load\",read);return()=>{ro.disconnect();window.clearTimeout(t1);window.clearTimeout(t2);window.clearTimeout(t3);window.removeEventListener(\"resize\",vv);window.removeEventListener(\"load\",read);};},[]);return{w,vh};}const useReduced=()=>{const[rm,setRm]=useState(false);useLayoutEffect(()=>{setRm(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches);},[]);return rm;};// One shared rAF for every section. Each frame runs ALL reads first (layout reads: getBoundingClientRect, offsetHeight), then ALL writes (CSS vars, transforms).\n// Interleaving read → write → read made the browser recalc the whole page's style once per section per frame (layout thrashing: 20+ recalcs a frame).\nfunction onTick(fn,read,pre){if(typeof window===\"undefined\")return()=>{};const w=window;if(!w.__ovTick){w.__ovTick={pre:new Set,subs:new Set,reads:new Set,raf:0};const loop=t=>{const T=w.__ovTick;T.pre.forEach(r=>r(t));T.reads.forEach(r=>r(t));T.subs.forEach(s=>s(t));T.raf=requestAnimationFrame(loop);};w.__ovTick.raf=requestAnimationFrame(loop);}w.__ovTick.subs.add(fn);if(read)w.__ovTick.reads.add(read);if(pre)w.__ovTick.pre.add(pre);return()=>{w.__ovTick.subs.delete(fn);if(read)w.__ovTick.reads.delete(read);if(pre)w.__ovTick.pre.delete(pre);};}const clamp01=v=>Math.min(1,Math.max(0,v));const easeIO=t=>{const x=clamp01(t);return x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2;};// KINDLING tokens (the 8 names are shared with every kit, only the values change): Paper(bone) #EDE8DC · Ink #101210 · Accent(brass) = SPARK YELLOW #FFD12E (a FILL under ink text; text only on ink) · Signal(pine) = deep ochre #7A5C00 (bars, dots, small fills on bone; the accent text on bone is mixed from it) · Line(fog) #D6D0C2 · Muted(stone) #63655E · White(cloud) #FBFAF5 · Dark(night) #101210 (the ink bands).\nconst DEF={bone:\"#EDE8DC\",ink:\"#101210\",brass:\"#FFD12E\",pine:\"#7A5C00\",fog:\"#D6D0C2\",stone:\"#63655E\",cloud:\"#FBFAF5\",night:\"#101210\"};const colorsOf=p=>({bone:p.bone||DEF.bone,ink:p.ink||DEF.ink,brass:p.brass||DEF.brass,pine:p.pine||DEF.pine,fog:p.fog||DEF.fog,stone:p.stone||DEF.stone,cloud:p.cloud||DEF.cloud,night:p.night||DEF.night});// a Style-bound colour arrives as var(--token-…, #hex): let the browser resolve it to r,g,b for canvas drawing\nconst cssRgb=(el,col,fb)=>{if(!el||typeof window===\"undefined\")return fb;const p=document.createElement(\"i\");p.style.display=\"none\";p.style.color=col;el.appendChild(p);const v=getComputedStyle(p).color;p.remove();const m=v.match(/(\\d+(?:\\.\\d+)?),\\s*(\\d+(?:\\.\\d+)?),\\s*(\\d+(?:\\.\\d+)?)/);return m?`${Math.round(+m[1])},${Math.round(+m[2])},${Math.round(+m[3])}`:fb;};const cssVars=c=>({\"--kd-bone\":c.bone,\"--kd-ink\":c.ink,\"--kd-brass\":c.brass,\"--kd-pine\":c.pine,\"--kd-fog\":c.fog,\"--kd-stone\":c.stone,\"--kd-cloud\":c.cloud,\"--kd-night\":c.night});const COLOR_CONTROLS={bone:{type:ControlType.Color,title:\"Paper\",defaultValue:DEF.bone},ink:{type:ControlType.Color,title:\"Ink\",defaultValue:DEF.ink},brass:{type:ControlType.Color,title:\"Accent\",description:\"Spark yellow: button faces, chips and bars under ink text; as text only on the ink bands. Never small yellow text on bone\",defaultValue:DEF.brass},pine:{type:ControlType.Color,title:\"Signal\",description:\"Deep ochre: bars, dots and small fills on bone; the accent text on bone is mixed from it\",defaultValue:DEF.pine},fog:{type:ControlType.Color,title:\"Line\",defaultValue:DEF.fog},stone:{type:ControlType.Color,title:\"Muted\",defaultValue:DEF.stone},cloud:{type:ControlType.Color,title:\"White\",description:\"Plates, chips and the type on the ink bands\",defaultValue:DEF.cloud},night:{type:ControlType.Color,title:\"Dark\",defaultValue:DEF.night}};// ---- Fonts: Custom Fonts toggle → Font controls; off = Hanken Grotesk 600 / Hanken Grotesk / IBM Plex Mono (the italic accent words are Newsreader, --kd-font-a) ----\nconst FONT_CONTROLS={customFonts:{type:ControlType.Boolean,title:\"Custom Fonts\",description:\"Off = the site fonts (set once on the Header in the Site Layout). On = different fonts for this section only\",defaultValue:false},displayFont:{type:ControlType.Font,title:\"Display Font\",defaultFontType:\"sans-serif\",hidden:p=>!p.customFonts},bodyFont:{type:ControlType.Font,title:\"Body Font\",defaultFontType:\"sans-serif\",hidden:p=>!p.customFonts},monoFont:{type:ControlType.Font,title:\"Mono Font\",defaultFontType:\"monospace\",hidden:p=>!p.customFonts}};const NUMF=\"var(--kd-font-m, 'IBM Plex Mono'), ui-monospace, Menlo, monospace\";// Site-wide fonts: the Header (Site Layout, every page) writes --kd-font-d/b/m (+ weights) on :root when its Custom Fonts is on. A section uses them unless its own Custom Fonts is on.\nconst siteFontCss=p=>{if(!p||!p.customFonts)return\"\";const v=[];const put=(k,f,w)=>{const fam=famCss(f);if(fam){v.push(`--kd-font-${k}:${fam}`);v.push(`--kd-font-${k}w:${wOf(f,w)}`);}};put(\"d\",p.displayFont,400);put(\"b\",p.bodyFont,400);put(\"m\",p.monoFont,400);put(\"a\",p.accentFont,400);return v.length?`:root{${v.join(\";\")}}`:\"\";};function fontsOf(p){const on=!!p.customFonts;const D={fontFamily:stack(on,p.displayFont,\"var(--kd-font-d, 'Hanken Grotesk')\",\"'Helvetica Neue', Arial, sans-serif\"),fontWeight:on?wOf(p.displayFont,600):\"var(--kd-font-dw, 600)\",fontStyle:on&&p.displayFont&&p.displayFont.fontStyle?p.displayFont.fontStyle:\"normal\"};const B={fontFamily:stack(on,p.bodyFont,\"var(--kd-font-b, 'Hanken Grotesk')\",\"system-ui, -apple-system, Arial, sans-serif\"),fontWeight:on?wOf(p.bodyFont,400):\"var(--kd-font-bw, 400)\"};const M={fontFamily:stack(on,p.monoFont,\"var(--kd-font-m, 'IBM Plex Mono')\",\"ui-monospace, 'SF Mono', Menlo, monospace\"),fontWeight:on?wOf(p.monoFont,500):\"var(--kd-font-mw, 500)\"};return{D,B,M};}const BP_CONTROL={bpHint:{type:ControlType.Enum,title:\"Breakpoint Hint\",description:\"Set per breakpoint copy so the server render starts at the right width\",options:[\"auto\",\"desktop\",\"tablet\",\"phone\"],optionTitles:[\"Auto\",\"Desktop\",\"Tablet\",\"Phone\"],defaultValue:\"auto\",hidden:()=>true}};// In-page CTA jumps (\"#demo\", \"/#demo\"): scroll to the section when it is on this page, otherwise go to it on the home page.\nfunction jumpTo(e,href){try{const m=String(href||\"\").match(/^\\/?#([\\w-]+)$/);if(!m)return;const el=document.getElementById(m[1]);if(el){e.preventDefault();const W=window;const L=W.__ltLenis||W.__vcLenis||W.lenis;if(L&&L.scrollTo)L.scrollTo(el,{offset:-20});else el.scrollIntoView({behavior:\"smooth\",block:\"start\"});try{history.replaceState(null,\"\",\"#\"+m[1]);}catch(x){}}else if(href.startsWith(\"#\")){e.preventDefault();window.location.href=\"/\"+href;}}catch(x){}}// display text (section headlines, card h3): Hanken Grotesk 600, tight (-.045em), no font-stretch. Head (.kd-hd) sets its *starred* words in Newsreader italic; a body that writes its own h3 uses that stack itself. With a section's Custom Fonts on, the picked font is used as is.\nconst HD=D=>({...D,letterSpacing:\"-.045em\"});// numbers in display type keep their columns (counters never jiggle)\nconst NUM={fontVariantNumeric:\"tabular-nums lining-nums\"};// ---- Button system: PILLS (radius 999, 56 px high; quiet = 46 px), the same two the hero draws (.kdh-btn-p / .kdh-btn-g).\n// kinds: solid = the PRIMARY, the same on bone and on ink: a YELLOW face (--kd-brass) + ink label with a ROUND INK ARROW SEAT (a 40 px circle, --kd-ink) at the right holding a yellow arrow; on hover / focus the seat floods the whole pill, the label turns --kd-cloud and the arrow stays yellow (on ink grounds a 1.5 px yellow edge keeps the flooded pill off the band) · ghost = on bone a 1.5 px ink outline that fills ink (light label); on ink (.kd-dark / .kd-dk) a glass pill (ink veil + blur + 1 px light outline) that fills --kd-cloud (ink label); with `arrow` it gets a yellow seat + ink arrow that floods yellow · quiet = a small ghost pill (46 px) · ink = alias of solid.\n// ON A YELLOW GROUND (the yellow band, a yellow plate): put class `kd-ony` on any ancestor of the button (or pass className=\"kd-ony\" to Btn itself). solid then turns over: INK face + --kd-cloud label, a YELLOW seat with an ink arrow; on hover / focus the seat floods yellow, the label turns ink and a 1.5 px ink edge keeps the pill off the yellow ground. ghost / quiet on `kd-ony` = the bone look (ink outline that fills ink); with `arrow` an ink seat + yellow arrow that floods ink.\n// Defaults: solid → arrow · ghost / quiet → no arrow · NO lamp dot unless lamp is passed. The arrow points up-right and turns right on hover (as in the hero). `sub` = a small second line above the label. Without href (or as=\"button\") it renders a <button>. Never restyle .kd-btn in a body: pick a kind.\nconst BtnArrow=()=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.4\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14M13 5l7 7-7 7\"})});const Btn=({href,label,kind=\"solid\",arrow,lamp,style,className,onClick,ariaLabel,cur,sub,as,state})=>{const kd=kind===\"ink\"?\"solid\":kind;const ar=arrow===undefined?kd===\"solid\":arrow;const lp=!!lamp;const inner=/*#__PURE__*/_jsxs(\"span\",{className:\"kd-btn-face\",children:[lp&&/*#__PURE__*/_jsx(\"i\",{className:\"kd-btn-lamp\",\"aria-hidden\":true}),/*#__PURE__*/_jsxs(\"span\",{className:\"kd-btn-l\",children:[sub?/*#__PURE__*/_jsx(\"span\",{className:\"kd-sub\",children:sub}):null,/*#__PURE__*/_jsx(\"span\",{className:\"kd-mark\",children:label})]}),ar&&/*#__PURE__*/_jsx(\"span\",{className:\"kd-btn-a\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(BtnArrow,{})})]});const cls=`kd-btn kd-${kd}${ar?\" kd-has-a\":\"\"}${sub?\" kd-two\":\"\"}${state===\"ok\"?\" is-ok\":\"\"}${className?\" \"+className:\"\"}`;if(as===\"button\"||!href)return /*#__PURE__*/_jsx(\"button\",{type:onClick?\"button\":\"submit\",className:cls,\"data-cur\":cur||\"go\",onClick:onClick,\"aria-label\":ariaLabel,style:style,children:inner});return /*#__PURE__*/_jsx(\"a\",{className:cls,\"data-cur\":cur||\"go\",href:href,target:/^https?:\\/\\//.test(href||\"\")?\"_blank\":undefined,rel:/^https?:\\/\\//.test(href||\"\")?\"noopener\":undefined,onClick:onClick||(e=>jumpTo(e,href)),\"aria-label\":ariaLabel,style:style,children:inner});};function useNearFocus(root,live){useEffect(()=>{if(!live||!root.current)return;const el=root.current;const f=e=>{const t=e.target;const sc=t.closest?.(\".kd-inring\");if(!sc)return;try{t.scrollIntoView({block:\"nearest\",inline:\"nearest\"});}catch(x){}};el.addEventListener(\"focusin\",f);return()=>el.removeEventListener(\"focusin\",f);},[live]);}// Roll — a rolling mono number: every digit is a 0–9 column that slides to its value; separators stay put. rm = no transition.\nconst Roll=({text,rm=false,cls})=>/*#__PURE__*/_jsx(\"span\",{className:`kd-roll${rm?\" is-rm\":\"\"}${cls?\" \"+cls:\"\"}`,\"aria-hidden\":true,children:String(text).split(\"\").map((ch,i)=>/\\d/.test(ch)?/*#__PURE__*/_jsx(\"span\",{className:\"kd-dg\",children:/*#__PURE__*/_jsx(\"span\",{className:\"kd-dg-c\",style:{[\"--d\"]:+ch},children:[0,1,2,3,4,5,6,7,8,9].map(d=>/*#__PURE__*/_jsx(\"i\",{children:d},d))})},i):/*#__PURE__*/_jsx(\"span\",{className:\"kd-sep\",children:ch},i))});const Count=({to,on,rm=false,ms=1400,cls,style})=>{const v=useCount(to,on,rm,ms);return /*#__PURE__*/_jsx(\"span\",{className:`kd-count kd-num${cls?\" \"+cls:\"\"}`,style:style,\"aria-label\":String(to||\"\"),children:/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,children:v})});};// Md — mini markdown for CMS bodies: blank line = paragraph, \"## \" = h3, \"- \" = list item, \"> \" = quote, **bold**. Never dangerouslySetInnerHTML.\nconst mdInline=t=>String(t).split(/\\*\\*([^*]+)\\*\\*/g).map((x,i)=>i%2?/*#__PURE__*/_jsx(\"strong\",{children:x},i):x);const Md=({text,D,cls})=>{const lines=String(text||\"\").split(/\\n+/).map(l=>l.trim()).filter(Boolean);const out=[];let list=[];const flush=()=>{if(list.length){out.push(/*#__PURE__*/_jsx(\"ul\",{children:list.map((x,i)=>/*#__PURE__*/_jsx(\"li\",{children:mdInline(x)},i))},\"u\"+out.length));list=[];}};lines.forEach(l=>{if(l.startsWith(\"- \")){list.push(l.slice(2));return;}flush();if(l.startsWith(\"## \"))out.push(/*#__PURE__*/_jsx(\"h3\",{style:D?HD(D):undefined,children:l.slice(3)},out.length));else if(l.startsWith(\"> \"))out.push(/*#__PURE__*/_jsx(\"blockquote\",{children:mdInline(l.slice(2))},out.length));else out.push(/*#__PURE__*/_jsx(\"p\",{children:mdInline(l)},out.length));});flush();return /*#__PURE__*/_jsx(\"div\",{className:`kd-md${cls?\" \"+cls:\"\"}`,children:out});};const Rule=({on,dir=\"x\",delay=0,rm=false,style,cls})=>/*#__PURE__*/_jsx(\"i\",{className:`kd-rule-${dir}${on?\" is-on\":\"\"}${rm?\" is-rm\":\"\"}${cls?\" \"+cls:\"\"}`,style:{[\"--dl\"]:`${delay}ms`,...style||{}},\"aria-hidden\":true});const IcoArrow=({s=15})=>/*#__PURE__*/_jsx(\"svg\",{width:s,height:s,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14M13 5l7 7-7 7\"})});const IcoCheck=({s=12})=>/*#__PURE__*/_jsx(\"svg\",{width:s,height:s,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"3.2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12.5l4.5 4.5L19 7.5\"})});const CSS_BASE=`\n:where(.mw){position:relative;z-index:10} .mw,.mw *{box-sizing:border-box;min-width:0} .kd-sr{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;padding:0!important;margin:-1px!important;border:0!important} :where(.mw) a{color:inherit} html,body{overflow-x:clip}\n/* focus: a 3px ink ring with a light band (reads on bone, on plates and over a picture); inside ink boxes (.kd-dark / .kd-dk) the ring is white */\n:where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex=\"-1\"]),[role=\"button\"]):focus-visible{outline:3px solid var(--kd-ink,#101210)!important;outline-offset:2px!important;box-shadow:0 0 0 2px var(--kd-cloud,#FBFAF5)!important}\n:where(.kd-dark,.kd-dk) :where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex=\"-1\"])):focus-visible{outline-color:var(--kd-cloud,#FBFAF5)!important;box-shadow:0 0 0 2px var(--kd-night,#101210)!important}\n:where(.kd-inring) :where(a[href],button,input,summary,[tabindex]):focus-visible,:where(a[href],button,input,summary,[tabindex]).kd-inring:focus-visible{outline:3px solid var(--kd-ink,#101210)!important;outline-offset:-3px!important;box-shadow:inset 0 0 0 5px var(--kd-cloud,#FBFAF5)!important}\n:where(.mw) :focus-visible{outline:3px solid var(--kd-ink,#101210);outline-offset:2px}\n/* Stage 7: a control that takes focus never lands under the fixed header */\n:where(.mw) :where(a[href],button,input,select,textarea,summary,[tabindex]){scroll-margin-top:116px}\n/* TEXT-SAFE values per ground. --kd-mut = muted text (AA on bone and deeper bone). --kd-acc = the accent as TEXT: on bone DEEP OCHRE = pine 88 % + ink (#6D530C: 5.6:1 on bone #EDE8DC, 6.6 on plates), on ink yellow mixed with white. --kd-dot = small marks (dots, rings, quote rules): deep ochre on bone, yellow on ink. The raw --kd-brass (SPARK YELLOW #FFD12E) is a FILL under ink text (13:1: faces, chips, bars) and text / marks on INK only (13:1); never text on bone (1.2:1); --kd-pine (#7A5C00) is for bars, dots and small fills on bone. */\n.mw{--kd-bone2:color-mix(in srgb,var(--kd-bone) 90%,var(--kd-stone));--kd-mut:color-mix(in srgb,var(--kd-stone) 62%,var(--kd-ink));--kd-acc:color-mix(in srgb,var(--kd-pine) 88%,var(--kd-ink));--kd-ok:var(--kd-acc);--kd-dot:var(--kd-pine);--kd-hair:color-mix(in srgb,var(--kd-ink) 13%,transparent);--kd-hair2:color-mix(in srgb,var(--kd-ink) 24%,transparent)}\n.kd-dark,.mw.kd-dark,.mw .kd-dk{--kd-mut:color-mix(in srgb,var(--kd-stone) 36%,var(--kd-cloud));--kd-acc:color-mix(in srgb,var(--kd-brass) 78%,var(--kd-cloud));--kd-ok:color-mix(in srgb,var(--kd-brass) 70%,var(--kd-cloud));--kd-dot:var(--kd-brass);--kd-hair:color-mix(in srgb,var(--kd-cloud) 16%,transparent);--kd-hair2:color-mix(in srgb,var(--kd-cloud) 30%,transparent)}\n.mw.kd-dark .kd-lt,.mw .kd-dk .kd-lt{--kd-mut:color-mix(in srgb,var(--kd-stone) 62%,var(--kd-ink));--kd-acc:color-mix(in srgb,var(--kd-pine) 88%,var(--kd-ink));--kd-ok:var(--kd-acc);--kd-dot:var(--kd-pine);--kd-hair:color-mix(in srgb,var(--kd-ink) 13%,transparent);--kd-hair2:color-mix(in srgb,var(--kd-ink) 24%,transparent);color:var(--kd-ink)}\n/* section grounds: bone (default, --kd-bone, the whole page) \\xb7 kd-paper2 = deeper bone (--kd-bone2, a breath) \\xb7 kd-dark = INK (--kd-night: the two ink bands, the footer). A yellow band sets its own ground (--kd-brass) and puts .kd-ony on it for the buttons. */\n.kd-sec{background:var(--kd-bone);color:var(--kd-ink)} .kd-sec.kd-paper2{background:var(--kd-bone2)} .kd-sec.kd-dark{background:var(--kd-night);color:var(--kd-cloud)}\n/* ---- Buttons: PILLS, radius 999, 56px high, label 14.5px / 600 (quiet 46px, 13px) = the hero's .kdh-btn-p / .kdh-btn-g. Colours: --kf face \\xb7 --kl label \\xb7 --ks the arrow seat (it floods the pill on hover) \\xb7 --ka arrow \\xb7 --klh label on hover \\xb7 --kah arrow on hover \\xb7 --kh the fill on hover when there is no seat \\xb7 --kr / --krh edge / shadow. */\n.kd-btn{position:relative;display:inline-flex;height:56px;padding:0;border:0;border-radius:999px;background:none;text-decoration:none;white-space:nowrap;font:inherit;line-height:1;cursor:pointer;-webkit-appearance:none;appearance:none;color:var(--kl)!important;-webkit-tap-highlight-color:transparent;--lamp:var(--kd-dot)}\n.kd-btn-face{position:relative;display:inline-flex;align-items:center;justify-content:space-between;gap:14px;width:100%;height:100%;padding:0 24px;border-radius:inherit;overflow:hidden;isolation:isolate;background:var(--kf);color:var(--kl);box-shadow:var(--kr,none);font-size:14.5px;font-weight:600;letter-spacing:.005em;transition:background .4s,color .35s,box-shadow .4s,transform .18s}\n.kd-btn:hover .kd-btn-face,.kd-btn:focus-visible .kd-btn-face{background:var(--kh);color:var(--klh);box-shadow:var(--krh,var(--kr,none))} .kd-btn:active .kd-btn-face{transform:scale(.97);transition-duration:.06s}\n.kd-btn-l{position:relative;z-index:1;display:inline-flex;flex-direction:column;justify-content:center;line-height:1.15} .kd-sub{display:block;font-size:10.5px;font-weight:500;letter-spacing:.04em;opacity:.78;margin-bottom:1px} .kd-mark{display:inline-block}\n/* the arrow seat: a ROUND seat (a 40 px circle) inside the right end (= the hero's .kdh-btn-p::before); on hover / focus it floods the whole pill (one clip-path on a button-size layer), the face keeps its colour underneath, and the arrow turns from up-right to right */\n.kd-btn.kd-has-a .kd-btn-face{padding:0 8px 0 24px;transition:color .35s,box-shadow .4s,transform .18s} .kd-btn.kd-has-a:hover .kd-btn-face,.kd-btn.kd-has-a:focus-visible .kd-btn-face{background:var(--kf);color:var(--klh)}\n.kd-btn.kd-has-a .kd-btn-face::before{content:\"\";position:absolute;inset:0;z-index:0;background:var(--ks);clip-path:inset(8px 8px 8px calc(100% - 48px) round 999px);transition:clip-path .55s cubic-bezier(.2,.8,.2,1)} .kd-btn.kd-has-a:hover .kd-btn-face::before,.kd-btn.kd-has-a:focus-visible .kd-btn-face::before{clip-path:inset(0 0 0 0 round 999px)}\n.kd-btn .kd-btn-a{position:relative;z-index:1;display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;color:var(--ka);transition:color .35s} .kd-btn:hover .kd-btn-a,.kd-btn:focus-visible .kd-btn-a{color:var(--kah,var(--ka))} .kd-btn .kd-btn-a svg{display:block;width:15px;height:15px;transform:rotate(-45deg);transition:transform .5s cubic-bezier(.2,.8,.2,1)} .kd-btn:hover .kd-btn-a svg,.kd-btn:focus-visible .kd-btn-a svg{transform:none}\n/* the lamp (opt-in, lamp={true}): a small round dot with a slow ping — deep ochre on bone, yellow on ink */\n.kd-btn-lamp{position:relative;z-index:1;flex:none;width:8px;height:8px;border-radius:50%;background:var(--lamp)} .kd-btn-lamp::after{content:\"\";position:absolute;inset:-5px;border-radius:50%;border:1px solid var(--lamp);opacity:0;animation:kd-ping 2.6s ease-out infinite} @keyframes kd-ping{0%{opacity:.9;transform:scale(.5)}70%,100%{opacity:0;transform:scale(1.5)}}\n/* solid = THE PRIMARY, the same on bone, on ink and on a light plate inside an ink band: YELLOW face + ink label (13:1), a round INK seat + yellow arrow; flooded = ink with a --kd-cloud label (18:1), the arrow stays yellow. Without an arrow the whole face turns ink. */\n.kd-btn.kd-solid,.kd-dark .kd-btn.kd-solid,.mw .kd-dk .kd-btn.kd-solid,.mw.kd-dark .kd-lt .kd-btn.kd-solid,.mw .kd-dk .kd-lt .kd-btn.kd-solid{--kf:var(--kd-brass);--kl:var(--kd-ink);--ks:var(--kd-ink);--ka:var(--kd-brass);--kah:var(--kd-brass);--kh:var(--kd-ink);--klh:var(--kd-cloud);--kr:none;--krh:none}\n/* on INK the flooded pill would melt into the band: a soft drop at rest and a 1.5 px yellow edge when flooded */\n.kd-dark .kd-btn.kd-solid,.mw .kd-dk .kd-btn.kd-solid{--kr:0 12px 30px -14px color-mix(in srgb,#000 80%,transparent);--krh:0 0 0 1.5px var(--kd-brass)} .mw.kd-dark .kd-lt .kd-btn.kd-solid,.mw .kd-dk .kd-lt .kd-btn.kd-solid{--kr:none;--krh:none}\n/* ghost / quiet: on BONE a 1.5 px ink outline that fills ink (light label); on INK a GLASS pill (ink veil 45 % + blur + 1 px light outline, = the hero's .kdh-btn-g) that fills --kd-cloud (ink label). With an arrow: a yellow seat + ink arrow on both grounds, flooded = yellow with an ink label. */\n.kd-btn.kd-ghost,.kd-btn.kd-quiet{--kf:transparent;--kl:var(--kd-ink);--kh:var(--kd-ink);--klh:var(--kd-cloud);--ks:var(--kd-brass);--ka:var(--kd-ink);--kah:var(--kd-ink);--kr:inset 0 0 0 1.5px var(--kd-ink);--krh:inset 0 0 0 1.5px var(--kd-ink)}\n.kd-dark .kd-btn.kd-ghost,.mw .kd-dk .kd-btn.kd-ghost,.kd-dark .kd-btn.kd-quiet,.mw .kd-dk .kd-btn.kd-quiet{--kf:color-mix(in srgb,color-mix(in srgb,var(--kd-night) 90%,#000) 45%,transparent);--kl:var(--kd-cloud);--kh:var(--kd-cloud);--klh:var(--kd-ink);--kr:inset 0 0 0 1px color-mix(in srgb,var(--kd-cloud) 60%,transparent);--krh:inset 0 0 0 1px var(--kd-cloud)} .kd-dark .kd-btn.kd-ghost .kd-btn-face,.mw .kd-dk .kd-btn.kd-ghost .kd-btn-face,.kd-dark .kd-btn.kd-quiet .kd-btn-face,.mw .kd-dk .kd-btn.kd-quiet .kd-btn-face{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}\n.mw.kd-dark .kd-lt .kd-btn.kd-ghost,.mw .kd-dk .kd-lt .kd-btn.kd-ghost,.mw.kd-dark .kd-lt .kd-btn.kd-quiet,.mw .kd-dk .kd-lt .kd-btn.kd-quiet{--kf:transparent;--kl:var(--kd-ink);--kh:var(--kd-ink);--klh:var(--kd-cloud);--kr:inset 0 0 0 1.5px var(--kd-ink);--krh:inset 0 0 0 1.5px var(--kd-ink)} .mw.kd-dark .kd-lt .kd-btn.kd-ghost .kd-btn-face,.mw .kd-dk .kd-lt .kd-btn.kd-ghost .kd-btn-face,.mw.kd-dark .kd-lt .kd-btn.kd-quiet .kd-btn-face,.mw .kd-dk .kd-lt .kd-btn.kd-quiet .kd-btn-face{-webkit-backdrop-filter:none;backdrop-filter:none}\n.kd-btn.kd-ghost.kd-has-a,.kd-btn.kd-quiet.kd-has-a,.kd-dark .kd-btn.kd-ghost.kd-has-a,.mw .kd-dk .kd-btn.kd-ghost.kd-has-a,.kd-dark .kd-btn.kd-quiet.kd-has-a,.mw .kd-dk .kd-btn.kd-quiet.kd-has-a,.mw.kd-dark .kd-lt .kd-btn.kd-ghost.kd-has-a,.mw .kd-dk .kd-lt .kd-btn.kd-ghost.kd-has-a,.mw.kd-dark .kd-lt .kd-btn.kd-quiet.kd-has-a,.mw .kd-dk .kd-lt .kd-btn.kd-quiet.kd-has-a{--klh:var(--kd-ink)}\n.kd-btn.kd-ghost .kd-btn-face,.kd-btn.kd-quiet .kd-btn-face{justify-content:center;gap:10px} .kd-btn.kd-ghost.kd-has-a .kd-btn-face,.kd-btn.kd-quiet.kd-has-a .kd-btn-face{justify-content:space-between}\n.kd-btn.kd-quiet{height:46px} .kd-btn.kd-quiet .kd-btn-face{padding:0 18px;gap:9px;font-size:13px} .kd-btn.kd-quiet.kd-has-a .kd-btn-face{padding:0 6px 0 18px;gap:12px} .kd-btn.kd-quiet .kd-btn-a{width:34px;height:34px} .kd-btn.kd-quiet .kd-btn-a svg{width:13px;height:13px} .kd-btn.kd-quiet.kd-has-a .kd-btn-face::before{clip-path:inset(6px 6px 6px calc(100% - 40px) round 999px)} .kd-btn.kd-quiet.kd-has-a:hover .kd-btn-face::before,.kd-btn.kd-quiet.kd-has-a:focus-visible .kd-btn-face::before{clip-path:inset(0 0 0 0 round 999px)}\n/* ON YELLOW (.kd-ony on an ancestor or on the button): solid turns over = INK face + --kd-cloud label (18:1), a YELLOW seat + ink arrow; flooded = yellow with an ink label (13:1) and a 1.5 px ink edge. ghost / quiet = the bone look (no glass); with an arrow an ink seat + yellow arrow that floods ink (light label). The selectors repeat a class so they also win inside an ink band. */\n.kd-ony .kd-btn.kd-solid.kd-solid.kd-solid,.kd-btn.kd-solid.kd-ony.kd-ony.kd-ony{--kf:var(--kd-ink);--kl:var(--kd-cloud);--ks:var(--kd-brass);--ka:var(--kd-ink);--kah:var(--kd-ink);--kh:var(--kd-brass);--klh:var(--kd-ink);--kr:none;--krh:0 0 0 1.5px var(--kd-ink)}\n.kd-ony .kd-btn.kd-ghost.kd-ghost.kd-ghost.kd-ghost,.kd-btn.kd-ghost.kd-ony.kd-ony.kd-ony.kd-ony,.kd-ony .kd-btn.kd-quiet.kd-quiet.kd-quiet.kd-quiet,.kd-btn.kd-quiet.kd-ony.kd-ony.kd-ony.kd-ony{--kf:transparent;--kl:var(--kd-ink);--kh:var(--kd-ink);--klh:var(--kd-cloud);--ks:var(--kd-ink);--ka:var(--kd-brass);--kah:var(--kd-brass);--kr:inset 0 0 0 1.5px var(--kd-ink);--krh:inset 0 0 0 1.5px var(--kd-ink)} .kd-ony .kd-btn.kd-ghost.kd-ghost.kd-ghost.kd-ghost.kd-has-a,.kd-btn.kd-ghost.kd-ony.kd-ony.kd-ony.kd-ony.kd-has-a,.kd-ony .kd-btn.kd-quiet.kd-quiet.kd-quiet.kd-quiet.kd-has-a,.kd-btn.kd-quiet.kd-ony.kd-ony.kd-ony.kd-ony.kd-has-a{--klh:var(--kd-cloud)} .kd-ony .kd-btn.kd-ghost.kd-ghost.kd-ghost.kd-ghost .kd-btn-face,.kd-btn.kd-ghost.kd-ony.kd-ony.kd-ony.kd-ony .kd-btn-face,.kd-ony .kd-btn.kd-quiet.kd-quiet.kd-quiet.kd-quiet .kd-btn-face,.kd-btn.kd-quiet.kd-ony.kd-ony.kd-ony.kd-ony .kd-btn-face{-webkit-backdrop-filter:none;backdrop-filter:none}\n.kd-btn:disabled,.kd-btn[aria-disabled=\"true\"]{opacity:.55;pointer-events:none}\n@media (max-width:600px),(hover:none){.mw .kd-btn{max-width:100%}}\n.mw button,.mw input,.mw select,.mw textarea{font-family:inherit}\n/* mono data lines + numbers */\n.kd-mono{font-size:11.5px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;line-height:1.5;font-variant-numeric:tabular-nums} .kd-num{font-variant-numeric:tabular-nums lining-nums} .kd-lbl{font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--kd-mut)}\n/* a live dot: a small round dot with a slow round ping — deep ochre on bone, yellow on ink (--kd-dot); .is-ok = steady, no ping */\n.kd-lit-dot{position:relative;display:inline-block;width:8px;height:8px;flex:none;border-radius:50%;background:var(--kd-dot)} .kd-lit-dot::after{content:\"\";position:absolute;inset:-4px;border-radius:50%;box-shadow:0 0 0 1.5px var(--kd-dot);opacity:0;animation:kd-glow 2.6s ease-out infinite} @keyframes kd-glow{0%{opacity:.7;transform:scale(.5)}100%{opacity:0;transform:scale(1.5)}} .kd-lit-dot.is-ok::after{animation:none}\n/* Plates: a plate over a photograph / on bone — 8px radius, hairline, a soft drop so it lifts off a picture; on ink grounds use .kd-plate.kd-dark = the ink-glass plate (veil + hairline). .kd-frame = a picture frame (20px radius, clips its image; deeper bone ground, ink ground on the ink bands, so an empty picture is a quiet box). CASCADE-ORDER LAW: every component re-injects this base CSS, so a LATER component's .kd-plate beats an earlier component's single-class rule: a component that overrides a base class on the same element uses 2+ classes (.kdh-score.kd-plate{…}). */\n.kd-frame{position:relative;overflow:hidden;border-radius:20px;background:var(--kd-bone2)} .mw.kd-dark .kd-frame,.mw .kd-dk .kd-frame{background:color-mix(in srgb,var(--kd-night) 84%,var(--kd-stone))} .kd-frame>img{display:block;width:100%;height:100%;object-fit:cover}\n.kd-plate{position:relative;border-radius:8px;background:var(--kd-cloud);color:var(--kd-ink);box-shadow:inset 0 0 0 1px var(--kd-hair),0 1px 2px color-mix(in srgb,var(--kd-ink) 8%,transparent),0 10px 28px -12px color-mix(in srgb,var(--kd-ink) 28%,transparent)}\n.kd-plate.kd-dark,.mw .kd-dk{background:var(--kd-night);color:var(--kd-cloud)} .kd-plate.kd-dark{background:color-mix(in srgb,color-mix(in srgb,var(--kd-night) 90%,#000) 78%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--kd-cloud) 18%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}\n/* Chips: small mono PILLS (radius 999; stages, kinds, statuses, years). Add the mono font with style={M}.\n   .kd-chip = hairline outline \\xb7 .is-amb = THE YELLOW CHIP (ink on yellow: the stat, the status; inside .kd-ony it turns ink with a light label, so does a picked filter chip) \\xb7 .is-plate = ink on white (over pictures / on ink) \\xb7 .is-ink = white on ink (flips to ink on white on ink grounds) \\xb7 .is-acc = accent text (AA) \\xb7 button.kd-chip / a.kd-chip = a filter / tab chip: hover fills ink (white on ink grounds), [aria-pressed=\"true\"] / .is-on = yellow chip; it is 34 px high and its ::after stretches the hit area to 44 px */\n.kd-chip{display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 11px;border:0;border-radius:999px;background:none;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;line-height:1;white-space:nowrap;text-decoration:none;box-shadow:inset 0 0 0 1px var(--kd-hair2);color:inherit} .kd-chip.is-acc{color:var(--kd-acc)} .kd-chip.is-ok{color:var(--kd-ok)}\n.kd-chip.is-amb,.kd-dark .kd-chip.is-amb,.mw .kd-dk .kd-chip.is-amb{background:var(--kd-brass);color:var(--kd-ink);box-shadow:none} .kd-chip.is-plate,.kd-dark .kd-chip.is-plate,.mw .kd-dk .kd-chip.is-plate{background:var(--kd-cloud);color:var(--kd-ink);box-shadow:none} .kd-chip.is-ink{background:var(--kd-ink);color:var(--kd-cloud);box-shadow:none} .kd-dark .kd-chip.is-ink,.mw .kd-dk .kd-chip.is-ink{background:var(--kd-cloud);color:var(--kd-ink)}\nbutton.kd-chip,a.kd-chip{position:relative;height:34px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .3s,color .3s,box-shadow .3s} button.kd-chip::after,a.kd-chip::after{content:\"\";position:absolute;left:0;right:0;top:-5px;bottom:-5px} button.kd-chip:hover,a.kd-chip:hover{background:var(--kd-ink);color:var(--kd-cloud);box-shadow:none} .kd-dark button.kd-chip:hover,.mw .kd-dk button.kd-chip:hover,.kd-dark a.kd-chip:hover,.mw .kd-dk a.kd-chip:hover{background:var(--kd-cloud);color:var(--kd-ink)}\nbutton.kd-chip[aria-pressed=\"true\"],button.kd-chip.is-on,a.kd-chip.is-on,.kd-dark button.kd-chip[aria-pressed=\"true\"],.mw .kd-dk button.kd-chip[aria-pressed=\"true\"]{background:var(--kd-brass);color:var(--kd-ink);box-shadow:none}\n/* on YELLOW (.kd-ony) the yellow chip would vanish: there the stat chip and the picked filter chip are INK with a light label */\n.kd-ony .kd-chip.is-amb.is-amb.is-amb,.kd-ony button.kd-chip.kd-chip.kd-chip[aria-pressed=\"true\"],.kd-ony button.kd-chip.kd-chip.kd-chip.is-on,.kd-ony a.kd-chip.kd-chip.kd-chip.is-on{background:var(--kd-ink);color:var(--kd-cloud);box-shadow:none}\n/* accent words as an inline mark INSIDE body copy (deep ochre text on bone, yellow text on ink — no plate; headline accent words are NOT coloured: Head sets them in italic serif) and the step number (\\xab01\\xbb, \\xabStep 02 / 03\\xbb; add style={M}) */\n.kd-amb{font-style:normal;color:var(--kd-acc)} .mw.kd-dark .kd-amb,.mw .kd-dk .kd-amb{color:var(--kd-brass)} .mw.kd-dark .kd-lt .kd-amb,.mw .kd-dk .kd-lt .kd-amb{color:var(--kd-acc)}\n.kd-stn{font-size:11px;font-weight:500;letter-spacing:.11em;text-transform:uppercase;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--kd-mut)} .kd-stn b{font-weight:inherit;color:var(--kd-acc)}\n/* Roll */ .kd-roll{display:inline-flex;align-items:flex-start;white-space:nowrap;font-variant-numeric:tabular-nums} .kd-dg{display:inline-block;height:1em;overflow:hidden;vertical-align:top} .kd-dg-c{display:flex;flex-direction:column;transform:translateY(calc(var(--d) * -1em));transition:transform .55s cubic-bezier(.3,.9,.3,1)} .kd-dg-c i{display:block;height:1em;line-height:1em;font-style:normal} .kd-sep{display:inline-block;height:1em;line-height:1em} .kd-roll.is-rm .kd-dg-c,.mw[data-kb] .kd-dg-c{transition:none}\n/* Rules */ .kd-rule-x,.kd-rule-y{display:block;background:var(--kd-hair);transform-origin:0 0;transition:transform 1.1s cubic-bezier(.2,.8,.2,1) var(--dl,0ms)} .kd-rule-x{width:100%;height:1px;transform:scaleX(0)} .kd-rule-y{width:1px;height:100%;transform:scaleY(0)} .kd-rule-x.is-on{transform:scaleX(1)} .kd-rule-y.is-on{transform:scaleY(1)} .kd-rule-x.is-rm,.kd-rule-y.is-rm,.mw[data-kb] .kd-rule-x,.mw[data-kb] .kd-rule-y{transition:none}\n/* Count */ .kd-count{display:inline-block;white-space:nowrap}\n/* Md */ .kd-md{display:grid;gap:14px;font-size:16.5px;line-height:1.6} .kd-md p,.kd-md ul,.kd-md h3,.kd-md blockquote{margin:0} .kd-md h3{margin-top:14px;font-size:clamp(24px,2vw,30px);line-height:1.15} .kd-md ul{padding-left:1.1em;display:grid;gap:6px} .kd-md strong{font-weight:600} .kd-md blockquote{padding-left:16px;border-left:3px solid var(--kd-dot);font-size:1.1em}\n/* HEIGHT LAW: a block whose content swaps stacks all items in ONE grid cell so the tallest reserves the height */ .kd-swap{display:grid} .kd-swap>*{grid-area:1/1;min-width:0;opacity:0;visibility:hidden;transition:opacity .5s ease,visibility 0s linear .5s} .kd-swap>.is-on{opacity:1;visibility:visible;transition:opacity .5s ease}\n@media (prefers-reduced-motion:reduce){.kd-btn-lamp::after,.kd-lit-dot::after{animation:none!important} .mw *,.sth *{animation-duration:.01ms!important;transition-duration:.01ms!important}}\n`;// ===== KINDLING motion layer (composed by mk.py after _common) =====\n// One shared rAF (onTick). Sections write --sp (0 = top edge enters the viewport bottom → 1 = bottom edge leaves the top) and,\n// for tall pinned wrappers, --pp (0 = wrapper top hits the viewport top → 1 = wrapper bottom hits the viewport bottom). IO-gated.\nconst SCRUB_K=.18;// Decode a section's photos while it is still a screen and a half away, so the first frame it is on screen never waits for a decode.\nfunction usePre(el){try{const io=new IntersectionObserver(es=>{if(!es[0].isIntersecting)return;io.disconnect();el.querySelectorAll(\"img\").forEach(im=>{try{im.loading=\"eager\";im.decode().catch(()=>{});}catch(e){}});},{rootMargin:\"150% 0px 150% 0px\"});io.observe(el);}catch(e){}}function focusTo(el,frac){if(!el||typeof window===\"undefined\")return;if(window.innerWidth<810)return;const r=el.getBoundingClientRect();const vh=window.innerHeight;if(r.height<=vh*1.05)return;const y=r.top+window.scrollY+(r.height-vh)*Math.min(1,Math.max(0,frac));if(Math.abs(window.scrollY-y)<8)return;const w=window;if(w.__ltLenis)w.__ltLenis.scrollTo(y,{immediate:true,force:true});else window.scrollTo(0,y);}function useScrollVars(ref,live,rm,cb){useEffect(()=>{if(!live||rm||!ref.current)return;const el=ref.current;let vis=true,last=-9,cs=-1,cp=-1,settled=false;usePre(el);const io=new IntersectionObserver(es=>{vis=es[0].isIntersecting;},{rootMargin:\"25% 0px 25% 0px\"});io.observe(el);// eased scrub: the values glide toward the true scroll position (K per frame), so wheel steps never jump a pinned scene\nlet rt=0,rh=0,vh=1,fresh=false;const read=()=>{if(!vis&&settled){fresh=false;return;}const r=el.getBoundingClientRect();rt=r.top;rh=r.height;vh=window.innerHeight||1;fresh=true;};const off=onTick(()=>{if(!fresh)return;const sp=clamp01((vh-rt)/(vh+rh));const pp=rh>vh*1.05?clamp01(-rt/(rh-vh)):sp;if(cs<0){cs=sp;cp=pp;}else{cs+=(sp-cs)*SCRUB_K;cp+=(pp-cp)*SCRUB_K;if(Math.abs(sp-cs)<5e-4)cs=sp;if(Math.abs(pp-cp)<5e-4)cp=pp;}settled=cs===sp&&cp===pp;if(Math.abs(cs+cp-last)<3e-4)return;last=cs+cp;el.style.setProperty(\"--sp\",cs.toFixed(4));el.style.setProperty(\"--pp\",cp.toFixed(4));if(cb)cb(cs,cp);},read);return()=>{off();io.disconnect();};},[live,rm]);}// STAGE — false while the loader or the page-transition cover is on screen (html.kd-hold-*), so first-screen intros play AFTER the cover lifts, never under it. 9 s safety.\nfunction useStage(live){const[r,setR]=useState(false);useEffect(()=>{if(!live)return;const h=document.documentElement;const ok=()=>!/(^|\\s)kd-hold/.test(h.className);if(ok()){setR(true);return;}const mo=new MutationObserver(()=>{if(ok()){mo.disconnect();setR(true);}});mo.observe(h,{attributes:true,attributeFilter:[\"class\"]});const t=window.setTimeout(()=>{mo.disconnect();setR(true);},9e3);return()=>{mo.disconnect();window.clearTimeout(t);};},[live]);return r;}// true once the element has entered the viewport (stays true) — and only once the stage is clear. Reduced motion = true at once.\nfunction useOn(ref,live,rm,amount=.16){const[on,setOn]=useState(false);const still=useStill();const ready=useStage(live);useEffect(()=>{if(!live)return;if(rm){setOn(true);return;}if(!ready)return;const el=ref.current;if(!el)return;let off=()=>{};// keyboard focus: mark the section FIRST and flush styles, so the reveal that follows runs with instant transitions (a transition keeps the timing it started with)\nconst fin=e=>{try{if(e.target.matches(\":focus-visible\")){el.setAttribute(\"data-kb\",\"\");void el.offsetWidth;}}catch(x){}setOn(true);};const fout=e=>{if(!el.contains(e.relatedTarget))el.removeAttribute(\"data-kb\");};el.addEventListener(\"focusin\",fin);el.addEventListener(\"focusout\",fout);const io=new IntersectionObserver(es=>{for(const e of es)if(e.isIntersecting){io.disconnect();// IO ignores occlusion: under a curtain (Reveal) wait until about a quarter of it is uncovered\noff=onTick(()=>{const rev=el.closest(\".kd-rev.is-act\");const rv=rev?parseFloat(rev.style.getPropertyValue(\"--rv\")||\"0\"):1;if(rv>.24){setOn(true);off();}});}},{threshold:Math.min(amount,Math.max(.005,window.innerHeight*.3/Math.max(1,el.offsetHeight))),rootMargin:\"0px 0px -6% 0px\"});io.observe(el);return()=>{io.disconnect();off();el.removeEventListener(\"focusin\",fin);el.removeEventListener(\"focusout\",fout);};},[live,rm,ready]);return on||still;}// CURTAIN REVEAL — the section is pinned BEHIND the one above it and is uncovered as that one lifts away (the footer movement, for any section).\n// Wrapper = section + a spacer of T, pulled up by T (page length unchanged); the section is sticky for exactly T of scroll. T = min(section height, 100svh):\n// a tall section pins at the top, a short one sits on the bottom edge of the viewport. The section ABOVE needs a higher Layer (z-index).\nfunction Reveal({on,layer=9,style,children}){const live=useLive();const rm=useReduced();const wrap=useRef(null);const inner=useRef(null);const sp=useRef(null);const[h,setH]=useState(0);const[kb,setKb]=useState(false);// keyboard users get the footer as a normal section: a curtain taller than the screen hides its top row under the page above / the fixed header\nconst act=on&&live&&!rm&&h>0&&!kb;useEffect(()=>{if(!on||!live||rm||!inner.current)return;const el=inner.current;const m=()=>setH(el.offsetHeight);m();const ro=new ResizeObserver(m);ro.observe(el);return()=>ro.disconnect();},[on,live,rm]);useEffect(()=>{if(!act||!wrap.current)return;const el=wrap.current;let vis=true,last=-1;const io=new IntersectionObserver(es=>{vis=es[0].isIntersecting;},{rootMargin:\"30% 0px 30% 0px\"});io.observe(el);let cur=-1,T=0,vh=1,top=0,fresh=false;const read=()=>{if(!vis){fresh=false;return;}T=sp.current?sp.current.offsetHeight:0;vh=window.innerHeight;top=el.getBoundingClientRect().top;fresh=true;};const off=onTick(()=>{if(!fresh||!T)return;const rv=clamp01((vh-T-top)/T);if(cur<0||el.dataset.snap){cur=rv;delete el.dataset.snap;}else{cur+=(rv-cur)*SCRUB_K;if(Math.abs(rv-cur)<5e-4)cur=rv;}if(Math.abs(cur-last)<4e-4)return;last=cur;el.style.setProperty(\"--rv\",cur.toFixed(4));},read);return()=>{off();io.disconnect();};},[act]);return /*#__PURE__*/_jsxs(\"div\",{ref:wrap,className:`kd-rev${act?\" is-act\":\"\"}`,style:{...style||{},[\"--h\"]:`${h}px`,[\"--layer\"]:layer},onFocusCapture:e=>{if(!act||!wrap.current)return;try{if(e.target.matches(\":focus-visible\")){const t0=e.target;setKb(true);requestAnimationFrame(()=>requestAnimationFrame(()=>{try{t0.scrollIntoView({block:\"center\"});}catch(x){}}));return;}}catch(x){}const t=e.target;const w=window;const r=wrap.current.getBoundingClientRect();const T=sp.current?sp.current.offsetHeight:0;const y=Math.max(0,Math.min(document.documentElement.scrollHeight-window.innerHeight,r.top+window.scrollY-window.innerHeight+2*T));if(Math.abs(window.scrollY-y)>4){if(w.__ltLenis)w.__ltLenis.scrollTo(y,{immediate:true,force:true});else window.scrollTo(0,y);}wrap.current.dataset.snap=\"1\";requestAnimationFrame(()=>{try{const q=t.getBoundingClientRect();if(q.top<0||q.bottom>window.innerHeight)t.scrollIntoView({block:\"nearest\"});}catch(x){}});},children:[/*#__PURE__*/_jsx(\"div\",{ref:inner,className:\"kd-rev-in\",children:children}),/*#__PURE__*/_jsx(\"div\",{ref:sp,className:\"kd-rev-sp\",\"aria-hidden\":true})]});}const REVEAL_CONTROLS={reveal:{type:ControlType.Boolean,title:\"Reveal\",description:\"Curtain: this section waits behind the one above and is uncovered as that one lifts away\",enabledTitle:\"Curtain\",disabledTitle:\"Off\",defaultValue:true},layer:{type:ControlType.Number,title:\"Layer\",description:\"Stacking order. Must be LOWER than the section above (sections default to 10)\",min:0,max:20,step:1,displayStepper:true,defaultValue:9,hidden:p=>p.reveal===false}};const splitWords=s=>String(s||\"\").replace(/\\*([^*]+)\\*/g,(_m,g)=>g.trim().split(/\\s+/).map(w=>{const m=w.match(/^(.*?)([.,!?;:’']*)$/);return m&&m[1]?`*${m[1]}*${m[2]}`:w;}).join(\" \")).split(/\\s+/).filter(Boolean).map(t=>{const m=t.match(/^\\*(.+?)\\*([.,!?;:’']*)$/);return m?{t:m[1],tail:m[2],acc:true}:{t:t.replace(/\\*/g,\"\"),tail:\"\",acc:false};});const plainOf=s=>String(s||\"\").replace(/\\*/g,\"\").replace(/\\s*\\|\\s*/g,\" \").replace(/\\s+/g,\" \").trim();// Head — the section headline (Hanken Grotesk 600, -.045em, no font-stretch): its words rise out of masks. \"|\" forces a line break, *stars* around a phrase = the ACCENT WORDS: set in ITALIC SERIF (Newsreader italic 400, --kd-font-a, 1.04em, -.03em) in the SAME colour as the rest of the line, on every ground — never coloured, never a plate behind them.\nconst Head=({text,on,D,tag=\"h2\",size=\"clamp(40px,4.3vw,64px)\",lh=1.04,delay=0,step=55,style,className})=>{const Tag=tag;let k=0;if(!String(text||\"\").trim())return null;return /*#__PURE__*/_jsx(Tag,{className:`kd-hd${on?\" is-on\":\"\"}${tag===\"h1\"?\" is-ssr\":\"\"}${className?\" \"+className:\"\"}`,\"aria-label\":plainOf(text),style:{...HD(D),fontSize:size,lineHeight:lh,...style||{}},children:String(text).split(\"|\").map((line,li)=>/*#__PURE__*/_jsx(\"span\",{className:\"kd-hd-l\",\"aria-hidden\":true,children:splitWords(line).map((w,i,all)=>{const d=delay+k++*step;const jn=w.acc&&!!all[i+1]&&all[i+1].acc;const jp=w.acc&&i>0&&all[i-1].acc;return /*#__PURE__*/_jsxs(\"span\",{className:`kd-hd-w${w.acc?\" is-accw\":\"\"}`,children:[/*#__PURE__*/_jsx(\"span\",{className:`kd-hd-i${w.acc?\" is-acc\":\"\"}`,style:{transitionDelay:`${d}ms`,[\"--pd\"]:`${d+500}ms`,[\"--dl\"]:`${d}ms`},children:w.acc?/*#__PURE__*/_jsxs(\"span\",{className:`kd-it${jn?\" is-jn\":\"\"}${jp?\" is-jp\":\"\"}`,children:[w.t,w.tail]}):/*#__PURE__*/_jsxs(_Fragment,{children:[w.t,w.tail]})}),\" \"]},i);})},li))});};const Eyebrow=({text,on,M,delay=0,style})=>text&&String(text).trim()?/*#__PURE__*/_jsxs(\"p\",{className:`kd-eb${on?\" is-on\":\"\"}`,style:{...M,transitionDelay:`${delay}ms`,...style||{}},children:[/*#__PURE__*/_jsx(\"i\",{className:\"kd-lit-dot\",\"aria-hidden\":true}),text]}):null;// Lit — a photo box (radius 20 by default) with the responsive srcset; `on` adds .is-on for a body's own entry rule. Children (caption plates, share chips) sit above the picture. Photographs are never graded or dimmed.\nconst Lit=({src,alt=\"\",on,ratio=\"4/5\",radius=20,sizes=\"(max-width: 809px) 100vw, 50vw\",focus=\"50% 50%\",delay=0,hold=false,eager=false,className,style,children})=>{const im=RS(src,sizes);return /*#__PURE__*/_jsxs(\"span\",{className:`kd-dusk${on?\" is-on\":\"\"}${hold?\" is-hold\":\"\"}${className?\" \"+className:\"\"}`,style:{aspectRatio:ratio,borderRadius:radius,[\"--dd\"]:`${delay}ms`,...style||{}},children:[/*#__PURE__*/_jsx(\"img\",{src:im.src,srcSet:im.srcSet,sizes:im.sizes,alt:alt,loading:eager?\"eager\":\"lazy\",decoding:\"async\",draggable:false,style:{objectPosition:focus}}),children]});};// count-up for a stat (\"2,140\", \"91¢\", \"$184,200\", \"38\"): keeps prefix, suffix and thousands commas; SSR and reduced motion show the final value.\nfunction useCount(target,on,rm,ms=1400){const m=String(target||\"\").match(/^([^\\d-]*)(-?[\\d,]*\\.?\\d+)(.*)$/);const[v,setV]=useState(1);useEffect(()=>{if(!m||rm||!on){setV(1);return;}let raf=0,t0=0;setV(0);const step=t=>{if(!t0)t0=t;const k=clamp01((t-t0)/ms);setV(1-Math.pow(1-k,3));if(k<1)raf=requestAnimationFrame(step);};raf=requestAnimationFrame(step);return()=>cancelAnimationFrame(raf);},[on,rm,target]);if(!m)return String(target||\"\");const num=parseFloat(m[2].replace(/,/g,\"\"));const dec=(m[2].split(\".\")[1]||\"\").length;const cur=num*v;const txt=dec?cur.toFixed(dec):String(Math.round(cur));const withC=/,/.test(m[2])?txt.replace(/\\B(?=(\\d{3})+(?!\\d))/g,\",\"):txt;return m[1]+withC+m[3];}// one-shot rise for copy / rows\nconst rise=(on,d=0,y=22)=>({opacity:on?1:0,translate:on?\"0 0\":`0 ${y}px`,transition:`opacity .9s ease ${d}ms, translate 1s cubic-bezier(.2,.8,.2,1) ${d}ms`});// Image that UNMASKS through a shape as it enters, settles from a zoom, then drifts with scroll (needs --sp on an ancestor).\nconst SHAPES={up:[\"inset(100% 0 0 0)\",\"inset(0 0 0 0)\"],down:[\"inset(0 0 100% 0)\",\"inset(0 0 0 0)\"],left:[\"inset(0 100% 0 0)\",\"inset(0 0 0 0)\"],right:[\"inset(0 0 0 100%)\",\"inset(0 0 0 0)\"],diag:[\"polygon(0 100%,0 100%,0 100%,0 100%)\",\"polygon(0 -160%,260% 100%,0 100%,0 100%)\"],iris:[\"circle(0% at 50% 55%)\",\"circle(85% at 50% 55%)\"],slit:[\"inset(0 50% 0 50%)\",\"inset(0 0 0 0)\"]};const Um=({src,alt=\"\",on,shape=\"up\",ratio=\"4/5\",delay=0,par=1,focus=\"50% 40%\",radius=20,sizes=\"(max-width: 809px) 100vw, 50vw\",style,className,eager=false})=>{const sh=SHAPES[shape]||SHAPES.up;const im=RS(src,sizes);return /*#__PURE__*/_jsx(\"div\",{className:`kd-um${on?\" is-on\":\"\"}${className?\" \"+className:\"\"}`,style:{aspectRatio:ratio,borderRadius:radius,clipPath:on?sh[1]:sh[0],WebkitClipPath:on?sh[1]:sh[0],transitionDelay:`${delay}ms`,[\"--par\"]:par,...style||{}},children:/*#__PURE__*/_jsx(\"img\",{src:im.src,srcSet:im.srcSet,sizes:im.sizes,alt:alt,loading:eager?\"eager\":\"lazy\",decoding:\"async\",draggable:false,style:{objectPosition:focus,transitionDelay:`${delay}ms`}})});};const CSS_MOTION=`\n.mw[data-kb] *,.mw[data-kb] *::before,.mw[data-kb] *::after,.mw [data-kb],.mw [data-kb] *,.mw [data-kb] *::before,.mw [data-kb] *::after{transition:none!important}\n.kd-sec{position:relative;z-index:10;display:block;width:100%;--sp:.5;--pp:0}\n.kd-rev{position:relative;width:100%;--rv:1} .kd-rev-in{position:relative} .kd-rev-sp{height:0}\n.kd-rev.is-act{--rv:0;--t:min(var(--h),100vh);--t:min(var(--h),100svh);z-index:var(--layer,9);margin-top:calc(var(--t)*-1)}\n.kd-rev.is-act>.kd-rev-in{position:sticky;top:calc(100vh - var(--t));top:calc(100svh - var(--t))} .kd-rev.is-act>.kd-rev-sp{height:var(--t)}\n/* the lifting edge throws a shadow on the section beneath, and that section comes out of the dark as it is uncovered */\n.kd-rev.is-act>.kd-rev-in::before{content:\"\";position:absolute;z-index:40;left:0;right:0;top:0;height:120px;translate:0 calc((1 - var(--rv))*var(--t));background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,0));opacity:min(1,calc(var(--rv)*(1 - var(--rv))*9));pointer-events:none}\n.kd-rev.is-act>.kd-rev-in::after{content:\"\";position:absolute;z-index:39;left:0;right:0;top:0;height:var(--t);background:#000;opacity:calc((1 - var(--rv))*.16);pointer-events:none}\n.kd-wrap{--pad:56px;width:100%;max-width:calc(${MAXW} + var(--pad)*2);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}\n.kd-eb{display:inline-flex;align-items:center;gap:10px;width:max-content;max-width:100%;margin:0;padding:0;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;line-height:1.5;color:var(--kd-acc);opacity:0;translate:0 10px;transition:opacity .8s ease,translate .9s cubic-bezier(.2,.8,.2,1)} .kd-eb.is-on{opacity:1;translate:0 0}\n.kd-eb i{order:-1;margin-right:2px}\n.mw .kd-eb{color:var(--kd-ink)} .mw.kd-dark .kd-eb,.mw .kd-dk .kd-eb{color:var(--kd-cloud)} .mw.kd-dark .kd-lt .kd-eb,.mw .kd-dk .kd-lt .kd-eb{color:var(--kd-ink)}\n.kd-band .kd-eb{padding:6px 12px 6px 10px;border-radius:4px;background:var(--kd-ink);color:var(--kd-bone)} .kd-band .kd-eb .kd-lit-dot{background:var(--kd-brass)} .kd-band .kd-eb .kd-lit-dot::after{background:radial-gradient(circle,color-mix(in srgb,var(--kd-brass) 70%,transparent),transparent 70%)} .kd-band .kd-lt .kd-eb{padding:0;background:none;color:var(--kd-acc)}\n.kd-hd{margin:0;letter-spacing:-.045em;font-weight:600;font-stretch:normal;text-wrap:balance} .kd-hd-l{display:block}\n.kd-hd-w{display:inline-block;overflow:hidden;vertical-align:top;padding:.06em .04em .2em;margin:-.06em -.04em -.2em;white-space:pre} \n.kd-hd-i{position:relative;display:inline-block;translate:0 108%;transition:translate 1.05s cubic-bezier(.2,.85,.15,1)}\n.kd-hd.is-on .kd-hd-i{translate:0 0}\n/* page h1: rises by CSS from the server HTML (no wait for hydration); paused only while a loader / transition cover holds the page */\n@keyframes kd-hd-rise{from{translate:0 108%}to{translate:0 0}}\n.kd-hd.is-ssr .kd-hd-i{animation:kd-hd-rise .8s cubic-bezier(.2,.85,.15,1) var(--dl,0ms) both}\nhtml[class*=\"kd-hold\"] .kd-hd.is-ssr .kd-hd-i{animation-play-state:paused}\n/* the italic glyphs overhang their box (the \\xabf\\xbb reaches left and under the line, \\xabe\\xbb / \\xabf\\xbb lean right): the accent word's mask is wider and deeper, pulled back by the same negative margins so the line does not move */\n.kd-hd-w.is-accw{overflow:hidden;padding:.12em .26em .32em;margin:-.12em -.26em -.32em}\n/* the starred words: ITALIC SERIF in the colour of the line (Newsreader italic 400), on every ground. No colour, no plate, no spark. */\n.kd-it,.kd-it.is-jn,.kd-it.is-jp{position:relative;display:inline-block;padding:0;margin:0;border-radius:0;background:none;color:inherit;font-family:var(--kd-font-a,'Newsreader'),Georgia,'Times New Roman',serif;font-style:italic;font-weight:400;font-size:1.04em;letter-spacing:-.03em}\n.mw.kd-dark .kd-it,.mw .kd-dk .kd-it,.mw.kd-dark .kd-lt .kd-it,.mw .kd-dk .kd-lt .kd-it{color:inherit}\n.kd-spark{display:none}\n\n.kd-dusk{position:relative;display:block;overflow:hidden;background:var(--kd-bone2)} .mw.kd-dark .kd-dusk,.mw .kd-dk .kd-dusk{background:color-mix(in srgb,var(--kd-night) 84%,var(--kd-stone))} .kd-dusk>img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;user-select:none}\n.kd-um{position:relative;overflow:hidden;transition:clip-path 1.35s cubic-bezier(.7,0,.2,1);background:var(--kd-bone2)} .mw.kd-dark .kd-um,.mw .kd-dk .kd-um{background:color-mix(in srgb,var(--kd-night) 84%,var(--kd-stone))}\n.kd-um img{position:absolute;left:0;top:-9%;width:100%;height:118%;display:block;object-fit:cover;scale:1.04;translate:0 calc((var(--sp,.5) - .5)*var(--par,1)*-7%);transition:scale 1.9s cubic-bezier(.16,.84,.24,1);user-select:none}\n.kd-um.is-on img{scale:1}\n/* diagonal cuts: the section hangs over its neighbour and is cut on a slope (clip-path, so the neighbour shows through) */\n.kd-cut-t{margin-top:calc(var(--cut,7vw)*-1);clip-path:polygon(0 var(--cut,7vw),100% 0,100% 100%,0 100%);padding-top:var(--cut,7vw)}\n.kd-cut-b{margin-bottom:calc(var(--cut,7vw)*-1);padding-bottom:var(--cut,7vw)}\n.kd-cut-t.kd-cut-b{clip-path:polygon(0 var(--cut,7vw),100% 0,100% calc(100% - var(--cut,7vw)),0 100%)}\n.kd-cut-b:not(.kd-cut-t){clip-path:polygon(0 0,100% 0,100% calc(100% - var(--cut,7vw)),0 100%)}\n@media (max-width:1099px){.kd-wrap{--pad:40px}}\n@media (max-width:699px){.kd-wrap{--pad:20px}}\n@media (prefers-reduced-motion:reduce){.kd-hd-i{translate:0 0!important} .kd-hd.is-ssr .kd-hd-i{animation:none!important} .kd-um{clip-path:none!important} .kd-um img{scale:1!important;translate:0 0!important}}\n`;const SEED={site:[{\"slug\":\"site\",\"f1\":\"Kindling\",\"f2\":\"Venture capital\",\"f3\":\"One partner, one memo, a decision in fourteen days. Pick a stage, move the slider and see what a round with Kindling looks like.\",\"f4\":\"pitch@kindling.vc\",\"f5\":\"/pitch\",\"f6\":\"/portfolio\",\"f7\":\"Fund IV \\xb7 pre-seed and seed\",\"f8\":\"86 companies backed from the first cheque\",\"f9\":\"/portfolio\",\"img\":\"https://framerusercontent.com/images/x7FuDOWcJhy2GsIpCFGSAwrI.webp\",\"f10\":\"Investors and founders talking in a glass office at night, a wall of pinned memos behind them and the city lit outside\"}]};const SW_BUILD=\"KdProcess@cms1\";// An override control wins only when it holds real text; empty (or a single space) inherits from the CMS.\nconst pick=(o,fb)=>o!==undefined&&o!==null&&String(o).trim()?String(o).trim():fb;const imgOf=(r,k=\"img\")=>String(r&&r[k]||\"\").split(\"?\")[0];// A cleared CMS image draws this quiet placeholder — never a stock photo, and list positions stay aligned with their rows.\nconst EMPTY_IMG=\"data:image/svg+xml;utf8,\"+encodeURIComponent(\"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 500' preserveAspectRatio='xMidYMid slice'><rect width='400' height='500' fill='#E7E3D8'/><rect x='120' y='170' width='160' height='160' rx='4' fill='none' stroke='#9A9C92' stroke-width='1.5'/><rect x='100' y='150' width='200' height='200' rx='6' fill='none' stroke='#C6C2B4' stroke-width='1' stroke-dasharray='2 6'/></svg>\");const imgOr=(r,k=\"img\")=>imgOf(r,k)||EMPTY_IMG;const cmsNum=(r,k,fb=0)=>{const v=parseFloat(String((r&&r[k])??\"\"));return isFinite(v)?v:fb;};const useIso=typeof window===\"undefined\"?useEffect:useLayoutEffect;function readCMS(kind){if(typeof document===\"undefined\")return null;if(!document.querySelector('[data-kd-row=\"bridge\"]'))return null;const seen=new Set;const out=[];document.querySelectorAll(`[data-kd-row=\"${kind}\"]`).forEach(el=>{const o={};for(const a of Array.from(el.attributes))if(a.name.startsWith(\"data-\"))o[a.name.slice(5)]=a.value;const key=o.slug||JSON.stringify(o);if(seen.has(key))return;seen.add(key);out.push(o);});return out.sort((a,b)=>(parseFloat(a.n1)||0)-(parseFloat(b.n1)||0));}function useCMS(kind,fallback){const[rows,setRows]=useState(fallback);const sig=useRef(\"\");useIso(()=>{let n=0,t=0,ok=0;try{const w=window;if(!w.__ltCms||typeof w.__ltCms!==\"object\")w.__ltCms={};w.__ltCms[SW_BUILD]=1;}catch(e){}const pull=()=>{const r=readCMS(kind);if(!r)return false;const s=JSON.stringify(r);if(s!==sig.current){sig.current=s;setRows(r);}return true;};const mo=new MutationObserver(()=>{if(pull()){ok++;if(ok>2)mo.disconnect();}});mo.observe(document.body,{childList:true,subtree:true});if(pull())ok++;const poll=()=>{if(n++<30){pull();t=window.setTimeout(poll,150);}};t=window.setTimeout(poll,150);return()=>{mo.disconnect();window.clearTimeout(t);};},[kind]);return rows;}// Row counts in headings: {companies} {sectors} {partners} {rounds} {posts} {reviews} {faq} = the live number of rows as digits ({portfolio} {team} {stages} {writing} work too); a capital first letter ({Companies}) = the number as a word (One … Twelve, digits above that); {companies:word} = the same word in lower case. Server render = the shipped counts.\nconst CMS_COUNT_FB={\"rounds\":3,\"companies\":8,\"sectors\":5,\"partners\":5,\"reviews\":6,\"posts\":6,\"faq\":8};const CMS_NWORDS=\"Zero;One;Two;Three;Four;Five;Six;Seven;Eight;Nine;Ten;Eleven;Twelve\";function useCounts(extra){const[c,setC]=useState(CMS_COUNT_FB);const sig=useRef(\"\");useIso(()=>{let n=0,t=0;const pull=()=>{const o={};let any=false;for(const k of Object.keys(CMS_COUNT_FB)){const r=readCMS(k);if(r){o[k]=r.length;any=true;}else o[k]=CMS_COUNT_FB[k];}if(!any)return;const s=JSON.stringify(o);if(s!==sig.current){sig.current=s;setC(o);}};pull();const poll=()=>{if(n++<12){pull();t=window.setTimeout(poll,250);}};t=window.setTimeout(poll,250);return()=>window.clearTimeout(t);},[]);return extra?{...c,...extra}:c;}const CMS_ALIAS={portfolio:\"companies\",team:\"partners\",stages:\"rounds\",writing:\"posts\"};const countText=(s,c,words=CMS_NWORDS)=>{const W=String(words||CMS_NWORDS).split(\";\").map(x=>x.trim());return String(s==null?\"\":s).replace(/\\{([A-Za-z]+)(:word)?\\}/g,(m,k,lw)=>{const lk=String(k).toLowerCase();const n=c[lk]??c[CMS_ALIAS[lk]];if(typeof n!==\"number\")return m;const cap=k[0]!==k[0].toLowerCase();return lw&&W[n]?W[n].toLowerCase():cap&&W[n]?W[n]:String(n);});};// The one-row Site collection holds every site-wide fact. A section's \"… Override\" control only replaces it on that one section.\n// Site: f1 Name (Kindling) · f2 Descriptor · f3 Tagline · f4 Email · f5 Book Link = the PITCH link (/pitch) · f6 Work Link = the PORTFOLIO link (/portfolio) · f7 Eyebrow · f8 Proof Line · f9 Services Link (= /portfolio) · img Picture (the hero office at night H1, also social / about) · f10 Picture Alt\nfunction useSite(){const r=useCMS(\"site\",SEED.site||[]);const s=r[0]||(SEED.site||[])[0]||{};const g=k=>String(s[k]??\"\").trim();const im=k=>String(s[k]||\"\").split(\"?\")[0];return{name:g(\"f1\"),descriptor:g(\"f2\"),tagline:g(\"f3\"),email:g(\"f4\"),book:g(\"f5\")||\"/pitch\",work:g(\"f6\")||\"/portfolio\",eyebrow:g(\"f7\"),proof:g(\"f8\"),services:g(\"f9\")||\"/portfolio\",picture:im(\"img\"),pictureAlt:g(\"f10\")};}// ---- Row readers (slots are fixed: see seed.py). Every reader takes an undefined row and returns empty strings, never throws.\nconst S_=(r,k)=>String(r&&r[k]||\"\").trim();const numOf=(v,fb=0)=>{const n=parseFloat(String(v??\"\").replace(/[^\\d.-]/g,\"\"));return isFinite(n)?n:fb;};const listOf=s=>String(s||\"\").split(\";\").map(x=>x.trim()).filter(Boolean);const linkList=s=>String(s||\"\").split(\",\").map(x=>x.trim()).filter(Boolean).map(x=>{const i=x.indexOf(\":\");return{l:i<0?x:x.slice(0,i).trim(),h:i<0?\"/\":x.slice(i+1).trim()};});const bySlug=(rows,slug)=>{const k=String(slug||\"\").trim();return k?rows.find(r=>r.slug===k):undefined;};// Rounds (kind \"rounds\") — the stages on the hero cheque: f1 Stage («Seed») · f2 Smallest Cheque · f3 Largest Cheque · f4 Usual Cheque (plain dollars) · f5 Ownership (% at the usual cheque) · f6 Decision («14 days») · f7 Terms · n1 Order → no page\nconst roundOf=r=>{const min=Math.max(0,numOf(S_(r,\"f2\")));const max=Math.max(min,numOf(S_(r,\"f3\"),min));const usual=Math.min(max,Math.max(min,numOf(S_(r,\"f4\"),min)));return{slug:S_(r,\"slug\"),name:S_(r,\"f1\"),min,max,usual,own:Math.max(.1,Math.min(100,numOf(S_(r,\"f5\"),10))),days:S_(r,\"f6\"),terms:S_(r,\"f7\")};};// Companies (kind \"companies\") — the portfolio: f1 Name · f2 Sector · f3 Line · f4 Body (mini markdown) · f5 Entry («Seed 2021») · f6 Now («Series B · $48M») · f7 First Cheque («$1.2M») · f8 Founder · f9 Stage (the filter word: Pre-seed / Seed / Series A / Exited) · f10 Team («4 → 112») · img Picture (the FOUNDER's portrait) · n1 Order → /portfolio/:slug\nconst companyOf=r=>({slug:S_(r,\"slug\"),name:S_(r,\"f1\"),sector:S_(r,\"f2\"),line:S_(r,\"f3\"),body:S_(r,\"f4\"),entry:S_(r,\"f5\"),now:S_(r,\"f6\"),cheque:S_(r,\"f7\"),founder:S_(r,\"f8\"),stage:S_(r,\"f9\"),team:S_(r,\"f10\"),img:imgOr(r)});// Sectors (kind \"sectors\") — what we back: f1 Name · f2 Line · f3 Body · f4 Stat («19 companies») · f5 Companies (a; b → companies[]) · img Picture · n1 Order → no page\nconst sectorOf=r=>({slug:S_(r,\"slug\"),name:S_(r,\"f1\"),line:S_(r,\"f2\"),body:S_(r,\"f3\"),stat:S_(r,\"f4\"),companies:listOf(S_(r,\"f5\")),img:imgOr(r)});// Partners (kind \"partners\") — the team: f1 Name · f2 Role · f3 Focus · f4 Bio · f5 Cheques («31 first cheques») · f6 Ask (what to pitch this partner) · img Picture (portrait) · n1 Order → no page\nconst partnerOf=r=>({slug:S_(r,\"slug\"),name:S_(r,\"f1\"),role:S_(r,\"f2\"),focus:S_(r,\"f3\"),bio:S_(r,\"f4\"),cheques:S_(r,\"f5\"),ask:S_(r,\"f6\"),img:imgOr(r)});// Reviews: f1 Quote · f2 Person · f3 Role · f4 Company · img Picture (portrait) · n1 Order\nconst reviewOf=r=>({slug:S_(r,\"slug\"),quote:S_(r,\"f1\"),person:S_(r,\"f2\"),role:S_(r,\"f3\"),company:S_(r,\"f4\"),img:imgOr(r)});// Posts: f1 Title · f2 Kind (Guide / Customs / Report) · f3 Line · f4 Body (mini markdown, see Md) · img Picture · f5 Date · f6 Read · n1 Order → /insights/:slug\nconst postOf=r=>({slug:S_(r,\"slug\"),title:S_(r,\"f1\"),kind:S_(r,\"f2\"),line:S_(r,\"f3\"),body:S_(r,\"f4\"),img:imgOr(r),date:S_(r,\"f5\"),read:S_(r,\"f6\")});// Faq: f1 Question · f2 Answer · n1 Order\nconst faqOf=r=>({slug:S_(r,\"slug\"),q:S_(r,\"f1\"),a:S_(r,\"f2\")});// ---- A seeded generator (mulberry32) so the server and the first client render draw the SAME shape.\nconst mulberry=a=>()=>{a|=0;a=a+1831565813|0;let t=Math.imul(a^a>>>15,1|a);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)/4294967296;};// The row a CMS detail page is about: the bound Slug control wins (server render included), else the last URL segment, else the first row.\nfunction useRow(kind,fallback,slug){const rows=useCMS(kind,fallback);const[path,setPath]=useState(\"\");useEffect(()=>{try{setPath(decodeURIComponent(window.location.pathname.split(\"/\").filter(Boolean).pop()||\"\"));}catch(e){}},[]);const want=String(slug||\"\").trim()||path;const row=rows.find(r=>r.slug===want)||rows[0]||{};return{row,rows};}// ---- FOURTEEN DAYS (the YELLOW band, a page signature): a day ruler 0 → 14 with a tick and a mono numeral for every day. The steps of the list stand on it as pill buttons\n// at their own day. As the ruler scrolls into view an ink line draws across it (KitSteps) and the ticks come up behind the line; a round ink marker then travels to the\n// picked step and a thick ink bar fills the days that have passed. The picked step shows its photograph (round-cornered frame, a bone day plate on it) and a paper MEMO\n// sheet (mono «DAY 06 · THE MEMO», an italic serif title, the text on ruled lines, a round ink stamp that presses on). Left alone the ruler walks the steps.\n// Phones: the ruler stands upright at the left, the photograph and the memo under it.\n// Motion kit cores carried here (copied, renamed, re-tokened): KitSteps (the line draws from the first step to the last on entry, the nodes fill in turn — here the nodes\n// are real buttons and the fill follows the picked step) · KitReveal «up» (the photograph frame unmasks once) · KitText «lines» (the shared Head).\nconst KDPR_MEDIA={H1:\"https://framerusercontent.com/images/x7FuDOWcJhy2GsIpCFGSAwrI.webp\",TH1:\"https://framerusercontent.com/images/ci7YrYqVf8V4u0suXqdtbAsv60.webp\",CO1:\"https://framerusercontent.com/images/tjMnIGNtdGK6Q1PQC0pvOlI9ezU.webp\",CO2:\"https://framerusercontent.com/images/mdNKiv1VPAiYOOAahVooI4fPWs.webp\",CO3:\"https://framerusercontent.com/images/6t1wp30oIZMGkUARz9ScSRaJLw.webp\",CO4:\"https://framerusercontent.com/images/Wo6SEtL9eTcyjrA6QoaWtZEqg.webp\",CO5:\"https://framerusercontent.com/images/ckv8bTn0KLPi5HLGwxWyKXXjLpY.webp\",CO6:\"https://framerusercontent.com/images/7FktdPc1nZKY6uSIBnh7GU1d4.webp\",CO7:\"https://framerusercontent.com/images/3GJUcsHSbou9jFcWsXUkSUPyc.webp\",CO8:\"https://framerusercontent.com/images/1M7tnXLeDOhzpX6nIil0W5WLPec.webp\",SC1:\"https://framerusercontent.com/images/LpO6CgokMAX9O71MZJXUHQmAM2s.webp\",SC2:\"https://framerusercontent.com/images/lOAT4PA8lmzDUN3ZiKnbc54FF6U.webp\",SC3:\"https://framerusercontent.com/images/3niQF1gtZlnEgInzxUpyxu4wQZc.webp\",SC4:\"https://framerusercontent.com/images/nq9M6MF2JT7UVOBFefoWsE.webp\",SC5:\"https://framerusercontent.com/images/RlF0WAlh2GechnlGwLtAJz78rWs.webp\",PR1:\"https://framerusercontent.com/images/AhV5s32bnslCN9acM8UqCleCg5s.webp\",PR2:\"https://framerusercontent.com/images/Orjun2RKEiOIfPqVeS5HGXHc.webp\",PR3:\"https://framerusercontent.com/images/E83JmFJ5hc4YDsrQNRcZYjJwQA.webp\",PR4:\"https://framerusercontent.com/images/0GNMNqrMhaoeldQv7CZ9JGm3Lgc.webp\",PR5:\"https://framerusercontent.com/images/SznBzKJBoqWKViIgv7YSMrptcDo.webp\",TM1:\"https://framerusercontent.com/images/8CRyvQMI12HwBgrmuBbTLNGHA0.webp\",TM2:\"https://framerusercontent.com/images/zoBBUAdwNejAYvv4woOpCbONxU.webp\",TM3:\"https://framerusercontent.com/images/34De45WVjJfIp4mfHWpPqUeSVmQ.webp\",TM4:\"https://framerusercontent.com/images/oLJsUDPp1HWbPCuUKBTFzaE.webp\",TM5:\"https://framerusercontent.com/images/e99ms78wJcBtVJ3vWjOZtoLKtCM.webp\",RV1:\"https://framerusercontent.com/images/sQzuPIekG5NkAQT4I24b0wyH2A4.webp\",RV2:\"https://framerusercontent.com/images/UpzrSyqfFjzFDNQaVBd4YCcJKE.webp\",RV3:\"https://framerusercontent.com/images/JaGfeDdWbYmjA7tg10N7tLSkQhY.webp\",RV4:\"https://framerusercontent.com/images/RcH3lRk5afqF0bP9afXfh3Y2s1M.webp\",RV5:\"https://framerusercontent.com/images/zR5gDhTc7KIrD0Tcrbs158FOEmI.webp\",RV6:\"https://framerusercontent.com/images/xvF30JFcDa5uB33u9178cH7mU.webp\",FN1:\"https://framerusercontent.com/images/KVsuXvMSm3uEC2vOn47mUYHSA.webp\",PO1:\"https://framerusercontent.com/images/9YZstlh7A3n12AFEFCvcop8.webp\",PO2:\"https://framerusercontent.com/images/ZoMO5QK492Z2GFDN0ebStsdTw.webp\",PO3:\"https://framerusercontent.com/images/xImdZvmcC69DrPQRc8r993bGOK4.webp\",PO4:\"https://framerusercontent.com/images/XcfBZ7BNZ14T2B2LbuAwfENk.webp\",PO5:\"https://framerusercontent.com/images/KfiHVaKTkiNh3wPV4m3tfDk7xg.webp\",PO6:\"https://framerusercontent.com/images/2CuA3FOZpopAYK80qMDxhjpfvVY.webp\",AX1:\"https://framerusercontent.com/images/VCDtovpECpLX6ivQIKQWycvIGE.webp\",SC3_old:\"https://framerusercontent.com/images/9ki6IMCsVbhHKb9QWVoNZNcyG0.webp\",SC5_old:\"https://framerusercontent.com/images/xWa0RNDO1G9xG8t9tsdHsgoYtFc.webp\",SC1_old:\"https://framerusercontent.com/images/VVPwWSd6nVvF61E1bZLN9s9CM.webp\",SC2_old:\"https://framerusercontent.com/images/7p8Ek9Ny0WKrzjj4EPnmnPBzY.webp\",SC4_old:\"https://framerusercontent.com/images/4PFqEbqJJiwcUCSoCBsMnyZUKuk.webp\",PR1_old:\"https://framerusercontent.com/images/YvTXWSqJtA1lINidUqyz1M2BM.webp\",PR2_old:\"https://framerusercontent.com/images/6xUTNlwEBpETHUxldsNUrGjMGY.webp\",PR3_old:\"https://framerusercontent.com/images/zYrUOtBxjyRWxbrDycmMI1C3CE.webp\",PR4_old:\"https://framerusercontent.com/images/WytOnvAx1Bn6MIkPTb9rHQITXpA.webp\",PR5_old:\"https://framerusercontent.com/images/be6QBCQtuC7hVunKqupaPcTDkwE.webp\",FN1_old:\"https://framerusercontent.com/images/uouzA12yFuop8ddAhQ4CnmMesCI.webp\",AX1_old:\"https://framerusercontent.com/images/ZbDXWTcfpv1ErGgzQTUccAfMrCE.webp\",PO1_old:\"https://framerusercontent.com/images/bZtRDa2gm7NI8jEIuCRzcFWD5JE.webp\",PO2_old:\"https://framerusercontent.com/images/dzkmYlFUZITahBC44kXEVqHIuj0.webp\",PO3_old:\"https://framerusercontent.com/images/RpAWKW5X9TfM9XJewQiDHqEi6eQ.webp\",PO4_old:\"https://framerusercontent.com/images/9A5OSwExExzJ5PuNkKx2zpy6PQ.webp\",PO5_old:\"https://framerusercontent.com/images/IwPWui4ulErnAqhZkKUXqh4Rsq8.webp\",PO6_old:\"https://framerusercontent.com/images/fdl0jzgWr4ESLuBmSmGiZPy8w.webp\"};const KDPR_STEPS=\"0:Pitch:Send the deck, or a paragraph.|No warm intro needed. Every pitch is read by a partner, and you hear back within two working days.:PR1; 2:First call:Forty-five minutes, one partner.|We ask about the problem and why you are the ones to solve it. You ask us anything about the fund.:PR2; 6:The memo:Six pages, written for you.|Your partner writes the case for investing: market, product, team and risks. You read the draft and correct us where we are wrong.:PR3; 10:Partner meeting:One hour with the partnership.|You present and the memo has already been read. We vote the same afternoon and call you before the day ends.:PR4; 14:Term sheet:A cheque and a clean term sheet.|Standard terms, no board seat asked at pre-seed and seed. The money is in your account within a week of signing.:PR5\";const KDPR_ALTS=\"Two founders at a cafe window with a laptop and notes; Two people reading a notebook at a desk by the window; A stack of memo papers, glasses and a pen on a dark table; A board meeting around a long table; A handshake across a desk\";const KDPR_W=[\"The fourteen days\",\"Day\",\"Previous step\",\"Next step\",\"Step\",\"of\",\"Steps\",\"The step in detail\",\"Add steps to the list to show how a decision is made.\"];const kdprWords=s=>{const g=String(s??\"\").split(\";\");return KDPR_W.map((d,i)=>(g[i]||\"\").trim()||d);};const kdpr2=n=>(n<10?\"0\":\"\")+Math.round(n*10)/10;const KDPR_ROT=[-1.4,1.1,-.8,1.5,-1.1,.9];// «Day:Name:Text:PictureKey; …» — the text may hold colons; «Title|body» inside the text gives the memo its italic title (no «|» = the step name is the title).\n// PictureKey = PR1 … PR5 or a full picture address; empty = the stand-in of that position.\nconst kdprParse=(s,alts)=>{const al=String(alts??\"\").split(\";\").map(x=>x.trim());const seen={};return String(s??\"\").split(\";\").map(x=>x.trim()).filter(Boolean).map((x,i)=>{const g=x.split(\":\").map(y=>y.trim());const day=parseFloat(g[0]);const name=g[1]||\"\";if(!isFinite(day)||!name)return null;let rest=g.slice(2);let key=\"\";const u=rest.findIndex(y=>/^(https?|file|data)$/i.test(y));if(u>=0){key=rest.slice(u).join(\":\");rest=rest.slice(0,u);}else if(rest.length&&/^[A-Z]{1,3}\\d{1,2}$/.test(rest[rest.length-1]))key=String(rest.pop());const tx=rest.join(\": \");const bar=tx.indexOf(\"|\");const title=bar>=0?tx.slice(0,bar).trim():name;const body=bar>=0?tx.slice(bar+1).trim():tx;const img=/^(https?|file|data):/i.test(key)?key:KDPR_MEDIA[key]||KDPR_MEDIA[\"PR\"+(i%5+1)]||\"\";let slug=`${day}-${name}`.toLowerCase().replace(/[^a-z0-9]+/g,\"-\");seen[slug]=(seen[slug]||0)+1;if(seen[slug]>1)slug+=\"-\"+seen[slug];return{slug,day:Math.max(0,day),name,title:title||name,body,img,alt:al[i]||\"\"};}).filter(Boolean).slice(0,8).sort((a,b)=>a.day-b.day);};const KdprChev=({back=false})=>/*#__PURE__*/_jsx(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.4\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":true,style:back?{transform:\"scaleX(-1)\"}:undefined,children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14M13 5l7 7-7 7\"})});export default function KdProcess(props){const{eyebrow=\"How we decide\",heading=\"From first e-mail to a term sheet in *fourteen days.*\",lead=\"One partner takes your pitch from the first e-mail to the term sheet. No committee tour and no silence: you always know which day you are on.\",steps=KDPR_STEPS,alts=KDPR_ALTS,days=14,first=1,auto=true,hold=5,cta=\"Pitch us\",ctaLink=\"\",byline=\"Written by one partner\",emptyLine=\"\",words=\"\",bpHint=\"auto\"}=props;const W=kdprWords(words);const c=colorsOf(props);const{D,B,M}=fontsOf(props);useFonts();const live=useLive();const still=useStill();const rm=useReduced();const site=useSite();const root=useRef(null);const rule=useRef(null);const panel=useRef(null);const btns=useRef([]);const{w}=useSize(root,bpHint);const on=useOn(root,live,rm,.1);const go=useOn(rule,live,rm,.5);const seen=useOn(panel,live,rm,.18);const vis=useRef(false);const hov=useRef(false);const foc=useRef(false);const tapAt=useRef(0);const list=useMemo(()=>kdprParse(steps,alts),[steps,alts]);const n=list.length;const N=Math.max(1,Math.round(Number(days)||14),n?Math.ceil(list[n-1].day):1);const k0=Math.max(0,Math.min(Math.max(0,n-1),Math.round(Number(first)||1)-1));const[st,setSt]=useState([k0,0]);const kk=n?Math.min(st[0],n-1):0;const act=n?list[kk]:null;const pick=(i,focus=false)=>{if(!n)return;const j=(i%n+n)%n;tapAt.current=Date.now();setSt(s=>j===s[0]?s:[j,s[1]+1]);if(focus){const b=btns.current[j];if(b)try{b.focus({preventScroll:true});}catch(e){}}};const ms=Math.max(3,Number(hold)||5)*1e3;// it walks the steps by itself; never while a pointer rests on it, a control holds focus, for 10 s after a tap, off-screen, in a hidden tab or with reduced motion\nuseEffect(()=>{if(!live||!auto||rm||n<2||!go)return;const t=window.setInterval(()=>{if(vis.current&&!hov.current&&!foc.current&&Date.now()-tapAt.current>1e4&&!document.hidden)setSt(s=>[(s[0]+1)%n,s[1]+1]);},ms);return()=>window.clearInterval(t);},[live,auto,rm,n,ms,go]);useEffect(()=>{if(!live||!root.current)return;const io=new IntersectionObserver(([en])=>{vis.current=en.isIntersecting;},{threshold:.15});io.observe(root.current);return()=>io.disconnect();},[live]);const vert=w<700;const keys=e=>{const key=e.key;const fw=key===\"ArrowRight\"||key===\"ArrowDown\",bk=key===\"ArrowLeft\"||key===\"ArrowUp\";if(!fw&&!bk&&key!==\"Home\"&&key!==\"End\")return;e.preventDefault();pick(key===\"Home\"?0:key===\"End\"?n-1:kk+(fw?1:-1),true);};const href=T(ctaLink,site.book);const ext=/^https?:\\/\\//.test(href);const p=act?Math.min(100,act.day/N*100):0;const ticks=useMemo(()=>Array.from({length:N+1},(_,i)=>i),[N]);const stepDays=list.map(s=>s.day);const sizes=vert?\"100vw\":\"(max-width: 1199px) 100vw, 62vw\";return /*#__PURE__*/_jsxs(\"section\",{ref:root,\"data-kd-top\":\"light\",\"data-bp\":bpHint,\"data-k\":kk,\"data-n\":n,className:`mw kd-sec kdpr kdpr-y${on?\" is-on\":\"\"}${go?\" is-go\":\"\"}${still?\" is-still\":\"\"}`,style:{...cssVars(c),...B,...props.style},children:[/*#__PURE__*/_jsx(\"link\",{rel:\"stylesheet\",href:FONTS}),/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS_BASE+CSS_MOTION+KDPR_CSS}}),/*#__PURE__*/_jsxs(\"div\",{className:\"kd-wrap kdpr-in\",children:[/*#__PURE__*/_jsxs(\"header\",{className:\"kdpr-top\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"kdpr-hd\",children:[/*#__PURE__*/_jsx(Eyebrow,{text:eyebrow,on:on,M:M}),/*#__PURE__*/_jsx(Head,{text:heading,on:on,D:D,delay:80,size:\"clamp(38px,5.4cqw,84px)\",lh:1})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"kdpr-side\",style:rise(on,240),children:[String(lead||\"\").trim()?/*#__PURE__*/_jsx(\"p\",{className:\"kdpr-lead\",children:lead}):null,String(cta||\"\").trim()?/*#__PURE__*/_jsx(\"span\",{className:\"kd-ony\",children:/*#__PURE__*/_jsxs(\"a\",{className:\"kdpr-cta\",href:href,target:ext?\"_blank\":undefined,rel:ext?\"noopener\":undefined,onClick:e=>jumpTo(e,href),children:[/*#__PURE__*/_jsx(\"span\",{children:cta}),/*#__PURE__*/_jsx(\"i\",{\"aria-hidden\":true,children:/*#__PURE__*/_jsx(BtnArrow,{})})]})}):null]})]}),act?/*#__PURE__*/_jsxs(\"div\",{className:\"kdpr-live\",onPointerEnter:e=>{if(e.pointerType===\"mouse\")hov.current=true;},onPointerLeave:()=>{hov.current=false;},onFocus:()=>{foc.current=true;},onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget))foc.current=false;},children:[/*#__PURE__*/_jsxs(\"div\",{ref:rule,className:\"kdpr-rule\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"kdpr-rh\",children:[/*#__PURE__*/_jsxs(\"p\",{className:\"kdpr-cap\",style:M,children:[/*#__PURE__*/_jsx(\"i\",{\"aria-hidden\":true}),W[0]]}),/*#__PURE__*/_jsxs(\"div\",{className:\"kdpr-nav\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":W[2],onClick:()=>pick(kk-1),children:/*#__PURE__*/_jsx(KdprChev,{back:true})}),/*#__PURE__*/_jsxs(\"span\",{style:M,\"aria-hidden\":true,children:[kdpr2(kk+1),\" / \",kdpr2(n)]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":W[3],onClick:()=>pick(kk+1),children:/*#__PURE__*/_jsx(KdprChev,{})})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"kdpr-tr\",role:\"group\",\"aria-label\":W[6],onKeyDown:keys,style:{[\"--p\"]:p.toFixed(3),[\"--n\"]:N},children:[/*#__PURE__*/_jsx(\"span\",{className:\"kdpr-ln\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"i\",{})}),/*#__PURE__*/_jsx(\"span\",{className:\"kdpr-el\",\"aria-hidden\":true}),N<=31?ticks.map(d=>/*#__PURE__*/_jsx(\"span\",{className:`kdpr-tk${stepDays.indexOf(d)>=0?\" is-s\":\"\"}`,style:{[\"--d\"]:d},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"b\",{style:M,children:d})},d)):null,/*#__PURE__*/_jsx(\"span\",{className:\"kdpr-mk\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"b\",{})}),/*#__PURE__*/_jsxs(\"span\",{className:\"kdpr-big\",\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(\"small\",{style:M,children:W[1]}),/*#__PURE__*/_jsx(\"b\",{style:HD(D),children:/*#__PURE__*/_jsx(Roll,{text:kdpr2(act.day),rm:rm||still})}),/*#__PURE__*/_jsxs(\"small\",{style:M,children:[W[5],\" \",kdpr2(N)]})]}),list.map((s,i)=>{const pos=s.day/N;return /*#__PURE__*/_jsxs(\"button\",{ref:el=>{btns.current[i]=el;},type:\"button\",className:`kdpr-st${i===kk?\" is-on\":\"\"}${i<kk?\" is-done\":\"\"}${pos<.06?\" is-a\":pos>.94?\" is-z\":\"\"}`,style:{[\"--d\"]:s.day},\"aria-pressed\":i===kk,\"aria-label\":`${W[1]} ${kdpr2(s.day)}: ${s.name}`,onClick:()=>pick(i),children:[/*#__PURE__*/_jsx(\"span\",{className:\"kdpr-st-n\",children:s.name}),/*#__PURE__*/_jsx(\"i\",{className:\"kdpr-st-d\",\"aria-hidden\":true})]},s.slug);})]})]}),/*#__PURE__*/_jsxs(\"div\",{ref:panel,className:\"kdpr-panel\",role:\"group\",\"aria-label\":W[7],children:[/*#__PURE__*/_jsxs(\"figure\",{className:`kdpr-ph${seen?\" is-in\":\"\"}`,children:[list.map((s,i)=>{const im=s.img?RS(s.img,sizes):null;return im?/*#__PURE__*/_jsx(\"img\",{className:i===kk?\"is-on\":\"\",src:im.src,srcSet:im.srcSet,sizes:im.sizes,alt:i===kk?s.alt:\"\",\"aria-hidden\":i===kk?undefined:true,loading:\"lazy\",decoding:\"async\",draggable:false},s.slug):null;}),/*#__PURE__*/_jsxs(\"figcaption\",{className:\"kdpr-ph-c\",style:M,children:[/*#__PURE__*/_jsxs(\"b\",{children:[W[1],\" \",kdpr2(act.day)]}),/*#__PURE__*/_jsxs(\"span\",{children:[\"/ \",kdpr2(N)]})]})]}),/*#__PURE__*/_jsx(\"div\",{className:\"kdpr-memos\",children:list.map((s,i)=>/*#__PURE__*/_jsxs(\"article\",{className:`kdpr-memo${i===kk?\" is-on\":\"\"}`,\"aria-hidden\":i===kk?undefined:true,style:{[\"--r\"]:`${KDPR_ROT[i%KDPR_ROT.length]}deg`},children:[/*#__PURE__*/_jsxs(\"p\",{className:\"kdpr-m-top\",style:M,children:[/*#__PURE__*/_jsxs(\"span\",{children:[W[1],\" \",kdpr2(s.day),\" \\xb7 \",s.name]}),/*#__PURE__*/_jsxs(\"span\",{children:[kdpr2(i+1),\" / \",kdpr2(n)]})]}),/*#__PURE__*/_jsx(\"h3\",{className:\"kdpr-m-h\",children:s.title}),s.body?/*#__PURE__*/_jsx(\"p\",{className:\"kdpr-m-p\",children:s.body}):null,/*#__PURE__*/_jsxs(\"div\",{className:\"kdpr-m-ft\",children:[/*#__PURE__*/_jsx(\"span\",{style:M,children:byline}),/*#__PURE__*/_jsxs(\"span\",{className:\"kdpr-stamp\",\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(\"small\",{style:M,children:W[1]}),/*#__PURE__*/_jsx(\"b\",{style:HD(D),children:kdpr2(s.day)}),/*#__PURE__*/_jsx(\"small\",{style:M,children:site.name})]})]})]},s.slug))})]})]}):String(T(emptyLine,W[8])).trim()?/*#__PURE__*/_jsx(\"p\",{className:\"kdpr-empty\",style:M,children:T(emptyLine,W[8])}):null]})]});}// the upright ruler (phones)\nconst kdprV=`\n  .kdpr-tr{height:calc(var(--n)*23px);margin:40px 0 30px}\n  .kdpr-ln{left:38px;right:auto;top:0;bottom:0;width:2px;height:auto} .kdpr-ln i{transform:scaleY(0);transform-origin:50% 0} .kdpr.is-go .kdpr-ln i{transform:scaleY(1)}\n  .kdpr-el{left:36px;right:auto;top:0;bottom:0;width:6px;height:auto;transform:scaleY(0);transform-origin:50% 0} .kdpr.is-go .kdpr-el{transform:scaleY(calc(var(--p)/100))}\n  .kdpr-tk{left:0;top:calc(var(--d)/var(--n)*100%);height:0} .kdpr-tk::before{left:22px;top:-.5px;width:9px;height:1px} .kdpr-tk.is-s::before{left:18px;top:-1px;width:13px;height:2px}\n  .kdpr-tk b{left:0;top:0;translate:0 -50%;width:15px;text-align:right}\n  .kdpr-st,.kdpr-st.is-a,.kdpr-st.is-z{--dx:39px;left:0;top:calc(var(--d)/var(--n)*100%);height:44px;translate:0 -50%;flex-direction:row;align-items:center;padding:0 0 0 64px}\n  .kdpr-st::before{left:47px;top:50%;width:17px;height:1.5px;translate:0 -50%} .kdpr-st-d{top:50%} .kdpr-st-n{height:34px;font-size:14px}\n  .kdpr-mk{left:39px;right:auto;top:0;bottom:0;width:0;height:auto;transform:translate3d(0,calc(var(--p)*1%),0)}\n  .kdpr-big{position:absolute;right:0;top:-12px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none} .kdpr-big small{font-size:11px;line-height:1;letter-spacing:.12em;text-transform:uppercase;color:var(--kd-ink)} .kdpr-big b{font-size:clamp(76px,27cqw,112px);font-weight:600!important;line-height:.86;letter-spacing:-.05em!important;padding-right:.06em;color:var(--kd-ink);font-variant-numeric:tabular-nums}\n`;const KDPR_CSS=`\n.kdpr{--e:cubic-bezier(.2,.8,.2,1);--af:var(--kd-font-a,'Newsreader'),Georgia,'Times New Roman',serif;--ymut:color-mix(in srgb,var(--kd-ink) 78%,var(--kd-brass));container-type:inline-size;container-name:kdpr;overflow:hidden}\n/* the YELLOW ground: every text node on it is ink; muted = ink 78 % mixed into the yellow (7.3:1) */\n.kdpr.kd-sec{background:var(--kd-brass);color:var(--kd-ink)}\n.kdpr.mw{--kd-capfg:var(--kd-ink);--kd-mut:var(--ymut);--kd-acc:var(--kd-ink);--kd-dot:var(--kd-ink);--kd-hair:color-mix(in srgb,var(--kd-ink) 18%,transparent);--kd-hair2:color-mix(in srgb,var(--kd-ink) 36%,transparent)}\n.kdpr .kd-hd .kd-it{font-family:var(--af);font-style:italic;font-weight:400;font-size:1.04em;letter-spacing:-.03em;color:var(--kd-ink)}\n.kdpr .kd-hd.kd-hd{font-weight:600;letter-spacing:-.045em}\n.kdpr-in{padding-top:clamp(76px,7.4cqw,112px);padding-bottom:clamp(76px,7.4cqw,112px)}\n.kdpr-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,400px);gap:28px clamp(32px,5cqw,88px);align-items:end}\n.kdpr-hd{display:flex;flex-direction:column;align-items:flex-start;gap:clamp(16px,1.8cqw,26px)}\n.kdpr-side{display:flex;flex-direction:column;align-items:flex-start;gap:24px;padding-bottom:8px}\n.kdpr-lead{margin:0;font-size:18px;line-height:1.5;color:var(--kd-ink);text-wrap:pretty}\n.kdpr-empty{margin:48px 0 0;font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--kd-ink)}\n/* \\xabPitch us\\xbb on yellow: an ink pill with a round yellow arrow seat; the seat floods the pill on hover / focus and leaves an ink edge (drawn here: the shared Btn has no ink-on-yellow face in this copy) */\n.kd-ony{display:inline-flex;max-width:100%}\n.kdpr-cta{position:relative;display:inline-flex;align-items:center;justify-content:space-between;gap:14px;height:56px;padding:0 8px 0 24px;border-radius:999px;overflow:hidden;isolation:isolate;background:var(--kd-ink);color:var(--kd-cloud);font-size:14.5px;font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .4s,transform .18s} .kdpr-cta:active{transform:scale(.97)}\n.kdpr-cta::before{content:\"\";position:absolute;inset:0;z-index:0;background:var(--kd-brass);clip-path:inset(8px 8px 8px calc(100% - 48px) round 999px);transition:clip-path .55s var(--e)} .kdpr-cta:hover::before,.kdpr-cta:focus-visible::before{clip-path:inset(2px 2px 2px 2px round 999px)}\n.kdpr .kdpr-cta:hover,.kdpr .kdpr-cta:focus-visible{color:var(--kd-ink)}\n.kdpr-cta>span{position:relative;z-index:1} .kdpr-cta>i{position:relative;z-index:1;display:grid;place-items:center;flex:none;width:40px;height:40px;color:var(--kd-ink)} .kdpr-cta svg{display:block;width:15px;height:15px;transform:rotate(-45deg);transition:transform .5s var(--e)} .kdpr-cta:hover svg,.kdpr-cta:focus-visible svg{transform:none}\n/* ---- the day ruler ---- */\n.kdpr-rule{margin-top:clamp(44px,4.6cqw,72px)}\n.kdpr-rh{display:flex;align-items:center;justify-content:space-between;gap:16px}\n.kdpr-cap{display:inline-flex;align-items:center;gap:10px;margin:0;font-size:11.5px;line-height:1.4;letter-spacing:.12em;text-transform:uppercase;color:var(--kd-ink)} .kdpr-cap i{flex:none;width:12px;height:22px;border-radius:8px 8px 2px 2px;background:var(--kd-ink);rotate:12deg;scale:.72}\n.kdpr-nav{display:flex;align-items:center;gap:8px;flex:none} .kdpr-nav span{min-width:62px;text-align:center;font-size:12px;letter-spacing:.08em;color:var(--kd-ink);font-variant-numeric:tabular-nums}\n.kdpr-nav button{display:grid;place-items:center;width:48px;height:48px;margin:0;padding:0;border:0;border-radius:50%;background:transparent;color:var(--kd-ink);box-shadow:inset 0 0 0 1.5px var(--kd-ink);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .35s,color .35s,transform .18s} .kdpr-nav button:hover{background:var(--kd-ink);color:var(--kd-brass)} .kdpr-nav button:active{transform:scale(.94)}\n.kdpr-tr{position:relative;height:122px;margin-top:22px}\n/* KitSteps: the line draws from the first day to the last on entry (one transform) */\n.kdpr-ln{position:absolute;left:0;right:0;top:74px;height:2px;background:var(--kd-hair2);pointer-events:none} .kdpr-ln i{position:absolute;inset:0;display:block;background:var(--kd-ink);transform:scaleX(0);transform-origin:0 50%;transition:transform 1.6s var(--e) .15s} .kdpr.is-go .kdpr-ln i{transform:scaleX(1)}\n/* the days that have passed: a thick ink bar up to the picked step */\n.kdpr-el{position:absolute;left:0;right:0;top:72px;height:6px;background:var(--kd-ink);transform:scaleX(0);transform-origin:0 50%;transition:transform .9s var(--e);pointer-events:none} .kdpr.is-go .kdpr-el{transform:scaleX(calc(var(--p)/100))}\n.kdpr-tk{position:absolute;left:calc(var(--d)/var(--n)*100%);top:82px;width:0;opacity:0;transition:opacity .45s ease calc(var(--d)/var(--n)*1.25s + .2s);pointer-events:none} .kdpr.is-go .kdpr-tk{opacity:1}\n.kdpr-tk::before{content:\"\";position:absolute;left:-.5px;top:0;width:1px;height:9px;background:var(--kd-ink)} .kdpr-tk.is-s::before{left:-1px;width:2px;height:13px}\n.kdpr-tk b{position:absolute;left:0;top:20px;translate:-50% 0;font-size:11px;font-weight:500;line-height:1;letter-spacing:.04em;color:var(--ymut);font-variant-numeric:tabular-nums} .kdpr-tk.is-s b{color:var(--kd-ink);font-weight:600}\n/* the steps: pill buttons standing on the ruler at their day */\n.kdpr-st{--dx:50%;position:absolute;z-index:2;left:calc(var(--d)/var(--n)*100%);top:0;height:98px;min-width:44px;translate:-50% 0;display:flex;flex-direction:column;align-items:center;margin:0;padding:0 8px;border:0;border-radius:20px;background:none;color:var(--kd-ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}\n.kdpr-st.is-a{--dx:22px;translate:-22px 0;align-items:flex-start;padding:0 8px 0 10px} .kdpr-st.is-z{--dx:calc(100% - 22px);translate:calc(-100% + 22px) 0;align-items:flex-end;padding:0 10px 0 8px}\n.kdpr-st::before{content:\"\";position:absolute;left:var(--dx);top:40px;width:1.5px;height:27px;translate:-50% 0;background:var(--kd-ink)}\n.kdpr-st-n{display:inline-flex;align-items:center;height:40px;padding:0 16px;border-radius:999px;font-size:14.5px;font-weight:600;line-height:1;white-space:nowrap;color:var(--kd-ink);box-shadow:inset 0 0 0 1.5px var(--kd-ink);transition:background .35s,color .35s}\n.kdpr-st:hover .kdpr-st-n{background:color-mix(in srgb,var(--kd-ink) 14%,transparent)} .kdpr-st.is-on .kdpr-st-n{background:var(--kd-ink);color:var(--kd-brass)}\n.kdpr-st-d{position:absolute;left:var(--dx);top:75px;translate:-50% -50%;width:16px;height:16px;border-radius:50%;background:var(--kd-brass);box-shadow:inset 0 0 0 2.5px var(--kd-ink);transition:background .35s .3s} .kdpr-st.is-done .kdpr-st-d,.kdpr-st.is-on .kdpr-st-d{background:var(--kd-ink)}\n/* the round ink marker: it travels to the picked step (one transform) */\n.kdpr-mk{position:absolute;z-index:3;left:0;right:0;top:75px;height:0;pointer-events:none;transform:translate3d(calc(var(--p)*1%),0,0);transition:transform .9s var(--e);will-change:transform}\n.kdpr-mk b{position:absolute;left:0;top:0;translate:-50% -50%;display:block;width:30px;height:30px;border-radius:50%;background:var(--kd-ink);box-shadow:0 0 0 6px color-mix(in srgb,var(--kd-ink) 16%,transparent);scale:0;transition:scale .6s var(--e) .35s} .kdpr.is-go .kdpr-mk b{scale:1} .kdpr-mk b::after{content:\"\";position:absolute;inset:10px;border-radius:50%;background:var(--kd-brass)}\n/* phones only: the day of the picked step as a large rolling figure beside the upright ruler */\n.kdpr-big{display:none}\n/* ---- the picked step: its photograph and its memo ---- */\n.kdpr-panel{display:grid;grid-template-columns:minmax(0,1fr) 440px;align-items:center;margin-top:clamp(28px,3cqw,44px)}\n.kdpr-ph{position:relative;margin:0;aspect-ratio:16 / 8.6;border-radius:22px;overflow:hidden;background:color-mix(in srgb,var(--kd-ink) 16%,var(--kd-brass));clip-path:inset(100% 0 0 0 round 22px);transition:clip-path 1.25s cubic-bezier(.7,0,.2,1)} .kdpr-ph.is-in{clip-path:inset(0 0 0 0 round 22px)}\n.kdpr-ph img{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;object-fit:cover;opacity:0;scale:1.05;transition:opacity .6s ease,scale 1.6s var(--e);user-select:none} .kdpr-ph img.is-on{opacity:1;scale:1}\n@media (hover:hover) and (pointer:fine){ .kdpr-ph:hover img.is-on{scale:1.035} }\n.kdpr-ph-c{position:absolute;left:18px;bottom:18px;z-index:2;display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;border-radius:999px;font-size:11.5px;line-height:1;letter-spacing:.1em;text-transform:uppercase;color:var(--kd-ink);background:var(--kd-bone);font-variant-numeric:tabular-nums} .kdpr-ph-c b{font-weight:600} .kdpr-ph-c span{color:color-mix(in srgb,var(--kd-ink) 74%,transparent)}\n/* HEIGHT LAW: every memo lies in ONE grid cell, so the tallest step reserves the height and the band never changes height */\n.kdpr-memos{position:relative;z-index:2;display:grid;margin-left:-88px;min-width:0}\n.kdpr-memo{position:relative;grid-area:1 / 1;display:flex;flex-direction:column;min-width:0;padding:26px 28px 22px;border-radius:10px;color:var(--kd-ink);background:var(--kd-bone);box-shadow:0 34px 60px -26px color-mix(in srgb,var(--kd-ink) 62%,transparent),0 0 0 1px color-mix(in srgb,var(--kd-ink) 8%,transparent);rotate:var(--r);opacity:0;visibility:hidden;translate:0 18px;transition:opacity .28s ease,translate 0s linear .3s,visibility 0s linear .3s}\n.kdpr-memo.is-on{opacity:1;visibility:visible;translate:0 0;transition:opacity .5s ease .1s,translate .7s var(--e) .1s}\n.kdpr-memo::before{content:\"\";position:absolute;inset:7px;border-radius:6px;border:1px solid color-mix(in srgb,var(--kd-ink) 14%,transparent);pointer-events:none}\n.kdpr-m-top{display:flex;justify-content:space-between;gap:16px;margin:0;font-size:11.5px;line-height:1.4;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--kd-ink) 76%,transparent);font-variant-numeric:tabular-nums} .kdpr-m-top span:last-child{flex:none}\n.kdpr-m-h{margin:18px 0 0;font-family:var(--af);font-style:italic;font-weight:400;font-size:clamp(30px,2.5cqw,36px);line-height:1.08;letter-spacing:-.025em;color:var(--kd-ink);text-wrap:balance}\n.kdpr-m-p{margin:14px 0 0;font-size:16.5px;line-height:30px;color:var(--kd-ink);background:repeating-linear-gradient(180deg,transparent 0,transparent 29px,color-mix(in srgb,var(--kd-ink) 15%,transparent) 29px,color-mix(in srgb,var(--kd-ink) 15%,transparent) 30px);text-wrap:pretty}\n.kdpr-m-ft{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex:1;min-height:90px;padding-bottom:2px;background:repeating-linear-gradient(180deg,transparent 0,transparent 29px,color-mix(in srgb,var(--kd-ink) 15%,transparent) 29px,color-mix(in srgb,var(--kd-ink) 15%,transparent) 30px)}\n.kdpr-m-ft>span:first-child{padding:3px 8px 3px 0;font-size:11.5px;line-height:1.45;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--kd-ink) 76%,transparent);background:var(--kd-bone)}\n/* the round ink stamp: pressed on when its memo comes up */\n.kdpr-stamp{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:88px;height:88px;border-radius:50%;color:var(--kd-brass);background:var(--kd-ink);box-shadow:inset 0 0 0 4px var(--kd-ink),inset 0 0 0 5px color-mix(in srgb,var(--kd-brass) 70%,transparent);transform:rotate(-12deg)}\n.kdpr-stamp small{max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;line-height:1;letter-spacing:.14em;text-transform:uppercase;color:var(--kd-cloud)} .kdpr-stamp b{font-size:28px;font-weight:600!important;line-height:.95;font-variant-numeric:tabular-nums}\n.kdpr-memo.is-on .kdpr-stamp{animation:kdpr-press .55s cubic-bezier(.3,1.18,.5,1) .42s both} @keyframes kdpr-press{0%{opacity:0;transform:rotate(-34deg) scale(1.7)}45%{opacity:1}100%{opacity:1;transform:rotate(-12deg) scale(1)}}\n.kdpr.is-still .kdpr-ln i,.kdpr.is-still .kdpr-el,.kdpr.is-still .kdpr-tk,.kdpr.is-still .kdpr-mk,.kdpr.is-still .kdpr-mk b,.kdpr.is-still .kdpr-ph,.kdpr.is-still .kdpr-ph img,.kdpr.is-still .kdpr-memo{transition:none!important} .kdpr.is-still .kdpr-stamp{animation:none!important}\n/* ---- breakpoints (container queries, rules on children only) ---- */\n@container kdpr (max-width:1199px){\n  .kdpr-top{grid-template-columns:minmax(0,1fr);align-items:start} .kdpr-side{max-width:560px;padding-bottom:0}\n  .kdpr-panel{grid-template-columns:minmax(0,1fr)} .kdpr-ph{aspect-ratio:16 / 9}\n  .kdpr-memos{margin:-72px 24px 0 auto;width:min(460px,calc(100% - 48px))}\n  .kdpr-st-n{padding:0 13px;font-size:14px}\n}\n@container kdpr (max-width:699px){\n  .kdpr-lead{font-size:16.5px} .kd-ony,.kdpr-cta{width:100%}\n  .kdpr-rule{margin-top:40px}\n  ${kdprV}\n  .kdpr-panel{margin-top:0} .kdpr-ph{aspect-ratio:4 / 3;border-radius:18px} .kdpr-ph.is-in{clip-path:inset(0 0 0 0 round 18px)} .kdpr-ph-c{left:12px;bottom:auto;top:12px}\n  .kdpr-memos{margin:-44px 10px 0;width:auto} .kdpr-memo{padding:22px 20px 18px;rotate:none} .kdpr-m-h{font-size:28px} .kdpr-m-p{font-size:16px}\n}\n@container kdpr (max-width:349px){ .kdpr-memos{margin:-36px 4px 0} .kdpr-memo{padding:20px 16px 16px} .kdpr-m-top{font-size:10.5px;letter-spacing:.05em} .kdpr-nav span{min-width:54px} }\n@media (prefers-reduced-motion:reduce){ .kdpr-ph{clip-path:inset(0 0 0 0 round 22px)!important;transition:none!important} .kdpr-ph img{scale:1!important} .kdpr-stamp{animation:none!important} .kdpr-ln i,.kdpr-el,.kdpr-mk,.kdpr-mk b,.kdpr-tk,.kdpr-memo,.kdpr-cta::before,.kdpr-cta svg{transition:none!important} }\n`;addPropertyControls(KdProcess,{...COLOR_CONTROLS,...FONT_CONTROLS,...BP_CONTROL,eyebrow:{type:ControlType.String,title:\"Eyebrow\",defaultValue:\"How we decide\"},heading:{type:ControlType.String,title:\"Heading\",description:\"Put *stars* around the italic words. | starts a new line\",defaultValue:\"From first e-mail to a term sheet in *fourteen days.*\",displayTextArea:true},lead:{type:ControlType.String,title:\"Text\",defaultValue:\"One partner takes your pitch from the first e-mail to the term sheet. No committee tour and no silence: you always know which day you are on.\",displayTextArea:true},steps:{type:ControlType.String,title:\"Steps\",description:\"Day:Name:Text:Picture; … (up to 8, five read best). Inside the text, \\xabTitle|rest\\xbb gives the memo its italic title. Picture = PR1 … PR5 or a picture address; leave it out for the stand-in of that position. Do not use ; inside a text\",defaultValue:KDPR_STEPS,displayTextArea:true},alts:{type:ControlType.String,title:\"Picture descriptions\",description:\"One per step, in the same order, separated by ;\",defaultValue:KDPR_ALTS,displayTextArea:true},days:{type:ControlType.Number,title:\"Days on the ruler\",description:\"The last day on the ruler (a later step day stretches it)\",defaultValue:14,min:2,max:31,step:1,displayStepper:true},first:{type:ControlType.Number,title:\"First step\",description:\"The step shown when the page loads\",defaultValue:1,min:1,max:8,step:1,displayStepper:true},auto:{type:ControlType.Boolean,title:\"Walk by itself\",description:\"Off = the step changes only on a tap, a click or the arrow keys\",defaultValue:true},hold:{type:ControlType.Number,title:\"Seconds per step\",defaultValue:5,min:3,max:20,step:.5,unit:\"s\",hidden:p=>!p.auto},cta:{type:ControlType.String,title:\"Button\",description:\"Empty = no button\",defaultValue:\"Pitch us\"},ctaLink:{type:ControlType.Link,title:\"Button link\",description:\"Empty = the Site Book Link\"},byline:{type:ControlType.String,title:\"Memo: small line\",description:\"The mono line at the foot of every memo\",defaultValue:\"Written by one partner\"},emptyLine:{type:ControlType.String,title:\"Empty line\",description:\"Shown when the Steps list is empty. Type a space to show nothing\",defaultValue:\"\"},words:{type:ControlType.String,title:\"Small labels\",description:\"The small fixed words, in this order, separated by ; — The fourteen days; Day; Previous step; Next step; Step; of; Steps; The step in detail; Add steps to the list to show how a decision is made. An empty slot keeps its default\",defaultValue:\"\",displayTextArea:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"KdProcess\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./KdProcess.map"],"mappings":"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"}