{
  "version": 3,
  "sources": ["/cdn/shop/t/15/assets/fr-theme-compare-datafix-20260706.js"],
  "sourcesContent": ["(function(){const state={data:null},money=value=>value||\"Not verified\",firstMatch=(value,pattern)=>{const match=String(value||\"\").match(pattern);return match?match[1]||match[0]:\"\"},compactPrice=value=>{const text=String(value||\"\").trim(),lower=text.toLowerCase();if(!text)return\"Not publicly listed\";if(lower.includes(\"not publicly sold\"))return\"Not sold\";if(lower.includes(\"enterprise quote\")||lower.includes(\"contact sales\"))return\"Quote\";if(lower.includes(\"no public msrp\"))return\"No MSRP\";if(lower.includes(\"pricing not listed\")||lower.includes(\"price not verified\")||lower===\"not verified\")return\"Not listed\";const usdRange=text.match(/(?:USD\\s*)?\\$?\\s*(\\d[\\d,]*(?:\\.\\d+)?(?:\\s*-\\s*\\$?\\s*\\d[\\d,]*(?:\\.\\d+)?)?)/i);return usdRange?`$${usdRange[1].replace(/\\s+/g,\"\")}`:text.split(/[;.]/)[0].trim()||\"Not publicly listed\"},compactMeasure=(value,unit)=>{const text=String(value||\"\").trim();if(!text)return\"Not listed\";const escapedUnit=unit.replace(\"/\",\"\\\\/\"),match=firstMatch(text,new RegExp(`(?:about\\\\s*|approx\\\\.?\\\\s*|~\\\\s*)?(\\\\d+(?:\\\\.\\\\d+)?\\\\s*${escapedUnit})`,\"i\"));return match?match.replace(/\\s+/g,\" \"):text.split(/[;.]/)[0].trim()},compactDof=value=>{const text=String(value||\"\").trim();return text&&firstMatch(text,/(\\d+\\+?)/)||\"Not listed\"},compactRuntime=value=>{const text=String(value||\"\").trim();if(!text)return\"Not listed\";if(text.toLowerCase().includes(\"not publicly disclosed\"))return\"Not disclosed\";const match=firstMatch(text,/(?:about\\s*|approx\\.?\\s*|~\\s*)?(\\d+(?:\\.\\d+)?\\s*(?:hours?|hrs?|h)\\b)/i);return match?match.replace(/\\bh\\b/i,\"hr\").replace(/\\s+/g,\" \"):text.split(/[;.]/)[0].trim()},compactStatus=value=>{const raw=String(value||\"\").trim(),lower=raw.toLowerCase();return!lower||[\"review\",\"unknown\",\"not verified\",\"not publicly listed\"].includes(lower)?\"Not publicly confirmed\":lower.includes(\"discontinued\")?\"Discontinued\":lower.includes(\"available\")?\"Available\":lower.includes(\"pilot\")?\"Piloting\":lower.includes(\"prototype\")?\"Prototype\":lower.includes(\"announced\")?\"Announced\":lower.includes(\"development\")?\"Development\":raw.split(/[;.]/)[0].trim()},compactComparisonValue=(robot,key)=>key===\"price\"?compactPrice(robot.price):key===\"height\"?compactMeasure(robot.height,\"mm\"):key===\"weight\"?compactMeasure(robot.weight,\"kg\"):key===\"dof\"?compactDof(robot.dof):key===\"payload\"?compactMeasure(robot.payload,\"kg\"):key===\"runtime\"?compactRuntime(robot.runtime):key===\"speed\"?compactMeasure(robot.speed,\"m/s\"):key===\"status\"?compactStatus(robot.status):String(robot[key]||\"Not listed\").split(/[;.]/)[0].trim(),safe=(value,fallback=\"Not verified\")=>{const text=String(value||\"\").trim();return text||fallback},publicMaker=(robot={})=>robot.manufacturer||\"Manufacturer not listed\",publicCardValue=(value,fallback=\"Not publicly listed\")=>{const text=String(value||\"\").trim(),lower=text.toLowerCase();return!text||[\"unknown\",\"review\",\"not verified\",\"not publicly listed\"].includes(lower)?fallback:text.split(/[;.]/)[0].trim()},escapeHtml=value=>String(value||\"\").replace(/[&<>\"']/g,char=>({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"})[char]),slugFromText=(value=\"\")=>String(value||\"\").toLowerCase().replace(/&/g,\" and \").replace(/[^a-z0-9]+/g,\"-\").replace(/-+/g,\"-\").replace(/^-|-$/g,\"\")||\"unknown\",robotMatchesSlug=(robot={},slug=\"\")=>{const target=String(slug||\"\").trim();return target?robot.slug===target||slugFromText(robot.name)===target||slugFromText(`${robot.manufacturer||\"\"}-${robot.name||\"\"}`)===target||slugFromText(`${robot.manufacturer||\"\"} ${robot.name||\"\"}`)===target:!1},currentPageHandle=()=>{const match=location.pathname.match(/^\\/pages\\/([^/?#]+)/);return match?decodeURIComponent(match[1]).replace(/\\/+$/,\"\"):\"\"},categoryHandleMap={\"humanoid-robots\":\"humanoid\",\"consumer-robots\":\"consumer\",\"enterprise-robots\":\"enterprise\",\"industrial-robots\":\"industrial\",\"warehouse-robots\":\"warehouse\",\"service-robots\":\"service\",\"research-robots\":\"research\",\"military-defense-robots\":\"military\"},categoryPageMeta={\"humanoid-robots\":[\"Category Guide\",\"Humanoid Robots\",\"Bipedal and human-form robots for research, industry, enterprise, and emerging home use.\"],\"consumer-robots\":[\"Category Guide\",\"Consumer Robots\",\"Robots positioned for consumer, education, entertainment, and home-adjacent use.\"],\"enterprise-robots\":[\"Category Guide\",\"Enterprise Robots\",\"Robots built or positioned for business, pilot deployments, and workplace automation.\"],\"industrial-robots\":[\"Category Guide\",\"Industrial Robots\",\"Robots relevant to manufacturing, inspection, logistics, production, and industrial automation.\"],\"warehouse-robots\":[\"Category Guide\",\"Warehouse Robots\",\"Robots used for warehouse automation, logistics, fulfillment, inventory, and material movement.\"],\"service-robots\":[\"Category Guide\",\"Service Robots\",\"Robots built for customer-facing, hospitality, healthcare, delivery, reception, and facility support roles.\"],\"research-robots\":[\"Category Guide\",\"Research Robots\",\"Robots used by universities, labs, developers, and robotics researchers for experimentation and platform development.\"],\"military-defense-robots\":[\"Category Guide\",\"Military and Defense Robots\",\"Public-safety, defense-adjacent, field robotics, and rugged automation platforms.\"]},categoryUrl=slug=>{const bySlug=Object.entries(categoryHandleMap).find(([,value])=>value===slug);return`/pages/${bySlug?bySlug[0]:`${slugifyLocal(slug)}-robots`}`},manufacturerUrl=manufacturer=>{const slug=typeof manufacturer==\"string\"?manufacturer:manufacturer.slug||manufacturer.name||\"\";return`/pages/${slugifyLocal(slug)}-robot-manufacturer`},robotUrl=robot=>`/pages/${encodeURIComponent(robot.slug)}`,knowledgeUrl=topic=>`/pages/${slugifyLocal(`robot ${topic} explained`)}`,redirectToCleanUrl=data=>{const handle=currentPageHandle(),params=new URLSearchParams(location.search);let target=\"\";if(handle===\"robot-profile\"&&params.get(\"robot\")){const slug=params.get(\"robot\"),robot=(data.robots||[]).find(item=>robotMatchesSlug(item,slug));target=robot?robotUrl(robot):`/pages/${slugifyLocal(slug)}`}else handle===\"manufacturer-profile\"&&params.get(\"manufacturer\")?target=manufacturerUrl(params.get(\"manufacturer\")):handle===\"category\"&&params.get(\"filter\")?target=categoryUrl(params.get(\"filter\")):handle===\"knowledge\"&&params.get(\"topic\")?target=knowledgeUrl(params.get(\"topic\")):handle===\"compare\"&&params.get(\"add\")&&(target=\"/pages/compare\");return target&&target!==location.pathname?(window.location.replace(target),!0):!1},PAGE_META={robots:[\"Robot Database\",\"Robots\",\"Search and filter source-backed robot profiles, prices, specifications, images, and videos.\"],\"robot-profile\":[\"Robot Profile\",\"Robot Profile\",\"Robot reviews, specifications, pricing, images, videos, sources, and buying research from Firgelli Robots.\"],manufacturers:[\"Manufacturer Database\",\"Manufacturers\",\"Explore companies building humanoid, service, industrial, research, and mobile robots.\"],\"manufacturer-profile\":[\"Manufacturer Profile\",\"Manufacturer Profile\",\"Source-backed manufacturer profiles connected to robot records.\"],category:[\"Robot Categories\",\"Robot Categories\",\"Browse robots by market, form factor, use case, and grade.\"],compare:[\"Comparison Engine\",\"Compare Robots\",\"Compare robots side by side using source-backed specification records.\"],tools:[\"Tools & Widgets\",\"Tools & Widgets\",\"Robot finder, matching tools, payload calculator, ownership calculator, timeline, and visual size viewer.\"],\"robot-compare-tool\":[\"Robot Compare Tool\",\"Robot Compare Tool\",\"Build a side-by-side robot comparison with live Firgelli Robots data, images, prices, specs and profile links.\"],\"robot-finder\":[\"Robot Finder\",\"Robot Finder\",\"Rank robots by use case, budget, availability, payload, runtime and developer requirements.\"],\"payload-calculator\":[\"Robot Payload Calculator\",\"Payload Calculator\",\"Estimate required robot payload with safety margin and find matching robots with public payload data.\"],\"robot-cost-calculator\":[\"Robot Cost Calculator\",\"Cost of Ownership Calculator\",\"Estimate robot purchase, deployment, service, consumables, labor and support costs.\"],\"robot-timeline\":[\"Robot Timeline\",\"Robot Timeline\",\"Browse robot launches, announcements, research platforms and database timeline signals.\"],\"3d-robot-viewer\":[\"Robot Size Viewer\",\"Robot Size Viewer\",\"Compare robot images, height, weight, payload and status in a practical visual size viewer.\"],research:[\"Research Library\",\"Research, Patents & Sources\",\"Review papers, patents, manuals, videos, source URLs, and reference material.\"],knowledge:[\"Knowledge Hub\",\"Knowledge Hub\",\"Robot specifications, definitions, buying guidance, research links, and latest robotics updates.\"],news:[\"Robot News\",\"Robot News\",\"Latest robot additions, database changes, source-backed updates, and robotics research notes.\"],marketplace:[\"Marketplace\",\"Marketplace\",\"Future marketplace for robot accessories, skills, mods, and compatible parts.\"],community:[\"Community\",\"Community\",\"Future owner reviews, community posts, known issues, galleries, and mod discussions.\"],developers:[\"Developers\",\"Developers\",\"Developer resources, SDK support, APIs, ROS support, and integration tools.\"],about:[\"About\",\"About Firgelli Robots\",\"A research-first robotics intelligence platform for robot specifications, images, videos, and buyer guidance.\"],\"editorial-policy\":[\"Editorial Policy\",\"Editorial Policy\",\"How Firgelli Robots reviews sources, image rights, robot specifications, and publication readiness.\"],contact:[\"Contact\",\"Contact Firgelli Robots\",\"Reach the Firgelli Robots team for research support, partnerships, and data corrections.\"]},pathPageKind=()=>{const handle=currentPageHandle();return handle&&PAGE_META[handle]?handle:\"\"},resolvePageKind=root=>{const configured=root.dataset.frPageKind||\"auto\",fromPath=pathPageKind(),handle=currentPageHandle();return[\"robot-compare-tool\",\"robot-finder\",\"payload-calculator\",\"robot-cost-calculator\",\"robot-timeline\",\"3d-robot-viewer\"].includes(handle)?\"tools\":configured===\"auto\"?fromPath||\"robots\":configured===\"robots\"&&fromPath&&fromPath!==\"robots\"?fromPath:configured===\"robots\"&&root.querySelector(\".fr-page-hero h1\")?.textContent?.toLowerCase().includes(\"page not found\")&&fromPath||configured},applyPageMeta=(root,kind)=>{if(kind===\"robot-profile\")return;const handle=currentPageHandle();if(handle&&!PAGE_META[handle]&&![\"robot-profile\",\"manufacturer-profile\",\"category\"].includes(kind))return;const meta=PAGE_META[handle]||(kind===\"category\"&&categoryPageMeta[handle]?categoryPageMeta[handle]:PAGE_META[kind]);if(!meta)return;const[eyebrow,heading,subheading]=meta,eyebrowNode=root.querySelector(\".fr-page-hero .fr-eyebrow\"),headingNode=root.querySelector(\".fr-page-hero h1\"),subheadingNode=root.querySelector(\".fr-page-hero p:not(.fr-eyebrow)\"),crumbNode=root.querySelector(\".fr-breadcrumb span:last-child\");eyebrowNode&&(eyebrowNode.textContent=eyebrow),headingNode&&(headingNode.textContent=heading),subheadingNode&&(subheadingNode.textContent=subheading),crumbNode&&(crumbNode.textContent=heading),document.title=`${heading} - Firgelli Robots`},badgeClass=status=>{const s=String(status||\"\").toLowerCase();return s.includes(\"prototype\")?\"fr-badge fr-badge--prototype\":s.includes(\"discontinued\")?\"fr-badge fr-badge--discontinued\":s.includes(\"announced\")||s.includes(\"coming\")?\"fr-badge fr-badge--announced\":\"fr-badge\"},icon=()=>'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v4\"></path><path d=\"M6 8h12l-1 10H7L6 8Z\"></path><path d=\"M9 12h.01\"></path><path d=\"M15 12h.01\"></path><path d=\"M9 21h6\"></path><path d=\"M4 13H2\"></path><path d=\"M22 13h-2\"></path></svg>',categoryIcon=(slug=\"\")=>({humanoid:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"4.5\" r=\"2.1\"></circle><path d=\"M12 7v6\"></path><path d=\"M8.5 9.5 12 8l3.5 1.5\"></path><path d=\"M10 13 8.5 20\"></path><path d=\"M14 13l1.5 7\"></path><path d=\"M9 20h2\"></path><path d=\"M13 20h2\"></path></svg>',consumer:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 11 12 4l8 7\"></path><path d=\"M6.5 10.5V20h11V10.5\"></path><path d=\"M9 20v-5h6v5\"></path><path d=\"M10 11.5h4\"></path></svg>',enterprise:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 20V5h9v15\"></path><path d=\"M14 10h5v10\"></path><path d=\"M8 8h2\"></path><path d=\"M8 12h2\"></path><path d=\"M8 16h2\"></path><path d=\"M16.5 14h.01\"></path><path d=\"M16.5 17h.01\"></path></svg>',industrial:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 20V9l5 3V9l5 3V8h6v12H4Z\"></path><path d=\"M16 8V4h3v4\"></path><path d=\"M7 16h2\"></path><path d=\"M12 16h2\"></path><path d=\"M17 16h1\"></path></svg>',warehouse:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3.5 10 12 5l8.5 5\"></path><path d=\"M5 10v10h14V10\"></path><path d=\"M8 14h8\"></path><path d=\"M8 17h8\"></path><path d=\"M9 20v-6h6v6\"></path></svg>',service:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 14h12a4 4 0 0 1 4 4\"></path><path d=\"M4 18h16\"></path><path d=\"M7 14V9a3 3 0 0 1 6 0v5\"></path><path d=\"M10 6V4\"></path></svg>',research:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M10 3v5l-5 9a3 3 0 0 0 2.6 4.5h8.8A3 3 0 0 0 19 17l-5-9V3\"></path><path d=\"M9 3h6\"></path><path d=\"M7 16h10\"></path><path d=\"M9 19h6\"></path></svg>',military:'<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3 19 6v5c0 4.8-2.9 8.4-7 10-4.1-1.6-7-5.2-7-10V6l7-3Z\"></path><path d=\"M12 8v7\"></path><path d=\"M8.8 11.5h6.4\"></path></svg>'})[slug]||icon();let assetBase=\"\";const homepageImageFallbacks={\"tesla-optimus\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-tesla-optimus-ad30d48fcf.png\",\"figure-ai-figure-02\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-figure-ai-figure-02-a475ade5a5.png\",\"unitree-robotics-unitree-g1\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-unitree-robotics-unitree-g1-726472fdcf.png\",\"apptronik-apollo\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-apptronik-apollo-1809635ecd.png\",\"agility-robotics-digit\":\"asset://fr-display-crop-v1-fr-approved-robot-digit-7170e64273-digit-front-view-7cfe6097d7.webp\",\"1x-technologies-neo\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-1x-technologies-neo-7a03dc0fa4.png\",\"sanctuary-ai-phoenix\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-sanctuary-ai-phoenix-35d25960a8.png\",\"ubtech-robotics-walker-s\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-ubtech-robotics-walker-s-af89630df5.png\",\"fourier-intelligence-gr-2\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-fourier-intelligence-gr-2-f9187a0b9b.png\",\"unitree-robotics-unitree-h2\":\"https://www.firgellirobots.com/cdn/shop/t/15/assets/fr-home-compare-unitree-robotics-unitree-h2-7fde71e458.png\",\"istituto-italiano-di-tecnologia-icub\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-view-robot-icub-a922c3d274-icub-front-view-dfb9c70f9a-803c12cd25-8755ed7085.webp\",\"xman-r1\":\"asset://fr-card-consumer-v1-xman-r1-149637edbf.webp\",\"xiaomi-cyberone\":\"asset://fr-display-crop-v1-fr-approved-robot-xiaomi-cyberone-5a9971b1f7-xiaomi-cyberone-front-view-d778fadc18.webp\"},cardImageOverrides={\"agility-robotics-digit\":\"asset://fr-display-crop-v1-fr-approved-robot-digit-7170e64273-digit-front-view-7cfe6097d7.webp\",\"softbank-robotics-pepper\":\"asset://fr-display-crop-v1-fr-approved-robot-pepper-dfc6035e61-pepper-front-view-6f9e41ce75.webp\",\"university-of-bonn-nimbro-op2x\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-nimbro-op2x-25c5eec270-nimbro-op2x-front-view-d27b37d6d5-3bd75e78a8-efb041aa26.webp\",\"nasa-valkyrie\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-valkyrie-9b9de5e434-valkyrie-front-view-29e186b926-c63ae56ce4-75f6345da9.webp\",\"kepler-robotics-kepler-forerunner\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-kepler-forerunner-69ce2f4189-kepler-forerunner-front-view-27283df1bd-cc62ec0250-a6f03f8281.webp\",\"istituto-italiano-di-tecnologia-icub\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-view-robot-icub-a922c3d274-icub-front-view-dfb9c70f9a-803c12cd25-8755ed7085.webp\",\"robotis-op3\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-robotis-op3-d69cbaaf62-robotis-op3-front-view-57a3ee0e83-cb1eead0d4-a93cafbe60.webp\",\"pal-robotics-reem-c\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-reem-c-dcdbf329e6-reem-c-front-view-2bc26fb9a7-3edd3ab6a6-9ed6fe9315.webp\",\"kawada-robotics-hrp-5p\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-hrp-5p-78a76ad22f-hrp-5p-front-view-c1e0996341-86bf21a38c-1fbdbc2d39.webp\",\"kawada-robotics-hrp-4\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-hrp-4-687a957d84-hrp-4-front-view-924a727c16-7d02fe4d1d-f21953df00.webp\",\"kuka-lbr-iiwa\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-lbr-iiwa-4370ffc9e8-lbr-iiwa-front-view-3e99dbb559-136e26e2fd-18106cbd1a.webp\",\"poppy-project-poppy-humanoid\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-poppy-humanoid-1d91886c1f-poppy-humanoid-front-view-c29769519a-acd5df9320-41bbe0c671.webp\",\"pal-robotics-talos\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-talos-a4d479eec7-talos-front-view-61f83819c3-f9bdde1b01-2f0c20f66c.webp\",\"tekntrash-alpha\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-tekntrash-alpha-cac6f141f9-tekntrash-alpha-front-view-e36b65454d-fe3a0a7361-85739157c3.webp\",limx:\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-limx-193d4dbb97-limx-front-view-baf1a975ee-3348cdec32-e267b88c73.webp\",\"toyota-t-hr3\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-t-hr3-7401935bc7-t-hr3-front-view-911d9ae041-fd4059c847-2d4d977743.webp\",\"osaka-university-alter3\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-alter3-0c21b52379-alter3-front-view-b8ae2b365f-29aea66abc-dfe2f28adc.webp\",\"karlsruhe-institute-of-technology-armar-6\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-armar-6-9cb4f73ab6-armar-6-front-view-4115c14f9c-56f0cac063-2f30463239.webp\",\"unitree-r1\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-unitree-r1-4c67a080b9-unitree-r1-front-view-2aa18087f7-6df6ae5b90-573a2ae6b1.webp\",\"robotera-l7\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-robotera-l7-3a5efc2bbe-robotera-l7-front-view-8d8306978a-0771d92624-fea94af841.webp\",px5:\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-px5-70a1966be7-px5-front-view-ca3fa01729-1714bb9714-3fddf98b2b.webp\",\"ff-master\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-ff-master-59b27dae0c-ff-master-front-view-1354b268d9-f9d717b2f4-ee0a904240.webp\",allex:\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-allex-85437fca28-allex-front-view-fbb2c5152c-128d068254-c9a747af5c.webp\",\"university-of-tokyo-kengoro\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-kengoro-29da5c42d0-kengoro-front-view-56e0cdf95c-90c6568913-cbed39ebae.webp\",\"fourier-intelligence-gr-1\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-gr-1-4cc050622b-gr-1-front-view-2add7ab5d2-0eeb45e7a2-75dda8d8d7.webp\",\"fourier-intelligence-g1\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-g1-8bf5eabdde-g1-front-view-bcb674f485-79d115ccfc-bac279f58d.webp\",quantax2:\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-quantax2-3ed238b7e0-quantax2-front-view-62b6afe1d5-1ffbd09386-b4936a658e.webp\",\"ff-futurist\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-ff-futurist-aca8a3329b-ff-futurist-front-view-67c83af742-f29fe9bd2e-0b1e76c954.webp\",dora:\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-dora-91d55d9af6-dora-front-view-957c5a5913-7b7baabc50-9354b1e91a.webp\",steve:\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-steve-043b97324a-steve-front-view-77514e455c-102d1a42a0-c9382a06e2.webp\",kepler:\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-kepler-b8bd00bb42-kepler-front-view-fcabc9ac8c-7de9fd71e9-dd3deeec55.webp\",\"pudu-d7\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-pudu-d7-d7777798a1-pudu-d7-front-view-dfcc616675-3907a98fab-61765d539a.webp\",n2:\"asset://fr-display-crop-v1-fr-approved-robot-n2-bcc698a524-n2-front-view-4db8e45ac9.webp\",\"k1-pro\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-k1-pro-e1f843b606-k1-pro-front-view-25172fc528-2fc0e8a0cb-78cd41bfa0.webp\",\"k1-geek\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-k1-geek-11c1ff6776-k1-geek-front-view-2ecc2bcc37-d3306dac4c-28dfcae832.webp\",\"k1-edu\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-k1-edu-9d887f2c0b-k1-edu-front-view-baed311cd2-28087f2e89-242d53b996.webp\",\"hmnd-01\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-hmnd-01-dd1d68ace5-hmnd-01-front-view-5e79e4f2d2-9abd9c8378-bd35f01f27.webp\",\"apptronik-apollo\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-apptronik-apollo-573fa212fd-apptronik-apollo-front-view-7f7ef52c5c-104498b885-da839eb2f5.webp\",\"agibot-a2\":\"asset://fr-gallery-fill-v1-fr-white-v2-fr-approved-robot-agibot-a2-23d77e8e39-agibot-a2-front-view-e0212e266c-50337a5cfb-5b118ccccb.webp\",\"xiaomi-cyberone\":\"asset://fr-display-crop-v1-fr-approved-robot-xiaomi-cyberone-5a9971b1f7-xiaomi-cyberone-front-view-d778fadc18.webp\",\"astribot-s1\":\"asset://fr-display-crop-v1-fr-approved-robot-astribot-s1-dfbb8b35be-astribot-s1-front-view-1ec54f8105.webp\"},resolveImage=(src=\"\")=>src.startsWith(\"asset://\")?`${assetBase}${src.replace(\"asset://\",\"\")}`:src,robotFallbackImage=robot=>cardImageOverrides[robot?.slug]||robot?.imageFallback||homepageImageFallbacks[robot?.slug]||\"\",firstMediaImage=(items=[])=>Array.isArray(items)&&(items.find(item=>item?.image&&String(item.type||\"\").match(/hero|front|main|comparison|thumbnail|card|portrait/i))?.image||items.find(item=>item?.image)?.image)||\"\",foundImageCandidates=robot=>Array.isArray(robot?.foundImages)?robot.foundImages.filter(item=>item?.image&&(item.approved||item.officialImage||item.quality>=80)).map(item=>item.image):[],imageCandidates=robot=>{const candidates=[cardImageOverrides[robot?.slug],robot?.image,firstMediaImage(robot?.approvedMedia),firstMediaImage(robot?.imageViews),...Array.isArray(robot?.approvedMedia)?robot.approvedMedia.map(item=>item.image):[],...Array.isArray(robot?.imageViews)?robot.imageViews.map(item=>item.image):[],...foundImageCandidates(robot),robotFallbackImage(robot)].filter(Boolean).map(resolveImage);return[...new Set(candidates)]},imageTag=(robot,candidates,alt=\"\",className=\"\",loading=\"lazy\")=>{const src=candidates[0]||\"\",fallbacks=candidates.slice(1);return src?`<img loading=\"${escapeHtml(loading)}\" src=\"${escapeHtml(src)}\" data-fr-fallbacks=\"${escapeHtml(JSON.stringify(fallbacks))}\" alt=\"${escapeHtml(alt||robot.name)}\"${className?` class=\"${escapeHtml(className)}\"`:\"\"}>`:`<div class=\"fr-image-placeholder${className?` ${escapeHtml(className)}`:\"\"}\">${icon()}</div>`},image=(robot,alt=\"\")=>imageTag(robot,imageCandidates(robot),alt),shopAssetImageCandidates=robot=>{const candidates=imageCandidates(robot),shopAssets=candidates.filter(src=>/(^\\/\\/|^https?:\\/\\/)?www\\.firgellirobots\\.com\\/cdn\\/shop\\/.+\\/assets\\//i.test(src));return shopAssets.length?shopAssets:candidates},legacyShopAssetCandidate=(src=\"\")=>{const value=String(src||\"\");return value.includes(\"fr-white-v2-\")?value.replace(\"asset://fr-white-v2-\",\"asset://\").replace(\"/assets/fr-white-v2-\",\"/assets/\").replace(/-[a-f0-9]{10}(\\.[a-z0-9]+)([?#].*)?$/i,\"$1$2\"):\"\"},withLegacyShopAssetCandidates=(candidates=[])=>{const expanded=[];return candidates.forEach(src=>{const legacy=legacyShopAssetCandidate(src);legacy&&expanded.push(legacy),expanded.push(src)}),[...new Set(expanded)]},latestImageCandidates=robot=>{const candidates=shopAssetImageCandidates(robot);return[...new Set([resolveImage(robotFallbackImage(robot)),...withLegacyShopAssetCandidates(candidates),...candidates].filter(Boolean))]},compareImage=robot=>{const candidates=shopAssetImageCandidates(robot);return imageTag(robot,candidates,`${robot.name} robot`,\"fr-table-robot__image\",\"eager\")},manufacturerModelTokens=(manufacturer={})=>String(manufacturer.models||\"\").split(/[;|,]/).map(item=>normalizeSearch(item)).filter(Boolean),manufacturerLineup=(manufacturer={},data={})=>{const makerName=normalizeSearch(manufacturer.name||\"\"),modelTokens=manufacturerModelTokens(manufacturer);return(data.robots||[]).filter(robot=>{if(hiddenRobotSlugs.has(robot.slug))return!1;const robotMaker=normalizeSearch(robot.manufacturer||\"\"),robotName=normalizeSearch(robot.name||\"\");return makerName&&robotMaker===makerName||modelTokens.some(model=>model&&(robotName===model||robotName.includes(model)||model.includes(robotName)))})},manufacturerCardImageScore=(src=\"\")=>{const value=String(src||\"\").toLowerCase();return value?value.includes(\"display-crop\")||value.includes(\"head-torso\")||value.includes(\"head_torso\")||value.includes(\"home-compare\")?0:value.includes(\"front-view\")||value.includes(\"front_view\")||value.includes(\"gallery-fill\")||value.includes(\"white-v2\")?5:value.includes(\"main\")&&!value.includes(\"compare\")?4:3:-1},manufacturerCardImage=(manufacturer={},data={})=>{const candidates=[...manufacturerLineup(manufacturer,data).flatMap(robot=>imageCandidates(robot)).sort((a,b)=>manufacturerCardImageScore(b)-manufacturerCardImageScore(a)),manufacturer.logo,manufacturer.logoFallback].filter(Boolean).map(resolveImage),src=candidates[0]||\"\",fallbacks=candidates.slice(1);return src?`<img loading=\"lazy\" src=\"${escapeHtml(src)}\" data-fr-fallbacks=\"${escapeHtml(JSON.stringify(fallbacks))}\" alt=\"${escapeHtml((manufacturer.name||\"Robot manufacturer\")+\" representative robot\")}\" class=\"fr-manufacturer-card__image\" style=\"width:100%;height:260px;object-fit:contain;object-position:center;background:#fff;\">`:`<div class=\"fr-image-placeholder fr-manufacturer-card__image\">${icon()}</div>`};document.addEventListener(\"error\",event=>{const img=event.target;if(!(img instanceof HTMLImageElement)||!img.dataset.frFallbacks)return;let fallbacks=[];try{fallbacks=JSON.parse(img.dataset.frFallbacks||\"[]\")}catch{fallbacks=[]}const next=fallbacks.shift();next?(img.dataset.frFallbacks=JSON.stringify(fallbacks),img.src=next):img.replaceWith(document.createRange().createContextualFragment(`<div class=\"fr-image-placeholder${img.className?` ${escapeHtml(img.className)}`:\"\"}\">${icon()}</div>`))},!0);const rawField=(robot,key)=>robot?.rawFields?.[key]||\"\",listFromText=(value=\"\",limit=6)=>String(value||\"\").split(/[;|]/).map(item=>item.trim()).filter(Boolean).slice(0,limit),publicStatusLabel=(status=\"\")=>{const text=String(status||\"\").toLowerCase();return text.includes(\"known\")?\"Verified\":text.includes(\"calculated\")?\"Calculated\":text.includes(\"estimated\")?\"Estimated\":text.includes(\"n/a\")?\"Not applicable\":text.includes(\"need\")?\"Source needed\":status||\"Source needed\"},upsertMeta=(name,content)=>{if(!content)return;let meta=document.querySelector(`meta[name=\"${name}\"]`);meta||(meta=document.createElement(\"meta\"),meta.setAttribute(\"name\",name),document.head.appendChild(meta)),meta.setAttribute(\"content\",content)},upsertCanonical=href=>{if(!href)return;let link=document.querySelector('link[rel=\"canonical\"]');link||(link=document.createElement(\"link\"),link.setAttribute(\"rel\",\"canonical\"),document.head.appendChild(link)),link.setAttribute(\"href\",href)},mediaViewKey=(item={})=>{const hay=`${item.displayLabel||\"\"} ${item.label||\"\"} ${item.type||\"\"} ${item.group||\"\"} ${item.sourcePath||\"\"}`.toLowerCase().replace(/[_-]+/g,\" \"),checks=[[\"contact_sheet\",[\"contact sheet\"]],[\"head_torso\",[\"head torso\",\"head close\",\"torso\"]],[\"arm_leg\",[\"arm leg\"]],[\"front\",[\"front\",\"portrait\"]],[\"side\",[\"side\",\"profile\"]],[\"rear\",[\"rear\",\"back\"]],[\"arm\",[\"arm\",\"hand\"]],[\"leg\",[\"leg\",\"feet\",\"foot\"]],[\"hero\",[\"hero\",\"main\"]],[\"square\",[\"square\"]],[\"landscape\",[\"landscape\"]],[\"mobile\",[\"mobile\"]],[\"social\",[\"social\",\"open graph\"]],[\"thumbnail\",[\"thumbnail\",\"thumb\"]]];for(const[key,tokens]of checks)if(tokens.some(token=>hay.includes(token)))return key;return`image:${item.image||item.sourcePath||item.label||\"\"}`},uniqueMedia=(items=[],limit=80)=>{const rows=Array.isArray(items)?items.filter(item=>item&&item.image):[],seenImages=new Set,seenViews=new Set,unique=[];return rows.forEach(item=>{const imageKey=item.image||\"\",viewKey=mediaViewKey(item);seenImages.has(imageKey)||seenViews.has(viewKey)||(seenImages.add(imageKey),seenViews.add(viewKey),unique.push(item))}),unique.slice(0,limit)};function robotFaqs(robot){const maker=robot.manufacturer||\"the listed manufacturer\",price=safe(robot.price,\"not publicly verified\"),availability=safe(robot.status,\"not publicly verified\"),height=safe(robot.height,\"not publicly listed\"),runtime=safe(robot.runtime,\"not publicly listed\"),payload=safe(robot.payload,\"not publicly listed\"),sourceCount=Number((robot.sources||[]).length+(robot.manuals||[]).length+(robot.papers||[]).length+(robot.communityMentions||[]).length);return[[`What is ${robot.name}?`,`${robot.name} is a ${robot.category||\"robot\"} associated with ${maker}. Firgelli Robots tracks its public specifications, media, source links, availability status, and comparison data in one profile.`],[`Who makes ${robot.name}?`,`${robot.name} is listed with ${maker}. The manufacturer profile and source links on this page should be used to verify company-level details before making buying or research decisions.`],[`Is ${robot.name} available to buy?`,`Current availability status: ${availability}. If the robot is marked as a prototype, pilot, announced, or not publicly sold, treat pricing and delivery claims as preliminary.`],[`How much does ${robot.name} cost?`,`Pricing status: ${price}. Robot prices often vary by configuration, support contract, deployment type, and whether the buyer is a research, enterprise, or consumer customer.`],[`What are the main ${robot.name} specifications?`,`Headline specs include height ${height}, runtime ${runtime}, payload ${payload}, and degrees of freedom ${safe(robot.dof,\"not publicly listed\")}. The specification table below groups the public details by category.`],[`What is ${robot.name} best used for?`,`${robot.name} is most useful to evaluate in the context of ${safe(robot.useCase||robot.targetMarket||robot.category,\"robot research and comparison\")}. Check the limitations section before assuming it is ready for home, factory, warehouse, or developer use.`],[`How reliable is the ${robot.name} data?`,`This profile currently links ${sourceCount.toLocaleString()} source records and avoids filling missing specifications with guesses.`]]}const REVIEW_SLUGS={\"limx-oli\":\"limx-oli-review\",\"limx-luna\":\"limx-luna-review\",\"noetix-bumi\":\"noetix-bumi-review\",\"ubtech-robotics-u1\":\"ubtech-u1-review\",\"ubtech-u1\":\"ubtech-u1-review\",\"ubtech-robotics-walker-c1\":\"walker-c1-review\",\"walker-c1\":\"walker-c1-review\",\"ubtech-robotics-cruzr-y1\":\"cruzr-y1-review\",\"cruzr-y1\":\"cruzr-y1-review\",\"ubtech-robotics-cruzr-s2\":\"cruzr-s2-review\",\"cruzr-s2\":\"cruzr-s2-review\",\"fourier-intelligence-gr-3\":\"fourier-gr-3-review\",\"gr-3\":\"fourier-gr-3-review\",\"engineai-t800\":\"engineai-t800-review\",\"galbot-et1\":\"galbot-et1-review\",\"galbot-g1\":\"galbot-g1-review\",\"x-humanoid-tiangong-omni\":\"tiangong-omni-review\",\"tiangong-omni\":\"tiangong-omni-review\",\"tesla-optimus\":\"tesla-optimus-review\",\"figure-02\":\"figure-ai-figure-02-review\",\"figure-ai-figure-02\":\"figure-ai-figure-02-review\",\"unitree-g1\":\"unitree-robotics-unitree-g1-review\",\"unitree-robotics-unitree-g1\":\"unitree-robotics-unitree-g1-review\",\"unitree-h1\":\"unitree-robotics-unitree-h1-review\",\"unitree-robotics-unitree-h1\":\"unitree-robotics-unitree-h1-review\",\"unitree-h2\":\"unitree-robotics-unitree-h2-review\",\"unitree-robotics-unitree-h2\":\"unitree-robotics-unitree-h2-review\",\"apptronik-apollo\":\"apptronik-apollo-review\",\"1x-technologies-neo\":\"1x-technologies-neo-review\",neo:\"1x-technologies-neo-review\",\"boston-dynamics-atlas\":\"boston-dynamics-atlas-review\",\"agility-robotics-digit\":\"agility-robotics-digit-review\",digit:\"agility-robotics-digit-review\",phoenix:\"sanctuary-ai-phoenix-review\",\"sanctuary-ai-phoenix\":\"sanctuary-ai-phoenix-review\",\"walker-s\":\"ubtech-robotics-walker-s-review\",\"ubtech-robotics-walker-s\":\"ubtech-robotics-walker-s-review\",\"gr-2\":\"fourier-intelligence-gr-2-review\",\"fourier-intelligence-gr-2\":\"fourier-intelligence-gr-2-review\",\"figure-01\":\"figure-01-review\",\"figure-ai-figure-01\":\"figure-01-review\",\"honda-asimo\":\"honda-asimo-review\",asimo:\"honda-asimo-review\",\"softbank-robotics-pepper\":\"softbank-robotics-pepper-review\",pepper:\"softbank-robotics-pepper-review\",\"xiaomi-cyberone\":\"xiaomi-cyberone-review\",cyberone:\"xiaomi-cyberone-review\",\"aldebaran-nao\":\"aldebaran-nao-review\",nao:\"aldebaran-nao-review\",\"fourier-intelligence-gr-1\":\"fourier-intelligence-gr-1-review\",\"fourier-intelligence-g1\":\"fourier-intelligence-g1-review\",\"engineered-arts-ameca\":\"engineered-arts-ameca-review\",ameca:\"engineered-arts-ameca-review\",\"istituto-italiano-di-tecnologia-icub\":\"istituto-italiano-di-tecnologia-icub-review\",icub:\"istituto-italiano-di-tecnologia-icub-review\",\"tecnologia-icub\":\"istituto-italiano-di-tecnologia-icub-review\",\"abb-yumi\":\"abb-yumi-review\",yumi:\"abb-yumi-review\",\"xman-r1\":\"xman-r1-review\",r1:\"unitree-r1-review\",\"ubtech-robotics-walker-x\":\"ubtech-robotics-walker-x-review\",x:\"ubtech-robotics-walker-x-review\",\"walker-x\":\"ubtech-robotics-walker-x-review\",vega:\"vega-review\",\"nasa-valkyrie\":\"nasa-valkyrie-review\",valkyrie:\"nasa-valkyrie-review\",\"unitree-r1\":\"unitree-r1-review\",\"tokyo-robotics-torobo\":\"tokyo-robotics-torobo-review\",torobo:\"tokyo-robotics-torobo-review\",\"robotics-torobo\":\"tokyo-robotics-torobo-review\",\"tekntrash-alpha\":\"tekntrash-alpha-review\",alpha:\"clone-robotics-clone-alpha-review\",\"pal-robotics-talos\":\"pal-robotics-talos-review\",talos:\"pal-robotics-talos-review\",\"robotics-talos\":\"pal-robotics-talos-review\",\"t1-standard\":\"t1-standard-review\",standard:\"t1-standard-review\",\"t1-grippers\":\"t1-grippers-review\",grippers:\"t1-grippers-review\",\"t1-basic\":\"t1-basic-review\",basic:\"t1-basic-review\",\"toyota-t-hr3\":\"toyota-t-hr3-review\",hr3:\"toyota-t-hr3-review\",\"t-hr3\":\"toyota-t-hr3-review\",steve:\"steve-review\",\"boston-dynamics-spot\":\"boston-dynamics-spot-review\",spot:\"boston-dynamics-spot-review\",\"dynamics-spot\":\"boston-dynamics-spot-review\",\"hanson-robotics-sophia\":\"hanson-robotics-sophia-review\",sophia:\"hanson-robotics-sophia-review\",\"robotics-sophia\":\"hanson-robotics-sophia-review\",\"bear-robotics-servi\":\"bear-robotics-servi-review\",servi:\"bear-robotics-servi-review\",\"robotics-servi\":\"bear-robotics-servi-review\",\"robotera-l7\":\"robotera-l7-review\",l7:\"robotera-l7-review\",\"robotis-op3\":\"robotis-op3-review\",op3:\"robotis-op3-review\",\"pal-robotics-reem-c\":\"pal-robotics-reem-c-review\",c:\"pal-robotics-reem-c-review\",\"reem-c\":\"pal-robotics-reem-c-review\",\"rainbow-robotics-rb-y1\":\"rainbow-robotics-rb-y1-review\",y1:\"rainbow-robotics-rb-y1-review\",\"rb-y1\":\"rainbow-robotics-rb-y1-review\",quantax2:\"quantax2-review\",\"pudu-d7\":\"pudu-d7-review\",d7:\"pudu-d7-review\",\"poppy-project-poppy-humanoid\":\"poppy-project-poppy-humanoid-review\",humanoid:\"poppy-project-poppy-humanoid-review\",\"poppy-humanoid\":\"poppy-project-poppy-humanoid-review\",\"pm-01\":\"pm-01-review\",\"01\":\"figure-01-review\",\"engineai-pm01\":\"engineai-pm01-review\",pm01:\"engineai-pm01-review\",\"university-of-bonn-nimbro-op2x\":\"university-of-bonn-nimbro-op2x-review\",op2x:\"university-of-bonn-nimbro-op2x-review\",\"nimbro-op2x\":\"university-of-bonn-nimbro-op2x-review\",n2:\"n2-review\",mirokai:\"mirokai-review\",\"mentee-robotics-menteebot\":\"mentee-robotics-menteebot-review\",menteebot:\"mentee-robotics-menteebot-review\",\"robotics-menteebot\":\"mentee-robotics-menteebot-review\",limx:\"limx-review\",\"kuka-lbr-iiwa\":\"kuka-lbr-iiwa-review\",iiwa:\"kuka-lbr-iiwa-review\",\"lbr-iiwa\":\"kuka-lbr-iiwa-review\",kepler:\"kepler-review\",\"kepler-robotics-kepler-forerunner\":\"kepler-robotics-kepler-forerunner-review\",forerunner:\"kepler-robotics-kepler-forerunner-review\",\"kepler-forerunner\":\"kepler-robotics-kepler-forerunner-review\",\"university-of-tokyo-kengoro\":\"university-of-tokyo-kengoro-review\",kengoro:\"university-of-tokyo-kengoro-review\",\"tokyo-kengoro\":\"university-of-tokyo-kengoro-review\",\"k1-pro\":\"k1-pro-review\",pro:\"k1-pro-review\",\"k1-geek\":\"k1-geek-review\",geek:\"k1-geek-review\",\"k1-edu\":\"k1-edu-review\",edu:\"k1-edu-review\",\"hmnd-01\":\"hmnd-01-review\",\"kawada-robotics-hrp-5p\":\"kawada-robotics-hrp-5p-review\",\"5p\":\"kawada-robotics-hrp-5p-review\",\"hrp-5p\":\"kawada-robotics-hrp-5p-review\",\"kawada-robotics-hrp-4\":\"kawada-robotics-hrp-4-review\",4:\"kawada-robotics-hrp-4-review\",\"hrp-4\":\"kawada-robotics-hrp-4-review\",1:\"fourier-intelligence-gr-1-review\",\"gr-1\":\"fourier-intelligence-gr-1-review\",g1:\"unitree-robotics-unitree-g1-review\",\"intelligence-g1\":\"fourier-intelligence-g1-review\",\"franka-robotics-franka-research-3\":\"franka-robotics-franka-research-3-review\",3:\"franka-robotics-franka-research-3-review\",\"research-3\":\"franka-robotics-franka-research-3-review\",\"ff-master\":\"ff-master-review\",master:\"ff-master-review\",\"ff-futurist\":\"ff-futurist-review\",futurist:\"ff-futurist-review\",\"ff-eai-robotics-ff-aegis-advanced-quadruped\":\"ff-eai-robotics-ff-aegis-advanced-quadruped-review\",quadruped:\"ff-eai-robotics-ff-aegis-advanced-quadruped-review\",\"advanced-quadruped\":\"ff-eai-robotics-ff-aegis-advanced-quadruped-review\",\"1x-technologies-eve\":\"1x-technologies-eve-review\",eve:\"1x-technologies-eve-review\",\"technologies-eve\":\"1x-technologies-eve-review\",dora:\"dora-review\",\"clone-robotics-clone-alpha\":\"clone-robotics-clone-alpha-review\",\"clone-alpha\":\"clone-robotics-clone-alpha-review\",atom:\"atom-review\",\"osaka-university-alter3\":\"osaka-university-alter3-review\",alter3:\"osaka-university-alter3-review\",\"university-alter3\":\"osaka-university-alter3-review\",allex:\"allex-review\",\"adam-sp\":\"adam-sp-review\",sp:\"adam-sp-review\",adam:\"adam-review\",\"karlsruhe-institute-of-technology-armar-6\":\"karlsruhe-institute-of-technology-armar-6-review\",6:\"karlsruhe-institute-of-technology-armar-6-review\",\"armar-6\":\"karlsruhe-institute-of-technology-armar-6-review\",\"anybotics-anymal\":\"anybotics-anymal-review\",anymal:\"anybotics-anymal-review\",\"naver-labs-ambidex\":\"naver-labs-ambidex-review\",ambidex:\"naver-labs-ambidex-review\",\"labs-ambidex\":\"naver-labs-ambidex-review\",\"robotics-pepper\":\"softbank-robotics-pepper-review\",\"arts-ameca\":\"engineered-arts-ameca-review\",px5:\"px5-review\",\"pudu-robotics-pudu-d9\":\"pudu-robotics-pudu-d9-review\",d9:\"pudu-robotics-pudu-d9-review\",\"pudu-d9\":\"pudu-robotics-pudu-d9-review\",\"agibot-a2\":\"agibot-a2-review\",a2:\"agibot-a2-review\",\"astribot-s1\":\"astribot-s1-review\",s1:\"astribot-s1-review\",h2:\"unitree-robotics-unitree-h2-review\",h1:\"unitree-robotics-unitree-h1-review\",2:\"fourier-intelligence-gr-2-review\",s:\"ubtech-robotics-walker-s-review\",\"ai-phoenix\":\"sanctuary-ai-phoenix-review\",\"robotics-digit\":\"agility-robotics-digit-review\",atlas:\"boston-dynamics-atlas-review\",\"dynamics-atlas\":\"boston-dynamics-atlas-review\",apollo:\"apptronik-apollo-review\",\"02\":\"figure-ai-figure-02-review\",\"technologies-neo\":\"1x-technologies-neo-review\",optimus:\"tesla-optimus-review\"},robotReviewUrl=(robot={})=>{const slug=String(robot.slug||robot.id||\"\").toLowerCase();if(REVIEW_SLUGS[slug])return`/blogs/robot-reviews/${REVIEW_SLUGS[slug]}`;const short=slug.split(\"-\").slice(-2).join(\"-\");return REVIEW_SLUGS[short]?`/blogs/robot-reviews/${REVIEW_SLUGS[short]}`:\"\"},setRobotSeo=robot=>{const maker=robot.manufacturer||\"Manufacturer not listed\",title=`${robot.name} specs, price & images | Firgelli Robots`,description=`${robot.name} by ${maker}: specifications, pricing status, images, videos, use cases, and source-linked robot data.`,canonicalUrl=`${location.origin}${robotUrl(robot)}`,citationUrls=[...robot.sources||[],...robot.manuals||[],...robot.papers||[],...robot.communityMentions||[]].map(item=>item&&item.url).filter(Boolean).slice(0,12);document.title=title,upsertMeta(\"description\",description.slice(0,158)),upsertCanonical(canonicalUrl);const faqs=robotFaqs(robot).slice(0,8),schema={\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":canonicalUrl,name:title,description,about:{\"@type\":\"Thing\",name:robot.name},citation:citationUrls,mainEntity:{\"@type\":\"Thing\",name:robot.name,description:robot.summary||description,image:robot.image?resolveImage(robot.image):void 0,additionalProperty:[[\"Availability\",robot.status],[\"Price\",robot.price],[\"Height\",robot.height],[\"Weight\",robot.weight],[\"Payload\",robot.payload],[\"Runtime\",robot.runtime],[\"Degrees of freedom\",robot.dof],[\"Speed\",robot.speed]].filter(([,value])=>value).map(([name,value])=>({\"@type\":\"PropertyValue\",name,value}))}},{\"@type\":\"FAQPage\",mainEntity:faqs.map(([question,answer])=>({\"@type\":\"Question\",name:question,acceptedAnswer:{\"@type\":\"Answer\",text:answer}}))},{\"@type\":\"BreadcrumbList\",itemListElement:[{\"@type\":\"ListItem\",position:1,name:\"Home\",item:`${location.origin}/`},{\"@type\":\"ListItem\",position:2,name:\"Robots\",item:`${location.origin}/pages/robots`},{\"@type\":\"ListItem\",position:3,name:robot.name,item:canonicalUrl}]}]};let script=document.querySelector(\"script[data-fr-robot-schema]\");script||(script=document.createElement(\"script\"),script.type=\"application/ld+json\",script.dataset.frRobotSchema=\"true\",document.head.appendChild(script)),script.textContent=JSON.stringify(schema)},publicMediaLabel=(view={})=>{const raw=String(view.displayLabel||view.label||view.type||\"Robot image\").replace(/[_-]+/g,\" \").replace(/\\s+/g,\" \").trim(),lower=raw.toLowerCase();return lower.includes(\"hero\")?\"Main photo\":lower.includes(\"rear/back\")?\"Rear view\":lower.includes(\"head/torso\")?\"Head and torso\":lower.includes(\"arm + leg\")?\"Arm and leg detail\":raw||\"Robot image\"},publicMediaGroup=(view={})=>{const group=String(view.group||\"\").replace(/[_-]+/g,\" \").trim();if(!group)return\"\";const lower=group.toLowerCase();return lower.includes(\"approved\")||lower.includes(\"generated\")?\"standard view\":group},mediaGallery=(items=[],robot={},limit=80)=>{const media=uniqueMedia(items,limit);return media.length?`<div class=\"fr-view-gallery\">${media.map(view=>`\n      <article class=\"fr-view-card\">\n        <img loading=\"lazy\" src=\"${escapeHtml(resolveImage(view.image||\"\"))}\" alt=\"${escapeHtml(`${robot.name||\"Robot\"} ${publicMediaLabel(view)}`)}\">\n        <strong>${escapeHtml(publicMediaLabel(view))}</strong>\n        <span>${escapeHtml([publicMediaGroup(view),view.officialImage?\"manufacturer source\":\"\"].filter(Boolean).join(\" - \"))}</span>\n      </article>\n    `).join(\"\")}</div>`:\"\"},viewGallery=robot=>mediaGallery(Array.isArray(robot.imageViews)?robot.imageViews:[],robot,12),hiddenPublicSpecLabels=new Set([\"robot id\",\"record id\",\"database id\",\"slug\",\"canonical slug\",\"image id\",\"source id\",\"video\",\"videos\"]),publicSpecLabelMap={api:\"Developer API\",ros:\"ROS\",ros2:\"ROS 2\",\"total dof\":\"Total degrees of freedom\",\"actuator count\":\"Actuators\",\"carry capacity\":\"Payload\",\"product url\":\"Official product page\",\"consumer / enterprise / research\":\"Market\"},booleanSpec=(value=\"\")=>{const text=String(value||\"\").trim().toLowerCase();return[\"true\",\"yes\",\"1\",\"supported\",\"available\"].includes(text)?\"true\":[\"false\",\"no\",\"0\",\"unsupported\"].includes(text)?\"false\":\"\"},publicSpecLabel=(label=\"\")=>publicSpecLabelMap[String(label||\"\").trim().toLowerCase()]||String(label||\"\").trim(),publicListValue=(value=\"\")=>{const parts=String(value||\"\").replace(/\\|/g,\";\").split(\";\").map(item=>item.trim()).filter(Boolean);return parts.length?parts.map(item=>item.charAt(0).toUpperCase()+item.slice(1)).join(\", \"):String(value||\"\").trim()},publicPhraseValue=(value=\"\")=>{const text=String(value||\"\").replace(/[_-]+/g,\" \").trim();return text?text.charAt(0).toUpperCase()+text.slice(1):\"\"},robotLooksLikeArm=(robot={})=>[\"name\",\"category\",\"summary\",\"useCase\",\"targetMarket\"].map(key=>String(robot[key]||\"\").toLowerCase()).join(\" \").match(/\\b(arm|manipulator|cobot)\\b/),publicBooleanSpecValue=(label=\"\",value=\"\")=>{const flag=booleanSpec(value),lower=String(label||\"\").trim().toLowerCase();return!flag||flag===\"false\"?\"\":lower===\"walking\"?\"Legged walking mobility\":lower===\"wheels\"?\"Wheeled base\":lower===\"tracks\"?\"Tracked base\":[\"api\",\"ros\",\"ros2\",\"ethernet\"].includes(lower)?\"Supported\":lower.includes(\"military\")?\"Listed for defense or military-related use in the public data\":\"Yes\"},isDisplayableSpecRow=(row={})=>{const value=String(row.value||\"\").trim().toLowerCase(),label=String(row.label||\"\").trim().toLowerCase(),status=String(row.status||\"\").trim().toLowerCase();return!(!value||value===\"not found yet\"||value===\"not publicly listed\"||hiddenPublicSpecLabels.has(label)||status.includes(\"need\")||status.includes(\"research\"))},publicSpecRow=(row={},section={},robot={})=>{if(!isDisplayableSpecRow(row))return null;const label=String(row.label||\"\").trim();let value=String(row.value||\"\").trim();const lowerLabel=label.toLowerCase();if(booleanSpec(value)){if(value=publicBooleanSpecValue(label,value,section,robot),!value)return null}else[\"availability\",\"status\"].includes(lowerLabel)?value=publicPhraseValue(value):[\"consumer / enterprise / research\",\"use case\",\"target market\"].includes(lowerLabel)?value=publicListValue(value):lowerLabel===\"product url\"&&(value=\"Open official product page\");return{label:publicSpecLabel(label),value}},publicMobilityRows=(section={},robot={})=>{const sourceRows=(section.rows||[]).filter(isDisplayableSpecRow),rowByLabel=new Map(sourceRows.map(row=>[String(row.label||\"\").trim().toLowerCase(),row])),motionLabels=[\"walking\",\"wheels\",\"tracks\"],presentMotionLabels=motionLabels.filter(label=>rowByLabel.has(label)),explicitlyStationary=presentMotionLabels.length&&presentMotionLabels.every(label=>booleanSpec(rowByLabel.get(label)?.value)===\"false\"),rows=motionLabels.filter(label=>rowByLabel.has(label)&&booleanSpec(rowByLabel.get(label)?.value)===\"true\").map(label=>publicSpecRow(rowByLabel.get(label),section,robot)).filter(Boolean);return sourceRows.filter(row=>!motionLabels.includes(String(row.label||\"\").trim().toLowerCase())).map(row=>publicSpecRow(row,section,robot)).filter(Boolean).forEach(row=>rows.push(row)),rows.length?rows:explicitlyStationary?[{label:\"Mobility type\",value:robotLooksLikeArm(robot)?\"Static robot arm designed to work from a fixed mounting point rather than walking or driving.\":\"No walking, wheeled, or tracked mobility is listed in the public specifications.\"}]:[]},publicSpecRowsForSection=(section={},robot={})=>{const category=String(section.category||\"\").trim().toLowerCase();return!category||[\"internal database fields\",\"website assets\",\"seo / knowledge graph\"].includes(category)?[]:category===\"mobility\"?publicMobilityRows(section,robot):(section.rows||[]).map(row=>publicSpecRow(row,section,robot)).filter(Boolean)},publicSpecCount=(robot={})=>(robot.specSections||[]).reduce((total,section)=>total+publicSpecRowsForSection(section,robot).length,0),renderSpecSections=robot=>{const hiddenCategories=new Set([\"Internal Database Fields\",\"Website Assets\",\"SEO / Knowledge Graph\"]),sections=(Array.isArray(robot.specSections)?robot.specSections:[]).filter(section=>!hiddenCategories.has(section.category)).map(section=>({...section,rows:publicSpecRowsForSection(section,robot)})).filter(section=>section.rows.length);return sections.length?`<div class=\"fr-spec-chart\">${sections.map((section,index)=>`\n      <details class=\"fr-spec-section\" ${index<8?\"open\":\"\"}>\n        <summary><span>${escapeHtml(section.category)}</span><em>${Number(section.rows.length||0).toLocaleString()} public detail${section.rows.length===1?\"\":\"s\"}</em></summary>\n        <div class=\"fr-spec-table\">\n          ${section.rows.map(row=>`\n            <div class=\"fr-spec-row\">\n              <span>${escapeHtml(row.label)}</span>\n              <strong>${escapeHtml(row.value)}</strong>\n            </div>\n          `).join(\"\")}\n        </div>\n      </details>\n    `).join(\"\")}</div>`:\"\"},sourceTypeLabel=(value=\"\")=>{const key=String(value||\"\").trim().toLowerCase().replace(/[^a-z0-9]+/g,\"_\").replace(/^_+|_+$/g,\"\"),labels={official_product_page:\"Official product page\",manufacturer_page:\"Manufacturer page\",official_press_release:\"Official press release\",press_release:\"Press release\",manual:\"Manual\",user_manual:\"User manual\",technical_manual:\"Technical manual\",quick_start_guide:\"Quick start guide\",api_docs:\"API documentation\",sdk_docs:\"SDK documentation\",white_paper:\"White paper\",research_paper:\"Research paper\",paper:\"Research paper\",patent:\"Patent\",news:\"News coverage\",review:\"Review\",forum:\"Forum discussion\",owner_review:\"Owner review\"};return labels[key]?labels[key]:String(value||\"Reference source\").replace(/[_-]+/g,\" \").replace(/\\s+/g,\" \").trim().replace(/\\b\\w/g,char=>char.toUpperCase())},sourceHost=(item={})=>{if(item.domain||item.publisher)return String(item.domain||item.publisher).replace(/^www\\./,\"\");try{return new URL(item.url,window.location.href).hostname.replace(/^www\\./,\"\")}catch{return\"\"}},sourcePathLabel=(url=\"\")=>{try{const path=new URL(url,window.location.href).pathname.split(\"/\").filter(Boolean).slice(0,2).join(\" / \");return path?`${path} page`:\"\"}catch{return\"\"}},sourceTitle=(item={},robot={})=>{const raw=String(item.title||\"\").trim(),kind=sourceTypeLabel(item.type);if(raw&&raw!==item.url){const lower=raw.toLowerCase(),kindLower=kind.toLowerCase();return!lower.includes(kindLower)&&[\"Official product page\",\"Manufacturer page\",\"Manual\",\"Patent\",\"Research paper\"].includes(kind)?`${raw} ${kind.toLowerCase()}`:raw}const host=sourceHost(item);return`${robot.name||\"Robot\"} ${kind.toLowerCase()}${host?` from ${host}`:\"\"}`},uniqueSourceRows=(items=[])=>{const rows=Array.isArray(items)?items.filter(item=>item&&item.url):[],score=(item={})=>{const quality=Number(item.quality||0);try{const path=new URL(item.url,window.location.href).pathname.split(\"/\").filter(Boolean).join(\"/\");return quality*1e3+path.length}catch{return quality*1e3}},sourceKey=(item={})=>{const title=String(item.title||\"\").trim().toLowerCase(),type=String(item.type||\"\").trim().toLowerCase(),host=sourceHost(item).toLowerCase();return title&&type&&host?`${host}|${type}|${title}`:String(item.url||\"\").trim().toLowerCase().replace(/\\/+$/,\"\")},seen=new Set;return rows.sort((a,b)=>score(b)-score(a)).filter(item=>{const key=sourceKey(item);return!key||seen.has(key)?!1:(seen.add(key),!0)}).slice(0,16)},listPhrase=(items=[])=>{const values=items.filter(Boolean);return values.length?values.length===1?values[0]:values.length===2?`${values[0]} and ${values[1]}`:`${values.slice(0,-1).join(\", \")}, and ${values[values.length-1]}`:\"\"},linkCards=(items=[],robot={})=>{const rows=uniqueSourceRows(items);return rows.length?`<div class=\"fr-source-grid\">${rows.map(item=>{const host=sourceHost(item),type=sourceTypeLabel(item.type),path=sourcePathLabel(item.url),meta=[type,host,path].filter(Boolean).join(\" - \"),summary=String(item.summary||\"\").trim();return`\n        <article class=\"fr-source-card\">\n          <a href=\"${escapeHtml(item.url)}\" target=\"_blank\" rel=\"noopener noreferrer\">\n            <strong>${escapeHtml(sourceTitle(item,robot))}</strong>\n            <span>${escapeHtml(meta||\"Reference source\")}</span>\n            ${summary&&!/fetch failed/i.test(summary)?`<em>${escapeHtml(summary.slice(0,170))}</em>`:\"\"}\n            <b>Open source</b>\n          </a>\n        </article>`}).join(\"\")}</div>`:\"\"},robotSourcesPanel=robot=>{const buckets=[[\"Official and primary sources\",\"Manufacturer pages, launch pages, and other primary references used to verify the public robot profile.\",robot.sources],[\"Manuals and technical documentation\",\"Manuals, developer documentation, quick-start guides, SDK notes, and technical PDFs where available.\",robot.manuals],[\"Research papers and patents\",\"Academic papers, patents, white papers, and technical research connected to the robot or platform.\",robot.papers],[\"Community and owner notes\",\"Public owner notes, forum posts, reviews, and community references with usable links.\",robot.communityMentions]].map(([title,description,items])=>({title,description,rows:uniqueSourceRows(items)})).filter(bucket=>bucket.rows.length);if(!buckets.length)return`<div class=\"fr-source-empty\"><strong>Sources are being verified for ${escapeHtml(robot.name||\"this robot\")}.</strong><p>Firgelli Robots only publishes usable citation links in this section, so queued research placeholders and unverified backlog records are kept out of the customer-facing page.</p></div>`;const total=buckets.reduce((sum,bucket)=>sum+bucket.rows.length,0),domains=[...new Set(buckets.flatMap(bucket=>bucket.rows.map(sourceHost).filter(Boolean)))].slice(0,6),sourceKinds=buckets.map(bucket=>bucket.title.toLowerCase()),category=robot.category||\"robot\";return`\n      <div class=\"fr-source-summary\">\n        <div>\n          <strong>${Number(total).toLocaleString()} verified ${total===1?\"reference\":\"references\"} for ${escapeHtml(robot.name||\"this robot\")}</strong>\n          <p>This ${escapeHtml(category)} profile connects ${escapeHtml(listPhrase(sourceKinds))} to help verify specifications, price status, availability, images, videos, developer support, and comparison notes before deeper research or buying decisions.</p>\n        </div>\n        ${domains.length?`<div class=\"fr-source-domain-row\" aria-label=\"Source domains\">${domains.map(domain=>`<span>${escapeHtml(domain)}</span>`).join(\"\")}</div>`:\"\"}\n      </div>\n      <div class=\"fr-robot-source-layout\">\n        ${buckets.map(bucket=>`\n          <section class=\"fr-source-group\">\n            <h3>${escapeHtml(bucket.title)}</h3>\n            <p>${escapeHtml(bucket.description)}</p>\n            ${linkCards(bucket.rows,robot)}\n          </section>\n        `).join(\"\")}\n      </div>`},videoPlaceholderValues=new Set([\"\",\"#\",\"n/a\",\"na\",\"null\",\"none\",\"undefined\",\"unknown\",\"test\",\"placeholder\",\"source\",\"video_url\",\"embed_url\",\"youtube\",\"youtube_link\",\"youtube_url\",\"youtube_video_id\"]),cleanVideoValue=(value=\"\")=>String(value||\"\").replace(/\\s+/g,\" \").trim(),isVideoPlaceholder=(value=\"\")=>videoPlaceholderValues.has(cleanVideoValue(value).toLowerCase()),safeVideoTitle=(value,index)=>{const title=cleanVideoValue(value);return isVideoPlaceholder(title)?`Movement video ${index+1}`:title||`Movement video ${index+1}`},parseVideoSource=(url=\"\",record={})=>{const raw=cleanVideoValue(url);if(isVideoPlaceholder(raw))return null;const explicitStatus=cleanVideoValue(record.validationStatus||record.validation_status);if(explicitStatus&&![\"valid_embeddable\",\"valid_link_only\"].includes(explicitStatus))return null;const explicitEmbed=cleanVideoValue(record.embedUrl||record.embed_url||record.normalizedEmbedUrl),explicitWatch=cleanVideoValue(record.url||record.watchUrl||record.normalizedWatchUrl||raw);if(explicitStatus===\"valid_link_only\")return{status:\"valid_link_only\",watchUrl:explicitWatch||raw,embedUrl:\"\",embeddable:!1,kind:\"link\"};try{const parsed=new URL(raw,window.location.href),host=parsed.hostname.replace(/^www\\./,\"\").toLowerCase();if(host===\"youtube.com\"||host===\"m.youtube.com\"){const id=parsed.searchParams.get(\"v\")||parsed.pathname.match(/\\/shorts\\/([^/?#]+)/)?.[1]||parsed.pathname.match(/\\/embed\\/([^/?#]+)/)?.[1];return/^[A-Za-z0-9_-]{11}$/.test(id||\"\")?{status:\"valid_embeddable\",kind:\"youtube\",videoId:id,watchUrl:`https://www.youtube.com/watch?v=${id}`,embedUrl:`https://www.youtube.com/embed/${id}`,embeddable:!0}:null}if(host===\"youtube-nocookie.com\"){const id=parsed.pathname.match(/\\/embed\\/([^/?#]+)/)?.[1];return/^[A-Za-z0-9_-]{11}$/.test(id||\"\")?{status:\"valid_embeddable\",kind:\"youtube\",videoId:id,watchUrl:`https://www.youtube.com/watch?v=${id}`,embedUrl:`https://www.youtube.com/embed/${id}`,embeddable:!0}:null}if(host===\"youtu.be\"){const id=parsed.pathname.split(\"/\").filter(Boolean)[0];return/^[A-Za-z0-9_-]{11}$/.test(id||\"\")?{status:\"valid_embeddable\",kind:\"youtube\",videoId:id,watchUrl:`https://www.youtube.com/watch?v=${id}`,embedUrl:`https://www.youtube.com/embed/${id}`,embeddable:!0}:null}if(host===\"vimeo.com\"||host===\"player.vimeo.com\"){const id=parsed.pathname.split(\"/\").filter(Boolean).find(part=>/^\\d+$/.test(part));return id?{status:\"valid_embeddable\",kind:\"vimeo\",videoId:id,watchUrl:`https://vimeo.com/${id}`,embedUrl:`https://player.vimeo.com/video/${id}`,embeddable:!0}:null}if(host===\"cdn.embedly.com\"){const candidate=parsed.searchParams.get(\"src\")||parsed.searchParams.get(\"url\")||\"\";return candidate&&candidate.includes(\"vimeo.com\")?parseVideoSource(candidate,record):null}return/\\.(mp4|webm|ogg)(?:$|[?#])/i.test(parsed.href)?{status:\"valid_embeddable\",kind:\"direct\",watchUrl:parsed.href,embedUrl:parsed.href,embeddable:!0}:explicitEmbed&&!isVideoPlaceholder(explicitEmbed)?{status:\"valid_embeddable\",kind:\"embed\",watchUrl:explicitWatch||explicitEmbed,embedUrl:explicitEmbed,embeddable:!0}:null}catch{return null}},usableVideoRecords=robot=>(Array.isArray(robot.videos)?robot.videos:[]).map((item,index)=>{const record=typeof item==\"string\"?{url:item}:item||{},parsed=parseVideoSource(record.url||record.embedUrl||\"\",record);return parsed?{...record,...parsed,title:safeVideoTitle(record.title||record.type,index)}:null}).filter(Boolean),isDirectVideoUrl=(url=\"\")=>/\\.(mp4|webm|ogg)(?:$|[?#])/i.test(String(url)),videoFrame=(record,robotName)=>{const frameTitle=`${robotName||\"Robot\"} ${record.title||\"movement video\"}`;if(record.status===\"valid_link_only\"||!record.embeddable){const href=record.watchUrl||record.url;return href?`<a class=\"fr-button fr-button--secondary\" href=\"${escapeHtml(href)}\" target=\"_blank\" rel=\"noopener noreferrer\">Watch on YouTube</a>`:\"\"}const embedUrl=record.embedUrl||record.url;if(!embedUrl||isVideoPlaceholder(embedUrl))return\"\";if(isDirectVideoUrl(embedUrl)){const srcdoc=`<!doctype html><html><head><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>html,body{margin:0;height:100%;background:#071525}video{display:block;width:100%;height:100%;object-fit:contain;background:#071525}</style></head><body><video controls preload=\"metadata\" src=\"${escapeHtml(embedUrl)}\"></video></body></html>`;return`<iframe class=\"fr-video-frame\" srcdoc=\"${escapeHtml(srcdoc)}\" title=\"${escapeHtml(frameTitle)}\" loading=\"lazy\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen></iframe>`}return`<iframe class=\"fr-video-frame\" src=\"${escapeHtml(embedUrl)}\" title=\"${escapeHtml(frameTitle)}\" loading=\"lazy\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>`},videoIframes=robot=>{const videos=usableVideoRecords(robot);return videos.length?`<div class=\"fr-video-grid\">${videos.map(record=>{const frame=videoFrame(record,robot.name);return frame?`\n        <article class=\"fr-video-card\">\n          ${frame}\n          <div>\n            <strong>${escapeHtml(record.title)}</strong>\n            <span>${escapeHtml([record.platform,record.type].filter(item=>item&&!isVideoPlaceholder(item)).join(\" - \")||\"Video evidence\")}</span>\n            ${record.source?`<a href=\"${escapeHtml(record.source)}\">Source -></a>`:\"\"}\n          </div>\n        </article>`:\"\"}).filter(Boolean).join(\"\")}</div>`:\"\"},bindTabs=(root=document)=>{root.querySelectorAll(\"[data-fr-tabs]\").forEach(tabs=>{const buttons=Array.from(tabs.querySelectorAll(\"[data-fr-tab-button]\")),panels=Array.from(tabs.querySelectorAll(\"[data-fr-tab-panel]\"));buttons.forEach(button=>{button.addEventListener(\"click\",()=>{const selected=button.dataset.frTabButton;buttons.forEach(item=>item.classList.toggle(\"is-active\",item===button)),panels.forEach(panel=>{const active=panel.dataset.frTabPanel===selected;panel.classList.toggle(\"is-active\",active),panel.hidden=!active})})})})},approvedMedia=robot=>Array.isArray(robot.approvedMedia)&&robot.approvedMedia.length?robot.approvedMedia:Array.isArray(robot.imageViews)?robot.imageViews:[],normalizeMediaToken=(value=\"\")=>String(value||\"\").toLowerCase().replace(/[_-]+/g,\" \").replace(/\\s+/g,\" \").trim(),mediaMatchScore=(item,tokens)=>{const type=normalizeMediaToken(item.type||\"\"),label=normalizeMediaToken(item.label||item.displayLabel||\"\"),hay=normalizeMediaToken(`${item.label||\"\"} ${item.type||\"\"} ${item.group||\"\"} ${item.sourcePath||\"\"}`);return tokens.reduce((score,token)=>{const normalized=normalizeMediaToken(token);return normalized?type===normalized?Math.max(score,100):label===normalized?Math.max(score,90):hay.includes(normalized)?Math.max(score,10):score:score},0)},pickMediaSet=(robot,definitions,limit=8)=>{const media=uniqueMedia([...Array.isArray(robot.imageViews)?robot.imageViews:[],...approvedMedia(robot)],64),used=new Set,selected=[];return definitions.forEach(([label,tokens])=>{const match=media.map((item,index)=>({item,index,score:used.has(item.image)?0:mediaMatchScore(item,tokens)})).filter(entry=>entry.score>0).sort((a,b)=>b.score-a.score||a.index-b.index)[0]?.item;match&&(used.add(match.image),selected.push({...match,displayLabel:label}))}),media.forEach(item=>{selected.length<limit&&!used.has(item.image)&&(used.add(item.image),selected.push(item))}),selected.slice(0,limit)},mediaTileGrid=(items,robot,modifier=\"\")=>{const media=Array.isArray(items)?items:[];return media.length?`<div class=\"fr-angle-grid ${modifier}\">${media.map(view=>`\n      <article class=\"fr-angle-tile\">\n        <img loading=\"lazy\" src=\"${escapeHtml(resolveImage(view.image||\"\"))}\" alt=\"${escapeHtml(`${robot.name||\"Robot\"} ${publicMediaLabel(view)}`)}\">\n        <strong>${escapeHtml(publicMediaLabel(view))}</strong>\n      </article>\n    `).join(\"\")}</div>`:'<p class=\"fr-muted\">No image gallery is available yet.</p>'},specLookup=(robot,labels)=>{const wanted=labels.map(label=>label.toLowerCase());for(const section of robot.specSections||[])for(const row of section.rows||[])if(wanted.includes(String(row.label||\"\").toLowerCase()))return row.value||\"\";return\"\"},shortValue=value=>{const text=safe(value,\"Not verified\");return text.length>84?`${text.slice(0,82).trim()}...`:text},robotChecklist=robot=>{const mediaCount=approvedMedia(robot).length;return`<ul class=\"fr-dossier-checklist\">${[[\"Image gallery\",mediaCount?`${mediaCount} images`:\"Not listed yet\"],[\"Main robot photo\",robot.image?\"Available\":\"Not listed yet\"],[\"Specification fields\",`${Number(robot.specSummary?.Total||0).toLocaleString()} fields`],[\"Source links\",`${Number((robot.sources||[]).length).toLocaleString()} sources`],[\"Media library\",`${mediaCount.toLocaleString()} images`],[\"Profile depth\",robot.completeness>=80?\"Strong\":\"Still growing\"]].map(([label,value])=>`<li><span></span><strong>${escapeHtml(label)}</strong><em>${escapeHtml(value)}</em></li>`).join(\"\")}</ul>`},pipelineSteps=robot=>{const steps=[[\"1\",\"Identity\",robot.id?\"Listed\":\"Not listed\"],[\"2\",\"Images\",approvedMedia(robot).length?\"Available\":\"Needed\"],[\"3\",\"Specs\",`${Number(publicSpecCount(robot)||robot.specSummary?.Known||0).toLocaleString()} details`],[\"4\",\"Sources\",`${Number((robot.sources||[]).length).toLocaleString()} sources`],[\"5\",\"Docs\",`${Number((robot.manuals||[]).length+(robot.papers||[]).length).toLocaleString()} linked`],[\"6\",\"Profile\",\"Published\"]];return`<div class=\"fr-dossier-pipeline\">${steps.map((step,index)=>`\n      <div class=\"fr-pipeline-step\">\n        <span>${escapeHtml(step[0])}</span>\n        <strong>${escapeHtml(step[1])}</strong>\n        <em>${escapeHtml(step[2])}</em>\n      </div>\n      ${index<steps.length-1?\"<b>-></b>\":\"\"}\n    `).join(\"\")}</div>`},knownSpecRows=(robot,categories=[],limit=8)=>{const wanted=categories.map(category=>category.toLowerCase()),rows=[];return(robot.specSections||[]).forEach(section=>{wanted.length&&!wanted.some(name=>String(section.category||\"\").toLowerCase().includes(name))||publicSpecRowsForSection(section,robot).forEach(row=>rows.push(row))}),rows.slice(0,limit)},specSentence=(robot,categories,fallback)=>{const rows=knownSpecRows(robot,categories,4);return rows.length?rows.map(row=>`${row.label}: ${row.value}`).join(\"; \"):fallback},internalLinkList=(items=[])=>`<div class=\"fr-related-links\">${items.filter(Boolean).map(item=>`<a href=\"${escapeHtml(item.url)}\">${escapeHtml(item.label)}</a>`).join(\"\")}</div>`,relatedRobots=(robot,data,limit=6)=>{const seen=new Set([robot.slug]),rows=[],add=candidate=>{!candidate||seen.has(candidate.slug)||(rows.push(candidate),seen.add(candidate.slug))};return data.robots.filter(item=>item.manufacturer&&item.manufacturer===robot.manufacturer).forEach(add),data.robots.filter(item=>item.category&&item.category===robot.category).forEach(add),(data.featuredRobots||[]).forEach(add),rows.slice(0,limit)},faqBlock=(faqs=[])=>`<div class=\"fr-faq-list\">${faqs.map(([question,answer])=>`\n    <details class=\"fr-faq-item\">\n      <summary>${escapeHtml(question)}</summary>\n      <p>${escapeHtml(answer)}</p>\n    </details>\n  `).join(\"\")}</div>`,robotSeoArticle=(robot,data)=>{const maker=publicMaker(robot),related=relatedRobots(robot,data,6),mediaCount=approvedMedia(robot).length,sourceCount=Number((robot.sources||[]).length+(robot.manuals||[]).length+(robot.papers||[]).length),targetMarket=safe(robot.targetMarket||robot.useCase||rawField(robot,\"target_market\"),\"robot buyers, researchers, engineers, and comparison shoppers\"),hardware=specSentence(robot,[\"physical\",\"degrees\",\"hands\",\"payload\"],`Public hardware details are still incomplete for ${robot.name}; published dimensions and manipulation fields are listed in the specification table.`),mobility=specSentence(robot,[\"mobility\",\"performance\"],`${robot.name} should be evaluated from the public mobility fields below, especially walking method, speed, terrain limits, and stability notes where available.`),battery=specSentence(robot,[\"battery\"],\"Battery chemistry, charging method, and runtime are not fully documented in the public data yet. Runtime should not be assumed beyond the fields shown in the specification table.\"),aiSoftware=specSentence(robot,[\"software\",\"ai\",\"developer\"],\"Software, SDK, ROS, local AI, and cloud AI details are tracked when publicly available. Software details stay unconfirmed until a stronger source is connected.\"),hands=specSentence(robot,[\"hands\",\"payload\"],\"End-effector and hand details are not fully documented yet. Use payload, hand DOF, finger count, and grip fields when comparing manipulation ability.\"),strengths=[sourceCount?`${sourceCount.toLocaleString()} linked source records support verification.`:\"\",mediaCount?`${mediaCount.toLocaleString()} approved image assets help compare visible design and proportions.`:\"\",robot.height?`Height is listed as ${robot.height}.`:\"\",robot.payload?`Payload is listed as ${robot.payload}.`:\"\",robot.dof?`Degrees of freedom are listed as ${robot.dof}.`:\"\"].filter(Boolean),limitations=[!robot.price||/not verified|not publicly|quote|listed/i.test(robot.price)?\"Pricing should be treated as unconfirmed or configuration-dependent.\":\"\",/prototype|pilot|announced|development|not publicly/i.test(String(robot.status||\"\"))?\"Availability may be limited to pilots, announcements, or non-public deployment.\":\"\",robot.runtime?\"\":\"Runtime is not fully documented in the public data.\",robot.source?\"\":\"A primary source URL is not yet attached to this profile.\",\"Robot specifications can change quickly as manufacturers revise hardware, software, and deployment programs.\"].filter(Boolean),relatedLinks=[robot.manufacturer?{label:`${maker} manufacturer profile`,url:manufacturerUrl(maker)}:null,{label:`${robot.category||\"Robot\"} category`,url:categoryUrl(robot.category||\"humanoid\")},{label:\"Robot comparison tool\",url:\"/pages/compare\"},{label:\"Robot price guide\",url:knowledgeUrl(\"Price\")},{label:\"Robot DOF explained\",url:knowledgeUrl(\"DOF\")},{label:\"Robot battery runtime explained\",url:knowledgeUrl(\"Runtime\")}];return`\n      <section class=\"fr-seo-article fr-robot-panel\">\n        <p class=\"fr-eyebrow\">${escapeHtml(robot.name)} spec card</p>\n        <h2>${escapeHtml(robot.name)} specs, price, availability and comparison</h2>\n        <p><strong>Quick answer:</strong> ${escapeHtml(robot.name)} is a ${escapeHtml(robot.category||\"robot\")} associated with ${escapeHtml(maker)}. Based on currently available public information, its availability is ${escapeHtml(safe(robot.status,\"not publicly confirmed\"))}, and its pricing status is ${escapeHtml(safe(robot.price,\"not publicly confirmed\"))}.</p>\n        <p>This profile is designed for people comparing humanoid robots, evaluating robot buying options, checking developer suitability, or researching the state of commercial robotics. Fields without enough public support stay unconfirmed until a stronger source is attached.</p>\n\n        <div class=\"fr-seo-grid\">\n          <article><h3>What is ${escapeHtml(robot.name)}?</h3><p>${escapeHtml(robot.summary||`${robot.name} is a ${robot.category||\"robot\"} profile built from public specifications, manufacturer references, approved images, and source links.`)}</p></article>\n          <article><h3>Who makes it?</h3><p>${escapeHtml(maker)} is the manufacturer currently connected to this profile. Use the linked manufacturer page and source cards below to verify company-level details, model lineage, and official product information.</p></article>\n          <article><h3>What is it designed for?</h3><p>${escapeHtml(robot.name)} is most relevant for ${escapeHtml(targetMarket)}. Treat use-case claims carefully when the robot is still marked as prototype, piloting, announced, or unavailable to the public.</p></article>\n          <article><h3>Availability and price</h3><p>Availability: ${escapeHtml(safe(robot.status,\"not publicly listed\"))}. Price: ${escapeHtml(safe(robot.price,\"not publicly listed\"))}. Robot pricing often depends on configuration, support contract, accessories, and whether the customer is buying, leasing, or joining a pilot.</p></article>\n        </div>\n\n        <h3>Hardware and design</h3>\n        <p>${escapeHtml(hardware)}</p>\n        <h3>Mobility</h3>\n        <p>${escapeHtml(mobility)}</p>\n        <h3>Hands, manipulation and payload</h3>\n        <p>${escapeHtml(hands)}</p>\n        <h3>Battery and charging</h3>\n        <p>${escapeHtml(battery)}</p>\n        <h3>AI, software and developer support</h3>\n        <p>${escapeHtml(aiSoftware)}</p>\n\n        <div class=\"fr-seo-grid\">\n          <article><h3>Strengths</h3><ul>${(strengths.length?strengths:[\"This profile is connected to the broader Firgelli Robots comparison database.\"]).map(item=>`<li>${escapeHtml(item)}</li>`).join(\"\")}</ul></article>\n          <article><h3>Limitations and uncertainties</h3><ul>${limitations.map(item=>`<li>${escapeHtml(item)}</li>`).join(\"\")}</ul></article>\n          <article><h3>Best use cases</h3><ul>${listFromText(robot.useCase||robot.targetMarket||\"Research; Comparison shopping; Robotics education; Enterprise evaluation\",6).map(item=>`<li>${escapeHtml(item)}</li>`).join(\"\")}</ul></article>\n          <article><h3>Not ideal for</h3><ul><li>Buyers who need guaranteed availability without confirming directly with the manufacturer.</li><li>Procurement decisions that require independently verified pricing, warranty, and deployment support.</li><li>Applications where missing safety, runtime, payload, or autonomy data cannot be tolerated.</li></ul></article>\n        </div>\n\n        <h3>Similar robots and comparisons</h3>\n        <p>Compare ${escapeHtml(robot.name)} against nearby robots to understand maturity, cost, availability, hardware tradeoffs, and ecosystem differences.</p>\n        ${internalLinkList(related.map(item=>({label:item.name,url:robotUrl(item)})).concat(relatedLinks))}\n\n        <h3>FAQ</h3>\n        ${faqBlock(robotFaqs(robot))}\n      </section>`},slugifyLocal=(value=\"\")=>String(value||\"\").toLowerCase().replace(/[^a-z0-9]+/g,\"-\").replace(/^-|-$/g,\"\"),categorySlugFromRoute=()=>categoryHandleMap[currentPageHandle()]||\"\",manufacturerSlugFromRoute=()=>currentPageHandle().replace(/-robot-manufacturer$/,\"\"),knowledgeTopicFromRoute=()=>{const handle=currentPageHandle();return{\"humanoid-robot-price-guide\":\"Price\",\"robot-price-explained\":\"Price\",\"robot-payload-explained\":\"Payload\",\"robot-runtime-explained\":\"Runtime\",\"robot-dof-explained\":\"DOF\",\"robot-height-explained\":\"Height\",\"robot-weight-explained\":\"Weight\",\"robot-release-status-explained\":\"Release Status\",\"robot-walking-speed-explained\":\"Walking Speed\"}[handle]||\"\"},toolFocusFromRoute=()=>{const handle=currentPageHandle();return{\"robot-finder\":\"Robot Match\",\"robot-compare-tool\":\"Robot Compare\",\"payload-calculator\":\"Payload Calculator\",\"robot-cost-calculator\":\"Cost of Ownership\",\"robot-timeline\":\"Robot Timeline\",\"3d-robot-viewer\":\"Robot Size Viewer\"}[handle]||\"\"},categorySeoContent=(kind,data,robots)=>{const category=new URLSearchParams(location.search).get(\"filter\")||categorySlugFromRoute()||\"humanoid\",record=(data.categories||[]).find(item=>item.slug===category)||{label:\"Robot Categories\",description:\"Robots grouped by use case, availability, specifications, images, and source quality.\"},top=robots.slice(0,8);return`\n      <section class=\"fr-seo-article fr-card fr-section\">\n        <p class=\"fr-eyebrow\">Category Guide</p>\n        <h2>${escapeHtml(record.label)} guide, best robots and buying considerations</h2>\n        <p>${escapeHtml(record.description||`${record.label} are tracked by use case, availability, specifications, images, and source quality.`)}</p>\n        <div class=\"fr-seo-grid\">\n          <article><h3>What belongs here?</h3><p>Robots in this category should have a clear public role that matches the category, plus enough specifications, images, or source material to compare them usefully.</p></article>\n          <article><h3>What should be compared elsewhere?</h3><p>Robots built for a different job are better reviewed in another category. A polished demo or similar-looking body shape is not enough by itself.</p></article>\n          <article><h3>What to compare first</h3><p>Start with whether the robot is actually available, then compare price status, size, payload, runtime, DOF, mobility, software access, support, and source quality.</p></article>\n          <article><h3>What to be careful about</h3><p>Many robotics companies publish partial specs. Missing price, runtime, safety, SDK, warranty, or deployment details should be treated as unknown.</p></article>\n        </div>\n        <h3>Good robots to start with</h3>\n        ${internalLinkList(top.map(robot=>({label:robot.name,url:robotUrl(robot)})))}\n        <h3>FAQ</h3>\n        ${faqBlock([[`What is the best ${record.label.toLowerCase()}?`,\"The best choice depends on whether you need consumer access, enterprise deployment, developer support, payload, runtime, or research flexibility. Use the comparison table and robot detail pages rather than relying on one headline spec.\"],[`Are ${record.label.toLowerCase()} for sale?`,\"Some are sold, some are enterprise-only, and many are still prototypes or pilot programs. Always verify the current availability status on the robot profile and manufacturer source.\"],[\"Which specs matter most?\",\"Price, availability, payload, runtime, DOF, safety, SDK/ROS support, and source quality usually matter more than promotional videos alone.\"]])}\n      </section>`},manufacturerSeoContent=(manufacturer,robots)=>{const lineup=robots.filter(robot=>robot.manufacturer===manufacturer.name).slice(0,12);return`\n      <section class=\"fr-seo-article fr-card fr-section\">\n        <p class=\"fr-eyebrow\">Manufacturer Profile</p>\n        <h2>${escapeHtml(manufacturer.name)} robots, company focus and public lineup</h2>\n        <p>${escapeHtml(manufacturer.name)} is a robotics company${manufacturer.country?` with country listed as ${escapeHtml(manufacturer.country)}`:\"\"}. This page reviews the company's public robot lineup, focus areas, available product information, and related robot profiles so buyers and researchers can understand where ${escapeHtml(manufacturer.name)} fits in the robotics market.</p>\n        <div class=\"fr-seo-grid\">\n          <article><h3>Robotics focus</h3><p>${escapeHtml(safe(manufacturer.focus,\"Robotics focus is not fully documented yet.\"))}</p></article>\n          <article><h3>Known models</h3><p>${escapeHtml(safe(manufacturer.models,lineup.map(robot=>robot.name).join(\", \")||\"No robot models are linked yet.\"))}</p></article>\n          <article><h3>Location</h3><p>${escapeHtml([manufacturer.country,manufacturer.headquarters].filter(Boolean).join(\" - \")||\"Country and headquarters are not fully documented yet.\")}</p></article>\n          <article><h3>Source confidence</h3><p>${Number(manufacturer.confidence||0).toLocaleString()}% confidence with ${Number(manufacturer.sourceCount||0).toLocaleString()} source records attached where available.</p></article>\n        </div>\n        <h3>Robot lineup</h3>\n        ${internalLinkList(lineup.map(robot=>({label:robot.name,url:robotUrl(robot)})))}\n        <h3>FAQ</h3>\n        ${faqBlock([[`What robots does ${manufacturer.name} make?`,`${manufacturer.models||lineup.map(robot=>robot.name).join(\", \")||\"The linked robot lineup is still being expanded.\"}`],[`Where is ${manufacturer.name} based?`,`${[manufacturer.country,manufacturer.headquarters].filter(Boolean).join(\" - \")||\"Location data is not fully documented yet.\"}`],[`How should I verify ${manufacturer.name} data?`,\"Use the linked robot profiles, manufacturer website, product pages, and source records. Unknown company details should stay unconfirmed until supported by a source.\"]])}\n      </section>`},comparisonSeoContent=robots=>{if(!robots.length)return\"\";const names=robots.map(robot=>robot.name).join(\" vs \");return`\n      <section class=\"fr-seo-article fr-card fr-section\">\n        <p class=\"fr-eyebrow\">Comparison Analysis</p>\n        <h2>${escapeHtml(names)} comparison guide</h2>\n        <p>This comparison is designed to help buyers, researchers, engineers, and robotics enthusiasts evaluate differences in price, availability, dimensions, payload, runtime, DOF, and maturity. The table is a starting point; each robot profile contains deeper source notes and missing-data warnings.</p>\n        <div class=\"fr-seo-grid\">\n          <article><h3>Short verdict</h3><p>Choose the robot with the best match for your intended use case, not simply the most familiar brand. Availability and support matter as much as headline specifications.</p></article>\n          <article><h3>Key differences</h3><p>${escapeHtml(robots.map(robot=>`${robot.name}: ${compactStatus(robot.status)}, ${compactPrice(robot.price)}`).join(\"; \"))}</p></article>\n          <article><h3>Data limitations</h3><p>Several humanoid robot projects publish incomplete or changing data. Treat unknown fields as unknown and verify directly with the manufacturer before buying or citing.</p></article>\n          <article><h3>Best next step</h3><p>Open each robot profile to inspect source links, image galleries, videos, and full specification sections before making a decision.</p></article>\n        </div>\n        <h3>Related robot profiles</h3>\n        ${internalLinkList(robots.map(robot=>({label:robot.name,url:robotUrl(robot)})))}\n      </section>`},toolSeoContent=(data,focus=\"\")=>{const profile={\"Robot Compare\":{eyebrow:\"Comparison Guide\",heading:\"Robot comparison tool for price, specs, availability and fit\",targets:[\"robot comparison tool\",\"compare humanoid robots\",\"robot specs comparison\",\"best humanoid robot comparison\",\"robot price comparison\"],intro:\"This robot comparison tool is built for buyers, engineers, researchers and robotics teams who need a fast way to compare robots side by side without losing sight of source quality. It helps you compare price status, availability, height, weight, payload, runtime, degrees of freedom, mobility and profile evidence before you spend time contacting manufacturers or reading every profile in full.\",sections:[[\"What this comparison is best for\",\"Use the compare widget when you have two to four candidate robots and need to understand how they differ in practical terms. A robot with a lower price may have weaker support, a shorter runtime, less payload or a less mature deployment path. A robot with impressive videos may still be a prototype with limited buying information. The value of a comparison is not simply finding the biggest number; it is seeing which public claims are complete enough to trust.\"],[\"How the data should be read\",\"Firgelli Robots separates published specifications, public price signals, release status, images and source notes so readers can see what is known and what still needs verification. When a field is unknown, quote-based or not publicly listed, treat that as a research flag. Unknown data should never be interpreted as zero cost, zero risk or hidden performance.\"],[\"Expert review perspective\",\"A useful robot comparison checks the job first, then the robot. For warehouse work, payload, runtime, service model and safety integration may matter more than humanoid appearance. For research, SDK access, repairability, documentation and lab adoption may matter more than near-term commercial availability. For a buyer, warranty, support, delivery timing and total cost often outweigh a single headline specification.\"]],cards:[[\"Compare like for like\",\"Start with robots meant for the same job. A research platform, prototype, preorder robot and commercial deployment can look similar in a table but mean very different things.\"],[\"Check missing data\",\"Unknown price, runtime, payload or support terms should be treated as open questions, not as zero or as a confirmed feature.\"],[\"Use profiles for proof\",\"The compare tool is a fast view. Open each robot profile to inspect sources, images, videos and notes before making a buying or research decision.\"],[\"Good next step\",\"After comparing specs, use the cost calculator and robot finder to test budget and use-case fit.\"]],faq:[[\"What is the best way to compare humanoid robots?\",\"Start with the intended use case, then compare availability, price status, payload, runtime, height, weight, mobility, software access, support model and source quality. The best robot is the one that fits the job and has enough verified information to reduce buying risk.\"],[\"Can I use this robot comparison tool for buying decisions?\",\"Use it as an early research and shortlisting tool. Before buying, confirm current pricing, delivery timing, warranty, safety requirements, training, integration support and service terms directly with the manufacturer or integrator.\"],[\"Why do some robots show unknown or quote-based values?\",\"Many robotics companies publish partial specifications or enterprise-only pricing. Firgelli Robots keeps those gaps visible so users do not mistake missing public data for confirmed capability.\"],[\"Which specs matter most when comparing robots?\",\"For most projects, availability, price, payload, runtime, serviceability, safety, software ecosystem, support and source confidence matter more than a single impressive demo metric.\"],[\"Should prototypes be compared with commercial robots?\",\"They can be compared for research context, but they should not be treated as equivalent buying options. A prototype may show future capability while a commercial robot has delivery, support and deployment responsibilities.\"],[\"How often should robot comparison data be rechecked?\",\"Recheck data whenever you are close to a purchase, citation or project decision. Robot pricing, release status, payload claims and software access can change quickly.\"]],links:[{label:\"Robot database\",url:\"/pages/robots\"},{label:\"Robot finder\",url:\"/pages/robot-finder\"},{label:\"Cost calculator\",url:\"/pages/robot-cost-calculator\"},{label:\"Humanoid robot price guide\",url:\"/pages/humanoid-robot-price-guide\"}]},\"Robot Match\":{eyebrow:\"Finder Guide\",heading:\"Robot finder for matching robots by use case, budget and specs\",targets:[\"robot finder\",\"find a robot for my use case\",\"humanoid robot finder\",\"robot recommendation tool\",\"robot buying guide\"],intro:\"The robot finder is designed for people who know the job they want a robot to do but do not yet know which models deserve closer review. It ranks robots by goal, form factor, budget signal and priority so users can move from a broad robotics database to a more realistic shortlist.\",sections:[[\"What the finder is trying to solve\",\"Robot search is difficult because the market mixes commercial robots, preorder systems, pilot programs, research platforms and prototypes. A simple alphabetical list does not help a buyer decide whether a robot is suitable for home assistance, research, warehouse work, education, hospitality or enterprise testing. The finder turns those decision points into a practical filter.\"],[\"How to interpret matches\",\"A strong match means a robot record contains public signals that align with your filters. It does not mean the robot is guaranteed to be available, safe for your environment or affordable after integration. Treat the result as a prioritized reading list, then open the profiles and compare the finalists.\"],[\"Expert review perspective\",\"Good robot matching starts with the task environment. Payload, runtime, mobility, developer access, service terms and support expectations should be matched to the work before brand preference. The finder helps expose candidates, but the final decision should consider whether the robot can be purchased, maintained and safely operated.\"]],cards:[[\"Start broad\",\"Begin with any budget or any type, then tighten the filters once you see which robots appear repeatedly.\"],[\"Read the fit score carefully\",\"A high fit score means the public record matches the selected filters. It does not guarantee availability, warranty, safety or delivery timing.\"],[\"Open the profiles\",\"The result cards link to robot profiles with source notes, images, videos and specifications so you can verify the match.\"],[\"Compare finalists\",\"Once you have two to four candidates, compare them side by side and model ownership cost.\"]],faq:[[\"How does the robot finder choose matches?\",\"It scores public robot records against the selected use case, category, budget signal and priority. The score reflects visible database fit, not a private endorsement or guaranteed product recommendation.\"],[\"What should I do after the finder shows robot matches?\",\"Open the top profiles, check source links and missing data, then compare two to four finalists with the robot compare tool and cost calculator.\"],[\"Can the finder tell me which robot to buy?\",\"No. It can narrow the field, but buying requires confirmation of current price, availability, support, warranty, safety and integration needs.\"],[\"Why does a robot appear even if it is not commercially available?\",\"Research platforms, prototypes and announced robots can be relevant for education, development or market tracking. The status field should be read before treating any robot as a purchase option.\"],[\"Which robot finder filters matter most?\",\"Goal and priority usually matter first. Budget is useful, but many robots use quote-based pricing, so a budget filter should be combined with availability, payload, runtime and developer access.\"],[\"Is this only a humanoid robot finder?\",\"No. The finder can surface humanoid, service, warehouse, research, industrial and other robot records when the public data matches the selected criteria.\"]],links:[{label:\"Robot database\",url:\"/pages/robots\"},{label:\"Robot compare tool\",url:\"/pages/robot-compare-tool\"},{label:\"Cost calculator\",url:\"/pages/robot-cost-calculator\"},{label:\"Payload calculator\",url:\"/pages/payload-calculator\"}]},\"Payload Calculator\":{eyebrow:\"Payload Guide\",heading:\"Robot payload calculator for lifting, carrying and handling tasks\",targets:[\"robot payload calculator\",\"humanoid robot payload\",\"robot arm payload calculator\",\"calculate robot payload\",\"robot lifting capacity\"],intro:\"The robot payload calculator helps estimate the minimum rated payload a robot should publish before it is considered for a lifting, carrying or handling task. It is especially useful when comparing humanoid robots, mobile manipulators, service robots and research platforms that publish payload in different ways.\",sections:[[\"Why payload needs a safety margin\",\"Payload is not only the weight of the object. A realistic estimate includes the object, gripper, bracket, tool, cable drag, packaging variation and dynamic forces from starting, stopping or turning. A robot that can lift a load once in a demonstration may not be suitable for repeated production cycles without margin.\"],[\"How to read matching robots\",\"The calculator surfaces robots with public payload values that meet or exceed the estimate. That does not prove reach, grip, duty cycle, stability, safety certification or endurance. A match means the robot deserves further review, not that it is automatically ready for deployment.\"],[\"Expert review perspective\",\"For practical robotics work, payload should be evaluated with reach, speed, battery life, thermal limits, end-effector design and failure mode. Humanoid robots may publish arm payload, carrying payload or planned payload, which are not always the same measurement. Always verify which payload definition the manufacturer is using.\"]],cards:[[\"Use real working weight\",\"Include the object, gripper, fixture, cable drag and anything else the robot has to carry or move.\"],[\"Add safety margin\",\"A higher safety factor is useful when the load shifts, cycle rate is high, specs are incomplete or the task is safety-sensitive.\"],[\"Treat matches as candidates\",\"Matching robots have enough public payload data to clear the estimate, but you still need to verify reach, grip, duty cycle and support.\"],[\"Do not ignore unknowns\",\"Robots without public payload data may still be capable, but they should not be assumed suitable until the manufacturer confirms it.\"]],faq:[[\"How do I calculate robot payload?\",\"Start with the full working load, including the object, gripper, fixture and any attached tooling. Multiply that by an appropriate safety factor, then compare the result against the robot's rated payload.\"],[\"What safety factor should I use for robot payload?\",\"Use a lower factor for controlled light-duty tasks and a higher factor when the load shifts, speed is high, the duty cycle is heavy, the robot works near people or the published data is incomplete.\"],[\"Is humanoid robot payload the same as robot arm payload?\",\"Not always. A humanoid may publish single-arm payload, two-arm carrying capacity, hand payload or planned carrying capacity. Those values should not be treated as interchangeable without manufacturer confirmation.\"],[\"Why are some robots missing from the payload matches?\",\"Robots without public payload data are not shown as matches because the calculator cannot verify that they clear the estimate.\"],[\"Can payload alone determine whether a robot can do a task?\",\"No. Reach, grip, balance, runtime, motion speed, environment, safety, software and support also affect whether a robot can perform the work reliably.\"],[\"Should I choose the robot with the highest payload?\",\"Not automatically. Choose the robot whose payload, reach, runtime, availability, support and total cost match the job with enough margin.\"]],links:[{label:\"Robot payload explained\",url:\"/pages/robot-payload-explained\"},{label:\"Robot database\",url:\"/pages/robots\"},{label:\"Robot compare tool\",url:\"/pages/robot-compare-tool\"},{label:\"Cost calculator\",url:\"/pages/robot-cost-calculator\"}]},\"Cost of Ownership\":{eyebrow:\"Cost Guide\",heading:\"Robot cost of ownership calculator for purchase, deployment and support\",targets:[\"robot cost calculator\",\"robot cost of ownership\",\"humanoid robot cost\",\"robot deployment cost\",\"robot maintenance cost\"],intro:\"The robot cost of ownership calculator turns a headline robot price into a fuller budget estimate. It is designed for buyers and teams comparing humanoid robots, service robots, warehouse robots and research platforms where the purchase price is only one part of the real cost.\",sections:[[\"What total robot cost includes\",\"A robot project usually includes purchase price, deployment setup, fixtures, tools, accessories, software, training, integration labor, shipping, taxes, service plans, replacement batteries or consumables and internal support time. For enterprise robots, the largest cost difference may come from integration and service rather than the robot body itself.\"],[\"Why this matters for robot buyers\",\"Robotics budgets fail when teams compare a public MSRP against a real deployment requirement. A lower-cost robot can become expensive if it needs custom integration, frequent support or unavailable parts. A higher-cost robot may be more economical if it includes documentation, service, training and a mature deployment path.\"],[\"Expert review perspective\",\"Cost of ownership should be tied to risk. Prototype robots, preorder programs and quote-only platforms need more contingency than mature products with clear warranty and support. The calculator makes assumptions visible so a buyer can change the model instead of relying on a single marketing number.\"]],cards:[[\"Headline price is not total cost\",\"Deployment, integration, tools, safety work, software, freight, tax and downtime can be as important as the robot purchase price.\"],[\"Use a robot preset carefully\",\"A preset fills the purchase price when public price data exists. Keep editing the assumptions to match your project.\"],[\"Separate one-time and recurring costs\",\"The breakdown separates purchase and setup from annual support items so you can see what drives the total over time.\"],[\"Verify before buying\",\"Confirm warranty, service plan, battery life, spares, support response, training and delivery terms directly with the maker or integrator.\"]],faq:[[\"How much does a humanoid robot cost?\",\"Public prices vary widely. Some robots list a price, some use enterprise quotes, and others are prototypes or research platforms with no public selling price. The calculator helps model the ownership cost once a purchase price or quote is available.\"],[\"What should be included in robot cost of ownership?\",\"Include purchase price, deployment setup, accessories, end effectors, safety work, software, training, service, consumables, batteries, internal support labor, freight, taxes and downtime assumptions.\"],[\"Why is robot deployment cost different from purchase price?\",\"Deployment cost includes the work required to make the robot useful in a real environment: integration, setup, training, testing, support, tooling and process changes.\"],[\"Can I use the calculator before I have a quote?\",\"Yes. Use a rough price assumption or a public preset to explore scenarios, then replace it with a manufacturer quote before making a decision.\"],[\"How should service and maintenance be estimated?\",\"Start with a percentage of purchase price plus expected consumables and support labor. Increase the assumption when the robot is new, hard to service, heavily used or mission-critical.\"],[\"Does the lowest purchase price mean the lowest total cost?\",\"Not necessarily. A low purchase price can be outweighed by integration work, limited support, short battery life, downtime, missing documentation or expensive parts.\"]],links:[{label:\"Humanoid robot price guide\",url:\"/pages/humanoid-robot-price-guide\"},{label:\"Robot compare tool\",url:\"/pages/robot-compare-tool\"},{label:\"Robot finder\",url:\"/pages/robot-finder\"},{label:\"Robot runtime explained\",url:\"/pages/robot-runtime-explained\"}]},\"Robot Timeline\":{eyebrow:\"Timeline Guide\",heading:\"Robot timeline for launches, prototypes, pilots and research platforms\",targets:[\"robot timeline\",\"humanoid robot timeline\",\"robot launch dates\",\"humanoid robot release date\",\"robot development timeline\"],intro:\"The robot timeline helps readers understand when robots were announced, launched, piloted, updated or documented in public records. It is built for researchers, buyers and enthusiasts who need context around robot maturity rather than a simple list of names.\",sections:[[\"What the timeline can and cannot prove\",\"A timeline year can point to an announcement, product launch, pilot, research milestone, public source record or database update. That context matters because a robot announced in a given year may not be available for purchase, and a research platform may remain important even if it is not a commercial product.\"],[\"Why robot maturity matters\",\"Robots often move through phases: concept, prototype, lab platform, pilot, preorder, commercial deployment and sometimes discontinuation. A timeline helps show where a robot sits in that progression, but maturity should still be checked against source links, manufacturer pages, customer deployments and support details.\"],[\"Expert review perspective\",\"For market research, timeline data is useful for spotting waves of competition and changes in manufacturer focus. For buying decisions, the important question is not only when a robot appeared, but whether it has stable specifications, delivery terms, support infrastructure and real deployment evidence.\"]],cards:[[\"Timeline years need context\",\"A year may refer to an announcement, launch, update, research publication or database signal. Open the profile to verify what it means.\"],[\"Filter by category and status\",\"Use the filters to separate humanoid, service, quadruped and arm records, then narrow by availability or research maturity.\"],[\"Watch maturity changes\",\"Robotics projects can move from prototype to pilot to commercial deployment over time. Timeline position is not the same as readiness.\"],[\"Use sources for proof\",\"The research hub and robot profiles are the best places to confirm whether a date is official, secondary or still incomplete.\"]],faq:[[\"What does a year mean in the robot timeline?\",\"A year may represent an announcement, release, pilot, research publication, public product page or database signal. Open the robot profile to understand the source behind the year.\"],[\"Is a robot with a recent year automatically better?\",\"No. Newer robots may have better hardware or AI claims, but they may also have less proof, fewer support resources and less availability than older platforms.\"],[\"Can I use the timeline to find robots for sale?\",\"Use it as a starting point, then check status and profile sources. A timeline entry does not guarantee that the robot is commercially available.\"],[\"Why are research robots included?\",\"Research robots are important for understanding the development of humanoid robotics, manipulation, walking, sensing and open-source platforms, even when they are not sold as commercial products.\"],[\"How should prototypes be handled in timeline research?\",\"Treat prototypes as evidence of direction and capability, not as confirmed products. Look for later source records that show pilots, deployments or sales.\"],[\"What should I compare after using the timeline?\",\"Compare robots by availability, price, payload, runtime, mobility, source confidence and manufacturer support before drawing conclusions.\"]],links:[{label:\"Research hub\",url:\"/pages/research\"},{label:\"Robot database\",url:\"/pages/robots\"},{label:\"Manufacturers\",url:\"/pages/manufacturers\"},{label:\"Robot compare tool\",url:\"/pages/robot-compare-tool\"}]},\"Robot Size Viewer\":{eyebrow:\"Size Guide\",heading:\"Robot size viewer for height, proportions, payload and visual comparison\",targets:[\"robot size viewer\",\"compare robot height\",\"humanoid robot height comparison\",\"robot dimensions\",\"robot size comparison\"],intro:\"The robot size viewer helps compare two robots visually using database images and published dimensions. It is built for readers who need to understand robot height, proportions, weight, payload and status before moving into a deeper specification comparison.\",sections:[[\"Why visual size comparison matters\",\"Robot dimensions affect workspace fit, transport, safety planning, reach, visibility, storage, battery placement and how the robot interacts with people. A humanoid robot that looks similar in a photo may have very different height, weight, payload and operating assumptions.\"],[\"How to read the viewer\",\"The size viewer uses available robot images and compact dimensions for practical comparison. It is not a CAD model, reach simulator or engineering drawing. It should be used to understand proportion and scale before checking the full profile and source records.\"],[\"Expert review perspective\",\"Size should be evaluated with the job. A taller robot may reach higher shelves but be harder to transport or operate in tight spaces. A lighter robot may be easier to deploy but have lower payload or stability. Status and support matter as much as dimensions.\"]],cards:[[\"Use it for proportion checks\",\"The viewer helps compare height, body shape and visual scale quickly. It is not a CAD model, engineering drawing or reach simulation.\"],[\"Read dimensions with caution\",\"Some records publish height in different units or with planned values. Open the profile and sources before relying on the number.\"],[\"Compare payload and status too\",\"A robot that is taller is not automatically stronger, available or better suited to a task. Pair size with payload, runtime and status.\"],[\"Open profiles for detail\",\"The profile pages include images, specs, notes and sources that explain the visual comparison in more depth.\"]],faq:[[\"How do I compare robot height accurately?\",\"Use the published height value and check the source behind it. Some robots publish planned dimensions, approximate measurements or values in different units.\"],[\"Is the robot size viewer a 3D model?\",\"No. It is a practical visual comparison tool using database images and published dimensions. It is not a CAD viewer, reach simulation or engineering model.\"],[\"Why does robot weight matter with size?\",\"Weight affects transport, stability, floor loading, battery requirements, safety and deployment logistics. Two robots with similar height can have very different operating constraints.\"],[\"Should I choose a taller humanoid robot?\",\"Not automatically. A taller robot may have reach advantages, but the right choice depends on payload, runtime, mobility, safety, support and environment fit.\"],[\"Can images distort robot size?\",\"Yes. Camera angle, pose, cropping and missing scale references can affect perception. Use the dimensions and source links to verify what the image suggests.\"],[\"What should I check after comparing robot size?\",\"Open the robot profiles and compare payload, runtime, availability, price, mobility, support and source confidence.\"]],links:[{label:\"Robot height explained\",url:\"/pages/robot-height-explained\"},{label:\"Robot payload explained\",url:\"/pages/robot-payload-explained\"},{label:\"Robot compare tool\",url:\"/pages/robot-compare-tool\"},{label:\"Robot database\",url:\"/pages/robots\"}]}}[focus],relatedTools=(current=\"\")=>normalizedTools().filter(tool=>!current||tool.title!==current).map(tool=>({label:tool.title,url:tool.url}));return profile?`\n        <section class=\"fr-seo-article fr-card fr-section\">\n          <p class=\"fr-eyebrow\">${escapeHtml(profile.eyebrow)}</p>\n          <h2>${escapeHtml(profile.heading)}</h2>\n          <p>${escapeHtml(profile.intro)}</p>\n          <p><strong>Search intent this page serves:</strong> ${escapeHtml(profile.targets.join(\", \"))}.</p>\n          ${profile.sections.map(([heading,copy])=>`<h3>${escapeHtml(heading)}</h3><p>${escapeHtml(copy)}</p>`).join(\"\")}\n          <div class=\"fr-seo-grid\">\n            ${profile.cards.map(([heading,copy])=>`<article><h3>${escapeHtml(heading)}</h3><p>${escapeHtml(copy)}</p></article>`).join(\"\")}\n          </div>\n          <h3>FAQ</h3>\n          ${faqBlock(profile.faq)}\n          <h3>Related robot tools</h3>\n          ${internalLinkList(relatedTools(focus))}\n          <h3>Useful next pages</h3>\n          ${internalLinkList(profile.links)}\n        </section>`:`\n      <section class=\"fr-seo-article fr-card fr-section\">\n        <p class=\"fr-eyebrow\">Robot Tools</p>\n        <h2>Robot finder, comparison tools, calculators and research widgets</h2>\n        <p>Firgelli Robots tools are built for buyers, engineers, robotics researchers and enthusiasts who need practical decision support from source-backed robot data. The tool set connects robot profiles, public specifications, manufacturer records, approved imagery, source links and research notes so users can move from broad discovery to a defensible shortlist.</p>\n        <p><strong>Search intent this page serves:</strong> robot tools, robot finder, robot comparison tool, robot cost calculator, robot payload calculator, robot timeline, robot size comparison.</p>\n        <h3>How the tool hub should be used</h3>\n        <p>Start with the robot finder when you are still exploring, use the compare tool when you have finalists, estimate payload when a robot must lift or carry something, model ownership cost before contacting suppliers, use the timeline for market context, and use the size viewer when dimensions and proportions affect fit.</p>\n        <h3>Evidence, trust and limitations</h3>\n        <p>The tools are designed to make assumptions visible. Missing price, unknown payload, incomplete runtime, prototype status or quote-based availability should be treated as research questions. The widgets help you decide what to verify next; final buying decisions should always use current manufacturer documentation, direct quotes, warranty terms and deployment planning.</p>\n        <div class=\"fr-seo-grid\">\n          <article><h3>Robot Compare</h3><p>Use the comparison tool to evaluate price, height, payload, runtime, DOF, mobility, and availability side by side.</p></article>\n          <article><h3>Robot Finder</h3><p>Use the finder workflow to narrow robots by intended use, environment, budget assumptions, and hardware priorities.</p></article>\n          <article><h3>Cost of ownership</h3><p>Use the calculator to combine purchase price, deployment setup, accessories, service percentage, battery replacement, and support assumptions.</p></article>\n          <article><h3>Limitations</h3><p>Unknown price, battery, safety, warranty, and support data are surfaced as assumptions so buyers can adjust the inputs instead of guessing blindly.</p></article>\n        </div>\n        <h3>FAQ</h3>\n        ${faqBlock([[\"Which robot tool should I start with?\",\"Start with the robot finder if you do not have a shortlist. Use robot compare once you have candidates, then use the cost and payload calculators to test practical feasibility.\"],[\"Are these tools enough to choose a robot?\",\"No. They are research tools. Use them to shortlist robots, then verify price, availability, warranty, safety, service, training and integration directly with the manufacturer or integrator.\"],[\"Why do some robot records have missing values?\",\"Many robotics companies publish incomplete specifications or quote-only pricing. Firgelli Robots keeps missing data visible so users know what still needs confirmation.\"],[\"Do the tools use live robot database records?\",\"Yes. The widgets use the Firgelli Robots database fields, including public specs, images, status, price signals and profile links where available.\"],[\"Can these tools compare humanoid robots and non-humanoid robots?\",\"Yes. The database includes humanoid, service, warehouse, research, industrial, quadruped and robot arm records when public data is available.\"]])}\n        <h3>Related robot tools</h3>\n        ${internalLinkList(relatedTools())}\n        <h3>Related guides</h3>\n        ${internalLinkList([{label:\"Humanoid robot price guide\",url:\"/pages/humanoid-robot-price-guide\"},{label:\"Robot payload explained\",url:\"/pages/robot-payload-explained\"},{label:\"Robot runtime explained\",url:\"/pages/robot-runtime-explained\"},{label:\"Compare robots\",url:\"/pages/compare\"}])}\n      </section>`},normalizedTools=()=>[{title:\"Robot Compare\",description:\"Build a live side-by-side comparison from source-backed robot records\",cta:\"Compare Robots\",url:\"/pages/robot-compare-tool\"},{title:\"Robot Match\",description:\"Rank robots by use case, budget, availability and key specs\",cta:\"Find Match\",url:\"/pages/robot-finder\"},{title:\"Payload Calculator\",description:\"Estimate required payload and find robots with enough public payload data\",cta:\"Calculate\",url:\"/pages/payload-calculator\"},{title:\"Cost of Ownership\",description:\"Model purchase, deployment, service and support assumptions\",cta:\"Calculate\",url:\"/pages/robot-cost-calculator\"},{title:\"Robot Timeline\",description:\"Filter robot launches, announcements and research milestones\",cta:\"Explore Now\",url:\"/pages/robot-timeline\"},{title:\"Robot Size Viewer\",description:\"Compare robot proportions with live images and dimensions\",cta:\"View Sizes\",url:\"/pages/3d-robot-viewer\"}],formatUsd=value=>new Intl.NumberFormat(\"en-US\",{style:\"currency\",currency:\"USD\",maximumFractionDigits:0}).format(Math.max(0,Number(value)||0)),numericValue=value=>Number.isFinite(Number(value))?Number(value):0,boundedPercent=value=>Math.max(0,Math.min(100,Math.round(Number(value)||0))),toolRobots=data=>(data.robots||[]).filter(robot=>robot&&robot.name).slice(0,220),toolRobotBySlug=(data,slug)=>toolRobots(data).find(robot=>robot.slug===slug),defaultRobotSlug=(data,slugs=[])=>{const robots=toolRobots(data);return(slugs.map(slug=>robots.find(robot=>robot.slug===slug)).find(Boolean)||robots[0]||{}).slug||\"\"},toolRobotOptions=(data,selected=\"\",blankLabel=\"\")=>{const options=toolRobots(data).sort((a,b)=>String(a.name).localeCompare(String(b.name))).map(robot=>`<option value=\"${escapeHtml(robot.slug)}\"${robot.slug===selected?\" selected\":\"\"}>${escapeHtml(robot.name)}</option>`).join(\"\");return`${blankLabel?`<option value=\"\">${escapeHtml(blankLabel)}</option>`:\"\"}${options}`},toolCategoryOptions=(data,selected=\"\")=>[...new Set(toolRobots(data).map(robot=>String(robot.category||\"\").trim()).filter(Boolean))].sort((a,b)=>a.localeCompare(b)).map(category=>`<option value=\"${escapeHtml(category)}\"${category===selected?\" selected\":\"\"}>${escapeHtml(category.replace(/-/g,\" \"))}</option>`).join(\"\"),robotHeightCm=robot=>{const text=String(robot.height||\"\").toLowerCase();let match=text.match(/(\\d+(?:\\.\\d+)?)\\s*(?:ft|feet|')\\s*(?:(\\d+(?:\\.\\d+)?)\\s*(?:in|inches|\"))?/);if(match)return Number(match[1])*30.48+numericValue(match[2])*2.54;if(match=text.match(/(\\d+(?:\\.\\d+)?)\\s*mm\\b/),match)return Number(match[1])/10;if(match=text.match(/(\\d+(?:\\.\\d+)?)\\s*cm\\b/),match)return Number(match[1]);if(match=text.match(/(\\d+(?:\\.\\d+)?)\\s*m\\b/),match)return Number(match[1])*100;const raw=numericValue(robot.heightRaw);return raw>=300?raw/10:raw>40?raw:raw>0&&raw<10?raw*100:raw},compactToolMeasure=(value,unit,fallback=\"Unknown\")=>{const text=compactMeasure(value,unit);return text===\"Not listed\"?fallback:text},toolMiniSpecs=robot=>`\n    <dl class=\"fr-tool-mini-specs\">\n      <div><dt>Price</dt><dd>${escapeHtml(compactPrice(robot.price))}</dd></div>\n      <div><dt>Payload</dt><dd>${escapeHtml(publicCardValue(robot.payload,\"Unknown\"))}</dd></div>\n      <div><dt>Runtime</dt><dd>${escapeHtml(compactRuntime(robot.runtime))}</dd></div>\n    </dl>`,toolResultCards=(robots,noteFn=()=>\"\")=>robots.length?`<div class=\"fr-tool-result-list\">${robots.map(robot=>`\n      <article class=\"fr-tool-result-card\">\n        <a class=\"fr-tool-result-card__image\" href=\"${robotUrl(robot)}\">${image(robot,`${robot.name} robot`)}</a>\n        <div class=\"fr-tool-result-card__body\">\n          <strong><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></strong>\n          <span>${escapeHtml(publicMaker(robot))}</span>\n          <small>${escapeHtml(noteFn(robot)||compactStatus(robot.status))}</small>\n          ${toolMiniSpecs(robot)}\n        </div>\n      </article>`).join(\"\")}</div>`:'<p class=\"fr-tool-note\">No matching robot records have enough public data yet. Try relaxing the filters or use the full robot database.</p>',finderResultCards=rows=>rows.length?`<div class=\"fr-tool-result-list\">${rows.map(({robot,score})=>{const fit=boundedPercent(score);return`\n        <article class=\"fr-tool-result-card fr-tool-result-card--ranked\">\n          <a class=\"fr-tool-result-card__image\" href=\"${robotUrl(robot)}\">${image(robot,`${robot.name} robot`)}</a>\n          <div class=\"fr-tool-result-card__body\">\n            <div class=\"fr-tool-result-card__top\"><strong><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></strong><span>${fit}% fit</span></div>\n            <span>${escapeHtml(publicMaker(robot))}</span>\n            <div class=\"fr-fit-meter\" aria-label=\"${fit}% match\"><span style=\"width:${fit}%\"></span></div>\n            <small>${escapeHtml(compactPrice(robot.price))} / ${escapeHtml(compactStatus(robot.status))}</small>\n            ${toolMiniSpecs(robot)}\n          </div>\n        </article>`}).join(\"\")}</div>`:'<p class=\"fr-tool-note\">No close matches yet. Try a broader goal, a quote-based budget, or the full robot database.</p>',robotText=robot=>normalizeSearch(`${robot.name} ${robot.manufacturer} ${robot.category} ${robot.useCase} ${robot.targetMarket} ${robot.summary} ${robot.status} ${robot.price} ${robot.movement}`),finderTerms={home:[\"home\",\"consumer\",\"house\",\"personal\",\"companion\"],business:[\"enterprise\",\"business\",\"workplace\",\"commercial\",\"customer\",\"reception\",\"service\"],research:[\"research\",\"education\",\"developer\",\"university\",\"lab\",\"embodied ai\"],industrial:[\"industrial\",\"manufacturing\",\"inspection\",\"factory\",\"warehouse\",\"logistics\"],service:[\"service\",\"hospitality\",\"healthcare\",\"delivery\",\"facility\"]},matchesAnyTerm=(text,terms=[])=>terms.some(term=>text.includes(term)),scoreRobotForFinder=(robot,prefs)=>{const text=robotText(robot);let score=0;(prefs.goal===\"any\"||matchesAnyTerm(text,finderTerms[prefs.goal]||[prefs.goal]))&&(score+=36),(prefs.form===\"any\"||String(robot.category||\"\").toLowerCase()===prefs.form||text.includes(prefs.form))&&(score+=22);const price=numericValue(robot.priceRaw);return prefs.budget===\"any\"&&(score+=8),prefs.budget===\"under-25k\"&&price&&price<=25e3&&(score+=22),prefs.budget===\"under-100k\"&&price&&price<=1e5&&(score+=18),prefs.budget===\"quote\"&&(!price||/quote|contact|enterprise|not publicly/i.test(robot.price||\"\"))&&(score+=16),prefs.priority===\"available\"&&/available|commercial|paid|preorder|early access|pilot/i.test(robot.status||\"\")&&(score+=18),prefs.priority===\"payload\"&&numericValue(robot.payloadRaw)>=5&&(score+=18),prefs.priority===\"runtime\"&&numericValue(robot.runtimeRaw)>=2&&(score+=18),prefs.priority===\"developer\"&&matchesAnyTerm(text,[\"research\",\"developer\",\"sdk\",\"ros\",\"education\"])&&(score+=18),/discontinued/i.test(robot.status||\"\")&&(score-=18),score},compareWidget=data=>{const defaults=[defaultRobotSlug(data,[\"tesla-optimus\",\"unitree-robotics-unitree-g1\"]),defaultRobotSlug(data,[\"figure-ai-figure-02\",\"1x-technologies-neo\"]),defaultRobotSlug(data,[\"unitree-robotics-unitree-g1\",\"boston-dynamics-atlas\"]),defaultRobotSlug(data,[\"apptronik-apollo\",\"xiaomi-cyberone\"])].filter(Boolean);return`\n      <section class=\"fr-tool-widget\" id=\"robot-compare-tool\">\n        <div class=\"fr-tool-widget__header\">\n          <div><p class=\"fr-eyebrow\">Live Widget</p><h2>Robot compare tool</h2><p>Select up to four robots and compare price, availability, dimensions, payload, runtime, movement and source-backed profile data.</p></div>\n          <a class=\"fr-button fr-button--secondary\" href=\"/pages/compare\">Open Classic Table</a>\n        </div>\n        <div class=\"fr-tool-panel\" data-fr-compare-widget>\n          <div class=\"fr-widget-form\">\n            ${[0,1,2,3].map(index=>`<label>Robot ${index+1}<select data-fr-compare-select>${toolRobotOptions(data,defaults[index]||\"\",\"Choose robot\")}</select></label>`).join(\"\")}\n          </div>\n          <div class=\"fr-tool-results\" data-fr-compare-results></div>\n        </div>\n      </section>`},robotFinderWidget=data=>`\n    <section class=\"fr-tool-widget\" id=\"robot-finder\">\n      <div class=\"fr-tool-widget__header\">\n        <div><p class=\"fr-eyebrow\">Live Widget</p><h2>Robot finder</h2><p>Choose the buying context and the widget ranks robot records from the live Firgelli Robots database.</p></div>\n        <a class=\"fr-button fr-button--secondary\" href=\"/pages/robots\">Full Database</a>\n      </div>\n      <div class=\"fr-tool-panel\" data-fr-finder-widget>\n        <div class=\"fr-widget-form\">\n          <label>Goal<select data-fr-finder-goal><option value=\"any\">Any goal</option><option value=\"home\">Home / consumer</option><option value=\"business\">Business / enterprise</option><option value=\"research\">Research / education</option><option value=\"industrial\">Industrial / warehouse</option><option value=\"service\">Service / hospitality</option></select></label>\n          <label>Robot type<select data-fr-finder-form><option value=\"any\">Any type</option><option value=\"humanoid\">Humanoid</option><option value=\"consumer\">Consumer</option><option value=\"enterprise\">Enterprise</option><option value=\"industrial\">Industrial</option><option value=\"warehouse\">Warehouse</option><option value=\"service\">Service</option><option value=\"research\">Research</option></select></label>\n          <label>Budget<select data-fr-finder-budget><option value=\"any\">Any budget</option><option value=\"under-25k\">Under $25k</option><option value=\"under-100k\">Under $100k</option><option value=\"quote\">Quote / enterprise</option></select></label>\n          <label>Priority<select data-fr-finder-priority><option value=\"available\">Availability</option><option value=\"developer\">Developer access</option><option value=\"payload\">Payload</option><option value=\"runtime\">Runtime</option></select></label>\n        </div>\n        <div class=\"fr-tool-results\" data-fr-finder-results></div>\n      </div>\n    </section>`,payloadWidget=()=>`\n    <section class=\"fr-tool-widget\" id=\"payload-calculator\">\n      <div class=\"fr-tool-widget__header\"><div><p class=\"fr-eyebrow\">Live Calculator</p><h2>Payload calculator</h2><p>Estimate the rated payload you should look for after adding a safety margin.</p></div></div>\n      <div class=\"fr-tool-panel\" data-fr-payload-widget>\n        <div class=\"fr-widget-form\">\n          <label>Object/load weight (kg)<input type=\"number\" min=\"0\" step=\"0.1\" value=\"2\" data-fr-payload-load></label>\n          <label>Safety factor<select data-fr-payload-factor><option value=\"1.25\">1.25x light duty</option><option value=\"1.5\" selected>1.5x normal</option><option value=\"2\">2x conservative</option><option value=\"3\">3x unknown load</option></select></label>\n          <label>Cycles per hour<input type=\"number\" min=\"0\" step=\"1\" value=\"30\" data-fr-payload-cycles></label>\n          <label>Use case<select data-fr-payload-use><option value=\"any\">Any</option><option value=\"humanoid\">Humanoid</option><option value=\"industrial\">Industrial</option><option value=\"warehouse\">Warehouse</option><option value=\"service\">Service</option></select></label>\n        </div>\n        <div class=\"fr-tool-results\" data-fr-payload-results></div>\n      </div>\n    </section>`,costWidget=data=>{const pricedRobots={robots:toolRobots(data).filter(robot=>numericValue(robot.priceRaw)>0)};return`\n    <section class=\"fr-tool-widget\" id=\"robot-cost-calculator\">\n      <div class=\"fr-tool-widget__header\"><div><p class=\"fr-eyebrow\">Live Calculator</p><h2>Cost of ownership calculator</h2><p>Model the purchase, deployment, service, battery and support assumptions behind a robot evaluation.</p></div></div>\n      <div class=\"fr-tool-panel\" data-fr-cost-widget>\n        <div class=\"fr-widget-form\">\n          <label>Robot preset<select data-fr-cost-preset>${toolRobotOptions(pricedRobots,\"\",\"Custom price\")}</select></label>\n          <label>Robot price (USD)<input type=\"number\" min=\"0\" step=\"100\" value=\"50000\" data-fr-cost-purchase></label>\n          <label>Years<input type=\"number\" min=\"1\" max=\"10\" step=\"1\" value=\"3\" data-fr-cost-years></label>\n          <label>Service / year (%)<input type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"12\" data-fr-cost-service></label>\n          <label>Deployment setup<input type=\"number\" min=\"0\" step=\"100\" value=\"10000\" data-fr-cost-deploy></label>\n          <label>Accessories<input type=\"number\" min=\"0\" step=\"100\" value=\"5000\" data-fr-cost-accessories></label>\n          <label>Battery / consumables per year<input type=\"number\" min=\"0\" step=\"100\" value=\"1200\" data-fr-cost-battery></label>\n          <label>Support labor per year<input type=\"number\" min=\"0\" step=\"100\" value=\"8000\" data-fr-cost-labor></label>\n          <label>Training / integration<input type=\"number\" min=\"0\" step=\"100\" value=\"3000\" data-fr-cost-training></label>\n        </div>\n        <div class=\"fr-tool-results\" data-fr-cost-results></div>\n      </div>\n    </section>`},robotTimelineYear=robot=>{const match=`${robot.releaseDate||\"\"} ${robot.status||\"\"} ${robot.summary||\"\"} ${robot.rawFields?.release_year||\"\"} ${robot.rawFields?.announced||\"\"} ${robot.rawFields?.launch_date||\"\"}`.match(/\\b(19|20)\\d{2}\\b/);return match?Number(match[0]):Number(String(robot.lastUpdated||\"\").slice(0,4))||0},timelineWidget=data=>`\n      <section class=\"fr-tool-widget\" id=\"robot-timeline\">\n        <div class=\"fr-tool-widget__header\"><div><p class=\"fr-eyebrow\">Live Timeline</p><h2>Robot timeline</h2><p>Browse launch/update year signals from the robot database. Open a profile to verify the underlying sources.</p></div></div>\n        <div class=\"fr-tool-panel\" data-fr-timeline-widget>\n          <div class=\"fr-widget-form fr-widget-form--compact\">\n            <label>Category<select data-fr-timeline-category><option value=\"\">All categories</option>${toolCategoryOptions(data)}</select></label>\n            <label>Status<select data-fr-timeline-status><option value=\"\">All status</option><option value=\"available\">Available / paid</option><option value=\"pilot\">Pilot / preorder</option><option value=\"prototype\">Prototype</option><option value=\"announced\">Announced</option><option value=\"research\">Research</option></select></label>\n            <label>Sort<select data-fr-timeline-sort><option value=\"newest\">Newest first</option><option value=\"oldest\">Oldest first</option><option value=\"name\">Robot name</option></select></label>\n          </div>\n          <div class=\"fr-tool-timeline\" data-fr-timeline-results></div>\n        </div>\n      </section>`,timelineRowMarkup=rows=>rows.length?rows.map(({robot,year})=>`\n    <a class=\"fr-tool-timeline__row\" href=\"${robotUrl(robot)}\">\n      <time>${year}</time>\n      <span class=\"fr-tool-timeline__thumb\">${image(robot,`${robot.name} robot`)}</span>\n      <span><strong>${escapeHtml(robot.name)}</strong><span>${escapeHtml(publicMaker(robot))} / ${escapeHtml(compactStatus(robot.status))}</span></span>\n      <span class=\"fr-tool-chip\">${escapeHtml(publicCardValue(robot.height,\"Specs pending\"))}</span>\n    </a>`).join(\"\"):'<p class=\"fr-tool-note\">No timeline records match those filters yet.</p>',sizeViewerWidget=data=>{const robots=toolRobots(data).filter(robot=>imageCandidates(robot).length).sort((a,b)=>String(a.name).localeCompare(b.name)),selectedA=(robots.find(robot=>robot.slug===\"tesla-optimus\")||robots[0]||{}).slug||\"\",selectedB=(robots.find(robot=>robot.slug===\"xiaomi-cyberone\")||robots[1]||robots[0]||{}).slug||\"\";return`\n      <section class=\"fr-tool-widget\" id=\"robot-size-viewer\">\n        <div class=\"fr-tool-widget__header\"><div><p class=\"fr-eyebrow\">Live Viewer</p><h2>Robot size viewer</h2><p>Compare two robot silhouettes, images and headline dimensions from the database. This is a visual research tool, not a CAD model viewer.</p></div></div>\n        <div class=\"fr-tool-panel\" data-fr-size-widget>\n          <div class=\"fr-widget-form fr-widget-form--compact\">\n            <label>Robot A<select data-fr-size-a>${toolRobotOptions({robots},selectedA)}</select></label>\n            <label>Robot B<select data-fr-size-b>${toolRobotOptions({robots},selectedB)}</select></label>\n          </div>\n          <div class=\"fr-size-viewer\">\n            <div class=\"fr-size-viewer__stage\" data-fr-size-stage></div>\n            <div class=\"fr-size-viewer__details\" data-fr-size-details></div>\n          </div>\n        </div>\n      </section>`},renderToolWidgets=(data,focus=\"\")=>{const show=name=>!focus||focus===name,widgets=[];return show(\"Robot Compare\")&&widgets.push(compareWidget(data)),show(\"Robot Match\")&&widgets.push(robotFinderWidget(data)),show(\"Payload Calculator\")&&widgets.push(payloadWidget(data)),show(\"Cost of Ownership\")&&widgets.push(costWidget(data)),show(\"Robot Timeline\")&&widgets.push(timelineWidget(data)),show(\"Robot Size Viewer\")&&widgets.push(sizeViewerWidget(data)),`<div class=\"fr-tool-widget-stack\">${widgets.join(\"\")}</div>`};function bindToolWidgets(data){document.querySelectorAll(\"[data-fr-compare-widget]\").forEach(root=>{const results=root.querySelector(\"[data-fr-compare-results]\"),rows=[[\"Price\",\"price\"],[\"Availability\",\"status\"],[\"Height\",\"height\"],[\"Weight\",\"weight\"],[\"Payload\",\"payload\"],[\"Runtime\",\"runtime\"],[\"DOF\",\"dof\"],[\"Movement\",\"movement\"],[\"Use case\",\"useCase\"]],update=()=>{const robots=[...new Set(Array.from(root.querySelectorAll(\"[data-fr-compare-select]\")).map(select=>select.value).filter(Boolean))].map(slug=>toolRobotBySlug(data,slug)).filter(Boolean).slice(0,4);if(!robots.length){results.innerHTML='<p class=\"fr-tool-note\">Choose at least one robot to build a comparison.</p>';return}results.innerHTML=`\n          <div class=\"fr-compare-widget__cards\">${robots.map(robot=>`\n            <article class=\"fr-compare-widget__card\">\n              <a href=\"${robotUrl(robot)}\">${image(robot,`${robot.name} robot`)}</a>\n              <strong>${escapeHtml(robot.name)}</strong>\n              <span>${escapeHtml(publicMaker(robot))}</span>\n              <small>${escapeHtml(compactStatus(robot.status))}</small>\n            </article>`).join(\"\")}</div>\n          <div class=\"fr-tool-table-wrap\"><table class=\"fr-tool-compare-table\">\n            <thead><tr><th>Spec</th>${robots.map(robot=>`<th><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></th>`).join(\"\")}</tr></thead>\n            <tbody>${rows.map(([label,key])=>`<tr><td>${escapeHtml(label)}</td>${robots.map(robot=>`<td>${escapeHtml(compactComparisonValue(robot,key))}</td>`).join(\"\")}</tr>`).join(\"\")}</tbody>\n          </table></div>`};root.querySelectorAll(\"select\").forEach(control=>control.addEventListener(\"change\",update)),update()}),document.querySelectorAll(\"[data-fr-finder-widget]\").forEach(root=>{const results=root.querySelector(\"[data-fr-finder-results]\"),update=()=>{const prefs={goal:root.querySelector(\"[data-fr-finder-goal]\")?.value||\"any\",form:root.querySelector(\"[data-fr-finder-form]\")?.value||\"any\",budget:root.querySelector(\"[data-fr-finder-budget]\")?.value||\"any\",priority:root.querySelector(\"[data-fr-finder-priority]\")?.value||\"available\"},matches=toolRobots(data).map(robot=>({robot,score:scoreRobotForFinder(robot,prefs)})).filter(row=>row.score>20).sort((a,b)=>b.score-a.score).slice(0,6);results.innerHTML=`<div class=\"fr-tool-summary\"><strong>${matches.length} ranked matches</strong><span>Scored from ${Number(data.stats?.robots||data.robots?.length||0).toLocaleString()} robot records.</span></div>${finderResultCards(matches)}`};root.querySelectorAll(\"select\").forEach(control=>control.addEventListener(\"change\",update)),update()}),document.querySelectorAll(\"[data-fr-payload-widget]\").forEach(root=>{const results=root.querySelector(\"[data-fr-payload-results]\"),update=()=>{const load=numericValue(root.querySelector(\"[data-fr-payload-load]\")?.value),factor=numericValue(root.querySelector(\"[data-fr-payload-factor]\")?.value)||1.5,cycles=numericValue(root.querySelector(\"[data-fr-payload-cycles]\")?.value),use=root.querySelector(\"[data-fr-payload-use]\")?.value||\"any\",required=load*factor,cycleMargin=cycles>=100?1.15:1,recommended=required*cycleMargin,robots=toolRobots(data).filter(robot=>numericValue(robot.payloadRaw)>=required&&(use===\"any\"||robotText(robot).includes(use))).sort((a,b)=>numericValue(a.payloadRaw)-numericValue(b.payloadRaw)).slice(0,6),maxPayload=Math.max(required,recommended,...robots.map(robot=>numericValue(robot.payloadRaw)),1);results.innerHTML=`<div class=\"fr-tool-stat-grid\"><div class=\"fr-tool-stat\"><span>Minimum rated payload</span><strong>${required.toFixed(1)} kg</strong></div><div class=\"fr-tool-stat\"><span>Recommended target</span><strong>${recommended.toFixed(1)} kg</strong></div><div class=\"fr-tool-stat\"><span>Safety factor</span><strong>${factor.toFixed(2)}x</strong></div><div class=\"fr-tool-stat\"><span>Cycles/hour</span><strong>${cycles.toLocaleString()}</strong></div></div><div class=\"fr-tool-meter\"><span style=\"width:${boundedPercent(recommended/maxPayload*100)}%\"></span><strong>${recommended.toFixed(1)} kg target</strong></div>${toolResultCards(robots,robot=>`Payload: ${publicCardValue(robot.payload,\"not published\")}`)}`};root.querySelectorAll(\"input, select\").forEach(control=>control.addEventListener(\"input\",update)),root.querySelectorAll(\"select\").forEach(control=>control.addEventListener(\"change\",update)),update()}),document.querySelectorAll(\"[data-fr-cost-widget]\").forEach(root=>{const results=root.querySelector(\"[data-fr-cost-results]\"),purchaseInput=root.querySelector(\"[data-fr-cost-purchase]\"),update=()=>{const purchase=numericValue(purchaseInput?.value),years=Math.max(1,numericValue(root.querySelector(\"[data-fr-cost-years]\")?.value)||1),service=numericValue(root.querySelector(\"[data-fr-cost-service]\")?.value)/100,deploy=numericValue(root.querySelector(\"[data-fr-cost-deploy]\")?.value),accessories=numericValue(root.querySelector(\"[data-fr-cost-accessories]\")?.value),battery=numericValue(root.querySelector(\"[data-fr-cost-battery]\")?.value),labor=numericValue(root.querySelector(\"[data-fr-cost-labor]\")?.value),training=numericValue(root.querySelector(\"[data-fr-cost-training]\")?.value),annual=purchase*service+battery+labor,firstYear=purchase+deploy+accessories+training+annual,total=purchase+deploy+accessories+training+annual*years,monthly=total/Math.max(1,years*12),oneTime=purchase+deploy+accessories+training,parts=[[\"Purchase\",purchase],[\"Deployment\",deploy+training],[\"Accessories\",accessories],[\"Service\",purchase*service*years],[\"Consumables\",battery*years],[\"Labor\",labor*years]];results.innerHTML=`<div class=\"fr-tool-stat-grid\"><div class=\"fr-tool-stat\"><span>First year</span><strong>${formatUsd(firstYear)}</strong></div><div class=\"fr-tool-stat\"><span>${years}-year total</span><strong>${formatUsd(total)}</strong></div><div class=\"fr-tool-stat\"><span>Annual support</span><strong>${formatUsd(annual)}</strong></div><div class=\"fr-tool-stat\"><span>Monthly average</span><strong>${formatUsd(monthly)}</strong></div></div><div class=\"fr-cost-breakdown\">${parts.map(([label,value])=>`<div><span>${escapeHtml(label)}</span><strong>${formatUsd(value)}</strong><i><b style=\"width:${boundedPercent(value/Math.max(total,1)*100)}%\"></b></i></div>`).join(\"\")}</div><p class=\"fr-tool-note\">One-time setup is ${formatUsd(oneTime)} before recurring annual support. Confirm price, warranty, service, battery, software, integration, tax, freight and downtime directly with the manufacturer or integrator.</p>`},preset=root.querySelector(\"[data-fr-cost-preset]\");preset?.addEventListener(\"change\",()=>{const robot=toolRobotBySlug(data,preset.value);robot&&purchaseInput&&(purchaseInput.value=String(Math.round(numericValue(robot.priceRaw)))),update()}),root.querySelectorAll(\"input\").forEach(control=>control.addEventListener(\"input\",update)),update()}),document.querySelectorAll(\"[data-fr-timeline-widget]\").forEach(root=>{const results=root.querySelector(\"[data-fr-timeline-results]\"),update=()=>{const category=root.querySelector(\"[data-fr-timeline-category]\")?.value||\"\",status=root.querySelector(\"[data-fr-timeline-status]\")?.value||\"\",sort=root.querySelector(\"[data-fr-timeline-sort]\")?.value||\"newest\",statusTerms={available:[\"available\",\"commercial\",\"paid\"],pilot:[\"pilot\",\"preorder\",\"early access\"],prototype:[\"prototype\"],announced:[\"announced\",\"coming\"],research:[\"research\",\"university\",\"open source\"]};let rows=toolRobots(data).map(robot=>({robot,year:robotTimelineYear(robot)})).filter(row=>row.year).filter(({robot})=>!category||robot.category===category).filter(({robot})=>!status||(statusTerms[status]||[status]).some(term=>robotText(robot).includes(term)));rows=rows.sort((a,b)=>sort===\"oldest\"?a.year-b.year||String(a.robot.name).localeCompare(b.robot.name):sort===\"name\"?String(a.robot.name).localeCompare(b.robot.name):b.year-a.year||String(a.robot.name).localeCompare(b.robot.name)).slice(0,24),results.innerHTML=timelineRowMarkup(rows)};root.querySelectorAll(\"select\").forEach(control=>control.addEventListener(\"change\",update)),update()}),document.querySelectorAll(\"[data-fr-size-widget]\").forEach(root=>{const selectA=root.querySelector(\"[data-fr-size-a]\"),selectB=root.querySelector(\"[data-fr-size-b]\"),stage=root.querySelector(\"[data-fr-size-stage]\"),details=root.querySelector(\"[data-fr-size-details]\"),update=()=>{const robots=[toolRobotBySlug(data,selectA?.value),toolRobotBySlug(data,selectB?.value)].filter(Boolean);if(!robots.length)return;const maxHeight=Math.max(...robots.map(robotHeightCm),1);stage.innerHTML=robots.map(robot=>{const height=robotHeightCm(robot);return`<article class=\"fr-size-viewer__robot\" style=\"--fr-scale:${Math.max(.42,Math.min(1,height?height/maxHeight:.7)).toFixed(2)}\"><a href=\"${robotUrl(robot)}\">${image(robot,`${robot.name} robot`)}</a><strong>${escapeHtml(robot.name)}</strong><span>${escapeHtml(compactToolMeasure(robot.height,\"mm\",\"Height unknown\"))}</span></article>`}).join(\"\"),details.innerHTML=`<div class=\"fr-size-viewer__compare\">${robots.map(robot=>`<article><h3>${escapeHtml(robot.name)}</h3><p>${escapeHtml(robot.summary||`${robot.name} robot record`)}</p><dl class=\"fr-tool-mini-specs\"><div><dt>Height</dt><dd>${escapeHtml(compactToolMeasure(robot.height,\"mm\"))}</dd></div><div><dt>Weight</dt><dd>${escapeHtml(compactToolMeasure(robot.weight,\"kg\"))}</dd></div><div><dt>Payload</dt><dd>${escapeHtml(compactToolMeasure(robot.payload,\"kg\"))}</dd></div><div><dt>Status</dt><dd>${escapeHtml(compactStatus(robot.status))}</dd></div></dl><a class=\"fr-button fr-button--secondary\" href=\"${robotUrl(robot)}\">Open Profile</a></article>`).join(\"\")}</div>`};[selectA,selectB].filter(Boolean).forEach(select=>select.addEventListener(\"change\",update)),update()})}const researchSeoContent=data=>`\n    <section class=\"fr-seo-article fr-card fr-section\">\n      <p class=\"fr-eyebrow\">Research Hub</p>\n      <h2>Humanoid robot research, patents, manuals and source references</h2>\n      <p>The research hub organizes source material behind robot profiles: official product pages, manuals, papers, patents, videos, and supporting references. The goal is to separate manufacturer claims, third-party coverage, and technical documentation so users can verify what is known.</p>\n      <div class=\"fr-seo-grid\">\n        <article><h3>Plain-English summary</h3><p>Use this page to move from a robot card to the evidence behind it. Source records help explain where specifications, images, availability notes, and technical claims came from.</p></article>\n        <article><h3>Technical summary</h3><p>The database currently tracks ${Number(data.stats.sources||0).toLocaleString()} source records, ${Number(data.stats.papersPatents||0).toLocaleString()} papers/patents, and ${Number(data.stats.manualsDocs||0).toLocaleString()} manuals/docs.</p></article>\n        <article><h3>Why it matters</h3><p>Humanoid robotics changes quickly. Source-backed pages are more trustworthy than static lists because they show which details are verified and which still need research.</p></article>\n        <article><h3>How to use sources</h3><p>Prioritize official product pages and technical documents for specifications, then use papers, patents, and reputable coverage for context.</p></article>\n      </div>\n    </section>`;async function loadData(root){if(state.data)return state.data;const rawUrl=root?.dataset?.dataUrl||document.querySelector(\"[data-data-url]\")?.dataset?.dataUrl,url=new URL(rawUrl,window.location.href);url.pathname.endsWith(\"/fr-robot-data-current.json\")&&(url.searchParams.set(\"fr_cache\",Date.now()),url.searchParams.set(\"fr_thumbs\",\"20260825thumbs2\"));const response=await fetch(url.toString(),{cache:\"no-store\"});return state.data=await response.json(),state.data}function renderHero(data){const target=document.querySelector(\"[data-fr-hero-robots]\");target&&(target.innerHTML=data.featuredRobots.slice(0,4).map(robot=>`\n      <a class=\"fr-hero-robot\" href=\"${robotUrl(robot)}\">\n        <span class=\"fr-hero-robot__image\">${image(robot)}</span>\n        <strong>${escapeHtml(robot.name.replace(\"Tesla \",\"\"))}</strong>\n      </a>\n    `).join(\"\"))}function renderFeaturedTable(data){const table=document.querySelector(\"[data-fr-featured-table]\");if(!table)return;const robots=data.featuredRobots.slice(0,10),rows=[[\"Price (USD)\",\"price\"],[\"Height\",\"height\"],[\"Weight\",\"weight\"],[\"DOF\",\"dof\"],[\"Payload\",\"payload\"],[\"Runtime\",\"runtime\"],[\"Walking Speed\",\"speed\"],[\"Release Status\",\"status\"]];table.innerHTML=`\n      <colgroup><col class=\"fr-compare-label-col\">${robots.map(()=>'<col class=\"fr-compare-robot-col\">').join(\"\")}</colgroup>\n      <thead><tr><th scope=\"col\"></th>${robots.map(robot=>`<th scope=\"col\"><a class=\"fr-table-robot\" href=\"${robotUrl(robot)}\">${image(robot)}<span>${escapeHtml(robot.name)}</span></a></th>`).join(\"\")}</tr></thead>\n      <tbody>${rows.map(([label,key])=>`<tr><td><a href=\"${knowledgeUrl(label)}\">${label}</a></td>${robots.map(robot=>`<td>${escapeHtml(compactComparisonValue(robot,key))}</td>`).join(\"\")}</tr>`).join(\"\")}</tbody>`}function bindFeaturedTableScroll(){document.querySelectorAll(\"[data-fr-scroll-table]\").forEach(button=>{button.addEventListener(\"click\",()=>{const section=button.closest(\".fr-section\"),wrap=section?section.querySelector(\".fr-table-wrap\"):document.querySelector(\".fr-table-wrap\");if(!wrap)return;const direction=Number(button.dataset.frScrollTable||1);wrap.scrollBy({left:direction*Math.round(wrap.clientWidth*.82),behavior:\"smooth\"})})})}function renderCategories(data){const target=document.querySelector(\"[data-fr-categories]\");target&&(target.innerHTML=data.categories.map(category=>`\n        <a class=\"fr-category-card\" href=\"${categoryUrl(category.slug)}\">\n        <span class=\"fr-category-card__icon\">${categoryIcon(category.slug)}</span>\n        <strong>${escapeHtml(category.label)}</strong>\n        <span>${category.count}+ Robots</span>\n      </a>\n    `).join(\"\"))}function renderStats(data){const target=document.querySelector(\"[data-fr-stats]\");if(!target)return;const stats=[[\"Humanoid Robots\",data.stats.humanoidRobots],[\"Manufacturers\",data.stats.manufacturers],[\"Specifications\",data.stats.specifications],[\"Images\",data.stats.images],[\"Videos\",data.stats.videos],[\"Patents & Papers\",data.stats.papersPatents]];target.innerHTML=stats.map(([label,value])=>`<div class=\"fr-stat\"><span class=\"fr-stat__icon\">${icon()}</span><div><strong>${Number(value||0).toLocaleString()}+</strong><span>${escapeHtml(label)}</span></div></div>`).join(\"\")}function renderLatest(data){const target=document.querySelector(\"[data-fr-latest]\");target&&(target.innerHTML=data.latestRobots.slice(0,5).map(robot=>`\n      <article class=\"fr-robot-card\">\n        <a href=\"${robotUrl(robot)}\">${imageTag(robot,latestImageCandidates(robot),`${robot.name} robot`,\"\",\"eager\")}</a>\n        <div>\n          <h3><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></h3>\n          <dl>\n            <div><dt>Manufacturer</dt><dd>${escapeHtml(publicMaker(robot))}</dd></div>\n            <div><dt>Price Est.</dt><dd>${escapeHtml(compactPrice(robot.price))}</dd></div>\n            <div><dt>Height</dt><dd>${escapeHtml(publicCardValue(robot.height))}</dd></div>\n          </dl>\n          <span class=\"${badgeClass(robot.status)}\">${escapeHtml(compactStatus(robot.status))}</span>\n        </div>\n      </article>\n    `).join(\"\"))}function homeManufacturerList(data){return[...data.manufacturers||[]].filter(manufacturer=>manufacturer&&manufacturer.name).sort((a,b)=>String(a.name).localeCompare(String(b.name),void 0,{sensitivity:\"base\"}))}function populateHomeManufacturerSelect(select,data){if(!select)return;const current=select.value,options=homeManufacturerList(data);select.innerHTML=['<option value=\"\">All manufacturers</option>'].concat(options.map(manufacturer=>{const slug=manufacturer.slug||slugifyLocal(manufacturer.name);return`<option value=\"${escapeHtml(slug)}\" data-name=\"${escapeHtml(manufacturer.name)}\" data-url=\"${escapeHtml(manufacturerUrl(manufacturer))}\">${escapeHtml(manufacturer.name)}</option>`})).join(\"\"),current&&[...select.options].some(option=>option.value===current)&&(select.value=current)}function selectedHomeManufacturer(select){const option=select&&select.selectedOptions&&select.selectedOptions[0];return!option||!option.value?null:{slug:option.value,name:option.getAttribute(\"data-name\")||option.textContent.trim(),url:option.getAttribute(\"data-url\")||manufacturerUrl(option.value)}}function homeSearchMatches(data,query,manufacturerName){const q=normalizeSearch(query),maker=String(manufacturerName||\"\").trim();if(!q&&!maker)return[];const tokens=q.split(\" \").filter(Boolean);return(data.robots||[]).filter(robot=>{if(maker&&String(robot.manufacturer||\"\")!==maker)return!1;if(!tokens.length)return!0;const rawFieldHay=Object.values(robot.rawFields||{}).join(\" \"),specHay=(robot.specSections||[]).flatMap(section=>(section.rows||[]).map(row=>`${row.label} ${row.value}`)).join(\" \"),hay=normalizeSearch(`${robot.id} ${robot.slug} ${robot.name} ${robot.manufacturer} ${robot.summary} ${robot.category} ${robot.useCase} ${robot.targetMarket} ${robot.price} ${robot.status} ${robot.height} ${robot.weight} ${rawFieldHay} ${specHay}`);return tokens.every(token=>hay.includes(token))}).slice(0,8)}function homeSearchUrl(query){const params=new URLSearchParams;return params.set(\"q\",String(query||\"\").trim()),`/pages/robots?${params.toString()}`}function homeSearchCard(robot){return`\n      <article class=\"fr-robot-card\">\n        <a href=\"${robotUrl(robot)}\">${image(robot)}</a>\n        <div>\n          <h3><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></h3>\n          <dl>\n            <div><dt>Maker</dt><dd>${escapeHtml(publicMaker(robot))}</dd></div>\n            <div><dt>Status</dt><dd>${escapeHtml(compactStatus(robot.status))}</dd></div>\n            <div><dt>Height</dt><dd>${escapeHtml(publicCardValue(robot.height))}</dd></div>\n          </dl>\n          <span class=\"${badgeClass(robot.status)}\">${escapeHtml(robot.category||\"Robot\")}</span>\n        </div>\n      </article>`}function renderHomeSearchResults(root,data,query,manufacturerName){const target=root.querySelector(\"[data-fr-home-search-results]\");if(!target)return;const q=String(query||\"\").trim(),maker=String(manufacturerName||\"\").trim();if(!q&&!maker){target.hidden=!0,target.innerHTML=\"\";return}const robots=homeSearchMatches(data,q,maker),label=[q,maker].filter(Boolean).join(\" / \"),fullResultsUrl=maker&&!q?manufacturerUrl(maker):homeSearchUrl(q);if(target.hidden=!1,!robots.length){target.innerHTML=`\n        <div class=\"fr-home-search-empty\">\n          <strong>No robots found for \"${escapeHtml(label)}\"</strong>\n          <span>Try a manufacturer, model name, robot category, status, height, price, or capability.</span>\n        </div>\n        <div class=\"fr-home-search-results__header\"><span></span><a href=\"${fullResultsUrl}\">Search full database</a></div>`;return}target.innerHTML=`\n      <div class=\"fr-home-search-results__header\">\n        <strong>${robots.length} result${robots.length===1?\"\":\"s\"} for \"${escapeHtml(label)}\"</strong>\n        <a href=\"${fullResultsUrl}\">Open full results</a>\n      </div>\n      <div class=\"fr-home-search-results__grid\">${robots.map(homeSearchCard).join(\"\")}</div>`}function bindHomeSearch(root,data){const form=root.querySelector(\"[data-fr-search-form]\"),input=root.querySelector(\"[data-fr-search-input]\"),select=root.querySelector(\"[data-fr-search-manufacturer]\"),results=root.querySelector(\"[data-fr-home-search-results]\");if(!form||!input||!results)return;populateHomeManufacturerSelect(select,data);const currentMaker=()=>selectedHomeManufacturer(select),render=()=>renderHomeSearchResults(root,data,input.value,currentMaker()?.name||\"\");input.addEventListener(\"input\",render),select&&select.addEventListener(\"change\",()=>{const maker=currentMaker(),q2=String(input.value||\"\").trim();if(maker&&!q2){window.location.assign(maker.url);return}render()}),form.addEventListener(\"submit\",event=>{event.preventDefault();const maker=currentMaker(),q2=String(input.value||\"\").trim();if(maker&&!q2){window.location.assign(maker.url);return}if(render(),q2){const url=new URL(window.location.href);url.searchParams.set(\"q\",q2),maker?url.searchParams.set(\"manufacturer\",maker.slug):url.searchParams.delete(\"manufacturer\"),history.replaceState(null,\"\",url.toString()),results.scrollIntoView({block:\"nearest\",behavior:\"smooth\"})}});const params=new URLSearchParams(location.search),q=params.get(\"q\")||\"\",makerSlug=params.get(\"manufacturer\")||\"\";q&&(input.value=q),makerSlug&&select&&(select.value=makerSlug),(q||makerSlug)&&render()}function renderViewShowcase(data){const target=document.querySelector(\"[data-fr-view-showcase]\");if(!target)return;const robot=data.robots.find(item=>item.slug===\"tesla-optimus\"||item.id===\"robot_optimus_f2db54a655\");if(!robot||!Array.isArray(robot.imageViews)||!robot.imageViews.length){target.remove();return}target.innerHTML=`\n      <div class=\"fr-section__header\">\n        <div>\n          <h2>${escapeHtml(robot.manufacturer)} ${escapeHtml(robot.name)}</h2>\n        </div>\n        <a href=\"${robotUrl(robot)}\">Open Robot Profile -></a>\n      </div>\n      ${viewGallery(robot)}\n    `}function renderTools(data){const target=document.querySelector(\"[data-fr-tools]\");target&&(target.innerHTML=normalizedTools(data).map(tool=>`\n      <article class=\"fr-tool-card\">\n        <span class=\"fr-tool-card__icon\">${icon()}</span>\n        <strong>${escapeHtml(tool.title)}</strong>\n        <p>${escapeHtml(tool.description)}</p>\n        <a href=\"${escapeHtml(tool.url)}\">${escapeHtml(tool.cta)} -></a>\n      </article>\n    `).join(\"\"))}function renderManufacturerMarquee(data){const target=document.querySelector(\"[data-fr-manufacturer-marquee]\");if(!target)return;const manufacturers=[...data.manufacturers||[]].filter(manufacturer=>manufacturer&&manufacturer.name).sort((a,b)=>String(a.name).localeCompare(String(b.name)));if(!manufacturers.length){target.closest(\".fr-manufacturer-marquee\")?.remove();return}const row=[...manufacturers,...manufacturers];target.innerHTML=row.map(manufacturer=>{const logo=manufacturer.logo||manufacturer.logoFallback||\"\";return`\n        <a class=\"fr-manufacturer-logo\" href=\"${manufacturerUrl(manufacturer)}\" aria-label=\"${escapeHtml(`Open ${manufacturer.name} manufacturer profile`)}\">\n          <strong>${escapeHtml(manufacturer.name)}</strong>\n          ${logo?`<img loading=\"lazy\" src=\"${escapeHtml(logo)}\" alt=\"${escapeHtml(`${manufacturer.name} logo`)}\">`:\"\"}\n        </a>`}).join(\"\"),target.querySelectorAll(\"img\").forEach(img=>{img.addEventListener(\"error\",()=>{img.hidden=!0},{once:!0})})}function manufacturerSelectHtml(selectId){return`<label class=\"visually-hidden\" for=\"${selectId}\">Filter by manufacturer</label>\n        <select id=\"${selectId}\" class=\"fr-hub-manufacturer\" aria-label=\"Filter by manufacturer\" data-fr-hub-manufacturer>\n          <option value=\"\">All manufacturers</option>\n        </select>`}function bindHubManufacturerSelect(select){!select||select.dataset.frHubBound===\"1\"||(select.dataset.frHubBound=\"1\",select.addEventListener(\"change\",()=>{const maker=selectedHomeManufacturer(select);maker&&maker.url&&window.location.assign(maker.url)}))}function hideGiantListingDumps(){document.querySelectorAll(\".fr-related-links\").forEach(list=>{const count=list.querySelectorAll(\"a\").length,prev=list.previousElementSibling,maybeIntro=prev&&prev.tagName===\"P\"?prev:null,maybeHeading=maybeIntro?maybeIntro.previousElementSibling:prev,headingText=`${maybeHeading&&maybeHeading.textContent||\"\"} ${maybeIntro&&maybeIntro.textContent||\"\"}`;/related database/i.test(headingText)&&count<=8||count<8||(list.classList.add(\"fr-related-links--hidden-dump\"),maybeIntro&&/index links to|published robot profile|this index links/i.test(maybeIntro.textContent||\"\")&&maybeIntro.classList.add(\"fr-related-links--hidden-dump\"),maybeHeading&&/all robot profiles|all manufacturers|related links/i.test(maybeHeading.textContent||\"\")&&maybeHeading.classList.add(\"fr-related-links--hidden-dump\"))})}async function initHubManufacturerSelects(){const selects=[...document.querySelectorAll(\"[data-fr-hub-manufacturer]\")];if(!selects.length)return;const needsData=selects.some(select=>select.options.length<2);let data=state.data;needsData&&!data&&(data=await loadData(document.querySelector(\"[data-data-url]\")||selects[0])),selects.forEach((select,index)=>{select.id||(select.id=index?`fr-hub-manufacturer-${index}`:\"fr-hub-manufacturer\"),data&&populateHomeManufacturerSelect(select,data),bindHubManufacturerSelect(select)})}function renderControls(kind,data){const controls=document.querySelector(\"[data-fr-page-controls]\");if(!controls)return;if(kind===\"tools\"){controls.innerHTML=\"\",controls.hidden=!0;return}if(controls.hidden=!1,![\"robots\",\"compare\",\"category\",\"knowledge\",\"news\",\"developers\",\"marketplace\",\"community\",\"manufacturers\"].includes(kind))return;const parts=[];parts.push(manufacturerSelectHtml(\"fr-hub-manufacturer\")),[\"robots\",\"compare\",\"category\",\"knowledge\",\"news\",\"developers\",\"marketplace\",\"community\"].includes(kind)&&(parts.push('<input type=\"search\" placeholder=\"Search robots, manufacturers\" data-fr-filter-search>'),parts.push(`<select data-fr-filter-category><option value=\"\">All categories</option>${data.categories.map(c=>`<option value=\"${escapeHtml(c.slug)}\">${escapeHtml(c.label)}</option>`).join(\"\")}</select>`),parts.push(`<select data-fr-filter-status><option value=\"\">All availability</option>${[...new Set(data.robots.map(r=>r.status).filter(Boolean))].sort().map(s=>`<option value=\"${escapeHtml(s)}\">${escapeHtml(s)}</option>`).join(\"\")}</select>`)),controls.innerHTML=parts.join(`\n        `),populateHomeManufacturerSelect(controls.querySelector(\"[data-fr-hub-manufacturer]\"),data),bindHubManufacturerSelect(controls.querySelector(\"[data-fr-hub-manufacturer]\"));const category=new URLSearchParams(location.search).get(\"filter\")||categorySlugFromRoute(),query=new URLSearchParams(location.search).get(\"q\")||\"\",searchInput=controls.querySelector(\"[data-fr-filter-search]\"),categorySelect=controls.querySelector(\"[data-fr-filter-category]\");query&&searchInput&&(searchInput.value=query),category&&categorySelect&&(categorySelect.value=category)}const normalizeSearch=(value=\"\")=>String(value||\"\").toLowerCase().replace(/_+/g,\" \").replace(/\\s+/g,\" \").trim(),hiddenRobotSlugs=new Set([\"ff-aegis-basic-quadruped\"]);function filteredRobots(data){const q=normalizeSearch(document.querySelector(\"[data-fr-filter-search]\")?.value||new URLSearchParams(location.search).get(\"q\")||\"\"),category=document.querySelector(\"[data-fr-filter-category]\")?.value||new URLSearchParams(location.search).get(\"filter\")||categorySlugFromRoute()||\"\",status=document.querySelector(\"[data-fr-filter-status]\")?.value||\"\",seenRobotSlugs=new Set;return data.robots.filter(robot=>{if(hiddenRobotSlugs.has(robot.slug))return!1;const uniqueRobotKey=robot.slug||robot.id||robot.name;if(seenRobotSlugs.has(uniqueRobotKey))return!1;seenRobotSlugs.add(uniqueRobotKey);const rawFieldHay=Object.values(robot.rawFields||{}).join(\" \"),specHay=(robot.specSections||[]).flatMap(section=>(section.rows||[]).map(row=>`${row.label} ${row.value}`)).join(\" \"),hay=normalizeSearch(`${robot.id} ${robot.slug} ${robot.name} ${robot.manufacturer} ${robot.summary} ${robot.category} ${robot.useCase} ${rawFieldHay} ${specHay}`);return!(q&&!q.split(\" \").every(token=>hay.includes(token))||status&&robot.status!==status||category&&!robot.flags[category]&&robot.category!==category)})}function renderPageResults(kind,data){const target=document.querySelector(\"[data-fr-page-results]\");if(!target)return;if(kind===\"robot-profile\"){const routeHandle=currentPageHandle(),slug=new URLSearchParams(location.search).get(\"robot\")||(routeHandle!==\"robot-profile\"?routeHandle:\"\"),robot=data.robots.find(r=>robotMatchesSlug(r,slug))||data.robots[0],specSummary=robot.specSummary||{};target.closest(\".fr-page-shell\")?.classList.add(\"fr-page-shell--robot-profile\");const pageEyebrow=document.querySelector(\".fr-page-hero .fr-eyebrow\"),pageHeading=document.querySelector(\".fr-page-hero h1\"),pageCopy=document.querySelector(\".fr-page-hero p:not(.fr-eyebrow)\"),maker=publicMaker(robot),publicSummary=robot.summary||`${robot.name} is a ${robot.category||\"robot\"} from ${maker}. This page brings together specifications, availability, images, videos, and source links in one public robot profile.`;setRobotSeo(robot),pageEyebrow&&(pageEyebrow.textContent=`${maker} robot profile`),pageHeading&&(pageHeading.textContent=`${robot.name} specs, images, and availability`),pageCopy&&(pageCopy.textContent=publicSummary);const reviewHref=robotReviewUrl(robot);if(reviewHref&&pageCopy&&!document.querySelector(\"a.fr-button[href*='/blogs/robot-reviews/']\")){const p=document.createElement(\"p\");p.className=\"fr-profile-review-link\",p.style.margin=\"12px 0 0\";const a=document.createElement(\"a\");a.className=\"fr-button\",a.href=reviewHref,a.textContent=`${robot.name} review`,p.appendChild(a),pageCopy.insertAdjacentElement(\"afterend\",p)}const standardViews=pickMediaSet(robot,[[\"Front view\",[\"front_view\",\"front\",\"portrait\"]],[\"Side view\",[\"side_view\",\"side\"]],[\"Rear view\",[\"rear_view\",\"rear\",\"back\"]],[\"Head and torso\",[\"head_torso_view\",\"head_torso\",\"head torso\",\"head\",\"torso\"]],[\"Arm detail\",[\"arm_view\",\"arm\"]],[\"Leg detail\",[\"leg_view\",\"leg\",\"feet\",\"foot\"]],[\"Arm and leg detail\",[\"arm_leg_view\",\"arm_leg\",\"arm leg\"]]],7).filter(item=>String(item.image||\"\")!==String(robot.image||\"\")),mediaItems=uniqueMedia(approvedMedia(robot),18),standardImageKeys=new Set(standardViews.map(item=>String(item.image||\"\")));robot.image&&standardImageKeys.add(String(robot.image));const supplementalMediaItems=mediaItems.filter(item=>!standardImageKeys.has(String(item.image||\"\"))),quickSpecs=[[\"Price\",robot.price],[\"Availability\",robot.status],[\"Height\",robot.height],[\"Weight\",robot.weight],[\"Payload\",robot.payload],[\"Runtime\",robot.runtime],[\"DOF\",robot.dof],[\"Speed\",robot.speed],[\"Battery\",specLookup(robot,[\"Battery Capacity\"])],[\"Actuators\",specLookup(robot,[\"Actuator Count\"])]],videoCount=usableVideoRecords(robot).length,documentedSpecs=Number(specSummary.Known||0)+Number(specSummary.Calculated||0)+Number(specSummary.Estimated||0),sourceTotal=Number((robot.sources||[]).length+(robot.manuals||[]).length+(robot.papers||[]).length+(robot.communityMentions||[]).length),bestFor=listFromText(rawField(robot,\"best_for\")||robot.useCase||robot.targetMarket).join(\", \")||`${robot.category||\"robotics\"} research, comparison, and buyer evaluation`,caveats=listFromText(rawField(robot,\"known_limitations\")||rawField(robot,\"known_issues\")||rawField(robot,\"not_best_for\")).join(\", \")||\"Public specifications can change as the manufacturer releases new details.\",competitors=listFromText(rawField(robot,\"competitors\")||rawField(robot,\"similar_robots\")).join(\", \")||data.featuredRobots.filter(item=>item.slug!==robot.slug).slice(0,4).map(item=>item.name).join(\", \"),productUrl=robot.productPage||robot.source||rawField(robot,\"product_page_url\")||rawField(robot,\"robot_url\"),metrics=[[\"Documented specs\",`${documentedSpecs.toLocaleString()} fields`],[\"Reference links\",`${sourceTotal.toLocaleString()} sources`],[\"Images\",`${mediaItems.length.toLocaleString()} views`],[\"Videos\",`${videoCount.toLocaleString()} clips`],[\"Data confidence\",`${Number(robot.confidence||0).toLocaleString()}%`]],hasDisplayValue=value=>{const text=String(value??\"\").replace(/\\s+/g,\" \").trim();return text&&!/^(unknown|n\\/a|na|none|null|not available|not publicly listed)$/i.test(text)},cleanSentence=value=>String(value||\"\").replace(/\\s+/g,\" \").trim().replace(/[.;,\\s]+$/,\"\"),sentence=(value,fallback=\"\")=>cleanSentence(value)||fallback,compactList=(items,fallback=\"\")=>(Array.isArray(items)?items:listFromText(items)).map(cleanSentence).filter(Boolean).slice(0,6).join(\", \")||fallback,plural=(count,singular,pluralWord)=>`${Number(count||0).toLocaleString()} ${Number(count||0)===1?singular:pluralWord||`${singular}s`}`,sourcePhrase=sourceTotal?plural(sourceTotal,\"reference record\"):\"public source records still being expanded\",specPhrase=documentedSpecs?plural(documentedSpecs,\"documented specification field\"):\"the currently available public specification fields\",imagePhrase=mediaItems.length?plural(mediaItems.length,\"approved image/media view\"):\"image coverage that is still being expanded\",videoPhrase=videoCount?plural(videoCount,\"video reference\"):\"video coverage that is still being expanded\",makerPhrase=maker&&maker!==\"Unknown\"?maker:\"its listed manufacturer\",categoryPhrase=robot.category?`${robot.category} robot`:\"robotics platform\",targetMarkets=compactList(robot.targetMarket||robot.useCase||rawField(robot,\"target_market\")||rawField(robot,\"use_cases\"),\"robot buyers, engineers, researchers, and comparison shoppers\"),specHighlights=quickSpecs.filter(([,value])=>hasDisplayValue(value)).slice(0,6).map(([label,value])=>`${label}: ${String(value).replace(/\\s+/g,\" \").trim()}`).join(\"; \"),statusText=sentence(robot.status,\"availability not publicly listed\"),priceText=sentence(robot.price,\"not publicly listed\"),caveatText=sentence(caveats,\"Public specifications can change as the manufacturer releases new details\"),competitorText=competitors||\"other leading humanoid, service, research, and enterprise robot platforms\",overviewText=`${robot.name} is a ${categoryPhrase} from ${makerPhrase}. ${publicSummary} Our read is that this robot is worth looking at for ${targetMarkets}, but it should be judged by what is actually published today: size, payload, runtime, mobility, software access, safety claims, and whether real customers can buy or deploy it.`,availabilityText=`${robot.name} is currently listed as ${statusText}. Pricing is ${priceText}. That buying status matters: a preorder, pilot program, enterprise quote, research platform, prototype, or discontinued model all mean very different things for buyers. Before treating it like a finished product, check delivery timing, support, warranty terms, subscription costs, and what capabilities are available at launch.`,bestFitText=`Based on its published specs and positioning, ${robot.name} looks most relevant for ${targetMarkets}. The strongest use cases will be the ones where its height, weight, payload, runtime, hands or grippers, mobility, and software ecosystem line up with the work being asked of it. It should be evaluated as a practical robot, not just as a headline or demo video.`,watchText=`${caveatText}. The main things to verify are release timing, purchase availability, safety claims, autonomy level, SDK or ROS access, payload and runtime tradeoffs, battery details, sensor package, hand design, actuator details, walking speed, and whether the manufacturer has published stable measurements that can be compared fairly against other robots.`,compareText=`A useful comparison set for ${robot.name} includes ${competitorText}. Compare them on price, availability, height, weight, payload, runtime, degrees of freedom, walking speed, end effectors, software access, service model, manufacturer maturity, and how much real-world deployment evidence exists.`,coverageText=`${robot.name} has ${specPhrase} available for review. Specification highlights${specHighlights?` include ${specHighlights}`:\" are still being filled in as more public details become available\"}. The most important takeaway is not a single number, but whether the published capabilities match the job: lifting, walking, sensing, manipulating objects, operating safely around people, and being supported after deployment.`,reviewNotes=[[\"What it is\",overviewText],[\"Availability and pricing\",availabilityText],[\"Best fit\",bestFitText],[\"What to watch\",watchText],[\"Comparable robots\",compareText],[\"Specs that matter\",coverageText]],mediaTabImages=mediaGallery(supplementalMediaItems,robot)||'<p class=\"fr-muted\">Additional robot images will appear here as more angles are added.</p>';target.innerHTML=`\n        <div class=\"fr-robot-profile\">\n          <section class=\"fr-robot-hero\">\n            <div class=\"fr-robot-hero__copy\">\n              <div class=\"fr-robot-pill-row\">\n                <span class=\"fr-robot-pill\">${escapeHtml(maker)}</span>\n                <span class=\"fr-robot-pill\">${escapeHtml(compactStatus(robot.status))}</span>\n                <span class=\"fr-robot-pill\">${escapeHtml(robot.category||\"Robot\")}</span>\n              </div>\n              <h1>${escapeHtml(robot.name)} specs, images, and availability</h1>\n              <p>${escapeHtml(publicSummary)}</p>\n              <div class=\"fr-profile__actions\">\n                <a class=\"fr-button\" href=\"/pages/compare\">Compare ${escapeHtml(robot.name)}</a>\n                ${productUrl?`<a class=\"fr-button fr-button--secondary\" href=\"${escapeHtml(productUrl)}\">Official page</a>`:\"\"}\n              </div>\n            </div>\n            <div class=\"fr-robot-hero__image\">${image(robot,`${robot.name} robot`)}</div>\n            <aside class=\"fr-robot-facts\" aria-label=\"${escapeHtml(robot.name)} key facts\">\n              <p class=\"fr-eyebrow\">Key facts</p>\n              <h2>At a glance</h2>\n              <div class=\"fr-robot-fact-grid\">\n                ${quickSpecs.map(([k,v])=>`<div class=\"fr-robot-fact\"><span>${escapeHtml(k)}</span><strong>${escapeHtml(shortValue(v))}</strong></div>`).join(\"\")}\n              </div>\n            </aside>\n          </section>\n\n          <section class=\"fr-robot-panel\">\n            <div class=\"fr-robot-section-header\">\n              <div>\n                <p class=\"fr-eyebrow\">Images and videos</p>\n                <h2>${escapeHtml(robot.name)} photo gallery and movement media</h2>\n                <p>Standardized views make it easier to compare body shape, proportions, end effectors, and visible hardware across robots.</p>\n              </div>\n              <span>${Number(mediaItems.length).toLocaleString()} images / ${Number(videoCount).toLocaleString()} videos</span>\n            </div>\n            ${mediaTileGrid(standardViews,robot,\"fr-angle-grid--standard\")}\n            <div class=\"fr-tabs fr-robot-media-tabs\" data-fr-tabs>\n              <div class=\"fr-tab-list\" role=\"tablist\" aria-label=\"${escapeHtml(robot.name)} media\">\n                <button type=\"button\" class=\"is-active\" data-fr-tab-button=\"gallery\">Additional images</button>\n                ${videoCount?'<button type=\"button\" data-fr-tab-button=\"videos\">Videos</button>':\"\"}\n              </div>\n              <div class=\"fr-tab-panel is-active\" data-fr-tab-panel=\"gallery\">${mediaTabImages}</div>\n              ${videoCount?`<div class=\"fr-tab-panel\" data-fr-tab-panel=\"videos\" hidden>${videoIframes(robot)}</div>`:\"\"}\n            </div>\n          </section>\n\n          <section class=\"fr-robot-panel\">\n            <div class=\"fr-robot-section-header\">\n              <div>\n                <p class=\"fr-eyebrow\">Robot spec profile</p>\n                <h2>Availability, buying status, and research notes</h2>\n              </div>\n            </div>\n            <div class=\"fr-robot-review-grid\">\n              ${reviewNotes.map(([label,text])=>`<article class=\"fr-robot-note\"><strong>${escapeHtml(label)}</strong><span>${escapeHtml(text)}</span></article>`).join(\"\")}\n            </div>\n          </section>\n\n          <section class=\"fr-robot-panel\">\n            <div class=\"fr-robot-section-header\">\n              <div>\n                <p class=\"fr-eyebrow\">Profile coverage</p>\n                <h2>Documented facts and source coverage</h2>\n                <p>These counters summarize how much public robot information is currently connected to this profile.</p>\n              </div>\n            </div>\n            <div class=\"fr-robot-metrics\">\n              ${metrics.map(([label,value])=>`<div class=\"fr-robot-metric\"><span>${escapeHtml(label)}</span><strong>${escapeHtml(value)}</strong></div>`).join(\"\")}\n            </div>\n          </section>\n\n          ${robotSeoArticle(robot,data)}\n\n          <section class=\"fr-robot-panel\">\n            <div class=\"fr-robot-section-header\">\n              <div>\n                <p class=\"fr-eyebrow\">Specifications</p>\n                <h2>${escapeHtml(robot.name)} specifications</h2>\n                <p>Specs are grouped into practical sections with plain-language values so readers can quickly compare the robot.</p>\n              </div>\n              <span>${Number(documentedSpecs||specSummary.Total||0).toLocaleString()} public details</span>\n            </div>\n            ${renderSpecSections(robot)}\n          </section>\n\n          <section class=\"fr-robot-panel\">\n            <div class=\"fr-robot-section-header\">\n              <div>\n                <p class=\"fr-eyebrow\">Sources</p>\n                <h2>${escapeHtml(robot.name)} sources and further reading</h2>\n                <p>Use these links to verify manufacturer claims, inspect technical documentation, and continue deeper robot research.</p>\n              </div>\n            </div>\n            ${robotSourcesPanel(robot)}\n          </section>\n        </div>`,bindTabs(target);return}if(kind===\"manufacturer-profile\"||kind===\"manufacturers\"){const routeHandle=currentPageHandle(),slug=new URLSearchParams(location.search).get(\"manufacturer\")||(routeHandle!==\"manufacturer-profile\"&&routeHandle.endsWith(\"-robot-manufacturer\")?manufacturerSlugFromRoute():\"\"),manufacturers=slug?data.manufacturers.filter(m=>m.slug===slug):data.manufacturers,overview=slug&&manufacturers[0]?manufacturerSeoContent(manufacturers[0],data.robots):`\n        <section class=\"fr-seo-article fr-card fr-section\">\n          <p class=\"fr-eyebrow\">Manufacturer Guide</p>\n          <h2>Robot manufacturers tracked by Firgelli Robots</h2>\n          <p>This manufacturer database connects companies to robot lineups, countries, public websites, focus areas, and source-backed robot profiles. Use it to move from a robot model to the company behind it.</p>\n        </section>`;if(slug&&manufacturers[0]){const pageEyebrow=document.querySelector(\".fr-page-hero .fr-eyebrow\"),pageHeading=document.querySelector(\".fr-page-hero h1\"),pageCopy=document.querySelector(\".fr-page-hero p:not(.fr-eyebrow)\");pageEyebrow&&(pageEyebrow.textContent=\"Robot Manufacturer Profile\"),pageHeading&&(pageHeading.textContent=`${manufacturers[0].name} robot manufacturer profile`),pageCopy&&(pageCopy.textContent=`${manufacturers[0].name} robots, company focus, public lineup, country, links, and related robot profiles.`)}target.innerHTML=`${overview}<div class=\"fr-results-grid\">${manufacturers.map(m=>`<article class=\"fr-tool-card fr-manufacturer-card\"><a class=\"fr-manufacturer-card__media\" href=\"${manufacturerUrl(m)}\">${manufacturerCardImage(m,data)}</a><strong>${escapeHtml(m.name)}</strong><p>${escapeHtml([m.country,m.focus,m.models].filter(Boolean).join(\" - \")||\"Manufacturer profile queued for enrichment.\")}</p><a href=\"${manufacturerUrl(m)}\">View Manufacturer -></a></article>`).join(\"\")}</div>`;return}if(kind===\"research\"){const docs=[...data.research.papersPatents,...data.research.manualsDocs,...data.research.sources].slice(0,80);target.innerHTML=`${researchSeoContent(data)}<div class=\"fr-results-grid\">${docs.map(doc=>`<article class=\"fr-tool-card\"><span class=\"fr-tool-card__icon\">${icon()}</span><strong>${escapeHtml(doc.title||doc.source_title||doc.document_type||\"Research source\")}</strong><p>${escapeHtml(doc.document_type||doc.source_type||doc.publisher||\"Source-backed research item\")}</p><a href=\"${escapeHtml(doc.url||doc.source_url)}\">Open Source -></a></article>`).join(\"\")}</div>`;return}if(kind===\"knowledge\"){const term=new URLSearchParams(location.search).get(\"topic\")||knowledgeTopicFromRoute()||\"\",knowledgeCards=[[\"Price\",\"Estimated or verified robot purchase price, lease status, or quote requirement.\"],[\"Height\",\"Physical robot height from manufacturer data or trusted source review.\"],[\"Weight\",\"Robot mass including body, battery, and standard configuration where known.\"],[\"DOF\",\"Degrees of freedom: the number of independently controlled motion axes.\"],[\"Payload\",\"Rated carry or manipulation capacity, separated from body weight.\"],[\"Runtime\",\"Expected battery operating time under stated workload.\"],[\"Release Status\",\"Commercial availability, pilot status, prototype status, or announcement state.\"]],docs=[...data.research.sources,...data.research.papersPatents].slice(0,24);target.innerHTML=`\n        <section class=\"fr-seo-article fr-card fr-section\">\n          <p class=\"fr-eyebrow\">Specification Guide</p>\n          <h2>${escapeHtml(term||\"Robot specifications\")} explained</h2>\n          <p>Specification pages explain what each robot attribute means, why it matters, how it is measured, and how to compare robots without over-trusting incomplete manufacturer claims.</p>\n          <div class=\"fr-seo-grid\">\n            <article><h3>Why it matters</h3><p>Specs like DOF, payload, runtime, price, sensors, LiDAR, SDK support, ROS support, and walking speed help separate practical capability from promotional claims.</p></article>\n            <article><h3>How to compare</h3><p>Use the same field across multiple robot profiles, then inspect source status and missing-data warnings. A known lower value is often more useful than an unknown or unsupported claim.</p></article>\n            <article><h3>Common misunderstanding</h3><p>One number rarely describes a whole robot. Runtime depends on task, payload depends on pose and safety margin, and price depends on configuration and support.</p></article>\n            <article><h3>Related tool</h3><p>Use the robot comparison page to view the same specification across multiple robots side by side.</p></article>\n          </div>\n        </section>\n        <div class=\"fr-results-grid\">\n          ${knowledgeCards.filter(([label])=>!term||label.toLowerCase().includes(term.toLowerCase())).map(([label,text])=>`<article class=\"fr-tool-card\"><span class=\"fr-tool-card__icon\">${icon()}</span><strong>${escapeHtml(label)}</strong><p>${escapeHtml(text)}</p><a href=\"/pages/robots\">Browse records -></a></article>`).join(\"\")}\n        </div>\n        <div class=\"fr-card fr-section\">\n          <p class=\"fr-eyebrow\">Trusted Source Feed</p>\n          <h2>Latest knowledge-brain sources</h2>\n          <div class=\"fr-results-grid\">${docs.map(doc=>`<article class=\"fr-tool-card\"><strong>${escapeHtml(doc.source_title||doc.title||\"Source record\")}</strong><p>${escapeHtml(doc.source_type||doc.document_type||doc.publisher||\"Knowledge source\")}</p>${doc.url||doc.source_url?`<a href=\"${escapeHtml(doc.url||doc.source_url)}\">Open source -></a>`:\"\"}</article>`).join(\"\")}</div>\n        </div>`;return}if(kind===\"news\"){const latest=data.latestRobots.slice(0,10),sources=data.research.sources.slice(0,18);target.innerHTML=`\n        <div class=\"fr-results-grid\">${latest.map(robot=>`<article class=\"fr-robot-card\"><a href=\"${robotUrl(robot)}\">${image(robot)}</a><div><h3><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></h3><dl><div><dt>Maker</dt><dd>${escapeHtml(publicMaker(robot))}</dd></div><div><dt>Status</dt><dd>${escapeHtml(compactStatus(robot.status))}</dd></div></dl><span class=\"${badgeClass(robot.status)}\">${escapeHtml(robot.category)}</span></div></article>`).join(\"\")}</div>\n        <div class=\"fr-card fr-section\">\n          <p class=\"fr-eyebrow\">Source-backed updates</p>\n          <h2>Recent source records</h2>\n          <div class=\"fr-results-grid\">${sources.map(doc=>`<article class=\"fr-tool-card\"><strong>${escapeHtml(doc.source_title||\"Source update\")}</strong><p>${escapeHtml(doc.source_domain||doc.source_type||\"Knowledge source\")}</p>${doc.url?`<a href=\"${escapeHtml(doc.url)}\">Open source -></a>`:\"\"}</article>`).join(\"\")}</div>\n        </div>`;return}if(kind===\"tools\"){const focus=toolFocusFromRoute(),tools=normalizedTools(data);document.querySelectorAll(\".fr-server-content\").forEach(node=>node.remove());const directory=focus?\"\":`\n        <section class=\"fr-card fr-section\">\n          <p class=\"fr-eyebrow\">Tool Directory</p>\n          <h2>All robot tools and calculators</h2>\n          <div class=\"fr-results-grid\">${tools.map(tool=>`<article class=\"fr-tool-card\"><span class=\"fr-tool-card__icon\">${icon()}</span><strong>${escapeHtml(tool.title)}</strong><p>${escapeHtml(tool.description)}</p><a href=\"${escapeHtml(tool.url)}\">${escapeHtml(tool.cta)} -></a></article>`).join(\"\")}</div>\n        </section>`;target.innerHTML=`${renderToolWidgets(data,focus)}\n        ${directory}\n        ${toolSeoContent(data,focus)}`,bindToolWidgets(data);return}if(kind===\"developers\"){const developerRobots=data.robots.filter(robot=>String(robot.summary||robot.useCase||robot.category).toLowerCase().includes(\"research\")||robot.flags.research).slice(0,40);target.innerHTML=`<div class=\"fr-results-grid\">${developerRobots.map(robot=>`<article class=\"fr-robot-card\"><a href=\"${robotUrl(robot)}\">${image(robot)}</a><div><h3><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></h3><dl><div><dt>Maker</dt><dd>${escapeHtml(publicMaker(robot))}</dd></div><div><dt>Use</dt><dd>${escapeHtml(publicCardValue(robot.useCase||robot.category,\"Research platform\"))}</dd></div></dl><span class=\"${badgeClass(robot.status)}\">${escapeHtml(compactStatus(robot.status))}</span></div></article>`).join(\"\")}</div>`;return}if(kind===\"marketplace\"){const marketplaceRobots=data.robots.filter(robot=>robot.flags.consumer||robot.flags.enterprise||robot.flags.industrial||robot.flags.humanoid).slice(0,40);target.innerHTML=`<div class=\"fr-card fr-section\"><p class=\"fr-eyebrow\">Marketplace Foundation</p><h2>Robots ready for future commerce mapping</h2><p>These public robot profiles can later connect to accessories, skills, compatible parts, service plans, and quote flows as the marketplace grows.</p></div><div class=\"fr-results-grid\">${marketplaceRobots.map(robot=>`<article class=\"fr-robot-card\"><a href=\"${robotUrl(robot)}\">${image(robot)}</a><div><h3><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></h3><dl><div><dt>Maker</dt><dd>${escapeHtml(publicMaker(robot))}</dd></div><div><dt>Price</dt><dd>${escapeHtml(compactPrice(robot.price))}</dd></div></dl><span class=\"${badgeClass(robot.status)}\">${escapeHtml(compactStatus(robot.status))}</span></div></article>`).join(\"\")}</div>`;return}if(kind===\"community\"){const mentions=(data.community||[]).slice(0,80);target.innerHTML=`<div class=\"fr-results-grid\">${mentions.map(item=>`<article class=\"fr-tool-card\"><span class=\"fr-tool-card__icon\">${icon()}</span><strong>${escapeHtml(item.title||\"Community review item\")}</strong><p>${escapeHtml(item.notes||item.claim_summary||item.mention_type||\"Queued for manual community review.\")}</p>${item.url?`<a href=\"${escapeHtml(item.url)}\">Open mention -></a>`:'<a href=\"/pages/robots\">Open database -></a>'}</article>`).join(\"\")}</div>`;return}if(kind===\"about\"||kind===\"editorial-policy\"||kind===\"contact\"){const body={about:[\"A database-first robotics intelligence platform\",`Firgelli Robots is organized around ${data.stats.robots} robot records, ${data.stats.manufacturers} manufacturers, ${data.stats.sources} source records, and ${data.stats.papersPatents} papers/patents for robot buyers, researchers, and builders.`],\"editorial-policy\":[\"Editorial and source policy\",\"Robot specifications, manufacturer claims, images, videos, patents, papers, and community notes are separated by source type. Unverified fields stay marked as unknown until reviewed.\"],contact:[\"Contact Firgelli Robots\",\"Use this development page as the future intake point for data corrections, manufacturer submissions, marketplace partnerships, and robotics research requests.\"]}[kind];target.innerHTML=`<div class=\"fr-card fr-section\"><p class=\"fr-eyebrow\">${escapeHtml(body[0])}</p><h2>${escapeHtml(body[0])}</h2><p>${escapeHtml(body[1])}</p><p><a class=\"fr-button\" href=\"/pages/robots\">Explore Database</a> <a class=\"fr-button fr-button--secondary\" href=\"/pages/research\">Review Sources</a></p></div>`;return}if(kind===\"category\"&&currentPageHandle()===\"robot-categories\"){const categoryCards=(data.categories||[]).map(category=>`\n        <a class=\"fr-category-card\" href=\"${categoryUrl(category.slug)}\">\n          <span class=\"fr-category-card__icon\">${categoryIcon(category.slug)}</span>\n          <strong>${escapeHtml(category.label)}</strong>\n          <span>${Number(category.count||0).toLocaleString()}+ Robots</span>\n        </a>`).join(\"\");target.innerHTML=`\n        <section class=\"fr-seo-article fr-card fr-section\">\n          <p class=\"fr-eyebrow\">Robot Category Index</p>\n          <h2>Browse robots by category</h2>\n          <p>Use these category landing pages to narrow robots by form factor, market, deployment type, research use, service role, warehouse use, industrial automation, and defense-adjacent applications.</p>\n        </section>\n        <div class=\"fr-category-grid\">${categoryCards}</div>`;return}const robots=kind===\"compare\"?filteredRobots(data).slice(0,4):filteredRobots(data);if(kind===\"compare\"){const rows=[[\"Price\",\"price\"],[\"Height\",\"height\"],[\"Weight\",\"weight\"],[\"DOF\",\"dof\"],[\"Payload\",\"payload\"],[\"Runtime\",\"runtime\"],[\"Movement\",\"movement\"],[\"Status\",\"status\"]],addSlug=new URLSearchParams(location.search).get(\"add\"),compareRobots=addSlug?[data.robots.find(r=>r.slug===addSlug),...robots.filter(r=>r.slug!==addSlug)].filter(Boolean).slice(0,4):robots;target.innerHTML=`<div class=\"fr-table-wrap\"><table class=\"fr-compare-table fr-compare-table--page\"><colgroup><col class=\"fr-compare-label-col\">${compareRobots.map(()=>'<col class=\"fr-compare-robot-col\">').join(\"\")}</colgroup><thead><tr><th scope=\"col\"></th>${compareRobots.map(r=>`<th scope=\"col\"><a class=\"fr-table-robot fr-table-robot--compact\" href=\"${robotUrl(r)}\">${compareImage(r)}<span>${escapeHtml(r.name)}</span></a></th>`).join(\"\")}</tr></thead><tbody>${rows.map(([label,key])=>`<tr><td>${label}</td>${compareRobots.map(r=>`<td>${escapeHtml(compactComparisonValue(r,key))}</td>`).join(\"\")}</tr>`).join(\"\")}</tbody></table></div>${comparisonSeoContent(compareRobots)}`}else{const seoLead=kind===\"category\"?categorySeoContent(kind,data,robots):\"\";if(kind===\"category\"){const category=new URLSearchParams(location.search).get(\"filter\")||categorySlugFromRoute()||\"\",record=(data.categories||[]).find(item=>item.slug===category);if(record){const pageEyebrow=document.querySelector(\".fr-page-hero .fr-eyebrow\"),pageHeading=document.querySelector(\".fr-page-hero h1\"),pageCopy=document.querySelector(\".fr-page-hero p:not(.fr-eyebrow)\");pageEyebrow&&(pageEyebrow.textContent=\"Robot Category\"),pageHeading&&(pageHeading.textContent=record.label),pageCopy&&(pageCopy.textContent=record.description||`Browse ${record.label.toLowerCase()} by specifications, manufacturer, images, pricing status, and availability.`)}}target.innerHTML=`${seoLead}<div class=\"fr-results-grid\">${robots.map(robot=>`<article class=\"fr-robot-card\"><a href=\"${robotUrl(robot)}\">${image(robot)}</a><div><h3><a href=\"${robotUrl(robot)}\">${escapeHtml(robot.name)}</a></h3><dl><div><dt>Maker</dt><dd>${escapeHtml(publicMaker(robot))}</dd></div><div><dt>Status</dt><dd>${escapeHtml(compactStatus(robot.status))}</dd></div><div><dt>Height</dt><dd>${escapeHtml(publicCardValue(robot.height))}</dd></div></dl><span class=\"${badgeClass(robot.status)}\">${escapeHtml(robot.category)}</span></div></article>`).join(\"\")}</div>`}}function currentRobotFromRoute(data){const routeHandle=currentPageHandle(),slug=new URLSearchParams(location.search).get(\"robot\")||(routeHandle!==\"robot-profile\"?routeHandle:\"\");return(data.robots||[]).find(robot=>robotMatchesSlug(robot,slug))}function repairServerRobotProfile(kind,data){if(kind!==\"robot-profile\")return;const profile=document.querySelector(\".fr-server-robot-profile\");if(!profile)return;const html=profile.innerHTML,text=profile.textContent||\"\";if(!(/Known headline specs|Robot ID|Unknown fields stay unknown|Full [^<]+ specification sheet|documented fields/i.test(html)||/\\bWalking\\s+false\\b|\\bWheels\\s+false\\b|\\bTracks\\s+false\\b/i.test(text)))return;const robot=currentRobotFromRoute(data);if(!robot)return;const specPanel=[...profile.querySelectorAll(\".fr-robot-panel\")].find(panel=>(panel.querySelector(\".fr-eyebrow\")?.textContent||\"\").trim().toLowerCase()===\"specifications\");if(specPanel){const count=publicSpecCount(robot)||Number(robot.specSummary?.Total||0);specPanel.innerHTML=`\n        <div class=\"fr-robot-section-header\">\n          <div>\n            <p class=\"fr-eyebrow\">Specifications</p>\n            <h2>${escapeHtml(robot.name)} specifications</h2>\n            <p>Specs are grouped into practical sections with plain-language values so readers can quickly compare the robot.</p>\n          </div>\n          <span>${Number(count||0).toLocaleString()} public details</span>\n        </div>\n        ${renderSpecSections(robot)}`}const faqList=profile.querySelector(\".fr-faq-list\");faqList&&(faqList.outerHTML=faqBlock(robotFaqs(robot))),profile.innerHTML=profile.innerHTML.replace(/Known headline specs include/g,\"Headline specs include\").replace(/Unknown fields stay unknown until a stronger source is attached\\./g,\"Fields without enough public support stay unconfirmed until a stronger source is attached.\").replace(/known dimensions/g,\"published dimensions\").replace(/Verified ([^<]+) sources and further reading/g,\"$1 sources and further reading\")}function repairServerCategoryPage(kind){if(kind!==\"category\")return;const content=document.querySelector(\".fr-server-category\")||document.querySelector(\".fr-server-content\");if(!content)return;const html=content.innerHTML,text=content.textContent||\"\";(/uncertain category mapping|What belongs in this category|What does not belong|Best robots in this category|Unknown manufacturer|Price not verified/i.test(html)||[...content.querySelectorAll(\"td, dd, span, strong\")].some(node=>(node.textContent||\"\").trim().toLowerCase()===\"review\")||/\\breviewed\\b|\\bevidence\\b|\\bmapping\\b/i.test(text))&&(content.innerHTML=content.innerHTML.replace(/What belongs in this category\\?/g,\"What belongs here?\").replace(/Robots are included when their public specifications, manufacturer positioning, visible hardware, and use cases match this category\\./g,\"Robots in this category should have a clear public role that matches the category, plus enough specifications, images, or source material to compare them usefully.\").replace(/What does not belong\\?/g,\"What should be compared elsewhere?\").replace(/Robots without enough matching evidence, unrelated automation products, or records with uncertain category mapping should remain outside this landing page until reviewed\\./g,\"Robots built for a different job are better compared in another category. A polished demo or similar-looking body shape is not enough by itself.\").replace(/What to compare(?! first)/g,\"What to compare first\").replace(/Start with availability, price, height, payload, runtime, mobility, DOF, developer support, source count, and whether the robot has approved images or public videos\\./g,\"Start with whether the robot is actually available, then compare price status, size, payload, runtime, DOF, mobility, software access, support, and source quality.\").replace(/Limitations/g,\"What to be careful about\").replace(/Many robot manufacturers publish partial information\\. Missing price, runtime, SDK, safety, and deployment data should be treated as a research gap, not as a hidden positive\\./g,\"Many robotics companies publish partial specs. Missing price, runtime, safety, SDK, warranty, or deployment details should be treated as unconfirmed.\").replace(/Best robots in this category/g,\"Good robots to start with\").replace(/Unknown manufacturer/g,\"Manufacturer not listed\").replace(/Price not verified/g,\"Price not publicly listed\").replace(/>\\s*review\\s*</gi,\">Not publicly confirmed<\").replace(/>\\s*Unknown\\s*</g,\">Not publicly listed<\"))}function bindPageFilters(kind,data){document.querySelectorAll(\"[data-fr-filter-search], [data-fr-filter-category], [data-fr-filter-status]\").forEach(control=>{control.addEventListener(\"input\",()=>renderPageResults(kind,data)),control.addEventListener(\"change\",()=>renderPageResults(kind,data))})}async function initHome(root){assetBase=root.dataset.assetBase||assetBase;const data=await loadData(root);renderHero(data),bindHomeSearch(root,data),renderFeaturedTable(data),bindFeaturedTableScroll(),renderCategories(data),renderStats(data),renderLatest(data),renderViewShowcase(data),renderTools(data),renderManufacturerMarquee(data)}async function initPage(root){assetBase=root.dataset.assetBase||assetBase;const data=await loadData(root);if(redirectToCleanUrl(data))return;const kind=resolvePageKind(root);applyPageMeta(root,kind),renderControls(kind,data),renderPageResults(kind,data),repairServerRobotProfile(kind,data),repairServerCategoryPage(kind),bindPageFilters(kind,data),hideGiantListingDumps(),initHubManufacturerSelects(),cleanupRobotProfileHeadings(kind)}function cleanupRobotProfileHeadings(kind){if(kind!==\"robot-profile\")return;const root=document.querySelector(\".fr-page-shell[data-fr-page-kind='robot-profile']\")||document.querySelector(\".fr-page-shell\");if(!root)return;const hero=root.querySelector(\".fr-page-hero\"),innerH1=root.querySelector(\".fr-server-content h1, .fr-robot-profile h1, .fr-robot-hero h1\"),innerH2=root.querySelector(\".fr-robot-hero h2, .fr-server-content h2\");if(hero&&(innerH1||innerH2)){const heroText=(hero.querySelector(\"h1\")?.textContent||\"\").replace(/\\s+/g,\" \").trim();(!heroText||/^robot profile$/i.test(heroText))&&hero.remove()}if(!root.querySelector(\"h1\")&&innerH2){const next=document.createElement(\"h1\");next.innerHTML=innerH2.innerHTML,innerH2.replaceWith(next)}[...root.querySelectorAll(\"h1\")].slice(1).forEach(node=>{const next=document.createElement(\"h2\");next.innerHTML=node.innerHTML,node.replaceWith(next)});const pills=[...root.querySelectorAll(\"a.fr-button[href*='/blogs/robot-reviews/']\")],seen=new Set;pills.forEach(a=>{const key=(a.getAttribute(\"href\")||\"\")+\"|\"+(a.textContent||\"\").replace(/\\s+/g,\" \").trim().toLowerCase();seen.has(key)?(a.closest(\"p, .fr-profile-review-link\")||a).remove():seen.add(key)}),document.querySelectorAll(\"script[type='application/ld+json']\").forEach(script=>{const raw=(script.textContent||\"\").replace(/&quot;/g,'\"');if(!(!raw.includes(\"Review\")&&!raw.includes(\"AggregateRating\")))try{const data=JSON.parse(raw),strip=node=>{if(Array.isArray(node))return node.map(strip).filter(item=>item!==null);if(!node||typeof node!=\"object\")return node;const type=node[\"@type\"],types=Array.isArray(type)?type:[type];if(types.includes(\"Review\")||types.includes(\"AggregateRating\"))return null;const out={};return Object.keys(node).forEach(key=>{out[key]=strip(node[key])}),out};script.textContent=JSON.stringify(strip(data))}catch{}})}const robotLightboxSelector=[\".fr-server-robot-profile .fr-robot-hero__image img\",\".fr-server-robot-profile .fr-profile__media img\",\".fr-server-robot-profile .fr-angle-tile img\",\".fr-server-robot-profile .fr-view-card img\",\".fr-server-robot-profile .fr-found-card img\"].join(\", \");let lastLightboxFocus=null;function lightboxImageFromTarget(target){if(!target||typeof target.closest!=\"function\")return null;const image2=target.closest(robotLightboxSelector);return image2&&document.body.contains(image2)?image2:null}function ensureImageLightbox(){let lightbox=document.querySelector(\"[data-fr-lightbox]\");return lightbox||(lightbox=document.createElement(\"div\"),lightbox.className=\"fr-lightbox\",lightbox.setAttribute(\"data-fr-lightbox\",\"\"),lightbox.setAttribute(\"role\",\"dialog\"),lightbox.setAttribute(\"aria-modal\",\"true\"),lightbox.setAttribute(\"aria-label\",\"Larger robot image\"),lightbox.innerHTML=`\n      <div class=\"fr-lightbox__dialog\" data-fr-lightbox-dialog>\n        <button class=\"fr-lightbox__close\" type=\"button\" aria-label=\"Close larger image\">&times;</button>\n        <div class=\"fr-lightbox__frame\"><img alt=\"\"></div>\n        <div class=\"fr-lightbox__caption\" data-fr-lightbox-caption></div>\n      </div>`,document.body.appendChild(lightbox),lightbox.addEventListener(\"click\",event=>{(event.target===lightbox||event.target.closest(\".fr-lightbox__close\"))&&closeImageLightbox()}),lightbox)}function openImageLightbox(image2){const src=image2.currentSrc||image2.src||image2.getAttribute(\"src\");if(!src)return;const lightbox=ensureImageLightbox(),fullImage=lightbox.querySelector(\".fr-lightbox__frame img\"),caption=lightbox.querySelector(\"[data-fr-lightbox-caption]\"),label=image2.closest(\".fr-angle-tile, .fr-view-card, .fr-found-card\")?.querySelector(\"strong\")?.textContent?.trim()||image2.alt||\"Robot image\";lastLightboxFocus=document.activeElement,fullImage.src=src,fullImage.alt=image2.alt||label,image2.srcset?fullImage.srcset=image2.srcset:fullImage.removeAttribute(\"srcset\"),image2.sizes?fullImage.sizes=image2.sizes:fullImage.removeAttribute(\"sizes\"),caption.textContent=label,document.body.classList.add(\"fr-lightbox-open\"),lightbox.classList.add(\"is-open\"),requestAnimationFrame(()=>lightbox.querySelector(\".fr-lightbox__close\")?.focus())}function closeImageLightbox(){const lightbox=document.querySelector(\"[data-fr-lightbox]\");!lightbox||!lightbox.classList.contains(\"is-open\")||(lightbox.classList.remove(\"is-open\"),document.body.classList.remove(\"fr-lightbox-open\"),lastLightboxFocus&&typeof lastLightboxFocus.focus==\"function\"&&lastLightboxFocus.focus())}function decorateLightboxImages(){document.querySelectorAll(robotLightboxSelector).forEach(image2=>{image2.dataset.frLightboxReady!==\"1\"&&(image2.dataset.frLightboxReady=\"1\",image2.hasAttribute(\"tabindex\")||(image2.tabIndex=0),image2.setAttribute(\"role\",\"button\"),image2.setAttribute(\"aria-label\",`Open larger view of ${image2.alt||\"robot image\"}`))})}function bindImageLightbox(){if(document.documentElement.dataset.frLightboxBound===\"1\")return;document.documentElement.dataset.frLightboxBound=\"1\",document.addEventListener(\"click\",event=>{const image2=lightboxImageFromTarget(event.target);image2&&(event.preventDefault(),openImageLightbox(image2))}),document.addEventListener(\"keydown\",event=>{if(event.key===\"Escape\"){closeImageLightbox();return}if(event.key!==\"Enter\"&&event.key!==\" \")return;const image2=lightboxImageFromTarget(event.target);image2&&(event.preventDefault(),openImageLightbox(image2))}),decorateLightboxImages(),new MutationObserver(decorateLightboxImages).observe(document.body,{childList:!0,subtree:!0})}function bindNav(){const button=document.querySelector(\"[data-fr-menu]\"),nav=document.querySelector(\"[data-fr-mobile-nav]\");!button||!nav||button.addEventListener(\"click\",()=>{const open=nav.classList.toggle(\"is-open\");button.setAttribute(\"aria-expanded\",String(open))})}const versionIcubImageUrl=(url=\"\")=>{const text=String(url||\"\");return!text.includes(\"icub-a922c3d274\")||/[?&]v=/.test(text)?text:`${text}${text.includes(\"?\")?\"&\":\"?\"}v=1`};function refreshIcubImages(root=document){root.querySelectorAll?.('img[src*=\"icub-a922c3d274\"], img[data-fr-fallbacks*=\"icub-a922c3d274\"]').forEach(image2=>{const refreshedSrc=versionIcubImageUrl(image2.getAttribute(\"src\"));if(refreshedSrc&&refreshedSrc!==image2.getAttribute(\"src\")&&image2.setAttribute(\"src\",refreshedSrc),!!image2.dataset.frFallbacks)try{const fallbacks=JSON.parse(image2.dataset.frFallbacks||\"[]\").map(versionIcubImageUrl);image2.dataset.frFallbacks=JSON.stringify([...new Set(fallbacks)])}catch{image2.dataset.frFallbacks=image2.dataset.frFallbacks.replace(/(icub-a922c3d274[^,\\]\"]*?\\.webp)(?![?&]v=)/g,\"$1?v=1\")}})}function sanitizeServerVideoCards(root=document){const badLabels=new Set([\"youtube_link\",\"youtube_url\",\"youtube_video_id\",\"embed_url\",\"video_url\",\"placeholder\"]);root.querySelectorAll?.(\".fr-video-card\").forEach((card,index)=>{const frame=card.querySelector(\"iframe, video\"),src=frame?String(frame.getAttribute(\"src\")||\"\").trim():\"\",lowerSrc=src.toLowerCase();if(!src||lowerSrc.includes(\"${\")||lowerSrc.includes(\"youtube_link\")||lowerSrc.includes(\"embed_url\")){card.remove();return}const label=card.querySelector(\"strong\");if(label&&badLabels.has(label.textContent.trim().toLowerCase())&&(label.textContent=`Movement video ${index+1}`),frame&&frame.tagName===\"IFRAME\"){const title=String(frame.getAttribute(\"title\")||\"\").toLowerCase();[...badLabels].some(bad=>title.includes(bad))&&frame.setAttribute(\"title\",`Movement video ${index+1}`)}}),root.querySelectorAll?.(\".fr-video-grid\").forEach(grid=>{if(grid.querySelector(\".fr-video-card\"))return;const heading=grid.previousElementSibling;heading&&heading.tagName===\"H3\"&&heading.textContent.trim().toLowerCase()===\"videos\"&&heading.remove(),grid.remove()})}document.addEventListener(\"DOMContentLoaded\",()=>{refreshIcubImages(),sanitizeServerVideoCards(),bindNav(),bindImageLightbox(),document.querySelectorAll(\"[data-fr-home]\").forEach(initHome),document.querySelectorAll(\"[data-fr-page-kind]\").forEach(initPage),document.querySelector(\"[data-fr-page-kind]\")||(hideGiantListingDumps(),initHubManufacturerSelects())})})();\n//# sourceMappingURL=/cdn/shop/t/15/assets/fr-theme-compare-datafix-20260706.js.map?frv=heading-cleanup-20260823&v=20572549701647234681787612335\n"],
  "mappings": "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",
  "names": []
}
