{"version":3,"file":"GenerationStage.Ce85ulo8.mjs","names":["useState","useState","useRef","p","React.useMemo","React.useLayoutEffect","useEffect"],"sources":["https:/framerusercontent.com/modules/jaXufr5MiQrTNp06eWxk/m1taMgimxuYoVUMy39ru/CapSwatches.js","https:/framerusercontent.com/modules/oAuPOxPBw2amUxgLrFqV/yyIXIR2FSkIpfrSOuOW7/GenerationStage.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState}from\"react\";// @ts-ignore  (Framer's typecheck cannot resolve sibling code files; they resolve at runtime)\nimport{u,EASE}from\"https://framerusercontent.com/modules/A03zkAaMuSAW3jgsfsHj/oI3MlxSpQ4VIR0CpaRJp/CapStore.js\";const DARK=\"radial-gradient(circle at 34% 28%, #5c5c61 0%, #36363a 26%, #1b1b1e 60%, #0a0a0b 100%)\";const MODEL=\"radial-gradient(circle at 34% 30%, #fbf6ef 0%, #d9c6b1 22%, #8d7562 52%, #3b2f27 82%, #1c1612 100%)\";/** the mesh drawn on a sphere: meridians and parallels, thin, white */function Wire({clip}){const o=.62;return /*#__PURE__*/_jsxs(\"g\",{clipPath:clip,fill:\"none\",stroke:\"#fff\",strokeWidth:.55,strokeOpacity:o,children:[/*#__PURE__*/_jsx(\"ellipse\",{cx:12,cy:12,rx:3.2,ry:10.4}),/*#__PURE__*/_jsx(\"ellipse\",{cx:12,cy:12,rx:7,ry:10.4}),/*#__PURE__*/_jsx(\"line\",{x1:12,y1:1.6,x2:12,y2:22.4}),/*#__PURE__*/_jsx(\"ellipse\",{cx:12,cy:6.6,rx:8.7,ry:1.5}),/*#__PURE__*/_jsx(\"ellipse\",{cx:12,cy:12,rx:10.4,ry:2.1}),/*#__PURE__*/_jsx(\"ellipse\",{cx:12,cy:17.4,rx:8.7,ry:1.5}),/*#__PURE__*/_jsx(\"circle\",{cx:12,cy:12,r:10.4,strokeOpacity:.4})]});}function GlyphSvg({g}){const W=\"rgba(255,255,255,0.94)\";if(g===\"view-all\")return /*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:[[0,1,2,3,4].map(i=>/*#__PURE__*/_jsx(\"rect\",{x:12+(i-2)*3.7-1.15,y:9.4,width:2.3,height:3.8,rx:.6,fill:W,fillOpacity:i===2?1:.62},i)),/*#__PURE__*/_jsx(\"line\",{x1:4.2,y1:14.9,x2:19.8,y2:14.9,stroke:\"#fff\",strokeOpacity:.5,strokeWidth:.6})]});if(g===\"view-one\")return /*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"rect\",{x:8.2,y:6.2,width:7.6,height:7,rx:1.1,fill:W}),[0,1,2,3,4].map(i=>/*#__PURE__*/_jsx(\"circle\",{cx:12+(i-2)*2.6,cy:17.2,r:.75,fill:\"#fff\",fillOpacity:i===2?.95:.5},i))]});if(g===\"view-compare\")return /*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"rect\",{x:5.4,y:7.2,width:5.4,height:6.2,rx:.9,fill:W,fillOpacity:.7}),/*#__PURE__*/_jsx(\"rect\",{x:13.2,y:7.2,width:5.4,height:6.2,rx:.9,fill:W}),/*#__PURE__*/_jsx(\"line\",{x1:12,y1:5.6,x2:12,y2:15,stroke:\"#fff\",strokeWidth:.7,strokeOpacity:.95}),[0,1,2,3,4].map(i=>/*#__PURE__*/_jsx(\"circle\",{cx:12+(i-2)*2.6,cy:17.8,r:.7,fill:\"#fff\",fillOpacity:.45},i))]});if(g===\"look-mesh\")return /*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(Wire,{})});if(g===\"look-both\")return /*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsx(\"clipPath\",{id:\"cap-swr-right\",children:/*#__PURE__*/_jsx(\"rect\",{x:12,y:0,width:12,height:24})})}),/*#__PURE__*/_jsx(Wire,{clip:\"url(#cap-swr-right)\"}),/*#__PURE__*/_jsx(\"line\",{x1:12,y1:.8,x2:12,y2:23.2,stroke:\"#fff\",strokeWidth:.9})]});return null;}const bgOf=g=>g===\"look-model\"||g===\"look-both\"?MODEL:DARK;const CSS=`.cap-swr{display:flex;flex-direction:column;align-items:center;gap:var(--swr-ng);pointer-events:auto}`+`.cap-swr-row{display:flex;gap:var(--swr-g)}`+`.cap-swr-b{position:relative;flex:none;width:var(--swr-s);height:var(--swr-s);border-radius:50%;border:0;padding:0;cursor:pointer;opacity:0.5;transform:scale(0.88);transition:opacity 250ms ${EASE},transform 250ms ${EASE};-webkit-appearance:none;appearance:none;box-shadow:inset 0 0 0 0.5px rgba(255,255,255,0.14);outline:none;overflow:hidden;-webkit-tap-highlight-color:transparent}`+`.cap-swr-b::after{content:\"\";position:absolute;left:50%;top:50%;width:max(100%,36px);height:max(100%,36px);transform:translate(-50%,-50%);border-radius:50%}`+`.cap-swr-b svg{position:absolute;inset:0;width:100%;height:100%;display:block}`+`.cap-swr-b[aria-checked=\"true\"],.cap-swr-b[aria-pressed=\"true\"]{opacity:1;transform:none}`+`@media (hover:hover){.cap-swr-b[aria-checked=\"false\"]:hover,.cap-swr-b[aria-pressed=\"false\"]:hover{opacity:0.78;transform:scale(0.94)}}`+`.cap-swr-b:focus-visible{opacity:1;outline:1.5px solid rgba(255,255,255,0.55);outline-offset:3px}`+// the \"both\" sphere: its left half is the model, its right half the dark ground the wire is drawn on\n`.cap-swr-both::before{content:\"\";position:absolute;left:50%;top:0;right:0;bottom:0;background:${DARK.replace(\"circle at 34% 28%\",\"circle at -16% 28%\")}}`+`.cap-swr-n{font:500 var(--swr-fs)/1 \"ASM Inter Embedded\",\"ASM Inter\",\"Inter\",system-ui,-apple-system,sans-serif;color:#86868b;letter-spacing:-0.005em;white-space:nowrap}`+`.cap-swr-cols{display:flex;gap:var(--swr-cg)}`+`.cap-swr-col{display:flex;flex-direction:column;align-items:center;gap:var(--swr-ng);min-width:var(--swr-s)}`+`.cap-swr-l{font:500 var(--swr-fs)/1 \"ASM Inter Embedded\",\"ASM Inter\",\"Inter\",system-ui,-apple-system,sans-serif;color:#86868b;letter-spacing:-0.005em;white-space:nowrap;transition:color 250ms ${EASE};pointer-events:none}`+`.cap-swr-col[data-on=\"1\"] .cap-swr-l{color:#f5f5f7}`+`@media (hover:hover){.cap-swr-col[data-on=\"0\"]:hover .cap-swr-l{color:#d2d2d7}}`+`.cap-swr-pills{display:flex;gap:var(--swr-pg);pointer-events:auto}`+`.cap-swr-p{position:relative;flex:none;height:var(--swr-ph);padding:0 var(--swr-px);border:0;border-radius:999px;background:transparent;color:#86868b;cursor:pointer;font:500 var(--swr-pf)/1 \"ASM Inter Embedded\",\"ASM Inter\",\"Inter\",system-ui,-apple-system,sans-serif;letter-spacing:-0.005em;white-space:nowrap;transition:color 250ms ${EASE},background-color 250ms ${EASE};-webkit-appearance:none;appearance:none;outline:none;-webkit-tap-highlight-color:transparent}`+`.cap-swr-p::after{content:\"\";position:absolute;left:0;right:0;top:50%;height:max(100%,36px);transform:translateY(-50%)}`+`@media (hover:hover){.cap-swr-p[aria-checked=\"false\"]:hover{color:#d2d2d7}}`+`.cap-swr-p[aria-checked=\"true\"]{color:#f5f5f7;background:rgba(255,255,255,0.08)}`+`.cap-swr-p:focus-visible{outline:1.5px solid rgba(255,255,255,0.55);outline-offset:2px}`;export function SwatchRow(props){const{items,value,onSelect,toggle=false,names=true,unit=u,size=22,gap=14,label=\"How to see it\",className,style,onIntent,pills=false,labels=false}=props;const[hover,setHover]=useState(null);if(pills){const pv={\"--swr-ph\":unit(28,26),\"--swr-px\":unit(12,10),\"--swr-pg\":unit(4,2),\"--swr-pf\":unit(13,12)};return /*#__PURE__*/_jsxs(\"div\",{className:\"cap-swr-pills\"+(className?\" \"+className:\"\"),style:{...pv,...style},role:\"radiogroup\",\"aria-label\":label,\"data-cap-keys\":\"own\",onPointerEnter:onIntent,onTouchStart:onIntent,onFocus:onIntent,children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS}}),items.map(it=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",role:\"radio\",\"aria-checked\":it.id===value,className:\"cap-swr-p\",onClick:()=>onSelect(it.id),children:it.name},it.id))]});}const chosen=items.find(i=>i.id===value)||null;const shown=toggle?items[0]:items.find(i=>i.id===hover)||chosen||items[0];const vars={\"--swr-s\":unit(size,16),\"--swr-g\":unit(gap,10),\"--swr-ng\":unit(10,6),\"--swr-fs\":unit(12,12),\"--swr-cg\":unit(18,12)};const sphere=it=>{const on=it.id===value;const a11y=toggle?{\"aria-pressed\":on}:{role:\"radio\",\"aria-checked\":on};return /*#__PURE__*/_jsx(\"button\",{type:\"button\",...a11y,\"aria-label\":it.name,className:\"cap-swr-b\"+(it.glyph===\"look-both\"?\" cap-swr-both\":\"\"),style:{background:bgOf(it.glyph)},onClick:()=>onSelect(it.id),onPointerEnter:e=>e.pointerType===\"mouse\"&&setHover(it.id),onPointerLeave:()=>setHover(null),children:/*#__PURE__*/_jsx(GlyphSvg,{g:it.glyph})},it.id);};if(labels)return /*#__PURE__*/_jsxs(\"div\",{className:\"cap-swr\"+(className?\" \"+className:\"\"),style:{...vars,...style},\"data-cap-keys\":\"own\",onPointerEnter:onIntent,onTouchStart:onIntent,onFocus:onIntent,children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS}}),/*#__PURE__*/_jsx(\"div\",{className:\"cap-swr-cols\",role:toggle?undefined:\"radiogroup\",\"aria-label\":label,children:items.map(it=>/*#__PURE__*/_jsxs(\"div\",{className:\"cap-swr-col\",\"data-on\":it.id===value?\"1\":\"0\",children:[sphere(it),/*#__PURE__*/_jsx(\"span\",{className:\"cap-swr-l\",\"aria-hidden\":\"true\",children:it.name})]},it.id))})]});return /*#__PURE__*/_jsxs(\"div\",{className:\"cap-swr\"+(className?\" \"+className:\"\"),style:{...vars,...style},\"data-cap-keys\":\"own\",onPointerEnter:onIntent,onTouchStart:onIntent,onFocus:onIntent,children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS}}),/*#__PURE__*/_jsx(\"div\",{className:\"cap-swr-row\",role:toggle?undefined:\"radiogroup\",\"aria-label\":label,children:items.map(it=>{const on=it.id===value;const a11y=toggle?{\"aria-pressed\":on}:{role:\"radio\",\"aria-checked\":on};return /*#__PURE__*/_jsx(\"button\",{type:\"button\",...a11y,\"aria-label\":it.name,className:\"cap-swr-b\"+(it.glyph===\"look-both\"?\" cap-swr-both\":\"\"),style:{background:bgOf(it.glyph)},onClick:()=>onSelect(it.id),onPointerEnter:e=>e.pointerType===\"mouse\"&&setHover(it.id),onPointerLeave:()=>setHover(null),children:/*#__PURE__*/_jsx(GlyphSvg,{g:it.glyph})},it.id);})}),names?/*#__PURE__*/_jsx(\"div\",{className:\"cap-swr-n\",children:shown?shown.name:\"\"}):null]});}/** true while the page's DebugBar is present (it portals its `.cap-db` into the body; inline on the Framer canvas) */export function useDebugPresent(){const[on,setOn]=useState(false);useEffect(()=>{if(typeof document===\"undefined\")return;const check=()=>setOn(!!document.querySelector(\".cap-db\"));check();// the bar mounts after hydration: watch the body's own children (its portal), and look again a little later\nconst mo=typeof MutationObserver!==\"undefined\"?new MutationObserver(check):null;if(mo&&document.body)mo.observe(document.body,{childList:true});const t1=window.setTimeout(check,600);const t2=window.setTimeout(check,2500);return()=>{mo?.disconnect();window.clearTimeout(t1);window.clearTimeout(t2);};},[]);return on;}\nexport const __FramerMetadata__ = {\"exports\":{\"SwatchItem\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SwatchRow\":{\"type\":\"reactComponent\",\"name\":\"SwatchRow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"Glyph\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SwatchRowProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useDebugPresent\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// @ts-ignore  (Framer's typecheck cannot resolve sibling code files; they resolve at runtime)\nimport{u,readU,useReducedMotion,EASE,easeInOut,mediaControls,mediaOn,mediaEntry,mediaEntryNow,familyAddress,pickPoster}from\"https://framerusercontent.com/modules/A03zkAaMuSAW3jgsfsHj/oI3MlxSpQ4VIR0CpaRJp/CapStore.js\";// @ts-ignore  (written by tools/media/media_index.py: the objects of the media index, and every older example id's object)\nimport{MEDIA_OLD}from\"https://framerusercontent.com/modules/AI5GgdsnnbtA2pEJUjw0/8tEO1YuiNvSsOANQazt4/MediaIndex.js\";// @ts-ignore\nimport{LitLine}from\"https://framerusercontent.com/modules/FIQFbLl6lJ6qmjKdmxSC/pyoA4ZFEnlx3qvFDmYDQ/LitWords.js\";// @ts-ignore\nimport{useNear}from\"https://framerusercontent.com/modules/TwTrGC0hPMx1zanjVMML/8zMqacT5te8Z5hdmZsgu/TurnFilm.js\";// @ts-ignore\nimport{PreviewStage}from\"https://framerusercontent.com/modules/QqosiP2P1OFwtXzsAmTQ/jxZfDJJ82Brq0fSeNdUr/PreviewPlayer.js\";// @ts-ignore  (the frosted pill, written once in the sphere buttons: QUEUE C5)\nimport{FROSTED}from\"https://framerusercontent.com/modules/AXutPuIWquC7pKDnMryH/KugmKEExxDbZx11j5ToS/SphereButtons.js\";// @ts-ignore  (the kit's pageStyle: a piece's CSS written once into the page's head, job C, 2026-10-22)\nimport{pageStyle}from\"https://framerusercontent.com/modules/ceLqdgsWq97YSuxuxJxP/Og5m55B5hghZ9cZxlQ0q/Kit.js\";const WAYS=[\"photo\",\"photos\",\"sketch\",\"words\",\"model\"];/**\n * Each way's examples, in order; the first is shown first. Only his Starred models (the model library,\n * https://claude.ai/artifact/Xy3H3FELFPe3HAxV9fenvS), except where a way has none and he named the example.\n *   - image: his order (2026-10-14 00:58 UTC): the coiled stone sculpture, the carved wood totem, then Starred ones\n *     chosen by looking at each model and its image (generation's call, ASM2-MEDIA/sheets/gen-examples/starred.jpg): the\n *     object taken out of a busy room photo (the red marble bowl), reflections (the black marble vase), fine organic\n *     detail (the pampas), fabric and a throw (the velvet chair), the rope shade on cobalt glass, green marble.\n *   - sketch: the vanity (his message); several images, words and 3D model: the examples they had.\n */const DEFAULT_LISTS={photo:[\"normal-05-coiled-stone-sculpture\",\"normal-10-carved-wood-totem\",\"normal-28-red-marble-bowl\",\"normal-11-black-marble-vase\",\"normal-54-pampas-and-thistles-in-a-marble-vase\",\"normal-34-velvet-dining-chair\",\"normal-56-table-lamp-rope-shade\",\"normal-16-green-marble-table-on-spheres\"],photos:[\"gen-photos-armchair\"],sketch:[\"gen-sketch-vanity\"],words:[\"gen-words-sofa\"],model:[\"gen-model-armchair\"]};/**\n * Words given with a sketch, where the generation's own record has none (CapMedia data.prompt is null: \"none found\" in\n * the vanity's pack). WRITTEN BY GENERATION (2026-10-14), reasoned from the vanity's sketch and its labels; not his\n * words and not ASM 2's record. Replace with the real prompt when he gives it.\n */const WRITTEN_PROMPTS={\"gen-sketch-vanity\":{text:\"A bathroom vanity with a travertine stone basin, a brass faucet and floating dark walnut drawers.\",lit:[\"travertine stone\",\"brass\",\"dark walnut\"]}};const DEFAULT_LABELS=\"Image, Several, Sketch, Words, 3D model\";const LIST_KEYS={photo:\"photoList\",photos:\"photosList\",sketch:\"sketchList\",words:\"wordsList\",model:\"modelList\"};/** the house fade */const FADE_MS=400;/** seconds the moving on waits after a hand, a click or a change from outside */const HOLD_S=30;/**\n * THE STEPS (QUEUE R3): the page's movement to a step after a click takes ScreenSnap's pace for one window (800 ms, its\n * `pace`), a little more for several; the way holds within this share of a step either side of the half way, so a\n * page resting near the half never flickers; the stage's own change of way, coming back from the native list as\n * \"Starts on\", is known for this long\n */const STEP_PACE_MS=800;const STEP_HOLD=.04;const ECHO_MS=1500;/** the phone: the input stands alone this long, then the result takes the cell */const PHONE_INPUT_MS=2200;/** the lingering turn: the readable angles last longer (the clock's dwell) */const DWELL_K=1.5;/** the stage's layout, in the page unit (the Comparator's, round 8) */const STAGE_LABEL_TOP=12;const STAGE_LABEL_GAP=24;const STAGE_SIDE=32;const STAGE_DIAL=30;const STAGE_FILL=.86;/** the pair on the line: the given and the result each this far from it (page unit; the phone shows one at a time) */const PAIR_GAP=64;/** the stage's bottom: the next control's room under the dial (desktop, page unit; the phone, phone px) */const STAGE_BOTTOM=72;const PHONE_BOTTOM=56;/** \"Only this way\" with one example: no next control, so the floor keeps only a little air under the dial */const ONLY_BOTTOM=14;const ONLY_BOTTOM_PHONE=20;/** a given's box in the input cell: this share of the cell's height and width */const INPUT_H=.62;const INPUT_W=.86;/** several images: the grid stands in this share of the cell's height; a sketch with its words: the two together */const GRID_H=.8;const SKETCH_H=.9;/** the grid's gap, page unit */const GRID_GAP=10;/**\n * The sketch card never comes nearer the native list than its gap at 1496 × 778, 87.5% (103 px there; the lead's\n * guard of 2026-10-14): page unit. The list's text ends this far from the piece's left when it cannot be measured\n * (measured at six windows: the native list follows the unit)\n */const LIST_CLEAR=90;const LIST_TEXT_U=206.5;/**\n * THE WORDS ALONE, set as the first version set them (the lead's fix of 2026-10-14, after his message of 06:45 UTC; the\n * round-1 stage of 2026-10-07 and PLAN §15): Inter Tight 500 at 22 u, line height 1.3, centred, balanced in a measure\n * of 360 u (page unit), the block centred on the image way's photo card; its widest line never nearer the line than\n * 32 u (WORDS_CLEAR, the first version's clearance: its words moved left only as far as they had to, to stay 32 u clear\n * of the result). The phone: 20 phone px, the phone's type step above its 17 px description; the same measure in em,\n * never wider than the cell.\n */const WORDS_SIZE=22;const WORDS_LH=1.3;const WORDS_MEASURE=360;const WORDS_CLEAR=32;const WORDS_PHONE=20;const clamp=(v,a,b)=>Math.max(a,Math.min(b,v));/** a layout effect in the browser (measured before paint), an effect where there is no window */const useIsoLayoutEffect=typeof window!==\"undefined\"?React.useLayoutEffect:useEffect;const nowMs=()=>typeof performance!==\"undefined\"?performance.now():Date.now();// ---- the media index (a copy in each piece until CapStore holds it: CapStore is job E's) ----\n/** the entries of these objects of the media index, each fetched once for the page (CapStore's mediaEntry) when\n *  `want`; one the page has already is used at once. The piece renders again as each arrives. `settled` says whether\n *  an object's fetch is over (arrived, or given up after its retries), so a list waits for all of its entries. */function useEntries(ids,want){const key=Array.from(new Set(ids.filter(Boolean))).join(\"|\");const[,bump]=useState(0);const done=useRef(new Set);useEffect(()=>{if(!want||!key)return;let alive=true;for(const id of key.split(\"|\")){if(mediaEntryNow(id))continue;mediaEntry(id).then(()=>{done.current.add(id);if(alive)bump(n=>n+1);});}return()=>{alive=false;};},[key,want]);const entries={};for(const id of key?key.split(\"|\"):[])entries[id]=mediaEntryNow(id);return{entries,settled:id=>!!entries[id]||done.current.has(id)};}/** the object of the media index an older example id belongs to (a CapMedia id or an examples gallery id), or \"\" */const objectOf=id=>id&&MEDIA_OLD[String(id).trim()]||\"\";/** an older CapMedia example (name, files, data), from its object's entry; null while the entry is on its way */function oldItem(id,entries){const e=entries[objectOf(id)];return e&&e.examples&&e.examples[id]||null;}/** an examples gallery record by its id (the gallery's ids are its objects' ids), from its object's entry */function galleryRecord(id,entries){const e=entries[objectOf(id)];return e&&e.gallery&&e.gallery.id===id?e.gallery:null;}/** an older CapMedia example from the index, with what a bench lays over it (window.__capMediaOverride, the harness) */function capItem(id,entries){return withOverride(id,oldItem(id,entries));}function withOverride(id,m){const o=typeof window!==\"undefined\"?window.__capMediaOverride?.[id]:null;if(!m&&!o)return null;return{files:{...m&&m.files||{},...o&&o.files||{}},data:{...m&&m.data||{},...o&&o.data||{}}};}/**\n * capRung (cap/CapMedia.tsx's, copied unchanged so this piece no longer loads CapMedia; it belongs in CapStore): the\n * rung of an item's ladder (`key` in data: \"ladder\", \"beforeLadder\") whose long side is at least 97% of the drawn long\n * side `drawnLong` (device px), above the largest the largest; without that ladder film2048 / film1024; null without\n * either. Only the fields this piece reads are returned (src, poster, long).\n */function capRung(m,drawnLong,key=\"ladder\"){if(!m)return null;const need=Math.max(0,Number(drawnLong)||0)*.97;const L=m.data?m.data[key]:null;if(L&&Array.isArray(L.rungs)&&L.files){const have=L.rungs.map(Number).filter(r=>{const f=L.files[r];return typeof f===\"string\"?!!m.files[f]:!!(f&&m.files[f.webm]);}).sort((a,b)=>a-b);if(have.length){const r=have.find(x=>x>=need)??have[have.length-1];const f=L.files[r];if(typeof f===\"string\")return{src:m.files[f],poster:m.files[f+\"Poster\"]||m.files.poster||\"\",long:r};return{src:m.files[f.webm],poster:m.files[f.poster]||\"\",long:r};}}const big=m.files.film2048;const small=m.files.film1024;if(!big&&!small)return null;const useSmall=!!small&&(!big||1024>=need);return{src:useSmall?small:big,poster:m.files.poster||\"\",long:useSmall?1024:2048};}/** pictures' shapes (width over height) measured once for the page: a picture an upload or an entry gives without\n *  its size (on globalThis, so every copy of the piece shares them) */const SHAPES=globalThis.__capGenShapes||={a:new Map,asked:new Set,subs:new Set};/** set while a way's examples were being made and a picture's shape was still on its way (the way waits for it) */let shapeWait=false;/** a picture's shape: > 0 known, -1 it failed to load, 0 not known yet (it is measured once `load`) */function shapeOf(src,load){const k=SHAPES.a.get(src);if(k)return k;shapeWait=true;if(load&&src&&typeof Image!==\"undefined\"&&!SHAPES.asked.has(src)){SHAPES.asked.add(src);const im=new Image;im.crossOrigin=\"anonymous\";const done=a=>{SHAPES.a.set(src,a);SHAPES.subs.forEach(f=>f());};im.onload=()=>done(im.naturalWidth>0&&im.naturalHeight>0?im.naturalWidth/im.naturalHeight:-1);im.onerror=()=>done(-1);im.src=src;}return 0;}const cap1=s=>s?s.charAt(0).toUpperCase()+s.slice(1):\"\";/** an example of the examples gallery (his folders), as this stage shows it */function fromGallery(e,way){const r=e&&e.result;if(!r||!r.src)return null;const pics=(e.images||[]).map(im=>({src:im.src,small:im.card&&im.card!==im.src?im.card:undefined,smallLong:720,a:im.px&&im.px[0]>0&&im.px[1]>0?im.px[0]/im.px[1]:1}));const prompt=typeof e.prompt===\"string\"?e.prompt.trim():\"\";let given=null;const glit=Array.isArray(e.lit)?e.lit.filter(x=>typeof x===\"string\"&&x.trim()):[];if(way===\"words\"&&prompt)given={kind:\"words\",text:cap1(prompt),lit:glit};else if(way===\"sketch\"&&pics.length)given={kind:\"sketch\",pic:pics[0],text:cap1(prompt),lit:[],written:false};else if(pics.length)given={kind:\"images\",pics};if(!given)return null;return{id:e.id,name:e.name||e.id,given,result:{...r},thumb:r.posterSmall||r.poster||\"\"};}/** a CapMedia ladder (`key`: \"ladder\", \"beforeLadder\") as PreviewPlayer's rungs, smallest first; undefined without one */function rungsOf(m,key){const L=m.data?m.data[key]:null;if(!L||!Array.isArray(L.rungs)||!L.files)return undefined;const rs=L.rungs.map(Number).sort((a,b)=>a-b).map(r=>{const f=L.files[r];return typeof f===\"string\"&&m.files[f]?{long:r,src:m.files[f],poster:m.files[f+\"Poster\"]||undefined}:null;}).filter(Boolean);return rs.length?rs:undefined;}/** a CapMedia item (the recipes), as this stage shows it. `bySize` (the \"Films by size\" option, v8): each film carries\n *  its ladder, so PreviewPlayer plays the smallest rung that covers the size it is drawn at */function fromCap(id,m,way,bySize=false){if(!m)return null;const f=m.files;const d=m.data||{};const env=Array.isArray(d.preview?.envelope)&&d.preview.envelope.length===4?d.preview.envelope:[.15,.15,.85,.9];const r2=capRung(m,2048);const r1=capRung(m,1024);const result={src:f.film2048||r2&&r2.src||f.film1024||\"\",scrub:r1&&r1.src||f.film1024||undefined,srcSmall:r1&&r1.src||f.film1024||undefined,poster:r2&&r2.poster||f.poster||undefined,posterSmall:r1&&r1.poster||f.poster||undefined,extent:{left:env[0],top:env[1],right:env[2],floor:env[3]},fps:Number(d.preview?.fps)||20,turnFrames:Math.max(1,(Number(d.preview?.frames)||160)-1)};if(bySize){const rs=rungsOf(m,\"ladder\");if(rs)Object.assign(result,{rungs:rs,scrub:undefined});}if(!result.src)return null;const leg=d.legibility;const dwell=Array.isArray(leg)&&leg.length>=4?leg:undefined;const size=(k,dflt)=>{const s=d[k];return s&&s.width>0&&s.height>0?s.width/s.height:dflt;};const lit=Array.isArray(d.lit)?d.lit:[];let given=null;if(way===\"photos\"){const pics=[1,2,3,4].map(i=>({src:f[`photo${i}Small`]||f[`photo${i}`]||\"\",a:size(`photo${i}Small`,i===1?1:.7467)})).filter(x=>!!x.src);if(pics.length)given={kind:\"images\",pics};}else if(way===\"sketch\"){// the whole drawing (never the stage crop): inputs are shown whole\nconst src=f.sketch||f.sketchStage||\"\";const own=String(d.prompt||\"\").trim();const w=WRITTEN_PROMPTS[id];if(src)given={kind:\"sketch\",pic:{src,a:size(\"sketch\",1)},text:own?cap1(own):w?w.text:\"\",lit:own?lit:w?w.lit:[],written:!own&&!!w};}else if(way===\"words\"){const t=String(d.prompt||d.request||\"\").trim();if(t)given={kind:\"words\",text:cap1(t),lit};}else if(way===\"model\"){const rb2=capRung(m,2048,\"beforeLadder\");const rb1=capRung(m,1024,\"beforeLadder\");const src=f.before2048||rb2&&rb2.src||f.before1024||\"\";// the original was rendered on the result's own camera: its turn stands where the result's does\nif(src)given={kind:\"model\",source:{src,srcSmall:f.before1024||rb1&&rb1.src||undefined,poster:rb2&&rb2.poster||undefined,posterSmall:rb1&&rb1.poster||undefined,extent:result.extent,fps:result.fps,turnFrames:result.turnFrames,...bySize&&rungsOf(m,\"beforeLadder\")?{rungs:rungsOf(m,\"beforeLadder\")}:{}}};}else{const src=f.photo||\"\";if(src)given={kind:\"images\",pics:[{src,a:552/666}]};}if(!given)return null;// (the name: the id, as before: the item handed here never carried CapMedia's name)\nreturn{id,name:id,given,result,dwell,thumb:f.ladder1024Poster||f.poster||\"\"};}/** an older example id: the examples gallery's record first, else CapMedia's item (as before), both from the index */function exampleOf(id,way,bySize,entries){const e=galleryRecord(id,entries);return e?fromGallery(e,way):fromCap(id,capItem(id,entries),way,bySize);}/** the items of a way's object list that show something: an object of the index, or an upload with its film */function usableItems(v){return(Array.isArray(v)?v:[]).filter(x=>x&&mediaOn(x)&&(x.from!==\"upload\"||!!x.filmFile));}const FALLBACK_EXTENT={left:.15,top:.15,right:.85,floor:.9};const pictureSrc=v=>!v?\"\":typeof v===\"string\"?v:v.src||\"\";/** what an object's entry holds, as this stage shows it (an object with neither a gallery record nor an older example\n *  of the way): its preview as the result, its photo(s) or sketch as the given, its input film as a 3D model given */function fromEntry(e,way,load){const main=e.films&&e.films.main;const fam=main?familyAddress(main.family):\"\";if(!fam)return null;const n=e.numbers||{};const extent=n.extent||FALLBACK_EXTENT;const fps=Number(n.fps)||20;const turnFrames=Number(n.turnFrames)||Math.max(1,(Number(n.frames)||160)-1);const result={src:fam,poster:main.poster||pickPoster(fam,2048)||undefined,posterSmall:main.poster||pickPoster(fam,1024)||undefined,extent,fps,turnFrames};const pics=names=>names.map(k=>(e.pictures||{})[k]).filter(Boolean).map(src=>({src,a:shapeOf(src,load)}));let given=null;if(way===\"photo\"||way===\"photos\"){const ps=pics(way===\"photo\"?[\"photo\"]:[\"photo\",\"photo 2\",\"photo 3\"]);if(ps.length&&ps.every(x=>x.a>0))given={kind:\"images\",pics:ps};}else if(way===\"sketch\"){const ps=pics([\"sketch\"]);if(ps.length&&ps[0].a>0)given={kind:\"sketch\",pic:ps[0],text:\"\",lit:[],written:false};}else if(way===\"model\"){const inp=e.films&&e.films.input;const ifam=inp?familyAddress(inp.family):\"\";if(ifam)given={kind:\"model\",source:{src:ifam,poster:pickPoster(ifam,2048)||undefined,posterSmall:pickPoster(ifam,1024)||undefined,extent,fps,turnFrames}};}if(!given)return null;return{id:e.id,name:e.title||e.id,given,result,thumb:pickPoster(fam,512)||\"\"};}/** an object of the index in way `way`: in the image way its gallery record first, then an older example of it that\n *  has this way's given (\"gen-\" ids, the stage's own, first), then its entry; in the other ways an older example first,\n *  then the gallery record, then its entry. An upload: its film as the result, its picture as the given (image,\n *  several images, sketch), the Words field as the words; the 3D model way has no upload */function fromItem(x,way,bySize,entries,p,load){if(x.from===\"upload\"){const film=String(x.filmFile||\"\");if(!film)return null;const pic=pictureSrc(x.pictureFile);const a=pic?shapeOf(pic,load):0;let given=null;if((way===\"photo\"||way===\"photos\")&&pic&&a>0)given={kind:\"images\",pics:[{src:pic,a}]};else if(way===\"sketch\"&&pic&&a>0)given={kind:\"sketch\",pic:{src:pic,a},text:\"\",lit:[],written:false};else if(way===\"words\"&&(p.words||\"\").trim())given={kind:\"words\",text:p.words.trim(),lit:[]};if(!given)return null;return{id:\"upload:\"+film,name:\"Uploaded example\",given,result:{src:film,extent:FALLBACK_EXTENT,fps:20,turnFrames:159},thumb:\"\"};}const e=entries[String(x.object||\"\")];if(!e)return null;const olds=Object.keys(e.examples||{}).sort((a,b)=>Number(!a.startsWith(\"gen-\"))-Number(!b.startsWith(\"gen-\")));const fromOld=()=>{for(const id of olds){const g=fromCap(id,withOverride(id,e.examples[id]),way,bySize);if(g)return g;}return null;};const fromGal=()=>e.gallery?fromGallery(e.gallery,way):null;return(way===\"photo\"?fromGal()||fromOld():fromOld()||fromGal())||fromEntry(e,way,load);}const DEFAULTS={layout:\"desktop\",way:\"photo\",photoList:\"\",photosList:\"\",sketchList:\"\",wordsList:\"\",modelList:\"\",words:\"\",wordsKeys:\"\",sketchWords:\"\",sketchKeys:\"\",labels:DEFAULT_LABELS,inputLabel:\"Input\",resultLabel:\"Result\",listW:270,listGap:40,inputShare:40,hint:\"Drag to turn\",most:572,scanEngine:\"\"};const OBJ_KEYS={photo:\"photoObjects\",photos:\"photosObjects\",sketch:\"sketchObjects\",words:\"wordsObjects\",model:\"modelObjects\"};/** whether a way's object list has an item that shows something (then it replaces the way's older list) */const hasObjects=v=>usableItems(v).length>0;/** the objects of the index each way needs (with \"Only this way\", only that way's): its object list's objects, else\n *  its older ids' objects (and the code's list, where the older ids give nothing once theirs are in) */function needOf(p,entries,settled){const out={};for(const w of WAYS){if(p.only&&w!==p.way){out[w]=[];continue;}const items=usableItems(p[OBJ_KEYS[w]]);if(items.length){out[w]=items.filter(x=>x.from!==\"upload\").map(x=>String(x.object));continue;}const own=ownIds(p,w);const ids=(own.length?own:DEFAULT_LISTS[w]).map(objectOf).filter(Boolean);// the code's list is the fallback when the instance's ids show nothing: asked for once those are in\nconst fall=own.length&&ids.every(settled)&&!own.some(id=>exampleOf(id,w,!!p.rungs,entries))?DEFAULT_LISTS[w].map(objectOf).filter(Boolean):[];out[w]=ids.concat(fall);}return out;}const ownIds=(p,w)=>String(p[LIST_KEYS[w]]||\"\").split(/[,\\n]/).map(s=>s.trim()).filter(Boolean);/** each way's examples, once every entry the way needs is in (a way still waiting has none: it shows nothing yet) */function listsOf(p,entries,need,settled,load){const out={};for(const w of WAYS){if(p.only&&w!==p.way||!need[w].every(settled)){out[w]=[];continue;}const items=usableItems(p[OBJ_KEYS[w]]);let xs;if(items.length){shapeWait=false;xs=items.map(x=>fromItem(x,w,!!p.rungs,entries,p,load)).filter(Boolean);// a picture given without its size (an upload, an entry's photo) is measured first: the way waits for it\nif(shapeWait){shapeWait=false;out[w]=[];continue;}}else{const own=ownIds(p,w);const ids=own.length?own:DEFAULT_LISTS[w];xs=ids.map(id=>exampleOf(id,w,!!p.rungs,entries)).filter(Boolean);if(!xs.length)xs=DEFAULT_LISTS[w].map(id=>exampleOf(id,w,!!p.rungs,entries)).filter(Boolean);}// the instance's own words win for the first example of the words and sketch ways\nif(w===\"words\"&&xs[0]&&xs[0].given.kind===\"words\"&&(p.words||\"\").trim()){const keys=(p.wordsKeys||\"\").split(\",\").map(s=>s.trim()).filter(Boolean);xs[0]={...xs[0],given:{kind:\"words\",text:p.words.trim(),lit:keys.length?keys:xs[0].given.lit}};}if(w===\"sketch\"&&xs[0]&&xs[0].given.kind===\"sketch\"&&(p.sketchWords||\"\").trim()){const keys=(p.sketchKeys||\"\").split(\",\").map(s=>s.trim()).filter(Boolean);xs[0]={...xs[0],given:{...xs[0].given,text:p.sketchWords.trim(),lit:keys.length?keys:xs[0].given.lit,written:false}};}out[w]=xs;}return out;}// ---------------------------------------------------------------------------------------------------------------------\n// The givens\n// ---------------------------------------------------------------------------------------------------------------------\nfunction Pic(props){const ref=useRef(null);const[ok,setOk]=useState(false);useEffect(()=>{const im=ref.current;setOk(!!(im&&im.complete&&im.naturalWidth>0));},[props.src,props.load]);if(!props.load||!props.src)return null;return /*#__PURE__*/_jsx(\"img\",{ref:ref,src:props.src,alt:\"\",crossOrigin:\"anonymous\",decoding:\"async\",draggable:false,\"data-ok\":ok?\"1\":\"0\",onLoad:()=>setOk(true)});}/** the copy to draw a picture `longCss` CSS px on its long side: the small copy where it covers the device px */function picUrl(pic,longCss){const dpr=typeof window===\"undefined\"?1:Math.min(2,window.devicePixelRatio||1);return pic.small&&longCss*dpr<=(pic.smallLong||720)*1.03?pic.small:pic.src;}/**\n * Several images in the box (gw × gh, CSS px), every one whole at its own shape, `g` apart:\n *   grid: two to a row at one height, a last odd one centred under them (two; four: two by two);\n *   bento: the first large, the others stacked beside it in one column (three).\n * Returns the tiles and the group's size; the group is centred by its host.\n */function gridOf(as,gw,gh,g,mode){const n=as.length;if(!n||gw<=0||gh<=0)return{tiles:[],w:0,h:0};if(n===1){const h=Math.min(gh,gw/as[0]);return{tiles:[{x:0,y:0,w:h*as[0],h}],w:h*as[0],h};}if(mode===\"bento\"&&n>=2){// the first at height H; the rest stacked in one column beside it, each (H - (k - 1) g) / k tall\nconst k=n-1;const rest=as.slice(1);const amax=Math.max(...rest);const byW=(gw-g+amax*(k-1)*g/k)/(as[0]+amax/k);const H=Math.min(gh,byW);const sh=(H-(k-1)*g)/k;const tiles=[{x:0,y:0,w:H*as[0],h:H}];const x1=H*as[0]+g;rest.forEach((a,i)=>tiles.push({x:x1,y:i*(sh+g),w:sh*a,h:sh}));return{tiles,w:x1+sh*amax,h:H};}const rows=[];for(let i=0;i<n;i+=2)rows.push(i+1<n?[i,i+1]:[i]);const sumMax=Math.max(...rows.map(r=>r.reduce((s,i)=>s+as[i],0)));const most=Math.max(...rows.map(r=>r.length));const h=Math.min((gh-(rows.length-1)*g)/rows.length,(gw-(most-1)*g)/sumMax);const tiles=new Array(n);let W=0;rows.forEach((r,ri)=>{const rw=r.reduce((s,i)=>s+as[i]*h,0)+(r.length-1)*g;W=Math.max(W,rw);});rows.forEach((r,ri)=>{const rw=r.reduce((s,i)=>s+as[i]*h,0)+(r.length-1)*g;let x=(W-rw)/2;r.forEach(i=>{tiles[i]={x,y:ri*(h+g),w:as[i]*h,h};x+=as[i]*h+g;});});return{tiles,w:W,h:rows.length*h+(rows.length-1)*g};}// ---------------------------------------------------------------------------------------------------------------------\n// The next control (under the line): the quiet way to the way's other examples (his message of 2026-10-14 01:55 UTC: no\n// pictures of the next examples, nothing crowding; a way to move to the next if the reader wants to)\n// ---------------------------------------------------------------------------------------------------------------------\nconst CHEVRON=dir=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 16 16\",width:\"100%\",height:\"100%\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:dir>0?\"M6.25 3.5 L10.75 8 L6.25 12.5\":\"M9.75 3.5 L5.25 8 L9.75 12.5\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});function NextControl(props){const{items,index}=props;const n=items.length;const go=d=>props.onPick((index+d+n)%n);// the figures keep one width (tabular), so the pill never changes size from one example to the next\nconst digits=String(n).length+\"ch\";const onKey=e=>{if(e.key!==\"ArrowLeft\"&&e.key!==\"ArrowRight\")return;e.preventDefault();go(e.key===\"ArrowRight\"?1:-1);};return /*#__PURE__*/_jsxs(\"div\",{className:\"cap-gs-next\",role:\"group\",\"aria-label\":\"Examples\",\"data-cap-keys\":\"own\",onKeyDown:onKey,children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"cap-gs-arrow\",\"aria-label\":\"Previous example\",onClick:()=>go(-1),children:/*#__PURE__*/_jsx(\"span\",{className:\"cap-gs-chev\",children:CHEVRON(-1)})}),/*#__PURE__*/_jsxs(\"span\",{className:\"cap-gs-count\",\"aria-live\":\"polite\",\"aria-label\":`Example ${index+1} of ${n}: ${items[index]?items[index].name:\"\"}`,children:[/*#__PURE__*/_jsx(\"b\",{style:{minWidth:digits},children:index+1}),/*#__PURE__*/_jsx(\"i\",{children:\"/\"}),/*#__PURE__*/_jsx(\"span\",{style:{minWidth:digits},children:n})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"cap-gs-arrow\",\"aria-label\":\"Next example\",onClick:()=>go(1),children:/*#__PURE__*/_jsx(\"span\",{className:\"cap-gs-chev\",children:CHEVRON(1)})})]});}// ---------------------------------------------------------------------------------------------------------------------\n// The look\n// ---------------------------------------------------------------------------------------------------------------------\nconst SATIN=\"rgba(255,255,255,0.14)\";const CSS=`.cap-gs{position:relative;width:100%;height:100%;pointer-events:none;container-type:size}`+// THE AREAS, FROM THE FRAME (PLAN §17, §28). The composition's height --gs-H (below his MacBook's scale, --u under\n// 1 px, the composition's own 572 u; from 1 px up the whole frame) stands on the frame's floor. Across it: the list's\n// column (native, left empty here) and its gap, then the stage (\"Input\" | the line | \"Result\").\n`.cap-gs-in{position:absolute;inset:0;`+`--gs-most:calc(var(--gs-m) + max(0px, (var(--u, 1px) - 1px) * 100000));`+`--gs-H:max(1px, min(100cqh, var(--gs-most)));`+`--gs-top:calc(100cqh - var(--gs-H));`+`--gs-x0:calc(var(--gs-lw) + var(--gs-lg));`+`--gs-r:${u(10)}}`+`.cap-gs-stage{position:absolute;left:var(--gs-x0);right:0;top:var(--gs-top);height:var(--gs-H);pointer-events:auto}`+// the input cell: the given centred in the cell's box\n`.cap-gs-input{position:absolute;inset:0;pointer-events:none}`+// the given that leaves (another example or way) fades out while the new one comes in\n`.cap-gs-leaving{transition:opacity ${FADE_MS}ms ${EASE}}`+`.cap-gs-given{position:absolute}`+`.cap-gs-shot{position:absolute;border-radius:var(--gs-r);overflow:hidden}`+`.cap-gs-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;-webkit-user-drag:none;opacity:0;transition:opacity ${FADE_MS}ms ${EASE}}`+`.cap-gs-shot img[data-ok=\"1\"]{opacity:1}`+// the words given with a sketch, under it (a prompt is plain text that writes itself in, then its key words light)\n`.cap-gs-prompt{position:absolute;text-align:center;font-family:\"ASM Inter Embedded\",\"ASM Inter\",\"Inter\",system-ui,sans-serif;font-weight:400;font-size:${u(15,13)};line-height:1.45;letter-spacing:-0.005em;text-wrap:pretty}`+// the words alone, as the input\n`.cap-gs-wordsbox{display:flex;align-items:center;justify-content:center}`+`.cap-gs-words{display:block;max-width:100%;font-family:\"ASM Inter Tight Embedded\",\"ASM Inter Tight\",\"Inter Tight\",\"Inter\",system-ui,sans-serif;font-weight:500;font-size:${u(WORDS_SIZE,13)};line-height:${WORDS_LH};letter-spacing:-0.02em;text-wrap:balance;text-align:center}`+`.cap-gs-hint{position:absolute;transform:translateX(-50%);white-space:nowrap;text-align:center;font-family:\"Inter\",\"Inter Placeholder\",system-ui,sans-serif;font-weight:400;font-size:${u(13,12)};line-height:1.2;color:rgb(134,134,139);opacity:0;transition:opacity ${FADE_MS}ms ${EASE};pointer-events:none}`+// THE NEXT CONTROL (QUEUE R2): one frosted pill centred under the line, made from the house's control: the sphere\n// buttons' frosted box as Upscaling's view switch draws it (SphereButtons `.sb[data-box=\"frosted\"]`, layout beside,\n// a row: its padding, ground, blur, hairlines, radius and 34 u items), holding ‹ n / N › in the switch's type\n// (15 u, 500): the example on show white, the rest grey; a hover or a press lights an arrow on the switch's lighter\n// pill. The box and the lighter pill are SphereButtons' FROSTED (QUEUE C5), never copied here.\n`.cap-gs-nextwrap{position:absolute;left:0;top:0;transform:translate(-50%,-50%);pointer-events:auto;transition:opacity ${FADE_MS}ms ${EASE}}`+`.cap-gs-nextwrap[data-shown=\"0\"]{opacity:0;pointer-events:none}`+`.cap-gs-next{--gs-nh:${u(34,30)};display:flex;flex-direction:row;align-items:center;padding:${u(FROSTED.pad,FROSTED.padMin)};border-radius:${FROSTED.radius};${FROSTED.box};font-family:\"ASM Inter Embedded\",\"ASM Inter\",\"Inter\",system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}`+`.cap-gs-next .cap-gs-arrow{flex:none;width:var(--gs-nh);height:var(--gs-nh);display:grid;place-items:center;border:0;margin:0;padding:0;border-radius:999px;background:rgba(255,255,255,0);box-shadow:inset 0 0.5px 0 rgba(255,255,255,0);color:#86868b;cursor:pointer;outline:none;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;transition:background-color 300ms ${EASE},box-shadow 300ms ${EASE},color 300ms ${EASE}}`+`@media (hover:hover){.cap-gs-next .cap-gs-arrow:hover{background:${FROSTED.lit};box-shadow:${FROSTED.litEdge};color:#f5f5f7}}`+`.cap-gs-next .cap-gs-arrow:active{background:${FROSTED.lit};box-shadow:${FROSTED.litEdge};color:#f5f5f7}`+`.cap-gs-next .cap-gs-arrow:focus-visible{outline:1.5px solid rgba(255,255,255,0.55);outline-offset:2px}`+`.cap-gs-chev{display:block;width:${u(17,14)};height:${u(17,14)}}`+// the count between the arrows: the example on show white, the rest grey, figures of one width\n`.cap-gs-count{display:flex;align-items:baseline;justify-content:center;gap:${u(4)};padding:0 ${u(4)};font-size:${u(15,12)};font-weight:500;line-height:1.15;letter-spacing:-0.005em;font-variant-numeric:tabular-nums;color:#86868b;white-space:nowrap;user-select:none;-webkit-user-select:none}`+`.cap-gs-count b{font-weight:500;color:#f5f5f7;text-align:right}`+`.cap-gs-count i{font-style:normal}`+`.cap-gs-count span{text-align:left}`+// THE PHONE (PLAN §23; \"Layout: Phone\"): the five ways as a row of pills directly above one medium; sizes in p = one\n// px of a 390-wide phone. The pills are CapSwatches' look: the chosen one white on the house's satin pill\n`.cap-gs-phone .cap-gs-in{--p:calc(100cqw / 390);--gs-H:100cqh;--gs-top:0px;--gs-ph:calc(36 * var(--p));--gs-sy:calc(var(--gs-ph) + 12 * var(--p))}`+`.cap-gs-row{position:absolute;left:0;right:0;top:0;height:var(--gs-ph);display:flex;align-items:center;justify-content:safe center;gap:calc(2 * var(--p));padding:0 calc(12 * var(--p));overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;pointer-events:auto}`+`.cap-gs-row::-webkit-scrollbar{display:none}`+`.cap-gs-phone .cap-gs-stage{left:0;right:0;top:var(--gs-sy);height:auto;bottom:0}`+`.cap-gs-phone[data-only] .cap-gs-stage{top:0}`+`.cap-gs-pill{flex:none;display:flex;align-items:center;justify-content:center;height:calc(32 * var(--p));padding:0 calc(10 * var(--p));border-radius:999px;font-family:\"Inter\",\"Inter Placeholder\",system-ui,sans-serif;font-weight:500;font-size:max(13px, calc(13.5 * var(--p)));line-height:1;white-space:nowrap;color:rgb(134,134,139);background:rgba(255,255,255,0);border:0;margin:0;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;transition:color ${FADE_MS}ms ${EASE},background-color ${FADE_MS}ms ${EASE}}`+`.cap-gs-pill[data-chosen=\"1\"]{color:#f5f5f7;background:${SATIN}}`+`.cap-gs-pill:focus-visible{outline:1px solid rgba(255,255,255,0.4);outline-offset:2px}`+`.cap-gs-phone .cap-gs-words{font-size:max(17px, calc(${WORDS_PHONE} * var(--p)))}`+`.cap-gs-phone .cap-gs-prompt{font-size:max(14px, calc(15 * var(--p)))}`+// the phone's pill: the switch's phone sizes (items 32, the box 3, the type 13, in phone px)\n`.cap-gs-phone .cap-gs-next{--gs-nh:max(30px, calc(32 * var(--p)));padding:max(${FROSTED.padMin}px, calc(${FROSTED.pad} * var(--p)))}`+`.cap-gs-phone .cap-gs-chev{width:max(13px, calc(15 * var(--p)));height:max(13px, calc(15 * var(--p)))}`+`.cap-gs-phone .cap-gs-count{font-size:max(12px, calc(13 * var(--p)));gap:calc(4 * var(--p));padding:0 calc(4 * var(--p))}`+`.cap-gs-phone .cap-gs-hint{font-size:max(12px, calc(12 * var(--p)))}`;/** the stage's CSS, once per page in its head (Kit's pageStyle, Framer's withCSS; job C's report, 2026-10-22: it was\n *  written in a <style> by every instance); none of it depends on the instance */const GenStyle=pageStyle(\"cap-gen-stage\",CSS);// ---------------------------------------------------------------------------------------------------------------------\n// The stage\n// ---------------------------------------------------------------------------------------------------------------------\n/** the right edge of the native list's words beside this piece (px from the piece's left), or null */function listRightOf(rt){if(typeof document===\"undefined\")return null;const o=rt.getBoundingClientRect();let best=null;document.querySelectorAll('[data-framer-name=\"Cap \\xb7 Ways\"]').forEach(v=>{const b=v.getBoundingClientRect();// another breakpoint's copy (no size) or another screen's list\nif(b.width<=0||b.height<=0||b.bottom<o.top||b.top>o.bottom)return;v.querySelectorAll(\"*\").forEach(t=>{if(t.children.length)return;const tb=t.getBoundingClientRect();if(tb.width>0&&tb.height>0)best=Math.max(best===null?-Infinity:best,tb.right-o.left);});});return best;}/**\n * GenerationStage: what ASM 2 was given for each way in, and the 3D model it made turning in the house's preview\n * component; each way's examples one click apart. Fills its frame (the screen's canvas above the caption).\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function GenerationStage(props){const p={...DEFAULTS,...props};const start=WAYS.includes(p.way)?p.way:\"photo\";const phone=p.layout===\"phone\";const isStatic=useIsStaticRenderer();const reduced=useReducedMotion();const root=useRef(null);const stageBox=useRef(null);const stage=useRef(null);const cb=useRef(p);cb.current=p;// the givens' pictures load from two screens away (small, and they must all be there on arrival); the examples'\n// entries of the media index are fetched then too (at once on Framer's canvas)\nconst near2=useNear(root,2);const near1=useNear(root,1);const[loaded,setLoaded]=useState(false);useEffect(()=>{if(near2||near1)setLoaded(true);},[near2,near1]);const load=loaded||isStatic;// a picture measured for its shape (an upload, an entry's photo) draws the stage again\nconst[,setShapes]=useState(0);useEffect(()=>{const f=()=>setShapes(n=>n+1);SHAPES.subs.add(f);return()=>{SHAPES.subs.delete(f);};},[]);// the entries every way needs; a fallback to the code's list is asked for only once the instance's own are in\nconst first=useEntries(WAYS.flatMap(w=>needOf(p,{},()=>false)[w]),load);const needs=needOf(p,first.entries,first.settled);const got=useEntries(WAYS.flatMap(w=>needs[w]),load);const lists=listsOf(p,got.entries,needs,got.settled,load);const[way,setWay]=useState(start);const[pick,setPick]=useState({photo:0,photos:0,sketch:0,words:0,model:0});const list=lists[way]||[];const index=list.length?clamp(pick[way]||0,0,list.length-1):0;const ex=list[index];// MOVING ON: held for 30 s after a hand, a click or a change from outside\nconst holdUntil=useRef(0);const hold=()=>{holdUntil.current=nowMs()+HOLD_S*1e3;};// the stage's own changes of way, until the native list sends them back as \"Starts on\" (not a click)\nconst told=useRef([]);const wayRef=useRef(way);wayRef.current=way;const tell=w=>{const t=nowMs();told.current=[...told.current.filter(x=>t-x.t<ECHO_MS),{w,t}];const c=cb.current;c.onWay?.(w);const one={photo:c.onPhoto,photos:c.onPhotos,sketch:c.onSketch,words:c.onWords,model:c.onModel}[w];one?.();};// how the result changes: the house scan from one preview into the next (PreviewStage's transition), except on the\n// phone when the way changes (its input is shown first, so the result is not on show to scan from)\nconst[lastChange,setLastChange]=useState(\"way\");const goWay=(w,why)=>{if(why===\"click\"||why===\"prop\")hold();setLastChange(\"way\");wayRef.current=w;setWay(w);if(why!==\"prop\")tell(w);// a click on a way, with the steps: the page goes to its step (the way already shows)\nif(why===\"click\"||why===\"prop\")flyToWay(w);};// the way set from outside (a variant of the native list): taken as a click, unless it is already shown\nconst firstWay=useRef(true);useEffect(()=>{if(firstWay.current){firstWay.current=false;return;}// the stage's own change coming back through the native list is not a click (even when it comes late)\nconst t=nowMs();const pending=told.current.filter(x=>t-x.t<ECHO_MS);const i=pending.findIndex(x=>x.w===start);told.current=i>=0?pending.slice(i+1):pending;if(i>=0)return;if(start!==wayRef.current)goWay(start,\"prop\");// eslint-disable-next-line react-hooks/exhaustive-deps\n},[start]);const choose=i=>{hold();setLastChange(\"example\");setPick(o=>({...o,[way]:i}));};// THE STEPS (QUEUE R3): the nearest ancestor marked data-steps (frame's tall wrapper, the screen sticky inside it).\n// Step k's top is the wrapper's top + (k - 1) x its height / n; the way on show is the step whose top is nearest the\n// window's top. Another breakpoint's copy (no size) and a page without the wrapper are left as they were.\nconst stepsEl=useRef(null);const steppedRef=useRef(false);const[stepped,setStepped]=useState(false);const readSteps=()=>{const rt=root.current;if(!rt||typeof window===\"undefined\")return null;let el=stepsEl.current;if(!el||!el.isConnected||!el.hasAttribute(\"data-steps\")||!el.contains(rt)){el=rt.parentElement?rt.parentElement.closest(\"[data-steps]\"):null;stepsEl.current=el;}if(!el)return null;const n=Math.min(WAYS.length,Math.floor(Number(el.getAttribute(\"data-steps\"))||0));if(n<2)return null;const own=rt.getBoundingClientRect();if(own.width<=0||own.height<=0)return null;const r=el.getBoundingClientRect();if(r.height<=0)return null;return{n,pitch:r.height/n,top:r.top};};// the page's own movement to a step, after a click; a hand on the page (the wheel, a touch, a key) takes it over\nconst flight=useRef(null);const endFlight=()=>{const f=flight.current;if(!f)return;flight.current=null;cancelAnimationFrame(f.raf);f.off();};const syncSteps=()=>{const st=readSteps();if(!!st!==steppedRef.current){steppedRef.current=!!st;setStepped(!!st);}if(!st||flight.current)return;const f=-st.top/st.pitch;const cur=WAYS.indexOf(wayRef.current);let k=cur;if(f<=0)k=0;else if(f>=st.n-1)k=st.n-1;else{const r=Math.round(f);if(Math.abs(f-r)<=.5-STEP_HOLD)k=r;}if(k>=0&&k!==cur)goRef.current(WAYS[k],\"scroll\");};const flyToWay=w=>{const st=readSteps();if(!st||typeof window===\"undefined\")return;const k=Math.min(WAYS.indexOf(w),st.n-1);if(k<0)return;endFlight();const y0=window.scrollY;const maxY=Math.max(0,(document.documentElement.scrollHeight||0)-window.innerHeight);const y1=clamp(Math.round(y0+st.top+k*st.pitch),0,maxY);const d=y1-y0;if(Math.abs(d)<1)return;if(reduced){window.scrollTo(0,y1);return;}const screens=Math.abs(d)/Math.max(1,window.innerHeight);const T=screens<=1?STEP_PACE_MS*(.66+.34*screens):Math.min(STEP_PACE_MS*(1+.25*(screens-1)),1600);const t0=nowMs();const stop=()=>endFlight();const opt={passive:true};window.addEventListener(\"wheel\",stop,opt);window.addEventListener(\"touchstart\",stop,opt);window.addEventListener(\"keydown\",stop);const off=()=>{window.removeEventListener(\"wheel\",stop,opt);window.removeEventListener(\"touchstart\",stop,opt);window.removeEventListener(\"keydown\",stop);};const tick=()=>{const fl=flight.current;if(!fl)return;const x=Math.min(1,(nowMs()-t0)/T);window.scrollTo(0,y0+d*easeInOut(x));if(x<1)fl.raf=requestAnimationFrame(tick);else{endFlight();syncRef.current();}};flight.current={raf:requestAnimationFrame(tick),off};};const goRef=useRef(goWay);goRef.current=goWay;const syncRef=useRef(syncSteps);syncRef.current=syncSteps;// the page's scroll is followed only while the stage is within two screens (the budget, rule 13 of the README's\n// \"Speed and weight\": before, every scroll of the page asked for a frame here, the stage 40 screens away included);\n// the steps' wrapper holds the stage sticky, so while the steps are read the stage is near\nconst stepsNear=near2||near1;useEffect(()=>{if(isStatic||typeof window===\"undefined\"||!stepsNear)return;let raf=0;const kick=()=>{if(!raf)raf=requestAnimationFrame(()=>{raf=0;syncRef.current();});};window.addEventListener(\"scroll\",kick,{passive:true});window.addEventListener(\"resize\",kick);// the wrapper may be marked after this piece mounts\nconst ts=[0,400,1500,4e3].map(ms=>setTimeout(kick,ms));return()=>{window.removeEventListener(\"scroll\",kick);window.removeEventListener(\"resize\",kick);ts.forEach(clearTimeout);if(raf)cancelAnimationFrame(raf);endFlight();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isStatic,stepsNear]);// THE PHONE: on each way, the input alone a moment, then the result; another example of the same way keeps the\n// result on show (it scans into the next one)\nconst[active,setActive]=useState(isStatic||reduced?1:0);const setKey=`gen:${way}:${ex?ex.id:\"\"}`;useEffect(()=>{if(!phone||isStatic||reduced)return;setActive(0);const t=setTimeout(()=>setActive(1),PHONE_INPUT_MS);return()=>clearTimeout(t);},[way,phone,isStatic,reduced]);// after one whole turn of the result, the next way (the phone: counted once the result is on show)\nconst onTurn=n=>{if(p.only||isStatic||reduced||n<1||steppedRef.current)return;if(phone&&active!==1)return;if(nowMs()<holdUntil.current)return;goWay(WAYS[(WAYS.indexOf(way)+1)%WAYS.length],\"auto\");};// THE LAYOUT: the input cell's box (the givens are sized from it), the line and the floor (the next control)\nconst[inBox,setInBox]=useState({w:0,h:0});const inBoxRef=useRef(inBox);inBoxRef.current=inBox;const inBoxReady=inBox.h>0;// every way's given pictures, fetched once near, so a click shows its input at once (small: the cards)\nconst preloaded=useRef([]);const preKey=WAYS.map(w=>(lists[w]||[]).map(x=>x.id).join(\",\")).join(\"|\");useEffect(()=>{if(!load||isStatic||typeof Image===\"undefined\"||inBoxRef.current.h<=0)return;const H=inBoxRef.current.h*INPUT_H;const urls=[];for(const w of WAYS)for(const x of lists[w]||[]){const g0=x.given;const pics=g0.kind===\"images\"?g0.pics:g0.kind===\"sketch\"?[g0.pic]:[];for(const pc of pics)urls.push(picUrl(pc,H*Math.max(1,pc.a)));}preloaded.current=urls.map(src=>{const im=new Image;im.crossOrigin=\"anonymous\";im.decoding=\"async\";im.src=src;return im;});// eslint-disable-next-line react-hooks/exhaustive-deps\n},[load,isStatic,preKey,inBoxReady]);const[nextAt,setNextAt]=useState(null);// the native list's right edge, for the sketch card's guard (desktop)\nconst[listEdge,setListEdge]=useState(null);// the words block's move to the left (px), so its widest line stays WORDS_CLEAR from the line (desktop)\nconst[wordsDx,setWordsDx]=useState(0);const[hintAt,setHintAt]=useState(null);const lastLayout=useRef(null);const onLayout=L=>{if(!L||!L.cells||!L.cells[0])return;lastLayout.current=L;const b=L.cells[0].box;if(b&&(Math.abs(b.w-inBox.w)>.5||Math.abs(b.h-inBox.h)>.5))setInBox({w:b.w,h:b.h});const sb=stageBox.current;const rt=root.current;if(!sb||!rt)return;const a=sb.getBoundingClientRect();const o=rt.getBoundingClientRect();const k=readU(rt);const dx=a.left-o.left;const dy=a.top-o.top;if(!phone){const e=listRightOf(rt);if(e!==null&&(listEdge===null||Math.abs(e-listEdge)>.5))setListEdge(e);}let at;// the control's centre: where the centre of the two arrows stood before the pill (R2 keeps its place)\nif(phone)at={x:dx+a.width/2,y:dy+a.height-(PHONE_BOTTOM-8-17)*(o.width/390)};else{const lx=Array.isArray(L.lines)&&L.lines.length?L.lines[0]:a.width*.4;const rb=L.cells[1]?L.cells[1].box:L.cells[0].box;at={x:dx+lx,y:dy+rb.y+rb.h+(STAGE_DIAL+6+16)*k};}if(!nextAt||Math.abs(at.x-nextAt.x)>.5||Math.abs(at.y-nextAt.y)>.5)setNextAt(at);const rc=L.cells[1];if(rc&&rc.column){const ox=rc.object?rc.object.x+rc.object.w/2:rc.column.x+rc.column.w/2;const h={x:dx+ox,y:dy+rc.box.y+rc.box.h+(STAGE_DIAL+12)*k};if(!hintAt||Math.abs(h.x-hintAt.x)>.5||Math.abs(h.y-hintAt.y)>.5)setHintAt(h);}};// \"Drag to turn\", once per page view, a moment after the result first turns in view\nconst[hintOn,setHintOn]=useState(false);const hintDone=useRef(false);useEffect(()=>{if(isStatic||reduced||hintDone.current||!near1||!p.hint)return;hintDone.current=true;const a=setTimeout(()=>setHintOn(true),3200);const b=setTimeout(()=>setHintOn(false),6400);return()=>{clearTimeout(a);clearTimeout(b);};},[near1,isStatic,reduced,p.hint]);// the words write themselves in and light when the screen is near\nconst litPlaying=!isStatic&&near1;// THE GIVEN, composed with the result (his message of 2026-10-14 01:50 UTC; the skill's \"craft of a screen\"): the stage\n// places the pair on the line (place \"line\"), the result `PAIR_GAP` right of it; the given stands against the other\n// edge, `PAIR_GAP` left of it, as tall as the result's object over its turn (its real extent, never its box), on\n// the same centre line. Several images and the sketch with its words stand as one group of that height. The phone\n// (one cell at a time): the given centred, at the result's height and on its centre line.\nconst g=ex?ex.given:null;const unit=typeof window===\"undefined\"?1:root.current?readU(root.current):1;const pu=phone?(root.current?root.current.getBoundingClientRect().width:390)/390:unit;const shape=[g&&g.kind===\"model\"?{kind:\"preview\",source:g.source}:{kind:\"node\"}];if(ex)shape.push({kind:\"preview\",source:ex.result});const Lt=(stage.current&&stage.current.layoutOf?stage.current.layoutOf(shape):null)||lastLayout.current;const nb=Lt&&Lt.cells&&Lt.cells[0]?Lt.cells[0].box:{x:0,y:0,w:inBox.w,h:inBox.h};const ro=Lt&&Lt.cells&&Lt.cells[1]?Lt.cells[1].object:null;const resH=ro?ro.h:nb.h*.8;const resCy=ro?ro.y+ro.h/2-nb.y:nb.h/2;const targetH=clamp(resH,nb.h*.55,nb.h);const availW=phone?nb.w*.9:nb.w;/** the given's place in the node box: against the edge by the line (desktop) or centred (phone), on the centre line */const placeAt=(w,h)=>({left:phone?(nb.w-w)/2:nb.w-w,top:clamp(resCy-h/2,Math.min(0,nb.h-h),Math.max(0,nb.h-h)),width:w,height:h});/** the image way's photo card height at this window: its first example's picture(s), laid out as the image way lays\n     *  them out (null until the stage can lay it out, or when the image way has nothing) */const photoCardH=()=>{const pe=(lists.photo||[])[0];if(!pe||pe.given.kind!==\"images\"||!pe.given.pics.length)return null;const Lp=stage.current&&stage.current.layoutOf?stage.current.layoutOf([{kind:\"node\"},{kind:\"preview\",source:pe.result}]):null;if(!Lp||!Lp.cells||!Lp.cells[0])return null;const pb=Lp.cells[0].box;const po=Lp.cells[1]?Lp.cells[1].object:null;const tH=clamp(po?po.h:pb.h*.8,pb.h*.55,pb.h);const pics=pe.given.pics;const grid=gridOf(pics.map(x=>x.a),phone?pb.w*.9:pb.w,tH,GRID_GAP*pu,pics.length===3?\"bento\":\"grid\");return grid.h>0?grid.h:null;};/** the image way's photo card in this node box: its first example's picture(s), placed as the image way places them\n     *  (null until the stage can lay it out, or when the image way has nothing) */const photoCard=()=>{const pe=(lists.photo||[])[0];if(!pe||pe.given.kind!==\"images\"||!pe.given.pics.length)return null;const Lp=stage.current&&stage.current.layoutOf?stage.current.layoutOf([{kind:\"node\"},{kind:\"preview\",source:pe.result}]):null;if(!Lp||!Lp.cells||!Lp.cells[0])return null;const pb=Lp.cells[0].box;const po=Lp.cells[1]?Lp.cells[1].object:null;const tH=clamp(po?po.h:pb.h*.8,pb.h*.55,pb.h);const pics=pe.given.pics;const grid=gridOf(pics.map(x=>x.a),phone?pb.w*.9:pb.w,tH,GRID_GAP*pu,pics.length===3?\"bento\":\"grid\");if(!(grid.w>0&&grid.h>0))return null;const cyP=po?po.y+po.h/2-pb.y:pb.h/2;const left=phone?(pb.w-grid.w)/2:pb.w-grid.w;const top=clamp(cyP-grid.h/2,Math.min(0,pb.h-grid.h),Math.max(0,pb.h-grid.h));return{x:pb.x+left-nb.x,y:pb.y+top-nb.y,w:grid.w,h:grid.h};};let givenNode=null;/** the words block's centre and width in the node box, when the words way is on show (desktop) */let wordsGeom=null;if(g&&g.kind===\"images\"){const grid=gridOf(g.pics.map(x=>x.a),availW,targetH,GRID_GAP*pu,g.pics.length===3?\"bento\":\"grid\");givenNode=/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-given\",style:placeAt(grid.w,grid.h),children:grid.tiles.map((t,i)=>/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-shot\",style:{left:t.x,top:t.y,width:t.w,height:t.h},children:/*#__PURE__*/_jsx(Pic,{src:picUrl(g.pics[i],Math.max(t.w,t.h)),load:load})},g.pics[i].src))});}else if(g&&g.kind===\"sketch\"){// THE SKETCH AND ITS WORDS (the lead's fix of 2026-10-14, after R3: the sketch card was far smaller than the image\n// way's photo, so the pair no longer read as one composition). The card is exactly as tall as the image way's\n// photo card at this window (its first example, laid out as the image way lays it out), whole at its own shape,\n// standing where the photo stands: against the line's edge, centred on the result's centre line. The words hang\n// under it, centred, in the column width they had before (the old rule's card width). Card and words centred\n// together would lift the card over the \"Input\" label at every window (measured), so the card keeps the\n// photo's place. The phone (input and result one at a time, the next control under the medium) keeps the group\n// as tall as the result, as before: there the larger card would push the words onto the next control.\nconst fs=phone?Math.max(14,15*pu):Math.max(13,15*unit);const gapP=(phone?14:18)*pu;const promptH=g.text?3*1.45*fs:0;const shOld=Math.max(40,Math.min(targetH-promptH-(g.text?gapP:0),availW/g.pic.a));// \"Only this way\" (an article figure, no image way to borrow a card from): the words keep a reading measure of\n// their own (about 16 words a line at most), never narrower than the card, within the given's half\nconst wordsW=p.only&&!phone?Math.min(availW,Math.max(shOld*g.pic.a,17*fs)):shOld*g.pic.a;const photoH=phone?null:photoCardH();let sh=photoH!==null?photoH:shOld;if(photoH!==null){// the guard: where the photo's height would bring the card nearer the list than LIST_CLEAR, it shrinks\n// just enough to keep that gap (its right edge stays at the line's edge)\nconst edge=listEdge!==null?listEdge:LIST_TEXT_U*unit;const lineEdge=(p.listW+p.listGap)*unit+nb.x+nb.w;const maxW=lineEdge-(edge+LIST_CLEAR*unit);if(maxW>0&&sh*g.pic.a>maxW)sh=Math.max(shOld,maxW/g.pic.a);}const sw=sh*g.pic.a;// the words wider than the card (only): the group is as wide as the words, its right edge where the card's was\n// (the line's edge), the card centred over its words\nconst gw=p.only?Math.max(sw,wordsW):sw;const cardX=(gw-sw)/2;givenNode=/*#__PURE__*/_jsxs(\"div\",{className:\"cap-gs-given\",style:placeAt(gw,sh),children:[/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-shot\",style:{left:cardX,top:0,width:sw,height:sh},children:/*#__PURE__*/_jsx(Pic,{src:picUrl(g.pic,Math.max(sw,sh)),load:load})}),g.text?/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-prompt\",style:{left:(gw-wordsW)/2,top:sh+gapP,width:wordsW},\"data-written\":g.written?\"generation\":undefined,children:/*#__PURE__*/_jsx(LitLine,{text:g.text,keys:g.lit.join(\", \"),run:setKey,playing:litPlaying,still:isStatic||reduced,cps:40,timing:{lead:.45}})}):null]});}else if(g&&g.kind===\"words\"){// THE WORDS ALONE (WORDS_*): centred and balanced in the measure, the block centred on the image way's photo card's\n// centre, so the words stand where the photo stands. The measure is the setting's, not the card's: the lines may\n// run past a narrower photo. Where the widest line would come nearer the line than WORDS_CLEAR, the block moves\n// left only as far as it must (the first version's own rule for its words; `wordsDx`, measured). Without the\n// image way: the photo's rule, against the line's edge (desktop) or centred (phone), on the result's centre line\nconst fsW=phone?Math.max(17,WORDS_PHONE*pu):Math.max(13,WORDS_SIZE*unit);const mw=WORDS_MEASURE/WORDS_SIZE*fsW;const ww=phone?Math.min(mw,nb.w):mw;const wh=6*WORDS_LH*fsW;const pc=photoCard();const cx=pc?pc.x+pc.w/2:phone?nb.w/2:nb.w-Math.min(ww,nb.w)/2;const cy=pc?pc.y+pc.h/2:resCy;if(!phone)wordsGeom={cx,w:ww};const dx=phone?0:wordsDx;givenNode=/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-given cap-gs-wordsbox\",style:{left:cx-ww/2-dx,top:cy-wh/2,width:ww,height:wh},children:/*#__PURE__*/_jsx(LitLine,{className:\"cap-gs-words\",text:g.text,keys:g.lit.join(\", \"),run:setKey,playing:litPlaying,still:isStatic||reduced,cps:40,timing:{lead:.45}})});}// the words block's move, measured before paint: the widest line's right end (its letters) in the block, against\n// WORDS_CLEAR from the line (the node box's edge by the line is PAIR_GAP from it). The lines lay out the same wherever\n// the block stands, so the move never feeds back\nconst wgCx=wordsGeom?wordsGeom.cx:null;const wgW=wordsGeom?wordsGeom.w:null;useIsoLayoutEffect(()=>{if(wgCx===null||wgW===null)return;let dead=false;const measure=()=>{const rt=root.current;if(dead||!rt)return;const all=rt.querySelectorAll(\".cap-gs-wordsbox\");const box=all[all.length-1];if(!box)return;const br=box.getBoundingClientRect();if(!(br.width>0))return;let right=-Infinity;const chars=box.querySelectorAll(\".cap-gs-words .cap-lw-c\");if(chars.length){chars.forEach(c=>{const r=c.getBoundingClientRect();if(r.width>0&&r.right>right)right=r.right;});}else{const w=box.querySelector(\".cap-gs-words\");if(w){const rg=document.createRange();rg.selectNodeContents(w);for(const r of Array.from(rg.getClientRects()))if(r.width>2&&r.right>right)right=r.right;}}if(!isFinite(right))return;const mr=(right-br.left)*wgW/br.width;const edge=nb.w+(PAIR_GAP-WORDS_CLEAR)*readU(rt);const s=Math.max(0,Math.round((wgCx-wgW/2+mr-edge)*10)/10);setWordsDx(d=>Math.abs(d-s)>.5?s:d);};measure();const fonts=typeof document!==\"undefined\"?document.fonts:null;if(fonts&&fonts.ready)fonts.ready.then(measure);return()=>{dead=true;};},[setKey,wgCx,wgW,nb.w]);// THE GIVEN THAT LEAVES fades out over the new one coming in (never a gap). In the same render as the change, the\n// last one shown stays on its own key (so its pictures stay as they are) and fades; it is let go after the fade\nconst layers=useRef([]);const[,setTick]=useState(0);{const L=layers.current;const top=L[L.length-1];// while the way's examples are on their way (the media index) there is no layer: the first given comes in as\n// it did when the examples were there from the start, never fading over an empty one\nif(!ex)layers.current=[];else if(!top||top.key!==setKey)layers.current=[...top&&!isStatic&&!reduced?[{...top,leaving:true}]:[],{key:setKey,node:givenNode,leaving:false}];else top.node=givenNode;}const hasLeaving=layers.current.some(l=>l.leaving);useEffect(()=>{if(!hasLeaving)return;const t=setTimeout(()=>{layers.current=layers.current.filter(l=>!l.leaving);setTick(n=>n+1);},FADE_MS+80);return()=>clearTimeout(t);},[setKey,hasLeaving]);const inputNode=/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-input\",children:layers.current.map(l=>/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-input cap-gs-leaving\",style:{opacity:l.leaving?0:1},children:l.node},\"g:\"+l.key))});const isShare=clamp(p.inputShare,20,60)/100;const cells=[];if(g&&g.kind===\"model\")cells.push({kind:\"preview\",label:p.inputLabel,source:g.source,dial:false,hidden:phone&&active===1});else cells.push({kind:\"node\",label:p.inputLabel,render:inputNode,hidden:phone&&active===1});if(ex)cells.push({kind:\"preview\",label:p.resultLabel,source:ex.result});const dwell=ex&&ex.dwell?{weights:ex.dwell,strength:DWELL_K}:undefined;// what may be shown next, for PreviewStage to keep warm (QUEUE R1 and R19, preview's interface; it keeps the first 8,\n// fetched one at a time in this order): the results next and back would show (the control's wrap, (index ± 1) mod n),\n// then the result each other way would show on arrival (its remembered example), nearest way first, the next way down\n// before the one up; a 3D model given (a preview cell) after its result. Never the one on show, never twice\nconst upKey=way+\":\"+index+\":\"+WAYS.map(w=>(lists[w]||[]).map(x=>x.id).join(\",\")+\"@\"+(pick[w]||0)).join(\"|\");const upcoming=React.useMemo(()=>{const out=[];const seen=new Set;const add=src=>{const k=src&&src.src;if(!k||seen.has(k))return;seen.add(k);out.push({kind:\"preview\",source:src});};const addEx=x=>{if(!x)return;add(x.result);if(x.given.kind===\"model\")add(x.given.source);};if(ex){seen.add(ex.result&&ex.result.src);if(ex.given.kind===\"model\")seen.add(ex.given.source&&ex.given.source.src);}if(list.length>1)for(const j of[(index+1)%list.length,(index-1+list.length)%list.length])addEx(list[j]);const wi=WAYS.indexOf(way);const others=WAYS.map((w,i)=>({w,i})).filter(o=>o.w!==way).sort((x,y)=>Math.abs(x.i-wi)-Math.abs(y.i-wi)||y.i-x.i);for(const o of others){const xs=lists[o.w]||[];if(xs.length)addEx(xs[clamp(pick[o.w]||0,0,xs.length-1)]);}return out;// eslint-disable-next-line react-hooks/exhaustive-deps\n},[upKey]);const labels=(p.labels||DEFAULT_LABELS).split(/[,|]/).map(s=>s.trim());const nextShown=list.length>1;const pillKey=w=>e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();goWay(w,\"click\");}};return /*#__PURE__*/_jsxs(\"div\",{ref:root,className:phone?\"cap-gs cap-gs-phone\":\"cap-gs\",\"data-only\":p.only?\"\":undefined,style:p.style,children:[/*#__PURE__*/_jsx(GenStyle,{}),/*#__PURE__*/_jsxs(\"div\",{className:\"cap-gs-in\",style:{[\"--gs-m\"]:u(p.most),[\"--gs-lw\"]:phone?\"0px\":u(p.listW),[\"--gs-lg\"]:phone?\"0px\":u(p.listGap)},children:[phone&&!p.only?/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-row\",role:\"group\",\"aria-label\":\"Ways in\",children:WAYS.map((w,i)=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"cap-gs-pill\",\"data-chosen\":w===way?\"1\":\"0\",\"aria-pressed\":w===way,onClick:()=>goWay(w,\"click\"),onKeyDown:pillKey(w),children:labels[i]||w},w))}):null,/*#__PURE__*/_jsx(\"div\",{ref:stageBox,className:\"cap-gs-stage\",children:cells.length===2?/*#__PURE__*/_jsx(PreviewStage,{cells:cells,shares:phone?[1,1]:[isShare,1-isShare],line:!phone,setKey:setKey,upcoming:upcoming,transition:lastChange===\"way\"&&(phone||stepped)?\"fade\":\"scan\",scanEngine:p.scanEngine||\"\",fit:\"each\",place:phone?\"columns\":\"line\",gap:PAIR_GAP,mode:phone?\"switch\":\"side\",switchEvery:[],active:phone?active:undefined,onActive:i=>{// a tap on the pill pair also calls onHand (the 30 s hold); here only the state follows\nif(phone)setActive(i);},labelTop:phone?0:STAGE_LABEL_TOP,labelGap:phone?12:STAGE_LABEL_GAP,side:phone?16:STAGE_SIDE,fill:STAGE_FILL,floorFrom:\"frame\",bottom:p.only&&!nextShown?phone?ONLY_BOTTOM_PHONE:ONLY_BOTTOM:phone?PHONE_BOTTOM:STAGE_BOTTOM,dialRoom:phone?26:STAGE_DIAL,labelSize:16,dwell:dwell,playing:near1||isStatic,handle:stage,onLayout:onLayout,onTurn:onTurn,onHand:hold,ariaLabel:\"What ASM 2 was given, and the 3D model it made. Drag the model to turn it.\"}):null}),nextShown&&nextAt?/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-nextwrap\",\"data-shown\":\"1\",style:{left:nextAt.x,top:nextAt.y},children:/*#__PURE__*/_jsx(NextControl,{items:list,index:index,onPick:choose})}):null,hintAt&&p.hint?/*#__PURE__*/_jsx(\"div\",{className:\"cap-gs-hint\",\"aria-hidden\":\"true\",style:{left:hintAt.x,top:hintAt.y,opacity:hintOn&&!nextShown?1:0},children:p.hint}):null]})]});}/** a way's list of objects in the panel: each item the Source property (CapStore's mediaControls), Index (an object of\n *  the media index) or Upload (`upload`: the controls offered). Empty by default: Framer gives a new control's default\n *  to every existing instance, which keep their older lists until they are set */function objectsControl(title,upload,more=\"\"){return{type:ControlType.Array,title,control:mediaControls({upload}).source,defaultValue:[],description:\"In order; the first shows first. Empty: the older ids below, else the list in the code.\"+(more?\" \"+more:\"\")};}addPropertyControls(GenerationStage,{layout:{type:ControlType.Enum,title:\"Layout\",options:[\"desktop\",\"phone\"],optionTitles:[\"Desktop\",\"Phone\"],defaultValue:DEFAULTS.layout},way:{type:ControlType.Enum,title:\"Starts on\",options:WAYS,optionTitles:[\"Image\",\"Several images\",\"Sketch\",\"Words\",\"3D model\"],defaultValue:DEFAULTS.way},// each way's objects (rule 12): an object of the media index, or an upload; empty: the older list below\nphotoObjects:objectsControl(\"Image objects\",{film:\"Result film\",picture:\"Image given\"}),photosObjects:objectsControl(\"Several images objects\",{film:\"Result film\",picture:\"Image given\"}),sketchObjects:objectsControl(\"Sketch objects\",{film:\"Result film\",picture:\"Sketch given\"}),wordsObjects:objectsControl(\"Words objects\",{film:\"Result film\"},\"Upload: the result film, with the Words field as the words given.\"),modelObjects:objectsControl(\"3D model objects\",{},\"Objects of the index only (a 3D model given cannot be uploaded here).\"),photoList:{type:ControlType.String,title:\"Image examples\",defaultValue:\"\",displayTextArea:true,placeholder:DEFAULT_LISTS.photo.join(\", \"),description:\"Older example ids in order (examples gallery or CapMedia). Empty: the list in the code.\",hidden:p=>hasObjects(p.photoObjects)},photosList:{type:ControlType.String,title:\"Several images examples\",defaultValue:\"\",placeholder:DEFAULT_LISTS.photos.join(\", \"),hidden:p=>hasObjects(p.photosObjects)},sketchList:{type:ControlType.String,title:\"Sketch examples\",defaultValue:\"\",placeholder:DEFAULT_LISTS.sketch.join(\", \"),hidden:p=>hasObjects(p.sketchObjects)},wordsList:{type:ControlType.String,title:\"Words examples\",defaultValue:\"\",placeholder:DEFAULT_LISTS.words.join(\", \"),hidden:p=>hasObjects(p.wordsObjects)},modelList:{type:ControlType.String,title:\"3D model examples\",defaultValue:\"\",placeholder:DEFAULT_LISTS.model.join(\", \"),hidden:p=>hasObjects(p.modelObjects)},words:{type:ControlType.String,title:\"Words\",defaultValue:\"\",displayTextArea:true,description:\"The words given (first words example). Empty: the recipe's request.\"},wordsKeys:{type:ControlType.String,title:\"Lit words\",defaultValue:\"\",description:\"Comma separated. Empty: the recipe's (CapMedia data.lit).\"},sketchWords:{type:ControlType.String,title:\"Sketch words\",defaultValue:\"\",displayTextArea:true,description:\"The words given with the first sketch. Empty: the recipe's prompt, else the one written in the code.\"},sketchKeys:{type:ControlType.String,title:\"Sketch lit words\",defaultValue:\"\",description:\"Comma separated.\"},labels:{type:ControlType.String,title:\"Phone pills\",defaultValue:DEFAULT_LABELS,description:\"The phone's five pills, comma separated, in order.\"},inputLabel:{type:ControlType.String,title:\"Input label\",defaultValue:DEFAULTS.inputLabel},resultLabel:{type:ControlType.String,title:\"Result label\",defaultValue:DEFAULTS.resultLabel},listW:{type:ControlType.Number,title:\"List column\",defaultValue:DEFAULTS.listW,min:0,max:600,step:1,unit:\"u\",description:\"Left empty for the native list of the ways.\"},listGap:{type:ControlType.Number,title:\"List gap\",defaultValue:DEFAULTS.listGap,min:0,max:200,step:1,unit:\"u\"},inputShare:{type:ControlType.Number,title:\"Input share\",defaultValue:DEFAULTS.inputShare,min:20,max:60,step:1,unit:\"%\",description:\"The input cell's share of the stage's width.\"},hint:{type:ControlType.String,title:\"Hint\",defaultValue:DEFAULTS.hint},only:{type:ControlType.Boolean,title:\"Only this way\",defaultValue:false,description:\"Shows only the way it starts on, with its own examples, and never moves on (an article figure). Off: as before.\"},rungs:{type:ControlType.Boolean,title:\"Films by size\",defaultValue:false,description:\"Each film at the smallest rung of its ladder that covers the size it is drawn at. Off: as before.\"},scanEngine:{type:ControlType.String,title:\"Scan module\",defaultValue:\"\",placeholder:\"the house's (PreviewPlayer SCAN_ENGINE)\",description:\"The scan between two results. Empty: the current one.\"},most:{type:ControlType.Number,title:\"Height below 1u\",defaultValue:DEFAULTS.most,min:200,max:900,step:1,unit:\"u\",description:\"Below his MacBook's scale, the composition's height; above it, the whole frame.\"},onWay:{type:ControlType.EventHandler,title:\"Way\"},onPhoto:{type:ControlType.EventHandler,title:\"Image\"},onPhotos:{type:ControlType.EventHandler,title:\"Several\"},onSketch:{type:ControlType.EventHandler,title:\"Sketch\"},onWords:{type:ControlType.EventHandler,title:\"Words\"},onModel:{type:ControlType.EventHandler,title:\"3D model\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GenerationStage\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}