{"id":11998,"date":"2025-01-17T09:52:26","date_gmt":"2025-01-17T09:52:26","guid":{"rendered":"https:\/\/framos.com\/products-solutions\/image-sensor-module-ecosystem\/"},"modified":"2026-07-21T13:33:03","modified_gmt":"2026-07-21T13:33:03","slug":"kameramodule","status":"publish","type":"page","link":"https:\/\/framos.com\/de\/produkte-dienstleistungen\/kameramodule\/","title":{"rendered":"Embedded Vision Kameras"},"content":{"rendered":"<div class=\"wp-block-framos-content-image relative py-6\">\n <svg class=\"absolute inset-0 -z-10 w-full h-full stroke-gray-200 dark:stroke-gray-700 [mask-image:radial-gradient(50%_50%_at_bottom_left,white,transparent)]\" aria-hidden=\"true\">\n <defs>\n <pattern id=\"pattern-grid-6abf6d87d3157\" width=\"50\" height=\"50\" y=\"-1\" patternUnits=\"userSpaceOnUse\">\n <path d=\"M.5 200V.5H200\" fill=\"none\" \/>\n <\/pattern>\n <\/defs>\n <rect width=\"100%\" height=\"100%\" stroke-width=\"0\" fill=\"url(#pattern-grid-6abf6d87d3157)\" \/>\n <\/svg>\n\n <div class=\"mx-auto max-w-7xl px-6 lg:px-8\">\n <div class=\"relative isolate overflow-visible py-20 sm:rounded-3xl sm:py-12 lg:py-24\">\n \n <div class=\"relative z-10\">\n <div class=\"mx-auto flex max-w-2xl flex-col lg:flex-row lg:max-w-none lg:items-start gap-16 lg:flex-row-reverse\">\n <div class=\"w-full lg:w-1\/2\">\n <h3 class=\"text-3xl font-framos-regular leading-snug mb-5 text-framosDarkBlue dark:text-white text-balance tracking-tight sm:text-4xl sm:text-3xl\">\n FSM:GO &#8211; KAMERAMODULE <\/h3>\n\n  <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 my-8\">\n FSM:GO Kameramodule sind vollst\u00e4ndige Bildverarbeitungsl\u00f6sungen, die sich <strong>direkt in Embedded Vision Systeme und f\u00fchrende Compute Plattformen integrieren<\/strong> lassen. Jedes Modul kombiniert validierte Sensoren, abgestimmte Optik sowie standardisierte elektrische und mechanische Schnittstellen \u2013 f\u00fcr vorhersehbare Bildqualit\u00e4t ab dem ersten Einsatz. <br><br>FSM:GO ist der empfohlene Einstieg f\u00fcr Teams, die Integrationsaufwand minimieren und schnell zu belastbaren Ergebnissen kommen wollen. <\/p>\n \n <div class=\"max-w-xl lg:mt-2 lg:max-w-lg lg:border-t lg:border-gray-900\/10 lg:pt-6\">\n <dl class=\"framos-accordions divide-y divide-gray-900\/10\">\n \n<div id=\"product-lineup\" class=\"wp-block-framos-content-image\"><div class=\"sr-only rankmath-seo-content\"><strong>FSM:GO &#8211;  Camera Modules<\/strong><span>FSM:GO camera modules are complete, system-ready imaging solutions designed for\u00a0<strong>easy integration <\/strong>into embedded vision systems and <strong>leading compute platforms<\/strong>. Each camera module integrates a validated image sensor, matched optics, and standardized electrical and mechanical interfaces to deliver predictable image quality out of the box.<br><br>FSM:GO is the recommended starting point for teams that want to minimize integration effort and move quickly with confidence.<\/span><\/div><div class=\"wp-block-framos-accordion py-2\">\n <dt>\n <button type=\"button\" class=\"accordion-head flex w-full items-start justify-between text-left focus:outline-none border-0 bg-transparent shadow-none p-0\" aria-expanded=\"true\"  data-cta=\"true\" data-cta-id=\"framos_accordion.1.button\" data-cta-label=\"\" data-cta-location=\"framos_accordion@kameramodule\" data-cta-destination=\"\" data-cta-type=\"primary\">\n <h3 class=\"text-framosDarkBlue dark:text-white text-lg font-framos-bold leading-snug py-0 m-0\">\n <strong>Hauptvorteile<\/strong> <\/h3>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"close-icon w-6 h-6 hidden\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"open-icon w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/dt>\n <dd class=\"text-gray-600 dark:text-gray-200 accordion-body mt-2 pr-12 overflow-hidden ml-0\">\n \n<ul class=\"wp-block-list\">\n<li>Sorgf\u00e4ltig aufeinander abgestimmte Sensoren und Optiken liefern zuverl\u00e4ssige Bildqualit\u00e4t f\u00fcr Ihre Anwendung.<\/li>\n\n\n\n<li>Open-Source-Treiber und ISP Support f\u00fcr NVIDIA Jetson, NXP, Qualcomm und Raspberry Pi Plattformen.<\/li>\n\n\n\n<li>Entwickelt f\u00fcr reproduzierbare Performance in Embedded Vision Systemen im Serieneinsatz<\/li>\n\n\n\n<li>Flexible Geh\u00e4use- und Schnittstellenoptionen wie PixelMate\u2122, FFC, MicroCoax und GMSL unterst\u00fctzen unterschiedliche Baugr\u00f6\u00dfen und Routing-Anforderungen.<\/li>\n<\/ul>\n <\/dd>\n<\/div>\n\n\n<div class=\"mt-0 flex flex-col sm:flex-row gap-y-8 sm:gap-y-0 sm:gap-x-6 items-center justify-start\">\n  <a href=\"\/products-services\/camera-modules\/fsm-go-camera-modules\/\"\n  class=\"rounded-full group relative bg-primary px-7 md:px-11 py-2.5 text-base border-0 text-white visited:text-white shadow-sm hover:bg-framosDarkBlue hover:text-white dark:bg-primary dark:text-white sm:w-auto flex items-center md:ml-0\"  data-cta=\"true\" data-cta-id=\"framos_button-group.1.\" data-cta-label=\"\" data-cta-location=\"framos_button-group@kameramodule\" data-cta-destination=\"\" data-cta-type=\"inline\">\n FSM:GO Kameramodule entdecken <div class=\"ml-1 -rotate-45 transition-all duration-200 group-hover:rotate-0\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5\">\n <path d=\"M8.14645 3.14645C8.34171 2.95118 8.65829 2.95118 8.85355 3.14645L12.8536 7.14645C13.0488 7.34171 13.0488 7.65829 12.8536 7.85355L8.85355 11.8536C8.65829 12.0488 8.34171 12.0488 8.14645 11.8536C7.95118 11.6583 7.95118 11.3417 8.14645 11.1464L11.2929 8H2.5C2.22386 8 2 7.77614 2 7.5C2 7.22386 2.22386 7 2.5 7H11.2929L8.14645 3.85355C7.95118 3.65829 7.95118 3.34171 8.14645 3.14645Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" \/>\n <\/svg>\n <\/div>\n <\/a>\n \n <\/div>\n<\/div>\n <\/dl>\n <\/div>\n <\/div>\n\n <div class=\"w-full lg:w-1\/2 lg:sticky lg:top-24 lg:self-start\">\n  <img decoding=\"async\"\n src=\"https:\/\/framos.com\/wp-content\/uploads\/2026\/01\/fsm-go-ecosystem-2.jpg\"\n alt=\"\"\n class=\"relative -z-20 w-full max-w-full rounded-xl shadow-xl ring-1 ring-white\/10\"\n \/>\n  <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n<\/div>\n<div class=\"wp-block-framos-content-image relative py-6\">\n <svg class=\"absolute inset-0 -z-10 w-full h-full stroke-gray-200 dark:stroke-gray-700 [mask-image:radial-gradient(50%_50%_at_bottom_right,white,transparent)]\" aria-hidden=\"true\">\n <defs>\n <pattern id=\"pattern-grid-6abf6d87d3b68\" width=\"50\" height=\"50\" y=\"-1\" patternUnits=\"userSpaceOnUse\">\n <path d=\"M.5 200V.5H200\" fill=\"none\" \/>\n <\/pattern>\n <\/defs>\n <rect width=\"100%\" height=\"100%\" stroke-width=\"0\" fill=\"url(#pattern-grid-6abf6d87d3b68)\" \/>\n <\/svg>\n\n <div class=\"mx-auto max-w-7xl px-6 lg:px-8\">\n <div class=\"relative isolate overflow-visible py-20 sm:rounded-3xl sm:py-12 lg:py-24\">\n \n <div class=\"relative z-10\">\n <div class=\"mx-auto flex max-w-2xl flex-col lg:flex-row lg:max-w-none lg:items-start gap-16\">\n <div class=\"w-full lg:w-1\/2\">\n <h3 class=\"text-3xl font-framos-regular leading-snug mb-5 text-framosDarkBlue dark:text-white text-balance tracking-tight sm:text-4xl\">\n SUCHEN SIE WEITERE SENSOROPTIONEN?<br><br><strong>ERWEITERTE ENTWICKLUNGSPRODUKTE ENTDECKEN <\/strong> <\/h3>\n\n  <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 my-8\">\n Wenn Ihre Anwendung einen Sensor, eine Aufl\u00f6sung oder eine Schnittstelle erfordert, die im FSM:GO Standardportfolio nicht verf\u00fcgbar ist, bieten die FRAMOS Entwicklungsprodukte flexible Bausteine zur Evaluierung und Kombination verschiedener Sensoren, Optiken und Schnittstellen. <br><br>Ideal f\u00fcr Teams, die erweiterte Optionen evaluieren m\u00f6chten, bevor sie sich auf ein finales Design festlegen. <\/p>\n \n <div class=\"max-w-xl lg:mt-2 lg:max-w-lg lg:border-t lg:border-gray-900\/10 lg:pt-6\">\n <dl class=\"framos-accordions divide-y divide-gray-900\/10\">\n \n<div class=\"wp-block-framos-content-image\"><div class=\"sr-only rankmath-seo-content\"><strong>Looking for More Sensor Options?&lt;br>&lt;br>&lt;strong>Explore our Extended Development Products &lt;\/strong><\/strong><span>If your application requires a sensor, resolution, or interface not available in the standard FSM:GO lineup, explore the FRAMOS Extended Development Products. These development products provide flexible building blocks that allow teams to evaluate and combine a wider range of sensor modules, optics, and interfaces.<br><br>Ideal for teams that need to experiment with extended options before committing to a final design.<\/span><\/div><div class=\"wp-block-framos-accordion py-2\">\n <dt>\n <button type=\"button\" class=\"accordion-head flex w-full items-start justify-between text-left focus:outline-none border-0 bg-transparent shadow-none p-0\" aria-expanded=\"true\"  data-cta=\"true\" data-cta-id=\"framos_accordion.2.button\" data-cta-label=\"\" data-cta-location=\"framos_accordion@kameramodule\" data-cta-destination=\"\" data-cta-type=\"primary\">\n <h3 class=\"text-framosDarkBlue dark:text-white text-lg font-framos-bold leading-snug py-0 m-0\">\n <strong>Hauptvorteile<\/strong> <\/h3>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"close-icon w-6 h-6 hidden\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"open-icon w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/dt>\n <dd class=\"text-gray-600 dark:text-gray-200 accordion-body mt-2 pr-12 overflow-hidden ml-0\">\n \n<ul class=\"wp-block-list\">\n<li>Auswahl aus \u00fcber 25 Sensormodul-Optionen<\/li>\n\n\n\n<li>Schneller Sensorvergleich ohne kundenspezifisches PCB-Redesign<\/li>\n\n\n\n<li>Skalierbarer Weg von der Evaluierung bis zur kundenspezifischen Serienkamera<\/li>\n<\/ul>\n <\/dd>\n<\/div>\n\n\n<div class=\"mt-4 flex flex-col sm:flex-row gap-y-8 sm:gap-y-0 sm:gap-x-6 items-center justify-start\">\n  <a href=\"https:\/\/framos.com\/products-services\/camera-modules\/fsm-fsa-image-sensor-modules\/\"\n  class=\"rounded-full group relative bg-primary px-7 md:px-11 py-2.5 text-base border-0 text-white visited:text-white shadow-sm hover:bg-framosDarkBlue hover:text-white dark:bg-primary dark:text-white sm:w-auto flex items-center md:ml-0\"  data-cta=\"true\" data-cta-id=\"framos_button-group.2.\" data-cta-label=\"\" data-cta-location=\"framos_button-group@kameramodule\" data-cta-destination=\"\" data-cta-type=\"inline\">\n ENTWICKLUNGSPRODUKTE <div class=\"ml-1 -rotate-45 transition-all duration-200 group-hover:rotate-0\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5\">\n <path d=\"M8.14645 3.14645C8.34171 2.95118 8.65829 2.95118 8.85355 3.14645L12.8536 7.14645C13.0488 7.34171 13.0488 7.65829 12.8536 7.85355L8.85355 11.8536C8.65829 12.0488 8.34171 12.0488 8.14645 11.8536C7.95118 11.6583 7.95118 11.3417 8.14645 11.1464L11.2929 8H2.5C2.22386 8 2 7.77614 2 7.5C2 7.22386 2.22386 7 2.5 7H11.2929L8.14645 3.85355C7.95118 3.65829 7.95118 3.34171 8.14645 3.14645Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" \/>\n <\/svg>\n <\/div>\n <\/a>\n \n <\/div>\n<\/div>\n <\/dl>\n <\/div>\n <\/div>\n\n <div class=\"w-full lg:w-1\/2 lg:sticky lg:top-24 lg:self-start\">\n  <img decoding=\"async\"\n src=\"https:\/\/framos.com\/wp-content\/uploads\/2026\/01\/fsm-go-ecosystem-1.jpg\"\n alt=\"\"\n class=\"relative -z-20 w-full max-w-full rounded-xl shadow-xl ring-1 ring-white\/10\"\n \/>\n  <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n<\/div>\n\n<section class=\"wp-block-framos-whitepaper-cta\">\n  <div class=\"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-24\">\n    <div class=\"relative isolate flex flex-col-reverse items-center justify-between gap-14 lg:flex-row\">\n      <div class=\"relative w-full p-8 md:py-10 md:px-8 lg:py-10 lg:px-16 bg-framosDarkBlue flex-1 lg:-mr-14 rounded-2xl lg:rounded-l-2xl lg:rounded-r-none overflow-hidden\">\n                  <h2 class=\"font-framos-light text-3xl lg:text-4xl leading-tight mb-6 text-white text-center lg:text-left\">\n            BEN\u00d6TIGEN SIE EINE INDIVIDUELLE KAMERAL\u00d6SUNG?          <\/h2>\n        \n          <p class=\"text-base leading-7 mb-4 text-gray-100 text-center lg:text-left\">\n        Wenn vorkonfigurierte Kameramodule nicht zu Ihren Anforderungen passen, entwickelt FRAMOS individuelle Embedded Vision L\u00f6sungen. Von der Auswahl von Sensor und Optik bis zur Systemintegration und Validierung \u2013 von der Idee bis zur Serie.       <\/p>\n    \n    <div class=\"mt-10 flex justify-center lg:justify-start\">\n      <a href=\"https:\/\/framos.com\/services\/custom-imaging-solutions\/\"         class=\"btn-round-arrow group visited:text-white\"\n         aria-label=\"Custom-Solutions entdecken\"  data-cta=\"true\" data-cta-id=\"framos_whitepaper-cta.1.button\" data-cta-label=\"\" data-cta-location=\"framos_whitepaper-cta@kameramodule\" data-cta-destination=\"\" data-cta-type=\"primary\">\n        Custom-Solutions entdecken        <div class=\"ml-1 -rotate-45 transition-all duration-200 group-hover:rotate-0\">\n          <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\"\n               xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5\">\n            <path\n              d=\"M8.14645 3.14645C8.34171 2.95118 8.65829 2.95118 8.85355 3.14645L12.8536 7.14645C13.0488 7.34171 13.0488 7.65829 12.8536 7.85355L8.85355 11.8536C8.65829 12.0488 8.34171 12.0488 8.14645 11.8536C7.95118 11.6583 7.95118 11.3417 8.14645 11.1464L11.2929 8H2.5C2.22386 8 2 7.77614 2 7.5C2 7.22386 2.22386 7 2.5 7H11.2929L8.14645 3.85355C7.95118 3.65829 7.95118 3.34171 8.14645 3.14645Z\"\n              fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><\/path>\n          <\/svg>\n        <\/div>\n      <\/a>\n    <\/div>\n\n    <svg viewBox=\"0 0 1024 1024\" class=\"absolute left-1\/2 top-1\/2 pointer-events-none z-0 h-[64rem] w-[64rem] -translate-x-1\/2 [mask-image:radial-gradient(closest-side,white,transparent)]\" aria-hidden=\"true\">\n            <circle cx=\"512\" cy=\"512\" r=\"512\" fill=\"url(#framos-whitepaper-gradient-1)\" fill-opacity=\"0.7\"><\/circle>\n            <defs>\n                <radialGradient id=\"framos-whitepaper-gradient-1\">\n                    <stop stop-color=\"#00c4d4\"><\/stop>\n                    <stop offset=\"1\" stop-color=\"#0098b0\"><\/stop>\n                <\/radialGradient>\n            <\/defs>\n        <\/svg>\n  <\/div>\n\n  <div class=\"w-full lg:w-auto\">\n    <div class=\"relative flex justify-center lg:block\">\n              <img decoding=\"async\" src=\"https:\/\/framos.com\/wp-content\/uploads\/2026\/03\/custom-cta-block.jpg\" alt=\"\" class=\"rounded-2xl object-cover\" \/>\n          <\/div>\n  <\/div>\n<\/div>\n\n\n  <\/div>\n<\/section>\n\n<div class=\"wp-block-group py-24\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-align-center max-w-4xl mx-auto\" id=\"camera-modules\"><strong>DAS PASSENDE KAMERAMODUL F\u00dcR IHRE ANWENDUNG FINDEN<\/strong><\/h2>\n\n\n\n<p class=\"paragraph-c pb-16 wp-block-paragraph\">In Europa entwickelt und gefertigt, bieten FRAMOS Kameramodule zuverl\u00e4ssige und konsistente Performance \u00fcber eine breite Auswahl an Aufl\u00f6sungen und Formaten f\u00fcr moderne Embedded Vision Systeme.<\/p>\n\n\n\r\n<!-- Dependency for Interactive Tooltips -->\r\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/tippy.js@6\/animations\/shift-away.css\"\/>\r\n<script src=\"https:\/\/unpkg.com\/@popperjs\/core@2\"><\/script>\r\n<script src=\"https:\/\/unpkg.com\/tippy.js@6\"><\/script>\r\n\r\n<style>\r\n  \/* ---------------------------------------------------------\r\n   | Matrix Custom Scrollbar Styles\r\n   | --------------------------------------------------------- *\/\r\n  .framos-scrollbar::-webkit-scrollbar {\r\n    height: 8px;\r\n  }\r\n  .framos-scrollbar::-webkit-scrollbar-track {\r\n    background: #f1f5f9; \/* Tailwind slate-100 *\/\r\n    border-radius: 4px;\r\n  }\r\n  .framos-scrollbar::-webkit-scrollbar-thumb {\r\n    background: #cbd5e1; \/* Tailwind slate-300 *\/\r\n    border-radius: 4px;\r\n  }\r\n  .framos-scrollbar::-webkit-scrollbar-thumb:hover {\r\n    background: #94a3b8; \/* Tailwind slate-400 *\/\r\n  }\r\n\r\n  \/* Dark Mode Adjustments *\/\r\n  .dark .framos-scrollbar::-webkit-scrollbar-track {\r\n    background: #171b1e; \/* secondary100 *\/\r\n  }\r\n  .dark .framos-scrollbar::-webkit-scrollbar-thumb {\r\n    background: #1B2E41; \/* framosDarkBlue *\/\r\n  }\r\n  .dark .framos-scrollbar::-webkit-scrollbar-thumb:hover {\r\n    background: #0098B0; \/* primary *\/\r\n  }\r\n<\/style>\r\n\r\n<div id=\"framos-grid-6abf6d8882b67\" class=\"w-full max-w-[1500px] mx-auto px-4 py-8 font-sans\">\r\n  <div id=\"framos-matrix-container-framos-grid-6abf6d8882b67\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  \/\/ Inject payload generated securely by PHP \r\n  var DATA = [{\"sku\":\"29012\",\"code\":\"FSM-IMX811\",\"format\":\"1.2\\\"\",\"resolution\":\"3840\\u00d72160\",\"megapixels\":247,\"fps\":\"\\u2013\",\"proto\":\"slvs-ec\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/modules\\\/framos-sensor-modules\\\/fsm-imx811-color-29012\\\/\"},{\"sku\":\"26324\",\"code\":\"FSM-IMX530\",\"format\":\"1.2\\\"\",\"resolution\":\"5320\\u00d74600\",\"megapixels\":24.5,\"fps\":\"25 FPS\",\"proto\":\"slvs\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx530-sensor-module-26324\\\/\"},{\"sku\":\"26363\",\"code\":\"FSM-IMX421\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"1944\\u00d71472\",\"megapixels\":2.8,\"fps\":\"409 FPS\",\"proto\":\"slvs\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx421-sensor-module-26363\\\/\"},{\"sku\":\"26341\",\"code\":\"FSM-IMX264\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"2464\\u00d72056\",\"megapixels\":5.07,\"fps\":\"35 FPS\",\"proto\":\"sub\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx264-sensor-module-26341\\\/\"},{\"sku\":\"26566\",\"code\":\"FSM-IMX568\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"2448\\u00d72048\",\"megapixels\":5.1,\"fps\":\"96 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx568-sensor-module-26566\\\/\"},{\"sku\":\"26357\",\"code\":\"FSM-IMX335\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"2592\\u00d71944\",\"megapixels\":5,\"fps\":\"80 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx335-sensor-module-26357\\\/\"},{\"sku\":\"27195\",\"code\":\"FSM-IMX675\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"2592\\u00d71944\",\"megapixels\":5,\"fps\":\"80 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx675-sensor-module-27195\\\/\"},{\"sku\":\"26371\",\"code\":\"FSM-IMX485\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"3840\\u00d72160\",\"megapixels\":8.3,\"fps\":\"90 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx485-sensor-module-26371\\\/\"},{\"sku\":\"26378\",\"code\":\"FSM-IMX585\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"3840\\u00d72160\",\"megapixels\":8.3,\"fps\":\"90 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx585-sensor-module-26378\\\/\"},{\"sku\":\"26380\",\"code\":\"FSM-IMX678\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"3840\\u00d72160\",\"megapixels\":8.3,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx678-sensor-module-26380\\\/\"},{\"sku\":\"27364\",\"code\":\"FSM-IMX678\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"3840\\u00d72160\",\"megapixels\":8.3,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":true,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/fsmgo-de-2\\\/fsmgo-with-imx678-sensor-27364\\\/\"},{\"sku\":\"26355\",\"code\":\"FSM-IMX334\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"3840\\u00d72160\",\"megapixels\":8.3,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx334-sensor-module-26355\\\/\"},{\"sku\":\"26361\",\"code\":\"FSM-IMX415\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"3864\\u00d72176\",\"megapixels\":8.4,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx415-sensor-module-26361\\\/\"},{\"sku\":\"26382\",\"code\":\"FSM-IMX715\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"3864\\u00d72176\",\"megapixels\":8.4,\"fps\":\"90 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx715-sensor-module-26382\\\/\"},{\"sku\":\"26351\",\"code\":\"FSM-IMX304\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"4112\\u00d73008\",\"megapixels\":12.4,\"fps\":\"23 FPS\",\"proto\":\"sub\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx304-sensor-module-26351\\\/\"},{\"sku\":\"26374\",\"code\":\"FSM-IMX565\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"4128\\u00d73008\",\"megapixels\":12.4,\"fps\":\"42 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx565-sensor-module-26374\\\/\"},{\"sku\":\"26359\",\"code\":\"FSM-IMX412\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"4056\\u00d73040\",\"megapixels\":12.3,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx412-sensor-module-26359\\\/\"},{\"sku\":\"26376\",\"code\":\"FSM-IMX577\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"4056\\u00d73040\",\"megapixels\":12.3,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx577-sensor-module-26376\\\/\"},{\"sku\":\"26343\",\"code\":\"FSM-IMX283\",\"format\":\"2\\\/3\\\"\",\"resolution\":\"5496\\u00d73672\",\"megapixels\":20.2,\"fps\":\"25 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx283-sensor-module-26343\\\/\"},{\"sku\":\"26347\",\"code\":\"FSM-IMX296\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"1440\\u00d71080\",\"megapixels\":1.6,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx296-sensor-module-26347\\\/\"},{\"sku\":\"26349\",\"code\":\"FSM-IMX297\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"720\\u00d7540\",\"megapixels\":0.4,\"fps\":\"120 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx297-sensor-module-26349\\\/\"},{\"sku\":\"26365\",\"code\":\"FSM-IMX462\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"1920\\u00d71080\",\"megapixels\":2.1,\"fps\":\"120 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx462-sensor-module-26365\\\/\"},{\"sku\":\"26577\",\"code\":\"FSM-IMX662\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"1920\\u00d71080\",\"megapixels\":2.4,\"fps\":\"120 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx662-sensor-module-26577\\\/\"},{\"sku\":\"27362\",\"code\":\"FSM-IMX662\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"1920\\u00d71080\",\"megapixels\":2.4,\"fps\":\"120 FPS\",\"proto\":\"mipi\",\"fsmgo\":true,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/modules\\\/fsmgo-modules\\\/fsmgo-with-imx662-sensor-27362\\\/\"},{\"sku\":\"27355\",\"code\":\"FSM-IMX676\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"3552\\u00d73552\",\"megapixels\":12.62,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/fsmgo-de-2\\\/fsmgo-with-imx676-sensor-and-16-hfov-lens-27355\\\/\"},{\"sku\":\"27363\",\"code\":\"FSM-IMX676\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"3552\\u00d73552\",\"megapixels\":12.62,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":true,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/fsmgo-de-2\\\/fsmgo-with-imx676-sensor-27363\\\/\"},{\"sku\":\"26353\",\"code\":\"FSM-IMX327\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"1920\\u00d71080\",\"megapixels\":2.1,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx327-sensor-module-26353\\\/\"},{\"sku\":\"26369\",\"code\":\"FSM-IMX477\",\"format\":\"1\\\/3\\\"\",\"resolution\":\"4056\\u00d73040\",\"megapixels\":12.3,\"fps\":\"60 FPS\",\"proto\":\"mipi\",\"fsmgo\":false,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/framos-sensor-module\\\/fsm-imx477-sensor-module-26369\\\/\"},{\"sku\":\"28640\",\"code\":\"FSM-IMX900\",\"format\":\"1\\\/3\\\"\",\"res\":\"2064\\u00d71552\",\"megapixels\":3.2,\"fps\":\"125 FPS\",\"proto\":\"MIPI\",\"fsmgo\":true,\"url\":\"https:\\\/\\\/framos.com\\\/produkt\\\/module\\\/fsmgo-de-2\\\/fsmgo-with-imx900-sensor-28640\\\/\"}];\r\n  var MP_RANGES = [{\"label\":\"0.4\\u20132 MP\",\"url\":\"https:\\\/\\\/framos.com\\\/de\\\/produkte-dienstleistungen\\\/kameramodule\\\/0-4-2-mp-camera-modules\\\/\",\"minMP\":0,\"maxMP\":2.49},{\"label\":\"3\\u20135 MP\",\"url\":\"https:\\\/\\\/framos.com\\\/de\\\/produkte-dienstleistungen\\\/kameramodule\\\/3-5-mp-camera-modules\\\/\",\"minMP\":2.5,\"maxMP\":6.49},{\"label\":\"8 MP\",\"url\":\"https:\\\/\\\/framos.com\\\/de\\\/produkte-dienstleistungen\\\/kameramodule\\\/8-mp-camera-modules\\\/\",\"minMP\":6.5,\"maxMP\":10.49},{\"label\":\"12\\u201340 MP\",\"url\":\"https:\\\/\\\/framos.com\\\/de\\\/produkte-dienstleistungen\\\/kameramodule\\\/12-40-mp-camera-modules\\\/\",\"minMP\":10.5,\"maxMP\":44.99},{\"label\":\"50+ MP\",\"url\":\"https:\\\/\\\/framos.com\\\/de\\\/produkte-dienstleistungen\\\/kameramodule\\\/50mp-camera-modules\\\/\",\"minMP\":45,\"maxMP\":9999}];\r\n  var I18N = {\"fsmgo\":\"FSM:GO\",\"dev\":\"Dev Ecosystem\",\"dev_ecosystem\":\"Dev Ecosystem\",\"format\":\"Format\",\"sku\":\"SKU\",\"mp_range\":\"MP Range\",\"format_mp\":\"Format \\\/ MP\",\"code\":\"Code\",\"mp\":\"MP\",\"fps\":\"FPS\",\"proto\":\"Proto\",\"empty\":\"No products in this range yet\"};\r\n  var FORMATS = ['1.2\"', '2\/3\"', '1\/3\"'];\r\n  \r\n  \/\/ Current Range context dynamically detected by PHP (-1 equals Full Grid)\r\n  var CURRENT_RANGE_INDEX = null;\r\n\r\n  \/\/ \u2500\u2500 External Image Assets \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  var IMG_GO = 'https:\/\/framos.com\/wp-content\/themes\/framos\/images\/grid-fsmgo.png';\r\n  var IMG_DEV = 'https:\/\/framos.com\/wp-content\/themes\/framos\/images\/grid-fsm.png';\r\n\r\n  \/\/ \u2500\u2500 Tippy theme \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  var tippyStyle = document.createElement('style');\r\n  tippyStyle.textContent =\r\n    '.tippy-box[data-theme~=\"framos\"] { @apply bg-framosDarkBlue text-white font-mono text-xs p-1 rounded-md shadow-lg dark:bg-secondary100 dark:border dark:border-white\/10; }' +\r\n    '.tippy-box[data-theme~=\"framos\"] .tippy-arrow { @apply text-framosDarkBlue dark:text-secondary100; }' +\r\n    '.tippy-box[data-theme~=\"framos\"] .tippy-content { @apply py-2 px-2.5; }';\r\n  \/\/ Fallback if Tailwind @apply fails in inline styles:\r\n  tippyStyle.textContent +=\r\n    '.tippy-box[data-theme~=\"framos\"] { background-color: #1B2E41; color: white; font-family: ui-monospace, monospace; font-size: 12px; padding: 4px; border-radius: 6px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1); }' +\r\n    '.dark .tippy-box[data-theme~=\"framos\"] { background-color: #171b1e; border: 1px solid rgba(255,255,255,0.1); }' +\r\n    '.tippy-box[data-theme~=\"framos\"] .tippy-arrow { color: #1B2E41; }' +\r\n    '.dark .tippy-box[data-theme~=\"framos\"] .tippy-arrow { color: #171b1e; }' +\r\n    '.tippy-box[data-theme~=\"framos\"] .tippy-content { padding: 8px 10px; }';\r\n  document.head.appendChild(tippyStyle);\r\n\r\n  function tooltipContent(mod) {\r\n    return '<div class=\"font-bold text-[13px] mb-[2px]\">' + mod.code + '<\/div>' +\r\n      '<div class=\"text-primary100 font-bold\">' + mod.resolution + ' \u00b7 ' + mod.megapixels.toFixed(2) + ' ' + I18N.mp + '<\/div>' +\r\n      '<div class=\"opacity-90\">' + mod.fps + ' \u00b7 ' + mod.proto.toUpperCase() + '<\/div>' +\r\n      '<div class=\"opacity-60 mt-1 text-[10px]\">' + I18N.format + ': ' + mod.format + ' \u00b7 ' + I18N.sku + ': ' + mod.sku + '<\/div>' +\r\n      (mod.fsmgo ? '<div class=\"text-primary100 font-bold mt-1\">\u2605 ' + I18N.fsmgo + '<\/div>' : '');\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Mobile check \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  var mql = window.matchMedia('(max-width: 768px)');\r\n  function isMobile() { return mql.matches; }\r\n\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  \/\/ SHARED: build the inner matrix grid element\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  function buildGrid(filteredMPs, filteredData, showRangeBanners) {\r\n    var cellMap = {};\r\n    filteredData.forEach(function(m) {\r\n      var key = m.format + '|' + m.megapixels + '|' + m.fsmgo;\r\n      if (!cellMap[key]) cellMap[key] = [];\r\n      cellMap[key].push(m);\r\n    });\r\n\r\n    var colCount = filteredMPs.length;\r\n    var minWidth = showRangeBanners ? 900 : Math.max(300, colCount * 110 + 120);\r\n\r\n    var gridEl = document.createElement('div');\r\n    gridEl.className = 'grid border-l border-t border-framosDarkBlue\/10 dark:border-white\/10';\r\n    gridEl.style.gridTemplateColumns = '120px repeat(' + colCount + ', minmax(110px, 1fr))';\r\n    gridEl.style.minWidth = minWidth + 'px';\r\n\r\n    \/\/ Track cells per column for hover highlight\r\n    var colCells = {};\r\n    filteredMPs.forEach(function(mp) { colCells[mp] = []; });\r\n    var hoveredMP = null;\r\n\r\n    function setHovered(mp) {\r\n      if (hoveredMP === mp) return;\r\n      if (hoveredMP !== null) colCells[hoveredMP].forEach(function(c) { \r\n        c.classList.remove('bg-primary\/5', 'dark:bg-primary\/10'); \r\n      });\r\n      hoveredMP = mp;\r\n      if (mp !== null) colCells[mp].forEach(function(c) { \r\n        c.classList.add('bg-primary\/5', 'dark:bg-primary\/10'); \r\n      });\r\n    }\r\n\r\n    var cellBaseCls = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 p-1 flex flex-col gap-1.5 items-center min-h-[60px] transition-colors duration-150';\r\n    var labelBaseCls = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 p-1 flex flex-col gap-1.5 items-start min-h-[60px] transition-colors duration-150';\r\n\r\n    \/\/ \u2500\u2500 MP Range banner row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    if (showRangeBanners) {\r\n      var rangeSpans = MP_RANGES.map(function(range) {\r\n        var span = filteredMPs.filter(function(mp) { return mp > range.minMP && mp <= range.maxMP; }).length;\r\n        return { label: range.label, url: range.url, span: span };\r\n      }).filter(function(r) { return r.span > 0; });\r\n\r\n      var rangeCorner = document.createElement('div');\r\n      rangeCorner.className = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 bg-slate-100 dark:bg-secondary100 px-3 py-1.5 flex items-center min-h-0 sticky left-0 z-20';\r\n      var rcLbl = document.createElement('span');\r\n      rcLbl.className = 'text-[10px] text-framosDarkBlue\/50 dark:text-white\/50 uppercase tracking-[0.1em] font-bold font-mono';\r\n      rcLbl.textContent = I18N.mp_range;\r\n      rangeCorner.appendChild(rcLbl);\r\n      gridEl.appendChild(rangeCorner);\r\n\r\n      rangeSpans.forEach(function(range) {\r\n        var link = document.createElement('a');\r\n        link.className = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 bg-primary\/5 dark:bg-primary\/10 flex items-center justify-center gap-1.5 px-2 py-1.5 no-underline transition-colors duration-150 cursor-pointer hover:bg-primary\/10 dark:hover:bg-primary\/20 group';\r\n        link.href = range.url;\r\n        link.style.gridColumn = 'span ' + range.span;\r\n        var lbl = document.createElement('span');\r\n        lbl.className = 'font-mono text-[11px] font-bold text-primary whitespace-nowrap group-hover:underline';\r\n        lbl.textContent = range.label;\r\n        var arrow = document.createElement('span');\r\n        arrow.className = 'text-[11px] text-primary\/80';\r\n        arrow.textContent = '\u2192';\r\n        link.appendChild(lbl);\r\n        link.appendChild(arrow);\r\n        gridEl.appendChild(link);\r\n      });\r\n    } else {\r\n      var cornerDiv = document.createElement('div');\r\n      cornerDiv.className = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 bg-slate-100 dark:bg-secondary100 px-3 py-1.5 flex items-center min-h-0 sticky left-0 z-20';\r\n      var cLblSmall = document.createElement('span');\r\n      cLblSmall.className = 'text-[10px] text-framosDarkBlue\/50 dark:text-white\/50 uppercase tracking-[0.1em] font-bold font-mono';\r\n      cLblSmall.textContent = I18N.mp_range;\r\n      cornerDiv.appendChild(cLblSmall);\r\n      gridEl.appendChild(cornerDiv);\r\n\r\n      var rangeSpanDiv = document.createElement('div');\r\n      rangeSpanDiv.className = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 bg-primary\/5 dark:bg-primary\/10 flex items-center justify-center gap-1.5 px-2 py-1.5';\r\n      rangeSpanDiv.style.gridColumn = 'span ' + colCount;\r\n      var rLbl = document.createElement('span');\r\n      rLbl.className = 'font-mono text-[9px] font-bold text-primary whitespace-nowrap';\r\n      rLbl.textContent = buildGrid._currentRangeLabel || '';\r\n      rangeSpanDiv.appendChild(rLbl);\r\n      gridEl.appendChild(rangeSpanDiv);\r\n    }\r\n\r\n    \/\/ \u2500\u2500 Header row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    var corner = document.createElement('div');\r\n    corner.className = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 bg-slate-50 dark:bg-secondary100 flex flex-col items-start justify-center px-3 py-2 min-h-0 sticky left-0 z-20 transition-colors duration-150';\r\n    var cLbl = document.createElement('span');\r\n    cLbl.className = 'font-mono text-[9px] font-bold uppercase tracking-[0.1em] text-framosDarkBlue\/50 dark:text-white\/50';\r\n    cLbl.textContent = I18N.format_mp;\r\n    corner.appendChild(cLbl);\r\n    gridEl.appendChild(corner);\r\n\r\n    filteredMPs.forEach(function(mp) {\r\n      var hcell = document.createElement('div');\r\n      hcell.className = 'border-r border-b border-framosDarkBlue\/10 dark:border-white\/10 bg-slate-50 dark:bg-secondary100 flex flex-col items-center justify-center px-1 py-2 min-h-0 transition-colors duration-150';\r\n      hcell.innerHTML = '<span class=\"font-mono text-[9px] text-framosDarkBlue\/70 dark:text-white\/70 text-center leading-[1.3] font-bold\">' + (mp%1===0?mp.toFixed(0):mp.toFixed(2)) + '<br><span class=\"opacity-50\">' + I18N.mp + '<\/span><\/span>';\r\n      colCells[mp].push(hcell);\r\n      gridEl.appendChild(hcell);\r\n    });\r\n\r\n    \/\/ \u2500\u2500 Format bands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    FORMATS.forEach(function(format, fi) {\r\n      var isLast = fi === FORMATS.length - 1;\r\n      \r\n      \/\/ GO sub-row\r\n      var goLabel = document.createElement('div');\r\n      goLabel.className = labelBaseCls + ' justify-end [border-bottom-style:dashed] px-3 py-2 sticky left-0 z-10 bg-slate-50 dark:bg-secondary100';\r\n      goLabel.innerHTML = '<div class=\"font-mono text-[11px] font-bold text-framosDarkBlue\/80 dark:text-white\/80\">' + format + '<\/div><div class=\"font-mono text-[9px] font-bold uppercase tracking-[0.06em] text-primary\/80\">FSM:GO<\/div>';\r\n      gridEl.appendChild(goLabel);\r\n\r\n      filteredMPs.forEach(function(mp) {\r\n        var mods = cellMap[format + '|' + mp + '|true'] || [];\r\n        var cell = document.createElement('div');\r\n        cell.className = cellBaseCls + ' justify-end [border-bottom-style:dashed]';\r\n        mods.forEach(function(mod) { cell.appendChild(makeCard(mod, mp, setHovered)); });\r\n        colCells[mp].push(cell);\r\n        gridEl.appendChild(cell);\r\n      });\r\n\r\n      \/\/ DEV sub-row\r\n      var devLabel = document.createElement('div');\r\n      devLabel.className = labelBaseCls + ' justify-start px-3 py-2 sticky left-0 z-10 bg-slate-50 dark:bg-secondary100';\r\n      if (!isLast) devLabel.classList.add('border-b-2', 'border-framosDarkBlue\/20', 'dark:border-white\/20');\r\n      devLabel.innerHTML = '<div class=\"font-mono text-[8px] font-bold uppercase tracking-[0.06em] text-framosSkyBlue dark:text-framosSkyBlue\/80\">DEV ECOSYSTEM<\/div>';\r\n      gridEl.appendChild(devLabel);\r\n\r\n      filteredMPs.forEach(function(mp) {\r\n        var mods = cellMap[format + '|' + mp + '|false'] || [];\r\n        var cell = document.createElement('div');\r\n        cell.className = cellBaseCls + ' justify-start';\r\n        if (!isLast) cell.classList.add('border-b-2', 'border-framosDarkBlue\/20', 'dark:border-white\/20');\r\n        mods.forEach(function(mod) { cell.appendChild(makeCard(mod, mp, setHovered)); });\r\n        colCells[mp].push(cell);\r\n        gridEl.appendChild(cell);\r\n      });\r\n    });\r\n\r\n    return gridEl;\r\n  }\r\n\r\n  function makeCard(mod, mp, setHovered) {\r\n    var isGo = mod.fsmgo;\r\n    \r\n    var card = document.createElement('a');\r\n    card.href = mod.url;\r\n    \r\n    \/\/ Core Card Tailwind Utilities\r\n    card.className = 'relative w-full rounded px-2 pb-[5px] pt-[8px] cursor-pointer transition-all duration-150 font-mono box-border block hover:-translate-y-[1px] hover:shadow-[0_4px_12px_-4px_rgba(0,0,0,0.2)] hover:no-underline hover:z-20 ' +\r\n                     (isGo ? 'bg-primary text-white shadow-sm' \r\n                           : 'bg-framosSkyBlue\/40 border border-primary100 text-framosDarkBlue hover:bg-primary100 hover:text-framosDarkBlue dark:bg-framosDarkBlue\/60 dark:border-white\/10 dark:text-white dark:hover:bg-framosDarkBlue\/90 dark:hover:text-white');\r\n\r\n    var badge = document.createElement('span');\r\n    badge.className = 'absolute -top-2 right-1 text-[9px] px-1 py-[1px] rounded leading-[1.4] z-0 uppercase tracking-wide ' +\r\n                       (isGo ? 'bg-framosDarkBlue text-white' \r\n                             : 'bg-white\/85 text-framosDarkBlue border border-black\/5 dark:bg-secondary\/90 dark:text-white dark:border-white\/10');\r\n    badge.textContent = isGo ? I18N.fsmgo : I18N.dev;\r\n    card.appendChild(badge);\r\n\r\n    var inner = document.createElement('div');\r\n    inner.className = 'flex items-end justify-between gap-1 h-full text-gray-700 visited:text-gray-700';\r\n\r\n    var textBlock = document.createElement('div');\r\n    textBlock.className = 'flex-1 min-w-0 flex flex-col justify-end h-full pb-[2px] dark:text-gray-200';\r\n\r\n    var code = document.createElement('div');\r\n    \/\/ Using !text-white to force override WordPress theme's default anchor tag colors\r\n    code.className = 'text-[11px] font-bold whitespace-nowrap overflow-hidden text-ellipsis leading-[1.2]' + (isGo ? ' !text-white' : '');\r\n    code.textContent = mod.code;\r\n    textBlock.appendChild(code);\r\n\r\n    var res = document.createElement('div');\r\n    \/\/ Using !text-white here as well\r\n    res.className = 'text-[9px] mt-[1px] opacity-80 leading-none' + (isGo ? ' !text-white' : '');\r\n    res.textContent = mod.resolution;\r\n    textBlock.appendChild(res);\r\n\r\n    var img = document.createElement('img');\r\n    img.src = isGo ? IMG_GO : IMG_DEV;\r\n    img.alt = '';\r\n    img.className = 'w-[18px] h-[18px] shrink-0 opacity-80 block mb-[2px]';\r\n\r\n    inner.appendChild(textBlock);\r\n    inner.appendChild(img);\r\n    card.appendChild(inner);\r\n\r\n    tippy(card, {\r\n      content: tooltipContent(mod),\r\n      allowHTML: true, placement: 'top', animation: 'shift-away',\r\n      theme: 'framos', appendTo: function() { return document.body; },\r\n    });\r\n\r\n    card.addEventListener('mouseenter', function() { setHovered(mp); });\r\n    card.addEventListener('mouseleave', function() { setHovered(null); });\r\n\r\n    return card;\r\n  }\r\n\r\n  function makeLegend() {\r\n    var legend = document.createElement('div');\r\n    legend.className = 'flex items-center gap-5 text-[10px] font-mono text-framosDarkBlue\/70 dark:text-white\/70 mt-4 justify-end';\r\n    legend.innerHTML =\r\n      '<span><span class=\"inline-block w-3 h-3 rounded-sm bg-primary align-middle mr-1.5\"><\/span>' + I18N.fsmgo + '<\/span>' +\r\n      '<span><span class=\"inline-block w-3 h-3 rounded-sm bg-framosSkyBlue\/40 border border-primary100 dark:bg-framosDarkBlue\/60 dark:border-white\/20 align-middle mr-1.5\"><\/span>' + I18N.dev_ecosystem + '<\/span>';\r\n    return legend;\r\n  }\r\n\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  \/\/ FULL MATRIX GRID (overview page \u2014 no valid range detected)\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  function renderMatrix() {\r\n    var container = document.getElementById('framos-matrix-container-framos-grid-6abf6d8882b67');\r\n    container.innerHTML = '';\r\n\r\n    var uniqueMPs = [];\r\n    var seen = {};\r\n    DATA.forEach(function(m) {\r\n      if (!seen[m.megapixels]) { seen[m.megapixels] = true; uniqueMPs.push(m.megapixels); }\r\n    });\r\n    uniqueMPs.sort(function(a, b) { return a - b; });\r\n\r\n    var wrap = document.createElement('div');\r\n    wrap.className = 'w-full overflow-x-auto pb-4 framos-scrollbar';\r\n    container.appendChild(wrap);\r\n\r\n    wrap.appendChild(buildGrid(uniqueMPs, DATA, true));\r\n    wrap.appendChild(makeLegend());\r\n  }\r\n\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  \/\/ FILTERED RANGE GRID (landing page matched)\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  function renderFiltered(rangeIndex) {\r\n    var container = document.getElementById('framos-matrix-container-framos-grid-6abf6d8882b67');\r\n    container.innerHTML = '';\r\n\r\n    var range = MP_RANGES[rangeIndex];\r\n    var prevRange = rangeIndex > 0 ? MP_RANGES[rangeIndex - 1] : null;\r\n    var nextRange = rangeIndex < MP_RANGES.length - 1 ? MP_RANGES[rangeIndex + 1] : null;\r\n\r\n    var filteredMPs = [];\r\n    var mpSeen = {};\r\n    DATA.forEach(function(m) {\r\n      if (m.megapixels > range.minMP && m.megapixels <= range.maxMP && !mpSeen[m.megapixels]) {\r\n        mpSeen[m.megapixels] = true;\r\n        filteredMPs.push(m.megapixels);\r\n      }\r\n    });\r\n    filteredMPs.sort(function(a, b) { return a - b; });\r\n    var filteredData = DATA.filter(function(m) {\r\n      return m.megapixels > range.minMP && m.megapixels <= range.maxMP;\r\n    });\r\n\r\n    var navWrap = document.createElement('div');\r\n    navWrap.className = 'flex gap-2 items-stretch';\r\n    container.appendChild(navWrap);\r\n\r\n    var navBtnCls = 'group flex items-center justify-center w-9 shrink-0 self-stretch rounded-md border border-framosDarkBlue\/10 dark:border-white\/10 bg-slate-100 dark:bg-secondary100 no-underline transition-all duration-150 cursor-pointer hover:bg-primary\/10 hover:border-primary\/30';\r\n    var navSpanCls = 'text-[9px] font-mono font-bold text-primary\/70 whitespace-nowrap [writing-mode:vertical-rl] uppercase tracking-[0.05em] group-hover:text-primary';\r\n\r\n    \/\/ \u2190 Prev button\r\n    if (prevRange) {\r\n      var prevBtn = document.createElement('a');\r\n      prevBtn.className = navBtnCls;\r\n      prevBtn.href = prevRange.url;\r\n      prevBtn.title = '\u2190 ' + prevRange.label;\r\n      var pSpan = document.createElement('span');\r\n      pSpan.className = navSpanCls + ' rotate-180';\r\n      pSpan.textContent = '\u2190 ' + prevRange.label;\r\n      prevBtn.appendChild(pSpan);\r\n      navWrap.appendChild(prevBtn);\r\n    } else {\r\n      var prevSpacer = document.createElement('div');\r\n      prevSpacer.className = 'w-9 shrink-0';\r\n      navWrap.appendChild(prevSpacer);\r\n    }\r\n\r\n    \/\/ Grid wrap\r\n    var gridWrap = document.createElement('div');\r\n    gridWrap.className = 'flex-1 overflow-x-auto pb-4 framos-scrollbar';\r\n    navWrap.appendChild(gridWrap);\r\n\r\n    if (filteredMPs.length === 0) {\r\n      var empty = document.createElement('div');\r\n      empty.className = 'flex items-center justify-center min-h-[200px] border border-dashed border-framosDarkBlue\/20 dark:border-white\/20 rounded-md text-[13px] text-framosDarkBlue\/40 dark:text-white\/40 font-mono';\r\n      empty.textContent = I18N.empty;\r\n      gridWrap.appendChild(empty);\r\n    } else {\r\n      buildGrid._currentRangeLabel = range.label;\r\n      gridWrap.appendChild(buildGrid(filteredMPs, filteredData, false));\r\n      gridWrap.appendChild(makeLegend());\r\n    }\r\n\r\n    \/\/ \u2192 Next button\r\n    if (nextRange) {\r\n      var nextBtn = document.createElement('a');\r\n      nextBtn.className = navBtnCls;\r\n      nextBtn.href = nextRange.url;\r\n      nextBtn.title = nextRange.label + ' \u2192';\r\n      var nSpan = document.createElement('span');\r\n      nSpan.className = navSpanCls;\r\n      nSpan.textContent = nextRange.label + ' \u2192';\r\n      nextBtn.appendChild(nSpan);\r\n      navWrap.appendChild(nextBtn);\r\n    } else {\r\n      var nextSpacer = document.createElement('div');\r\n      nextSpacer.className = 'w-9 shrink-0';\r\n      navWrap.appendChild(nextSpacer);\r\n    }\r\n  }\r\n\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  \/\/ MOBILE TABLE\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  function renderMobileTable(filteredData) {\r\n    var data = filteredData || DATA;\r\n    var container = document.getElementById('framos-matrix-container-framos-grid-6abf6d8882b67');\r\n    container.innerHTML = '';\r\n    var sorted = data.slice().sort(function(a, b) { return a.megapixels - b.megapixels; });\r\n    \r\n    var tbl = document.createElement('table');\r\n    tbl.className = 'w-full border-collapse font-mono text-xs text-framosDarkBlue dark:text-white';\r\n    tbl.innerHTML = '<thead><tr>' +\r\n      '<th class=\"px-2.5 py-3 border-b border-framosDarkBlue\/10 dark:border-white\/10 text-left font-bold bg-slate-50 dark:bg-secondary100\">' + I18N.code + '<\/th>' +\r\n      '<th class=\"px-2.5 py-3 border-b border-framosDarkBlue\/10 dark:border-white\/10 text-left font-bold bg-slate-50 dark:bg-secondary100\">' + I18N.format + '<\/th>' +\r\n      '<th class=\"px-2.5 py-3 border-b border-framosDarkBlue\/10 dark:border-white\/10 text-left font-bold bg-slate-50 dark:bg-secondary100\">' + I18N.mp + '<\/th>' +\r\n      '<th class=\"px-2.5 py-3 border-b border-framosDarkBlue\/10 dark:border-white\/10 text-left font-bold bg-slate-50 dark:bg-secondary100\">' + I18N.fps + '<\/th>' +\r\n      '<th class=\"px-2.5 py-3 border-b border-framosDarkBlue\/10 dark:border-white\/10 text-left font-bold bg-slate-50 dark:bg-secondary100\">' + I18N.proto + '<\/th>' +\r\n      '<\/tr><\/thead><tbody>' +\r\n      sorted.map(function(m) {\r\n        var isGo = m.fsmgo;\r\n        \r\n        \/\/ Enhance row background for FSM:GO with framosSkyBlue tint\r\n        var rowClass = 'transition-colors duration-200 cursor-pointer ' + \r\n                       (isGo ? 'bg-framosSkyBlue\/30 hover:bg-framosSkyBlue\/50 dark:bg-primary\/20 dark:hover:bg-primary\/30' \r\n                             : 'hover:bg-primary\/5 dark:hover:bg-white\/5');\r\n                             \r\n        var tdClass = 'px-2.5 py-3 border-b border-framosDarkBlue\/10 dark:border-white\/10 text-left align-middle';\r\n        \r\n        \/\/ Build a proper FSM:GO badge instead of a star\r\n        var goBadge = isGo ? '<span class=\"inline-block bg-primary text-white text-[9px] px-1.5 py-[3px] rounded leading-none uppercase tracking-wider shadow-sm\">' + I18N.fsmgo + '<\/span>' : '';\r\n\r\n        \/\/ Wrap code & badge in a flex container so it doesn't break table boundaries on small devices\r\n        return '<tr class=\"' + rowClass + '\" onclick=\"window.location.href=\\'' + m.url + '\\'\">' +\r\n          '<td class=\"' + tdClass + ' font-bold\"><div class=\"flex flex-wrap items-center gap-1.5\"><span>' + m.code + '<\/span>' + goBadge + '<\/div><\/td>' +\r\n          '<td class=\"' + tdClass + '\">' + m.format + '<\/td>' +\r\n          '<td class=\"' + tdClass + '\">' + m.megapixels + '<\/td>' +\r\n          '<td class=\"' + tdClass + ' whitespace-nowrap\">' + m.fps + '<\/td>' +\r\n          '<td class=\"' + tdClass + ' uppercase\">' + m.proto + '<\/td>' +\r\n          '<\/tr>';\r\n      }).join('') + '<\/tbody>';\r\n    container.appendChild(tbl);\r\n  }\r\n\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  \/\/ INIT\r\n  \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  function init() {\r\n    if (isMobile()) {\r\n      if (CURRENT_RANGE_INDEX !== null) {\r\n        var range = MP_RANGES[CURRENT_RANGE_INDEX];\r\n        var filteredData = DATA.filter(function(m) {\r\n          return m.megapixels > range.minMP && m.megapixels <= range.maxMP;\r\n        });\r\n        renderMobileTable(filteredData);\r\n      } else {\r\n        renderMobileTable(null);\r\n      }\r\n    } else {\r\n      if (CURRENT_RANGE_INDEX !== null) {\r\n        renderFiltered(CURRENT_RANGE_INDEX);\r\n      } else {\r\n        renderMatrix();\r\n      }\r\n    }\r\n  }\r\n\r\n  mql.addEventListener('change', function() { init(); });\r\n  init();\r\n})();\r\n<\/script>\n<\/div><\/div>\n<div class=\"py-24 wp-block-framos-faqs\">\n  <h2 class=\"font-framos-light text-3xl lg:text-4xl leading-tight mb-6 text-framosDarkBlue dark:text-white text-center max-w-3xl mx-auto\">\n Faqs \u2013 FRAMOS Fsm:Go Kameramodule Und Entwicklungsprodukte <\/h2>\n \n  <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 max-w-4xl mx-auto text-center\">\n If you have any questions, please reach out to us. <\/p>\n \n <div class=\"faqs-wrapper mx-auto max-w-7xl pt-16 px-6\">\n    <div class=\"faq-item relative first:pt-0\">\n <h3 class=\"faq-question m-0!\">\n <button\n type=\"button\"\n class=\"flex w-full items-center justify-between text-left bg-transparent border-0 p-0 cursor-pointer faq-button\"\n >\n <span class=\"text-framosDarkBlue dark:text-white text-base font-semibold leading-7\">\n <strong>WIE EVALUIERE UND ERWEITERE ICH \u00dcBER FSM:GO KAMERAMODULE HINAUS?<\/strong> <\/span>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"size-6 close-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"size-6 hidden open-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/h3>\n\n <div class=\"mt-2 pr-12 overflow-hidden hidden faq-answer transition-all duration-300 ease-out\">\n <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 leading-7 m-0!\">\n FSM:GO Kameramodule decken die Anforderungen der meisten Embedded Vision Systeme ab und sollten bei der Auswahl zuerst ber\u00fccksichtigt werden. Sie erm\u00f6glichen einen schnellen und risikoarmen Weg zur Implementierung mit validierter Hardware und Software. <br><br>Wenn alternative Sensoren, Schnittstellen oder mechanische Konfigurationen erforderlich sind, erm\u00f6glichen die Extended Development Products eine Erweiterung \u00fcber FSM:GO hinaus \u2013 bei gleichbleibender Systemarchitektur. So sind weitergehende Anpassungen m\u00f6glich, ohne die Vorteile bew\u00e4hrter Referenzdesigns und langfristigen Supports zu verlieren.  <\/p>\n <\/div>\n <\/div>\n   <div class=\"faq-item relative\">\n <h3 class=\"faq-question m-0!\">\n <button\n type=\"button\"\n class=\"flex w-full items-center justify-between text-left bg-transparent border-0 p-0 cursor-pointer faq-button\"\n >\n <span class=\"text-framosDarkBlue dark:text-white text-base font-semibold leading-7\">\n <strong>WAS SIND PROCESSOR ADAPTER UND WIE UNTERST\u00dcTZEN SIE DIE SYSTEMINTEGRATION?<\/strong> <\/span>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"size-6 close-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"size-6 hidden open-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/h3>\n\n <div class=\"mt-2 pr-12 overflow-hidden hidden faq-answer transition-all duration-300 ease-out\">\n <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 leading-7 m-0!\">\n Processor Adapter erm\u00f6glichen die Anbindung von Kameramodulen an verschiedene Embedded Processing Plattformen. Sie adaptieren die standardisierte FRAMOS PixelMate\u2122 Schnittstelle auf prozessorspezifische Steckverbinder und Signalstrukturen und erm\u00f6glichen so fr\u00fchzeitig Zugriff auf Kameradaten und Systemsignale.<br \/> Nach Auswahl der Zielplattform kann derselbe Designansatz mit bew\u00e4hrten Referenzlayouts in ein Serienprodukt \u00fcberf\u00fchrt werden. So gelingt der \u00dcbergang von der Evaluierung zur Integration ohne Neuentwicklung der Kameraschnittstelle.   <\/p>\n <\/div>\n <\/div>\n   <div class=\"faq-item relative\">\n <h3 class=\"faq-question m-0!\">\n <button\n type=\"button\"\n class=\"flex w-full items-center justify-between text-left bg-transparent border-0 p-0 cursor-pointer faq-button\"\n >\n <span class=\"text-framosDarkBlue dark:text-white text-base font-semibold leading-7\">\n Welche Rolle Spielen Functional Adapter F\u00fcr Entwicklungsprodukte? <\/span>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"size-6 close-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"size-6 hidden open-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/h3>\n\n <div class=\"mt-2 pr-12 overflow-hidden hidden faq-answer transition-all duration-300 ease-out\">\n <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 leading-7 m-0!\">\n Functional Adapter erweitern die PixelMate\u2122 Schnittstelle f\u00fcr unterschiedliche Anforderungen an Verkabelung, Routing und Mechanik. Sie erm\u00f6glichen Flexibilit\u00e4t bei Kabell\u00e4nge, Biegeradius, Robustheit und Systemlayout bei gleichzeitig hoher Signalintegrit\u00e4t. <br><br>Diese Adapter k\u00f6nnen direkt im Entwicklungssystem eingesetzt oder als Referenz f\u00fcr kundenspezifische Designs genutzt werden. Dadurch lassen sich Kamerapositionierung und Konnektivit\u00e4t an reale Systemanforderungen anpassen \u2013 ohne Performanceverlust.  <\/p>\n <\/div>\n <\/div>\n   <div class=\"faq-item relative\">\n <h3 class=\"faq-question m-0!\">\n <button\n type=\"button\"\n class=\"flex w-full items-center justify-between text-left bg-transparent border-0 p-0 cursor-pointer faq-button\"\n >\n <span class=\"text-framosDarkBlue dark:text-white text-base font-semibold leading-7\">\n <strong>WELCHE SOFTWAREUNTERST\u00dcTZUNG IST IN FSM:GO UND ENTWICKLUNGSPRODUKTEN ENTHALTEN?<\/strong> <\/span>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"size-6 close-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"size-6 hidden open-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/h3>\n\n <div class=\"mt-2 pr-12 overflow-hidden hidden faq-answer transition-all duration-300 ease-out\">\n <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 leading-7 m-0!\">\n FSM:GO Kameramodule enthalten alle Softwarekomponenten f\u00fcr den Betrieb als vollst\u00e4ndiges Kamerasystem. Dazu geh\u00f6ren Sensortreiber, plattformspezifische Device Tree Konfigurationen sowie Image Signal Processor Tuning f\u00fcr optimierte Bildqualit\u00e4t ab dem ersten Einsatz. <br><br>NVIDIA Jetson, NXP, Raspberry Pi und Qualcomm Plattformen werden vollst\u00e4ndig unterst\u00fctzt \u2013 mit gepflegten Open-Source-Treibern und ISP Konfigurationen auf GitHub als konsistente Softwarebasis f\u00fcr f\u00fchrende Embedded Compute Umgebungen. <\/p>\n <\/div>\n <\/div>\n   <div class=\"faq-item relative\">\n <h3 class=\"faq-question m-0!\">\n <button\n type=\"button\"\n class=\"flex w-full items-center justify-between text-left bg-transparent border-0 p-0 cursor-pointer faq-button\"\n >\n <span class=\"text-framosDarkBlue dark:text-white text-base font-semibold leading-7\">\n <strong>WIE UNTERST\u00dcTZT FRAMOS CUSTOMISIERUNG UND SKALIERUNG?<\/strong> <\/span>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"size-6 close-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"size-6 hidden open-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/h3>\n\n <div class=\"mt-2 pr-12 overflow-hidden hidden faq-answer transition-all duration-300 ease-out\">\n <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 leading-7 m-0!\">\n FSM:GO bietet eine stabile, serienreife Basis f\u00fcr schnelle Umsetzung und planbare Fertigung. Die Extended Development Products sind auf Test, Evaluierung und fr\u00fche Entwicklungsphasen ausgelegt. \u00dcber beide Produktlinien hinweg unterst\u00fctzt FRAMOS Anpassungen in Hardware, Software, Optik und Mechanik \u2013 bei gleichzeitigem Fokus auf Skalierbarkeit und Lifecycle-Anforderungen.   <\/p>\n <\/div>\n <\/div>\n   <div class=\"faq-item relative last:pb-0\">\n <h3 class=\"faq-question m-0!\">\n <button\n type=\"button\"\n class=\"flex w-full items-center justify-between text-left bg-transparent border-0 p-0 cursor-pointer faq-button\"\n >\n <span class=\"text-framosDarkBlue dark:text-white text-base font-semibold leading-7\">\n <strong>WARUM MIT FSM:GO KAMERAMODULEN STARTEN?<\/strong> <\/span>\n <span class=\"ml-6 flex h-7 items-center\">\n <svg class=\"size-6 close-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m6-6H6\" \/>\n <\/svg>\n <svg class=\"size-6 hidden open-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 12H6\" \/>\n <\/svg>\n <\/span>\n <\/button>\n <\/h3>\n\n <div class=\"mt-2 pr-12 overflow-hidden hidden faq-answer transition-all duration-300 ease-out\">\n <p class=\"text-base leading-7 mb-4 text-gray-600 dark:text-gray-200 leading-7 m-0!\">\n FSM:GO Kameramodule reduzieren Integrationsrisiken und beschleunigen die Umsetzung. Sie vereinen validierte Sensoren und Optiken, standardisierte mechanische und elektrische Schnittstellen sowie plattformfertige Software in einer sofort einsetzbaren L\u00f6sung.  <\/p>\n <\/div>\n <\/div>\n   <\/div>\n<\/div>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"<strong>WIE EVALUIERE UND ERWEITERE ICH \\u00dcBER FSM:GO KAMERAMODULE HINAUS?<\\\/strong>\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"FSM:GO Kameramodule decken die Anforderungen der meisten Embedded Vision Systeme ab und sollten bei der Auswahl zuerst ber\\u00fccksichtigt werden. Sie erm\\u00f6glichen einen schnellen und risikoarmen Weg zur Implementierung mit validierter Hardware und Software. <br><br>Wenn alternative Sensoren, Schnittstellen oder mechanische Konfigurationen erforderlich sind, erm\\u00f6glichen die Extended Development Products eine Erweiterung \\u00fcber FSM:GO hinaus \\u2013 bei gleichbleibender Systemarchitektur. So sind weitergehende Anpassungen m\\u00f6glich, ohne die Vorteile bew\\u00e4hrter Referenzdesigns und langfristigen Supports zu verlieren. \"}},{\"@type\":\"Question\",\"name\":\"<strong>WAS SIND PROCESSOR ADAPTER UND WIE UNTERST\\u00dcTZEN SIE DIE SYSTEMINTEGRATION?<\\\/strong>\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Processor Adapter erm\\u00f6glichen die Anbindung von Kameramodulen an verschiedene Embedded Processing Plattformen. Sie adaptieren die standardisierte FRAMOS PixelMate\\u2122 Schnittstelle auf prozessorspezifische Steckverbinder und Signalstrukturen und erm\\u00f6glichen so fr\\u00fchzeitig Zugriff auf Kameradaten und Systemsignale.<br\\\/> Nach Auswahl der Zielplattform kann derselbe Designansatz mit bew\\u00e4hrten Referenzlayouts in ein Serienprodukt \\u00fcberf\\u00fchrt werden. So gelingt der \\u00dcbergang von der Evaluierung zur Integration ohne Neuentwicklung der Kameraschnittstelle.  \"}},{\"@type\":\"Question\",\"name\":\"Welche Rolle Spielen Functional Adapter F\\u00fcr Entwicklungsprodukte?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Functional Adapter erweitern die PixelMate\\u2122 Schnittstelle f\\u00fcr unterschiedliche Anforderungen an Verkabelung, Routing und Mechanik. Sie erm\\u00f6glichen Flexibilit\\u00e4t bei Kabell\\u00e4nge, Biegeradius, Robustheit und Systemlayout bei gleichzeitig hoher Signalintegrit\\u00e4t. <br><br>Diese Adapter k\\u00f6nnen direkt im Entwicklungssystem eingesetzt oder als Referenz f\\u00fcr kundenspezifische Designs genutzt werden. Dadurch lassen sich Kamerapositionierung und Konnektivit\\u00e4t an reale Systemanforderungen anpassen \\u2013 ohne Performanceverlust. \"}},{\"@type\":\"Question\",\"name\":\"<strong>WELCHE SOFTWAREUNTERST\\u00dcTZUNG IST IN FSM:GO UND ENTWICKLUNGSPRODUKTEN ENTHALTEN?<\\\/strong>\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"FSM:GO Kameramodule enthalten alle Softwarekomponenten f\\u00fcr den Betrieb als vollst\\u00e4ndiges Kamerasystem. Dazu geh\\u00f6ren Sensortreiber, plattformspezifische Device Tree Konfigurationen sowie Image Signal Processor Tuning f\\u00fcr optimierte Bildqualit\\u00e4t ab dem ersten Einsatz. <br><br>NVIDIA Jetson, NXP, Raspberry Pi und Qualcomm Plattformen werden vollst\\u00e4ndig unterst\\u00fctzt \\u2013 mit gepflegten Open-Source-Treibern und ISP Konfigurationen auf GitHub als konsistente Softwarebasis f\\u00fcr f\\u00fchrende Embedded Compute Umgebungen.\"}},{\"@type\":\"Question\",\"name\":\"<strong>WIE UNTERST\\u00dcTZT FRAMOS CUSTOMISIERUNG UND SKALIERUNG?<\\\/strong>\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"FSM:GO bietet eine stabile, serienreife Basis f\\u00fcr schnelle Umsetzung und planbare Fertigung. Die Extended Development Products sind auf Test, Evaluierung und fr\\u00fche Entwicklungsphasen ausgelegt. \\u00dcber beide Produktlinien hinweg unterst\\u00fctzt FRAMOS Anpassungen in Hardware, Software, Optik und Mechanik \\u2013 bei gleichzeitigem Fokus auf Skalierbarkeit und Lifecycle-Anforderungen.  \"}},{\"@type\":\"Question\",\"name\":\"<strong>WARUM MIT FSM:GO KAMERAMODULEN STARTEN?<\\\/strong>\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"FSM:GO Kameramodule reduzieren Integrationsrisiken und beschleunigen die Umsetzung. Sie vereinen validierte Sensoren und Optiken, standardisierte mechanische und elektrische Schnittstellen sowie plattformfertige Software in einer sofort einsetzbaren L\\u00f6sung. \"}}]}<\/script>","protected":false},"excerpt":{"rendered":"<p>DAS PASSENDE KAMERAMODUL F\u00dcR IHRE ANWENDUNG FINDEN In Europa entwickelt und gefertigt, bieten FRAMOS Kameramodule zuverl\u00e4ssige und konsistente Performance \u00fcber eine breite Auswahl an Aufl\u00f6sungen und Formaten f\u00fcr moderne Embedded [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":10742,"parent":11828,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"camera-modules-template.php","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-11998","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/pages\/11998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/comments?post=11998"}],"version-history":[{"count":3,"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/pages\/11998\/revisions"}],"predecessor-version":[{"id":28835,"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/pages\/11998\/revisions\/28835"}],"up":[{"embeddable":true,"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/pages\/11828"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/media\/10742"}],"wp:attachment":[{"href":"https:\/\/framos.com\/de\/wp-json\/wp\/v2\/media?parent=11998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}