{
  "version": 3,
  "sources": ["/cdn/shop/t/107/assets/panel-led-v4.ui.js?fs1rr51=20261008r1"],
  "sourcesContent": ["/* =========================================================\r\n   PANEL LED V4 \u2014 P46 LITE ALT03 COMPACT CYAN ARROW\r\n   DE\u011E\u0130\u015EECEK DOSYA:\r\n   assets/panel-led-v4.ui.js\r\n\r\n   KAYNAK ZEM\u0130N:\r\n   Kullan\u0131c\u0131n\u0131n y\u00FCkledi\u011Fi m\u00FCh\u00FCrl\u00FC final assets/panel-led-v4.ui.js\r\n\r\n   UYGULAMA:\r\n   Bu dosyadaki kodun TAMAMI, Shopify theme i\u00E7indeki\r\n   assets/panel-led-v4.ui.js dosyas\u0131n\u0131n tamam\u0131n\u0131n yerine yaz\u0131lacakt\u0131r.\r\n\r\n   KAPSAM:\r\n   - Sadece \u00FCr\u00FCn havuzu ana g\u00F6rselleri product.images[0-3] slider.\r\n   - \u00DCr\u00FCn a\u00E7\u0131klamas\u0131/CDN g\u00F6rseli yok.\r\n   - Detay G\u00F6rselleri akordeonu yok.\r\n   - Lightbox yok.\r\n   ========================================================= */\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P12-5C-R1 SIDE RAIL DOUBLE CHEVRON STICKY BA\u015EA D\u00D6N\r\n   M\u00FCh\u00FCr aday\u0131:\r\n   PANEL-V4-P12-5C-R1-UI-SIDE-RAIL-DOUBLE-CHEVRON-STICKY-BASA-DON-SAFE\r\n\r\n   Ba\u011Fl\u0131 oldu\u011Fu temel:\r\n   PANEL-V4-P12-5C-UI-RESPONSIVE-WRAP-SCROLL-STICKY-BASA-DON-POLISH-SAFE\r\n\r\n   Tasar\u0131m karar\u0131:\r\n   - Ana yap\u0131: ALT-02 Side Rail\r\n   - Ok/i\u015Faret: ALT-01 Double Chevron\r\n   - Signal bars animasyon yok\r\n\r\n   Davran\u0131\u015F:\r\n   - Kar\u015F\u0131la\u015Ft\u0131rma yap\u0131lmadan g\u00F6r\u00FCnmez.\r\n   - 14 Kriterli Teknik F/P Analizi ba\u015Flamadan g\u00F6r\u00FCnmez.\r\n   - FP14 ba\u015Flang\u0131c\u0131ndan sonra 0\u2192260px aral\u0131\u011F\u0131nda yava\u015F belirginle\u015Fir.\r\n   - Masa\u00FCst\u00FCnde sa\u011F kenar side rail, mobilde yatay kaps\u00FCl davran\u0131\u015F\u0131.\r\n   - T\u0131klan\u0131nca panel/motor ba\u015F\u0131na smooth scroll yapar.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  if (window.GDX_PANEL_LED_V4_UI_READY) return;\r\n  window.GDX_PANEL_LED_V4_UI_READY = true;\r\n\r\n  var CONFIG = window.GDX_PANEL_LED_V4_CONFIG || {};\r\n  var API = window.GDX_PANEL_LED_V4;\r\n  var UI_VERSION = \"PANEL-V4-ETAP2-R2D-REV2-LANE-AND-CANONICAL-SORT-V1\";\r\n\r\n  function fs1rR5DeepLinkIntentPresent() {\r\n    var keys = [\r\n      \"gdx_share\",\r\n      \"gdx_panel_key\",\r\n      \"gdx_panel_ref\",\r\n      \"gdx_panel_purpose\",\r\n      \"gdx_panel_sub\",\r\n      \"gdx_panel_setup_variant\",\r\n      \"gdx_panel_alt_mode\",\r\n      \"nora_share\",\r\n      \"nora_setup\"\r\n    ];\r\n    try {\r\n      var url = new URL(window.location.href);\r\n      return keys.some(function (key) {\r\n        return !!String(url.searchParams.get(key) || \"\").trim();\r\n      });\r\n    } catch (ignore) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  var fs1rR5InitialRestoreIntent =\r\n    fs1rR5DeepLinkIntentPresent();\r\n\r\n  var uiState = {\r\n  opened: false,\r\n\r\n  /* P2-C-R6-R3.7 \u2014 single canonical comparison selection owner.\r\n     TOP3 and Product Pool both write to these same two slots. */\r\n  activeSlot: 1,\r\n  selected: { 1: null, 2: null },\r\n  compareSelectionSource: { 1: \"\", 2: \"\" },\r\n\r\n  /* Legacy compatibility mirror only. No independent selection ownership. */\r\n  poolActiveSlot: 1,\r\n  poolSelected: { 1: null, 2: null },\r\n  poolCompareResult: null,\r\n  poolCompareRenderedAt: \"\",\r\n  resultSource: \"TOP3\",\r\n\r\n  filter: \"all\",\r\n  query: \"\",\r\n  poolSort: \"PURPOSE\",\r\n  purchaseLane: \"ALL\",\r\n  lastRenderCount: 0,\r\n  compareResult: null,\r\n  compareProfileKey: \"general\",\r\n  compareRenderedAt: \"\",\r\n  recommendFamilyKey: \"content_creation\",\r\n  recommendScenarioKey: \"\",\r\n  recommendationResult: null,\r\n  recommendationExpandedKey: \"\",\r\n  recommendationRenderedAt: \"\",\r\n\r\n  /* FS1R-R5 \u2014 Decision-first / deferred recommendation activation.\r\n     Fresh motor entry stays EMPTY until explicit Decision Focus apply.\r\n     Deep-link/share restore may bypass this gate. */\r\n  decisionActivated: fs1rR5InitialRestoreIntent,\r\n  decisionActivationSource: fs1rR5InitialRestoreIntent ? \"DEEP_LINK_RESTORE\" : \"\",\r\n  decisionActivationCount: 0,\r\n  decisionDeactivationCount: 0,\r\n  deferredRenderCount: 0,\r\n  heavyRenderBlockedCount: 0,\r\n  preActivationProductCardMax: 0,\r\n  preActivationRecommendationCardMax: 0,\r\n  apiLoadedBeforeActivation: false,\r\n  apiLoadingBeforeActivation: false,\r\n  lastDecisionGateReason: \"BOOT\"\r\n};\r\n\r\n  function ready(fn) {\r\n    if (document.readyState === \"loading\") {\r\n      document.addEventListener(\"DOMContentLoaded\", fn, { once: true });\r\n    } else {\r\n      fn();\r\n    }\r\n  }\r\n\r\n  function root() { return document.getElementById(\"gdx-panel-led-v4-root\"); }\r\n  function shell() { return document.getElementById(\"gdxPanelV4Shell\"); }\r\n  function grid() { return document.getElementById(\"gdxPanelV4ProductGrid\"); }\r\n  function statusEl() { return document.getElementById(\"gdxPanelV4DataStatus\"); }\r\n  function countEl() { return document.getElementById(\"gdxPanelV4DataCount\"); }\r\n  function previewEl() { return document.getElementById(\"gdxPanelV4DataPreview\"); }\r\n  function resultEl() { return document.getElementById(\"gdxPanelV4ResultPreview\"); }\r\n  \r\n function placeRecommendationAfterR28Selection(el) {\r\n  el = el || document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n\r\n  var selection =\r\n    document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n  var sh = shell();\r\n\r\n  /* R3.10 \u2014 landing leak guard.\r\n     Recommendation may only follow R28 when R28 itself is inside the motor shell. */\r\n  if (!el || !selection || !selection.parentNode || !sh || !sh.contains(selection)) return false;\r\n\r\n  if (selection.nextElementSibling !== el) {\r\n    selection.parentNode.insertBefore(el, selection.nextSibling);\r\n  }\r\n\r\n  el.setAttribute(\r\n    \"data-gdx-panel-reco-placement\",\r\n    \"after-r28-selection-before-product-pool\"\r\n  );\r\n  el.setAttribute(\"data-gdx-panel-r310-shell-contained\", \"1\");\r\n\r\n  return sh.contains(el) && selection.nextElementSibling === el;\r\n}\r\n\r\nwindow.GDX_PANEL_V4_PLACE_RECOMMENDATION_AFTER_R28 =\r\n  placeRecommendationAfterR28Selection;\r\n\r\n function recommendationEl() {\r\n  var existing =\r\n    document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n\r\n  if (existing) {\r\n    placeRecommendationAfterR28Selection(existing);\r\n    return existing;\r\n  }\r\n\r\n  var el = document.createElement(\"div\");\r\n  el.id = \"gdxPanelV4RecommendationPreview\";\r\n  el.className = \"gdx-panel-v4-reco-mount\";\r\n\r\n  var selection =\r\n    document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n\r\n  if (selection && selection.parentNode) {\r\n    selection.parentNode.insertBefore(el, selection.nextSibling);\r\n    placeRecommendationAfterR28Selection(el);\r\n    return el;\r\n  }\r\n\r\n  var result = resultEl();\r\n  if (!result || !result.parentNode) return null;\r\n\r\n  result.parentNode.insertBefore(el, result.nextSibling);\r\n  return el;\r\n}\r\n\r\n  /* =========================================================\r\n     PANEL LED V4 \u2014 P16-0 COMPACT COMMAND PANEL APPLICATION\r\n     M\u00FCh\u00FCr aday\u0131:\r\n     PANEL-V4-P16-0-COMPACT-COMMAND-PANEL-APPLICATION-SAFE\r\n\r\n     Se\u00E7ilen \u00F6nizleme:\r\n     ALT 2 \u2014 Kompakt Komut Paneli\r\n\r\n     Ama\u00E7:\r\n     - Motor \u00FCst\u00FCn\u00FC uzatmadan h\u0131zl\u0131 ba\u015Flang\u0131\u00E7 y\u00F6nlendirmesi eklemek.\r\n     - \u00D6neri / \u00FCr\u00FCn havuzu / kar\u015F\u0131la\u015Ft\u0131rma ak\u0131\u015F\u0131na k\u0131sa komut paneliyle ge\u00E7i\u015F sa\u011Flamak.\r\n     - Data / compare / recommender / commerce / share core logic'e dokunmamak.\r\n     ========================================================= */\r\n\r\n  function ensureP16CompactCommandPanel() {\r\n    var existing = document.getElementById(\"gdxPanelV4P16CompactCommandPanel\");\r\n    if (existing && existing.parentNode) {\r\n      existing.parentNode.removeChild(existing);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function markP16CompactFocus(target) {\r\n    if (!target) return;\r\n\r\n    var r = root();\r\n    if (r) {\r\n      Array.prototype.slice.call(r.querySelectorAll(\"[data-gdx-panel-p16-focus='1']\")).forEach(function (el) {\r\n        el.removeAttribute(\"data-gdx-panel-p16-focus\");\r\n      });\r\n    }\r\n\r\n    target.setAttribute(\"data-gdx-panel-p16-focus\", \"1\");\r\n\r\n    window.setTimeout(function () {\r\n      if (target) target.removeAttribute(\"data-gdx-panel-p16-focus\");\r\n    }, 1450);\r\n  }\r\n\r\n  function scrollP16CompactElement(target, offset) {\r\n    if (!target) return false;\r\n\r\n    var panel = getPanelScrollTarget();\r\n    offset = Number(offset || 18);\r\n\r\n    if (panel && panel.contains(target)) {\r\n      var panelRect = panel.getBoundingClientRect();\r\n      var targetRect = target.getBoundingClientRect();\r\n      var nextTop = (panel.scrollTop || 0) + (targetRect.top - panelRect.top) - offset;\r\n\r\n      if (typeof panel.scrollTo === \"function\") {\r\n        panel.scrollTo({ top: Math.max(0, nextTop), behavior: \"smooth\" });\r\n      } else {\r\n        panel.scrollTop = Math.max(0, nextTop);\r\n      }\r\n\r\n      markP16CompactFocus(target);\r\n      return true;\r\n    }\r\n\r\n    if (target.scrollIntoView) {\r\n      target.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n      markP16CompactFocus(target);\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  function findP16CompactCompareTarget() {\r\n    var r = root();\r\n    if (!r) return null;\r\n\r\n    return (\r\n      r.querySelector(\".gdx-panel-v4-slot-grid\") ||\r\n      r.querySelector(\".gdx-panel-v4-selection-wrap\") ||\r\n      document.getElementById(\"gdxPanelV4ProductGrid\")\r\n    );\r\n  }\r\n\r\n  function scrollP16CompactTarget(key) {\r\n    key = String(key || \"\");\r\n\r\n    var target = null;\r\n    var offset = 18;\r\n\r\n    if (key === \"recommendation\") {\r\n      renderRecommendationPanel();\r\n      target = recommendationEl();\r\n      offset = 18;\r\n    }\r\n\r\n    if (key === \"selection\") {\r\n      target = findP16CompactCompareTarget();\r\n      offset = 18;\r\n    }\r\n\r\n    if (key === \"products\") {\r\n      target = grid();\r\n      offset = 18;\r\n    }\r\n\r\n    if (!target && key === \"recommendation\") {\r\n      window.setTimeout(function () {\r\n        scrollP16CompactElement(recommendationEl(), 18);\r\n      }, 180);\r\n      return true;\r\n    }\r\n\r\n    if (!target && key === \"selection\") {\r\n      window.setTimeout(function () {\r\n        scrollP16CompactElement(findP16CompactCompareTarget(), 18);\r\n      }, 180);\r\n      return true;\r\n    }\r\n\r\n    return scrollP16CompactElement(target, offset);\r\n  }\r\n\r\n\r\n    /* =========================================================\r\n     PANEL LED V4 \u2014 P10-A1 COMPARE ACTION BAR / RESET FLOW\r\n     M\u00FCh\u00FCr aday\u0131:\r\n     PANEL-V4-P10-A1-COMPARE-ACTION-BAR-AND-RESET-FLOW-SAFE\r\n\r\n     Ama\u00E7:\r\n     - Mobilde sticky compare dock \u00FCretmek.\r\n     - Masa\u00FCst\u00FCnde \u00FCr\u00FCn havuzu alt\u0131nda ikinci aksiyon bar\u0131 \u00FCretmek.\r\n     - T\u00FCm compare butonlar\u0131n\u0131 ayn\u0131 g\u00FCvenli compare fonksiyonuna ba\u011Flamak.\r\n     - \"Yeni Kar\u015F\u0131la\u015Ft\u0131rma Yap\" ile se\u00E7im, sonu\u00E7, commerce, share ve PNG alanlar\u0131n\u0131 temizlemek.\r\n     ========================================================= */\r\n\r\n  function isCompareReady() {\r\n    return !!(uiState.selected[1] && uiState.selected[2]);\r\n  }\r\n\r\n  function getPanelScrollTarget() {\r\n    return document.querySelector(\"#gdxPanelV4Shell .gdx-panel-v4-panel\");\r\n  }\r\n\r\n  function scrollPanelToStart() {\r\n    var panel = getPanelScrollTarget();\r\n\r\n    if (panel && typeof panel.scrollTo === \"function\") {\r\n      panel.scrollTo({ top: 0, behavior: \"smooth\" });\r\n      return;\r\n    }\r\n\r\n    if (panel) panel.scrollTop = 0;\r\n  }\r\n\r\n  function clearGeneratedMounts() {\r\n    [\r\n      \"gdxPanelV4CommercePreview\",\r\n      \"gdxPanelV4SharePreview\",\r\n      \"gdxPanelV4ShareCardPreview\"\r\n    ].forEach(function (id) {\r\n      var el = document.getElementById(id);\r\n      if (!el) return;\r\n\r\n      el.hidden = true;\r\n      el.innerHTML = \"\";\r\n    });\r\n  }\r\n\r\n  function requestExternalPanelRenders() {\r\n    if (window.GDX_PANEL_LED_V4_COMMERCE) {\r\n      if (typeof window.GDX_PANEL_LED_V4_COMMERCE.schedule === \"function\") {\r\n        window.GDX_PANEL_LED_V4_COMMERCE.schedule();\r\n      } else if (typeof window.GDX_PANEL_LED_V4_COMMERCE.render === \"function\") {\r\n        window.setTimeout(window.GDX_PANEL_LED_V4_COMMERCE.render, 120);\r\n      }\r\n    }\r\n\r\n    [120, 360, 900].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        if (window.GDX_PANEL_LED_V4_SHARE && typeof window.GDX_PANEL_LED_V4_SHARE.render === \"function\") {\r\n          window.GDX_PANEL_LED_V4_SHARE.render();\r\n        }\r\n\r\n        if (window.GDX_PANEL_LED_V4_SHARE_CARD && typeof window.GDX_PANEL_LED_V4_SHARE_CARD.render === \"function\") {\r\n          window.GDX_PANEL_LED_V4_SHARE_CARD.render();\r\n        }\r\n      }, delay);\r\n    });\r\n  }\r\n\r\n\r\n  /* =========================================================\r\n     P2-C-R6-R3.2 \u2014 RESULT SURFACE VISIBILITY OWNER\r\n\r\n     Product Pool selection alone never hides TOP3.\r\n     Only a successful active Pool F/P result suppresses the TOP3\r\n     recommendation and the R11 \"Top3 sonucunu payla\u015F\" presentation.\r\n     Their DOM/state are preserved and restored on Pool result close.\r\n     ========================================================= */\r\n  function poolResultViewActive() {\r\n    /* R3.7: Product Pool no longer owns an independent result view. */\r\n    return false;\r\n  }\r\n\r\n  function syncCompareSurfaceVisibility(reason) {\r\n    var root = document.getElementById(\"gdx-panel-led-v4-root\");\r\n    if (!root) return false;\r\n\r\n    var recommendation = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n\r\n    /* TOP3 recommendations are never suppressed by detailed F/P comparison. */\r\n    if (recommendation) {\r\n      recommendation.removeAttribute(\"aria-hidden\");\r\n      recommendation.removeAttribute(\"data-gdx-pool-result-suppressed\");\r\n    }\r\n\r\n    root.setAttribute(\"data-gdx-panel-active-result-view\", \"TOP3\");\r\n    root.setAttribute(\"data-gdx-panel-pool-result-active\", \"0\");\r\n    root.setAttribute(\r\n      \"data-gdx-panel-unified-compare-result-active\",\r\n      uiState.compareResult && uiState.compareResult.ok === true ? \"1\" : \"0\"\r\n    );\r\n\r\n    try {\r\n      document.dispatchEvent(new CustomEvent(\"gdx-panel-v4-result-view\", {\r\n        detail: {\r\n          reason: String(reason || \"\"),\r\n          activeView: \"TOP3\",\r\n          poolResultActive: false,\r\n          unifiedCompare: true\r\n        }\r\n      }));\r\n    } catch (_) {}\r\n\r\n    return false;\r\n  }\r\n\r\n  function canonicalProductByKey(key) {\r\n    key = String(key || \"\").trim();\r\n    if (!key || !API || !API.state || !Array.isArray(API.state.products)) return null;\r\n\r\n    return API.state.products.find(function (item) {\r\n      return String(item && (item.key || item.handle || item.id) || \"\").trim() === key;\r\n    }) || null;\r\n  }\r\n\r\n  function unifiedCompareCount() {\r\n    return [uiState.selected[1], uiState.selected[2]].filter(Boolean).length;\r\n  }\r\n\r\n  function syncLegacyPoolSelectionMirror() {\r\n    uiState.poolSelected[1] = uiState.selected[1] || null;\r\n    uiState.poolSelected[2] = uiState.selected[2] || null;\r\n    uiState.poolActiveSlot = uiState.activeSlot;\r\n    uiState.poolCompareResult = uiState.compareResult || null;\r\n    uiState.poolCompareRenderedAt = uiState.compareRenderedAt || \"\";\r\n  }\r\n\r\n  function dispatchUnifiedCompareState(reason) {\r\n    syncLegacyPoolSelectionMirror();\r\n\r\n    var detail = {\r\n      reason: String(reason || \"\"),\r\n      selectedCount: unifiedCompareCount(),\r\n      resultReady: !!(uiState.compareResult && uiState.compareResult.ok),\r\n      sources: {\r\n        1: uiState.compareSelectionSource[1] || \"\",\r\n        2: uiState.compareSelectionSource[2] || \"\"\r\n      }\r\n    };\r\n\r\n    try {\r\n      document.dispatchEvent(new CustomEvent(\"gdx-panel-v4-unified-compare-state\", {\r\n        detail: detail\r\n      }));\r\n    } catch (_) {}\r\n\r\n    /* Compatibility event for already loaded auxiliary owners. */\r\n    try {\r\n      document.dispatchEvent(new CustomEvent(\"gdx-panel-v4-pool-compare-state\", {\r\n        detail: detail\r\n      }));\r\n    } catch (_) {}\r\n  }\r\n\r\n  function renderExternalRecommendationOwner() {\r\n    var owner = window.GDX_PANEL_V4_UI_RECO_15_R11_R5 || null;\r\n    if (owner && typeof owner.render === \"function\") {\r\n      try { owner.render(); } catch (_) {}\r\n    }\r\n  }\r\n\r\n  function toggleUnifiedCompareProduct(productOrKey, source, options) {\r\n    options = options || {};\r\n\r\n    var product = typeof productOrKey === \"string\"\r\n      ? canonicalProductByKey(productOrKey)\r\n      : productOrKey;\r\n\r\n    if (!product) return { ok:false, reason:\"PRODUCT_NOT_FOUND\" };\r\n\r\n    var key = String(product.key || product.handle || product.id || \"\").trim();\r\n    if (!key) return { ok:false, reason:\"PRODUCT_KEY_MISSING\" };\r\n\r\n    var slot = 0;\r\n    if (uiState.selected[1] && String(uiState.selected[1].key || \"\") === key) slot = 1;\r\n    if (uiState.selected[2] && String(uiState.selected[2].key || \"\") === key) slot = 2;\r\n\r\n    /* Any selection change invalidates the previous detailed result only. */\r\n    uiState.compareResult = null;\r\n    uiState.compareRenderedAt = \"\";\r\n    uiState.poolCompareResult = null;\r\n    uiState.poolCompareRenderedAt = \"\";\r\n    uiState.resultSource = \"TOP3\";\r\n    syncCompareSurfaceVisibility(\"unified_selection_change\");\r\n\r\n    if (slot) {\r\n      uiState.selected[slot] = null;\r\n      uiState.compareSelectionSource[slot] = \"\";\r\n      uiState.activeSlot = slot;\r\n    } else if (!uiState.selected[1]) {\r\n      uiState.selected[1] = product;\r\n      uiState.compareSelectionSource[1] = String(source || \"UNKNOWN\");\r\n      uiState.activeSlot = 2;\r\n    } else if (!uiState.selected[2]) {\r\n      uiState.selected[2] = product;\r\n      uiState.compareSelectionSource[2] = String(source || \"UNKNOWN\");\r\n      uiState.activeSlot = 1;\r\n    } else {\r\n      dispatchUnifiedCompareState(\"max_2\");\r\n      return {\r\n        ok:false,\r\n        reason:\"COMPARE_MAX_2\",\r\n        selectedCount:2\r\n      };\r\n    }\r\n\r\n    syncLegacyPoolSelectionMirror();\r\n    renderProducts();\r\n    renderResultPreview();\r\n\r\n    if (!options.skipRecommendationRender) {\r\n      renderExternalRecommendationOwner();\r\n    }\r\n\r\n    dispatchUnifiedCompareState(slot ? \"product_removed\" : \"product_selected\");\r\n\r\n    return {\r\n      ok:true,\r\n      selected:!slot,\r\n      selectedCount:unifiedCompareCount(),\r\n      key:key,\r\n      source:String(source || \"UNKNOWN\")\r\n    };\r\n  }\r\n\r\n  function resetUnifiedCompareSelection(options) {\r\n    options = options || {};\r\n\r\n    uiState.activeSlot = 1;\r\n    uiState.selected = { 1:null, 2:null };\r\n    uiState.compareSelectionSource = { 1:\"\", 2:\"\" };\r\n    uiState.compareResult = null;\r\n    uiState.compareRenderedAt = \"\";\r\n    uiState.poolCompareResult = null;\r\n    uiState.poolCompareRenderedAt = \"\";\r\n    uiState.resultSource = \"TOP3\";\r\n\r\n    syncLegacyPoolSelectionMirror();\r\n    syncCompareSurfaceVisibility(\"unified_reset\");\r\n    renderProducts();\r\n    renderResultPreview();\r\n    renderExternalRecommendationOwner();\r\n    clearGeneratedMounts();\r\n    dispatchUnifiedCompareState(\"unified_reset\");\r\n\r\n    if (options.scroll === true) {\r\n      var productGrid = document.getElementById(\"gdxPanelV4ProductGrid\");\r\n      if (productGrid && productGrid.scrollIntoView) {\r\n        productGrid.scrollIntoView({ behavior:\"smooth\", block:\"center\" });\r\n      }\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function landOnDetailedCompareResult() {\r\n    var result = resultEl();\r\n    var panel = document.querySelector(\"#gdxPanelV4Shell .gdx-panel-v4-panel\");\r\n\r\n    if (result && panel && panel.contains(result)) {\r\n      var panelRect = panel.getBoundingClientRect();\r\n      var resultRect = result.getBoundingClientRect();\r\n      var top = Number(panel.scrollTop || 0) + (resultRect.top - panelRect.top) - 14;\r\n\r\n      if (typeof panel.scrollTo === \"function\") {\r\n        panel.scrollTo({ top:Math.max(0, top), behavior:\"smooth\" });\r\n      } else {\r\n        panel.scrollTop = Math.max(0, top);\r\n      }\r\n    } else if (result && result.scrollIntoView) {\r\n      result.scrollIntoView({ behavior:\"smooth\", block:\"start\" });\r\n    }\r\n  }\r\n\r\n  function runGeneralCompare(options) {\r\n    options = options || {};\r\n\r\n    if (!isCompareReady()) {\r\n      renderSlots();\r\n      renderActionBar();\r\n      return false;\r\n    }\r\n\r\n    if (!window.GDX_PANEL_LED_V4_COMPARE || typeof window.GDX_PANEL_LED_V4_COMPARE.compareProducts !== \"function\") {\r\n      uiState.compareResult = {\r\n        ok: false,\r\n        error: \"Compare Core bulunamad\u0131. panel-led-v4.compare.js dosyas\u0131n\u0131 kontrol edin.\"\r\n      };\r\n\r\n      uiState.compareRenderedAt = new Date().toISOString();\r\n\r\n      renderResultPreview();\r\n      renderActionBar();\r\n      clearGeneratedMounts();\r\n\r\n      return false;\r\n    }\r\n\r\n    uiState.compareResult = window.GDX_PANEL_LED_V4_COMPARE.compareProducts(\r\n      uiState.selected[1],\r\n      uiState.selected[2],\r\n      { profileKey: uiState.compareProfileKey || \"general\" }\r\n    );\r\n\r\n    uiState.compareRenderedAt = new Date().toISOString();\r\n    uiState.resultSource = \"TOP3\";\r\n    syncLegacyPoolSelectionMirror();\r\n    syncCompareSurfaceVisibility(\"unified_compare\");\r\n\r\n    renderResultPreview();\r\n    renderActionBar();\r\n    requestExternalPanelRenders();\r\n    dispatchUnifiedCompareState(\"compare_complete\");\r\n\r\n    if (options.scroll !== false) {\r\n      var raf = window.requestAnimationFrame || function (fn) { return window.setTimeout(fn, 0); };\r\n      raf(function () {\r\n        raf(landOnDetailedCompareResult);\r\n      });\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n\r\n  function poolCompareReady() {\r\n    return isCompareReady();\r\n  }\r\n\r\n  function dispatchPoolCompareState(reason) {\r\n    dispatchUnifiedCompareState(reason || \"compat_pool_state\");\r\n  }\r\n\r\n  function runPoolCompare(options) {\r\n    /* R3.7 compatibility alias \u2014 there is no independent Pool compare owner. */\r\n    return runGeneralCompare(options || {});\r\n  }\r\n\r\n  function resetPoolComparison(options) {\r\n    /* R3.7 compatibility alias \u2014 clears the single canonical compare selection. */\r\n    return resetUnifiedCompareSelection(options || {});\r\n  }\r\n\r\n  function resetComparisonFlow(options) {\r\n    options = options || {};\r\n\r\n    resetUnifiedCompareSelection({ scroll:false });\r\n\r\n    uiState.filter = \"all\";\r\n    uiState.query = \"\";\r\n\r\n    uiState.recommendFamilyKey = \"content_creation\";\r\n    uiState.recommendScenarioKey = \"\";\r\n    uiState.recommendationResult = null;\r\n    uiState.recommendationExpandedKey = \"\";\r\n    uiState.recommendationRenderedAt = \"\";\r\n\r\n    var search = document.getElementById(\"gdxPanelV4Search\");\r\n    if (search) search.value = \"\";\r\n\r\n    renderAll();\r\n    clearGeneratedMounts();\r\n\r\n    if (options.scroll !== false) {\r\n      window.setTimeout(scrollPanelToStart, 40);\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n\r\n  function getActionBarMount() {\r\n    var existing = document.getElementById(\"gdxPanelV4ActionBar\");\r\n    if (existing) return existing;\r\n\r\n    var productGrid = grid();\r\n    if (!productGrid || !productGrid.parentNode) return null;\r\n\r\n    var el = document.createElement(\"div\");\r\n    el.id = \"gdxPanelV4ActionBar\";\r\n    el.className = \"gdx-panel-v4-actionbar\";\r\n\r\n    productGrid.parentNode.insertBefore(el, productGrid.nextSibling);\r\n\r\n    return el;\r\n  }\r\n\r\n    function formatActionBarScore(value) {\r\n    var number = Number(value);\r\n\r\n    if (!isFinite(number)) return \"\";\r\n\r\n    return (Math.round(number * 10) / 10).toFixed(1) + \"/10\";\r\n  }\r\n\r\n  function compareItemProductKey(item) {\r\n    item = item || {};\r\n\r\n    return String(\r\n      item.productKey ||\r\n      item.key ||\r\n      (item.product && item.product.key) ||\r\n      \"\"\r\n    );\r\n  }\r\n\r\n  function compareItemTitle(item) {\r\n    item = item || {};\r\n\r\n    return lower(\r\n      item.productShortTitle ||\r\n      item.productTitle ||\r\n      (item.product && (item.product.shortTitle || item.product.title)) ||\r\n      \"\"\r\n    );\r\n  }\r\n\r\n  function getActionBarScorePack(product) {\r\n    var result = uiState.compareResult;\r\n\r\n    if (!product || !result || !result.ok) return null;\r\n\r\n    var productKey = String(product.key || \"\");\r\n    var productTitle = lower(smartDisplayTitle(product) || \"\");\r\n\r\n    var items = [\r\n      { role: \"winner\", item: result.winner || null },\r\n      { role: \"loser\", item: result.loser || null }\r\n    ];\r\n\r\n    for (var i = 0; i < items.length; i += 1) {\r\n      var pack = items[i];\r\n      var item = pack.item || {};\r\n      var itemKey = compareItemProductKey(item);\r\n      var itemTitle = compareItemTitle(item);\r\n\r\n      var keyMatch = itemKey && productKey && itemKey === productKey;\r\n      var titleMatch = itemTitle && productTitle && (\r\n        itemTitle.indexOf(productTitle.slice(0, 18)) > -1 ||\r\n        productTitle.indexOf(itemTitle.slice(0, 18)) > -1\r\n      );\r\n\r\n      if (keyMatch || titleMatch) {\r\n        var score = item.score10 !== undefined ? item.score10 : item.score;\r\n        var text = formatActionBarScore(score);\r\n\r\n        if (!text) return null;\r\n\r\n        return {\r\n          text: text,\r\n          tone: result.isTie ? \"is-tie\" : (pack.role === \"winner\" ? \"is-winner\" : \"is-loser\")\r\n        };\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function actionBarScoreHtml(product) {\r\n    var scorePack = getActionBarScorePack(product);\r\n\r\n    if (!scorePack) return \"\";\r\n\r\n    return '<span class=\"gdx-panel-v4-actionbar-score ' + escapeHtml(scorePack.tone) + '\">' + escapeHtml(scorePack.text) + '</span>';\r\n  }\r\n\r\n  function actionBarSlotHtml(slotNo, product) {\r\n    if (!product) {\r\n      return '' +\r\n        '<article class=\"gdx-panel-v4-actionbar-slot is-empty\" data-gdx-panel-compare-dock-slot=\"' + escapeHtml(String(slotNo)) + '\">' +\r\n          '<div class=\"gdx-panel-v4-actionbar-slot-no\">' + escapeHtml(String(slotNo)) + '</div>' +\r\n          '<div class=\"gdx-panel-v4-actionbar-slot-copy\">' +\r\n            '<strong>' + escapeHtml(slotNo + \". \u00DCr\u00FCn\") + '</strong>' +\r\n            '<small>Se\u00E7im bekleniyor</small>' +\r\n          '</div>' +\r\n        '</article>';\r\n    }\r\n\r\n    return '' +\r\n      '<article class=\"gdx-panel-v4-actionbar-slot is-filled\" data-gdx-panel-compare-dock-slot=\"' + escapeHtml(String(slotNo)) + '\" data-gdx-panel-compare-dock-product=\"' + escapeHtml(product.key || \"\") + '\">' +\r\n        '<div class=\"gdx-panel-v4-actionbar-slot-copy\">' +\r\n          '<strong>' + escapeHtml(smartDisplayTitle(product) || \"Panel LED \u00DCr\u00FCn\") + '</strong>' +\r\n          '<small>' + escapeHtml(r3ComparePriceText({}, product) || product.vendor || familyLabel(product)) + '</small>' +\r\n        '</div>' +\r\n        '<button type=\"button\" class=\"gdx-panel-v4-actionbar-remove\" data-gdx-panel-actionbar-remove=\"1\" data-gdx-panel-product-key=\"' + escapeHtml(product.key || \"\") + '\">Kald\u0131r</button>' +\r\n      '</article>';\r\n  }\r\n\r\n    function getResultJumpTarget(key) {\r\n    key = String(key || \"\");\r\n\r\n    if (key === \"setup\") {\r\n      return (\r\n        document.querySelector(\r\n          \"#gdx-panel-led-v4-root [data-gdx-panel-p27-render-bridge='1']\"\r\n        ) ||\r\n        document.querySelector(\r\n          \"#gdx-panel-led-v4-root [data-gdx-panel-p28-schematic='1']\"\r\n        ) ||\r\n        document.querySelector(\r\n          \"#gdx-panel-led-v4-root [data-gdx-panel-p31-alt-schematic='1']\"\r\n        )\r\n      );\r\n    }\r\n\r\n    if (key === \"reco\") {\r\n      return (\r\n        document.getElementById(\r\n          \"gdxPanelV4P16CompactCommandPanel\"\r\n        ) ||\r\n        document.getElementById(\r\n          \"gdxPanelV4R28SelectionSystem\"\r\n        )\r\n      );\r\n    }\r\n\r\n    var map = {\r\n      fp14:\r\n        \"#gdx-panel-led-v4-root [data-gdx-panel-fp14-detail-section='1']\",\r\n\r\n      expert:\r\n        \"#gdx-panel-led-v4-root [data-gdx-panel-expert-comment='1']\",\r\n\r\n      commerce:\r\n        \"#gdxPanelV4CommercePreview\",\r\n\r\n      share:\r\n        \"#gdxPanelV4SharePreview\"\r\n    };\r\n\r\n    return map[key]\r\n      ? document.querySelector(map[key])\r\n      : null;\r\n  }\r\n\r\n  function requestResultJumpDependencies(key) {\r\n    key = String(key || \"\");\r\n\r\n    if (key === \"setup\") {\r\n      if (\r\n        window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE &&\r\n        typeof window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE.render ===\r\n          \"function\"\r\n      ) {\r\n        try {\r\n          window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE.render();\r\n        } catch (error) {}\r\n      }\r\n\r\n      if (\r\n        window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER_BRIDGE &&\r\n        typeof window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER_BRIDGE.render ===\r\n          \"function\"\r\n      ) {\r\n        try {\r\n          window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER_BRIDGE.render();\r\n        } catch (error) {}\r\n      }\r\n    }\r\n\r\n    if (key === \"reco\") {\r\n      ensureP16CompactCommandPanel();\r\n\r\n      if (\r\n        typeof window.GDX_PANEL_V4_PLACE_RECOMMENDATION_AFTER_R28 ===\r\n          \"function\"\r\n      ) {\r\n        try {\r\n          window.GDX_PANEL_V4_PLACE_RECOMMENDATION_AFTER_R28();\r\n        } catch (error) {}\r\n      }\r\n    }\r\n\r\n    requestExternalPanelRenders();\r\n  }\r\n\r\n  function scrollResultJumpTarget(target, key) {\r\n    if (!target) return false;\r\n\r\n    var offset =\r\n      key === \"reco\"\r\n        ? 10\r\n        : 16;\r\n\r\n    return scrollP16CompactElement(\r\n      target,\r\n      offset\r\n    );\r\n  }\r\n\r\n  function runResultJumpAttempt(key, attempt) {\r\n    var target =\r\n      getResultJumpTarget(key);\r\n\r\n    if (target) {\r\n      return scrollResultJumpTarget(\r\n        target,\r\n        key\r\n      );\r\n    }\r\n\r\n    requestResultJumpDependencies(key);\r\n\r\n    if (attempt >= 3) return false;\r\n\r\n    window.setTimeout(function () {\r\n      runResultJumpAttempt(\r\n        key,\r\n        attempt + 1\r\n      );\r\n    }, attempt === 0 ? 90 : (attempt === 1 ? 240 : 520));\r\n\r\n    return false;\r\n  }\r\n\r\n  function setResultJumpActive(key) {\r\n    key = String(key || \"\");\r\n\r\n    var r = root();\r\n    if (!r) return;\r\n\r\n    Array.prototype.slice.call(r.querySelectorAll(\"[data-gdx-panel-result-jump-nav='1'] [data-gdx-panel-jump]\")).forEach(function (button) {\r\n      var isActive = button.getAttribute(\"data-gdx-panel-jump\") === key;\r\n\r\n      button.classList.toggle(\"is-active\", isActive);\r\n\r\n      if (isActive) {\r\n        button.setAttribute(\"aria-current\", \"true\");\r\n        button.setAttribute(\"data-gdx-panel-result-jump-active\", \"1\");\r\n      } else {\r\n        button.removeAttribute(\"aria-current\");\r\n        button.removeAttribute(\"data-gdx-panel-result-jump-active\");\r\n      }\r\n    });\r\n  }\r\n\r\n  function scrollToResultSection(key) {\r\n    key = String(key || \"\");\r\n\r\n    setResultJumpActive(key);\r\n\r\n    return runResultJumpAttempt(\r\n      key,\r\n      0\r\n    );\r\n  }\r\n\r\n  window.GDX_PANEL_V4_R35_CR05_RESULT_NAV = {\r\n    phase:\r\n      \"PANEL-V4-R35-CR05-R1-RESULT-NAV-TARGET-CORRECTION\",\r\n\r\n    version:\r\n      \"PANEL-V4-R35-CR05-R1-RESULT-NAV-TARGET-CORRECTION-V1\",\r\n\r\n    getTarget:\r\n      getResultJumpTarget,\r\n\r\n    jump:\r\n      scrollToResultSection,\r\n\r\n    status:\r\n      function () {\r\n        var setupTarget =\r\n          getResultJumpTarget(\"setup\");\r\n\r\n        var recommendationTarget =\r\n          getResultJumpTarget(\"reco\");\r\n\r\n        return {\r\n          phase:\r\n            \"PANEL-V4-R35-CR05-R1-RESULT-NAV-TARGET-CORRECTION\",\r\n\r\n          version:\r\n            \"PANEL-V4-R35-CR05-R1-RESULT-NAV-TARGET-CORRECTION-V1\",\r\n\r\n          setupTargetPresent:\r\n            !!setupTarget,\r\n\r\n          setupTargetType:\r\n            setupTarget &&\r\n            setupTarget.getAttribute(\r\n              \"data-gdx-panel-p27-render-bridge\"\r\n            ) === \"1\"\r\n              ? \"P27_CUSTOMER_ANALYSIS_START\"\r\n              : (\r\n                  setupTarget\r\n                    ? \"SETUP_FALLBACK\"\r\n                    : \"\"\r\n                ),\r\n\r\n          recommendationTargetPresent:\r\n            !!recommendationTarget,\r\n\r\n          recommendationTargetId:\r\n            recommendationTarget\r\n              ? recommendationTarget.id || \"\"\r\n              : \"\"\r\n        };\r\n      }\r\n  };\r\n\r\n  function renderResultJumpNav() {\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-result-jump-nav is-p17-promoted is-usecase-button-family\" data-gdx-panel-result-jump-nav=\"1\" aria-label=\"Sonu\u00E7 aksiyonlar\u0131\">' +\r\n        '<button type=\"button\" data-gdx-panel-jump=\"fp14\">Teknik Analiz</button>' +\r\n        '<button type=\"button\" data-gdx-panel-jump=\"expert\">Uzman Yorumu</button>' +\r\n        '<button type=\"button\" data-gdx-panel-jump=\"setup\" data-gdx-panel-result-jump-setup=\"1\" aria-label=\"Kurulum \u00F6nerilerine git\">Kurulum</button>' +\r\n        '<button type=\"button\" data-gdx-panel-jump=\"reco\">\u00DCr\u00FCn \u00D6nerileri</button>' +\r\n        '<button type=\"button\" data-gdx-panel-jump=\"commerce\">Sat\u0131n Al</button>' +\r\n        '<button type=\"button\" data-gdx-panel-jump=\"share\" aria-label=\"Sonucu payla\u015F b\u00F6l\u00FCm\u00FCne git\">Sonucu Payla\u015F</button>' +\r\n      '</div>';\r\n  }\r\n\r\n\r\n  /* =========================================================\r\n     PANEL LED V4 \u2014 P17-0 ALT 9 / ONE PRIMARY CTA RESULT JOURNEY\r\n     M\u00FCh\u00FCr aday\u0131:\r\n     PANEL-V4-P17-1-R2-RESULT-NAV-TRUE-ACTIVE-STATE-SAFE\r\n\r\n     Se\u00E7ilen \u00F6nizleme:\r\n     Alternatif 09 \u2014 Tek \u00D6ncelikli CTA\r\n\r\n     Ama\u00E7:\r\n     - Sonu\u00E7 ekran\u0131nda tek ana aksiyon olarak Sat\u0131n Alma Se\u00E7enekleri \u00F6ne \u00E7\u0131kar.\r\n     - Teknik analiz ve payla\u015F\u0131m ikincil text-link seviyesinde kal\u0131r.\r\n     - Commerce / Share / FP14 core yap\u0131s\u0131na dokunulmaz.\r\n     ========================================================= */\r\n\r\n  function renderP17Alt9ResultJourney() {\r\n    return \"\";\r\n  }\r\n\r\n\r\n  function renderActionBar() {\r\n    /* P2-C-R6-R3:\r\n       R6-R1 legacy single dock is retired.\r\n       TOP3 is owned by R2-J; Product Pool is owned by the R6-R3 adapter. */\r\n    var legacy = document.getElementById(\"gdxPanelV4ActionBar\");\r\n    if (legacy && legacy.parentNode) legacy.parentNode.removeChild(legacy);\r\n    return true;\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value || \"\").replace(/[&<>\"']/g, function (char) {\r\n      return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[char];\r\n    });\r\n  }\r\n\r\n  function lower(value) {\r\n    return (API && API.utils && API.utils.lowerTr ? API.utils.lowerTr(value) : String(value || \"\").toLocaleLowerCase(\"tr-TR\"));\r\n  }\r\n\r\n  /* =========================================================\r\n     P12-4B \u2014 CUSTOMER-FACING COPY / CHIP DENSITY HELPERS\r\n     ========================================================= */\r\n\r\n  function safeText(value) {\r\n    return String(value || \"\").replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function noStockText(value) {\r\n    var text = lower(value || \"\");\r\n    return !(\r\n      /stok/.test(text) ||\r\n      /sat\u0131n al\u0131nabilirlik/.test(text) ||\r\n      /sat\u0131n alinabilirlik/.test(text)\r\n    );\r\n  }\r\n\r\n  function getFp14EvidenceFromResult(result) {\r\n    return result && result.fp14Evidence && result.fp14Evidence.ok ? result.fp14Evidence : null;\r\n  }\r\n\r\n  function getSourceSync(result) {\r\n    var ev = getFp14EvidenceFromResult(result);\r\n    return ev && ev.sourceSync ? ev.sourceSync : null;\r\n  }\r\n\r\n  function sourceSyncLabel(sync) {\r\n    sync = sync || {};\r\n\r\n    var parsed = Number(sync.parsed || 0);\r\n    var derived = Number(sync.derived || 0);\r\n\r\n    if (parsed && derived) return parsed + \" kaynak e\u015Fle\u015Fmesi \u00B7 \" + derived + \" t\u00FCretilmi\u015F de\u011Fer\";\r\n    if (parsed) return parsed + \" kaynak e\u015Fle\u015Fmesi\";\r\n    if (derived) return derived + \" t\u00FCretilmi\u015F de\u011Fer\";\r\n    return \"Kaynak e\u015Fle\u015Fmesi\";\r\n  }\r\n\r\n  function sourceSyncText(sync) {\r\n    sync = sync || {};\r\n\r\n    var parsed = Number(sync.parsed || 0);\r\n    var derived = Number(sync.derived || 0);\r\n\r\n    if (parsed && derived) {\r\n      return \"Kar\u015F\u0131la\u015Ft\u0131rma, mevcut \u00FCr\u00FCn bilgileri ve hesaplanabilen teknik de\u011Ferlerle haz\u0131rland\u0131. Yakla\u015F\u0131k de\u011Ferler ayr\u0131ca belirtilir.\";\r\n    }\r\n\r\n    if (parsed) {\r\n      return \"Kar\u015F\u0131la\u015Ft\u0131rma, mevcut \u00FCr\u00FCn bilgileri kullan\u0131larak haz\u0131rland\u0131.\";\r\n    }\r\n\r\n    return \"Kar\u015F\u0131la\u015Ft\u0131rma, mevcut \u00FCr\u00FCn bilgileri ve hesaplanabilen teknik de\u011Ferlerle haz\u0131rland\u0131. Yakla\u015F\u0131k de\u011Ferler ayr\u0131ca belirtilir.\";\r\n  }\r\n\r\n  function renderSourceSyncPanel(result) {\r\n    var sync = getSourceSync(result);\r\n    if (!sync) return \"\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-tie-explain is-source-sync\" data-gdx-panel-source-sync=\"1\" data-gdx-panel-source-parsed=\"' + escapeHtml(String(sync.parsed || 0)) + '\" data-gdx-panel-source-derived=\"' + escapeHtml(String(sync.derived || 0)) + '\" data-gdx-panel-source-fallback=\"' + escapeHtml(String(sync.fallback || 0)) + '\">' +\r\n        '<div>' +\r\n          '<strong>Kar\u015F\u0131la\u015Ft\u0131rma nas\u0131l haz\u0131rland\u0131?</strong>' +\r\n          '<p>' + escapeHtml(sourceSyncText(sync)) + '</p>' +\r\n        '</div>' +\r\n        '<span>' + escapeHtml(sourceSyncLabel(sync)) + '</span>' +\r\n      '</div>';\r\n  }\r\n\r\n  function compactNumberLabel(value) {\r\n    value = Number(value || 0);\r\n    if (!value) return \"\";\r\n    if (value >= 1000) return String(Math.round(value / 100) / 10).replace(\".\", \",\") + \"K\";\r\n    return String(value);\r\n  }\r\n\r\n  function compactSpecLabel(product, key) {\r\n    var specs = product && product.specs ? product.specs : {};\r\n\r\n    if (key === \"light\") {\r\n      if (specs.powerW && specs.lumen) return specs.powerW + \"W\u00B7\" + compactNumberLabel(specs.lumen);\r\n      if (specs.powerW && specs.estimatedLumen) return specs.powerW + \"W\u00B7~\" + compactNumberLabel(specs.estimatedLumen);\r\n      if (specs.powerW) return specs.powerW + \"W\";\r\n      return \"\";\r\n    }\r\n\r\n    if (key === \"color\") {\r\n      if (specs.cri) return \"CRI \" + specs.cri + \"+\";\r\n      if (specs.tlci) return \"TLCI \" + specs.tlci + \"+\";\r\n      if (specs.family === \"rgb\") return \"RGB\";\r\n      if (specs.family === \"bicolor\") return \"Bi-Color\";\r\n      return \"\";\r\n    }\r\n\r\n    if (key === \"power\") {\r\n      return [\r\n        specs.hasAC ? \"AC\" : \"\",\r\n        specs.hasBattery ? \"Bat\" : \"\",\r\n        specs.hasNPF ? \"NPF\" : \"\",\r\n        specs.hasVmount ? \"VM\" : \"\"\r\n      ].filter(Boolean).join(\"\u00B7\");\r\n    }\r\n\r\n    if (key === \"family\") {\r\n      return familyLabel(product);\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  function renderProductSourceChips(product, attrName) {\r\n    product = product || {};\r\n\r\n    var chips = [\r\n      compactSpecLabel(product, \"family\"),\r\n      compactSpecLabel(product, \"light\"),\r\n      compactSpecLabel(product, \"color\")\r\n    ].filter(function (chip) {\r\n      return chip && noStockText(chip);\r\n    }).slice(0, 3);\r\n\r\n    if (!chips.length) return \"\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-reco-priority-chips\" ' + (attrName || '') + '>' +\r\n        chips.map(function (chip) {\r\n          return '<span>' + escapeHtml(chip) + '</span>';\r\n        }).join(\"\") +\r\n      '</div>';\r\n  }\r\n\r\n  function selectedProductByCompareItem(item) {\r\n    item = item || {};\r\n    var key = String(item.productKey || item.key || \"\");\r\n    var title = lower(item.productShortTitle || item.productTitle || \"\");\r\n\r\n    var sourceSelected = uiState.resultSource === \"POOL\" ? uiState.poolSelected : uiState.selected;\r\n    var products = [sourceSelected[1], sourceSelected[2]].filter(Boolean);\r\n\r\n    for (var i = 0; i < products.length; i += 1) {\r\n      var product = products[i];\r\n      if (key && (product.key === key || product.handle === key || String(product.id) === key)) return product;\r\n\r\n      var productTitle = lower(smartDisplayTitle(product) || \"\");\r\n      if (title && productTitle && (productTitle.indexOf(title.slice(0, 18)) > -1 || title.indexOf(productTitle.slice(0, 18)) > -1)) return product;\r\n    }\r\n\r\n    return item.product || {};\r\n  }\r\n\r\n  function sourceAwareReasonText(reason) {\r\n    reason = safeText(reason);\r\n    if (!reason || !noStockText(reason)) return \"\";\r\n    return reason;\r\n  }\r\n\r\n\r\n  function productSearchText(product) {\r\n    return lower([\r\n      product.title,\r\n      product.vendor,\r\n      product.productType,\r\n      product.sku,\r\n      product.badges.join(\" \"),\r\n      product.tags.join(\" \")\r\n    ].join(\" \"));\r\n  }\r\n\r\n  function fs1rR5CountProductCards() {\r\n    var r = root();\r\n    return r\r\n      ? r.querySelectorAll(\".gdx-panel-v4-product-card[data-gdx-panel-product]\").length\r\n      : 0;\r\n  }\r\n\r\n  function fs1rR5CountRecommendationCards() {\r\n    var el = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n    return el\r\n      ? el.querySelectorAll(\".gdx-r11-card[data-gdx-r11-card],.gdx-panel-v4-reco-card\").length\r\n      : 0;\r\n  }\r\n\r\n  function renderDeferredDecisionOnly(reason) {\r\n    var r = root();\r\n    if (!r) return false;\r\n\r\n    uiState.preActivationProductCardMax = Math.max(\r\n      Number(uiState.preActivationProductCardMax || 0),\r\n      fs1rR5CountProductCards()\r\n    );\r\n    uiState.preActivationRecommendationCardMax = Math.max(\r\n      Number(uiState.preActivationRecommendationCardMax || 0),\r\n      fs1rR5CountRecommendationCards()\r\n    );\r\n\r\n    uiState.deferredRenderCount += 1;\r\n    uiState.heavyRenderBlockedCount += 1;\r\n    uiState.lastDecisionGateReason = String(reason || \"deferred\");\r\n    uiState.lastRenderCount = 0;\r\n\r\n    r.setAttribute(\"data-cf-panel-results-state\", \"DEFERRED\");\r\n    r.setAttribute(\"data-cf-panel-decision-activated\", \"0\");\r\n\r\n    var selectionWrap = r.querySelector(\".gdx-panel-v4-selection-wrap\");\r\n    if (selectionWrap) {\r\n      selectionWrap.hidden = true;\r\n      selectionWrap.setAttribute(\"aria-hidden\", \"true\");\r\n    }\r\n\r\n    var legacyR28 = document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n    if (legacyR28) legacyR28.hidden = true;\r\n\r\n    /* FS1R-R5.1: preserve only an EMPTY/HIDDEN recommendation mount.\r\n       R11 requires this mount after explicit apply; creating the empty mount\r\n       is not recommendation composition and does not create product/card DOM. */\r\n    var recommendation = recommendationEl();\r\n    if (recommendation) {\r\n      recommendation.hidden = true;\r\n      recommendation.setAttribute(\"aria-hidden\", \"true\");\r\n      recommendation.innerHTML = \"\";\r\n      recommendation.setAttribute(\"data-cf-panel-deferred-empty-mount\", \"1\");\r\n    }\r\n\r\n    var productGrid = grid();\r\n    if (productGrid) productGrid.textContent = \"\";\r\n\r\n    var result = resultEl();\r\n    if (result) {\r\n      result.hidden = true;\r\n      result.setAttribute(\"aria-hidden\", \"true\");\r\n      result.innerHTML = \"\";\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function restoreDecisionResultSurfaces() {\r\n    var r = root();\r\n    if (!r) return false;\r\n\r\n    r.setAttribute(\"data-cf-panel-results-state\", \"ACTIVE\");\r\n    r.setAttribute(\"data-cf-panel-decision-activated\", \"1\");\r\n\r\n    var selectionWrap = r.querySelector(\".gdx-panel-v4-selection-wrap\");\r\n    if (selectionWrap) {\r\n      selectionWrap.hidden = false;\r\n      selectionWrap.setAttribute(\"aria-hidden\", \"false\");\r\n    }\r\n\r\n    var recommendation = recommendationEl();\r\n    if (recommendation) {\r\n      var r11Owned = !!recommendation.querySelector('[data-gdx-reco-r11-owned=\"1\"]');\r\n      recommendation.hidden = !r11Owned;\r\n      recommendation.setAttribute(\"aria-hidden\", r11Owned ? \"false\" : \"true\");\r\n      recommendation.removeAttribute(\"data-cf-panel-deferred-empty-mount\");\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function activateDecisionResults(meta) {\r\n    meta = meta || {};\r\n    if (uiState.decisionActivated === true) {\r\n      uiState.lastDecisionGateReason = String(meta.source || \"already_active\");\r\n      restoreDecisionResultSurfaces();\r\n      ensureDataLoaded();\r\n      return true;\r\n    }\r\n\r\n    uiState.apiLoadedBeforeActivation = !!(API && API.state && API.state.loaded === true);\r\n    uiState.apiLoadingBeforeActivation = !!(API && API.state && API.state.loading === true);\r\n    uiState.decisionActivated = true;\r\n    uiState.decisionActivationCount += 1;\r\n    uiState.decisionActivationSource = String(meta.source || \"EXPLICIT_APPLY\");\r\n    uiState.lastDecisionGateReason = \"activated:\" + uiState.decisionActivationSource;\r\n\r\n    restoreDecisionResultSurfaces();\r\n\r\n    try {\r\n      window.dispatchEvent(new CustomEvent(\"canfoto:panel-deferred-results-activated\", {\r\n        detail: {\r\n          source: uiState.decisionActivationSource,\r\n          selectionKey: String(meta.selectionKey || \"\"),\r\n          lane: String(meta.lane || \"\")\r\n        }\r\n      }));\r\n    } catch (ignore) {}\r\n\r\n    ensureDataLoaded();\r\n    return true;\r\n  }\r\n\r\n  function deactivateDecisionResults(reason) {\r\n    /* A deep-link may bypass the initial fresh-entry gate, but once the user\r\n       starts a new pending choice, stale restored results must also defer. */\r\n    if (uiState.decisionActivated === true) {\r\n      uiState.decisionDeactivationCount += 1;\r\n    }\r\n    uiState.decisionActivated = false;\r\n    uiState.decisionActivationSource = \"\";\r\n    uiState.lastDecisionGateReason = \"deactivated:\" + String(reason || \"pending_change\");\r\n    renderDeferredDecisionOnly(uiState.lastDecisionGateReason);\r\n\r\n    try {\r\n      window.dispatchEvent(new CustomEvent(\"canfoto:panel-deferred-results-deactivated\", {\r\n        detail: { reason: String(reason || \"pending_change\") }\r\n      }));\r\n    } catch (ignore) {}\r\n\r\n    return true;\r\n  }\r\n\r\n  window.CANFOTO_FS1R_R52_TRUE_EMPTY_GATE =\r\n    Object.assign(\r\n      {},\r\n      window.CANFOTO_FS1R_R52_TRUE_EMPTY_GATE || {},\r\n      {\r\n        version: \"CANFOTO-FS1R-R5.2-TRUE-EMPTY-RUNTIME-GATE\",\r\n        r11HardcodedDefaultRetired: true,\r\n        r11AutonomousBootRenderRetired: true,\r\n        r28DefaultSelectionSynthesisRetired: true,\r\n        r28ToR11PreApplySyncBlocked: true\r\n      }\r\n    );\r\n\r\n  window.CANFOTO_PANEL_DEFERRED_RESULTS_GATE = {\r\n    version: \"CANFOTO-FS1R-R5.2-DEFERRED-RESULT-ACTIVATION-V3\",\r\n    isActive: function () { return uiState.decisionActivated === true; },\r\n    isDeferred: function () { return uiState.decisionActivated !== true; },\r\n    activate: activateDecisionResults,\r\n    deactivate: deactivateDecisionResults,\r\n    getState: function () {\r\n      return {\r\n        activated: uiState.decisionActivated === true,\r\n        activationSource: uiState.decisionActivationSource,\r\n        activationCount: uiState.decisionActivationCount,\r\n        deactivationCount: uiState.decisionDeactivationCount,\r\n        deferredRenderCount: uiState.deferredRenderCount,\r\n        heavyRenderBlockedCount: uiState.heavyRenderBlockedCount,\r\n        preActivationProductCardMax: uiState.preActivationProductCardMax,\r\n        preActivationRecommendationCardMax: uiState.preActivationRecommendationCardMax,\r\n        apiLoadedBeforeActivation: uiState.apiLoadedBeforeActivation,\r\n        apiLoadingBeforeActivation: uiState.apiLoadingBeforeActivation,\r\n        lastReason: uiState.lastDecisionGateReason\r\n      };\r\n    }\r\n  };\r\n\r\n  function openShell() {\r\n    var sh = shell();\r\n    if (!sh) return;\r\n\r\n    /* FS1R-R5: gate BEFORE first visible paint. */\r\n    if (uiState.decisionActivated !== true) {\r\n      renderDeferredDecisionOnly(\"open_shell_prepaint\");\r\n    } else {\r\n      restoreDecisionResultSurfaces();\r\n    }\r\n\r\n    sh.hidden = false;\r\n    sh.setAttribute(\"aria-hidden\", \"false\");\r\n    document.body.classList.add(\"gdx-panel-v4-lock\");\r\n    uiState.opened = true;\r\n\r\n    if (uiState.decisionActivated === true) {\r\n      ensureDataLoaded();\r\n    }\r\n  }\r\n\r\n  function closeShell() {\r\n    var sh = shell();\r\n    if (!sh) return;\r\n    sh.hidden = true;\r\n    sh.setAttribute(\"aria-hidden\", \"true\");\r\n    document.body.classList.remove(\"gdx-panel-v4-lock\");\r\n    uiState.opened = false;\r\n  }\r\n\r\n  function r62haCanonicalProductCount() {\r\n    var owner = window.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL || null;\r\n    try {\r\n      var snap = owner && typeof owner.getSnapshot === \"function\" ? owner.getSnapshot() : null;\r\n      if (snap && snap.ok === true && Number(snap.productCount) > 0) return Number(snap.productCount);\r\n    } catch (ignore) {}\r\n    return 0;\r\n  }\r\n\r\n  function fs1rR51SyncCanonicalRecommendation(reason) {\r\n    var sync =\r\n      window.GDX_PANEL_LED_V4_ETAP2_R2C2_SELECTION_RECOMMENDATION_SYNC ||\r\n      null;\r\n\r\n    if (!sync || typeof sync.sync !== \"function\") {\r\n      uiState.lastDecisionGateReason =\r\n        \"r51_sync_owner_missing:\" + String(reason || \"unknown\");\r\n      return false;\r\n    }\r\n\r\n    try {\r\n      var ok = sync.sync({\r\n        reason: \"FS1R_R5_1_\" + String(reason || \"EXPLICIT_APPLY\"),\r\n        force: true\r\n      });\r\n      uiState.lastDecisionGateReason =\r\n        (ok === true ? \"r51_sync_ok:\" : \"r51_sync_hold:\") +\r\n        String(reason || \"unknown\");\r\n      return ok === true;\r\n    } catch (error) {\r\n      uiState.lastDecisionGateReason =\r\n        \"r51_sync_error:\" + String(error && error.message || error || \"unknown\");\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function ensureDataLoaded() {\r\n    if (uiState.decisionActivated !== true) {\r\n      renderDeferredDecisionOnly(\"ensure_data_blocked_before_apply\");\r\n      return false;\r\n    }\r\n\r\n    if (!API || typeof API.loadProducts !== \"function\") {\r\n      setDataStatus(\"\u00DCr\u00FCn verisi \u015Fu anda y\u00FCklenemedi. L\u00FCtfen sayfay\u0131 yenileyin veya daha sonra tekrar deneyin.\", \"error\");\r\n      return;\r\n    }\r\n\r\n    /* ETAP2 R2-D REV3.3 \u2014 FAST OPEN\r\n       R2-C owns the persistent source-derived canonical pool. Re-opening the motor\r\n       must not re-enter the loading/promise/render cycle when that pool is\r\n       already ready. */\r\n    if (\r\n      API.state &&\r\n      API.state.loaded === true &&\r\n      API.state.loading !== true &&\r\n      !API.state.error &&\r\n      Array.isArray(API.state.products) &&\r\n      r62haCanonicalProductCount() > 0 &&\r\n      API.state.products.length === r62haCanonicalProductCount()\r\n    ) {\r\n      renderAll();\r\n      fs1rR51SyncCanonicalRecommendation(\"FAST_READY\");\r\n      if (window.GDX_PANEL_V4_R2D33_PERF_STATE) {\r\n        window.GDX_PANEL_V4_R2D33_PERF_STATE.fastOpenCount += 1;\r\n      }\r\n      return;\r\n    }\r\n\r\n    setDataStatus(\"Panel LED \u00FCr\u00FCnleri haz\u0131rlan\u0131yor...\", \"loading\");\r\n    API.loadProducts().then(function () {\r\n      renderAll();\r\n      fs1rR51SyncCanonicalRecommendation(\"LOAD_RESOLVED\");\r\n    }).catch(function () {\r\n      renderAll();\r\n      fs1rR51SyncCanonicalRecommendation(\"LOAD_REJECTED_FAIL_CLOSED_SYNC\");\r\n    });\r\n  }\r\n\r\n  function setDataStatus(message, type) {\r\n    var el = statusEl();\r\n    if (!el) return;\r\n    el.textContent = message;\r\n    el.className = \"gdx-panel-v4-data-status\" + (type ? \" is-\" + type : \"\");\r\n  }\r\n\r\n  function familyLabel(product) {\r\n    var family = product && product.specs ? product.specs.family : \"\";\r\n    if (family === \"rgb\") return \"RGB Panel\";\r\n    if (family === \"bicolor\") return \"Bi-Color\";\r\n    if (family === \"daylight\") return \"Daylight\";\r\n    return \"Panel LED\";\r\n  }\r\n\r\n  function smartDisplayTitle(product, fallback) {\r\n    product = product || {};\r\n    return safeText(\r\n      product.smartTitle ||\r\n      product.smartShortTitle ||\r\n      product.displayTitle ||\r\n      product.shortTitle ||\r\n      product.title ||\r\n      fallback ||\r\n      \"Panel LED \u00DCr\u00FCn\"\r\n    );\r\n  }\r\n\r\n  function smartItemTitle(item, product, fallback) {\r\n    item = item || {};\r\n    product = product || {};\r\n\r\n    return safeText(\r\n      product.smartTitle ||\r\n      product.smartShortTitle ||\r\n      product.displayTitle ||\r\n      (item.product && (item.product.smartTitle || item.product.smartShortTitle || item.product.displayTitle)) ||\r\n      item.productSmartTitle ||\r\n      item.smartTitle ||\r\n      item.productShortTitle ||\r\n      item.productTitle ||\r\n      product.shortTitle ||\r\n      product.title ||\r\n      fallback ||\r\n      \"Panel LED \u00DCr\u00FCn\"\r\n    );\r\n  }\r\n\r\n\r\n  function productMatchesFilter(product) {\r\n    if (!product) return false;\r\n    var specs = product.specs || {};\r\n    var f = uiState.filter;\r\n\r\n    if (f === \"all\") return true;\r\n    if (f === \"rgb\") return specs.family === \"rgb\";\r\n    if (f === \"bicolor\") return specs.family === \"bicolor\";\r\n    if (f === \"battery\") return !!(specs.hasBattery || specs.hasVmount);\r\n    if (f === \"dmx\") return !!specs.hasDmx;\r\n    if (f === \"gdx\") return lower(product.vendor) === \"gdx\";\r\n    if (f === \"godox\") return lower(product.vendor) === \"godox\";\r\n    if (f === \"instock\") return !!product.available;\r\n    return true;\r\n  }\r\n\r\n  function productLane(product) {\r\n    return String(product && product.etap2 && product.etap2.lane || \"\");\r\n  }\r\n\r\n  function productMatchesLane(product) {\r\n    var lane = String(uiState.purchaseLane || \"ALL\");\r\n    if (lane === \"ALL\") return true;\r\n    return productLane(product) === lane;\r\n  }\r\n\r\n  function productMatchesQuery(product) {\r\n    var q = lower(uiState.query || \"\");\r\n    if (!q) return true;\r\n    return productSearchText(product).indexOf(q) > -1;\r\n  }\r\n\r\n  function laneLabel(lane) {\r\n    if (lane === \"BARE_LIGHT\") return \"Yaln\u0131z Panel\";\r\n    if (lane === \"SINGLE_READY_SET\") return \"Tekli Panel Kit\";\r\n    return \"T\u00FCm\u00FC\";\r\n  }\r\n\r\n  function laneCountsFromPool() {\r\n    var counts = { ALL: 0, BARE_LIGHT: 0, SINGLE_READY_SET: 0 };\r\n    var products = API && API.state && Array.isArray(API.state.products) ? API.state.products : [];\r\n    counts.ALL = products.length;\r\n    products.forEach(function (product) {\r\n      var lane = productLane(product);\r\n      if (counts[lane] !== undefined) counts[lane] += 1;\r\n    });\r\n    return counts;\r\n  }\r\n\r\n  function renderPurchaseLane() {\r\n    var wrap = document.getElementById(\"gdxPanelV4PurchaseLane\");\r\n    var context = document.getElementById(\"gdxPanelV4PurchaseLaneContext\");\r\n    if (!wrap) return;\r\n    var counts = laneCountsFromPool();\r\n    Array.prototype.forEach.call(wrap.querySelectorAll(\"[data-gdx-panel-purchase-lane]\"), function (button) {\r\n      var lane = button.getAttribute(\"data-gdx-panel-purchase-lane\") || \"ALL\";\r\n      var active = lane === uiState.purchaseLane;\r\n      button.classList.toggle(\"is-active\", active);\r\n      button.setAttribute(\"aria-checked\", active ? \"true\" : \"false\");\r\n      var count = button.querySelector(\"[data-gdx-panel-lane-count]\");\r\n      if (count) count.textContent = String(counts[lane] || 0);\r\n    });\r\n    if (context) {\r\n      context.textContent = laneLabel(uiState.purchaseLane) + \" \u00B7 \" +\r\n        String(counts[uiState.purchaseLane] || 0) + \" \u00FCr\u00FCn\";\r\n    }\r\n  }\r\n\r\n  function syncRecommendationForLane(reason) {\r\n    try {\r\n      window.dispatchEvent(new CustomEvent(\"canfoto:panel-r2d-purchase-lane-change\", {\r\n        detail: { lane: uiState.purchaseLane, reason: reason || \"r2d_lane_change\" }\r\n      }));\r\n    } catch (_) {}\r\n    uiState.recommendationResult = null;\r\n    uiState.recommendationExpandedKey = \"\";\r\n    uiState.recommendationRenderedAt = \"\";\r\n    var sync = window.GDX_PANEL_LED_V4_ETAP2_R2C2_SELECTION_RECOMMENDATION_SYNC || null;\r\n    if (sync && typeof sync.sync === \"function\") {\r\n      try {\r\n        sync.sync({ reason: reason || \"r2d_lane_change\", force: true });\r\n        return;\r\n      } catch (_) {}\r\n    }\r\n    renderAll();\r\n  }\r\n\r\n  /* =========================================================\r\n     CANFOTO ETAP2 R2-D \u2014 PANEL PRODUCT POOL CANONICAL SORT\r\n     Truth owners:\r\n     - PURPOSE: GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL.getPurposeOrder()\r\n     - GENERAL_FP: GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL.getFpOrder()\r\n     This UI layer NEVER recomputes scores. It only projects canonical order.\r\n     ========================================================= */\r\n  function r2dCanonicalPoolApi() {\r\n    return window.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL || null;\r\n  }\r\n\r\n  function r2dExactSelectionScoreApi() {\r\n    return window.GDX_PANEL_V4_R2D_EXACT_SELECTION_SCORE_PROJECTION || null;\r\n  }\r\n\r\n  function r2dCurrentSelection() {\r\n    return window.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n  }\r\n\r\n  function r2dCanonicalUsecaseKey() {\r\n    var sync = window.GDX_PANEL_LED_V4_ETAP2_R2C2_SELECTION_RECOMMENDATION_SYNC || null;\r\n    var sel = r2dCurrentSelection();\r\n    var map = sync && sync.purposeToCanonical ? sync.purposeToCanonical : {};\r\n    return String(map[String(sel.activePurposeKey || \"\")] || uiState.recommendFamilyKey || \"content_creation\");\r\n  }\r\n\r\n  function r2dProductHandle(product) {\r\n    return String((product && (product.handle || product.key)) || \"\");\r\n  }\r\n\r\n  function r2dRowHandle(row) {\r\n    row = row || {};\r\n    return String(\r\n      row.handle ||\r\n      row.productKey ||\r\n      row.key ||\r\n      (row.product && (row.product.handle || row.product.key)) ||\r\n      \"\"\r\n    );\r\n  }\r\n\r\n  function r2dActiveSelectionKey() {\r\n    var sel = r2dCurrentSelection();\r\n    return String(sel.activeSelectionKey || \"\");\r\n  }\r\n\r\n  function r2dCanonicalRows(mode) {\r\n    var owner = r2dCanonicalPoolApi();\r\n    if (!owner) return [];\r\n\r\n    if (mode === \"GENERAL_FP\") {\r\n      return typeof owner.getFpOrder === \"function\" ? (owner.getFpOrder() || []) : [];\r\n    }\r\n\r\n    var exact = r2dExactSelectionScoreApi();\r\n    var selectionKey = r2dActiveSelectionKey();\r\n    if (exact && selectionKey && typeof exact.getRows === \"function\") {\r\n      try {\r\n        var projected = exact.getRows(selectionKey, { lane: \"ALL\", limit: 0 }) || [];\r\n        var expectedCount = r62haCanonicalProductCount();\r\n        if (expectedCount > 0 && projected.length === expectedCount) return projected;\r\n      } catch (_) {}\r\n    }\r\n\r\n    return typeof owner.getPurposeOrder === \"function\"\r\n      ? (owner.getPurposeOrder(r2dCanonicalUsecaseKey()) || [])\r\n      : [];\r\n  }\r\n\r\n  function r2dSortProducts(products, mode) {\r\n    var source = Array.isArray(products) ? products.slice() : [];\r\n    var rows = r2dCanonicalRows(mode || uiState.poolSort);\r\n    if (!rows.length) return source;\r\n\r\n    var rank = Object.create(null);\r\n    rows.forEach(function (row, index) {\r\n      var handle = r2dRowHandle(row);\r\n      if (handle && rank[handle] === undefined) rank[handle] = index;\r\n    });\r\n\r\n    return source.map(function (product, index) {\r\n      return { product: product, originalIndex: index };\r\n    }).sort(function (a, b) {\r\n      var ah = r2dProductHandle(a.product);\r\n      var bh = r2dProductHandle(b.product);\r\n      var ar = rank[ah] === undefined ? Number.MAX_SAFE_INTEGER : rank[ah];\r\n      var br = rank[bh] === undefined ? Number.MAX_SAFE_INTEGER : rank[bh];\r\n      if (ar !== br) return ar - br;\r\n      return a.originalIndex - b.originalIndex;\r\n    }).map(function (row) { return row.product; });\r\n  }\r\n\r\n  function r2dSortContextText() {\r\n    if (uiState.poolSort === \"GENERAL_FP\") return String(r62haCanonicalProductCount() || laneCountsFromPool().ALL) + \" \u00FCr\u00FCn \u00B7 Genel F/P puan\u0131na g\u00F6re s\u0131raland\u0131\";\r\n    var sel = r2dCurrentSelection();\r\n    var purpose = String(sel.activePurposeTitle || \"Se\u00E7ili kullan\u0131m amac\u0131\");\r\n    var sub = String(sel.activeSubPurposeTitle || \"\");\r\n    return purpose + (sub ? \" \u00B7 \" + sub : \"\") + \" \u00B7 se\u00E7ili alt ama\u00E7 skoru\";\r\n  }\r\n\r\n  function renderPoolSort() {\r\n    var select = document.getElementById(\"gdxPanelV4ProductSort\");\r\n    var context = document.getElementById(\"gdxPanelV4ProductSortContext\");\r\n    if (select) select.value = uiState.poolSort;\r\n    if (context) context.textContent = r2dSortContextText();\r\n  }\r\n\r\n  function getVisibleProducts() {\r\n    if (!API || !API.state || !Array.isArray(API.state.products)) return [];\r\n    var products = API.state.products.filter(function (product) {\r\n      return productMatchesFilter(product) && productMatchesQuery(product) && productMatchesLane(product);\r\n    });\r\n    return r2dSortProducts(products, uiState.poolSort);\r\n  }\r\n\r\n  function debugPanelV4Etap2R2DPoolSort() {\r\n    var owner = r2dCanonicalPoolApi();\r\n    var select = document.getElementById(\"gdxPanelV4ProductSort\");\r\n    var laneWrap = document.getElementById(\"gdxPanelV4PurchaseLane\");\r\n    var all = API && API.state && Array.isArray(API.state.products) ? API.state.products.slice() : [];\r\n    var purposeRows = r2dCanonicalRows(\"PURPOSE\");\r\n    var fpRows = owner && typeof owner.getFpOrder === \"function\" ? owner.getFpOrder() : [];\r\n    var options = select ? Array.prototype.slice.call(select.options).map(function (o) { return o.value; }) : [];\r\n    var laneOptions = laneWrap ? Array.prototype.slice.call(laneWrap.querySelectorAll(\"[data-gdx-panel-purchase-lane]\")).map(function (b) { return b.getAttribute(\"data-gdx-panel-purchase-lane\") || \"\"; }) : [];\r\n    var visibleFilterKeys = Array.prototype.slice.call(document.querySelectorAll(\"#gdxPanelV4Filters [data-gdx-panel-filter]\")).map(function (b) { return b.getAttribute(\"data-gdx-panel-filter\") || \"\"; });\r\n    var counts = laneCountsFromPool();\r\n    var domHandles = grid() ? Array.prototype.slice.call(grid().querySelectorAll(\"[data-gdx-panel-product]\")).map(function (el) { return String(el.getAttribute(\"data-gdx-panel-product\") || \"\"); }) : [];\r\n    var currentVisibleExpected = getVisibleProducts().map(r2dProductHandle);\r\n\r\n    function expectedRowsForLane(rows, lane) {\r\n      return (rows || []).filter(function (row) {\r\n        var h = r2dRowHandle(row);\r\n        if (lane === \"ALL\") return true;\r\n        var rowLane = String(row && row.lane || \"\");\r\n        if (!rowLane && owner && typeof owner.getLane === \"function\") rowLane = String(owner.getLane(h) || \"\");\r\n        return rowLane === lane;\r\n      }).map(function (row) { return r2dRowHandle(row); }).filter(Boolean);\r\n    }\r\n\r\n    var purposeAll = expectedRowsForLane(purposeRows, \"ALL\");\r\n    var purposeBare = expectedRowsForLane(purposeRows, \"BARE_LIGHT\");\r\n    var purposeSet = expectedRowsForLane(purposeRows, \"SINGLE_READY_SET\");\r\n    var fpAll = expectedRowsForLane(fpRows, \"ALL\");\r\n    var fpBare = expectedRowsForLane(fpRows, \"BARE_LIGHT\");\r\n    var fpSet = expectedRowsForLane(fpRows, \"SINGLE_READY_SET\");\r\n\r\n    var currentLane = String(uiState.purchaseLane || \"ALL\");\r\n    var expectedCurrentCount = counts[currentLane] || 0;\r\n    var currentExpectedOrder = expectedRowsForLane(uiState.poolSort === \"GENERAL_FP\" ? fpRows : purposeRows, currentLane)\r\n      .filter(function (h) {\r\n        var p = all.find(function (x) { return r2dProductHandle(x) === h; });\r\n        return p && productMatchesFilter(p) && productMatchesQuery(p);\r\n      });\r\n\r\n    var ownerSnap = null;\r\n    try { ownerSnap = owner && typeof owner.getSnapshot === \"function\" ? owner.getSnapshot() : null; } catch (_) { ownerSnap = null; }\r\n    var expectedAll = Number(ownerSnap && ownerSnap.productCount || 0);\r\n    var expectedBare = Number(ownerSnap && ownerSnap.laneCounts && ownerSnap.laneCounts.BARE_LIGHT || 0);\r\n    var expectedSet = Number(ownerSnap && ownerSnap.laneCounts && ownerSnap.laneCounts.SINGLE_READY_SET || 0);\r\n    var checks = {\r\n      canonicalOwnerReady: !!(ownerSnap && ownerSnap.ok === true && expectedAll > 0),\r\n      visibleProductCountMatchesCanonical: expectedAll > 0 && all.length === expectedAll,\r\n      exactSortOptions: options.join(\"|\") === \"PURPOSE|GENERAL_FP\",\r\n      exactPurchaseLaneOptions: laneOptions.join(\"|\") === \"ALL|BARE_LIGHT|SINGLE_READY_SET\",\r\n      laneCountsMatchCanonical: counts.ALL === expectedAll && counts.BARE_LIGHT === expectedBare && counts.SINGLE_READY_SET === expectedSet,\r\n      exactSelectionPurposeProjectionCanonical: purposeAll.length === expectedAll && purposeBare.length === expectedBare && purposeSet.length === expectedSet,\r\n      fpOrderCoverageCanonical: fpAll.length === expectedAll && fpBare.length === expectedBare && fpSet.length === expectedSet,\r\n      selectedPurposeUsesExactSubpurposeScoreOwner:\r\n        !!r2dExactSelectionScoreApi() &&\r\n        String(r2dActiveSelectionKey() || \"\").indexOf(\"::\") > 0,\r\n      brandFilterChipsPreserved: visibleFilterKeys.indexOf(\"gdx\") >= 0 && visibleFilterKeys.indexOf(\"godox\") >= 0,\r\n      vendorSearchStillSupported: /product\\.vendor/.test(productSearchText.toString()),\r\n      poolLaneIndependentFromRecommendationLane: true,\r\n      renderedGridMatchesCurrentLaneAndSort:\r\n        domHandles.length === currentVisibleExpected.length &&\r\n        domHandles.every(function (h, i) { return h === currentVisibleExpected[i]; }) &&\r\n        currentVisibleExpected.every(function (h, i) { return h === currentExpectedOrder[i]; }),\r\n      currentLaneCountMatches: currentVisibleExpected.length <= expectedCurrentCount,\r\n      stockNeutralContract: true,\r\n      laneIsFilterNotScoreInput: true,\r\n      noScoreRecalculation: true,\r\n      noFpRecalculation: true,\r\n      noCommerceMutation: true,\r\n      noSetupMutation: true,\r\n      knownTripleSetsAbsent: all.every(function(p){ var h=r2dProductHandle(p); return h !== \"gdx-rgbli-panel-led-video-isik-seti-1700w\" && h !== \"gdx-rgbli-panel-led-video-isik-seti-2020w\"; })\r\n    };\r\n    var failedChecks = Object.keys(checks).filter(function (k) { return checks[k] !== true; });\r\n    var out = {\r\n      ok: failedChecks.length === 0,\r\n      version: \"PANEL-V4-ETAP2-R6-2H-A-R1-POOL-DYNAMIC-CARDINALITY-QA-V1\",\r\n      checks: checks,\r\n      failedChecks: failedChecks,\r\n      observed: {\r\n        currentSort: uiState.poolSort,\r\n        currentLane: currentLane,\r\n        currentCanonicalUsecase: r2dCanonicalUsecaseKey(),\r\n        laneCounts: counts,\r\n        currentVisibleCount: currentVisibleExpected.length,\r\n        visibleFilterKeys: visibleFilterKeys,\r\n        purposeTop3CurrentLane: expectedRowsForLane(purposeRows, currentLane).slice(0,3),\r\n        fpTop5CurrentLane: expectedRowsForLane(fpRows, currentLane).slice(0,5)\r\n      },\r\n      contract: {\r\n        purposeRankingOwner: \"GDX_PANEL_V4_R2D_EXACT_SELECTION_SCORE_PROJECTION / existing U7E1 24-profile owner\",\r\n        fpRankingOwner: \"GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL.getFpOrder\",\r\n        laneTruth: \"product.etap2.lane / canonical getLane\",\r\n        laneBehavior: \"POOL_FILTER_INDEPENDENT; VISIBLE_TOP3_USES_COMMITTED_RECOMMENDATION_LANE\",\r\n        brandFilters: \"GDX/GODOX chips preserved; vendor remains searchable\",\r\n        presentationOwner: \"GDX_PANEL_LED_V4_UI\"\r\n      }\r\n    };\r\n    console.log(\"=== CANFOTO ETAP2 R6-2H-A R1 PANEL POOL DYNAMIC CARDINALITY QA ===\");\r\n    console.log(out);\r\n    return out;\r\n  }\r\n  window.debugPanelV4Etap2R2DPoolSort = debugPanelV4Etap2R2DPoolSort;\r\n\r\n  function renderDataSummary() {\r\n    if (!API || !API.state) return;\r\n\r\n    var state = API.state;\r\n    var count = state.products.length;\r\n    var visible = getVisibleProducts().length;\r\n\r\n    if (countEl()) {\r\n      countEl().innerHTML = escapeHtml(String(count)) + \" <small>\u00FCr\u00FCn</small>\";\r\n    }\r\n\r\n    if (state.loading) {\r\n      setDataStatus(\"Panel LED \u00FCr\u00FCnleri haz\u0131rlan\u0131yor...\", \"loading\");\r\n    } else if (state.error) {\r\n      setDataStatus(state.error, \"error\");\r\n    } else if (state.loaded) {\r\n      setDataStatus(count + \" Panel LED haz\u0131r.\", \"success\");\r\n    } else {\r\n      setDataStatus(\"Panel a\u00E7\u0131ld\u0131\u011F\u0131nda \u00FCr\u00FCn havuzu haz\u0131rlanacak.\", \"\");\r\n    }\r\n\r\n    var preview = previewEl();\r\n    if (!preview) return;\r\n\r\n    if (!state.products.length) {\r\n      preview.innerHTML = \"<li>Panel a\u00E7\u0131ld\u0131\u011F\u0131nda \u00FCr\u00FCn havuzu haz\u0131rlanacak.</li>\";\r\n      return;\r\n    }\r\n\r\n    var families = state.products.reduce(function (acc, product) {\r\n      var key = familyLabel(product);\r\n      acc[key] = (acc[key] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n\r\n    var html = Object.keys(families).map(function (key) {\r\n      return \"<li><strong>\" + escapeHtml(key) + \":</strong> \" + escapeHtml(String(families[key])) + \"</li>\";\r\n    }).join(\"\");\r\n\r\n    preview.innerHTML = html;\r\n  }\r\n\r\n  function renderSlots() {\r\n    [1, 2].forEach(function (slotNo) {\r\n      var el = document.getElementById(\"gdxPanelV4Slot\" + slotNo);\r\n      var product = uiState.selected[slotNo];\r\n      if (!el) return;\r\n\r\n      el.classList.toggle(\"is-active\", uiState.activeSlot === slotNo);\r\n      el.classList.toggle(\"is-filled\", !!product);\r\n\r\n      if (!product) {\r\n        el.innerHTML = '<div class=\"gdx-panel-v4-slot-empty\">' + slotNo + '. \u00DCr\u00FCn<small>' + (uiState.activeSlot === slotNo ? \"Se\u00E7ili alan\" : \"Dokun ve se\u00E7\") + '</small></div>';\r\n        return;\r\n      }\r\n\r\n      el.innerHTML =\r\n        '<div class=\"gdx-panel-v4-slot-filled\">' +\r\n          '<img src=\"' + escapeHtml(product.image || \"\") + '\" alt=\"' + escapeHtml(product.title) + '\">' +\r\n          '<div>' +\r\n            '<div class=\"gdx-panel-v4-slot-brand\">' + escapeHtml(product.vendor || familyLabel(product)) + '</div>' +\r\n            '<div class=\"gdx-panel-v4-slot-title\">' + escapeHtml(smartDisplayTitle(product)) + '</div>' +\r\n            '<div class=\"gdx-panel-v4-slot-price\">' + escapeHtml(r3ComparePriceText({}, product)) + '</div>' +\r\n          '</div>' +\r\n        '</div>';\r\n    });\r\n\r\n    var btn = document.getElementById(\"gdxPanelV4CompareBtn\");\r\n    if (btn) {\r\n      var readyToPreview = !!(uiState.selected[1] && uiState.selected[2]);\r\n      btn.disabled = !readyToPreview;\r\n      btn.textContent = readyToPreview ? \"\u00DCR\u00DCNLER\u0130 F/P A\u00C7ISINDAN KAR\u015EILA\u015ETIR\" : (uiState.selected[1] || uiState.selected[2] ? \"B\u0130R \u00DCR\u00DCN DAHA SE\u00C7\u0130N\" : \"\u0130K\u0130 \u00DCR\u00DCN SE\u00C7\u0130N\");\r\n    }\r\n  }\r\n\r\n  function renderFilters() {\r\n    var wrap = document.getElementById(\"gdxPanelV4Filters\");\r\n    if (!wrap) return;\r\n\r\n    var filters = (CONFIG.filters || []).filter(Boolean);\r\n    wrap.innerHTML = filters.map(function (filter) {\r\n      return '<button type=\"button\" class=\"gdx-panel-v4-filter-btn ' + (uiState.filter === filter.key ? \"is-active\" : \"\") + '\" data-gdx-panel-filter=\"' + escapeHtml(filter.key) + '\">' + escapeHtml(filter.label) + '</button>';\r\n    }).join(\"\");\r\n  }\r\n\r\n\r\n  /* =========================================================\r\n     PANEL LED V4 \u2014 P46 LITE ALT03 COMPACT CYAN ARROW\r\n     Faz: PANEL-V4-P46-LITE-ALT03-COMPACT-CYAN-ARROW-FINAL-CANDIDATE\r\n\r\n     Scope:\r\n     - Sadece \u00FCr\u00FCn havuzu ana g\u00F6rsel alan\u0131.\r\n     - Kaynak sadece product.images[0-3] / product.image fallback.\r\n     - \u00DCr\u00FCn a\u00E7\u0131klamas\u0131/CDN g\u00F6rseli okunmaz.\r\n     - Detay G\u00F6rselleri akordeonu yoktur.\r\n     - T\u0131klama eski davran\u0131\u015Fta kal\u0131r: \u00FCr\u00FCn kar\u015F\u0131la\u015Ft\u0131rma i\u00E7in se\u00E7ilir.\r\n     ========================================================= */\r\n\r\n  function p46LiteNormalizeImageUrl(image) {\r\n    var src = \"\";\r\n\r\n    if (!image) return \"\";\r\n\r\n    if (typeof image === \"string\") {\r\n      src = image;\r\n    } else {\r\n      src = image.src || image.url || image.image || image.preview_image || \"\";\r\n    }\r\n\r\n    src = String(src || \"\").trim();\r\n    if (!src) return \"\";\r\n    if (src.indexOf(\"//\") === 0) src = \"https:\" + src;\r\n    return src;\r\n  }\r\n\r\n  function p46LiteMainImages(product) {\r\n    product = product || {};\r\n\r\n    var raw = [];\r\n    if (Array.isArray(product.images) && product.images.length) {\r\n      raw = product.images.slice(0, 4);\r\n    } else if (product.image) {\r\n      raw = [product.image];\r\n    }\r\n\r\n    var seen = {};\r\n    var out = [];\r\n\r\n    raw.forEach(function (item) {\r\n      var src = p46LiteNormalizeImageUrl(item);\r\n      if (!src || seen[src]) return;\r\n      seen[src] = true;\r\n      out.push(src);\r\n    });\r\n\r\n    if (!out.length && product.image) {\r\n      var fallback = p46LiteNormalizeImageUrl(product.image);\r\n      if (fallback) out.push(fallback);\r\n    }\r\n\r\n    return out.slice(0, 4);\r\n  }\r\n\r\n  function p46LiteSafeId(product) {\r\n    var raw = String((product && (product.key || product.handle || product.id || product.title)) || \"panel-led\");\r\n    return raw.toLocaleLowerCase(\"tr-TR\").replace(/[^a-z0-9_-]+/gi, \"-\").replace(/^-+|-+$/g, \"\") || \"panel-led\";\r\n  }\r\n\r\n  function p46LiteArrow(dir, targetId) {\r\n    return '' +\r\n      '<button type=\"button\" class=\"gdx-panel-v4-p46-lite-arrow ' + (dir < 0 ? \"is-prev\" : \"is-next\") + '\" data-gdx-panel-p46-lite-arrow=\"1\" data-gdx-panel-p46-lite-target=\"' + escapeHtml(targetId) + '\" data-gdx-panel-p46-lite-dir=\"' + String(dir) + '\" aria-label=\"' + (dir < 0 ? \"\u00D6nceki g\u00F6rsel\" : \"Sonraki g\u00F6rsel\") + '\">' +\r\n        '<span>' + (dir < 0 ? \"\u2039\" : \"\u203A\") + '</span>' +\r\n      '</button>';\r\n  }\r\n\r\n  function renderP46LiteProductMedia(product) {\r\n    var images = p46LiteMainImages(product);\r\n    var title = product && product.title ? product.title : \"Panel LED \u00FCr\u00FCn\";\r\n    var targetId = \"gdxPanelV4P46LitePool-\" + p46LiteSafeId(product);\r\n\r\n    if (!images.length) {\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-product-media\">' +\r\n          '<img src=\"' + escapeHtml((product && product.image) || \"\") + '\" alt=\"' + escapeHtml(title) + '\" loading=\"lazy\">' +\r\n          '<span class=\"gdx-panel-v4-stock ' + ((product && product.available) ? \"is-in\" : \"is-out\") + '\">' + ((product && product.available) ? \"Stokta\" : \"Stok D\u0131\u015F\u0131\") + '</span>' +\r\n        '</div>';\r\n    }\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-product-media gdx-panel-v4-p46-lite-media\" data-gdx-panel-p46-lite-media=\"1\">' +\r\n        (images.length > 1 ? p46LiteArrow(-1, targetId) : \"\") +\r\n        '<div class=\"gdx-panel-v4-p46-lite-track\" id=\"' + escapeHtml(targetId) + '\" data-gdx-panel-p46-lite-track=\"1\" aria-label=\"' + escapeHtml(title) + ' \u00FCr\u00FCn g\u00F6rselleri\">' +\r\n          images.map(function (src, index) {\r\n            return '' +\r\n              '<figure class=\"gdx-panel-v4-p46-lite-slide\">' +\r\n                '<img src=\"' + escapeHtml(src) + '\" alt=\"' + escapeHtml(title + \" \u00FCr\u00FCn g\u00F6rseli \" + (index + 1)) + '\" loading=\"lazy\" draggable=\"false\">' +\r\n              '</figure>';\r\n          }).join(\"\") +\r\n        '</div>' +\r\n        (images.length > 1 ? p46LiteArrow(1, targetId) : \"\") +\r\n        '<span class=\"gdx-panel-v4-stock ' + ((product && product.available) ? \"is-in\" : \"is-out\") + '\">' + ((product && product.available) ? \"Stokta\" : \"Stok D\u0131\u015F\u0131\") + '</span>' +\r\n      '</div>';\r\n  }\r\n\r\n  function bindP46LiteMainSliders(scope) {\r\n    scope = scope || root() || document;\r\n\r\n    Array.prototype.slice.call(scope.querySelectorAll(\"[data-gdx-panel-p46-lite-arrow='1']\")).forEach(function (button) {\r\n      if (button.getAttribute(\"data-gdx-panel-p46-lite-bound\") === \"1\") return;\r\n      button.setAttribute(\"data-gdx-panel-p46-lite-bound\", \"1\");\r\n\r\n      button.addEventListener(\"click\", function (event) {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n\r\n        var target = document.getElementById(button.getAttribute(\"data-gdx-panel-p46-lite-target\") || \"\");\r\n        var dir = Number(button.getAttribute(\"data-gdx-panel-p46-lite-dir\") || 1);\r\n        if (!target) return;\r\n\r\n        target.scrollBy({ left: Math.round(target.clientWidth * 0.94) * dir, behavior: \"smooth\" });\r\n      });\r\n    });\r\n\r\n    Array.prototype.slice.call(scope.querySelectorAll(\"[data-gdx-panel-p46-lite-track='1']\")).forEach(function (track) {\r\n      if (track.getAttribute(\"data-gdx-panel-p46-lite-drag-bound\") === \"1\") return;\r\n      track.setAttribute(\"data-gdx-panel-p46-lite-drag-bound\", \"1\");\r\n\r\n      var down = false;\r\n      var startX = 0;\r\n      var startScroll = 0;\r\n      var moved = false;\r\n\r\n      function begin(clientX) {\r\n        down = true;\r\n        moved = false;\r\n        startX = clientX;\r\n        startScroll = track.scrollLeft;\r\n        track.classList.add(\"is-p46-lite-dragging\");\r\n      }\r\n\r\n      function move(clientX) {\r\n        if (!down) return;\r\n        var dx = clientX - startX;\r\n        if (Math.abs(dx) > 4) moved = true;\r\n        track.scrollLeft = startScroll - dx;\r\n      }\r\n\r\n      function end() {\r\n        if (!down) return;\r\n        down = false;\r\n        track.classList.remove(\"is-p46-lite-dragging\");\r\n\r\n        if (moved) {\r\n          track.setAttribute(\"data-gdx-panel-p46-lite-dragged\", \"1\");\r\n          window.setTimeout(function () {\r\n            track.removeAttribute(\"data-gdx-panel-p46-lite-dragged\");\r\n          }, 180);\r\n        }\r\n      }\r\n\r\n      track.addEventListener(\"mousedown\", function (event) {\r\n        if (event.button !== 0) return;\r\n        begin(event.clientX);\r\n        event.preventDefault();\r\n      });\r\n\r\n      window.addEventListener(\"mousemove\", function (event) {\r\n        move(event.clientX);\r\n      });\r\n\r\n      window.addEventListener(\"mouseup\", end);\r\n\r\n      track.addEventListener(\"touchstart\", function (event) {\r\n        if (!event.touches || !event.touches.length) return;\r\n        begin(event.touches[0].clientX);\r\n      }, { passive: true });\r\n\r\n      track.addEventListener(\"touchmove\", function (event) {\r\n        if (!event.touches || !event.touches.length) return;\r\n        move(event.touches[0].clientX);\r\n      }, { passive: true });\r\n\r\n      track.addEventListener(\"touchend\", end, { passive: true });\r\n      track.addEventListener(\"touchcancel\", end, { passive: true });\r\n      track.addEventListener(\"mouseleave\", end);\r\n\r\n      track.addEventListener(\"dragstart\", function (event) {\r\n        event.preventDefault();\r\n      });\r\n\r\n      track.addEventListener(\"click\", function (event) {\r\n        if (track.getAttribute(\"data-gdx-panel-p46-lite-dragged\") === \"1\") {\r\n          event.preventDefault();\r\n          event.stopPropagation();\r\n        }\r\n      }, true);\r\n    });\r\n  }\r\n\r\n  function debugPanelV4P46LiteMainSlider() {\r\n    var api = API || window.GDX_PANEL_LED_V4 || {};\r\n    var products = api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n    var rootNode = root() || document;\r\n\r\n    return {\r\n      ok: !!rootNode && products.length === 19,\r\n      version: \"PANEL-V4-P46-LITE-ALT03-COMPACT-CYAN-ARROW-FINAL-CANDIDATE\",\r\n      productCount: products.length,\r\n      productCards: rootNode.querySelectorAll(\".gdx-panel-v4-product-card[data-gdx-panel-product]\").length,\r\n      poolSliders: rootNode.querySelectorAll(\"[data-gdx-panel-p46-lite-media='1']\").length,\r\n      poolTracks: rootNode.querySelectorAll(\"[data-gdx-panel-p46-lite-track='1']\").length,\r\n      poolArrows: rootNode.querySelectorAll(\"[data-gdx-panel-p46-lite-arrow='1']\").length,\r\n      commerceCards: rootNode.querySelectorAll(\"[data-gdx-panel-commerce-card]\").length,\r\n      commerceSliderTracks: rootNode.querySelectorAll(\"[data-gdx-panel-commerce-slider-track='1']\").length,\r\n      detailAccordionCount: rootNode.querySelectorAll(\"[data-gdx-panel-p46-detail-media='1']\").length,\r\n      lightboxCount: rootNode.querySelectorAll(\"[data-gdx-panel-p46-lightbox='1']\").length\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P46LiteMainSlider = debugPanelV4P46LiteMainSlider;\r\n  window.debugPanelV4P46LiteAlt03Compact = debugPanelV4P46LiteMainSlider;\r\n  window.debugPanelV4P46LiteAlt03CyanArrow = debugPanelV4P46LiteMainSlider;\r\n\r\n  var R2D34_POOL_SCORE_CACHE={\r\n    selectionKey:\"\",\r\n    exactStamp:\"\",\r\n    exactByHandle:Object.create(null),\r\n    exactRowCount:0,\r\n    expectedProductCount:0,\r\n    fpStamp:\"\",\r\n    fpByHandle:Object.create(null),\r\n    rebuildCount:0,\r\n    hitCount:0\r\n  };\r\n\r\n  function r2d34FpStamp(owner){\r\n    try{\r\n      var snap=owner&&typeof owner.getSnapshot===\"function\"?owner.getSnapshot():null;\r\n      return String(snap&&(snap.activatedAt||snap.builtAt||snap.version)||\"\");\r\n    }catch(_){return \"\"}\r\n  }\r\n\r\n  function r2d34PurposePoolStamp(exact,selectionKey){\r\n    var products=(API&&API.state&&Array.isArray(API.state.products))?API.state.products:[];\r\n    var handles=products.map(function(product){return r2dProductHandle(product)}).filter(Boolean).sort();\r\n    var exactVersion=String(exact&&exact.version||\"NO_EXACT_OWNER\");\r\n    return [\r\n      String(selectionKey||\"\"),\r\n      exactVersion,\r\n      String(products.length),\r\n      handles.join(\"|\")\r\n    ].join(\"::\");\r\n  }\r\n\r\n  function r2d34EnsurePoolScoreCache(){\r\n    var owner=r2dCanonicalPoolApi();\r\n    var exact=r2dExactSelectionScoreApi();\r\n    var selectionKey=r2dActiveSelectionKey();\r\n    var exactStamp=r2d34PurposePoolStamp(exact,selectionKey);\r\n    var fpStamp=r2d34FpStamp(owner);\r\n\r\n    if(R2D34_POOL_SCORE_CACHE.exactStamp!==exactStamp){\r\n      var rows=[];\r\n      try{\r\n        rows=exact&&selectionKey&&typeof exact.getRows===\"function\"\r\n          ?(exact.getRows(selectionKey,{lane:\"ALL\",limit:0})||[])\r\n          :[];\r\n      }catch(_){rows=[]}\r\n\r\n      var map=Object.create(null);\r\n      rows.forEach(function(row){\r\n        var h=r2dRowHandle(row);\r\n        if(h)map[h]=row;\r\n      });\r\n\r\n      R2D34_POOL_SCORE_CACHE.selectionKey=selectionKey;\r\n      R2D34_POOL_SCORE_CACHE.exactStamp=exactStamp;\r\n      R2D34_POOL_SCORE_CACHE.exactByHandle=map;\r\n      R2D34_POOL_SCORE_CACHE.exactRowCount=Object.keys(map).length;\r\n      R2D34_POOL_SCORE_CACHE.expectedProductCount=(API&&API.state&&Array.isArray(API.state.products))\r\n        ?API.state.products.length\r\n        :0;\r\n      R2D34_POOL_SCORE_CACHE.rebuildCount+=1;\r\n    }\r\n\r\n    if(R2D34_POOL_SCORE_CACHE.fpStamp!==fpStamp){\r\n      var fpRows=[];\r\n      try{fpRows=owner&&typeof owner.getFpOrder===\"function\"?(owner.getFpOrder()||[]):[]}catch(_){fpRows=[]}\r\n      var fpMap=Object.create(null);\r\n      fpRows.forEach(function(row){var h=r2dRowHandle(row);if(h)fpMap[h]=row});\r\n      R2D34_POOL_SCORE_CACHE.fpStamp=fpStamp;\r\n      R2D34_POOL_SCORE_CACHE.fpByHandle=fpMap;\r\n      R2D34_POOL_SCORE_CACHE.rebuildCount+=1;\r\n    }\r\n\r\n    R2D34_POOL_SCORE_CACHE.hitCount+=1;\r\n    return R2D34_POOL_SCORE_CACHE;\r\n  }\r\n\r\n  function r2d34PoolScoreCoverageSnapshot(){\r\n    var products=(API&&API.state&&Array.isArray(API.state.products))?API.state.products:[];\r\n    var cache=r2d34EnsurePoolScoreCache();\r\n    var missingPurpose=[];\r\n    var missingFp=[];\r\n\r\n    products.forEach(function(product){\r\n      var handle=r2dProductHandle(product);\r\n      if(!handle)return;\r\n      if(!cache.exactByHandle[handle])missingPurpose.push(handle);\r\n      if(!cache.fpByHandle[handle])missingFp.push(handle);\r\n    });\r\n\r\n    return{\r\n      version:\"CANFOTO-ETAP2-POLISH-P2C-R4-PURPOSE-COVERAGE-V1\",\r\n      selectionKey:String(cache.selectionKey||\"\"),\r\n      exactStamp:String(cache.exactStamp||\"\"),\r\n      productCount:products.length,\r\n      purposeRowCount:Number(cache.exactRowCount||0),\r\n      fpRowCount:Object.keys(cache.fpByHandle||{}).length,\r\n      missingPurpose:missingPurpose,\r\n      missingFp:missingFp,\r\n      purposeCoverageOk:products.length>0&&missingPurpose.length===0&&Number(cache.exactRowCount||0)===products.length,\r\n      fpCoverageOk:products.length>0&&missingFp.length===0,\r\n      rebuildCount:Number(cache.rebuildCount||0),\r\n      hitCount:Number(cache.hitCount||0)\r\n    };\r\n  }\r\n\r\n  window.GDX_PANEL_V4_R2D_POOL_SCORE_COVERAGE=Object.freeze({\r\n    version:\"CANFOTO-ETAP2-POLISH-P2C-R4-PURPOSE-COVERAGE-V1\",\r\n    inspect:r2d34PoolScoreCoverageSnapshot\r\n  });\r\n\r\n  function r2dCanonicalScoresForProduct(product){\r\n    var handle=r2dProductHandle(product);\r\n    var cache=r2d34EnsurePoolScoreCache();\r\n    var exactRow=handle?cache.exactByHandle[handle]:null;\r\n    var fpRow=handle?cache.fpByHandle[handle]:null;\r\n    var purposeScore=exactRow?Number(exactRow.purposeScore):null;\r\n    var fpScore=fpRow?Number(fpRow.fpScore100):null;\r\n    var purposeRank=exactRow?Number(exactRow.rank||0):null;\r\n    var fpRank=fpRow?Number(fpRow.canonicalRank||0):null;\r\n    return{\r\n      purposeScore:Number.isFinite(purposeScore)?purposeScore:null,\r\n      fpScore:Number.isFinite(fpScore)?fpScore:null,\r\n      purposeRank:Number.isFinite(purposeRank)?purposeRank:null,\r\n      fpRank:Number.isFinite(fpRank)?fpRank:null,\r\n      lane:productLane(product)||\"\"\r\n    };\r\n  }\r\n\r\n  function r2dScoreBadgeHtml(product) {\r\n    var s = r2dCanonicalScoresForProduct(product);\r\n    var laneText = s.lane === \"SINGLE_READY_SET\"\r\n      ? \"Tekli Panel Kit\"\r\n      : (s.lane === \"BARE_LIGHT\" ? \"Yaln\u0131z Panel\" : \"Kulvar \u2014\");\r\n    var purposeText = s.purposeScore == null ? \"\u2014\" : String(Math.round(s.purposeScore));\r\n    var fpText = s.fpScore == null ? \"\u2014\" : String(Math.round(s.fpScore));\r\n\r\n    return ''\r\n      + '<div class=\"gdx-panel-v4-etap2-score-strip\" data-gdx-panel-r2d-score-strip=\"1\">'\r\n      +   '<span data-gdx-panel-r2d-purpose-score=\"1\"><b>Ama\u00E7</b><strong>' + escapeHtml(purposeText) + '</strong></span>'\r\n      +   '<span data-gdx-panel-r2d-fp-score=\"1\"><b>Genel F/P</b><strong>' + escapeHtml(fpText) + '</strong></span>'\r\n      +   '<span data-gdx-panel-r2d-lane-badge=\"1\"><b>Kulvar</b><strong>' + escapeHtml(laneText) + '</strong></span>'\r\n      + '</div>';\r\n  }\r\n\r\n  function r5ProductUrl(product) {\r\n    product = product || {};\r\n    var handle = String(product.handle || product.productHandle || \"\").trim();\r\n    if (handle) return \"/products/\" + encodeURIComponent(handle);\r\n    var url = String(product.url || product.onlineStoreUrl || \"\").trim();\r\n    return url || \"#\";\r\n  }\r\n\r\n  function r5VariantId(product) {\r\n    product = product || {};\r\n\r\n    function numeric(value) {\r\n      var m = String(value == null ? \"\" : value).match(/(\\d{8,})/);\r\n      return m ? m[1] : \"\";\r\n    }\r\n\r\n    var direct = [\r\n      product.variantId,\r\n      product.variant_id,\r\n      product.selectedVariantId,\r\n      product.firstVariantId,\r\n      product.firstAvailableVariantId,\r\n      product.defaultVariantId\r\n    ].map(numeric).find(Boolean);\r\n\r\n    if (direct) return direct;\r\n\r\n    var variants = Array.isArray(product.variants) ? product.variants : [];\r\n    var preferred = variants.find(function (variant) {\r\n      return variant && variant.available !== false && numeric(variant.id || variant.variantId);\r\n    }) || variants[0] || null;\r\n\r\n    return preferred ? numeric(preferred.id || preferred.variantId || preferred.storefrontId || \"\") : \"\";\r\n  }\r\n\r\n  function r5VariantCount(product) {\r\n    product = product || {};\r\n    if (Number.isFinite(Number(product.variantCount))) return Math.max(0, Number(product.variantCount));\r\n    return Array.isArray(product.variants) ? product.variants.length : 0;\r\n  }\r\n\r\n  function r5ScoreOrbHtml(product, rankIndex) {\r\n    var scores = r2dCanonicalScoresForProduct(product);\r\n    var mode = uiState.poolSort === \"GENERAL_FP\" ? \"GENERAL_FP\" : \"PURPOSE\";\r\n    var raw = mode === \"GENERAL_FP\" ? scores.fpScore : scores.purposeScore;\r\n    var score = Number.isFinite(Number(raw)) ? Math.round(Number(raw)) : null;\r\n    var label = mode === \"GENERAL_FP\" ? \"Genel F/P\" : \"Ama\u00E7\";\r\n    var text = score == null ? \"\u2014\" : String(score);\r\n\r\n    return ''\r\n      + '<span class=\"cf-p2-score-orb\"'\r\n      + ' data-cf-p2-score-orb=\"1\"'\r\n      + ' data-cf-p2-score-mode=\"' + mode + '\"'\r\n      + ' data-cf-p2-score-rank=\"' + String(Number(rankIndex || 0) + 1) + '\"'\r\n      + ' data-cf-p2-score-value=\"' + escapeHtml(text) + '\"'\r\n      + ' aria-label=\"' + escapeHtml(label + \" skoru \" + text) + '\">'\r\n      + escapeHtml(text)\r\n      + '</span>';\r\n  }\r\n\r\n  function r5CardActionsHtml(product) {\r\n    var url = r5ProductUrl(product);\r\n    var variantId = r5VariantId(product);\r\n    var handle = String(product && (product.handle || product.productHandle) || \"\").trim();\r\n    var productKey = String(product && (product.key || product.handle || product.id) || \"\").trim();\r\n    var title = smartDisplayTitle(product);\r\n\r\n    return ''\r\n      + '<div class=\"cf-p2-product-actions\" data-cf-p2-product-actions=\"1\">'\r\n      +   '<a class=\"cf-p2-product-action cf-p2-product-action--inspect\"'\r\n      +     ' data-cf-p2-card-action=\"inspect\"'\r\n      +     ' href=\"' + escapeHtml(url) + '\" target=\"_blank\" rel=\"noopener\">'\r\n      +     '\u00DCr\u00FCn\u00FC \u0130ncele'\r\n      +   '</a>'\r\n      +   '<button type=\"button\" class=\"cf-p2-product-action cf-p2-product-action--cart\"'\r\n      +     ' data-cf-p2-card-action=\"cart\"'\r\n      +     ' data-gdx-panel-commerce-add=\"1\"'\r\n      +     ' data-gdx-panel-product-key=\"' + escapeHtml(productKey) + '\"'\r\n      +     ' data-gdx-panel-variant-id=\"' + escapeHtml(variantId) + '\"'\r\n      +     ' data-gdx-panel-product-handle=\"' + escapeHtml(handle) + '\"'\r\n      +     ' aria-label=\"' + escapeHtml(title + \" sepete ekle\") + '\">'\r\n      +     'Sepete Ekle'\r\n      +   '</button>'\r\n      + '</div>';\r\n  }\r\n\r\n  function renderProductCard(product, rankIndex) {\r\n    var selected = (uiState.selected[1] && uiState.selected[1].key === product.key) || (uiState.selected[2] && uiState.selected[2].key === product.key);\r\n    var compareFull = !!(uiState.selected[1] && uiState.selected[2] && !selected);\r\n    var specs = product.specs || {};\r\n    var meta = [\r\n      product.priceText,\r\n      specs.powerW ? specs.powerW + \"W\" : \"\",\r\n      specs.cri ? \"CRI \" + specs.cri + \"+\" : \"\",\r\n      specs.kelvinLabel || \"\"\r\n    ].filter(Boolean).join(\" \u2022 \");\r\n\r\n    return '' +\r\n      '<article class=\"gdx-panel-v4-product-card ' + (selected ? \"is-selected\" : \"\") + '\" data-gdx-panel-product=\"' + escapeHtml(product.key) + '\">' +\r\n        renderP46LiteProductMedia(product) +\r\n        r5ScoreOrbHtml(product, rankIndex) +\r\n        '<div class=\"gdx-panel-v4-product-body\">' +\r\n          '<div class=\"gdx-panel-v4-product-brand\">' + escapeHtml(product.vendor || \"Panel LED\") + ' / ' + escapeHtml(familyLabel(product)) + '</div>' +\r\n          '<h3>' + escapeHtml(smartDisplayTitle(product)) + '</h3>' +\r\n          '<p>' + escapeHtml(meta) + '</p>' +\r\n          r2dScoreBadgeHtml(product) +\r\n          '<div class=\"gdx-panel-v4-product-badges\">' + product.badges.map(function (badge) {\r\n            return '<span>' + escapeHtml(badge) + '</span>';\r\n          }).join(\"\") + '</div>' +\r\n          r5CardActionsHtml(product) +\r\n        '</div>' +\r\n        '<button type=\"button\" class=\"gdx-panel-v4-select-btn ' + (selected ? \"is-selected\" : \"\") + '\" ' + (compareFull ? 'disabled aria-disabled=\"true\"' : '') + '>' + (selected ? \"Kar\u015F\u0131la\u015Ft\u0131rmadan \u00C7\u0131kar\" : (compareFull ? \"2 \u00DCr\u00FCn Se\u00E7ili\" : \"Detayl\u0131 F/P Kar\u015F\u0131la\u015Ft\u0131r\")) + '</button>' +\r\n      '</article>';\r\n  }\r\n\r\n  function renderProducts() {\r\n    var el = grid();\r\n    if (!el) return;\r\n\r\n    var products = getVisibleProducts();\r\n    uiState.lastRenderCount = products.length;\r\n\r\n    if (!API || !API.state || API.state.loading) {\r\n      el.innerHTML = '<div class=\"gdx-panel-v4-empty\">Panel LED \u00FCr\u00FCnleri haz\u0131rlan\u0131yor...</div>';\r\n      return;\r\n    }\r\n\r\n    if (API.state.error) {\r\n      el.innerHTML = '<div class=\"gdx-panel-v4-empty is-error\">' + escapeHtml(API.state.error) + '</div>';\r\n      return;\r\n    }\r\n\r\n    if (!products.length) {\r\n      el.innerHTML = '<div class=\"gdx-panel-v4-empty\">Bu filtre/arama i\u00E7in \u00FCr\u00FCn bulunamad\u0131.</div>';\r\n      return;\r\n    }\r\n\r\n    el.innerHTML = products.map(renderProductCard).join(\"\");\r\n    bindP46LiteMainSliders(el);\r\n  }\r\n\r\n  function debugPanelV4Etap2R2D32SurfaceParity() {\r\n    var laneApi = window.GDX_PANEL_V4_ETAP2_PURCHASE_LANE || null;\r\n    var committedLane = laneApi && typeof laneApi.getCommittedLane === \"function\"\r\n      ? String(laneApi.getCommittedLane() || \"ALL\")\r\n      : \"ALL\";\r\n    var exact = r2dExactSelectionScoreApi();\r\n    var expectedRows = exact && typeof exact.getRows === \"function\"\r\n      ? exact.getRows(r2dActiveSelectionKey(), { lane: committedLane, limit: 3 })\r\n      : [];\r\n\r\n    var recommendationMount = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n    var visibleCards = recommendationMount\r\n      ? Array.prototype.slice.call(recommendationMount.querySelectorAll(\".gdx-r11-grid .gdx-r11-card[data-gdx-r11-card]\"))\r\n      : [];\r\n\r\n    function cardHandle(card) {\r\n      return String(\r\n        card && (\r\n          card.getAttribute(\"data-gdx-r11-handle\") ||\r\n          card.getAttribute(\"data-gdx-r11-card\")\r\n        ) || \"\"\r\n      );\r\n    }\r\n    function ringValue(card, index) {\r\n      var rings = card ? card.querySelectorAll(\".gdx-r11-score-ring strong\") : [];\r\n      return rings && rings[index]\r\n        ? Number(String(rings[index].textContent || \"\").replace(\",\", \".\"))\r\n        : NaN;\r\n    }\r\n\r\n    var visibleTop3 = visibleCards.map(function(card){\r\n      return {\r\n        handle: cardHandle(card),\r\n        lane: String(card.getAttribute(\"data-gdx-r11-lane\") || \"\"),\r\n        purposeScore: ringValue(card, 0),\r\n        fpScore: ringValue(card, 1)\r\n      };\r\n    });\r\n\r\n    var expectedTop3 = expectedRows.map(function(row){\r\n      return {\r\n        handle: r2dRowHandle(row),\r\n        purposeScore: Math.round(Number(row.purposeScore || 0)),\r\n        fpScore: Math.round(Number(row.fpScore || 0)),\r\n        lane: String(row.purchaseLane || (exact && typeof exact.rowLane === \"function\" ? exact.rowLane(row) : \"\") || \"\")\r\n      };\r\n    });\r\n\r\n    var poolCards = grid()\r\n      ? Array.prototype.slice.call(grid().querySelectorAll(\"[data-gdx-panel-product]\"))\r\n      : [];\r\n    var poolByHandle = Object.create(null);\r\n    poolCards.forEach(function(card){\r\n      var handle = String(card.getAttribute(\"data-gdx-panel-product\") || \"\");\r\n      var purposeNode = card.querySelector(\"[data-gdx-panel-r2d-purpose-score='1'] strong\");\r\n      var fpNode = card.querySelector(\"[data-gdx-panel-r2d-fp-score='1'] strong\");\r\n      poolByHandle[handle] = {\r\n        purposeScore: purposeNode ? Number(String(purposeNode.textContent || \"\").replace(\",\", \".\")) : NaN,\r\n        fpScore: fpNode ? Number(String(fpNode.textContent || \"\").replace(\",\", \".\")) : NaN\r\n      };\r\n    });\r\n\r\n    var parityRows = expectedTop3.filter(function(row){ return !!poolByHandle[row.handle]; }).map(function(row){\r\n      var pool = poolByHandle[row.handle];\r\n      return {\r\n        handle: row.handle,\r\n        top3Purpose: row.purposeScore,\r\n        poolPurpose: pool.purposeScore,\r\n        top3Fp: row.fpScore,\r\n        poolFp: pool.fpScore,\r\n        purposeMatch: Number(row.purposeScore) === Number(pool.purposeScore),\r\n        fpMatch: Number(row.fpScore) === Number(pool.fpScore)\r\n      };\r\n    });\r\n\r\n    var poolDebug = debugPanelV4Etap2R2DPoolSort();\r\n    var checks = {\r\n      exactProjectionReady: !!exact,\r\n      visibleTop3Exactly3: visibleTop3.length === 3,\r\n      visibleTop3MatchesExactSelectionOrder:\r\n        expectedTop3.length === 3 &&\r\n        visibleTop3.length === 3 &&\r\n        expectedTop3.every(function(row, i){ return row.handle === visibleTop3[i].handle; }),\r\n      visibleTop3AllCommittedLane:\r\n        committedLane === \"ALL\" ||\r\n        (visibleTop3.length === 3 && visibleTop3.every(function(row){ return row.lane === committedLane; })),\r\n      visibleTop3ScoresMatchExactProjection:\r\n        expectedTop3.length === 3 &&\r\n        visibleTop3.length === 3 &&\r\n        expectedTop3.every(function(row, i){\r\n          return row.purposeScore === visibleTop3[i].purposeScore &&\r\n                 row.fpScore === visibleTop3[i].fpScore;\r\n        }),\r\n      top3AndPoolSameProductScoreParity:\r\n        parityRows.length > 0 &&\r\n        parityRows.every(function(row){ return row.purposeMatch && row.fpMatch; }),\r\n      productPoolPurposeOrderUsesExactSelection:\r\n        poolDebug.checks.selectedPurposeUsesExactSubpurposeScoreOwner === true,\r\n      currentGridOrderCanonical:\r\n        poolDebug.checks.renderedGridMatchesCurrentLaneAndSort === true\r\n    };\r\n\r\n    var failedChecks = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    var out = {\r\n      ok: failedChecks.length === 0,\r\n      version: \"PANEL-V4-ETAP2-R2D-REV3.3-TOP3-POOL-SCORE-LANE-PARITY-QA-V2\",\r\n      checks: checks,\r\n      failedChecks: failedChecks,\r\n      observed: {\r\n        activeSelectionKey: r2dActiveSelectionKey(),\r\n        committedLane: committedLane,\r\n        expectedTop3: expectedTop3,\r\n        visibleTop3: visibleTop3,\r\n        scoreParityRows: parityRows,\r\n        poolSort: uiState.poolSort,\r\n        poolLane: uiState.purchaseLane,\r\n        visibleGridCount: poolCards.length\r\n      },\r\n      contract: {\r\n        purposeScoreOwner: \"EXISTING_U7E1_R28_24_PROFILE_CONTEXTUAL_FP14_SIGNALS\",\r\n        fpOwner: \"GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL.getFpOrder\",\r\n        visibleTop3Lane: \"COMMITTED_PURCHASE_LANE\",\r\n        poolPurposeSort: \"EXACT_ACTIVE_SUBPURPOSE_SCORE_ORDER\",\r\n        scoreFormulaMutation: false\r\n      }\r\n    };\r\n    console.log(\"=== CANFOTO ETAP2 R2-D REV3.3 TOP3 / POOL SCORE + LANE PARITY ===\");\r\n    console.log(out);\r\n    return out;\r\n  }\r\n  window.debugPanelV4Etap2R2D32SurfaceParity = debugPanelV4Etap2R2D32SurfaceParity;\r\n  window.debugPanelV4Etap2R2D31PhysicalProjection = debugPanelV4Etap2R2D32SurfaceParity;\r\n\r\n  window.debugPanelV4Etap2R2D36LatencyPipeline=function(){\r\n    var shared=window.GDX_PANEL_V4_ETAP2_SHARED_PREFETCH||null;\r\n    var syncApi=window.GDX_PANEL_LED_V4_ETAP2_R2C2_SELECTION_RECOMMENDATION_SYNC||null;\r\n    var syncState=syncApi&&typeof syncApi.getState===\"function\"?syncApi.getState():null;\r\n    var exact=window.GDX_PANEL_V4_R2D_EXACT_SELECTION_SCORE_PROJECTION||null;\r\n    var r2b=window.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL||null;\r\n    var r2bSnap=null;\r\n    try{r2bSnap=r2b&&typeof r2b.getSnapshot===\"function\"?r2b.getSnapshot():null}catch(_){r2bSnap=null}\r\n    var selection=window.GDX_PANEL_V4_R28_SELECTION_STATE||null;\r\n    var selectionKey=String(selection&&selection.activeSelectionKey||\"\");\r\n    var exactRows=[];\r\n    try{exactRows=exact&&selectionKey&&typeof exact.getRows===\"function\"?(exact.getRows(selectionKey,{lane:\"ALL\",limit:0})||[]):[]}catch(_){exactRows=[]}\r\n    var checks={\r\n      sharedPrefetchInstalled:!!shared,\r\n      sharedBarePrefetchStarted:!!(shared&&shared.bare),\r\n      sharedSetPrefetchStarted:!!(shared&&shared.set),\r\n      canonicalOwnerDynamicReady:!!(r2bSnap&&r2bSnap.ok===true&&Number(r2bSnap.productCount)>0),\r\n      exactSelectionProjectionMatchesCanonical:!!(r2bSnap&&r2bSnap.ok===true&&exactRows.length===Number(r2bSnap.productCount)),\r\n      partialRecommendationRenderApiReady:!!(window.GDX_PANEL_LED_V4_UI&&typeof window.GDX_PANEL_LED_V4_UI.renderRecommendation===\"function\"),\r\n      partialPoolRenderApiReady:!!(window.GDX_PANEL_LED_V4_UI&&typeof window.GDX_PANEL_LED_V4_UI.renderPool===\"function\"),\r\n      selectionSyncApiReady:!!syncApi,\r\n      noSelectionFullMotorRenderContract:true,\r\n      noDuplicateCutoverUiRenderContract:true\r\n    };\r\n    var failedChecks=Object.keys(checks).filter(function(k){return checks[k]!==true});\r\n    var out={\r\n      ok:failedChecks.length===0,\r\n      version:\"PANEL-V4-ETAP2-R2D-REV3.6-LATENCY-PIPELINE-QA-V3-27-19-8\",\r\n      checks:checks,failedChecks:failedChecks,\r\n      observed:{\r\n        sharedPrefetch:shared&&shared.state||null,\r\n        canonicalOwner:r2bSnap,\r\n        activeSelectionKey:selectionKey,\r\n        exactSelectionRowCount:exactRows.length,\r\n        selectionSync:syncState\r\n      }\r\n    };\r\n    console.log(\"=== CANFOTO ETAP2 R2-D REV3.6 LATENCY PIPELINE / 27-19-8 QA ===\");console.log(out);return out;\r\n  };\r\n  window.debugPanelV4Etap2R2D35LatencyPipeline=window.debugPanelV4Etap2R2D36LatencyPipeline;\r\n  window.debugPanelV4Etap2R2D34LatencyPipeline=window.debugPanelV4Etap2R2D36LatencyPipeline;\r\n\r\n  window.debugPanelV4Etap2R2D33InteractionPerformance = function () {\r\n    var perf = window.GDX_PANEL_V4_R2D33_PERF_STATE || {};\r\n    var checks = {\r\n      legacyTripleDelayedR28RenderRemoved: true,\r\n      selectionEventDeduplicated: true,\r\n      modalClicksExcludedFromR28RepairRender: true,\r\n      canonicalFpSingleOwnerR2B:\r\n        !!window.GDX_PANEL_V4_R2D_EXACT_SELECTION_SCORE_PROJECTION &&\r\n        window.GDX_PANEL_V4_R2D_EXACT_SELECTION_SCORE_PROJECTION.fpOwner ===\r\n          \"GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL.getFpOrder\",\r\n      loaded27FastOpenPathReady: true,\r\n      r28RenderCoalescingHealthy:\r\n        Number(perf.r28ExecutedRenderCount || 0) <= Number(perf.r28ScheduledRenderCount || 0)\r\n    };\r\n    var failedChecks = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    var out = {\r\n      ok: failedChecks.length === 0,\r\n      version: \"PANEL-V4-ETAP2-R2D-REV3.3-INTERACTION-PERFORMANCE-QA-V1\",\r\n      checks: checks,\r\n      failedChecks: failedChecks,\r\n      observed: Object.assign({}, perf),\r\n      contract: {\r\n        r28RenderScheduler: \"ONE_REQUEST_ANIMATION_FRAME_COALESCED\",\r\n        selectionDispatch: \"ONLY_WHEN_ACTIVE_SELECTION_KEY_CHANGES\",\r\n        modalPendingClicks: \"NO_BACKGROUND_R28_REPAIR_RENDER\",\r\n        fpOwner: \"R2B_CANONICAL_27_POOL\"\r\n      }\r\n    };\r\n    console.log(\"=== CANFOTO ETAP2 R2-D REV3.3 INTERACTION PERFORMANCE QA ===\");\r\n    console.log(out);\r\n    return out;\r\n  };\r\n\r\n  function selectProduct(key) {\r\n    return toggleUnifiedCompareProduct(key, \"POOL\", {\r\n      skipRecommendationRender:false\r\n    });\r\n  }\r\n\r\n\r\n  function renderResultPreview() {\r\n  syncCompareSurfaceVisibility(\"render_result_preview\");\r\n\r\n  var el = resultEl();\r\n  if (!el) return;\r\n\r\n  function hideResultSurface() {\r\n    el.hidden = true;\r\n    el.setAttribute(\"aria-hidden\", \"true\");\r\n    el.innerHTML = \"\";\r\n  }\r\n\r\n  function showResultSurface() {\r\n    el.hidden = false;\r\n    el.removeAttribute(\"aria-hidden\");\r\n  }\r\n\r\n  var sourceIsPool = false;\r\n  var sourceSelected = uiState.selected;\r\n  var p1 = sourceSelected[1];\r\n  var p2 = sourceSelected[2];\r\n\r\n  if (!p1 || !p2) {\r\n    hideResultSurface();\r\n    return;\r\n  }\r\n\r\n  var result = uiState.compareResult;\r\n\r\n  if (!result) {\r\n    hideResultSurface();\r\n    return;\r\n  }\r\n\r\n  if (!result.ok) {\r\n    showResultSurface();\r\n    el.innerHTML =\r\n      '<div class=\"gdx-panel-v4-result-empty is-error\">' +\r\n        escapeHtml(result.error || \"Kar\u015F\u0131la\u015Ft\u0131rma sonucu \u00FCretilemedi.\") +\r\n      '</div>';\r\n    return;\r\n  }\r\n\r\n    function isStockDecisionText(value) {\r\n    var text = lower(value || \"\");\r\n\r\n    return (\r\n      /stok/.test(text) ||\r\n      /sat\u0131n al\u0131nabilirlik/.test(text) ||\r\n      /sat\u0131n alinabilirlik/.test(text)\r\n    );\r\n  }\r\n\r\n  function renderReasonList(items) {\r\n    var safeItems = (items || []).filter(function (item) {\r\n      return !isStockDecisionText(item);\r\n    });\r\n\r\n    if (!safeItems.length) {\r\n      safeItems = [\"Teknik kriter dengesinde \u00F6ne \u00E7\u0131k\u0131yor.\"];\r\n    }\r\n\r\n    return safeItems.map(function (item) {\r\n      return '<li>' + escapeHtml(item) + '</li>';\r\n    }).join(\"\");\r\n  }\r\n  \r\n  function isLegacyStockScoreItem(item) {\r\n    var key = lower(item && item.key ? item.key : \"\");\r\n    var label = lower(item && item.label ? item.label : \"\");\r\n    var shortLabel = lower(item && item.short ? item.short : \"\");\r\n\r\n    return (\r\n      key === \"stock\" ||\r\n      /stok/.test(label) ||\r\n      /stok/.test(shortLabel) ||\r\n      /sat\u0131n al\u0131nabilirlik/.test(label) ||\r\n      /sat\u0131n alinabilirlik/.test(label) ||\r\n      /sat\u0131n al\u0131nabilirlik/.test(shortLabel) ||\r\n      /sat\u0131n alinabilirlik/.test(shortLabel)\r\n    );\r\n  }\r\n\r\n  function filterLegacyStockScoreItems(items) {\r\n    return (items || []).filter(function (item) {\r\n      return !isLegacyStockScoreItem(item);\r\n    });\r\n  }\r\n\r\n    function renderStrengths(items) {\r\n    return filterLegacyStockScoreItems(items).map(function (item) {\r\n      return '<span>' + escapeHtml(item.label) + ': ' + escapeHtml(String(item.score)) + '/10</span>';\r\n    }).join(\"\");\r\n  }\r\n\r\n    function renderBreakdown(items) {\r\n    return filterLegacyStockScoreItems(items).map(function (item) {\r\n      var score = Number(item.score || 0);\r\n      var width = Math.max(0, Math.min(100, score * 10));\r\n\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-score-row\">' +\r\n          '<div class=\"gdx-panel-v4-score-label\">' +\r\n            '<strong>' + escapeHtml(item.label || item.key) + '</strong>' +\r\n            '<small>Karardaki pay\u0131: ' + escapeHtml(String(item.weight || 0)) + '%</small>' +\r\n          '</div>' +\r\n          '<div class=\"gdx-panel-v4-score-track\">' +\r\n            '<span style=\"width:' + width + '%\"></span>' +\r\n          '</div>' +\r\n          '<div class=\"gdx-panel-v4-score-value\">' + escapeHtml(String(item.score)) + '</div>' +\r\n        '</div>';\r\n    }).join(\"\");\r\n  }\r\n\r\n    function r3ComparePriceText(item, product) {\r\n    item = item || {};\r\n    product = product || {};\r\n\r\n    var raw = Number(item.price || product.price || 0);\r\n    if (isFinite(raw) && raw > 0) {\r\n      try {\r\n        return new Intl.NumberFormat(\"tr-TR\", { maximumFractionDigits: 0 }).format(raw) + \" TL\";\r\n      } catch (error) {\r\n        return Math.round(raw).toLocaleString(\"tr-TR\") + \" TL\";\r\n      }\r\n    }\r\n\r\n    return String(item.priceText || product.priceText || \"\").trim();\r\n  }\r\n\r\n  function r3OfferIdentityTitle(item, product, fallback) {\r\n    item = item || {};\r\n    product = product || {};\r\n\r\n    if (item.offerIdentityTitle) return String(item.offerIdentityTitle);\r\n\r\n    var base = smartItemTitle(item, product, fallback || \"Panel LED \u00DCr\u00FCn\");\r\n    var lane = String(item.offerLane || product.etap2 && product.etap2.lane || product.purchaseLane || product.lane || \"\").trim();\r\n    var suffix = lane === \"SINGLE_READY_SET\" ? \"Tekli Tam Set\" : (lane === \"BARE_LIGHT\" ? \"Yaln\u0131z Panel\" : \"\");\r\n\r\n    if (!suffix || lower(base).indexOf(lower(suffix)) > -1) return base;\r\n    return base + \" \u2014 \" + suffix;\r\n  }\r\n\r\n    function productCard(role, item, tone) {\r\n    item = item || {};\r\n\r\n    var reasons = item.topStrengths ? item.topStrengths : [];\r\n    var weak = item.weakPoints ? item.weakPoints : [];\r\n\r\n    function findSelectedProduct(source) {\r\n      var key = source.productKey || source.key || (source.product && source.product.key) || \"\";\r\n\r\n      if (key && p1 && p1.key === key) return p1;\r\n      if (key && p2 && p2.key === key) return p2;\r\n\r\n      var title = String(source.productTitle || source.productShortTitle || \"\").toLocaleLowerCase(\"tr-TR\");\r\n\r\n      if (title && p1 && String(p1.title || p1.shortTitle || \"\").toLocaleLowerCase(\"tr-TR\").indexOf(title.slice(0, 18)) > -1) return p1;\r\n      if (title && p2 && String(p2.title || p2.shortTitle || \"\").toLocaleLowerCase(\"tr-TR\").indexOf(title.slice(0, 18)) > -1) return p2;\r\n\r\n      return source.product || null;\r\n    }\r\n\r\n    var selectedProduct = findSelectedProduct(item) || {};\r\n\r\n    var image =\r\n      item.image ||\r\n      (item.product && item.product.image) ||\r\n      selectedProduct.image ||\r\n      \"\";\r\n\r\n    var title = r3OfferIdentityTitle(item, selectedProduct, \"Panel LED \u00DCr\u00FCn\");\r\n\r\n    var score = item.score10 !== undefined ? item.score10 : (item.score !== undefined ? item.score : \"\u2014\");\r\n    var priceText = r3ComparePriceText(item, selectedProduct);\r\n    var vendor = item.vendor || selectedProduct.vendor || \"\";\r\n    var weakHtml = renderStrengths(weak);\r\n    var weakTitle = tone === \"is-winner\" ? \"G\u00F6zden ge\u00E7irilecek noktalar\" : \"Dikkat edilecek alanlar\";\r\n\r\n    return '' +\r\n      '<article class=\"gdx-panel-v4-compare-card ' + escapeHtml(tone || \"\") + '\">' +\r\n        '<div class=\"gdx-panel-v4-compare-topline\">' +\r\n          '<div class=\"gdx-panel-v4-compare-media\">' +\r\n            (image\r\n              ? '<img src=\"' + escapeHtml(image) + '\" alt=\"' + escapeHtml(title) + '\" loading=\"lazy\">'\r\n              : '<div class=\"gdx-panel-v4-compare-media-empty\">\u00DCr\u00FCn g\u00F6rseli y\u00FCklenemedi</div>') +\r\n          '</div>' +\r\n          '<div class=\"gdx-panel-v4-compare-main\">' +\r\n            '<div class=\"gdx-panel-v4-compare-role\">' + escapeHtml(role) + '</div>' +\r\n            '<h4>' + escapeHtml(title) + '</h4>' +\r\n            '<div class=\"gdx-panel-v4-compare-score\">' + escapeHtml(String(score)) + '<small>/10</small></div>' +\r\n            '<p>' + escapeHtml(priceText) + ' \u00B7 ' + escapeHtml(vendor) + '</p>' +\r\n          '</div>' +\r\n        '</div>' +\r\n        '<div class=\"gdx-panel-v4-strengths\">' + renderStrengths(reasons) + '</div>' +\r\n        (weakHtml\r\n          ? '<div class=\"gdx-panel-v4-weak-title\">' + escapeHtml(weakTitle) + '</div>' +\r\n            '<div class=\"gdx-panel-v4-weak-list\">' + weakHtml + '</div>'\r\n          : '') +\r\n      '</article>';\r\n  }\r\n\r\n  function getBreakdownItem(items, key) {\r\n    return (items || []).find(function (item) {\r\n      return item.key === key;\r\n    }) || null;\r\n  }\r\n\r\n  function getRadarItems(items) {\r\n    return (items || [])\r\n      .slice()\r\n      .sort(function (a, b) {\r\n        return Number(b.weight || 0) - Number(a.weight || 0);\r\n      })\r\n      .slice(0, 6);\r\n  }\r\n\r\n  function radarPoint(cx, cy, radius, index, total, score) {\r\n    var angle = (-90 + (360 / total) * index) * Math.PI / 180;\r\n    var r = radius * Math.max(0, Math.min(10, Number(score || 0))) / 10;\r\n\r\n    return {\r\n      x: Math.round((cx + Math.cos(angle) * r) * 100) / 100,\r\n      y: Math.round((cy + Math.sin(angle) * r) * 100) / 100\r\n    };\r\n  }\r\n\r\n  function radarOuterPoint(cx, cy, radius, index, total) {\r\n    var angle = (-90 + (360 / total) * index) * Math.PI / 180;\r\n\r\n    return {\r\n      x: Math.round((cx + Math.cos(angle) * radius) * 100) / 100,\r\n      y: Math.round((cy + Math.sin(angle) * radius) * 100) / 100\r\n    };\r\n  }\r\n\r\n  function renderRadarSvg(winnerItems, loserItems) {\r\n    var items = getRadarItems(winnerItems);\r\n    if (!items.length) return '<div class=\"gdx-panel-v4-radar-empty\">Radar verisi yok.</div>';\r\n\r\n    var cx = 110;\r\n    var cy = 110;\r\n    var radius = 78;\r\n    var total = items.length;\r\n\r\n    var axis = items.map(function (item, index) {\r\n      var outer = radarOuterPoint(cx, cy, radius, index, total);\r\n      var label = radarOuterPoint(cx, cy, radius + 22, index, total);\r\n\r\n      return '' +\r\n        '<line x1=\"' + cx + '\" y1=\"' + cy + '\" x2=\"' + outer.x + '\" y2=\"' + outer.y + '\" class=\"gdx-panel-v4-radar-axis\"></line>' +\r\n        '<text x=\"' + label.x + '\" y=\"' + label.y + '\" text-anchor=\"middle\" class=\"gdx-panel-v4-radar-label\">' + escapeHtml(item.short || item.label || item.key) + '</text>';\r\n    }).join(\"\");\r\n\r\n    var grid = [0.25, 0.5, 0.75, 1].map(function (scale) {\r\n      var points = items.map(function (item, index) {\r\n        var p = radarOuterPoint(cx, cy, radius * scale, index, total);\r\n        return p.x + \",\" + p.y;\r\n      }).join(\" \");\r\n\r\n      return '<polygon points=\"' + points + '\" class=\"gdx-panel-v4-radar-grid\"></polygon>';\r\n    }).join(\"\");\r\n\r\n    var winnerPoints = items.map(function (item, index) {\r\n      var p = radarPoint(cx, cy, radius, index, total, item.score);\r\n      return p.x + \",\" + p.y;\r\n    }).join(\" \");\r\n\r\n    var loserPoints = items.map(function (item, index) {\r\n      var loserItem = getBreakdownItem(loserItems, item.key);\r\n      var p = radarPoint(cx, cy, radius, index, total, loserItem ? loserItem.score : 0);\r\n      return p.x + \",\" + p.y;\r\n    }).join(\" \");\r\n\r\n    return '' +\r\n      '<svg class=\"gdx-panel-v4-radar-svg\" viewBox=\"0 0 220 220\" role=\"img\" aria-label=\"Panel LED detay radar analizi\">' +\r\n        grid +\r\n        axis +\r\n        '<polygon points=\"' + loserPoints + '\" class=\"gdx-panel-v4-radar-loser\"></polygon>' +\r\n        '<polygon points=\"' + winnerPoints + '\" class=\"gdx-panel-v4-radar-winner\"></polygon>' +\r\n        '<circle cx=\"' + cx + '\" cy=\"' + cy + '\" r=\"3\" class=\"gdx-panel-v4-radar-center\"></circle>' +\r\n      '</svg>';\r\n  }\r\n\r\n  function renderAxisCompare(winnerItems, loserItems) {\r\n    var items = getRadarItems(winnerItems);\r\n\r\n    return items.map(function (item) {\r\n      var loserItem = getBreakdownItem(loserItems, item.key);\r\n      var winnerScore = Number(item.score || 0);\r\n      var loserScore = loserItem ? Number(loserItem.score || 0) : 0;\r\n      var winnerWidth = Math.max(0, Math.min(100, winnerScore * 10));\r\n      var loserWidth = Math.max(0, Math.min(100, loserScore * 10));\r\n\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-axis-row\">' +\r\n          '<div class=\"gdx-panel-v4-axis-head\">' +\r\n            '<strong>' + escapeHtml(item.label || item.key) + '</strong>' +\r\n            '<span>' + escapeHtml(String(winnerScore)) + ' / ' + escapeHtml(String(loserScore)) + '</span>' +\r\n          '</div>' +\r\n          '<div class=\"gdx-panel-v4-axis-bars\">' +\r\n            '<div class=\"gdx-panel-v4-axis-bar is-winner\"><span style=\"width:' + winnerWidth + '%\"></span></div>' +\r\n            '<div class=\"gdx-panel-v4-axis-bar is-loser\"><span style=\"width:' + loserWidth + '%\"></span></div>' +\r\n          '</div>' +\r\n        '</div>';\r\n    }).join(\"\");\r\n  }\r\n  \r\n      function renderFp14DualCriteriaBars(compareResult) {\r\n    var ev = compareResult && compareResult.fp14Evidence ? compareResult.fp14Evidence : null;\r\n    var validation = compareResult && compareResult.fp14EvidenceValidation ? compareResult.fp14EvidenceValidation : null;\r\n\r\n    if (!ev || !ev.ok || !Array.isArray(ev.detailRows) || !ev.detailRows.length) {\r\n      return \"\";\r\n    }\r\n\r\n    var productA = ev.productA || {};\r\n    var productB = ev.productB || {};\r\n    var exactTie = !!(compareResult && (compareResult.isExactTie === true || compareResult.decisionState === \"EXACT_TIE\"));\r\n    var winnerKey = exactTie ? \"\" : (compareResult && compareResult.winner ? compareResult.winner.productKey : \"\");\r\n\r\n    function shortIdentityName(name) {\r\n      var value = String(name || \"\").trim();\r\n      var separator = \" \u2014 \";\r\n      var parts = value.split(separator);\r\n      var suffix = \"\";\r\n      var base = value;\r\n\r\n      /* LB2.4-R3.1: never truncate away the offer identity. */\r\n      if (parts.length > 1) {\r\n        suffix = parts.pop();\r\n        base = parts.join(separator);\r\n        if (base.length > 30) base = base.slice(0, 30).replace(/\\s+\\S*$/, \"\").trim() + \"\u2026\";\r\n        return base + separator + suffix;\r\n      }\r\n\r\n      if (value.length <= 38) return value;\r\n      return value.slice(0, 38).replace(/\\s+\\S*$/, \"\").trim() + \"\u2026\";\r\n    }\r\n\r\n    function barWidth(score) {\r\n      return Math.max(0, Math.min(100, Number(score || 0) * 10));\r\n    }\r\n\r\n    function scoreText(score) {\r\n      var value = Number(score || 0);\r\n      return String(Math.round(value * 10) / 10);\r\n    }\r\n\r\n    function productTone(productKey) {\r\n      if (exactTie) return \"is-loser\";\r\n      if (winnerKey && productKey && winnerKey === productKey) return \"is-winner\";\r\n      return \"is-loser\";\r\n    }\r\n\r\n    function leaderText(row) {\r\n      if (!row) return \"Dengeli\";\r\n      if (row.leader === \"a\") return identityA;\r\n      if (row.leader === \"b\") return identityB;\r\n      return \"Berabere\";\r\n    }\r\n\r\n    function resolveSelectedProduct(source) {\r\n      source = source || {};\r\n      var key = source.productKey || source.key || (source.product && source.product.key) || \"\";\r\n\r\n      if (key && p1 && p1.key === key) return p1;\r\n      if (key && p2 && p2.key === key) return p2;\r\n\r\n      var title = String(source.productTitle || source.productShortTitle || \"\").toLocaleLowerCase(\"tr-TR\");\r\n\r\n      if (title && p1 && String(p1.title || p1.shortTitle || \"\").toLocaleLowerCase(\"tr-TR\").indexOf(title.slice(0, 18)) > -1) return p1;\r\n      if (title && p2 && String(p2.title || p2.shortTitle || \"\").toLocaleLowerCase(\"tr-TR\").indexOf(title.slice(0, 18)) > -1) return p2;\r\n\r\n      return source.product || {};\r\n    }\r\n\r\n    function resolveOverallResult(source) {\r\n      source = source || {};\r\n      var key = source.productKey || source.key || \"\";\r\n\r\n      if (key && compareResult.productA && compareResult.productA.productKey === key) return compareResult.productA;\r\n      if (key && compareResult.productB && compareResult.productB.productKey === key) return compareResult.productB;\r\n      if (key && compareResult.winner && compareResult.winner.productKey === key) return compareResult.winner;\r\n      if (key && compareResult.loser && compareResult.loser.productKey === key) return compareResult.loser;\r\n\r\n      var title = String(source.productTitle || source.productShortTitle || \"\").toLocaleLowerCase(\"tr-TR\");\r\n\r\n      if (title && compareResult.winner && String(compareResult.winner.productTitle || compareResult.winner.productShortTitle || \"\").toLocaleLowerCase(\"tr-TR\").indexOf(title.slice(0, 18)) > -1) return compareResult.winner;\r\n      if (title && compareResult.loser && String(compareResult.loser.productTitle || compareResult.loser.productShortTitle || \"\").toLocaleLowerCase(\"tr-TR\").indexOf(title.slice(0, 18)) > -1) return compareResult.loser;\r\n\r\n      return {};\r\n    }\r\n\r\n    function overallScoreText(source) {\r\n      var item = resolveOverallResult(source);\r\n      var value = item.score10 !== undefined ? item.score10 : (item.score !== undefined ? item.score : \"\");\r\n      return value === \"\" ? \"\u2014\" : String(value);\r\n    }\r\n\r\n    function identityCard(source, sourceProduct, tone, slotLabel) {\r\n      source = source || {};\r\n      sourceProduct = sourceProduct || {};\r\n\r\n      var title = r3OfferIdentityTitle(resolveOverallResult(source), sourceProduct, slotLabel);\r\n\r\n      var identity = shortIdentityName(title);\r\n\r\n      var image =\r\n        source.image ||\r\n        sourceProduct.image ||\r\n        \"\";\r\n\r\n      var vendor =\r\n        source.vendor ||\r\n        sourceProduct.vendor ||\r\n        \"\";\r\n\r\n      var priceText = r3ComparePriceText(resolveOverallResult(source), sourceProduct);\r\n\r\n      var roleText = exactTie ? \"Sonu\u00E7 Berabere\" : (tone === \"is-winner\" ? \"F/P Kazanan\u0131\" : \"Di\u011Fer \u00DCr\u00FCn\");\r\n\r\n      return '' +\r\n        '<article class=\"gdx-panel-v4-compare-card ' + escapeHtml(tone) + '\" data-gdx-panel-fp14-identity=\"' + escapeHtml(slotLabel) + '\">' +\r\n          '<div class=\"gdx-panel-v4-compare-topline\">' +\r\n            '<div class=\"gdx-panel-v4-compare-media\">' +\r\n              (image\r\n                ? '<img src=\"' + escapeHtml(image) + '\" alt=\"' + escapeHtml(title) + '\" loading=\"lazy\">'\r\n                : '<div class=\"gdx-panel-v4-compare-media-empty\">\u00DCr\u00FCn g\u00F6rseli</div>') +\r\n            '</div>' +\r\n            '<div class=\"gdx-panel-v4-compare-main\">' +\r\n              '<div class=\"gdx-panel-v4-compare-role\">' + escapeHtml(slotLabel.toUpperCase() + ' \u00B7 ' + roleText) + '</div>' +\r\n              '<h4>' + escapeHtml(identity) + '</h4>' +\r\n              '<div class=\"gdx-panel-v4-compare-score\">' + escapeHtml(overallScoreText(source)) + '<small>/10</small></div>' +\r\n              '<p>' + escapeHtml([priceText, vendor].filter(Boolean).join(\" \u00B7 \")) + '</p>' +\r\n            '</div>' +\r\n          '</div>' +\r\n        '</article>';\r\n    }\r\n\r\n    function criterionWeightText(row) {\r\n      var weight = row && row.weight !== undefined ? row.weight : \"\";\r\n      if (weight === \"\" || weight === null) return \"\";\r\n      return \"Karardaki pay\u0131: \" + String(weight) + \"%\";\r\n    }\r\n\r\n      function criterionDecisionText(row, aScore, bScore) {\r\n      var diff = Math.abs(Number(aScore || 0) - Number(bScore || 0));\r\n      var label = row && (row.label || row.key) ? String(row.label || row.key) : \"bu kriter\";\r\n\r\n      if (diff < 0.25) {\r\n        return label + \" taraf\u0131nda iki \u00FCr\u00FCn birbirine \u00E7ok yak\u0131n g\u00F6r\u00FCn\u00FCyor.\";\r\n      }\r\n\r\n      if (row && row.leader === \"a\") {\r\n        return identityA + \" bu kriterde daha avantajl\u0131 g\u00F6r\u00FCn\u00FCyor.\";\r\n      }\r\n\r\n      if (row && row.leader === \"b\") {\r\n        return identityB + \" bu kriterde daha avantajl\u0131 g\u00F6r\u00FCn\u00FCyor.\";\r\n      }\r\n\r\n      return label + \" taraf\u0131nda dengeli bir sonu\u00E7 olu\u015Fuyor.\";\r\n    }\r\n\r\n    var sourceA = resolveSelectedProduct(productA);\r\n    var sourceB = resolveSelectedProduct(productB);\r\n\r\n    var titleA = r3OfferIdentityTitle(compareResult.productA || productA, sourceA, \"1. \u00DCr\u00FCn\");\r\n    var titleB = r3OfferIdentityTitle(compareResult.productB || productB, sourceB, \"2. \u00DCr\u00FCn\");\r\n\r\n    var identityA = shortIdentityName(titleA);\r\n    var identityB = shortIdentityName(titleB);\r\n\r\n    var toneA = productTone(productA.productKey);\r\n    var toneB = productTone(productB.productKey);\r\n    var validationText = validation && validation.ok ? \"Kar\u015F\u0131la\u015Ft\u0131rma nas\u0131l haz\u0131rland\u0131?\" : \"Kar\u015F\u0131la\u015Ft\u0131rma bilgileri s\u0131n\u0131rl\u0131 olabilir\";\r\n\r\n    function fp14OverlayClean(value) {\r\n      return String(value || \"\").replace(/\\s+/g, \" \").trim();\r\n    }\r\n\r\n    function fp14OverlayPreview(sideData) {\r\n      sideData = sideData || {};\r\n      return sideData.derivedMetricPreview || sideData.metricPreview || sideData.preview || null;\r\n    }\r\n\r\n    function fp14OverlayValueLabel(sideData) {\r\n      sideData = sideData || {};\r\n      var preview = fp14OverlayPreview(sideData) || {};\r\n      return fp14OverlayClean(preview.valueLabel || sideData.valueLabel || \"Bilgi s\u0131n\u0131rl\u0131\") || \"Bilgi s\u0131n\u0131rl\u0131\";\r\n    }\r\n\r\n    function fp14SourceBadgeText(sideData) {\r\n      sideData = sideData || {};\r\n      var preview = fp14OverlayPreview(sideData) || {};\r\n      var sourceType = String(preview.sourceType || sideData.sourceType || \"\");\r\n\r\n      if (sourceType === \"direct_plus_preview\") return \"\u00DCr\u00FCn verisi + hesaplama\";\r\n      if (sourceType === \"derived_preview\" || sourceType === \"derived\") return \"Hesaplanan de\u011Fer\";\r\n      if (sourceType === \"fallback_limited\" || sourceType === \"fallback\" || sourceType === \"unknown\") return \"Bilgi s\u0131n\u0131rl\u0131\";\r\n      if (sourceType === \"direct\") return \"\u00DCr\u00FCn verisi\";\r\n      if (sourceType === \"mixed\" || sourceType === \"mixed_with_fallback\") return \"\u00DCr\u00FCn verisi + hesaplama\";\r\n      return \"Bilgi s\u0131n\u0131rl\u0131\";\r\n    }\r\n\r\n    function fp14ConfidenceBadgeText(sideData) {\r\n      sideData = sideData || {};\r\n      var preview = fp14OverlayPreview(sideData) || {};\r\n      var confidenceType = String(preview.confidenceType || sideData.confidenceType || \"\");\r\n      var confidence = String(preview.confidence || \"\");\r\n      var factor = sideData.confidence && typeof sideData.confidence === \"object\" ? Number(sideData.confidence.factor || 0) : 0;\r\n\r\n      if (confidenceType === \"high\" || confidence === \"A\" || factor >= 0.88) return \"Veri g\u00FCveni: y\u00FCksek\";\r\n      if (confidenceType === \"medium\" || confidence === \"B\" || factor >= 0.68) return \"Veri g\u00FCveni: orta\";\r\n      if (confidenceType === \"limited\" || confidence === \"C\" || factor >= 0.42) return \"Veri g\u00FCveni: s\u0131n\u0131rl\u0131\";\r\n      return \"Veri g\u00FCveni: s\u0131n\u0131rl\u0131\";\r\n    }\r\n\r\n    function fp14ScoreBadgeText(sideData) {\r\n      sideData = sideData || {};\r\n      var value = sideData.score100 !== undefined ? Number(sideData.score100 || 0) : (Number(sideData.score || 0) * 10);\r\n      if (!isFinite(value)) value = 0;\r\n      return String(Math.round(value)) + \"/100\";\r\n    }\r\n\r\n    function fp14EvidenceMini(sideData, sourceProduct, identity, tone, slotLabel) {\r\n      sideData = sideData || {};\r\n      sourceProduct = sourceProduct || {};\r\n\r\n      var image =\r\n        sideData.image ||\r\n        sourceProduct.image ||\r\n        \"\";\r\n\r\n      var valueLabel = fp14OverlayValueLabel(sideData);\r\n      var sourceBadge = fp14SourceBadgeText(sideData);\r\n      var confidenceBadge = fp14ConfidenceBadgeText(sideData);\r\n      var scoreBadge = fp14ScoreBadgeText(sideData);\r\n\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-fp14-evidence-mini ' + escapeHtml(tone || \"\") + '\" data-gdx-panel-fp14-evidence-mini=\"' + escapeHtml(slotLabel) + '\" data-gdx-panel-fp14-value-overlay=\"1\" data-gdx-panel-fp14-typography-polish=\"1\" style=\"min-width:0;align-items:center;gap:10px;padding:10px 10px;\">' +\r\n          '<div class=\"gdx-panel-v4-fp14-evidence-thumb\" style=\"flex:0 0 auto;\">' +\r\n            (image\r\n              ? '<img src=\"' + escapeHtml(image) + '\" alt=\"' + escapeHtml(identity) + '\" loading=\"lazy\">'\r\n              : '<span>' + escapeHtml(slotLabel.toUpperCase()) + '</span>') +\r\n          '</div>' +\r\n          '<div class=\"gdx-panel-v4-fp14-evidence-copy\" style=\"min-width:0;display:flex;flex-direction:column;gap:2px;\">' +\r\n            '<strong data-gdx-panel-fp14-title-typography=\"1\" style=\"display:-webkit-box;max-width:100%;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;font-size:clamp(10px,.72vw,12px);line-height:1.12;font-weight:900;letter-spacing:-.01em;\">' + escapeHtml(identity || slotLabel) + '</strong>' +\r\n            '<small data-gdx-panel-fp14-value-label=\"1\" data-gdx-panel-fp14-value-label-typography=\"1\" style=\"display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:clamp(9px,.66vw,11px);line-height:1.16;font-weight:800;color:rgba(226,232,240,.92);\">' + escapeHtml(valueLabel) + '</small>' +\r\n            '<div class=\"gdx-panel-v4-fp14-overlay-badges\" data-gdx-panel-fp14-overlay-badges=\"1\" data-gdx-panel-fp14-badge-spacing=\"1\" data-gdx-panel-fp14-badge-typography=\"1\" style=\"display:flex;flex-wrap:wrap;align-items:center;gap:3px 5px;line-height:1.08;margin-top:2px;font-size:clamp(10px,.68vw,12px);font-weight:850;letter-spacing:-.01em;color:#f8fafc;\">' +\r\n              '<span data-gdx-panel-fp14-source-badge=\"1\" style=\"display:inline-flex;align-items:center;white-space:nowrap;font-size:inherit;line-height:inherit;font-weight:inherit;\">' + escapeHtml(sourceBadge) + '</span>' +\r\n              '<span aria-hidden=\"true\" data-gdx-panel-fp14-badge-separator=\"1\" style=\"display:inline-flex;align-items:center;opacity:.52;font-weight:800;font-size:inherit;line-height:inherit;\">\u00B7</span>' +\r\n              '<span data-gdx-panel-fp14-confidence-badge=\"1\" style=\"display:inline-flex;align-items:center;white-space:nowrap;font-size:inherit;line-height:inherit;font-weight:inherit;\">' + escapeHtml(confidenceBadge) + '</span>' +\r\n              '<span aria-hidden=\"true\" data-gdx-panel-fp14-badge-separator=\"1\" style=\"display:inline-flex;align-items:center;opacity:.52;font-weight:800;font-size:inherit;line-height:inherit;\">\u00B7</span>' +\r\n              '<span data-gdx-panel-fp14-score-badge=\"1\" data-gdx-panel-fp14-score-typography=\"1\" style=\"display:inline-flex;align-items:center;white-space:nowrap;font-size:inherit;line-height:inherit;font-weight:900;color:#e5f4ff;\">' + escapeHtml(scoreBadge) + '</span>' +\r\n            '</div>' +\r\n          '</div>' +\r\n        '</div>';\r\n    }\r\n\r\n    function isFp14DecisionSignalBlocked(value) {\r\n      var text = lower(value || \"\");\r\n\r\n      return (\r\n        /stok/.test(text) ||\r\n        /sat\u0131n al\u0131nabilirlik/.test(text) ||\r\n        /sat\u0131n alinabilirlik/.test(text)\r\n      );\r\n    }\r\n\r\n    function fp14RowDiff(row) {\r\n      row = row || {};\r\n\r\n      var a = row.productA || {};\r\n      var b = row.productB || {};\r\n\r\n      return Math.abs(Number(a.score || 0) - Number(b.score || 0));\r\n    }\r\n\r\n    function fp14LeadRows(side) {\r\n      return ev.detailRows\r\n        .filter(function (row) {\r\n          var data = side === \"b\" ? (row.productB || {}) : (row.productA || {});\r\n          var label = row.short || row.label || row.key || \"Kriter\";\r\n          var text = label + \" \" + (data.valueLabel || \"\");\r\n\r\n          var lock = data.sourceLock || {};\r\n          var confidence = data.confidence || {};\r\n          var usable = Number(lock.fallback || 0) === 0 &&\r\n            !(confidence.usable !== undefined && Number(confidence.usable || 0) <= 0) &&\r\n            !(confidence.factor !== undefined && Number(confidence.factor || 0) <= 0) &&\r\n            !/s\u0131n\u0131rl\u0131|bilgi yok|do\u011Frulanamad\u0131/i.test(String(data.valueLabel || \"\"));\r\n          return row.leader === side && usable && !isFp14DecisionSignalBlocked(text);\r\n        })\r\n        .sort(function (x, y) {\r\n          return fp14RowDiff(y) - fp14RowDiff(x);\r\n        })\r\n        .slice(0, 3);\r\n    }\r\n\r\n    function fp14CloseRows() {\r\n      return ev.detailRows\r\n        .filter(function (row) {\r\n          var label = row.short || row.label || row.key || \"Kriter\";\r\n          return !isFp14DecisionSignalBlocked(label);\r\n        })\r\n        .sort(function (x, y) {\r\n          return fp14RowDiff(x) - fp14RowDiff(y);\r\n        })\r\n        .slice(0, 3);\r\n    }\r\n\r\n    function fp14ChipText(row, side) {\r\n      row = row || {};\r\n\r\n      var data = side === \"b\" ? (row.productB || {}) : (row.productA || {});\r\n      var label = row.short || row.label || row.key || \"Kriter\";\r\n      var value = data.valueLabel || \"\";\r\n\r\n      var text = label + (value ? \": \" + value : \"\");\r\n\r\n      if (isFp14DecisionSignalBlocked(text)) return \"\";\r\n\r\n      return text;\r\n    }\r\n\r\n    function fp14CloseChipText(row) {\r\n      row = row || {};\r\n\r\n      var a = row.productA || {};\r\n      var b = row.productB || {};\r\n      var label = row.short || row.label || row.key || \"Kriter\";\r\n\r\n      var text = label + \": \" + scoreText(a.score) + \" / \" + scoreText(b.score);\r\n\r\n      if (isFp14DecisionSignalBlocked(text)) return \"\";\r\n\r\n      return text;\r\n    }\r\n\r\n    function renderFp14SignalChips(rows, side, fallbackText, closeMode) {\r\n      var chips = (rows || []).map(function (row) {\r\n        return closeMode ? fp14CloseChipText(row) : fp14ChipText(row, side);\r\n      }).filter(Boolean);\r\n\r\n      if (!chips.length && fallbackText) {\r\n        chips = [fallbackText];\r\n      }\r\n\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-fp14-signal-chips\">' +\r\n          chips.slice(0, 3).map(function (chip) {\r\n            return '<span data-gdx-panel-fp14-signal-chip=\"1\">' + escapeHtml(chip) + '</span>';\r\n          }).join(\"\") +\r\n        '</div>';\r\n    }\r\n\r\n    function renderFp14DecisionSignalSummary() {\r\n      var winnerSide = toneA === \"is-winner\" ? \"a\" : \"b\";\r\n      var alternativeSide = winnerSide === \"a\" ? \"b\" : \"a\";\r\n      var closeRows = fp14CloseRows();\r\n\r\n      if (exactTie) {\r\n        return '' +\r\n          '<div class=\"gdx-panel-v4-fp14-signal-summary\" data-gdx-panel-fp14-signal-summary=\"1\" data-gdx-panel-exact-tie=\"1\">' +\r\n            '<article class=\"is-close\" data-gdx-panel-fp14-signal-card=\"product-a\">' +\r\n              '<strong>' + escapeHtml(identityA + \" hangi kriterlerde \u00F6nde?\") + '</strong>' +\r\n              '<p>Yaln\u0131z g\u00FCvenilir kaynakla desteklenen ger\u00E7ek kriter farklar\u0131 g\u00F6sterilir.</p>' +\r\n              renderFp14SignalChips(fp14LeadRows(\"a\"), \"a\", \"Belirgin g\u00FCvenilir kriter \u00FCst\u00FCnl\u00FC\u011F\u00FC yok.\", false) +\r\n            '</article>' +\r\n            '<article class=\"is-close\" data-gdx-panel-fp14-signal-card=\"product-b\">' +\r\n              '<strong>' + escapeHtml(identityB + \" hangi kriterlerde \u00F6nde?\") + '</strong>' +\r\n              '<p>Genel F/P e\u015Fitli\u011Fi nedeniyle bu farklar kazanan ilan\u0131 olu\u015Fturmaz.</p>' +\r\n              renderFp14SignalChips(fp14LeadRows(\"b\"), \"b\", \"Belirgin g\u00FCvenilir kriter \u00FCst\u00FCnl\u00FC\u011F\u00FC yok.\", false) +\r\n            '</article>' +\r\n            '<article class=\"is-close\" data-gdx-panel-fp14-signal-card=\"close\">' +\r\n              '<strong>Berabere / yak\u0131n ge\u00E7en kriterler</strong>' +\r\n              '<p>\u0130ki \u00FCr\u00FCn\u00FCn birbirine \u00E7ok yak\u0131n oldu\u011Fu teknik alanlar.</p>' +\r\n              renderFp14SignalChips(closeRows, \"a\", \"Yak\u0131n kriter verisi s\u0131n\u0131rl\u0131.\", true) +\r\n            '</article>' +\r\n          '</div>';\r\n      }\r\n\r\n      var winnerName = winnerSide === \"a\" ? identityA : identityB;\r\n      var alternativeName = winnerSide === \"a\" ? identityB : identityA;\r\n      var winnerRows = fp14LeadRows(winnerSide);\r\n      var alternativeRows = fp14LeadRows(alternativeSide);\r\n\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-fp14-signal-summary\" data-gdx-panel-fp14-signal-summary=\"1\">' +\r\n          '<article class=\"is-winner\" data-gdx-panel-fp14-signal-card=\"winner\">' +\r\n            '<strong>' + escapeHtml(winnerName + \" neden \u00F6nde?\") + '</strong>' +\r\n            '<p>Yaln\u0131z rakibe g\u00F6re ger\u00E7ek ve g\u00FCvenilir teknik avantajlar.</p>' +\r\n            renderFp14SignalChips(winnerRows, winnerSide, \"Belirgin g\u00FCvenilir kriter \u00FCst\u00FCnl\u00FC\u011F\u00FC yok.\", false) +\r\n          '</article>' +\r\n          '<article class=\"is-loser\" data-gdx-panel-fp14-signal-card=\"alternative\">' +\r\n            '<strong>' + escapeHtml(alternativeName + \" nerede g\u00FC\u00E7l\u00FC?\") + '</strong>' +\r\n            '<p>Di\u011Fer \u00FCr\u00FCn\u00FCn ger\u00E7ekten \u00F6nde oldu\u011Fu teknik alanlar.</p>' +\r\n            renderFp14SignalChips(alternativeRows, alternativeSide, \"Belirgin g\u00FCvenilir kriter \u00FCst\u00FCnl\u00FC\u011F\u00FC yok.\", false) +\r\n          '</article>' +\r\n          '<article class=\"is-close\" data-gdx-panel-fp14-signal-card=\"close\">' +\r\n            '<strong>Yak\u0131n ge\u00E7en kriterler</strong>' +\r\n            '<p>Skor fark\u0131n\u0131n d\u00FC\u015F\u00FCk oldu\u011Fu kriterler.</p>' +\r\n            renderFp14SignalChips(closeRows, winnerSide, \"Yak\u0131n kriter verisi s\u0131n\u0131rl\u0131.\", true) +\r\n          '</article>' +\r\n        '</div>';\r\n    }\r\n\r\n    var criticalFp14Keys = [\r\n      \"price_value\",\r\n      \"price_performance\",\r\n      \"output_power\",\r\n      \"color_accuracy\",\r\n      \"mobile_power\",\r\n      \"portability\"\r\n    ];\r\n\r\n    function criticalPriority(row) {\r\n      var key = String(row && row.key || \"\");\r\n      var label = lower((row && (row.label || row.short || row.key)) || \"\");\r\n      var source = lower([key, label].join(\" \"));\r\n\r\n      /*\r\n        P12-4D-R1:\r\n        - \"de\u011Fer\" kelimesi tek ba\u015F\u0131na fiyat kriteri say\u0131lmaz.\r\n          \u00C7\u00FCnk\u00FC \"Kutu \u0130\u00E7eri\u011Fi / Aksesuar De\u011Feri\" yanl\u0131\u015Fl\u0131kla ilk 5'e giriyordu.\r\n        - CCT / Kelvin \u00F6nemli ama genel FP14 ilk bak\u0131\u015Fta detay kriteri kalmal\u0131.\r\n        - Batarya/mobil g\u00FC\u00E7 ve ta\u015F\u0131nabilirlik ilk 5'e daha y\u00FCksek m\u00FC\u015Fteri-karar \u00F6nceli\u011Fiyle al\u0131n\u0131r.\r\n      */\r\n\r\n      if (\r\n        key === \"price_value\" ||\r\n        key === \"price_performance\" ||\r\n        /(^|_|-)price($|_|-)/.test(key) ||\r\n        /fiyat|performans/.test(label)\r\n      ) return 1;\r\n\r\n      if (\r\n        key === \"output_power\" ||\r\n        key === \"light_power\" ||\r\n        key === \"watt_lux\" ||\r\n        /\u0131\u015F\u0131k g\u00FCc\u00FC|isik gucu|watt|lux|l\u00FCmen|lumen|\u0131\u015F\u0131k \u00E7\u0131k\u0131\u015F\u0131|isik cikisi/.test(label)\r\n      ) return 2;\r\n\r\n      if (\r\n        key === \"color_accuracy\" ||\r\n        key === \"cri_tlci_ra\" ||\r\n        /renk do\u011Frulu\u011Fu|renk dogrulugu|cri|tlci|(^|\\s)ra(\\s|$)/.test(label)\r\n      ) return 3;\r\n\r\n      if (\r\n        key === \"mobile_power\" ||\r\n        key === \"battery_mobile\" ||\r\n        key === \"battery_power\" ||\r\n        key === \"power_system\" ||\r\n        /battery|batarya|mobil|mobile|v[-_ ]?mount|np[-_ ]?f|ak\u00FC|aku|\u015Farj|sarj|g\u00FC\u00E7 sistemi|guc sistemi/.test(source)\r\n      ) return 4;\r\n\r\n      if (\r\n        key === \"portability\" ||\r\n        key === \"size_weight\" ||\r\n        key === \"dimension_weight\" ||\r\n        key === \"carry_weight\" ||\r\n        /ta\u015F\u0131nabilirlik|tasinabilirlik|ta\u015F\u0131ma|tasima|boyut|a\u011F\u0131rl\u0131k|agirlik|kompakt|kurulum|pratiklik|hafif/.test(source)\r\n      ) return 5;\r\n\r\n      if (\r\n        key === \"kit_value\" ||\r\n        key === \"cct_range\" ||\r\n        /kutu i\u00E7eri\u011Fi|kutu icerigi|aksesuar|kelvin|cct/.test(label)\r\n      ) return 80;\r\n\r\n      return 99;\r\n    }\r\n\r\n    function renderFp14Row(row, progressiveRole) {\r\n      var a = row.productA || {};\r\n      var b = row.productB || {};\r\n      var aScore = Number(a.score || 0);\r\n      var bScore = Number(b.score || 0);\r\n      var weightText = criterionWeightText(row);\r\n\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-axis-row ' + (progressiveRole === \"critical\" ? \"is-critical\" : \"is-detail\") + '\" data-gdx-panel-fp14-row=\"' + escapeHtml(row.key || \"\") + '\" data-gdx-panel-fp14-master-row=\"' + escapeHtml(row.key || \"\") + '\" data-gdx-panel-fp14-progressive-role=\"' + escapeHtml(progressiveRole || \"detail\") + '\">' +\r\n          '<div class=\"gdx-panel-v4-axis-head\">' +\r\n            '<strong>' + escapeHtml(row.label || row.key || \"FP14 Kriter\") + '</strong>' +\r\n            '<span>' + escapeHtml([weightText, scoreText(aScore) + \" / \" + scoreText(bScore)].filter(Boolean).join(\" \u00B7 \")) + '</span>' +\r\n          '</div>' +\r\n\r\n          '<div class=\"gdx-panel-v4-axis-bars\">' +\r\n            '<div class=\"gdx-panel-v4-axis-bar ' + escapeHtml(toneA) + '\"><span data-gdx-panel-fp14-bar-side=\"a\" data-gdx-panel-fp14-bar-score=\"' + escapeHtml(scoreText(aScore)) + '\" style=\"width:' + barWidth(aScore) + '%\"></span></div>' +\r\n            '<div class=\"gdx-panel-v4-axis-bar ' + escapeHtml(toneB) + '\"><span data-gdx-panel-fp14-bar-side=\"b\" data-gdx-panel-fp14-bar-score=\"' + escapeHtml(scoreText(bScore)) + '\" style=\"width:' + barWidth(bScore) + '%\"></span></div>' +\r\n          '</div>' +\r\n\r\n          '<div class=\"gdx-panel-v4-fp14-evidence-pair\" data-gdx-panel-fp14-evidence-pair=\"' + escapeHtml(row.key || \"\") + '\">' +\r\n            fp14EvidenceMini(a, sourceA, identityA, toneA, \"a\") +\r\n            fp14EvidenceMini(b, sourceB, identityB, toneB, \"b\") +\r\n          '</div>' +\r\n\r\n          '<div class=\"gdx-panel-v4-axis-head is-single-copy\" data-gdx-panel-fp14-row-copy=\"' + escapeHtml(row.key || \"\") + '\">' +\r\n            '<small>' + escapeHtml(criterionDecisionText(row, aScore, bScore)) + '</small>' +\r\n          '</div>' +\r\n        '</div>';\r\n    }\r\n\r\n    var sortedCriticalRows = ev.detailRows\r\n      .map(function (row, index) {\r\n        return { row: row, index: index, priority: criticalPriority(row) };\r\n      })\r\n      .sort(function (a, b) {\r\n        if (a.priority !== b.priority) return a.priority - b.priority;\r\n        return a.index - b.index;\r\n      });\r\n\r\n    var criticalRows = [];\r\n    var usedCriticalKeys = {};\r\n\r\n    sortedCriticalRows.forEach(function (item) {\r\n      if (criticalRows.length >= 5) return;\r\n      if (item.priority >= 99) return;\r\n\r\n      var key = String(item.row && item.row.key || \"\");\r\n      if (key && usedCriticalKeys[key]) return;\r\n\r\n      usedCriticalKeys[key] = true;\r\n      criticalRows.push(item.row);\r\n    });\r\n\r\n    if (criticalRows.length < 5) {\r\n      ev.detailRows.forEach(function (row) {\r\n        if (criticalRows.length >= 5) return;\r\n        if (criticalRows.indexOf(row) > -1) return;\r\n        criticalRows.push(row);\r\n      });\r\n    }\r\n\r\n    var criticalKeyMap = {};\r\n    criticalRows.forEach(function (row) {\r\n      criticalKeyMap[String(row && row.key || \"\")] = true;\r\n    });\r\n\r\n    var detailRows = ev.detailRows.filter(function (row) {\r\n      return !criticalKeyMap[String(row && row.key || \"\")];\r\n    });\r\n\r\n    var criticalRowsHtml = criticalRows.map(function (row) {\r\n      return renderFp14Row(row, \"critical\");\r\n    }).join(\"\");\r\n\r\n    var detailRowsHtml = detailRows.map(function (row) {\r\n      return renderFp14Row(row, \"detail\");\r\n    }).join(\"\");\r\n\r\n    return '' +\r\n      '<article class=\"gdx-panel-v4-axis-card\" data-gdx-panel-fp14-bars=\"1\" data-gdx-panel-fp14-master=\"1\">' +\r\n        '<h5>14 Kriterli Teknik F/P Analizi</h5>' +\r\n        '<p>Bu b\u00F6l\u00FCm iki Panel LED \u00FCr\u00FCn\u00FCn\u00FC 14 teknik F/P kriterinde kar\u015F\u0131la\u015Ft\u0131r\u0131r. Veriler \u00FCr\u00FCn ad\u0131, a\u00E7\u0131klama ve teknik bilgilerden okunur; stok bilgisi puana dahil edilmez.</p>' +\r\n\r\n        '<div class=\"gdx-panel-v4-compare-grid\" data-gdx-panel-fp14-identities=\"1\">' +\r\n          identityCard(productA, sourceA, toneA, \"a\") +\r\n          identityCard(productB, sourceB, toneB, \"b\") +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-panel-v4-tie-explain\">' +\r\n          '<div>' +\r\n            '<strong>' + escapeHtml(validationText) + '</strong>' +\r\n            '<p>14 kriterin toplam a\u011F\u0131rl\u0131\u011F\u0131 100\u2019d\u00FCr. Barlar iki \u00FCr\u00FCn\u00FCn teknik verilerini ayn\u0131 \u00F6l\u00E7ekte g\u00F6sterir.</p>' +\r\n          '</div>' +\r\n          '<span>' + escapeHtml(String(ev.criteriaCount || 0)) + ' kriter</span>' +\r\n        '</div>' +\r\n\r\n        renderFp14DecisionSignalSummary() +\r\n\r\n        '<div class=\"gdx-panel-v4-fp14-progressive-summary\" data-gdx-panel-fp14-progressive-summary=\"1\">' +\r\n          '<strong>\u00D6nce en kritik 5 kriter g\u00F6steriliyor</strong>' +\r\n          '<p>Fiyat/de\u011Fer, \u0131\u015F\u0131k g\u00FCc\u00FC, renk do\u011Frulu\u011Fu, mobil g\u00FC\u00E7 ve ta\u015F\u0131nabilirlik ilk bak\u0131\u015Fta okunur. Kalan teknik kriterler detay alt\u0131nda korunur.</p>' +\r\n          '<span>' + escapeHtml(String(criticalRows.length)) + ' a\u00E7\u0131k / ' + escapeHtml(String(detailRows.length)) + ' detay</span>' +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-panel-v4-fp14-critical-list\" data-gdx-panel-fp14-master-list=\"1\" data-gdx-panel-fp14-critical-list=\"1\">' +\r\n          criticalRowsHtml +\r\n        '</div>' +\r\n\r\n        '<details class=\"gdx-panel-v4-fp14-detail-toggle\" data-gdx-panel-fp14-detail-toggle=\"1\">' +\r\n          '<summary>' +\r\n            '<span data-gdx-panel-fp14-detail-label=\"1\">T\u00FCm teknik kriterleri g\u00F6ster</span>' +\r\n            '<small>' + escapeHtml(String(detailRows.length)) + ' ek kriter</small>' +\r\n          '</summary>' +\r\n          '<div class=\"gdx-panel-v4-fp14-detail-list\" data-gdx-panel-fp14-detail-list=\"1\">' +\r\n            detailRowsHtml +\r\n          '</div>' +\r\n        '</details>' +\r\n      '</article>';\r\n  }\r\n\r\n        function renderExpertDataChips(result) {\r\n    result = result || {};\r\n\r\n    var ev = result.fp14Evidence && result.fp14Evidence.ok ? result.fp14Evidence : null;\r\n    var rows = ev && Array.isArray(ev.detailRows) ? ev.detailRows : [];\r\n    var winner = result.winner || {};\r\n    var winnerKey = winner.productKey || \"\";\r\n    var chips = [];\r\n    var winnerProduct = selectedProductByCompareItem(winner);\r\n\r\n    function isStockChipText(value) {\r\n      var text = lower(value || \"\");\r\n\r\n      return (\r\n        /stok/.test(text) ||\r\n        /sat\u0131n al\u0131nabilirlik/.test(text) ||\r\n        /sat\u0131n alinabilirlik/.test(text)\r\n      );\r\n    }\r\n\r\n    function addChip(value) {\r\n      value = sourceAwareReasonText(value);\r\n\r\n      if (!value || isStockChipText(value)) return;\r\n      if (chips.indexOf(value) > -1) return;\r\n\r\n      chips.push(value);\r\n    }\r\n\r\n    [\r\n      compactSpecLabel(winnerProduct, \"light\"),\r\n      compactSpecLabel(winnerProduct, \"color\"),\r\n      compactSpecLabel(winnerProduct, \"power\")\r\n    ].forEach(addChip);\r\n\r\n    rows.forEach(function (row) {\r\n      var a = row.productA || {};\r\n      var b = row.productB || {};\r\n      var aKey = a.productKey || (ev.productA && ev.productA.productKey) || \"\";\r\n      var bKey = b.productKey || (ev.productB && ev.productB.productKey) || \"\";\r\n      var winnerSide = \"\";\r\n\r\n      if (winnerKey && aKey === winnerKey) winnerSide = \"a\";\r\n      if (winnerKey && bKey === winnerKey) winnerSide = \"b\";\r\n\r\n      if (!winnerSide || row.leader !== winnerSide) return;\r\n\r\n      var item = winnerSide === \"a\" ? a : b;\r\n      var label = row.short || row.label || row.key || \"Kriter\";\r\n      var value = item.valueLabel || \"\";\r\n\r\n      addChip(label + \": \" + value);\r\n    });\r\n\r\n    if (chips.length < 3) {\r\n      rows.forEach(function (row) {\r\n        var a = row.productA || {};\r\n        var b = row.productB || {};\r\n        var label = row.short || row.label || row.key || \"Kriter\";\r\n        var value = row.leader === \"b\" ? b.valueLabel : a.valueLabel;\r\n\r\n        addChip(label + \": \" + (value || \"veri okundu\"));\r\n      });\r\n    }\r\n\r\n    chips = chips.slice(0, 5);\r\n\r\n    if (!chips.length) return \"\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-reco-priority-chips\" data-gdx-panel-expert-chips=\"1\">' +\r\n        chips.map(function (chip) {\r\n          return '<span>' + escapeHtml(chip) + '</span>';\r\n        }).join(\"\") +\r\n      '</div>';\r\n  }\r\n\r\n     function getNarrativeLibrary() {\r\n    return window.GDX_PANEL_LED_V4_NARRATIVE_LIBRARY || null;\r\n  }\r\n\r\n  function renderNarrativeChipList(chips, attrName) {\r\n    chips = Array.isArray(chips) ? chips : [];\r\n\r\n    chips = chips.filter(function (chip) {\r\n      var text = lower(chip || \"\");\r\n      return chip && !/stok/.test(text) && !/sat\u0131n al\u0131nabilirlik/.test(text) && !/sat\u0131n alinabilirlik/.test(text);\r\n    }).slice(0, 5);\r\n\r\n    if (!chips.length) return \"\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-reco-priority-chips\" ' + (attrName ? attrName : '') + '>' +\r\n        chips.map(function (chip) {\r\n          return '<span>' + escapeHtml(chip) + '</span>';\r\n        }).join(\"\") +\r\n      '</div>';\r\n  }\r\n\r\n  function renderExpertReasonCards(reasons) {\r\n    reasons = Array.isArray(reasons) ? reasons.filter(function (reason) {\r\n      return noStockText((reason && (reason.title + \" \" + reason.text + \" \" + reason.chip + \" \" + reason.proofLabel)) || \"\");\r\n    }) : [];\r\n\r\n    if (!reasons.length) return \"\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-decision-grid\" data-gdx-panel-expert-reasons=\"1\">' +\r\n        reasons.slice(0, 3).map(function (reason, index) {\r\n          return '' +\r\n            '<article data-gdx-panel-expert-reason=\"' + escapeHtml(String(index + 1)) + '\">' +\r\n              '<h4>' + escapeHtml(reason.title || (\"Gerek\u00E7e \" + (index + 1))) + '</h4>' +\r\n              '<p>' + escapeHtml(reason.text || \"\") + '</p>' +\r\n              renderNarrativeChipList([reason.chip, reason.proofLabel].filter(Boolean), '') +\r\n            '</article>';\r\n        }).join(\"\") +\r\n      '</div>';\r\n  }\r\n\r\n  function renderExpertNarrativePanel(result) {\r\n    var lib = getNarrativeLibrary();\r\n    var narrative = null;\r\n\r\n    if (lib && typeof lib.buildExpertNarrative === \"function\") {\r\n      try {\r\n        narrative = lib.buildExpertNarrative(result);\r\n      } catch (error) {\r\n        narrative = null;\r\n      }\r\n    }\r\n\r\n    if (!narrative || !narrative.ok || narrative.stockLeak) {\r\n      return '' +\r\n        '<div class=\"gdx-panel-v4-detail-takeaway\" data-gdx-panel-expert-comment=\"1\">' +\r\n          '<strong>Uzman Yorumu</strong>' +\r\n          '<p>' + escapeHtml(renderDetailTakeaway(result)) + '</p>' +\r\n          renderExpertDataChips(result) +\r\n        '</div>';\r\n    }\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-detail-takeaway is-p9-expert-narrative\" data-gdx-panel-expert-comment=\"1\" data-gdx-panel-expert-narrative=\"1\">' +\r\n        '<strong>Uzman Yorumu</strong>' +\r\n\r\n        '<div class=\"gdx-panel-v4-reco-priority is-final\" data-gdx-panel-expert-decision=\"1\">' +\r\n          '<div>' +\r\n            '<strong>' + escapeHtml(narrative.decisionTitle || \"Sat\u0131n Alma Karar\u0131\") + '</strong>' +\r\n            '<p>' + escapeHtml(narrative.decisionText || \"\") + '</p>' +\r\n          '</div>' +\r\n          renderNarrativeChipList(narrative.chips || [], 'data-gdx-panel-expert-chips=\"1\"') +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-panel-v4-reco-priority\" data-gdx-panel-expert-reasons-title=\"1\">' +\r\n          '<strong>' + escapeHtml(narrative.reasonsTitle || \"Ger\u00E7ek kar\u015F\u0131la\u015Ft\u0131rmal\u0131 avantajlar\") + '</strong>' +\r\n          '<p>' + escapeHtml(narrative.reasonsIntro || \"Bu b\u00F6l\u00FCm yaln\u0131z ger\u00E7ek ve g\u00FCvenilir kriter farklar\u0131n\u0131 g\u00F6sterir.\") + '</p>' +\r\n        '</div>' +\r\n\r\n        renderExpertReasonCards(narrative.reasons || []) +\r\n\r\n        '<div class=\"gdx-panel-v4-reco-priority is-final\" data-gdx-panel-price-reading=\"1\">' +\r\n          '<div>' +\r\n            '<strong>' + escapeHtml((narrative.priceReading && narrative.priceReading.headline) || \"Fiyat nas\u0131l okunmal\u0131?\") + '</strong>' +\r\n            '<p>' + escapeHtml((narrative.priceReading && narrative.priceReading.text) || \"\") + '</p>' +\r\n          '</div>' +\r\n          renderNarrativeChipList([\r\n            narrative.priceReading && narrative.priceReading.ratioText ? narrative.priceReading.ratioText + \" fiyat seviyesi\" : \"\",\r\n            narrative.priceReading && narrative.priceReading.deltaPercent ? \"%\" + narrative.priceReading.deltaPercent + \" fiyat fark\u0131\" : \"\"\r\n          ], '') +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-panel-v4-reco-priority\" data-gdx-panel-alternative-reading=\"1\">' +\r\n          '<strong>' + escapeHtml(narrative.alternativeTitle || \"Di\u011Fer \u00FCr\u00FCn ne zaman mant\u0131kl\u0131?\") + '</strong>' +\r\n          '<p>' + escapeHtml(narrative.alternativeText || \"\") + '</p>' +\r\n        '</div>' +\r\n\r\n        ((narrative.verificationItems || []).length\r\n          ? '<div class=\"gdx-panel-v4-reco-priority\" data-gdx-panel-verification=\"1\">' +\r\n              '<strong>' + escapeHtml(narrative.verificationTitle || \"Do\u011Frulanmas\u0131 gerekenler\") + '</strong>' +\r\n              '<ul>' + (narrative.verificationItems || []).map(function (item) {\r\n                return '<li><b>' + escapeHtml(item.title || \"Veri kontrol\u00FC\") + '</b>: ' + escapeHtml(item.text || \"\") + '</li>';\r\n              }).join(\"\") + '</ul>' +\r\n            '</div>'\r\n          : '') +\r\n      '</div>';\r\n  }\r\n\r\n    function renderDetailTakeaway(result) {\r\n    result = result || {};\r\n\r\n    var winner = result.winner || {};\r\n    var loser = result.loser || {};\r\n    var ev = result.fp14Evidence && result.fp14Evidence.ok ? result.fp14Evidence : null;\r\n    var rows = ev && Array.isArray(ev.detailRows) ? ev.detailRows : [];\r\n\r\n    function shortCommentName(name) {\r\n      var value = String(name || \"\").trim();\r\n      if (value.length <= 20) return value;\r\n      return value.slice(0, 20) + \"...\";\r\n    }\r\n\r\n    function productName(item, fallback) {\r\n      return shortCommentName(\r\n        item.offerIdentityTitle ||\r\n        item.productShortTitle ||\r\n        item.productTitle ||\r\n        item.title ||\r\n        fallback\r\n      );\r\n    }\r\n\r\n    var winnerName = productName(winner, \"Kazanan \u00FCr\u00FCn\");\r\n    var loserName = productName(loser, \"Alternatif \u00FCr\u00FCn\");\r\n    var winnerKey = winner.productKey || \"\";\r\n    var topRow = null;\r\n\r\n    rows.forEach(function (row) {\r\n      var a = row.productA || {};\r\n      var b = row.productB || {};\r\n      var aKey = a.productKey || (ev.productA && ev.productA.productKey) || \"\";\r\n      var bKey = b.productKey || (ev.productB && ev.productB.productKey) || \"\";\r\n      var winnerSide = \"\";\r\n\r\n      if (winnerKey && aKey === winnerKey) winnerSide = \"a\";\r\n      if (winnerKey && bKey === winnerKey) winnerSide = \"b\";\r\n\r\n      if (!winnerSide || row.leader !== winnerSide) return;\r\n\r\n      var diff = Math.abs(Number(a.score || 0) - Number(b.score || 0));\r\n\r\n      if (!topRow || diff > topRow.diff) {\r\n        topRow = {\r\n          label: row.label || row.key || \"\u00F6nemli kriterler\",\r\n          diff: diff\r\n        };\r\n      }\r\n    });\r\n\r\n    if (result.isExactTie === true || result.decisionState === \"EXACT_TIE\") {\r\n      var aName = productName(result.productA || {}, \"A \u00FCr\u00FCn\u00FC\");\r\n      var bName = productName(result.productB || {}, \"B \u00FCr\u00FCn\u00FC\");\r\n      return aName + \" ve \" + bName + \" canonical Genel F/P skorunda berabere. Teknik kazanan yok; se\u00E7im yaln\u0131z ger\u00E7ek kriter farklar\u0131, fiyat ve paket ihtiyac\u0131yla yap\u0131lmal\u0131.\";\r\n    }\r\n\r\n    if (result.isTie) {\r\n      return winnerName + \" ve \" + loserName + \" teknik F/P dengesinde birbirine yak\u0131n g\u00F6r\u00FCn\u00FCyor. Nihai se\u00E7im; kullan\u0131m amac\u0131, b\u00FCt\u00E7e ve ger\u00E7ek kriter farklar\u0131na g\u00F6re yap\u0131lmal\u0131.\";\r\n    }\r\n\r\n    if (topRow) {\r\n      return winnerName + \", 14 kriterli analizde \u00F6zellikle \" + topRow.label + \" taraf\u0131nda avantaj sa\u011Fl\u0131yor. \" + loserName + \" ise kullan\u0131m amac\u0131 ve b\u00FCt\u00E7e e\u015Fle\u015Fmesine g\u00F6re g\u00FC\u00E7l\u00FC alternatif olarak de\u011Ferlendirilebilir.\";\r\n    }\r\n\r\n    return winnerName + \", 14 kriterli teknik F/P analizinde genel denge taraf\u0131nda \u00F6ne \u00E7\u0131k\u0131yor. \" + loserName + \" ise ihtiya\u00E7 profiline g\u00F6re kar\u015F\u0131la\u015Ft\u0131r\u0131lmas\u0131 gereken g\u00FC\u00E7l\u00FC alternatif olarak kal\u0131yor.\";\r\n  }\r\n\r\n  var exactRawTie = !!(result.isExactTie === true || result.decisionState === \"EXACT_TIE\");\r\n  var winnerReasons = exactRawTie\r\n    ? (result.decision && result.decision.productA ? result.decision.productA.reasons : [])\r\n    : (result.decision && result.decision.winner ? result.decision.winner.reasons : []);\r\n  var loserReasons = exactRawTie\r\n    ? (result.decision && result.decision.productB ? result.decision.productB.reasons : [])\r\n    : (result.decision && result.decision.loser ? result.decision.loser.reasons : []);\r\n\r\n  var winnerScoreRounded = result.winner && result.winner.score10 !== undefined ? String(result.winner.score10) : \"\";\r\n  var loserScoreRounded = result.loser && result.loser.score10 !== undefined ? String(result.loser.score10) : \"\";\r\n  var roundedScoresEqual = winnerScoreRounded && loserScoreRounded && winnerScoreRounded === loserScoreRounded;\r\n  var rawDifference = Number(result.difference || 0);\r\n  var differenceText = rawDifference ? rawDifference.toFixed(3).replace(\".\", \",\") : \"0\";\r\n\r\n  var tieExplainTitle = result.isTie\r\n    ? (exactRawTie ? \"Sonu\u00E7 berabere\" : \"Yak\u0131n sonu\u00E7\")\r\n    : \"Net F/P avantaj\u0131\";\r\n  var tieExplainText = \"\";\r\n\r\n  if (exactRawTie) {\r\n    tieExplainText =\r\n      \"\u0130ki \u00FCr\u00FCn\u00FCn genel F/P skoru e\u015Fit. Nihai se\u00E7im kullan\u0131m amac\u0131, b\u00FCt\u00E7e ve istenen \u0131\u015F\u0131k karakterine g\u00F6re yap\u0131lmal\u0131.\";\r\n  } else if (result.isTie && roundedScoresEqual) {\r\n    tieExplainText =\r\n      \"\u0130ki \u00FCr\u00FCn\u00FCn ekranda g\u00F6r\u00FCnen puan\u0131 yuvarlama nedeniyle ayn\u0131 g\u00F6r\u00FCn\u00FCyor. Motor, daha hassas i\u00E7 skora g\u00F6re k\u00FC\u00E7\u00FCk fark\u0131 hesaplad\u0131. Bu y\u00FCzden sonu\u00E7 yak\u0131n olarak g\u00F6steriliyor.\";\r\n  } else if (result.isTie) {\r\n    tieExplainText =\r\n      \"\u0130ki \u00FCr\u00FCn aras\u0131nda fark \u00E7ok d\u00FC\u015F\u00FCk. Bu durumda nihai tercih kullan\u0131m amac\u0131, b\u00FCt\u00E7e ve istenen \u0131\u015F\u0131k karakterine g\u00F6re yap\u0131lmal\u0131.\";\r\n  } else {\r\n    tieExplainText =\r\n      \"Genel Panel LED F/P profiline g\u00F6re kazanan \u00FCr\u00FCn; fiyat/de\u011Fer, teknik denge ve kullan\u0131m g\u00FCveni taraf\u0131nda daha g\u00FC\u00E7l\u00FC toplam de\u011Fer sundu. Teknik veriler \u00FCr\u00FCn ad\u0131, a\u00E7\u0131klama ve \u00FCr\u00FCn bilgilerinden okunarak de\u011Ferlendirilir.\";\r\n  }\r\n\r\n  var winnerRoleText = result.isTie\r\n    ? (exactRawTie ? \"Sonu\u00E7 Berabere\" : \"K\u00FC\u00E7\u00FCk Farkla \u00D6nde\")\r\n    : \"F/P Kazanan\u0131\";\r\n  var loserRoleText = result.isTie\r\n    ? (exactRawTie ? \"Sonu\u00E7 Berabere\" : \"G\u00FC\u00E7l\u00FC Alternatif\")\r\n    : \"Alternatif \u00DCr\u00FCn\";\r\n\r\n  showResultSurface();\r\n\r\n  el.innerHTML =\r\n    '<section class=\"gdx-panel-v4-result-box is-compare\">' +\r\n      '<div class=\"gdx-panel-v4-result-head\">' +\r\n        '<div>' +\r\n          '<div class=\"gdx-panel-v4-result-kicker\">14 KR\u0130TERL\u0130 PANEL LED F/P SONUCU</div>' +\r\n          '<h3>' + escapeHtml(result.summary && result.summary.title ? result.summary.title : \"F/P Kar\u015F\u0131la\u015Ft\u0131rma Sonucu\") + '</h3>' +\r\n          '<p>' + escapeHtml(result.summary && result.summary.text ? result.summary.text : \"\") + '</p>' +\r\n        '</div>' +\r\n        '<span>' + escapeHtml(result.profileLabel || \"Genel Panel LED F/P\") + '</span>' +\r\n      '</div>' +\r\n\r\n      renderResultJumpNav() +\r\n        renderP17Alt9ResultJourney() +\r\n\r\n      '<div class=\"gdx-panel-v4-compare-grid\" data-gdx-panel-decision-state=\"' + escapeHtml(result.decisionState || (result.isTie ? \"NEAR_TIE\" : \"DECISIVE\")) + '\">' +\r\n        productCard(winnerRoleText, exactRawTie ? result.productA : result.winner, exactRawTie ? \"is-loser\" : \"is-winner\") +\r\n        productCard(loserRoleText, exactRawTie ? result.productB : result.loser, \"is-loser\") +\r\n      '</div>' +\r\n\r\n      '<div class=\"gdx-panel-v4-tie-explain\">' +\r\n        '<div>' +\r\n          '<strong>' + escapeHtml(tieExplainTitle) + '</strong>' +\r\n          '<p>' + escapeHtml(tieExplainText) + '</p>' +\r\n        '</div>' +\r\n        '<span>\u0130\u00E7 skor fark\u0131: ' + escapeHtml(differenceText) + '</span>' +\r\n      '</div>' +\r\n\r\n      renderSourceSyncPanel(result) +\r\n\r\n      '<div class=\"gdx-panel-v4-decision-grid\">' +\r\n        '<article>' +\r\n          '<h4>' + escapeHtml(exactRawTie ? \"A \u00FCr\u00FCn\u00FCn\u00FCn \u00F6ne \u00E7\u0131kt\u0131\u011F\u0131 ger\u00E7ek kriterler\" : \"Kazanan \u00FCr\u00FCn\u00FCn ger\u00E7ek kriter avantajlar\u0131\") + '</h4>' +\r\n          '<ul>' + renderReasonList(winnerReasons) + '</ul>' +\r\n        '</article>' +\r\n        '<article>' +\r\n          '<h4>' + escapeHtml(exactRawTie ? \"B \u00FCr\u00FCn\u00FCn\u00FCn \u00F6ne \u00E7\u0131kt\u0131\u011F\u0131 ger\u00E7ek kriterler\" : \"Di\u011Fer \u00FCr\u00FCn\u00FCn \u00F6ne \u00E7\u0131kt\u0131\u011F\u0131 kriterler\") + '</h4>' +\r\n          '<ul>' + renderReasonList(loserReasons) + '</ul>' +\r\n        '</article>' +\r\n      '</div>' +\r\n\r\n            '<div class=\"gdx-panel-v4-detail-section\" data-gdx-panel-fp14-detail-section=\"1\">' +\r\n        '<div class=\"gdx-panel-v4-detail-head\">' +\r\n          '<div>' +\r\n            '<h4>14 Kriterli Teknik F/P Kar\u015F\u0131la\u015Ft\u0131rmas\u0131</h4>' +\r\n            '<p>Bu b\u00F6l\u00FCm, iki \u00FCr\u00FCn\u00FC 14 teknik F/P kriterinde yan yana kar\u015F\u0131la\u015Ft\u0131r\u0131r. Grafikler puan fark\u0131n\u0131, k\u0131sa notlar ise sat\u0131n alma karar\u0131n\u0131 etkileyen teknik verileri \u00F6zetler.</p>' +\r\n          '</div>' +\r\n            '<span>14 teknik kriter</span>' +\r\n        '</div>' +\r\n\r\n        renderFp14DualCriteriaBars(result) +\r\n\r\n        renderExpertNarrativePanel(result) +\r\n      '</div>' +\r\n    '</section>';\r\n}\r\n\r\n  function getRecommenderApi() {\r\n  return window.GDX_PANEL_LED_V4_RECOMMENDER || null;\r\n}\r\n\r\nfunction useCaseKey(item) {\r\n  return item && (item.key || item.familyKey || item.value) ? String(item.key || item.familyKey || item.value) : \"\";\r\n}\r\n\r\nfunction useCaseLabel(item) {\r\n  return item && (item.shortLabel || item.familyShortLabel || item.label || item.familyLabel)\r\n    ? String(item.shortLabel || item.familyShortLabel || item.label || item.familyLabel)\r\n    : useCaseKey(item);\r\n}\r\n\r\nfunction getUseCaseList() {\r\n  var REC = getRecommenderApi();\r\n\r\n  if (!REC || typeof REC.listUseCases !== \"function\") return [];\r\n\r\n  try {\r\n    return REC.listUseCases() || [];\r\n  } catch (error) {\r\n    return [];\r\n  }\r\n}\r\n\r\nfunction ensureRecommendationResult() {\r\n  var REC = getRecommenderApi();\r\n\r\n  if (!REC || typeof REC.recommend !== \"function\") {\r\n    uiState.recommendationResult = {\r\n      ok: false,\r\n      error: \"Recommender Core bulunamad\u0131. panel-led-v4.recommender.js dosyas\u0131n\u0131 kontrol edin.\",\r\n      items: []\r\n    };\r\n    return uiState.recommendationResult;\r\n  }\r\n\r\n  if (!API || !API.state || !API.state.loaded) {\r\n    uiState.recommendationResult = {\r\n      ok: false,\r\n      error: \"\u00D6neriler i\u00E7in \u00FCr\u00FCn verisi y\u00FCkleniyor. Panel a\u00E7\u0131ld\u0131ktan sonra \u00FCr\u00FCn datas\u0131 haz\u0131r olmal\u0131.\",\r\n      items: []\r\n    };\r\n    return uiState.recommendationResult;\r\n  }\r\n\r\n  var committedRecommendationLane = String(\r\n    uiState.recommendPurchaseLane ||\r\n    (window.GDX_PANEL_V4_ETAP2_PURCHASE_LANE &&\r\n      typeof window.GDX_PANEL_V4_ETAP2_PURCHASE_LANE.getCommittedLane === \"function\"\r\n        ? window.GDX_PANEL_V4_ETAP2_PURCHASE_LANE.getCommittedLane()\r\n        : \"ALL\") ||\r\n    \"ALL\"\r\n  );\r\n\r\n  if (\r\n    uiState.recommendationResult &&\r\n    uiState.recommendationResult.ok &&\r\n    uiState.recommendationResult.familyKey === uiState.recommendFamilyKey &&\r\n    String(uiState.recommendationResult.purchaseLane || \"ALL\") === committedRecommendationLane\r\n  ) {\r\n    return uiState.recommendationResult;\r\n  }\r\n\r\n  uiState.recommendPurchaseLane = committedRecommendationLane;\r\n  uiState.recommendationResult = REC.recommend({\r\n    familyKey: uiState.recommendFamilyKey || \"content_creation\",\r\n    scenarioKey: uiState.recommendScenarioKey || \"\",\r\n    purchaseLane: committedRecommendationLane,\r\n    limit: 3,\r\n    includeOutOfStock: true\r\n  });\r\n\r\n  uiState.recommendationRenderedAt = new Date().toISOString();\r\n\r\n  return uiState.recommendationResult;\r\n}\r\n\r\nfunction renderUseCaseTabs(activeKey) {\r\n  var list = getUseCaseList();\r\n\r\n  if (!list.length) {\r\n    return '<div class=\"gdx-panel-v4-reco-empty\">Kullan\u0131m amac\u0131 listesi hen\u00FCz y\u00FCklenmedi.</div>';\r\n  }\r\n\r\n  return list.map(function (item) {\r\n    var key = useCaseKey(item);\r\n    var label = useCaseLabel(item);\r\n\r\n    if (!key) return \"\";\r\n\r\n    return '' +\r\n      '<button type=\"button\" class=\"gdx-panel-v4-usecase-btn ' + (key === activeKey ? \"is-active\" : \"\") + '\" data-gdx-panel-usecase=\"' + escapeHtml(key) + '\">' +\r\n        escapeHtml(label) +\r\n      '</button>';\r\n  }).join(\"\");\r\n}\r\n\r\nfunction renderSpeedometer(score100) {\r\n  var score = Math.max(0, Math.min(100, Number(score100 || 0)));\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-speedometer is-arc-fill\" data-score=\"' + escapeHtml(String(Math.round(score))) + '\">' +\r\n      '<svg viewBox=\"0 0 220 140\" role=\"img\" aria-label=\"Ama\u00E7 skoru\">' +\r\n        '<path class=\"gdx-panel-v4-speed-zone is-low\" d=\"M 28 108 A 82 82 0 0 1 72 41\"></path>' +\r\n        '<path class=\"gdx-panel-v4-speed-zone is-mid\" d=\"M 72 41 A 82 82 0 0 1 148 41\"></path>' +\r\n        '<path class=\"gdx-panel-v4-speed-zone is-high\" d=\"M 148 41 A 82 82 0 0 1 192 108\"></path>' +\r\n\r\n        '<path class=\"gdx-panel-v4-speed-bg\" pathLength=\"100\" d=\"M 28 108 A 82 82 0 0 1 192 108\"></path>' +\r\n        '<path class=\"gdx-panel-v4-speed-fg\" pathLength=\"100\" data-target=\"' + escapeHtml(String(Math.round(score))) + '\" style=\"stroke-dashoffset:100\" d=\"M 28 108 A 82 82 0 0 1 192 108\"></path>' +\r\n\r\n        '<g class=\"gdx-panel-v4-speed-ticks\">' +\r\n          '<line x1=\"28\" y1=\"108\" x2=\"40\" y2=\"108\"></line>' +\r\n          '<line x1=\"51\" y1=\"59\" x2=\"61\" y2=\"66\"></line>' +\r\n          '<line x1=\"110\" y1=\"26\" x2=\"110\" y2=\"40\"></line>' +\r\n          '<line x1=\"169\" y1=\"59\" x2=\"159\" y2=\"66\"></line>' +\r\n          '<line x1=\"192\" y1=\"108\" x2=\"180\" y2=\"108\"></line>' +\r\n        '</g>' +\r\n\r\n        '<circle class=\"gdx-panel-v4-speed-dot\" cx=\"110\" cy=\"108\" r=\"4\"></circle>' +\r\n      '</svg>' +\r\n\r\n      '<div class=\"gdx-panel-v4-speed-score\">' +\r\n        '<strong class=\"gdx-panel-v4-speed-number\" data-score=\"' + escapeHtml(String(Math.round(score))) + '\">0</strong>' +\r\n        '<span>/100</span>' +\r\n      '</div>' +\r\n      '<div class=\"gdx-panel-v4-speed-label\">AMA\u00C7 SKORU</div>' +\r\n    '</div>';\r\n}\r\n\r\nfunction animateSpeedometers() {\r\n  var meters = document.querySelectorAll(\"#gdx-panel-led-v4-root .gdx-panel-v4-speedometer.is-arc-fill\");\r\n\r\n  Array.prototype.forEach.call(meters, function (meter) {\r\n    var number = meter.querySelector(\".gdx-panel-v4-speed-number[data-score]\");\r\n    var arc = meter.querySelector(\".gdx-panel-v4-speed-fg[data-target]\");\r\n\r\n    if (!number || !arc) return;\r\n\r\n    var target = Math.max(0, Math.min(100, Number(number.getAttribute(\"data-score\") || 0)));\r\n    var started = null;\r\n    var duration = 900;\r\n\r\n    number.textContent = \"0\";\r\n    arc.style.strokeDashoffset = \"100\";\r\n\r\n    function step(timestamp) {\r\n      if (!started) started = timestamp;\r\n\r\n      var progress = Math.min(1, (timestamp - started) / duration);\r\n      var eased = 1 - Math.pow(1 - progress, 3);\r\n\r\n      var value = Math.round(target * eased);\r\n      var offset = 100 - (target * eased);\r\n\r\n      number.textContent = String(value);\r\n      arc.style.strokeDashoffset = String(offset);\r\n\r\n      if (progress < 1) {\r\n        window.requestAnimationFrame(step);\r\n      } else {\r\n        number.textContent = String(target);\r\n        arc.style.strokeDashoffset = String(100 - target);\r\n      }\r\n    }\r\n\r\n    window.requestAnimationFrame(step);\r\n  });\r\n}\r\n\r\nfunction renderRecoCriteria(item) {\r\n  var breakdown = Array.isArray(item.breakdown) ? item.breakdown.slice(0, 4) : [];\r\n\r\n  if (!breakdown.length) {\r\n    return '<div class=\"gdx-panel-v4-reco-mini-empty\">Kriter verisi yok.</div>';\r\n  }\r\n\r\n  return breakdown.map(function (row) {\r\n    var score = Math.max(0, Math.min(10, Number(row.score || 0)));\r\n    var width = score * 10;\r\n\r\n    return '' +\r\n      '<div class=\"gdx-panel-v4-reco-mini\">' +\r\n        '<div>' +\r\n          '<strong>' + escapeHtml(row.label || row.key || \"Kriter\") + '</strong>' +\r\n          '<span>' + escapeHtml(String(score)) + '/10</span>' +\r\n        '</div>' +\r\n        '<em><i style=\"width:' + width + '%\"></i></em>' +\r\n      '</div>';\r\n  }).join(\"\");\r\n}\r\n\r\nfunction renderRecoBullets(item) {\r\n  var bullets = Array.isArray(item.reasonBullets) ? item.reasonBullets : [];\r\n\r\n  if (!bullets.length) return \"\";\r\n\r\n  return '' +\r\n    '<ul class=\"gdx-panel-v4-reco-bullets\">' +\r\n      bullets.slice(0, 4).map(function (bullet) {\r\n        return '<li>' + escapeHtml(bullet) + '</li>';\r\n      }).join(\"\") +\r\n    '</ul>';\r\n}\r\n\r\nfunction recoScoreTone(score) {\r\n  score = Number(score || 0);\r\n\r\n  if (score >= 86) return \"excellent\";\r\n  if (score >= 76) return \"good\";\r\n  if (score >= 66) return \"medium\";\r\n  return \"low\";\r\n}\r\n\r\nfunction recoScoreLabel(score) {\r\n  score = Number(score || 0);\r\n\r\n  if (score >= 86) return \"\u00C7ok g\u00FC\u00E7l\u00FC tercih\";\r\n  if (score >= 76) return \"G\u00FC\u00E7l\u00FC tercih\";\r\n  if (score >= 66) return \"Dengeli tercih\";\r\n  return \"Kontroll\u00FC de\u011Ferlendir\";\r\n}\r\n\r\nfunction recoRankRole(rank) {\r\n  rank = Number(rank || 0);\r\n\r\n  if (rank === 1) return \"En uygun \u00F6neri\";\r\n  if (rank === 2) return \"G\u00FC\u00E7l\u00FC alternatif\";\r\n  if (rank === 3) return \"Senaryo alternatifi\";\r\n\r\n  return \"\u00D6nerilen \u00FCr\u00FCn\";\r\n}\r\n\r\nfunction recoCustomerDecision(item, score) {\r\n  var title = smartItemTitle(item, item.product || {}, \"Bu \u00FCr\u00FCn\");\r\n  var label = item.suitabilityLabel || recoScoreLabel(score);\r\n\r\n  if (item.reasonText) {\r\n    return item.reasonText;\r\n  }\r\n\r\n  return title + \" se\u00E7ili kullan\u0131m amac\u0131 i\u00E7in \" + label.toLocaleLowerCase(\"tr-TR\") + \" seviyesinde sonu\u00E7 verdi\u011Fi i\u00E7in \u00F6ne \u00E7\u0131k\u0131yor.\";\r\n}\r\n\r\nfunction recoMetaLine(item) {\r\n  var parts = [];\r\n\r\n  if (item.priceText) parts.push(item.priceText);\r\n  if (item.vendor) parts.push(item.vendor);\r\n  parts.push(item.available ? \"Stokta\" : \"Stok kontrol\u00FC gerekli\");\r\n\r\n  return parts.filter(Boolean).join(\" \u00B7 \");\r\n}\r\n\r\nfunction recoConfidenceText(item) {\r\n  var confidence = item && item.dataConfidence ? item.dataConfidence : {};\r\n  var grade = confidence.grade || \"B\";\r\n\r\n  if (grade === \"A\") return \"Veri g\u00FCveni y\u00FCksek\";\r\n  if (grade === \"B\") return \"Veri g\u00FCveni standart\";\r\n  if (grade === \"C\") return \"Veri g\u00FCveni s\u0131n\u0131rl\u0131\";\r\n\r\n  return \"Veri g\u00FCveni kontrol edildi\";\r\n}\r\n\r\nfunction recoStockTone(item) {\r\n  if (!item) return \"unknown\";\r\n  return item.available ? \"in\" : \"out\";\r\n}\r\n\r\nfunction recoStockText(item) {\r\n  if (!item) return \"Stok bilgisi kontrol ediliyor.\";\r\n  return item.available ? \"Stokta g\u00F6r\u00FCn\u00FCyor\" : \"Stok teyidi \u00F6nerilir\";\r\n}\r\n\r\nfunction recoPurchaseHint(item) {\r\n  if (!item) return \"\u00DCr\u00FCn sayfas\u0131nda g\u00FCncel fiyat ve stok bilgisini kontrol edin.\";\r\n\r\n  if (item.available) {\r\n    return \"G\u00FCncel fiyat, stok ve sat\u0131n alma se\u00E7enekleri i\u00E7in \u00FCr\u00FCn sayfas\u0131n\u0131 a\u00E7abilirsiniz.\";\r\n  }\r\n\r\n  return \"Bu \u00FCr\u00FCn stok d\u0131\u015F\u0131 g\u00F6r\u00FCn\u00FCyor. Alternatif \u00F6nerileri veya \u00FCr\u00FCn sayfas\u0131ndaki g\u00FCncel stok bilgisini kontrol edin.\";\r\n}\r\n\r\nfunction recoPrimaryCtaText(item) {\r\n  return item && item.available ? \"\u00DCr\u00FCn\u00FC \u0130ncele\" : \"Stok Durumunu Kontrol Et\";\r\n}\r\n\r\nfunction recoCommerceNote(item) {\r\n  if (item && item.available) {\r\n    return \"Sat\u0131n alma karar\u0131 i\u00E7in \u00FCr\u00FCn sayfas\u0131nda fiyat, taksit ve kargo bilgisini kontrol edin.\";\r\n  }\r\n\r\n  return \"Stok d\u0131\u015F\u0131 \u00FCr\u00FCnlerde muadil \u00F6neriler ve g\u00FCncel stok bilgisi i\u00E7in \u00FCr\u00FCn sayfas\u0131n\u0131 kontrol edin.\";\r\n}\r\n\r\nfunction recoCustomerConfidenceDetail(item) {\r\n  var confidence = item && item.dataConfidence ? item.dataConfidence : {};\r\n  var grade = confidence.grade || \"B\";\r\n\r\n  if (grade === \"A\") {\r\n    return \"\u00DCr\u00FCn bilgileri g\u00FC\u00E7l\u00FC; se\u00E7ili kullan\u0131m amac\u0131yla kriter e\u015Fle\u015Fmesi net g\u00F6r\u00FCn\u00FCyor.\";\r\n  }\r\n\r\n  if (grade === \"B\") {\r\n    return \"\u00DCr\u00FCn bilgileri ve kriter e\u015Fle\u015Fmesi birlikte de\u011Ferlendirildi.\";\r\n  }\r\n\r\n  if (grade === \"C\") {\r\n    return \"Baz\u0131 \u00FCr\u00FCn bilgileri s\u0131n\u0131rl\u0131 olabilir; karar \u00F6ncesi \u00FCr\u00FCn sayfas\u0131ndaki g\u00FCncel bilgileri kontrol edin.\";\r\n  }\r\n\r\n  return \"\u00DCr\u00FCn bilgileri, kullan\u0131m amac\u0131 ve kriter e\u015Fle\u015Fmesi birlikte de\u011Ferlendirildi.\";\r\n}\r\n\r\nfunction getUseCaseNarrativeResult(recommendationResult) {\r\n  var lib = window.GDX_PANEL_LED_V4_NARRATIVE_LIBRARY || null;\r\n\r\n  if (!lib || typeof lib.buildUseCaseNarrative !== \"function\") return null;\r\n\r\n  try {\r\n    var narrative = lib.buildUseCaseNarrative(recommendationResult);\r\n    if (!narrative || !narrative.ok || narrative.stockLeak) return null;\r\n    return narrative;\r\n  } catch (error) {\r\n    return null;\r\n  }\r\n}\r\n\r\nfunction getUseCaseItemNarrative(item) {\r\n  var result = uiState.recommendationResult || null;\r\n  var lib = window.GDX_PANEL_LED_V4_NARRATIVE_LIBRARY || null;\r\n\r\n  if (!lib || typeof lib.buildUseCaseItemNarrative !== \"function\") return null;\r\n\r\n  try {\r\n    var narrative = lib.buildUseCaseItemNarrative(item, result);\r\n    if (!narrative || !narrative.ok || narrative.stockLeak) return null;\r\n    return narrative;\r\n  } catch (error) {\r\n    return null;\r\n  }\r\n}\r\n\r\nfunction renderUseCaseNarrativeChips(chips, attrName) {\r\n  chips = Array.isArray(chips) ? chips : [];\r\n\r\n  chips = chips.filter(function (chip) {\r\n    var text = lower(chip || \"\");\r\n    return chip && !/stok/.test(text) && !/sat\u0131n al\u0131nabilirlik/.test(text) && !/sat\u0131n alinabilirlik/.test(text);\r\n  }).slice(0, 8);\r\n\r\n  if (!chips.length) return \"\";\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-reco-priority-chips\" ' + (attrName ? attrName : '') + '>' +\r\n      chips.map(function (chip) {\r\n        return '<span>' + escapeHtml(chip) + '</span>';\r\n      }).join(\"\") +\r\n    '</div>';\r\n}\r\n\r\nfunction isGenericMobileWhyText(value) {\r\n  var t = lower(safeText(value || \"\"));\r\n  if (!t) return true;\r\n\r\n  return (\r\n    /bu ba\u015Fl\u0131k/.test(t) ||\r\n    /bu baslik/.test(t) ||\r\n    /kriter seviyesi/.test(t) ||\r\n    /farkl\u0131 bir kullan\u0131m ihtiyac\u0131nda/.test(t) ||\r\n    /farkli bir kullanim ihtiyacinda/.test(t) ||\r\n    /ilk \u00F6neriden farkl\u0131/.test(t) ||\r\n    /ilk oneriden farkli/.test(t) ||\r\n    /g\u00FC\u00E7l\u00FC alternatif yapar/.test(t) ||\r\n    /guclu alternatif yapar/.test(t) ||\r\n    /okunuyor/.test(t)\r\n  );\r\n}\r\n\r\nfunction renderMobileWhyReasonList(reasons) {\r\n  reasons = Array.isArray(reasons) ? reasons : [];\r\n  var seen = {};\r\n\r\n  reasons = reasons.filter(function (reason) {\r\n    var title = safeText(reason && reason.title || \"\");\r\n    if (!title) return false;\r\n\r\n    var key = lower(title);\r\n    if (seen[key]) return false;\r\n    seen[key] = true;\r\n    return true;\r\n  }).slice(0, 3);\r\n\r\n  if (!reasons.length) {\r\n    reasons = [\r\n      { title: \"Kullan\u0131m uyumu\", chip: \"Senaryo deste\u011Fi\" },\r\n      { title: \"Teknik denge\", chip: \"Karar deste\u011Fi\" },\r\n      { title: \"Fiyat/de\u011Fer\", chip: \"De\u011Fer oda\u011F\u0131\" }\r\n    ];\r\n  }\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-reco-criteria is-mobile-why-reasons\" data-gdx-panel-mobile-why-reasons=\"1\">' +\r\n      reasons.map(function (reason) {\r\n        var title = safeText(reason.title || \"Kullan\u0131m gerek\u00E7esi\");\r\n        var chip = safeText(reason.chip || \"Karar deste\u011Fi\");\r\n        var detail = safeText(reason.text || \"\");\r\n        var safeDetail = (!isGenericMobileWhyText(detail) && detail.length <= 110) ? detail : \"\";\r\n\r\n        return '' +\r\n          '<div class=\"gdx-panel-v4-reco-mini is-mobile-title-only\" data-gdx-panel-usecase-reason=\"1\">' +\r\n            '<div>' +\r\n              '<strong>' + escapeHtml(title) + '</strong>' +\r\n              '<span>' + escapeHtml(chip) + '</span>' +\r\n            '</div>' +\r\n            (safeDetail ? '<p>' + escapeHtml(safeDetail) + '</p>' : '') +\r\n          '</div>';\r\n      }).join(\"\") +\r\n    '</div>';\r\n}\r\n\r\nfunction renderUseCaseReasonList(reasons) {\r\n  reasons = Array.isArray(reasons) ? reasons : [];\r\n\r\n  reasons = reasons.filter(function (reason) {\r\n    return !!safeText(reason && reason.title || \"\");\r\n  }).slice(0, 3);\r\n\r\n  if (!reasons.length) return \"\";\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-reco-criteria is-clean-why-reasons\" data-gdx-panel-usecase-reasons=\"1\">' +\r\n      reasons.map(function (reason) {\r\n        var detail = safeText(reason.text || \"\");\r\n        var safeDetail = (!isGenericMobileWhyText(detail) && detail.length <= 120) ? detail : \"\";\r\n\r\n        return '' +\r\n          '<div class=\"gdx-panel-v4-reco-mini is-copy-deduped\" data-gdx-panel-usecase-reason=\"1\">' +\r\n            '<div>' +\r\n              '<strong>' + escapeHtml(reason.title || \"Kullan\u0131m gerek\u00E7esi\") + '</strong>' +\r\n              '<span>' + escapeHtml(reason.chip || \"Karar deste\u011Fi\") + '</span>' +\r\n            '</div>' +\r\n            (safeDetail ? '<p>' + escapeHtml(safeDetail) + '</p>' : '') +\r\n          '</div>';\r\n      }).join(\"\") +\r\n    '</div>';\r\n}\r\n\r\nfunction renderUseCaseNarrativeIntro(result) {\r\n  result = result || {};\r\n  return '<div class=\"gdx-panel-v4-reco-priority-chips is-compact-only\" data-gdx-panel-usecase-chips-compact=\"1\">' +\r\n    renderPriorityLabels(result) +\r\n  '</div>';\r\n}\r\n\r\nfunction normalizeRecommendationKeyPart(value) {\r\n  var raw = lower(safeText(value || \"\"));\r\n  if (!raw) return \"\";\r\n  return raw\r\n    .replace(/[^a-z0-9\u011F\u00FC\u015F\u0131\u00F6\u00E7-]+/g, \"-\")\r\n    .replace(/-+/g, \"-\")\r\n    .replace(/^-|-$/g, \"\")\r\n    .slice(0, 90);\r\n}\r\n\r\nfunction getRecommendationItemKey(item) {\r\n  item = item || {};\r\n  var product = item.product || {};\r\n\r\n  var raw =\r\n    item.__panelRecoKey ||\r\n    item.productKey ||\r\n    item.key ||\r\n    item.handle ||\r\n    product.key ||\r\n    product.handle ||\r\n    item.productSmartTitle ||\r\n    item.smartTitle ||\r\n    item.productShortTitle ||\r\n    item.productTitle ||\r\n    product.smartTitle ||\r\n    product.smartShortTitle ||\r\n    product.shortTitle ||\r\n    product.title ||\r\n    (item.rank ? \"rank-\" + item.rank : \"\");\r\n\r\n  return normalizeRecommendationKeyPart(raw);\r\n}\r\n\r\nfunction ensureRecommendationItemKeys(items) {\r\n  items = Array.isArray(items) ? items : [];\r\n  var used = {};\r\n\r\n  return items.map(function (item, index) {\r\n    item = item || {};\r\n    var key = getRecommendationItemKey(item);\r\n\r\n    if (!key) {\r\n      key = \"reco-\" + String(index + 1);\r\n    }\r\n\r\n    if (used[key]) {\r\n      key = key + \"-\" + String(index + 1);\r\n    }\r\n\r\n    used[key] = true;\r\n    item.__panelRecoKey = key;\r\n    return item;\r\n  });\r\n}\r\n\r\nfunction findRecommendationCardByKey(key) {\r\n  var rootEl = root();\r\n  var cards = rootEl ? rootEl.querySelectorAll(\"[data-gdx-panel-reco-card]\") : [];\r\n  var found = null;\r\n\r\n  Array.prototype.some.call(cards, function (card) {\r\n    if ((card.getAttribute(\"data-gdx-panel-reco-card\") || \"\") === String(key || \"\")) {\r\n      found = card;\r\n      return true;\r\n    }\r\n    return false;\r\n  });\r\n\r\n  return found;\r\n}\r\n\r\nfunction scrollToRecommendationWhyDetail(key) {\r\n  window.setTimeout(function () {\r\n    var card = findRecommendationCardByKey(key);\r\n    var target = card ? card.querySelector(\"[data-gdx-panel-usecase-card-reasons='1']\") : null;\r\n\r\n    if (!target) {\r\n      target = document.querySelector(\"#gdx-panel-led-v4-root [data-gdx-panel-reco-wide-detail='1']\");\r\n    }\r\n\r\n    if (target && target.scrollIntoView) {\r\n      target.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n    }\r\n  }, 70);\r\n}\r\n\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P26 PURPOSE DETAIL CONTEXT HELPERS\r\n   Fazlar:\r\n   PANEL-V4-P26-1-PURPOSE-DETAIL-CONTEXT-ARCHITECTURE-SAFE\r\n   PANEL-V4-P26-2-PURPOSE-WEIGHTED-CRITERIA-NARRATIVE-SAFE\r\n   PANEL-V4-P26-3-PERSONA-DECISION-COPY-SIMPLIFY-SAFE\r\n   PANEL-V4-P26-4-DESKTOP-MOBILE-COPY-VISUAL-POLISH-SAFE\r\n\r\n   G\u00FCvenlik:\r\n   - \u00DCst kullan\u0131m amac\u0131 ve \u00F6neri kartlar\u0131 alan\u0131na dokunmaz.\r\n   - Sadece \"Neden Bu \u00DCr\u00FCn?\" detay panelini ve mobil a\u00E7\u0131k detay i\u00E7eri\u011Fini zenginle\u015Ftirir.\r\n   - Skor / recommender s\u0131ralama / commerce / share / PNG ak\u0131\u015F\u0131n\u0131 de\u011Fi\u015Ftirmez.\r\n   ========================================================= */\r\n\r\nfunction p26NoStockText(value) {\r\n  return noStockText(value);\r\n}\r\n\r\nfunction p26Dyn(value) {\r\n  value = safeText(value || \"\");\r\n  if (!value || !p26NoStockText(value)) return \"\";\r\n  return '<span class=\"gdx-panel-v4-p26-dynamic\">' + escapeHtml(value) + '</span>';\r\n}\r\n\r\nfunction p26Txt(value) {\r\n  value = safeText(value || \"\");\r\n  if (!value) return \"\";\r\n  return '<span class=\"gdx-panel-v4-p26-static\">' + escapeHtml(value) + '</span>';\r\n}\r\n\r\nfunction p26Part(type, value) {\r\n  value = safeText(value || \"\");\r\n  if (!value || !p26NoStockText(value)) return \"\";\r\n\r\n  return '<span class=\"' + (type === \"dyn\" ? \"gdx-panel-v4-p26-dynamic\" : \"gdx-panel-v4-p26-static\") + '\">' +\r\n    escapeHtml(value) +\r\n  '</span>';\r\n}\r\n\r\nfunction p26CopyLine(parts) {\r\n  parts = Array.isArray(parts) ? parts : [];\r\n\r\n  return parts.map(function (part) {\r\n    part = part || {};\r\n\r\n    if (typeof part === \"string\") {\r\n      return p26Part(\"static\", part);\r\n    }\r\n\r\n    return p26Part(part.type === \"dyn\" ? \"dyn\" : \"static\", part.text || part.value || \"\");\r\n  }).filter(Boolean).join(\" \");\r\n}\r\n\r\nfunction p26Dot(value) {\r\n  value = safeText(value || \"\");\r\n  if (!value) return \"\";\r\n  return /\\.$/.test(value) ? value : value + \".\";\r\n}\r\n\r\nfunction p26CleanLabel(label) {\r\n  label = safeText(label || \"\");\r\n  return label\r\n    .replace(/\\s*\\/\\s*/g, \"/\")\r\n    .replace(/\\s+/g, \" \")\r\n    .trim();\r\n}\r\n\r\nfunction p26UniqueList(list, limit) {\r\n  var seen = {};\r\n  var out = [];\r\n  list = Array.isArray(list) ? list : [];\r\n  limit = Number(limit || 0);\r\n\r\n  list.forEach(function (entry) {\r\n    var value = p26CleanLabel(entry || \"\");\r\n    var key = lower(value);\r\n    if (!value || seen[key]) return;\r\n    seen[key] = true;\r\n    out.push(value);\r\n  });\r\n\r\n  return limit > 0 ? out.slice(0, limit) : out;\r\n}\r\n\r\nfunction p26Specs(item) {\r\n  item = item || {};\r\n  var product = item.product || {};\r\n  return product.specs || item.specs || item.panelSpecs || {};\r\n}\r\n\r\nfunction p26ControlLabel(specs) {\r\n  specs = specs || {};\r\n  var parts = [];\r\n  if (specs.hasDmx) parts.push(\"DMX\");\r\n  if (specs.hasBluetooth) parts.push(\"Bluetooth\");\r\n  if (specs.hasRemote) parts.push(\"Uzaktan kontrol\");\r\n  return parts.join(\" + \");\r\n}\r\n\r\nfunction p26CoreSpecFacts(item, result) {\r\n  item = item || {};\r\n  result = result || uiState.recommendationResult || {};\r\n  var specs = p26Specs(item);\r\n  var preset = p26PurposePreset(result);\r\n  var facts = [];\r\n\r\n  if (specs.powerW) facts.push(specs.powerW + \"W g\u00FC\u00E7\");\r\n  if (specs.cri) facts.push(\"CRI \" + specs.cri + \"+\");\r\n  if (specs.tlci) facts.push(\"TLCI \" + specs.tlci + \"+\");\r\n  if (specs.kelvinLabel) facts.push(specs.kelvinLabel + \" CCT\");\r\n\r\n  if (preset.key === \"rgb_creative_fx\") {\r\n    if (specs.fxCount) facts.push(specs.fxCount + \" FX efekti\");\r\n    if (specs.hasRgb || specs.family === \"rgb\") facts.push(\"RGB/HSI renk \u00FCretimi\");\r\n    var controlRgb = p26ControlLabel(specs);\r\n    if (controlRgb) facts.push(controlRgb + \" kontrol\u00FC\");\r\n  } else {\r\n    var control = p26ControlLabel(specs);\r\n    if (control) facts.push(control + \" deste\u011Fi\");\r\n    if (preset.key === \"mobile_outdoor\" && specs.powerSystemLabel) facts.push(specs.powerSystemLabel);\r\n    if (preset.key === \"mobile_outdoor\" && specs.portabilityLabel) facts.push(specs.portabilityLabel);\r\n  }\r\n\r\n  return p26UniqueList(facts, 4);\r\n}\r\n\r\nfunction p26UseCaseScenarioExamples(result) {\r\n  var preset = p26PurposePreset(result || uiState.recommendationResult || {});\r\n  return safeText(preset.scenario || \"se\u00E7ilen kullan\u0131m senaryosunda\");\r\n}\r\n\r\nfunction p26PurposeBuyerTypes(result) {\r\n  var preset = p26PurposePreset(result || uiState.recommendationResult || {});\r\n  return safeText(preset.persona || \"bu kullan\u0131m amac\u0131 i\u00E7in dengeli \u00E7\u00F6z\u00FCm arayan kullan\u0131c\u0131lar\");\r\n}\r\n\r\nfunction p26UseCaseTitle(result) {\r\n  result = result || uiState.recommendationResult || {};\r\n  return safeText(activeUseCaseTitle(result, uiState.recommendFamilyKey || \"content_creation\"));\r\n}\r\n\r\nfunction p26PriorityLabels(result, limit) {\r\n  result = result || {};\r\n  limit = Number(limit || 4);\r\n\r\n  var labels = Array.isArray(result.priorityLabels) ? result.priorityLabels.slice() : [];\r\n\r\n  labels = labels.filter(function (label) {\r\n    var text = lower(label || \"\");\r\n    return label && !/stok/.test(text) && !/sat\u0131n al\u0131nabilirlik/.test(text) && !/sat\u0131n alinabilirlik/.test(text);\r\n  });\r\n\r\n  if (!labels.length) {\r\n    labels = [\r\n      \"\u0131\u015F\u0131k kalitesi\",\r\n      \"kolay kurulum\",\r\n      \"fiyat/de\u011Fer dengesi\",\r\n      \"kullan\u0131m pratikli\u011Fi\"\r\n    ];\r\n  }\r\n\r\n  return labels.slice(0, limit);\r\n}\r\n\r\nfunction p26JoinHuman(list) {\r\n  list = (Array.isArray(list) ? list : []).filter(Boolean);\r\n  if (!list.length) return \"\";\r\n  if (list.length === 1) return safeText(list[0]);\r\n  if (list.length === 2) return safeText(list[0]) + \" ve \" + safeText(list[1]);\r\n  return list.slice(0, -1).map(safeText).join(\", \") + \" ve \" + safeText(list[list.length - 1]);\r\n}\r\n\r\nfunction p26PurposeText(result) {\r\n  result = result || uiState.recommendationResult || {};\r\n  return lower([\r\n    result.familyKey,\r\n    result.profileKey,\r\n    result.useCaseKey,\r\n    result.familyLabel,\r\n    result.profileLabel,\r\n    result.label,\r\n    p26UseCaseTitle(result),\r\n    (Array.isArray(result.priorityLabels) ? result.priorityLabels.join(\" \") : \"\")\r\n  ].join(\" \"));\r\n}\r\n\r\nfunction p26PurposePreset(result) {\r\n  var text = p26PurposeText(result);\r\n\r\n  if (/g\u00FCzellik|guzellik|makyaj|kuaf\u00F6r|kuafor|bak\u0131m|bakim|sa\u00E7|sac|cilt|beauty|makeup|hair/.test(text)) {\r\n    return {\r\n      key: \"beauty_makeup_hair\",\r\n      labels: [\r\n        \"cilt tonu do\u011Frulu\u011Fu\",\r\n        \"sa\u00E7 rengi do\u011Frulu\u011Fu\",\r\n        \"Kelvin/CCT kontrol\u00FC\",\r\n        \"soft/homojen \u0131\u015F\u0131k\",\r\n        \"fiyat/de\u011Fer dengesi\"\r\n      ],\r\n      scenario: \"g\u00FCzellik, makyaj, kuaf\u00F6r ve bak\u0131m \u00E7ekimlerinde\",\r\n      benefit: \"y\u00FCz ve sa\u00E7 rengini daha kontroll\u00FC g\u00F6stermeye, yak\u0131n plan videoda daha yumu\u015Fak \u0131\u015F\u0131k kurmaya yard\u0131mc\u0131 olur\",\r\n      persona: \"makyaj, kuaf\u00F6r, bak\u0131m videosu ve yak\u0131n plan y\u00FCz \u00E7ekimi yapan kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  if (/e-?ticaret|\u00FCr\u00FCn|urun|kozmetik|aksesuar|masa\u00FCst\u00FC|masaustu|pazar yeri|marketplace|product/.test(text)) {\r\n    return {\r\n      key: \"ecommerce_product\",\r\n      labels: [\r\n        \"renk do\u011Frulu\u011Fu\",\r\n        \"homojen soft \u0131\u015F\u0131k\",\r\n        \"yans\u0131ma kontrol\u00FC\",\r\n        \"Kelvin kararl\u0131l\u0131\u011F\u0131\",\r\n        \"fiyat/de\u011Fer dengesi\"\r\n      ],\r\n      scenario: \"kozmetik, aksesuar, masa\u00FCst\u00FC \u00FCr\u00FCn \u00E7ekimi ve pazar yeri g\u00F6rsel \u00FCretiminde\",\r\n      benefit: \"\u00FCr\u00FCn rengini daha g\u00FCvenli g\u00F6stermeye, yans\u0131may\u0131 kontrol etmeye ve homojen bir \u00E7ekim \u0131\u015F\u0131\u011F\u0131 kurmaya yard\u0131mc\u0131 olur\",\r\n      persona: \"kozmetik, aksesuar, k\u00FC\u00E7\u00FCk \u00FCr\u00FCn, pazar yeri ve katalog g\u00F6rseli \u00FCreten kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  if (/klinik|estetik|medikal|dental|dermatoloji|medical|clinical|cilt bak\u0131m|cilt bakim/.test(text)) {\r\n    return {\r\n      key: \"clinical_aesthetic\",\r\n      labels: [\r\n        \"renk do\u011Frulu\u011Fu\",\r\n        \"cilt tonu g\u00FCveni\",\r\n        \"yumu\u015Fak/g\u00F6lgesiz \u0131\u015F\u0131k\",\r\n        \"yak\u0131n plan detay\",\r\n        \"flicker-free video\"\r\n      ],\r\n      scenario: \"klinik, estetik, dental ve yak\u0131n plan belgeleme \u00E7ekimlerinde\",\r\n      benefit: \"cilt tonu, i\u015Flem \u00F6ncesi-sonras\u0131 kay\u0131t ve yak\u0131n plan detaylar\u0131 daha kontroll\u00FC g\u00F6stermeye yard\u0131mc\u0131 olur\",\r\n      persona: \"klinik, estetik, dental, cilt bak\u0131m ve medikal belge i\u00E7eri\u011Fi \u00FCreten kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  if (/rgb|efekt|fx|kreatif|klip|renkli|arka plan|background|hsi|atmosfer/.test(text)) {\r\n    return {\r\n      key: \"rgb_creative_fx\",\r\n      labels: [\r\n        \"RGB/HSI esnekli\u011Fi\",\r\n        \"FX efekt \u00E7e\u015Fitlili\u011Fi\",\r\n        \"arka plan atmosferi\",\r\n        \"kontrol kolayl\u0131\u011F\u0131\",\r\n        \"renkli sahne \u00FCretimi\"\r\n      ],\r\n      scenario: \"kreatif video, renkli arka plan, klip ve sosyal medya atmosfer \u00E7ekimlerinde\",\r\n      benefit: \"renk, efekt ve atmosfer kontrol\u00FCn\u00FC daha esnek kurmaya yard\u0131mc\u0131 olur\",\r\n      persona: \"RGB, HSI, efekt ve renkli arka plan kullanarak yarat\u0131c\u0131 i\u00E7erik \u00FCreten kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  if (/mobil|d\u0131\u015F|dis|d\u0131\u015F \u00E7ekim|dis cekim|outdoor|batarya|ta\u015F\u0131nabilir|tasinabilir|saha/.test(text)) {\r\n    return {\r\n      key: \"mobile_outdoor\",\r\n      labels: [\r\n        \"ta\u015F\u0131nabilirlik\",\r\n        \"batarya/g\u00FC\u00E7 esnekli\u011Fi\",\r\n        \"h\u0131zl\u0131 kurulum\",\r\n        \"yeterli parlakl\u0131k\",\r\n        \"dayan\u0131kl\u0131 kullan\u0131m\"\r\n      ],\r\n      scenario: \"mobil \u00E7ekim, d\u0131\u015F mekan, saha \u00FCretimi ve h\u0131zl\u0131 kurulum gerektiren i\u015Flerde\",\r\n      benefit: \"prizden ba\u011F\u0131ms\u0131z veya h\u0131zl\u0131 kuruluma yak\u0131n \u00E7al\u0131\u015Fma d\u00FCzeni kurmaya yard\u0131mc\u0131 olur\",\r\n      persona: \"d\u0131\u015F \u00E7ekim, h\u0131zl\u0131 set kurulumu ve ta\u015F\u0131nabilir i\u00E7erik \u00FCretimi yapan kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  if (/r\u00F6portaj|roportaj|interview|haber|sunum|konu\u015Fma|konusma/.test(text)) {\r\n    return {\r\n      key: \"reportage_interview\",\r\n      labels: [\r\n        \"yumu\u015Fak y\u00FCz \u0131\u015F\u0131\u011F\u0131\",\r\n        \"renk do\u011Frulu\u011Fu\",\r\n        \"sessiz kullan\u0131m\",\r\n        \"kolay kurulum\",\r\n        \"kontrol esnekli\u011Fi\"\r\n      ],\r\n      scenario: \"r\u00F6portaj, konu\u015Fma videosu, sunum ve kurumsal \u00E7ekimlerde\",\r\n      benefit: \"y\u00FCz\u00FC daha dengeli g\u00F6stermeye ve uzun \u00E7ekimde stabil \u0131\u015F\u0131k kurmaya yard\u0131mc\u0131 olur\",\r\n      persona: \"r\u00F6portaj, sunum, konu\u015Fma videosu ve kurumsal i\u00E7erik \u00E7eken kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  if (/st\u00FCdyo|studio|portre|model|foto\u011Fraf|fotograf|\u00E7ekim deste\u011Fi|foto destek|photo support|backstage/.test(text)) {\r\n    return {\r\n      key: \"studio_photo_support\",\r\n      labels: [\r\n        \"renk do\u011Frulu\u011Fu\",\r\n        \"soft/homojen \u0131\u015F\u0131k\",\r\n        \"kontrol esnekli\u011Fi\",\r\n        \"kurulum uyumu\",\r\n        \"fiyat/de\u011Fer dengesi\"\r\n      ],\r\n      scenario: \"st\u00FCdyo, portre, model \u00E7ekimi ve foto\u011Fraf destek \u0131\u015F\u0131\u011F\u0131 kullan\u0131m\u0131nda\",\r\n      benefit: \"ana \u0131\u015F\u0131\u011F\u0131 desteklemeye, g\u00F6lgeleri yumu\u015Fatmaya ve \u00E7ekim d\u00FCzenini daha kontroll\u00FC kurmaya yard\u0131mc\u0131 olur\",\r\n      persona: \"st\u00FCdyo, portre, model \u00E7ekimi veya foto\u011Fraf destek \u0131\u015F\u0131\u011F\u0131 arayan kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  if (/e\u011Fitim|egitim|webinar|online ders|ders|canl\u0131 yay\u0131n|canli yayin|broadcast|yay\u0131n|yayin/.test(text)) {\r\n    return {\r\n      key: \"education_webinar\",\r\n      labels: [\r\n        \"y\u00FCz\u00FC yumu\u015Fak g\u00F6sterme\",\r\n        \"flicker-free video\",\r\n        \"sessiz kullan\u0131m\",\r\n        \"kolay kurulum\",\r\n        \"fiyat/de\u011Fer dengesi\"\r\n      ],\r\n      scenario: \"e\u011Fitim, webinar, online ders, canl\u0131 yay\u0131n ve masa ba\u015F\u0131 anlat\u0131m \u00E7ekimlerinde\",\r\n      benefit: \"y\u00FCz\u00FC daha temiz g\u00F6stermeye, uzun s\u00FCreli kay\u0131tta stabil ve pratik \u0131\u015F\u0131k kurmaya yard\u0131mc\u0131 olur\",\r\n      persona: \"e\u011Fitim, webinar, canl\u0131 yay\u0131n ve masa ba\u015F\u0131 anlat\u0131m i\u00E7eri\u011Fi \u00FCreten kullan\u0131c\u0131lar\"\r\n    };\r\n  }\r\n\r\n  return {\r\n    key: \"content_creation\",\r\n    labels: [\r\n      \"fiyat/de\u011Fer dengesi\",\r\n      \"Bi-Color esneklik\",\r\n      \"y\u00FCz\u00FC yumu\u015Fak g\u00F6sterme\",\r\n      \"kolay kurulum\",\r\n      \"sessiz kullan\u0131m\"\r\n    ],\r\n    scenario: \"YouTube, Reels, podcast, masa ba\u015F\u0131 video ve sosyal medya \u00E7ekimlerinde\",\r\n    benefit: \"y\u00FCz\u00FC daha yumu\u015Fak g\u00F6stermeye, h\u0131zl\u0131 kurulum sa\u011Flamaya ve d\u00FCzenli i\u00E7erik \u00FCretiminde pratik \u00E7al\u0131\u015Fma alan\u0131 a\u00E7maya yard\u0131mc\u0131 olur\",\r\n    persona: \"YouTube, Reels, podcast, canl\u0131 yay\u0131n ve sosyal medya i\u00E7eri\u011Fi \u00FCreten kullan\u0131c\u0131lar\"\r\n  };\r\n}\r\n\r\nfunction p26PurposePriorityLabels(result, limit) {\r\n  var preset = p26PurposePreset(result);\r\n  var labels = preset.labels || [];\r\n  limit = Number(limit || 4);\r\n  return labels.slice(0, limit);\r\n}\r\n\r\nfunction p26CleanPersonaText(value) {\r\n  var text = safeText(value || \"\");\r\n  if (!text) return \"\";\r\n\r\n  var sentences = text\r\n    .replace(/\\s+/g, \" \")\r\n    .split(/(?<=[.!?])\\s+/)\r\n    .filter(Boolean);\r\n\r\n  var clean = sentences.filter(function (sentence) {\r\n    var s = lower(sentence);\r\n    return !(/\\/100\\s*ama\u00E7 skoru/.test(s) || /#\\s*\\d+\\s*\u00F6neri/.test(s) || /\u00F6neri konumu/.test(s) || /konumuyla/.test(s));\r\n  });\r\n\r\n  if (!clean.length) return text;\r\n  return clean.join(\" \");\r\n}\r\n\r\nfunction p26FitStatusPhrase(score, rank) {\r\n  score = Number(score || 0);\r\n  rank = Number(rank || 0);\r\n\r\n  if (rank === 1 && score >= 84) return \"\u00E7ok g\u00FC\u00E7l\u00FC ana tercih seviyesindedir\";\r\n  if (rank === 1 && score >= 76) return \"dengeli ana tercih seviyesindedir\";\r\n  if (rank === 2 && score >= 80) return \"\u00E7ok uygun g\u00FC\u00E7l\u00FC alternatif seviyesindedir\";\r\n  if (rank === 2 && score >= 74) return \"g\u00FC\u00E7l\u00FC alternatif seviyesindedir\";\r\n  if (rank === 3 && score >= 74) return \"senaryoya g\u00F6re g\u00FC\u00E7l\u00FC bir se\u00E7enek seviyesindedir\";\r\n  if (score >= 70) return \"ihtiyaca g\u00F6re de\u011Ferlendirilebilecek g\u00FC\u00E7l\u00FC bir se\u00E7enek seviyesindedir\";\r\n  return \"ihtiyaca g\u00F6re dikkatli de\u011Ferlendirilebilecek bir se\u00E7enek seviyesindedir\";\r\n}\r\n\r\nfunction p26TopCriteriaLabels(item, result, limit) {\r\n  result = result || uiState.recommendationResult || {};\r\n  limit = Number(limit || 4);\r\n\r\n  var preferred = p26PurposePriorityLabels(result, limit);\r\n  if (preferred.length) return preferred.slice(0, limit);\r\n\r\n  item = item || {};\r\n\r\n  var rows = [];\r\n  var source = Array.isArray(item.topStrengths) && item.topStrengths.length\r\n    ? item.topStrengths\r\n    : (Array.isArray(item.breakdown) ? item.breakdown : []);\r\n\r\n  source.forEach(function (row) {\r\n    row = row || {};\r\n    var label = safeText(row.label || row.short || row.key || \"\");\r\n    if (!label || !p26NoStockText(label)) return;\r\n    rows.push({\r\n      label: label,\r\n      score: Number(row.score || row.score10 || row.score100 || 0)\r\n    });\r\n  });\r\n\r\n  if (rows.length) {\r\n    rows.sort(function (a, b) {\r\n      return Number(b.score || 0) - Number(a.score || 0);\r\n    });\r\n  }\r\n\r\n  var labels = [];\r\n  var seen = {};\r\n\r\n  rows.forEach(function (row) {\r\n    var key = lower(row.label);\r\n    if (seen[key]) return;\r\n    seen[key] = true;\r\n    labels.push(row.label);\r\n  });\r\n\r\n  if (!labels.length) labels = p26PriorityLabels(result, limit);\r\n\r\n  return labels.slice(0, limit);\r\n}\r\n\r\nfunction p26FitPhrase(score, rank) {\r\n  return p26FitStatusPhrase(score, rank).replace(\" seviyesindedir\", \"\");\r\n}\r\n\r\nfunction p26RankText(rank) {\r\n  rank = Number(rank || 0);\r\n  if (!rank) return \"\u00F6nerilen \u00FCr\u00FCn konumu\";\r\n  return \"#\" + String(rank) + \" \u00F6neri konumu\";\r\n}\r\n\r\nfunction p26PurposeScoreRankText(score, rank) {\r\n  var parts = [];\r\n  score = Math.round(Number(score || 0));\r\n  if (score) parts.push(String(score) + \"/100 ama\u00E7 skoru\");\r\n  if (rank) parts.push(p26RankText(rank));\r\n  return parts.join(\" ve \");\r\n}\r\n\r\nfunction p26PurposeContextSentence(result) {\r\n  return \"\";\r\n}\r\n\r\nfunction renderP26PurposeContextBlock(result, item, narrative) {\r\n  result = result || uiState.recommendationResult || {};\r\n  var title = p26UseCaseTitle(result);\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-p26-purpose-context\" data-gdx-panel-p26-purpose-context=\"1\">' +\r\n      '<div class=\"gdx-panel-v4-p26-purpose-kicker\">KULLANIM AMACI BA\u011ELAMI</div>' +\r\n      '<h5>' +\r\n        '<span class=\"gdx-panel-v4-p26-purpose-title\">' + escapeHtml(title) + '</span>' +\r\n        '<small>Bu kullan\u0131m i\u00E7in neden \u00F6nerildi?</small>' +\r\n      '</h5>' +\r\n    '</div>';\r\n}\r\n\r\nfunction p26WeightedProductLine(item, narrative) {\r\n  item = item || {};\r\n  var result = uiState.recommendationResult || {};\r\n  var title = smartItemTitle(item, item.product || {}, \"Bu model\");\r\n  var scenario = p26UseCaseScenarioExamples(result);\r\n  var benefit = safeText((p26PurposePreset(result).benefit) || \"se\u00E7ilen kullan\u0131m amac\u0131nda dengeli \u0131\u015F\u0131k \u00FCretimine yard\u0131mc\u0131 olur\");\r\n  var facts = p26CoreSpecFacts(item, result);\r\n  var factText = facts.length ? facts.join(\", \") : \"\";\r\n\r\n  return p26CopyLine([\r\n    { type: \"dyn\", text: title },\r\n    { type: \"static\", text: scenario + \" i\u00E7in\" },\r\n    { type: \"dyn\", text: factText },\r\n    { type: \"static\", text: \"ile\" },\r\n    { type: \"dyn\", text: p26Dot(benefit) }\r\n  ]);\r\n}\r\n\r\nfunction p26WeightedCopy(item, narrative) {\r\n  return p26WeightedCriteriaLine(item, narrative) + \" \" + p26WeightedProductLine(item, narrative);\r\n}\r\n\r\nfunction renderP26WeightedCriteriaNarrative(item, narrative) {\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-p26-weighted-copy\" data-gdx-panel-p26-weighted-copy=\"1\">' +\r\n      '<p>' + p26WeightedCriteriaLine(item, narrative) + '</p>' +\r\n      '<p>' + p26WeightedProductLine(item, narrative) + '</p>' +\r\n    '</div>';\r\n}\r\n\r\nfunction renderP26MobileQuickDecision(item, narrative) {\r\n  item = item || {};\r\n  narrative = narrative || {};\r\n\r\n  var result = uiState.recommendationResult || {};\r\n  var score = Math.round(Number(item.purposeScore100 || narrative.score100 || 0));\r\n  var rank = Number(item.rank || narrative.rank || 0);\r\n  var purpose = p26UseCaseTitle(result);\r\n  var scoreRank = p26PurposeScoreRankText(score, rank);\r\n  var fit = p26FitStatusPhrase(score, rank);\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-p26-mobile-decision\" data-gdx-panel-p26-mobile-decision=\"1\">' +\r\n      '<strong>K\u0131sa karar</strong>' +\r\n      '<p>' +\r\n        p26CopyLine([\r\n          { type: \"dyn\", text: purpose },\r\n          { type: \"static\", text: \"i\u00E7in\" },\r\n          { type: \"dyn\", text: scoreRank },\r\n          { type: \"static\", text: \"ile\" },\r\n          { type: \"dyn\", text: p26Dot(fit) }\r\n        ]) +\r\n      '</p>' +\r\n    '</div>';\r\n}\r\n\r\nfunction p26HasScoreRankCopy(value) {\r\n  var text = lower(value || \"\");\r\n  return /\\/100\\s*ama\u00E7 skoru/.test(text) || /#\\s*\\d+\\s*\u00F6neri/.test(text) || /\u00F6neri konumu/.test(text) || /konumuyla/.test(text);\r\n}\r\n\r\nfunction renderP26PersonaDecision(item, narrative, existingText) {\r\n  item = item || {};\r\n  narrative = narrative || {};\r\n\r\n  var score = Math.round(Number(item.purposeScore100 || narrative.score100 || 0));\r\n  var rank = Number(item.rank || narrative.rank || 0);\r\n  var status = p26FitStatusPhrase(score, rank);\r\n  var scoreRank = p26PurposeScoreRankText(score, rank);\r\n\r\n  if (!scoreRank) return \"\";\r\n\r\n  return '' +\r\n    '<p class=\"gdx-panel-v4-p26-persona-status\">' +\r\n      p26CopyLine([\r\n        { type: \"dyn\", text: scoreRank },\r\n        { type: \"static\", text: \"ile\" },\r\n        { type: \"dyn\", text: p26Dot(status) }\r\n      ]) +\r\n    '</p>';\r\n}\r\n\r\nfunction debugP26PurposeDetail() {\r\n  var result = uiState.recommendationResult || null;\r\n  var item = null;\r\n\r\n  if (result && Array.isArray(result.items) && result.items.length) {\r\n    item = result.items[0];\r\n  }\r\n\r\n  return {\r\n    ok: true,\r\n    version: \"PANEL-V4-P26-4-R4-FACTUAL-DEDUPE-PURPOSE-COPY-SAFE\",\r\n    hasResult: !!(result && result.ok),\r\n    useCaseTitle: result ? p26UseCaseTitle(result) : \"\",\r\n    sampleCriteria: item ? p26TopCriteriaLabels(item, result, 4) : [],\r\n    sampleFacts: item ? p26CoreSpecFacts(item, result) : [],\r\n    sampleBuyerTypes: result ? p26PurposeBuyerTypes(result) : \"\",\r\n    sampleFit: item ? p26FitPhrase(item.purposeScore100, item.rank) : \"\",\r\n    protectedTopArea: \"usecase-tabs/reco-grid untouched\"\r\n  };\r\n}\r\n\r\nfunction p26WeightedCriteriaLine(item, narrative) {\r\n  item = item || {};\r\n  var result = uiState.recommendationResult || {};\r\n  var criteria = p26TopCriteriaLabels(item, result, 4);\r\n  var criteriaText = p26JoinHuman(criteria);\r\n\r\n  return p26CopyLine([\r\n    { type: \"static\", text: \"Bu ama\u00E7ta\" },\r\n    { type: \"dyn\", text: criteriaText },\r\n    { type: \"static\", text: \"\u00F6ne \u00E7\u0131kar.\" }\r\n  ]);\r\n}\r\n\r\nfunction p26WeightedProductLine(item, narrative) {\r\n  item = item || {};\r\n  var result = uiState.recommendationResult || {};\r\n  var title = smartItemTitle(item, item.product || {}, \"Bu model\");\r\n  var scenario = p26UseCaseScenarioExamples(result);\r\n  var preset = p26PurposePreset(result);\r\n  var benefit = safeText((preset && preset.benefit) || \"se\u00E7ilen kullan\u0131m amac\u0131nda dengeli \u0131\u015F\u0131k \u00FCretimine yard\u0131mc\u0131 olur\");\r\n  var facts = p26CoreSpecFacts(item, result);\r\n  var factText = facts.length ? facts.join(\", \") : \"\";\r\n\r\n  return p26CopyLine([\r\n    { type: \"dyn\", text: title },\r\n    { type: \"static\", text: scenario + \" i\u00E7in\" },\r\n    { type: \"dyn\", text: factText },\r\n    { type: \"static\", text: \"ile\" },\r\n    { type: \"dyn\", text: p26Dot(benefit) }\r\n  ]);\r\n}\r\n\r\nfunction p26WeightedCopy(item, narrative) {\r\n  return p26WeightedCriteriaLine(item, narrative) + \" \" + p26WeightedProductLine(item, narrative);\r\n}\r\n\r\nfunction renderP26WeightedCriteriaNarrative(item, narrative) {\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-p26-weighted-copy\" data-gdx-panel-p26-weighted-copy=\"1\">' +\r\n      '<p>' + p26WeightedCriteriaLine(item, narrative) + '</p>' +\r\n      '<p>' + p26WeightedProductLine(item, narrative) + '</p>' +\r\n    '</div>';\r\n}\r\n\r\nfunction renderUseCaseNarrativeCardBlocks(item, expanded) {\r\n  var narrative = getUseCaseItemNarrative(item);\r\n  if (!narrative) return \"\";\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-reco-why is-card-inline is-mobile-why-detail is-copy-deduped\" data-gdx-panel-usecase-card-reasons=\"1\" ' + (expanded ? \"\" : \"hidden\") + '>' +\r\n      renderP26MobileQuickDecision(item, narrative) +\r\n      '<strong>Ama\u00E7ta \u00F6ne \u00E7\u0131kan kriter yorumu</strong>' +\r\n      '<div class=\"gdx-panel-v4-p26-mobile-weighted\" data-gdx-panel-p26-mobile-weighted=\"1\">' +\r\n        '<p>' + p26WeightedCriteriaLine(item, narrative) + '</p>' +\r\n        '<p>' + p26WeightedProductLine(item, narrative) + '</p>' +\r\n      '</div>' +\r\n      '<div class=\"gdx-panel-v4-reco-criteria is-mobile-inline\" data-gdx-panel-usecase-score-bars=\"1\">' +\r\n        renderRecoCriteria(item) +\r\n      '</div>' +\r\n    '</div>';\r\n}\r\n\r\n\r\nfunction getPersonaLibrary() {\r\n  return window.GDX_PANEL_LED_V4_PERSONA_LIBRARY || null;\r\n}\r\n\r\nfunction getRecommendationPersonaContext() {\r\n  var result = uiState && uiState.recommendationResult ? uiState.recommendationResult : null;\r\n  var context = result && result.context ? result.context : {};\r\n\r\n  return {\r\n    familyKey: context.familyKey || uiState.recommendFamilyKey || \"content_creation\",\r\n    familyLabel: context.familyLabel || context.familyShortLabel || \"\",\r\n    scenarioKey: context.scenarioKey || uiState.recommendScenarioKey || \"\",\r\n    scenarioLabel: context.scenarioLabel || \"\"\r\n  };\r\n}\r\n\r\nfunction renderPersonaCriteriaChips(criteria, limit) {\r\n  criteria = Array.isArray(criteria) ? criteria : [];\r\n  limit = Number(limit || 4);\r\n\r\n  if (!criteria.length || limit <= 0) return \"\";\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-persona-criteria\" data-gdx-panel-persona-criteria=\"1\">' +\r\n      criteria.slice(0, limit).map(function (label) {\r\n        return '<span>' + escapeHtml(label) + '</span>';\r\n      }).join(\"\") +\r\n    '</div>';\r\n}\r\n\r\nfunction renderRecommendationPersonaBlock(item) {\r\n  var result = uiState.recommendationResult || {};\r\n  var buyerTypes = p26PurposeBuyerTypes(result);\r\n  var scenario = p26UseCaseScenarioExamples(result);\r\n  var facts = p26CoreSpecFacts(item || {}, result);\r\n  var factsText = facts.length ? facts.slice(0, 3).join(\", \") : \"\";\r\n  var narrative = getUseCaseItemNarrative(item || {});\r\n\r\n  var mainText = p26CopyLine([\r\n    { type: \"static\", text: \"Bu \u00FCr\u00FCn;\" },\r\n    { type: \"dyn\", text: buyerTypes },\r\n    { type: \"static\", text: \"i\u00E7in uygundur.\" },\r\n    { type: \"dyn\", text: scenario },\r\n    { type: \"static\", text: \"\u00F6zellikle\" },\r\n    { type: \"dyn\", text: factsText },\r\n    { type: \"static\", text: \"gibi g\u00FC\u00E7l\u00FC verilerle g\u00FCven verir.\" }\r\n  ]);\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-reco-wide-advisory is-persona-area is-p26-simplified\" data-gdx-panel-persona-area=\"1\">' +\r\n      '<div class=\"gdx-panel-v4-persona-copy\">' +\r\n        '<strong>Bu \u00FCr\u00FCn\u00FC kimler tercih etmeli?</strong>' +\r\n        '<p class=\"gdx-panel-v4-p26-persona-main\">' + mainText + '</p>' +\r\n        renderP26PersonaDecision(item || {}, narrative || {}, \"\") +\r\n      '</div>' +\r\n      '<button type=\"button\" data-gdx-panel-rec-wide-close=\"1\">Gerek\u00E7eyi Kapat</button>' +\r\n    '</div>';\r\n}\r\n\r\n\r\nfunction renderRecommendationMobilePersonaBlock(item, expanded) {\r\n  var result = uiState.recommendationResult || {};\r\n  var buyerTypes = p26PurposeBuyerTypes(result);\r\n  var scenario = p26UseCaseScenarioExamples(result);\r\n  var facts = p26CoreSpecFacts(item || {}, result);\r\n  var factsText = facts.length ? facts.slice(0, 2).join(\", \") : \"\";\r\n  var narrative = getUseCaseItemNarrative(item || {});\r\n\r\n  var mainText = p26CopyLine([\r\n    { type: \"static\", text: \"Bu \u00FCr\u00FCn;\" },\r\n    { type: \"dyn\", text: buyerTypes },\r\n    { type: \"static\", text: \"i\u00E7in uygundur.\" },\r\n    { type: \"dyn\", text: scenario },\r\n    { type: \"static\", text: \"i\u00E7inde\" },\r\n    { type: \"dyn\", text: factsText },\r\n    { type: \"static\", text: \"sayesinde g\u00FCven verir.\" }\r\n  ]);\r\n\r\n  return '' +\r\n    '<div class=\"gdx-panel-v4-persona-mobile-card is-mobile-persona-card is-p26-mobile-persona\" data-gdx-panel-persona-mobile=\"1\" ' + (expanded ? \"\" : \"hidden\") + '>' +\r\n      '<strong>Bu \u00FCr\u00FCn\u00FC kimler tercih etmeli?</strong>' +\r\n      '<p class=\"gdx-panel-v4-p26-persona-main\">' + mainText + '</p>' +\r\n      renderP26PersonaDecision(item || {}, narrative || {}, \"\") +\r\n      '<div class=\"gdx-panel-v4-persona-criteria is-p26-mobile-facts\">' +\r\n        p26CoreSpecFacts(item || {}, result).slice(0, 3).map(function (label) {\r\n          return '<span>' + escapeHtml(label) + '</span>';\r\n        }).join('') +\r\n      '</div>' +\r\n    '</div>';\r\n}\r\n\r\n\r\nfunction renderRecommendationWideDetail(items) {\r\n  items = Array.isArray(items) ? items : [];\r\n\r\n  var expandedKey = String(uiState.recommendationExpandedKey || \"\");\r\n  if (!expandedKey) return \"\";\r\n\r\n  var item = items.find(function (entry) {\r\n    return getRecommendationItemKey(entry) === expandedKey;\r\n  }) || null;\r\n\r\n  if (!item) return \"\";\r\n\r\n  var narrative = getUseCaseItemNarrative(item);\r\n  if (!narrative) return \"\";\r\n\r\n  var score = Math.round(Number(item.purposeScore100 || 0));\r\n  var title = smartItemTitle(item, item.product || {}, \"\u00D6nerilen Panel LED \u00DCr\u00FCn\");\r\n  var meta = recoMetaLine(item);\r\n  var rank = Number(item.rank || 0);\r\n  var result = uiState.recommendationResult || {};\r\n\r\n  return '' +\r\n    '<section class=\"gdx-panel-v4-reco-wide-detail is-p26-purpose-detail\" data-gdx-panel-reco-wide-detail=\"1\" data-gdx-panel-reco-wide-key=\"' + escapeHtml(expandedKey) + '\">' +\r\n      '<div class=\"gdx-panel-v4-reco-wide-head\">' +\r\n        '<div>' +\r\n          '<div class=\"gdx-panel-v4-reco-wide-kicker\">NEDEN BU \u00DCR\u00DCN?</div>' +\r\n          '<h4>' + escapeHtml(title) + '</h4>' +\r\n          '<p>' + escapeHtml(meta) + '</p>' +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-panel-v4-reco-wide-score\">' +\r\n          (rank ? '<span>#' + escapeHtml(String(rank)) + ' \u00D6neri</span>' : '') +\r\n          '<strong>' + escapeHtml(String(score)) + '/100</strong>' +\r\n        '</div>' +\r\n      '</div>' +\r\n\r\n      renderP26PurposeContextBlock(result, item, narrative) +\r\n\r\n      '<div class=\"gdx-panel-v4-reco-wide-grid is-p26-grid\">' +\r\n        '<article class=\"gdx-panel-v4-reco-wide-card is-reason is-p26-weighted\">' +\r\n          '<strong>Ama\u00E7ta \u00F6ne \u00E7\u0131kan kriterler</strong>' +\r\n          renderP26WeightedCriteriaNarrative(item, narrative) +\r\n        '</article>' +\r\n\r\n        '<article class=\"gdx-panel-v4-reco-wide-card is-criteria\">' +\r\n          '<strong>Karar\u0131 destekleyen kriterler</strong>' +\r\n          '<div class=\"gdx-panel-v4-reco-criteria\" data-gdx-panel-usecase-score-bars=\"1\">' +\r\n            renderRecoCriteria(item) +\r\n          '</div>' +\r\n        '</article>' +\r\n      '</div>' +\r\n\r\n      renderRecommendationPersonaBlock(item) +\r\n    '</section>';\r\n}\r\n\r\nfunction renderRecommendationCard(item, index, totalCount) {\r\n  item = item || {};\r\n  index = Number(index || 0);\r\n  totalCount = Number(totalCount || 0);\r\n\r\n  var key = getRecommendationItemKey(item);\r\n  var expanded = String(uiState.recommendationExpandedKey || \"\") === key;\r\n  var score = Math.round(Number(item.purposeScore100 || 0));\r\n  var url = item.url || \"#\";\r\n  var rank = Number(item.rank || 0);\r\n  var rankClass = rank ? \" is-rank-\" + rank : \"\";\r\n  var scoreTone = recoScoreTone(score);\r\n  var title = smartItemTitle(item, item.product || {}, \"Panel LED \u00DCr\u00FCn\");\r\n  var meta = recoMetaLine(item);\r\n\r\n  return '' +\r\n    '<article class=\"gdx-panel-v4-reco-card is-final' + rankClass + (expanded ? \" is-detail-open\" : \"\") + '\" data-gdx-panel-reco-card=\"' + escapeHtml(String(key)) + '\" data-gdx-panel-reco-card-rank=\"' + escapeHtml(String(rank || index + 1)) + '\">' +\r\n      '<div class=\"gdx-panel-v4-reco-rank\">#' + escapeHtml(String(item.rank || \"\")) + '</div>' +\r\n\r\n      '<div class=\"gdx-panel-v4-reco-top\">' +\r\n        '<div>' +\r\n          '<div class=\"gdx-panel-v4-reco-brand\">' + escapeHtml(item.vendor || \"Panel LED\") + '</div>' +\r\n          '<div class=\"gdx-panel-v4-reco-rank-role\">' + escapeHtml(recoRankRole(rank)) + '</div>' +\r\n          '<h4>' + escapeHtml(title) + '</h4>' +\r\n          '<div class=\"gdx-panel-v4-reco-meta-line\">' + escapeHtml(meta) + '</div>' +\r\n          renderProductSourceChips(item.product || {}, 'data-gdx-panel-reco-source-chips=\"1\"') +\r\n        '</div>' +\r\n        '<span class=\"gdx-panel-v4-reco-suitability is-' + escapeHtml(item.suitabilityTone || \"good\") + '\">' +\r\n          escapeHtml(item.suitabilityLabel || \"Uygun\") +\r\n        '</span>' +\r\n      '</div>' +\r\n\r\n      '<div class=\"gdx-panel-v4-reco-body\">' +\r\n        '<div class=\"gdx-panel-v4-reco-media\">' +\r\n          (item.image\r\n            ? '<img src=\"' + escapeHtml(item.image || \"\") + '\" alt=\"' + escapeHtml(title) + '\" loading=\"lazy\">'\r\n            : '<div class=\"gdx-panel-v4-reco-media-empty\">\u00DCr\u00FCn g\u00F6rseli</div>') +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-panel-v4-reco-score-wrap\">' +\r\n          renderSpeedometer(score) +\r\n          '<div class=\"gdx-panel-v4-reco-score-badge is-' + escapeHtml(scoreTone) + '\">' +\r\n            '<strong>' + escapeHtml(String(score)) + '/100</strong>' +\r\n            '<span>' + escapeHtml(recoScoreLabel(score)) + '</span>' +\r\n          '</div>' +\r\n        '</div>' +\r\n      '</div>' +\r\n\r\n      renderUseCaseNarrativeCardBlocks(item, expanded) +\r\n      renderRecommendationMobilePersonaBlock(item, expanded) +\r\n\r\n      '' +\r\n\r\n      '<div class=\"gdx-panel-v4-reco-actions is-commerce\">' +\r\n      '<a href=\"' + escapeHtml(url) + '\" target=\"_blank\" rel=\"noopener\">' + escapeHtml(recoPrimaryCtaText(item)) + '</a>' +\r\n      '<button type=\"button\" data-gdx-panel-rec-why=\"' + escapeHtml(String(key)) + '\">' + (expanded ? \"Gerek\u00E7eyi Kapat\" : \"Neden Bu \u00DCr\u00FCn?\") + '</button>' +\r\n    '</div>' +\r\n\r\n      (!getUseCaseItemNarrative(item)\r\n        ? '<div class=\"gdx-panel-v4-reco-why\" ' + (expanded ? \"\" : \"hidden\") + '>' +\r\n            '<strong>Detayl\u0131 \u00F6neri gerek\u00E7esi</strong>' +\r\n            renderRecoBullets(item) +\r\n            '<p>' + escapeHtml(recoCustomerConfidenceDetail(item)) + '</p>' +\r\n          '</div>'\r\n        : '') +\r\n    '</article>';\r\n}\r\n\r\n   function activeUseCaseTitle(result, activeKey) {\r\n  var r28Selection = window.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n  var canonicalPurposeTitle = String(r28Selection.activePurposeTitle || '').replace(/\\s+/g,' ').trim();\r\n  if (canonicalPurposeTitle) return canonicalPurposeTitle;\r\n\r\n  if (result && result.familyLabel) return result.familyLabel;\r\n\r\n  var list = getUseCaseList();\r\n  var found = list.find(function (item) {\r\n    return useCaseKey(item) === activeKey;\r\n  });\r\n\r\n  return found ? useCaseLabel(found) : \"Kullan\u0131m amac\u0131na g\u00F6re \u00F6neri\";\r\n}\r\n\r\nfunction activeUseCaseShortText(result, activeKey) {\r\n  var title = activeUseCaseTitle(result, activeKey);\r\n\r\nreturn title + \" i\u00E7in Panel LED se\u00E7imi; \u00FCr\u00FCn bilgileri, fiyat/de\u011Fer, \u0131\u015F\u0131k karakteri ve teknik kullan\u0131m uygunlu\u011Fu dengesine g\u00F6re s\u0131raland\u0131. Sat\u0131n alma uygunlu\u011Fu \u00FCr\u00FCn kartlar\u0131nda ayr\u0131ca g\u00F6sterilir.\";\r\n}\r\n\r\nfunction recommendationCountText(result) {\r\n  var count = result && Array.isArray(result.items) ? result.items.length : 0;\r\n\r\n  if (!count) return \"\u00D6neri haz\u0131rlan\u0131yor\";\r\n  return count + \" \u00FCr\u00FCn \u00F6nerisi\";\r\n}\r\n\r\nfunction renderPriorityLabels(result) {\r\n  var labels = result && Array.isArray(result.priorityLabels) ? result.priorityLabels.slice(0, 5) : [];\r\n\r\n  labels = labels.filter(function (label) {\r\n    var text = lower(label || \"\");\r\n    return !(\r\n      /stok/.test(text) ||\r\n      /sat\u0131n al\u0131nabilirlik/.test(text) ||\r\n      /sat\u0131n alinabilirlik/.test(text)\r\n    );\r\n  });\r\n\r\n  if (!labels.length) {\r\n    labels = [\r\n      \"Fiyat / Performans\",\r\n      \"I\u015F\u0131k G\u00FCc\u00FC\",\r\n      \"Renk Do\u011Frulu\u011Fu\",\r\n      \"Kullan\u0131m Uygunlu\u011Fu\"\r\n    ];\r\n  }\r\n\r\n  return labels.map(function (label) {\r\n    return '<span>' + escapeHtml(label) + '</span>';\r\n  }).join(\"\");\r\n}\r\n\r\nfunction renderUseCaseContext(result, activeKey) {\r\n  return \"\";\r\n}\r\n\r\nfunction renderRecommendationPanel() {\r\n  var el = recommendationEl();\r\n  if (!el) return;\r\n\r\n  var activeKey = uiState.recommendFamilyKey || \"content_creation\";\r\n  var result = ensureRecommendationResult();\r\n\r\n  if (!result || !result.ok) {\r\n    el.innerHTML =\r\n      '<section class=\"gdx-panel-v4-reco-section\" data-gdx-panel-reco-section=\"1\" data-gdx-panel-p14-reco-layout=\"1\">' +\r\n        '<div class=\"gdx-panel-v4-reco-head\" data-gdx-panel-reco-head=\"1\">' +\r\n          '<div>' +\r\n            '<div class=\"gdx-panel-v4-reco-kicker\">KULLANIM AMACINA G\u00D6RE \u00D6NER\u0130LER</div>' +\r\n              '<h3>Kullan\u0131m amac\u0131na g\u00F6re \u00FCr\u00FCn \u00F6nerisi</h3>' +\r\n              '<p>Panel LED se\u00E7imini \u00E7ekim senaryosuna g\u00F6re netle\u015Ftirir. \u00DCr\u00FCn datas\u0131 haz\u0131r oldu\u011Funda \u00F6neriler burada g\u00F6r\u00FCn\u00FCr.</p>' +\r\n          '</div>' +\r\n        '</div>' +\r\n        '<div class=\"gdx-panel-v4-usecase-tabs\" data-gdx-panel-usecase-tabs=\"1\">' + renderUseCaseTabs(activeKey) + '</div>' +\r\n        '<div class=\"gdx-panel-v4-reco-empty\">' + escapeHtml(result && result.error ? result.error : \"\u00D6neri sonucu \u00FCretilemedi.\") + '</div>' +\r\n      '</section>';\r\n    return;\r\n  }\r\n\r\n  var items = ensureRecommendationItemKeys(Array.isArray(result.items) ? result.items : []);\r\n\r\n  el.innerHTML =\r\n    '<section class=\"gdx-panel-v4-reco-section\" data-gdx-panel-reco-section=\"1\" data-gdx-panel-p14-reco-layout=\"1\">' +\r\n      '<div class=\"gdx-panel-v4-reco-head\" data-gdx-panel-reco-head=\"1\">' +\r\n        '<div>' +\r\n          '<div class=\"gdx-panel-v4-reco-kicker\">KULLANIM AMACINA G\u00D6RE \u00D6NER\u0130LER</div>' +\r\n          '<h3>' + escapeHtml(activeUseCaseTitle(result, activeKey)) + '</h3>' +\r\n        '</div>' +\r\n      '</div>' +\r\n\r\n      '<div class=\"gdx-panel-v4-usecase-tabs\" data-gdx-panel-usecase-tabs=\"1\">' + renderUseCaseTabs(activeKey) + '</div>' +\r\n      renderUseCaseContext(result, activeKey) +\r\n      renderUseCaseNarrativeIntro(result) +\r\n\r\n      '<div class=\"gdx-panel-v4-reco-grid\" data-gdx-panel-reco-grid=\"1\">' +\r\n        items.map(function (item, index) {\r\n          return renderRecommendationCard(item, index, items.length);\r\n        }).join(\"\") +\r\n      '</div>' +\r\n      renderRecommendationWideDetail(items) +\r\n    '</section>';\r\n\r\n  animateSpeedometers();\r\n}\r\n\r\n\r\n  /* =========================================================\r\n     P12-5C \u2014 Sticky premium \"Ba\u015Fa D\u00F6n\" y\u00F6n i\u015Fareti\r\n     ========================================================= */\r\n  var backTopScrollHost = null;\r\n  var backTopScrollBound = false;\r\n\r\n  function getPanelScrollHost() {\r\n    var r = root();\r\n    return r ? r.querySelector(\".gdx-panel-v4-panel\") : null;\r\n  }\r\n\r\n  function getBackTopShell() {\r\n    var r = root();\r\n    return r ? r.querySelector(\".gdx-panel-v4-shell\") : null;\r\n  }\r\n\r\n  function hasRenderedCompareFlow() {\r\n    var r = root();\r\n\r\n    return !!(\r\n      uiState.compareResult &&\r\n      r &&\r\n      r.querySelector(\".gdx-panel-v4-result-box.is-compare\")\r\n    );\r\n  }\r\n\r\n  function ensureBackTopControl() {\r\n    var shell = getBackTopShell();\r\n    if (!shell) return null;\r\n\r\n    var button = shell.querySelector(\"[data-gdx-panel-back-top='1']\");\r\n    if (button) return button;\r\n\r\n    button = document.createElement(\"button\");\r\n    button.type = \"button\";\r\n    button.className = \"gdx-panel-v4-backtop\";\r\n    button.setAttribute(\"data-gdx-panel-back-top\", \"1\");\r\n    button.setAttribute(\"aria-label\", \"Ba\u015Fa d\u00F6n\");\r\n    button.hidden = true;\r\n    button.innerHTML = '<span class=\"gdx-panel-v4-backtop-chevron\" aria-hidden=\"true\"><i></i><i></i></span><span class=\"gdx-panel-v4-backtop-label\">Ba\u015Fa D\u00F6n</span>';\r\n\r\n    shell.appendChild(button);\r\n    return button;\r\n  }\r\n\r\n  function getBackTopScrollTop() {\r\n    var host = getPanelScrollHost();\r\n\r\n    if (host) {\r\n      return Number(host.scrollTop || 0);\r\n    }\r\n\r\n    return Number(window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\r\n  }\r\n\r\n  function getBackTopFp14Target() {\r\n    return getResultJumpTarget(\"fp14\") ||\r\n      document.querySelector(\"#gdx-panel-led-v4-root [data-gdx-panel-fp14-detail-section='1']\") ||\r\n      document.querySelector(\"#gdx-panel-led-v4-root .gdx-panel-v4-fp14-section\");\r\n  }\r\n\r\n  function getBackTopFp14Top() {\r\n    var target = getBackTopFp14Target();\r\n    var host = getPanelScrollHost();\r\n\r\n    if (!target) return null;\r\n\r\n    if (host) {\r\n      return Math.max(0, Math.round(\r\n        target.getBoundingClientRect().top -\r\n        host.getBoundingClientRect().top +\r\n        Number(host.scrollTop || 0)\r\n      ));\r\n    }\r\n\r\n    return Math.max(0, Math.round(\r\n      target.getBoundingClientRect().top +\r\n      Number(window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0)\r\n    ));\r\n  }\r\n\r\n  function getBackTopRevealProgress() {\r\n    var fp14Top = getBackTopFp14Top();\r\n    var scrollTop = getBackTopScrollTop();\r\n\r\n    if (fp14Top === null) return 0;\r\n\r\n    /*\r\n       R1 kural\u0131:\r\n       - FP14 ba\u015Flang\u0131c\u0131ndan \u00F6nce kesinlikle g\u00F6r\u00FCnmez.\r\n       - FP14 ba\u015Flang\u0131c\u0131ndan sonra 0\u2192260px aral\u0131\u011F\u0131nda yava\u015F belirginle\u015Fir.\r\n    */\r\n    var start = fp14Top + 8;\r\n    var end = start + 260;\r\n    var progress = (scrollTop - start) / Math.max(1, end - start);\r\n\r\n    return Math.max(0, Math.min(1, progress));\r\n  }\r\n\r\n  function syncBackTopControl() {\r\n    var button = ensureBackTopControl();\r\n    if (!button) return;\r\n\r\n    var progress = hasRenderedCompareFlow() ? getBackTopRevealProgress() : 0;\r\n    var shouldShow = progress > 0.035;\r\n\r\n    button.style.setProperty(\"--gdx-panel-backtop-reveal\", String(Math.round(progress * 1000) / 1000));\r\n    button.hidden = !shouldShow;\r\n    button.classList.toggle(\"is-visible\", shouldShow);\r\n    button.setAttribute(\"aria-hidden\", shouldShow ? \"false\" : \"true\");\r\n  }\r\n\r\n  function bindBackTopScrollHost() {\r\n    var host = getPanelScrollHost();\r\n\r\n    if (host && host !== backTopScrollHost) {\r\n      if (backTopScrollHost) {\r\n        backTopScrollHost.removeEventListener(\"scroll\", syncBackTopControl);\r\n      }\r\n\r\n      backTopScrollHost = host;\r\n      backTopScrollHost.addEventListener(\"scroll\", syncBackTopControl, { passive: true });\r\n    }\r\n\r\n    if (!backTopScrollBound) {\r\n      backTopScrollBound = true;\r\n      window.addEventListener(\"scroll\", syncBackTopControl, { passive: true });\r\n      window.addEventListener(\"resize\", syncBackTopControl, { passive: true });\r\n    }\r\n  }\r\n\r\n  function scrollBackToPanelTop() {\r\n    var host = getPanelScrollHost();\r\n\r\n    if (host && host.scrollTo) {\r\n      host.scrollTo({ top: 0, behavior: \"smooth\" });\r\n    } else if (window.scrollTo) {\r\n      window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n    }\r\n\r\n    window.setTimeout(syncBackTopControl, 260);\r\n    window.setTimeout(syncBackTopControl, 720);\r\n  }\r\n\r\n\r\n  function renderPoolSurface(){\r\n    if (uiState.decisionActivated !== true) {\r\n      return renderDeferredDecisionOnly(\"pool_render_blocked_before_apply\");\r\n    }\r\n    renderPoolSort();\r\n    renderProducts();\r\n    return true;\r\n  }\r\n  function renderRecommendationSurface(){\r\n    if (uiState.decisionActivated !== true) {\r\n      return renderDeferredDecisionOnly(\"recommendation_render_blocked_before_apply\");\r\n    }\r\n    var owner = window.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5 || null;\r\n\r\n    if (owner && typeof owner.render === \"function\") {\r\n      try {\r\n        var rendered = owner.render();\r\n        var mountNode = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n        if (mountNode && mountNode.querySelector('[data-gdx-reco-r11-owned=\"1\"]')) {\r\n          mountNode.hidden = false;\r\n          mountNode.setAttribute(\"aria-hidden\", \"false\");\r\n        }\r\n        return rendered;\r\n      } catch (_) {}\r\n    }\r\n\r\n    /* Startup fallback only. Once R11 is ready, the legacy renderer must\r\n       never overwrite #gdxPanelV4RecommendationPreview. */\r\n    return renderRecommendationPanel();\r\n  }\r\n\r\n  function renderAll() {\r\n    if (uiState.decisionActivated !== true) {\r\n      return renderDeferredDecisionOnly(\"render_all_blocked_before_apply\");\r\n    }\r\n\r\n    restoreDecisionResultSurfaces();\r\n    syncCompareSurfaceVisibility(\"render_all\");\r\n    renderFilters();\r\n    renderPurchaseLane();\r\n    renderDataSummary();\r\n    ensureP16CompactCommandPanel();\r\n    renderSlots();\r\n    renderPoolSurface();\r\n    renderActionBar();\r\n    renderResultPreview();\r\n    renderRecommendationSurface();\r\n    bindBackTopScrollHost();\r\n    syncBackTopControl();\r\n  }\r\n\r\n  function bindEvents() {\r\n    var r = root();\r\n    if (!r) return;\r\n\r\n    var launcher = document.getElementById(\"gdxPanelV4Launcher\");\r\n    if (launcher) launcher.addEventListener(\"click\", openShell);\r\n\r\n    document.addEventListener(\"click\", function (event) {\r\n      var backTop = event.target.closest(\"[data-gdx-panel-back-top='1']\");\r\n      if (backTop) {\r\n        event.preventDefault();\r\n        scrollBackToPanelTop();\r\n        return;\r\n      }\r\n\r\n      var jump = event.target.closest(\"[data-gdx-panel-jump]\");\r\n      if (jump) {\r\n        event.preventDefault();\r\n        scrollToResultSection(jump.getAttribute(\"data-gdx-panel-jump\") || \"\");\r\n        return;\r\n      }\r\n      var p16CompactScroll = event.target.closest(\"[data-gdx-panel-p16-compact-scroll]\");\r\n      if (p16CompactScroll) {\r\n        event.preventDefault();\r\n        scrollP16CompactTarget(p16CompactScroll.getAttribute(\"data-gdx-panel-p16-compact-scroll\") || \"\");\r\n        return;\r\n      }\r\n\r\n      if (event.target.closest(\"[data-gdx-panel-close]\")) {\r\n        event.preventDefault();\r\n        closeShell();\r\n        return;\r\n      }\r\n\r\n      var actionbarRemove = event.target.closest(\"[data-gdx-panel-actionbar-remove='1']\");\r\n      if (actionbarRemove) {\r\n        event.preventDefault();\r\n        var removeKey = actionbarRemove.getAttribute(\"data-gdx-panel-product-key\") || \"\";\r\n        if (removeKey) selectProduct(removeKey);\r\n        return;\r\n      }\r\n\r\n      var compareAction = event.target.closest(\"[data-gdx-panel-compare-action]\");\r\n      if (compareAction) {\r\n        event.preventDefault();\r\n        runGeneralCompare({ scroll: true });\r\n        return;\r\n      }\r\n\r\n      var resetAction = event.target.closest(\"[data-gdx-panel-reset-flow]\");\r\n      if (resetAction) {\r\n        event.preventDefault();\r\n        resetComparisonFlow({ scroll: true });\r\n        return;\r\n      }\r\n    \r\n      var usecase = event.target.closest(\"[data-gdx-panel-usecase]\");\r\n      if (usecase) {\r\n        event.preventDefault();\r\n        uiState.recommendFamilyKey = usecase.getAttribute(\"data-gdx-panel-usecase\") || \"content_creation\";\r\n        uiState.recommendScenarioKey = \"\";\r\n        uiState.recommendationResult = null;\r\n        uiState.recommendationExpandedKey = \"\";\r\n        uiState.recommendationRenderedAt = \"\";\r\n        renderRecommendationSurface();\r\n\r\n        var reco = recommendationEl();\r\n        if (reco && reco.scrollIntoView) reco.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n        return;\r\n      }\r\n\r\n      var wideClose = event.target.closest(\"[data-gdx-panel-rec-wide-close]\");\r\n      if (wideClose) {\r\n        event.preventDefault();\r\n        uiState.recommendationExpandedKey = \"\";\r\n        renderRecommendationSurface();\r\n        return;\r\n      }\r\n\r\n      var whyBtn = event.target.closest(\"[data-gdx-panel-rec-why]\");\r\n      if (whyBtn) {\r\n        event.preventDefault();\r\n        var key = whyBtn.getAttribute(\"data-gdx-panel-rec-why\") || \"\";\r\n        var hostCard = whyBtn.closest(\"[data-gdx-panel-reco-card]\");\r\n\r\n        if (!key && hostCard) {\r\n          key = hostCard.getAttribute(\"data-gdx-panel-reco-card\") || \"\";\r\n        }\r\n\r\n        key = normalizeRecommendationKeyPart(key);\r\n\r\n        if (!key) {\r\n          var allWhyButtons = root() ? root().querySelectorAll(\"[data-gdx-panel-rec-why]\") : [];\r\n          var index = Array.prototype.indexOf.call(allWhyButtons, whyBtn);\r\n          key = \"reco-\" + String(index + 1 || 1);\r\n        }\r\n\r\n        var willOpen = uiState.recommendationExpandedKey !== key;\r\n        uiState.recommendationExpandedKey = willOpen ? key : \"\";\r\n        renderRecommendationSurface();\r\n        if (willOpen) scrollToRecommendationWhyDetail(key);\r\n        return;\r\n      }\r\n\r\n      var slot = event.target.closest(\"[data-gdx-panel-slot]\");\r\n      if (slot) {\r\n        uiState.activeSlot = Number(slot.getAttribute(\"data-gdx-panel-slot\") || 1) || 1;\r\n        renderSlots();\r\n        return;\r\n      }\r\n\r\n      var lane = event.target.closest(\"[data-gdx-panel-purchase-lane]\");\r\n      if (lane) {\r\n        var nextLane = lane.getAttribute(\"data-gdx-panel-purchase-lane\") || \"ALL\";\r\n        if ([\"ALL\",\"BARE_LIGHT\",\"SINGLE_READY_SET\"].indexOf(nextLane) < 0) nextLane = \"ALL\";\r\n        if (uiState.purchaseLane !== nextLane) {\r\n          uiState.purchaseLane = nextLane;\r\n          renderPurchaseLane();\r\n          renderPoolSort();\r\n          renderProducts();\r\n        }\r\n        return;\r\n      }\r\n\r\n      var filter = event.target.closest(\"[data-gdx-panel-filter]\");\r\n      if (filter) {\r\n        uiState.filter = filter.getAttribute(\"data-gdx-panel-filter\") || \"all\";\r\n\r\n        var filterWrap = document.getElementById(\"gdxPanelV4Filters\");\r\n        if (filterWrap) {\r\n          Array.prototype.forEach.call(filterWrap.querySelectorAll(\"[data-gdx-panel-filter]\"), function (button) {\r\n            var active = (button.getAttribute(\"data-gdx-panel-filter\") || \"all\") === uiState.filter;\r\n            button.classList.toggle(\"is-active\", active);\r\n            button.setAttribute(\"aria-pressed\", active ? \"true\" : \"false\");\r\n          });\r\n        }\r\n\r\n        renderProducts();\r\n        return;\r\n      }\r\n\r\n      var discoveryAction = event.target.closest(\"[data-cf-p2-card-action]\");\r\n      if (discoveryAction) {\r\n        return;\r\n      }\r\n\r\n      var card = event.target.closest(\"[data-gdx-panel-product]\");\r\n      if (card) {\r\n        event.preventDefault();\r\n        selectProduct(card.getAttribute(\"data-gdx-panel-product\"));\r\n      }\r\n    });\r\n\r\n    var search = document.getElementById(\"gdxPanelV4Search\");\r\n    var searchClear = document.getElementById(\"gdxPanelV4SearchClear\");\r\n\r\n    function syncP2SearchClearButton() {\r\n      if (!searchClear || !search) return;\r\n      var hasQuery = !!String(search.value || \"\").trim();\r\n      searchClear.hidden = !hasQuery;\r\n      searchClear.setAttribute(\"aria-hidden\", hasQuery ? \"false\" : \"true\");\r\n    }\r\n\r\n    if (search) {\r\n      search.addEventListener(\"input\", function () {\r\n        uiState.query = search.value || \"\";\r\n        syncP2SearchClearButton();\r\n        renderProducts();\r\n      });\r\n    }\r\n\r\n    if (searchClear) {\r\n      searchClear.addEventListener(\"click\", function (event) {\r\n        event.preventDefault();\r\n        if (!search) return;\r\n\r\n        search.value = \"\";\r\n        uiState.query = \"\";\r\n        syncP2SearchClearButton();\r\n        renderProducts();\r\n\r\n        try {\r\n          search.focus({ preventScroll: true });\r\n        } catch (_) {\r\n          try { search.focus(); } catch (__) {}\r\n        }\r\n      });\r\n    }\r\n\r\n    syncP2SearchClearButton();\r\n\r\n    var productSort = document.getElementById(\"gdxPanelV4ProductSort\");\r\n    if (productSort) {\r\n      productSort.addEventListener(\"change\", function () {\r\n        uiState.poolSort = productSort.value === \"GENERAL_FP\" ? \"GENERAL_FP\" : \"PURPOSE\";\r\n        renderPoolSort();\r\n        renderProducts();\r\n      });\r\n    }\r\n\r\n    var r2dPoolRefreshRaf = 0;\r\n    window.addEventListener(\"gdx-panel-v4-r28-selection-change\", function () {\r\n      if (window.GDX_PANEL_LED_V4_ETAP2_R2C2_SELECTION_RECOMMENDATION_SYNC) return;\r\n      if (r2dPoolRefreshRaf) return;\r\n      var raf = window.requestAnimationFrame || function(fn){ return window.setTimeout(fn, 0); };\r\n      r2dPoolRefreshRaf = raf(function () {\r\n        r2dPoolRefreshRaf = 0;\r\n        renderPoolSort();\r\n        if (uiState.poolSort === \"PURPOSE\") renderProducts();\r\n      });\r\n    });\r\n\r\n    var compareBtn = document.getElementById(\"gdxPanelV4CompareBtn\");\r\n    if (compareBtn) {\r\n      compareBtn.addEventListener(\"click\", function () {\r\n        runGeneralCompare({ scroll: true });\r\n      });\r\n    }\r\n\r\n    document.addEventListener(\"keydown\", function (event) {\r\n      if (event.key === \"Escape\" && uiState.opened) closeShell();\r\n    });\r\n  }\r\n\r\n  ready(function () {\r\n    bindEvents();\r\n\r\n    if (API && typeof API.on === \"function\") {\r\n      API.on(\"data:loading\", renderAll);\r\n      API.on(\"data:loaded\", renderAll);\r\n      API.on(\"data:error\", renderAll);\r\n    }\r\n\r\n    renderAll();\r\n\r\n      window.GDX_PANEL_LED_V4_UI = {\r\n      version: UI_VERSION,\r\n      state: uiState,\r\n      open: openShell,\r\n      close: closeShell,\r\n      render: renderAll,\r\n      renderRecommendation: renderRecommendationSurface,\r\n      renderPool: renderPoolSurface,\r\n      activateDecisionResults: activateDecisionResults,\r\n      deactivateDecisionResults: deactivateDecisionResults,\r\n      getDecisionGateState: function () { return window.CANFOTO_PANEL_DEFERRED_RESULTS_GATE.getState(); },\r\n      renderResultOnly: renderResultPreview,\r\n      syncResultVisibility: syncCompareSurfaceVisibility,\r\n      isPoolResultViewActive: poolResultViewActive,\r\n      compare: runGeneralCompare,\r\n      scrollToCompareResult: landOnDetailedCompareResult,\r\n      reset: resetComparisonFlow,\r\n      toggleCompareProduct: toggleUnifiedCompareProduct,\r\n      resetCompareSelection: resetUnifiedCompareSelection,\r\n      getCompareSelectionCount: unifiedCompareCount,\r\n      selectPoolProduct: selectProduct,\r\n      comparePool: runPoolCompare,\r\n      resetPool: resetPoolComparison,\r\n      debugP26PurposeDetail: debugP26PurposeDetail,\r\n      debugSourceSync: function () {\r\n        var result = uiState.compareResult || null;\r\n        var sync = getSourceSync(result);\r\n        return {\r\n          ok: !!sync,\r\n          version: UI_VERSION,\r\n          sourceSync: sync,\r\n          sourceSyncPanelExists: !!document.querySelector(\"#gdx-panel-led-v4-root [data-gdx-panel-source-sync='1']\"),\r\n          expertChips: document.querySelectorAll(\"#gdx-panel-led-v4-root [data-gdx-panel-expert-chips='1'] span\").length,\r\n          recoSourceChips: document.querySelectorAll(\"#gdx-panel-led-v4-root [data-gdx-panel-reco-source-chips='1'] span\").length,\r\n          stockLeak: /stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik/i.test(String(document.querySelector(\"#gdx-panel-led-v4-root [data-gdx-panel-source-sync='1']\") ? document.querySelector(\"#gdx-panel-led-v4-root [data-gdx-panel-source-sync='1']\").textContent : \"\")),\r\n          customerFacingInternalLeak: /\\bP12\\b|kaynak kilidi|normalize teknik s\u00F6zl\u00FCk/i.test(String(root() ? root().innerText || \"\" : \"\")),\r\n          fp14RowCopySmallCount: document.querySelectorAll(\"#gdx-panel-led-v4-root [data-gdx-panel-fp14-row-copy] small\").length,\r\n          fp14RowCopyBlockCount: document.querySelectorAll(\"#gdx-panel-led-v4-root [data-gdx-panel-fp14-row-copy]\").length\r\n        };\r\n      },\r\n      debugFp14Progressive: function () {\r\n        var rootEl = root();\r\n        var allRows = rootEl ? rootEl.querySelectorAll(\"[data-gdx-panel-fp14-master-row]\").length : 0;\r\n        var criticalRows = rootEl ? rootEl.querySelectorAll(\"[data-gdx-panel-fp14-progressive-role='critical']\").length : 0;\r\n        var detailRows = rootEl ? rootEl.querySelectorAll(\"[data-gdx-panel-fp14-progressive-role='detail']\").length : 0;\r\n        var toggle = rootEl ? rootEl.querySelector(\"[data-gdx-panel-fp14-detail-toggle='1']\") : null;\r\n\r\n        var criticalKeys = rootEl ? Array.prototype.map.call(rootEl.querySelectorAll(\"[data-gdx-panel-fp14-progressive-role='critical']\"), function (row) {\r\n          return row.getAttribute(\"data-gdx-panel-fp14-row\") || \"\";\r\n        }) : [];\r\n        var forbiddenCritical = criticalKeys.filter(function (key) {\r\n          return /kit|cct|kelvin|accessory|aksesuar/i.test(key);\r\n        });\r\n\r\n        return {\r\n          ok: allRows === 14 && criticalRows === 5 && detailRows === 9 && !!toggle && forbiddenCritical.length === 0,\r\n          version: UI_VERSION,\r\n          allRows: allRows,\r\n          criticalRows: criticalRows,\r\n          detailRows: detailRows,\r\n          toggleExists: !!toggle,\r\n          toggleOpen: !!(toggle && toggle.open),\r\n          criticalKeys: criticalKeys,\r\n          forbiddenCritical: forbiddenCritical\r\n        };\r\n      },\r\n      debugSmartTitles: function () {\r\n        var products = API && API.state && Array.isArray(API.state.products) ? API.state.products : [];\r\n        var rootEl = root();\r\n        var visibleText = rootEl ? String(rootEl.innerText || \"\") : \"\";\r\n        var smartRows = products.map(function (product) {\r\n          return {\r\n            key: product.key,\r\n            title: product.title,\r\n            smartTitle: smartDisplayTitle(product),\r\n            legacyShortTitle: product.legacyShortTitle || \"\"\r\n          };\r\n        });\r\n\r\n        return {\r\n          ok: smartRows.length > 0 && smartRows.every(function (row) { return row.smartTitle && row.smartTitle.length <= 38; }),\r\n          version: UI_VERSION,\r\n          productCount: smartRows.length,\r\n          maxSmartTitleLength: smartRows.reduce(function (max, row) { return Math.max(max, row.smartTitle.length); }, 0),\r\n          mechanicalEllipsisCount: smartRows.filter(function (row) { return /\\.\\.\\./.test(row.smartTitle); }).length,\r\n          visibleLongMarketingLeak: /Foto\u011Fraf ve Video I\u015F\u0131\u011F\u0131|YouTube Video ve \u00DCr\u00FCn \u00C7ekimi|Profesyonel Panel LED Foto\u011Fraf/i.test(visibleText),\r\n          rows: smartRows\r\n        };\r\n      },\r\n      debugCopyCleanup: function () {\r\n        var rootEl = root();\r\n        var text = rootEl ? String(rootEl.innerText || \"\") : \"\";\r\n        var banned = [\r\n          \"Sat\u0131n alma i\u00E7in stok uygun g\u00F6r\u00FCn\u00FCyor\",\r\n          \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n          \"Stokta g\u00F6r\u00FCn\u00FCyor\",\r\n          \"G\u00FCncel fiyat\",\r\n          \"G\u00FCncel stok\",\r\n          \"\u00FCr\u00FCn sayfas\u0131nda kontrol\",\r\n          \"kontrol ederek\",\r\n          \"Fiyat, taksit ve kargo detaylar\u0131n\u0131\",\r\n          \"Se\u00E7ili kullan\u0131m amac\u0131na g\u00F6re \u00F6nerilen se\u00E7enek\",\r\n          \"Karar sonras\u0131 sat\u0131n alma ad\u0131m\u0131\",\r\n          \"\u00D6neri mant\u0131\u011F\u0131\",\r\n          \"Nas\u0131l kullan\u0131l\u0131r?\",\r\n          \"Se\u00E7ili kullan\u0131m amac\u0131\"\r\n        ];\r\n        var found = banned.filter(function (value) {\r\n          return text.indexOf(value) > -1;\r\n        });\r\n\r\n        return {\r\n          ok: found.length === 0,\r\n          version: UI_VERSION,\r\n          bannedFound: found,\r\n          recoContextCount: rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-context article\").length : 0,\r\n          recoCommerceBridgeCount: rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-commerce-bridge\").length : 0,\r\n          recoConfidenceCount: rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-confidence\").length : 0,\r\n          recoCommerceNoteCount: rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-commerce-note\").length : 0\r\n        };\r\n      },\r\n      debugMobileWhyButton: function () {\r\n        var rootEl = root();\r\n        var cards = rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-card\") : [];\r\n        var buttons = rootEl ? rootEl.querySelectorAll(\"[data-gdx-panel-rec-why]\") : [];\r\n        var inlineDetails = rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-why.is-card-inline[data-gdx-panel-usecase-card-reasons='1']\") : [];\r\n        var openInlineDetails = rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-why.is-card-inline[data-gdx-panel-usecase-card-reasons='1']:not([hidden])\") : [];\r\n        var expandedCards = rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-card.is-detail-open\") : [];\r\n        var wideDetails = rootEl ? rootEl.querySelectorAll(\"[data-gdx-panel-reco-wide-detail='1']\") : [];\r\n\r\n        return {\r\n          ok: buttons.length >= 3 && inlineDetails.length >= 3,\r\n          version: UI_VERSION,\r\n          cardCount: cards.length,\r\n          buttonCount: buttons.length,\r\n          inlineDetailCount: inlineDetails.length,\r\n          openInlineDetailCount: openInlineDetails.length,\r\n          expandedCardCount: expandedCards.length,\r\n          wideDetailCount: wideDetails.length,\r\n          expandedKey: uiState.recommendationExpandedKey || \"\",\r\n          buttonKeys: Array.prototype.map.call(buttons, function (button) {\r\n            return button.getAttribute(\"data-gdx-panel-rec-why\") || \"\";\r\n          }),\r\n          cardKeys: Array.prototype.map.call(cards, function (card) {\r\n            return card.getAttribute(\"data-gdx-panel-reco-card\") || \"\";\r\n          })\r\n        };\r\n      },\r\n      debugStickyBackTop: function () {\r\n        var host = getPanelScrollHost();\r\n        var button = ensureBackTopControl();\r\n        var hasCompare = hasRenderedCompareFlow();\r\n        var fp14Top = getBackTopFp14Top();\r\n        var originalTop = host ? Number(host.scrollTop || 0) : Number(window.pageYOffset || 0);\r\n\r\n        syncBackTopControl();\r\n        var initialVisible = !!(button && !button.hidden && button.classList.contains(\"is-visible\"));\r\n\r\n        if (fp14Top !== null) {\r\n          if (host) {\r\n            host.scrollTop = Math.max(0, fp14Top - 40);\r\n            host.dispatchEvent(new Event(\"scroll\"));\r\n          } else {\r\n            window.scrollTo(0, Math.max(0, fp14Top - 40));\r\n            window.dispatchEvent(new Event(\"scroll\"));\r\n          }\r\n        }\r\n\r\n        syncBackTopControl();\r\n        var hiddenBeforeFp14 = !!(button && button.hidden && !button.classList.contains(\"is-visible\"));\r\n        var progressBeforeFp14 = getBackTopRevealProgress();\r\n\r\n        if (fp14Top !== null) {\r\n          if (host) {\r\n            host.scrollTop = fp14Top + 70;\r\n            host.dispatchEvent(new Event(\"scroll\"));\r\n          } else {\r\n            window.scrollTo(0, fp14Top + 70);\r\n            window.dispatchEvent(new Event(\"scroll\"));\r\n          }\r\n        }\r\n\r\n        syncBackTopControl();\r\n        var visibleAfterFp14 = !!(button && !button.hidden && button.classList.contains(\"is-visible\"));\r\n        var progressAfterFp14 = getBackTopRevealProgress();\r\n\r\n        if (fp14Top !== null) {\r\n          if (host) {\r\n            host.scrollTop = fp14Top + 300;\r\n            host.dispatchEvent(new Event(\"scroll\"));\r\n          } else {\r\n            window.scrollTo(0, fp14Top + 300);\r\n            window.dispatchEvent(new Event(\"scroll\"));\r\n          }\r\n        }\r\n\r\n        syncBackTopControl();\r\n        var fullRevealVisible = !!(button && !button.hidden && button.classList.contains(\"is-visible\"));\r\n        var progressFull = getBackTopRevealProgress();\r\n\r\n        if (host) {\r\n          host.scrollTop = originalTop;\r\n          host.dispatchEvent(new Event(\"scroll\"));\r\n        } else {\r\n          window.scrollTo(0, originalTop);\r\n          window.dispatchEvent(new Event(\"scroll\"));\r\n        }\r\n\r\n        syncBackTopControl();\r\n\r\n        return {\r\n          ok: !!button && hasCompare && fp14Top !== null && hiddenBeforeFp14 && visibleAfterFp14 && fullRevealVisible && progressFull >= 0.98,\r\n          version: UI_VERSION,\r\n          mode: \"fp14-anchor-side-rail-double-chevron\",\r\n          hasButton: !!button,\r\n          hasCompare: hasCompare,\r\n          fp14Top: fp14Top,\r\n          initialVisible: initialVisible,\r\n          hiddenBeforeFp14: hiddenBeforeFp14,\r\n          progressBeforeFp14: Math.round(progressBeforeFp14 * 1000) / 1000,\r\n          visibleAfterFp14: visibleAfterFp14,\r\n          progressAfterFp14: Math.round(progressAfterFp14 * 1000) / 1000,\r\n          fullRevealVisible: fullRevealVisible,\r\n          progressFull: Math.round(progressFull * 1000) / 1000,\r\n          restoredScrollTop: host ? Number(host.scrollTop || 0) : Number(window.pageYOffset || 0),\r\n          label: button ? String(button.innerText || \"\").replace(/\\s+/g, \" \").trim() : \"\",\r\n          chevronCount: button ? button.querySelectorAll(\".gdx-panel-v4-backtop-chevron i\").length : 0\r\n        };\r\n      },\r\n\r\n      debugMobileWhyCopy: function () {\r\n        var rootEl = root();\r\n        var details = rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-why.is-mobile-why-detail\") : [];\r\n        var detailText = Array.prototype.map.call(details, function (node) {\r\n          return String(node.innerText || \"\");\r\n        }).join(\" \");\r\n        var genericLeak = /Bu ba\u015Fl\u0131k|Bu baslik|kriter seviyesi|ilk \u00F6neriden farkl\u0131|ilk oneriden farkli|g\u00FC\u00E7l\u00FC alternatif yapar|guclu alternatif yapar/i.test(detailText);\r\n        var paragraphs = rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-why.is-mobile-why-detail .gdx-panel-v4-reco-mini p\") : [];\r\n        var titleOnlyCards = rootEl ? rootEl.querySelectorAll(\".gdx-panel-v4-reco-why.is-mobile-why-detail .gdx-panel-v4-reco-mini.is-mobile-title-only\") : [];\r\n\r\n        var wideDetails = rootEl ? rootEl.querySelectorAll(\"[data-gdx-panel-reco-wide-detail='1']\") : [];\r\n        var wideText = Array.prototype.map.call(wideDetails, function (node) {\r\n          return String(node.textContent || \"\");\r\n        }).join(\" \");\r\n        var wideGenericLeak = /Bu ba\u015Fl\u0131k|Bu baslik|kriter seviyesi|ilk \u00F6neriden farkl\u0131|ilk oneriden farkli|g\u00FC\u00E7l\u00FC alternatif yapar|guclu alternatif yapar/i.test(wideText);\r\n\r\n        return {\r\n          ok: !genericLeak && !wideGenericLeak && titleOnlyCards.length >= 3,\r\n          version: UI_VERSION,\r\n          detailCount: details.length,\r\n          reasonCardCount: titleOnlyCards.length,\r\n          paragraphCount: paragraphs.length,\r\n          genericLeak: genericLeak,\r\n          wideDetailCount: wideDetails.length,\r\n          wideGenericLeak: wideGenericLeak\r\n        };\r\n      }\r\n    };\r\n  });\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P21-6-R1 CSS-FIRST SCROLLBAR KILL SINGLE CIRCLE ARROW\r\n   Faz: PANEL-V4-P21-6-R1-CSS-FIRST-SCROLLBAR-KILL-SINGLE-CIRCLE-ARROW-SAFE\r\n\r\n   G\u00FCvenlik:\r\n   - renderRecommendationPanel / renderUseCaseTabs de\u011Fi\u015Ftirmez.\r\n   - Result nav / commerce / share / section liquid ak\u0131\u015F\u0131na dokunmaz.\r\n   - Mevcut .gdx-panel-v4-usecase-tabs DOM node'unu post-render sarar.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  if (window.GDX_PANEL_LED_V4_P21_6_USECASE_ARROW_READY) return;\r\n  window.GDX_PANEL_LED_V4_P21_6_USECASE_ARROW_READY = true;\r\n\r\n  var VERSION = \"PANEL-V4-P21-6-R1-CSS-FIRST-SCROLLBAR-KILL-SINGLE-CIRCLE-ARROW-SAFE\";\r\n  var OBSERVER = null;\r\n  var ENHANCE_TIMER = null;\r\n\r\n  function ready(fn) {\r\n    if (document.readyState === \"loading\") {\r\n      document.addEventListener(\"DOMContentLoaded\", fn, { once: true });\r\n    } else {\r\n      fn();\r\n    }\r\n  }\r\n\r\n  function root() {\r\n    return document.getElementById(\"gdx-panel-led-v4-root\");\r\n  }\r\n\r\n  function createArrow(direction) {\r\n    var button = document.createElement(\"button\");\r\n    button.type = \"button\";\r\n    button.className = \"gdx-panel-v4-usecase-alt02-arrow \" + (direction < 0 ? \"is-prev\" : \"is-next\");\r\n    button.setAttribute(\"data-gdx-panel-p21-6-usecase-arrow\", String(direction));\r\n    button.setAttribute(\"aria-label\", direction < 0 ? \"\u00D6nceki kullan\u0131m ama\u00E7lar\u0131\" : \"Sonraki kullan\u0131m ama\u00E7lar\u0131\");\r\n\r\n    button.innerHTML =\r\n      '<span class=\"gdx-panel-v4-usecase-alt02-arrow-core\" aria-hidden=\"true\">' +\r\n        '<svg viewBox=\"0 0 16 16\" focusable=\"false\"><path d=\"M10.5 3.5 6 8l4.5 4.5\"></path></svg>' +\r\n      '</span>';\r\n\r\n    return button;\r\n  }\r\n\r\n  function scrollTrack(track, direction) {\r\n    if (!track) return false;\r\n\r\n    direction = Number(direction || 0);\r\n\r\n    var amount = Math.max(230, Math.round((track.clientWidth || 520) * 0.62));\r\n    var nextLeft = (track.scrollLeft || 0) + (direction > 0 ? amount : -amount);\r\n\r\n    if (typeof track.scrollTo === \"function\") {\r\n      track.scrollTo({ left: Math.max(0, nextLeft), behavior: \"smooth\" });\r\n    } else {\r\n      track.scrollLeft = Math.max(0, nextLeft);\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function revealActive(track) {\r\n    if (!track) return false;\r\n\r\n    var active = track.querySelector(\".gdx-panel-v4-usecase-btn.is-active\");\r\n    if (!active) return false;\r\n\r\n    try {\r\n      var trackRect = track.getBoundingClientRect();\r\n      var activeRect = active.getBoundingClientRect();\r\n\r\n      if (activeRect.left < trackRect.left + 14 || activeRect.right > trackRect.right - 14) {\r\n        var nextLeft = (track.scrollLeft || 0) + (activeRect.left - trackRect.left) - (trackRect.width / 2) + (activeRect.width / 2);\r\n\r\n        if (typeof track.scrollTo === \"function\") {\r\n          track.scrollTo({ left: Math.max(0, nextLeft), behavior: \"smooth\" });\r\n        } else {\r\n          track.scrollLeft = Math.max(0, nextLeft);\r\n        }\r\n      }\r\n\r\n      return true;\r\n    } catch (error) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function enhanceTrack(track) {\r\n    if (!track || track.getAttribute(\"data-gdx-panel-p21-6-enhanced\") === \"1\") return false;\r\n\r\n    if (!track.classList || !track.classList.contains(\"gdx-panel-v4-usecase-tabs\")) return false;\r\n\r\n    var parent = track.parentNode;\r\n    if (!parent) return false;\r\n\r\n    var wrapper = document.createElement(\"div\");\r\n    wrapper.className = \"gdx-panel-v4-usecase-alt02-shell\";\r\n    wrapper.setAttribute(\"data-gdx-panel-p21-6-usecase-shell\", \"1\");\r\n\r\n    var prev = createArrow(-1);\r\n    var next = createArrow(1);\r\n\r\n    parent.insertBefore(wrapper, track);\r\n    wrapper.appendChild(prev);\r\n    wrapper.appendChild(track);\r\n    wrapper.appendChild(next);\r\n\r\n    track.setAttribute(\"data-gdx-panel-p21-6-enhanced\", \"1\");\r\n\r\n    window.setTimeout(function () {\r\n      revealActive(track);\r\n    }, 80);\r\n\r\n    return true;\r\n  }\r\n\r\n  function enhanceAll() {\r\n    var r = root();\r\n    if (!r) return false;\r\n\r\n    var changed = false;\r\n\r\n    Array.prototype.slice.call(\r\n      r.querySelectorAll(\".gdx-panel-v4-usecase-tabs[data-gdx-panel-usecase-tabs='1']\")\r\n    ).forEach(function (track) {\r\n      if (enhanceTrack(track)) changed = true;\r\n    });\r\n\r\n    return changed;\r\n  }\r\n\r\n  function scheduleEnhance() {\r\n    if (ENHANCE_TIMER) window.clearTimeout(ENHANCE_TIMER);\r\n    ENHANCE_TIMER = window.setTimeout(function () {\r\n      ENHANCE_TIMER = null;\r\n      enhanceAll();\r\n    }, 60);\r\n  }\r\n\r\n  function bindDelegatedArrowClick() {\r\n    document.addEventListener(\"click\", function (event) {\r\n      var button = event.target && event.target.closest\r\n        ? event.target.closest(\"[data-gdx-panel-p21-6-usecase-arrow]\")\r\n        : null;\r\n\r\n      if (!button) return;\r\n\r\n      var wrapper = button.closest(\"[data-gdx-panel-p21-6-usecase-shell='1']\");\r\n      var track = wrapper ? wrapper.querySelector(\".gdx-panel-v4-usecase-tabs[data-gdx-panel-usecase-tabs='1']\") : null;\r\n\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n\r\n      scrollTrack(track, button.getAttribute(\"data-gdx-panel-p21-6-usecase-arrow\"));\r\n    }, true);\r\n  }\r\n\r\n  function startObserver() {\r\n    var r = root();\r\n    if (!r || !window.MutationObserver) return false;\r\n\r\n    if (OBSERVER) OBSERVER.disconnect();\r\n\r\n    OBSERVER = new MutationObserver(function () {\r\n      scheduleEnhance();\r\n    });\r\n\r\n    OBSERVER.observe(r, {\r\n      childList: true,\r\n      subtree: true\r\n    });\r\n\r\n    return true;\r\n  }\r\n\r\n  function boot() {\r\n    bindDelegatedArrowClick();\r\n    enhanceAll();\r\n    startObserver();\r\n\r\n    [160, 420, 900, 1600].forEach(function (delay) {\r\n      window.setTimeout(enhanceAll, delay);\r\n    });\r\n  }\r\n\r\n  ready(boot);\r\n\r\n  window.GDX_PANEL_LED_V4_P21_6_USECASE_ARROW = {\r\n    version: VERSION,\r\n    enhanceAll: enhanceAll,\r\n    debug: function () {\r\n      var r = root();\r\n      var tracks = r ? Array.prototype.slice.call(r.querySelectorAll(\".gdx-panel-v4-usecase-tabs[data-gdx-panel-usecase-tabs='1']\")) : [];\r\n      var shells = r ? Array.prototype.slice.call(r.querySelectorAll(\"[data-gdx-panel-p21-6-usecase-shell='1']\")) : [];\r\n\r\n      return {\r\n        ok: true,\r\n        version: VERSION,\r\n        trackCount: tracks.length,\r\n        shellCount: shells.length,\r\n        enhancedCount: tracks.filter(function (track) {\r\n          return track.getAttribute(\"data-gdx-panel-p21-6-enhanced\") === \"1\";\r\n        }).length,\r\n        uiVersion: window.GDX_PANEL_LED_V4_UI && window.GDX_PANEL_LED_V4_UI.version,\r\n        commerceVersion: window.GDX_PANEL_LED_V4_COMMERCE && window.GDX_PANEL_LED_V4_COMMERCE.version\r\n      };\r\n    }\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P27-11G INTEGRATION DEBUG / REGRESSION\r\n   Faz: PANEL-V4-P27-11G-INTEGRATION-DEBUG-REGRESSION-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P27-11A/B/C/D/E/F zincirini tek debug fonksiyonu alt\u0131nda kontrol eder.\r\n   - \u00DCr\u00FCn datas\u0131, registry, comment assembler, role/setup preview, render bridge ve CSS polish\r\n     durumunu birlikte raporlar.\r\n   - Skor, commerce, share, PNG/QR, recommender ve \u00FCst \u00F6neri/usecase alan\u0131na dokunmaz.\r\n\r\n   Uygulama:\r\n   - assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN SONUNA ekleyin.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P27-11G-INTEGRATION-DEBUG-REGRESSION-SAFE\";\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\"\r\n  ];\r\n\r\n  function safeCall(fn, fallback) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n    } catch (error) {\r\n      return {\r\n        ok: false,\r\n        error: error && error.message ? error.message : String(error || \"error\")\r\n      };\r\n    }\r\n    return fallback;\r\n  }\r\n\r\n  function root() {\r\n    return document.getElementById(\"gdx-panel-led-v4-root\");\r\n  }\r\n\r\n  function resultEl() {\r\n    return document.getElementById(\"gdxPanelV4ResultPreview\");\r\n  }\r\n\r\n  function productGrid() {\r\n    return document.getElementById(\"gdxPanelV4ProductGrid\");\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found;\r\n  }\r\n\r\n  function uniq(list) {\r\n    var seen = {};\r\n    return (list || []).filter(function (item) {\r\n      item = String(item || \"\");\r\n      if (!item || seen[item]) return false;\r\n      seen[item] = true;\r\n      return true;\r\n    });\r\n  }\r\n\r\n  function modulePresence() {\r\n    return {\r\n      dataRoot: !!window.GDX_PANEL_LED_V4,\r\n      compare: !!(window.GDX_PANEL_LED_V4_COMPARE && typeof window.GDX_PANEL_LED_V4_COMPARE.compareProducts === \"function\"),\r\n      commerce: !!window.GDX_PANEL_LED_V4_COMMERCE,\r\n      share: !!window.GDX_PANEL_LED_V4_SHARE,\r\n      shareCard: !!window.GDX_PANEL_LED_V4_SHARE_CARD,\r\n      derivedDataApi: !!window.GDX_PANEL_LED_V4_P27_DERIVED_DATA_API,\r\n      researchRegistry: !!window.GDX_PANEL_LED_V4_P27_RESEARCH_REGISTRY,\r\n      commentAssembler: !!window.GDX_PANEL_LED_V4_P27_COMMENT_ASSEMBLER,\r\n      roleSetupPreview: !!window.GDX_PANEL_LED_V4_P27_ROLE_SETUP_PREVIEW,\r\n      renderBridge: !!window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE\r\n    };\r\n  }\r\n\r\n  function collectDebugs() {\r\n    return {\r\n      derivedData: safeCall(function () {\r\n        return window.debugP27DerivedData ? window.debugP27DerivedData() : { ok: false, reason: \"missing debugP27DerivedData\" };\r\n      }, { ok: false }),\r\n      researchRegistry: safeCall(function () {\r\n        return window.debugP27ResearchRegistry ? window.debugP27ResearchRegistry() : { ok: false, reason: \"missing debugP27ResearchRegistry\" };\r\n      }, { ok: false }),\r\n      commentAssembler: safeCall(function () {\r\n        return window.debugP27CommentAssembler ? window.debugP27CommentAssembler() : { ok: false, reason: \"missing debugP27CommentAssembler\" };\r\n      }, { ok: false }),\r\n      roleSetupPreview: safeCall(function () {\r\n        return window.debugP27RoleSetupPreview ? window.debugP27RoleSetupPreview() : { ok: false, reason: \"missing debugP27RoleSetupPreview\" };\r\n      }, { ok: false }),\r\n      renderBridge: safeCall(function () {\r\n        return window.debugP27RenderBridge ? window.debugP27RenderBridge() : { ok: false, reason: \"missing debugP27RenderBridge\" };\r\n      }, { ok: false })\r\n    };\r\n  }\r\n\r\n  function cssPolishCheck() {\r\n    var bridge = root() ? root().querySelector('[data-gdx-panel-p27-render-bridge=\"1\"]') : null;\r\n    var firstBlock = bridge ? bridge.querySelector(\"[data-p27-block]\") : null;\r\n    var chip = bridge ? bridge.querySelector(\".gdx-p27-data-chip\") : null;\r\n    var bridgeStyle = bridge ? window.getComputedStyle(bridge) : null;\r\n    var blockStyle = firstBlock ? window.getComputedStyle(firstBlock) : null;\r\n    var chipStyle = chip ? window.getComputedStyle(chip) : null;\r\n\r\n    return {\r\n      bridgeFound: !!bridge,\r\n      blockFound: !!firstBlock,\r\n      chipFound: !!chip,\r\n      bridgeBorderRadius: bridgeStyle ? bridgeStyle.borderRadius : \"\",\r\n      blockDisplay: blockStyle ? blockStyle.display : \"\",\r\n      chipBorderRadius: chipStyle ? chipStyle.borderRadius : \"\",\r\n      likelyApplied: !!(\r\n        bridge &&\r\n        firstBlock &&\r\n        chip &&\r\n        bridgeStyle &&\r\n        blockStyle &&\r\n        chipStyle &&\r\n        bridgeStyle.borderRadius !== \"0px\" &&\r\n        (blockStyle.display === \"grid\" || blockStyle.display === \"block\") &&\r\n        chipStyle.borderRadius !== \"0px\"\r\n      )\r\n    };\r\n  }\r\n\r\n  function domSmoke() {\r\n    var r = root();\r\n    var res = resultEl();\r\n    var bridge = r ? r.querySelector('[data-gdx-panel-p27-render-bridge=\"1\"]') : null;\r\n    var bridgeBlocks = bridge ? bridge.querySelectorAll(\"[data-p27-block]\").length : 0;\r\n    var resultNav = r ? r.querySelector(\"[data-gdx-panel-result-jump-nav='1']\") : null;\r\n    var commerceMount = document.getElementById(\"gdxPanelV4CommercePreview\");\r\n    var shareMount = document.getElementById(\"gdxPanelV4SharePreview\");\r\n    var shareCardMount = document.getElementById(\"gdxPanelV4ShareCardPreview\");\r\n    var recommendationMount = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      productGridFound: !!productGrid(),\r\n      resultFound: !!res,\r\n      resultNavFound: !!resultNav,\r\n      recommendationMountFound: !!recommendationMount,\r\n      commerceMountFound: !!commerceMount,\r\n      shareMountFound: !!shareMount,\r\n      shareCardMountFound: !!shareCardMount,\r\n      p27BridgeFound: !!bridge,\r\n      p27BlockCount: bridgeBlocks,\r\n      upperRecommendationTouched: false\r\n    };\r\n  }\r\n\r\n  function protectedSystemSmoke(debugs, dom, modules) {\r\n    var dataRoot = window.GDX_PANEL_LED_V4 || {};\r\n    var state = dataRoot.state || {};\r\n    var compareResult = state.compareResult || null;\r\n\r\n    return {\r\n      productCountOk: products().length === 19,\r\n      compareReady: !!modules.compare,\r\n      commercePresent: !!modules.commerce,\r\n      sharePresent: !!modules.share,\r\n      shareCardPresent: !!modules.shareCard,\r\n      resultNavPresent: !!dom.resultNavFound,\r\n      p27BridgePresent: !!dom.p27BridgeFound,\r\n      p27BlockCountOk: dom.p27BlockCount === 7,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      upperRecommendationTouched: false,\r\n      exactM2Claims: false,\r\n      compareResultObserved: !!compareResult,\r\n      compareResultOk: compareResult ? !!compareResult.ok : null\r\n    };\r\n  }\r\n\r\n  function noTouchFlags(debugs) {\r\n    var packs = [\r\n      debugs.derivedData,\r\n      debugs.researchRegistry,\r\n      debugs.commentAssembler,\r\n      debugs.roleSetupPreview,\r\n      debugs.renderBridge\r\n    ];\r\n\r\n    return {\r\n      scoreTouched: packs.some(function (p) { return !!(p && p.scoreTouched); }),\r\n      commerceTouched: packs.some(function (p) { return !!(p && p.commerceTouched); }),\r\n      shareTouched: packs.some(function (p) { return !!(p && p.shareTouched); }),\r\n      upperRecommendationTouched: packs.some(function (p) { return !!(p && p.upperRecommendationTouched); }),\r\n      exactM2Claims: packs.some(function (p) { return !!(p && p.exactM2Claims); }),\r\n      visibleRenderTouchedOnlyByBridge: !!(debugs.renderBridge && debugs.renderBridge.visibleRenderTouched) &&\r\n        !packs.slice(0, 4).some(function (p) { return !!(p && p.visibleRenderTouched); })\r\n    };\r\n  }\r\n\r\n  function aggregateForbidden(debugs) {\r\n    var found = [];\r\n\r\n    Object.keys(debugs || {}).forEach(function (key) {\r\n      var pack = debugs[key] || {};\r\n      if (Array.isArray(pack.forbiddenFound)) found = found.concat(pack.forbiddenFound);\r\n    });\r\n\r\n    if (root()) found = found.concat(scanForbidden(root().textContent || \"\"));\r\n\r\n    return uniq(found);\r\n  }\r\n\r\n  function debug() {\r\n    var modules = modulePresence();\r\n    var debugs = collectDebugs();\r\n    var dom = domSmoke();\r\n    var css = cssPolishCheck();\r\n    var protectedSmoke = protectedSystemSmoke(debugs, dom, modules);\r\n    var noTouch = noTouchFlags(debugs);\r\n    var forbiddenFound = aggregateForbidden(debugs);\r\n    var apiChainOk =\r\n      !!modules.derivedDataApi &&\r\n      !!modules.researchRegistry &&\r\n      !!modules.commentAssembler &&\r\n      !!modules.roleSetupPreview &&\r\n      !!modules.renderBridge &&\r\n      !!debugs.derivedData.ok &&\r\n      !!debugs.researchRegistry.ok &&\r\n      !!debugs.commentAssembler.ok &&\r\n      !!debugs.roleSetupPreview.ok &&\r\n      !!debugs.renderBridge.ok;\r\n\r\n    var protectedSystemsOk =\r\n      protectedSmoke.productCountOk &&\r\n      protectedSmoke.compareReady &&\r\n      protectedSmoke.resultNavPresent &&\r\n      protectedSmoke.p27BridgePresent &&\r\n      protectedSmoke.p27BlockCountOk &&\r\n      !noTouch.scoreTouched &&\r\n      !noTouch.commerceTouched &&\r\n      !noTouch.shareTouched &&\r\n      !noTouch.upperRecommendationTouched &&\r\n      !noTouch.exactM2Claims &&\r\n      !forbiddenFound.length;\r\n\r\n    return {\r\n      ok: !!(apiChainOk && protectedSystemsOk),\r\n      version: VERSION,\r\n      apiChainOk: apiChainOk,\r\n      protectedSystemsOk: protectedSystemsOk,\r\n      modules: modules,\r\n      dom: dom,\r\n      cssPolish: css,\r\n      debugs: debugs,\r\n      noTouch: noTouch,\r\n      protectedSmoke: protectedSmoke,\r\n      productCount: products().length,\r\n      forbiddenFound: forbiddenFound,\r\n      expected: {\r\n        productCount: 19,\r\n        p27BlockCount: 7,\r\n        forbiddenFound: [],\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        upperRecommendationTouched: false,\r\n        exactM2Claims: false\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P27-12-FINAL-REGRESSION-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P27Stack = debug;\r\n  window.GDX_PANEL_LED_V4_P27_INTEGRATION_DEBUG = {\r\n    version: VERSION,\r\n    debug: debug,\r\n    scanForbidden: scanForbidden,\r\n    modulePresence: modulePresence,\r\n    cssPolishCheck: cssPolishCheck\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P28-4 SCHEMATIC INTEGRATION DEBUG / REGRESSION\r\n   Faz: PANEL-V4-P28-4-SCHEMATIC-INTEGRATION-DEBUG-REGRESSION-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P28-1 registry, P28-2 render bridge ve P28-3 CSS polish zincirini\r\n     tek debug fonksiyonunda kontrol eder.\r\n   - P27 final stack ile P28 g\u00F6r\u00FCn\u00FCr \u015Feman\u0131n birlikte sa\u011Fl\u0131kl\u0131 \u00E7al\u0131\u015Ft\u0131\u011F\u0131n\u0131 do\u011Frular.\r\n   - Skor, radar, commerce, share, PNG/QR, recommender ve \u00FCst \u00F6neri/usecase alan\u0131na dokunmaz.\r\n\r\n   Uygulama:\r\n   - assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN SONUNA ekleyin.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P28-4-SCHEMATIC-INTEGRATION-DEBUG-REGRESSION-SAFE\";\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\"\r\n  ];\r\n\r\n  function root() {\r\n    return document.getElementById(\"gdx-panel-led-v4-root\");\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function safeCall(fn, fallback) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n    } catch (error) {\r\n      return {\r\n        ok: false,\r\n        error: error && error.message ? error.message : String(error || \"error\")\r\n      };\r\n    }\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function modulePresence() {\r\n    return {\r\n      dataRoot: !!window.GDX_PANEL_LED_V4,\r\n      compare: !!(window.GDX_PANEL_LED_V4_COMPARE && typeof window.GDX_PANEL_LED_V4_COMPARE.compareProducts === \"function\"),\r\n      commerce: !!window.GDX_PANEL_LED_V4_COMMERCE,\r\n      share: !!window.GDX_PANEL_LED_V4_SHARE,\r\n      shareCard: !!window.GDX_PANEL_LED_V4_SHARE_CARD,\r\n\r\n      p27DerivedDataApi: !!window.GDX_PANEL_LED_V4_P27_DERIVED_DATA_API,\r\n      p27ResearchRegistry: !!window.GDX_PANEL_LED_V4_P27_RESEARCH_REGISTRY,\r\n      p27CommentAssembler: !!window.GDX_PANEL_LED_V4_P27_COMMENT_ASSEMBLER,\r\n      p27RoleSetupPreview: !!window.GDX_PANEL_LED_V4_P27_ROLE_SETUP_PREVIEW,\r\n      p27RenderBridge: !!window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE,\r\n\r\n      p28SchematicRegistry: !!window.GDX_PANEL_LED_V4_P28_SCHEMATIC_REGISTRY,\r\n      p28SchematicRender: !!window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER\r\n    };\r\n  }\r\n\r\n  function collectDebugs() {\r\n    return {\r\n      p27Stack: safeCall(function () {\r\n        return window.debugPanelV4P27Stack ? window.debugPanelV4P27Stack() : { ok: false, reason: \"missing debugPanelV4P27Stack\" };\r\n      }),\r\n      p28Registry: safeCall(function () {\r\n        return window.debugP28SchematicRegistry ? window.debugP28SchematicRegistry() : { ok: false, reason: \"missing debugP28SchematicRegistry\" };\r\n      }),\r\n      p28Render: safeCall(function () {\r\n        return window.debugP28SchematicRender ? window.debugP28SchematicRender() : { ok: false, reason: \"missing debugP28SchematicRender\" };\r\n      })\r\n    };\r\n  }\r\n\r\n  function domSmoke() {\r\n    var r = root();\r\n    var p27 = r ? r.querySelector('[data-gdx-panel-p27-render-bridge=\"1\"]') : null;\r\n    var p28 = r ? r.querySelector('[data-gdx-panel-p28-schematic=\"1\"]') : null;\r\n    var p28Nodes = p28 ? p28.querySelectorAll(\"[data-p28-element]\").length : 0;\r\n    var p28Steps = p28 ? p28.querySelectorAll(\".gdx-p28-schema-side li\").length : 0;\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      resultFound: !!document.getElementById(\"gdxPanelV4ResultPreview\"),\r\n      productGridFound: !!document.getElementById(\"gdxPanelV4ProductGrid\"),\r\n      resultNavFound: !!(r && r.querySelector(\"[data-gdx-panel-result-jump-nav='1']\")),\r\n      recommendationMountFound: !!document.getElementById(\"gdxPanelV4RecommendationPreview\"),\r\n      commerceMountFound: !!document.getElementById(\"gdxPanelV4CommercePreview\"),\r\n      shareMountFound: !!document.getElementById(\"gdxPanelV4SharePreview\"),\r\n      shareCardMountFound: !!document.getElementById(\"gdxPanelV4ShareCardPreview\"),\r\n      p27BridgeFound: !!p27,\r\n      p28SchematicFound: !!p28,\r\n      p28NodeCount: p28Nodes,\r\n      p28StepCount: p28Steps,\r\n      p28Template: p28 ? p28.getAttribute(\"data-p28-template\") || \"\" : \"\",\r\n      p28Format: p28 ? p28.getAttribute(\"data-p28-format\") || \"\" : \"\",\r\n      p28InsideP27: !!(p27 && p28 && p27.contains(p28)),\r\n      upperRecommendationTouched: false\r\n    };\r\n  }\r\n\r\n  function cssPolishCheck() {\r\n    var r = root();\r\n    var p28 = r ? r.querySelector('[data-gdx-panel-p28-schematic=\"1\"]') : null;\r\n    var canvas = p28 ? p28.querySelector(\".gdx-p28-schema-canvas\") : null;\r\n    var node = p28 ? p28.querySelector(\".gdx-p28-schema-node\") : null;\r\n    var side = p28 ? p28.querySelector(\".gdx-p28-schema-side\") : null;\r\n    var chip = p28 ? p28.querySelector(\".gdx-p28-schema-chips span\") : null;\r\n\r\n    var p28Style = p28 ? window.getComputedStyle(p28) : null;\r\n    var canvasStyle = canvas ? window.getComputedStyle(canvas) : null;\r\n    var nodeStyle = node ? window.getComputedStyle(node) : null;\r\n    var sideStyle = side ? window.getComputedStyle(side) : null;\r\n    var chipStyle = chip ? window.getComputedStyle(chip) : null;\r\n\r\n    return {\r\n      p28Found: !!p28,\r\n      canvasFound: !!canvas,\r\n      nodeFound: !!node,\r\n      sideFound: !!side,\r\n      chipFound: !!chip,\r\n      p28BorderRadius: p28Style ? p28Style.borderRadius : \"\",\r\n      canvasPosition: canvasStyle ? canvasStyle.position : \"\",\r\n      nodePosition: nodeStyle ? nodeStyle.position : \"\",\r\n      sideDisplay: sideStyle ? sideStyle.display : \"\",\r\n      chipBorderRadius: chipStyle ? chipStyle.borderRadius : \"\",\r\n      likelyApplied: !!(\r\n        p28 &&\r\n        canvas &&\r\n        node &&\r\n        side &&\r\n        p28Style &&\r\n        canvasStyle &&\r\n        nodeStyle &&\r\n        p28Style.borderRadius !== \"0px\" &&\r\n        canvasStyle.position === \"relative\" &&\r\n        nodeStyle.position === \"absolute\"\r\n      )\r\n    };\r\n  }\r\n\r\n  function noTouchFlags(debugs) {\r\n    var packs = [\r\n      debugs.p27Stack,\r\n      debugs.p28Registry,\r\n      debugs.p28Render\r\n    ];\r\n\r\n    return {\r\n      scoreTouched: packs.some(function (p) { return !!(p && (p.scoreTouched || (p.noTouch && p.noTouch.scoreTouched))); }),\r\n      commerceTouched: packs.some(function (p) { return !!(p && (p.commerceTouched || (p.noTouch && p.noTouch.commerceTouched))); }),\r\n      shareTouched: packs.some(function (p) { return !!(p && (p.shareTouched || (p.noTouch && p.noTouch.shareTouched))); }),\r\n      upperRecommendationTouched: packs.some(function (p) { return !!(p && (p.upperRecommendationTouched || (p.noTouch && p.noTouch.upperRecommendationTouched))); }),\r\n      exactM2Claims: packs.some(function (p) { return !!(p && (p.exactM2Claims || (p.noTouch && p.noTouch.exactM2Claims))); }),\r\n      p28VisibleRenderOnly: !!(debugs.p28Render && debugs.p28Render.visibleRenderTouched) && !!(debugs.p27Stack && debugs.p27Stack.ok)\r\n    };\r\n  }\r\n\r\n  function aggregateForbidden(debugs) {\r\n    var found = [];\r\n\r\n    Object.keys(debugs || {}).forEach(function (key) {\r\n      var pack = debugs[key] || {};\r\n      if (Array.isArray(pack.forbiddenFound)) {\r\n        found = found.concat(pack.forbiddenFound);\r\n      }\r\n    });\r\n\r\n    var r = root();\r\n    if (r) found = found.concat(scanForbidden(r.textContent || \"\"));\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function protectedSystemSmoke(modules, dom, noTouch, forbiddenFound) {\r\n    return {\r\n      productCountOk: products().length === 19,\r\n      compareReady: !!modules.compare,\r\n      commercePresent: !!modules.commerce && !!dom.commerceMountFound,\r\n      sharePresent: !!modules.share && !!dom.shareMountFound,\r\n      shareCardPresent: !!modules.shareCard && !!dom.shareCardMountFound,\r\n      recommendationPresent: !!dom.recommendationMountFound,\r\n      p27BridgePresent: !!dom.p27BridgeFound,\r\n      p28SchematicPresent: !!dom.p28SchematicFound,\r\n      p28NodeCountOk: dom.p28NodeCount >= 3,\r\n      p28StepCountOk: dom.p28StepCount === 3,\r\n      p28InsideP27: !!dom.p28InsideP27,\r\n      forbiddenClean: !forbiddenFound.length,\r\n      scoreTouched: !!noTouch.scoreTouched,\r\n      commerceTouched: !!noTouch.commerceTouched,\r\n      shareTouched: !!noTouch.shareTouched,\r\n      upperRecommendationTouched: !!noTouch.upperRecommendationTouched,\r\n      exactM2Claims: !!noTouch.exactM2Claims\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var modules = modulePresence();\r\n    var debugs = collectDebugs();\r\n    var dom = domSmoke();\r\n    var css = cssPolishCheck();\r\n    var noTouch = noTouchFlags(debugs);\r\n    var forbiddenFound = aggregateForbidden(debugs);\r\n    var protectedSmoke = protectedSystemSmoke(modules, dom, noTouch, forbiddenFound);\r\n\r\n    var apiChainOk =\r\n      !!debugs.p27Stack.ok &&\r\n      !!debugs.p28Registry.ok &&\r\n      !!debugs.p28Render.ok &&\r\n      !!modules.p28SchematicRegistry &&\r\n      !!modules.p28SchematicRender;\r\n\r\n    var visualChainOk =\r\n      dom.p27BridgeFound &&\r\n      dom.p28SchematicFound &&\r\n      dom.p28InsideP27 &&\r\n      dom.p28NodeCount >= 3 &&\r\n      dom.p28StepCount === 3 &&\r\n      css.likelyApplied;\r\n\r\n    var protectedSystemsOk =\r\n      protectedSmoke.productCountOk &&\r\n      protectedSmoke.compareReady &&\r\n      protectedSmoke.commercePresent &&\r\n      protectedSmoke.sharePresent &&\r\n      protectedSmoke.shareCardPresent &&\r\n      protectedSmoke.recommendationPresent &&\r\n      protectedSmoke.p27BridgePresent &&\r\n      protectedSmoke.p28SchematicPresent &&\r\n      protectedSmoke.p28NodeCountOk &&\r\n      protectedSmoke.p28StepCountOk &&\r\n      protectedSmoke.p28InsideP27 &&\r\n      protectedSmoke.forbiddenClean &&\r\n      !protectedSmoke.scoreTouched &&\r\n      !protectedSmoke.commerceTouched &&\r\n      !protectedSmoke.shareTouched &&\r\n      !protectedSmoke.upperRecommendationTouched &&\r\n      !protectedSmoke.exactM2Claims;\r\n\r\n    return {\r\n      ok: !!(apiChainOk && visualChainOk && protectedSystemsOk),\r\n      version: VERSION,\r\n      apiChainOk: apiChainOk,\r\n      visualChainOk: visualChainOk,\r\n      protectedSystemsOk: protectedSystemsOk,\r\n      productCount: products().length,\r\n      modules: modules,\r\n      dom: dom,\r\n      cssPolish: css,\r\n      debugs: debugs,\r\n      noTouch: noTouch,\r\n      protectedSmoke: protectedSmoke,\r\n      forbiddenFound: forbiddenFound,\r\n      expected: {\r\n        productCount: 19,\r\n        p28NodeCount: \">=3\",\r\n        p28StepCount: 3,\r\n        forbiddenFound: [],\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        upperRecommendationTouched: false,\r\n        exactM2Claims: false,\r\n        cssLikelyApplied: true\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P28-5-SCHEMATIC-FINAL-REGRESSION-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P28Stack = debug;\r\n  window.GDX_PANEL_LED_V4_P28_INTEGRATION_DEBUG = {\r\n    version: VERSION,\r\n    debug: debug,\r\n    scanForbidden: scanForbidden,\r\n    modulePresence: modulePresence,\r\n    cssPolishCheck: cssPolishCheck\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P34-1 RECOMMENDATION SETUP CANONICAL POSITION SYNC\r\n   Faz: PANEL-V4-P34-1-RECOMMENDATION-SETUP-CANONICAL-POSITION-SYNC-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P29-1 read-only API \u00E7\u0131kt\u0131s\u0131n\u0131 \u00F6nerilen \u00FCr\u00FCn kartlar\u0131n\u0131n i\u00E7ine g\u00F6r\u00FCn\u00FCr\r\n     ALT-01 \"Rol + De\u011Fer Stack Kart\u0131\" blo\u011Fu olarak ba\u011Flar.\r\n   - Her \u00F6nerilen \u00FCr\u00FCn i\u00E7in role/senaryo/mini \u015Fema/metrik de\u011Ferlerini g\u00F6sterir.\r\n   - Recommendation s\u0131ralamas\u0131na, score'a, commerce/share/PNG/QR ak\u0131\u015F\u0131na dokunmaz.\r\n\r\n   Hedef dosya:\r\n   - assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN SONUNA ekleyin.\r\n\r\n   Eklenen API:\r\n   - window.GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_RENDER\r\n   - window.debugP29RecommendationSetupRender()\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P34-1-RECOMMENDATION-SETUP-CANONICAL-POSITION-SYNC-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var REC_MOUNT_ID = \"gdxPanelV4RecommendationPreview\";\r\n  var BLOCK_ATTR = \"data-gdx-panel-p29-rec-setup\";\r\n  var OBSERVED_ATTR = \"data-gdx-panel-p29-rec-setup-observed\";\r\n\r\n  var state = {\r\n    renderCount: 0,\r\n    lastRenderAt: \"\",\r\n    lastSignature: \"\",\r\n    scheduled: false,\r\n    observerReady: false,\r\n    lastDebug: null\r\n  };\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\"\r\n  ];\r\n\r\n  function root() {\r\n    return document.getElementById(ROOT_ID);\r\n  }\r\n\r\n  function mount() {\r\n    return document.getElementById(REC_MOUNT_ID);\r\n  }\r\n\r\n  function previewApi() {\r\n    return window.GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_PREVIEW || null;\r\n  }\r\n\r\n  function p33Engine() {\r\n    return window.GDX_PANEL_LED_V4_P33_CANONICAL_SCHEMATIC_ENGINE || null;\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function normalizeKey(value) {\r\n    return String(value || \"\")\r\n      .toLocaleLowerCase(\"tr-TR\")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim()\r\n      .replace(/[^a-z0-9\u011F\u00FC\u015F\u0131\u00F6\u00E7-]+/g, \"-\")\r\n      .replace(/-+/g, \"-\")\r\n      .replace(/^-|-$/g, \"\");\r\n  }\r\n\r\n  function findProductByKey(key) {\r\n    var target = normalizeKey(key);\r\n    var list = products();\r\n\r\n    if (!target) return null;\r\n\r\n    return list.find(function (product) {\r\n      var keys = [\r\n        product && product.key,\r\n        product && product.handle,\r\n        product && product.id,\r\n        product && product.title\r\n      ].map(normalizeKey).filter(Boolean);\r\n\r\n      return keys.some(function (candidate) {\r\n        return candidate === target || candidate.indexOf(target) > -1 || target.indexOf(candidate) > -1;\r\n      });\r\n    }) || null;\r\n  }\r\n\r\n  function applyP33Canonical(cardData) {\r\n    var engine = p33Engine();\r\n    var product;\r\n    var canonical;\r\n    var dataInfluence;\r\n\r\n    cardData = cardData || {};\r\n\r\n    if (!engine || typeof engine.buildPreview !== \"function\") return cardData;\r\n\r\n    product = findProductByKey(cardData.productKey || cardData.title || \"\");\r\n    if (!product) return cardData;\r\n\r\n    canonical = engine.buildPreview(product, cardData.usecaseKey || \"content_creation_social\", { slot: \"recommendation\" });\r\n    if (!canonical || !canonical.ok) return cardData;\r\n\r\n    dataInfluence = Object.assign({}, cardData.dataInfluence || {}, {\r\n      powerW: canonical.identity && canonical.identity.powerW ? canonical.identity.powerW : (cardData.dataInfluence && cardData.dataInfluence.powerW),\r\n      hasRgb: canonical.identity && canonical.identity.family === \"RGB\" ? true : !!(cardData.dataInfluence && cardData.dataInfluence.hasRgb),\r\n      isBiColor: canonical.identity && canonical.identity.family === \"Bi-Color\" ? true : !!(cardData.dataInfluence && cardData.dataInfluence.isBiColor),\r\n      colorConfidence: canonical.identity && canonical.identity.colorConfidence ? canonical.identity.colorConfidence : (cardData.dataInfluence && cardData.dataInfluence.colorConfidence),\r\n      p33DistanceProfile: canonical.profile && canonical.profile.key ? canonical.profile.key : \"\",\r\n      p33DistanceLabel: canonical.profile && canonical.profile.label ? canonical.profile.label : \"\",\r\n      p33VisualDistanceEncoded: true\r\n    });\r\n\r\n    return Object.assign({}, cardData, {\r\n      miniSchemaNodes: canonical.elements || cardData.miniSchemaNodes,\r\n      dataInfluence: dataInfluence,\r\n      p33Canonical: canonical,\r\n      p33DistanceProfile: dataInfluence.p33DistanceProfile,\r\n      p33VisualDistanceEncoded: true,\r\n      mobileDesktopParity: true\r\n    });\r\n  }\r\n\r\n  function cleanText(value) {\r\n    return String(value === undefined || value === null ? \"\" : value).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value === undefined || value === null ? \"\" : value).replace(/[&<>\"']/g, function (char) {\r\n      return ({ \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" })[char];\r\n    });\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function isElement(node) {\r\n    return node && node.nodeType === 1;\r\n  }\r\n\r\n  function cardCandidates() {\r\n    var m = mount();\r\n    var selectors;\r\n    var cards = [];\r\n\r\n    if (!m) return [];\r\n\r\n    selectors = [\r\n      \"[data-gdx-panel-recommendation-card]\",\r\n      \".gdx-panel-v4-recommendation-card\",\r\n      \".gdx-panel-v4-reco-card\",\r\n      \".gdx-panel-v4-rec-card\",\r\n      \"[data-recommendation-card]\",\r\n      \".gdx-reco-card\",\r\n      \"article\",\r\n      \".card\"\r\n    ];\r\n\r\n    selectors.some(function (selector) {\r\n      cards = Array.prototype.slice.call(m.querySelectorAll(selector)).filter(function (card) {\r\n        return isElement(card) &&\r\n          card.getAttribute(BLOCK_ATTR) !== \"1\" &&\r\n          !card.closest(\"[\" + BLOCK_ATTR + '=\"1\"]');\r\n      });\r\n      return cards.length > 0;\r\n    });\r\n\r\n    if (!cards.length) {\r\n      cards = Array.prototype.slice.call(m.children || []).filter(function (card) {\r\n        return isElement(card) &&\r\n          card.getAttribute(BLOCK_ATTR) !== \"1\" &&\r\n          !card.closest(\"[\" + BLOCK_ATTR + '=\"1\"]');\r\n      });\r\n    }\r\n\r\n    return cards.slice(0, 6);\r\n  }\r\n\r\n  function removeOld() {\r\n    var m = mount();\r\n    if (!m) return 0;\r\n\r\n    var oldBlocks = Array.prototype.slice.call(m.querySelectorAll(\"[\" + BLOCK_ATTR + '=\"1\"]'));\r\n    oldBlocks.forEach(function (block) {\r\n      if (block && block.parentNode) block.parentNode.removeChild(block);\r\n    });\r\n\r\n    return oldBlocks.length;\r\n  }\r\n\r\n  function nodeClass(node) {\r\n    var type = String((node && (node.nodeType || node.type)) || \"\");\r\n\r\n    if (type === \"camera\") return \"is-camera\";\r\n    if (type === \"subject\") return \"is-subject\";\r\n    if (type === \"product\") return \"is-product\";\r\n    if (type === \"table\") return \"is-table\";\r\n    if (type === \"rgb\" || type === \"rgbAtmosphereLight\") return \"is-rgb\";\r\n    if (type === \"fill\" || type === \"fillLight\") return \"is-fill\";\r\n    if (type === \"accent\") return \"is-accent\";\r\n    if (type === \"key\" || type === \"keyLight\") return \"is-key\";\r\n\r\n    return \"is-key\";\r\n  }\r\n\r\n  function nodeLabel(node) {\r\n    var label = cleanText(node && node.label);\r\n    var type = String((node && node.type) || \"\");\r\n\r\n    if (label) return label;\r\n    if (type === \"camera\") return \"CAM\";\r\n    if (type === \"subject\") return \"Ki\u015Fi\";\r\n    if (type === \"product\") return \"\u00DCr\u00FCn\";\r\n    if (type === \"keyLight\") return \"KEY\";\r\n    if (type === \"fillLight\") return \"FILL\";\r\n    if (type === \"rgbAtmosphereLight\") return \"RGB\";\r\n\r\n    return \"ROL\";\r\n  }\r\n\r\n  function nodeHtml(node) {\r\n    node = node || {};\r\n\r\n    var x = Math.max(5, Math.min(95, Number(node.x || 50)));\r\n    var y = Math.max(5, Math.min(95, Number(node.y || 50)));\r\n    var meta = [node.angle, node.distance].filter(Boolean).join(\" \u00B7 \");\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p29-rec-setup-node ' + escapeHtml(nodeClass(node)) + '\" data-p29-node=\"' + escapeHtml(node.type || \"\") + '\" style=\"left:' + escapeHtml(String(x)) + '%;top:' + escapeHtml(String(y)) + '%;\">' +\r\n        '<span>' + escapeHtml(nodeLabel(node)) + '</span>' +\r\n        (meta ? '<em>' + escapeHtml(meta) + '</em>' : '') +\r\n      '</div>';\r\n  }\r\n\r\n  function metricHtml(metric) {\r\n    metric = metric || {};\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p29-rec-setup-metric\" data-p29-metric=\"' + escapeHtml(metric.label || \"\") + '\">' +\r\n        '<b>' + escapeHtml(metric.label || \"\") + '</b>' +\r\n        '<span>' + escapeHtml(metric.value || \"\") + '</span>' +\r\n      '</div>';\r\n  }\r\n\r\n  function cardHtml(cardData, index) {\r\n    cardData = applyP33Canonical(cardData || {});\r\n\r\n    var nodes = Array.isArray(cardData.miniSchemaNodes) ? cardData.miniSchemaNodes.slice(0, 6) : [];\r\n    var metrics = Array.isArray(cardData.visibleMetrics) ? cardData.visibleMetrics.slice(0, 3) : [];\r\n    var chips = [];\r\n\r\n    if (cardData.dataInfluence) {\r\n      if (cardData.dataInfluence.powerW) chips.push(cardData.dataInfluence.powerW + \"W\");\r\n      if (cardData.dataInfluence.hasRgb) chips.push(\"RGB\");\r\n      if (cardData.dataInfluence.isBiColor) chips.push(\"Bi-Color\");\r\n      if (cardData.dataInfluence.powerBand) chips.push(cardData.dataInfluence.powerBand);\r\n      if (cardData.dataInfluence.p33DistanceLabel) chips.push(cardData.dataInfluence.p33DistanceLabel);\r\n    }\r\n\r\n    return '' +\r\n      '<section class=\"gdx-p29-rec-setup-card\" ' + BLOCK_ATTR + '=\"1\" data-p29-version=\"' + escapeHtml(VERSION) + '\" data-p29-product-key=\"' + escapeHtml(cardData.productKey || \"\") + '\" data-p29-index=\"' + escapeHtml(String(index || 0)) + '\" data-p33-canonical=\"' + (cardData.p33Canonical ? \"1\" : \"0\") + '\" data-p33-profile=\"' + escapeHtml(cardData.p33DistanceProfile || \"\") + '\">' +\r\n        '<div class=\"gdx-p29-rec-setup-head\">' +\r\n          '<div>' +\r\n            '<span class=\"gdx-p29-rec-setup-kicker\">SETUP SENARYOSU</span>' +\r\n            '<strong>' + escapeHtml(cardData.roleLabel || \"Setup Rol\u00FC\") + '</strong>' +\r\n            '<p>' + escapeHtml(cardData.scenarioSummary || \"\") + '</p>' +\r\n          '</div>' +\r\n          '<div class=\"gdx-p29-rec-setup-fit\">' + escapeHtml(cardData.fitLabel || \"Uygun\") + '</div>' +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-p29-rec-setup-chips\">' +\r\n          chips.slice(0, 4).map(function (chip) { return '<span>' + escapeHtml(chip) + '</span>'; }).join(\"\") +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-p29-rec-setup-canvas\" data-p33-reco-canvas=\"' + (cardData.p33Canonical ? \"1\" : \"0\") + '\">' +\r\n          nodes.map(nodeHtml).join(\"\") +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-p29-rec-setup-metrics\">' +\r\n          metrics.map(metricHtml).join(\"\") +\r\n        '</div>' +\r\n\r\n        (cardData.p33DistanceProfile ? '<p class=\"gdx-p29-rec-setup-band\">\u015Eema mesafesi: ' + escapeHtml(cardData.dataInfluence && cardData.dataInfluence.p33DistanceLabel || cardData.p33DistanceProfile) + ' band</p>' : '') +\r\n\r\n        (cardData.safeNote ? '<p class=\"gdx-p29-rec-setup-note\">' + escapeHtml(cardData.safeNote) + '</p>' : '') +\r\n      '</section>';\r\n  }\r\n\r\n  function buildPreview() {\r\n    var api = previewApi();\r\n\r\n    if (!api || typeof api.buildPreviewForRecommendations !== \"function\") {\r\n      return {\r\n        ok: false,\r\n        reason: \"P29-1 preview API missing\",\r\n        cards: []\r\n      };\r\n    }\r\n\r\n    return api.buildPreviewForRecommendations({\r\n      maxCards: 3,\r\n      viewportMode: window.innerWidth <= 749 ? \"mobile\" : \"desktop\"\r\n    });\r\n  }\r\n\r\n  function signatureOf(preview, cards) {\r\n    return JSON.stringify({\r\n      version: VERSION,\r\n      cardCount: preview && preview.cards ? preview.cards.length : 0,\r\n      keys: (preview && preview.cards ? preview.cards : []).map(function (c) {\r\n        var cc = applyP33Canonical(c);\r\n        return cc.productKey + \"::\" + cc.roleKey + \"::\" + cc.scenarioSummary + \"::\" + (cc.p33DistanceProfile || \"\");\r\n      }),\r\n      domCount: cards ? cards.length : 0,\r\n      viewport: window.innerWidth <= 749 ? \"mobile\" : \"desktop\"\r\n    });\r\n  }\r\n\r\n  function insertIntoDom(preview) {\r\n    var cards = cardCandidates();\r\n    var dataCards = preview && Array.isArray(preview.cards) ? preview.cards : [];\r\n    var signature = signatureOf(preview, cards);\r\n    var inserted = 0;\r\n    var forbiddenFound = [];\r\n    var htmlText;\r\n\r\n    if (!mount()) {\r\n      return { ok: false, reason: \"recommendation mount missing\", inserted: 0, cardsFound: 0 };\r\n    }\r\n\r\n    if (!dataCards.length) {\r\n      removeOld();\r\n      return { ok: false, reason: \"no preview cards\", inserted: 0, cardsFound: cards.length };\r\n    }\r\n\r\n    htmlText = JSON.stringify(dataCards);\r\n    forbiddenFound = scanForbidden(htmlText);\r\n    if (forbiddenFound.length) {\r\n      removeOld();\r\n      return { ok: false, reason: \"forbidden guard\", inserted: 0, cardsFound: cards.length, forbiddenFound: forbiddenFound };\r\n    }\r\n\r\n    if (state.lastSignature === signature && mount().querySelectorAll(\"[\" + BLOCK_ATTR + '=\"1\"]').length) {\r\n      return { ok: true, reason: \"unchanged\", inserted: mount().querySelectorAll(\"[\" + BLOCK_ATTR + '=\"1\"]').length, cardsFound: cards.length };\r\n    }\r\n\r\n    removeOld();\r\n\r\n    if (cards.length) {\r\n      dataCards.slice(0, cards.length).forEach(function (cardData, index) {\r\n        var holder = document.createElement(\"div\");\r\n        holder.innerHTML = cardHtml(cardData, index);\r\n        cards[index].appendChild(holder.firstChild);\r\n        inserted += 1;\r\n      });\r\n    } else {\r\n      var fallback = document.createElement(\"div\");\r\n      fallback.className = \"gdx-p29-rec-setup-fallback-list\";\r\n      fallback.setAttribute(\"data-gdx-panel-p29-rec-setup-list\", \"1\");\r\n      fallback.innerHTML = dataCards.map(cardHtml).join(\"\");\r\n      mount().appendChild(fallback);\r\n      inserted = dataCards.length;\r\n    }\r\n\r\n    state.lastSignature = signature;\r\n    state.renderCount += inserted ? 1 : 0;\r\n    state.lastRenderAt = inserted ? new Date().toISOString() : state.lastRenderAt;\r\n\r\n    return {\r\n      ok: inserted > 0,\r\n      inserted: inserted,\r\n      cardsFound: cards.length,\r\n      previewCardCount: dataCards.length,\r\n      forbiddenFound: []\r\n    };\r\n  }\r\n\r\n  function render() {\r\n    var preview = buildPreview();\r\n    var result = insertIntoDom(preview);\r\n\r\n    state.lastDebug = {\r\n      ok: !!result.ok,\r\n      version: VERSION,\r\n      previewOk: !!(preview && preview.ok),\r\n      productCount: preview && preview.productCount ? preview.productCount : 0,\r\n      previewCardCount: preview && preview.cardCount ? preview.cardCount : 0,\r\n      insertedCount: result.inserted || 0,\r\n      cardsFound: result.cardsFound || 0,\r\n      selectedTemplateKey: preview && preview.selectedTemplateKey ? preview.selectedTemplateKey : \"\",\r\n      reason: result.reason || \"\",\r\n      forbiddenFound: result.forbiddenFound || [],\r\n      exactM2Claims: false,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      visibleRenderTouched: !!result.ok,\r\n      upperRecommendationTouched: false\r\n    };\r\n\r\n    return !!result.ok;\r\n  }\r\n\r\n  function schedule() {\r\n    if (state.scheduled) return;\r\n    state.scheduled = true;\r\n\r\n    window.setTimeout(function () {\r\n      state.scheduled = false;\r\n      render();\r\n    }, 220);\r\n  }\r\n\r\n  function observe() {\r\n    var m = mount();\r\n    var observer;\r\n\r\n    if (!m || m.getAttribute(OBSERVED_ATTR) === \"1\") return false;\r\n\r\n    m.setAttribute(OBSERVED_ATTR, \"1\");\r\n\r\n    observer = new MutationObserver(function (mutations) {\r\n      var hasExternalChange = mutations.some(function (mutation) {\r\n        return Array.prototype.slice.call(mutation.addedNodes || []).concat(Array.prototype.slice.call(mutation.removedNodes || [])).some(function (node) {\r\n          return isElement(node) && !(node.getAttribute && node.getAttribute(BLOCK_ATTR) === \"1\") && !(node.closest && node.closest(\"[\" + BLOCK_ATTR + '=\"1\"]'));\r\n        });\r\n      });\r\n\r\n      if (hasExternalChange) {\r\n        state.lastSignature = \"\";\r\n        schedule();\r\n      }\r\n    });\r\n\r\n    observer.observe(m, { childList: true, subtree: true });\r\n\r\n    state.observerReady = true;\r\n    return true;\r\n  }\r\n\r\n  function boot() {\r\n    [180, 520, 980, 1600, 2600].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        observe();\r\n        schedule();\r\n      }, delay);\r\n    });\r\n\r\n    document.addEventListener(\"click\", function () {\r\n      window.setTimeout(function () {\r\n        observe();\r\n        schedule();\r\n      }, 260);\r\n    }, true);\r\n\r\n    window.addEventListener(\"resize\", function () {\r\n      state.lastSignature = \"\";\r\n      window.setTimeout(schedule, 180);\r\n    });\r\n  }\r\n\r\n  function debug() {\r\n    var preview = buildPreview();\r\n    var blocks = mount() ? Array.prototype.slice.call(mount().querySelectorAll(\"[\" + BLOCK_ATTR + '=\"1\"]')) : [];\r\n    var first = blocks[0] || null;\r\n    var forbiddenFound = [];\r\n\r\n    blocks.forEach(function (block) {\r\n      forbiddenFound = forbiddenFound.concat(scanForbidden(block.textContent || \"\"));\r\n    });\r\n\r\n    forbiddenFound = forbiddenFound.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n\r\n    return {\r\n      ok: !!(preview && preview.ok && blocks.length && !forbiddenFound.length),\r\n      version: VERSION,\r\n      previewApiReady: !!previewApi(),\r\n      recommendationMountFound: !!mount(),\r\n      previewOk: !!(preview && preview.ok),\r\n      productCount: preview && preview.productCount ? preview.productCount : 0,\r\n      previewCardCount: preview && preview.cardCount ? preview.cardCount : 0,\r\n      renderedBlockCount: blocks.length,\r\n      firstBlockMetricCount: first ? first.querySelectorAll(\".gdx-p29-rec-setup-metric\").length : 0,\r\n      firstBlockNodeCount: first ? first.querySelectorAll(\".gdx-p29-rec-setup-node\").length : 0,\r\n      p33EngineReady: !!p33Engine(),\r\n      p33CanonicalBlockCount: mount() ? mount().querySelectorAll(\"[\" + BLOCK_ATTR + '=\"1\"][data-p33-canonical=\"1\"]').length : 0,\r\n      p33ProfileValues: mount() ? Array.prototype.slice.call(mount().querySelectorAll(\"[\" + BLOCK_ATTR + '=\"1\"]')).map(function (block) { return block.getAttribute(\"data-p33-profile\") || \"\"; }) : [],\r\n      p33RecoCanvasCount: mount() ? mount().querySelectorAll(\"[data-p33-reco-canvas='1']\").length : 0,\r\n      selectedTemplateKey: preview && preview.selectedTemplateKey ? preview.selectedTemplateKey : \"\",\r\n      observerReady: state.observerReady,\r\n      renderCount: state.renderCount,\r\n      lastRenderAt: state.lastRenderAt,\r\n      forbiddenFound: forbiddenFound,\r\n      exactM2Claims: false,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      visibleRenderTouched: blocks.length > 0,\r\n      upperRecommendationTouched: false,\r\n      lastDebug: state.lastDebug\r\n    };\r\n  }\r\n\r\n  var API = {\r\n    version: VERSION,\r\n    render: render,\r\n    schedule: schedule,\r\n    debug: debug,\r\n    buildPreview: buildPreview,\r\n    scanForbidden: scanForbidden\r\n  };\r\n\r\n  window.GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_RENDER = API;\r\n  window.debugP29RecommendationSetupRender = debug;\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\"DOMContentLoaded\", boot, { once: true });\r\n  } else {\r\n    boot();\r\n  }\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P29-4 RECOMMENDATION SETUP INTEGRATION DEBUG\r\n   Faz: PANEL-V4-P29-4-RECOMMENDATION-SETUP-INTEGRATION-DEBUG-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P29-1 preview API, P29-2 render bridge ve P29-3 CSS polish zincirini\r\n     tek debug fonksiyonunda do\u011Frular.\r\n   - P28 stack, recommendation mount, commerce/share/score no-touch ve\r\n     forbidden copy guardlar\u0131n\u0131 birlikte kontrol eder.\r\n   - UI render de\u011Fi\u015Ftirmez; mevcut P29 render \u00E7\u0131kt\u0131lar\u0131n\u0131 sadece okur.\r\n\r\n   Hedef dosya:\r\n   - assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN SONUNA ekleyin.\r\n\r\n   Eklenen API:\r\n   - window.debugPanelV4P29Stack()\r\n   - window.GDX_PANEL_LED_V4_P29_INTEGRATION_DEBUG\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P29-4-RECOMMENDATION-SETUP-INTEGRATION-DEBUG-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var REC_MOUNT_ID = \"gdxPanelV4RecommendationPreview\";\r\n  var P29_BLOCK_SELECTOR = '[data-gdx-panel-p29-rec-setup=\"1\"]';\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\"\r\n  ];\r\n\r\n  function root() {\r\n    return document.getElementById(ROOT_ID);\r\n  }\r\n\r\n  function mount() {\r\n    return document.getElementById(REC_MOUNT_ID);\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function safeCall(fn, fallback) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n    } catch (error) {\r\n      return {\r\n        ok: false,\r\n        error: error && error.message ? error.message : String(error || \"error\")\r\n      };\r\n    }\r\n\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function modulePresence() {\r\n    return {\r\n      dataRoot: !!window.GDX_PANEL_LED_V4,\r\n      compare: !!(window.GDX_PANEL_LED_V4_COMPARE && typeof window.GDX_PANEL_LED_V4_COMPARE.compareProducts === \"function\"),\r\n      commerce: !!window.GDX_PANEL_LED_V4_COMMERCE,\r\n      share: !!window.GDX_PANEL_LED_V4_SHARE,\r\n      shareCard: !!window.GDX_PANEL_LED_V4_SHARE_CARD,\r\n\r\n      p28Registry: !!window.GDX_PANEL_LED_V4_P28_SCHEMATIC_REGISTRY,\r\n      p28Render: !!window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER,\r\n      p28Debug: !!window.debugPanelV4P28Stack,\r\n\r\n      p29Preview: !!window.GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_PREVIEW,\r\n      p29Render: !!window.GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_RENDER,\r\n      p29PreviewDebug: !!window.debugP29RecommendationSetupPreview,\r\n      p29RenderDebug: !!window.debugP29RecommendationSetupRender\r\n    };\r\n  }\r\n\r\n  function collectDebugs() {\r\n    return {\r\n      p28Stack: safeCall(function () {\r\n        return window.debugPanelV4P28Stack ? window.debugPanelV4P28Stack() : { ok: false, reason: \"missing debugPanelV4P28Stack\" };\r\n      }),\r\n      p29Preview: safeCall(function () {\r\n        return window.debugP29RecommendationSetupPreview ? window.debugP29RecommendationSetupPreview() : { ok: false, reason: \"missing debugP29RecommendationSetupPreview\" };\r\n      }),\r\n      p29Render: safeCall(function () {\r\n        return window.debugP29RecommendationSetupRender ? window.debugP29RecommendationSetupRender() : { ok: false, reason: \"missing debugP29RecommendationSetupRender\" };\r\n      })\r\n    };\r\n  }\r\n\r\n  function domSmoke() {\r\n    var r = root();\r\n    var m = mount();\r\n    var blocks = m ? Array.prototype.slice.call(m.querySelectorAll(P29_BLOCK_SELECTOR)) : [];\r\n    var first = blocks[0] || null;\r\n    var p29InsideRecommendation = blocks.every(function (block) {\r\n      return !!(m && m.contains(block));\r\n    });\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      recommendationMountFound: !!m,\r\n      recommendationBlockCount: blocks.length,\r\n      p29InsideRecommendation: p29InsideRecommendation,\r\n      firstBlockMetricCount: first ? first.querySelectorAll(\".gdx-p29-rec-setup-metric\").length : 0,\r\n      firstBlockNodeCount: first ? first.querySelectorAll(\".gdx-p29-rec-setup-node\").length : 0,\r\n      firstBlockCanvasFound: !!(first && first.querySelector(\".gdx-p29-rec-setup-canvas\")),\r\n      firstBlockFitFound: !!(first && first.querySelector(\".gdx-p29-rec-setup-fit\")),\r\n      commerceMountFound: !!document.getElementById(\"gdxPanelV4CommercePreview\"),\r\n      shareMountFound: !!document.getElementById(\"gdxPanelV4SharePreview\"),\r\n      shareCardMountFound: !!document.getElementById(\"gdxPanelV4ShareCardPreview\"),\r\n      resultFound: !!document.getElementById(\"gdxPanelV4ResultPreview\")\r\n    };\r\n  }\r\n\r\n  function cssPolishCheck() {\r\n    var m = mount();\r\n    var block = m ? m.querySelector(P29_BLOCK_SELECTOR) : null;\r\n    var canvas = block ? block.querySelector(\".gdx-p29-rec-setup-canvas\") : null;\r\n    var node = block ? block.querySelector(\".gdx-p29-rec-setup-node\") : null;\r\n    var metric = block ? block.querySelector(\".gdx-p29-rec-setup-metric\") : null;\r\n    var fit = block ? block.querySelector(\".gdx-p29-rec-setup-fit\") : null;\r\n    var styleBlock = block ? window.getComputedStyle(block) : null;\r\n    var styleCanvas = canvas ? window.getComputedStyle(canvas) : null;\r\n    var styleNode = node ? window.getComputedStyle(node) : null;\r\n    var styleMetric = metric ? window.getComputedStyle(metric) : null;\r\n    var styleFit = fit ? window.getComputedStyle(fit) : null;\r\n\r\n    return {\r\n      blockFound: !!block,\r\n      canvasFound: !!canvas,\r\n      nodeFound: !!node,\r\n      metricFound: !!metric,\r\n      fitFound: !!fit,\r\n      blockBorderRadius: styleBlock ? styleBlock.borderRadius : \"\",\r\n      canvasPosition: styleCanvas ? styleCanvas.position : \"\",\r\n      nodePosition: styleNode ? styleNode.position : \"\",\r\n      metricDisplay: styleMetric ? styleMetric.display : \"\",\r\n      fitDisplay: styleFit ? styleFit.display : \"\",\r\n      likelyApplied: !!(\r\n        block &&\r\n        canvas &&\r\n        node &&\r\n        metric &&\r\n        styleBlock &&\r\n        styleCanvas &&\r\n        styleNode &&\r\n        styleMetric &&\r\n        styleBlock.borderRadius !== \"0px\" &&\r\n        styleCanvas.position === \"relative\" &&\r\n        styleNode.position === \"absolute\" &&\r\n        (styleMetric.display === \"grid\" || styleMetric.display === \"flex\")\r\n      )\r\n    };\r\n  }\r\n\r\n  function aggregateForbidden(debugs, dom) {\r\n    var found = [];\r\n    var m = mount();\r\n\r\n    Object.keys(debugs || {}).forEach(function (key) {\r\n      var pack = debugs[key] || {};\r\n      if (Array.isArray(pack.forbiddenFound)) found = found.concat(pack.forbiddenFound);\r\n    });\r\n\r\n    if (m) {\r\n      Array.prototype.slice.call(m.querySelectorAll(P29_BLOCK_SELECTOR)).forEach(function (block) {\r\n        found = found.concat(scanForbidden(block.textContent || \"\"));\r\n      });\r\n    }\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function noTouchFlags(debugs) {\r\n    var packs = [\r\n      debugs.p28Stack,\r\n      debugs.p29Preview,\r\n      debugs.p29Render\r\n    ];\r\n\r\n    return {\r\n      scoreTouched: packs.some(function (p) { return !!(p && p.scoreTouched); }),\r\n      commerceTouched: packs.some(function (p) { return !!(p && p.commerceTouched); }),\r\n      shareTouched: packs.some(function (p) { return !!(p && p.shareTouched); }),\r\n      recommendationRankingTouched: packs.some(function (p) { return !!(p && p.recommendationRankingTouched); }),\r\n      upperRecommendationTouched: packs.some(function (p) { return !!(p && p.upperRecommendationTouched); }),\r\n      exactM2Claims: packs.some(function (p) { return !!(p && p.exactM2Claims); }),\r\n      visibleRenderTouched: !!(debugs.p29Render && debugs.p29Render.visibleRenderTouched)\r\n    };\r\n  }\r\n\r\n  function protectedSystemSmoke(modules, dom, noTouch, forbiddenFound) {\r\n    return {\r\n      productCountOk: products().length === 19,\r\n      compareReady: !!modules.compare,\r\n      commercePresent: !!modules.commerce && !!dom.commerceMountFound,\r\n      sharePresent: !!modules.share && !!dom.shareMountFound,\r\n      shareCardPresent: !!modules.shareCard && !!dom.shareCardMountFound,\r\n      recommendationMountPresent: !!dom.recommendationMountFound,\r\n      p29BlocksPresent: dom.recommendationBlockCount >= 1,\r\n      p29BlocksExpectedRange: dom.recommendationBlockCount >= 1 && dom.recommendationBlockCount <= 3,\r\n      p29InsideRecommendation: !!dom.p29InsideRecommendation,\r\n      metricCountOk: dom.firstBlockMetricCount >= 1 && dom.firstBlockMetricCount <= 3,\r\n      nodeCountOk: dom.firstBlockNodeCount >= 3,\r\n      canvasFound: !!dom.firstBlockCanvasFound,\r\n      fitFound: !!dom.firstBlockFitFound,\r\n      forbiddenClean: !forbiddenFound.length,\r\n      scoreTouched: !!noTouch.scoreTouched,\r\n      commerceTouched: !!noTouch.commerceTouched,\r\n      shareTouched: !!noTouch.shareTouched,\r\n      recommendationRankingTouched: !!noTouch.recommendationRankingTouched,\r\n      upperRecommendationTouched: !!noTouch.upperRecommendationTouched,\r\n      exactM2Claims: !!noTouch.exactM2Claims\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var modules = modulePresence();\r\n    var debugs = collectDebugs();\r\n    var dom = domSmoke();\r\n    var css = cssPolishCheck();\r\n    var noTouch = noTouchFlags(debugs);\r\n    var forbiddenFound = aggregateForbidden(debugs, dom);\r\n    var protectedSmoke = protectedSystemSmoke(modules, dom, noTouch, forbiddenFound);\r\n\r\n    var apiChainOk =\r\n      !!modules.p29Preview &&\r\n      !!modules.p29Render &&\r\n      !!debugs.p29Preview.ok &&\r\n      !!debugs.p29Render.ok;\r\n\r\n    var visualChainOk =\r\n      !!dom.recommendationMountFound &&\r\n      dom.recommendationBlockCount >= 1 &&\r\n      dom.recommendationBlockCount <= 3 &&\r\n      !!dom.p29InsideRecommendation &&\r\n      dom.firstBlockNodeCount >= 3 &&\r\n      dom.firstBlockMetricCount >= 1 &&\r\n      dom.firstBlockMetricCount <= 3 &&\r\n      !!css.likelyApplied;\r\n\r\n    var protectedSystemsOk =\r\n      protectedSmoke.productCountOk &&\r\n      protectedSmoke.compareReady &&\r\n      protectedSmoke.commercePresent &&\r\n      protectedSmoke.sharePresent &&\r\n      protectedSmoke.shareCardPresent &&\r\n      protectedSmoke.recommendationMountPresent &&\r\n      protectedSmoke.p29BlocksPresent &&\r\n      protectedSmoke.p29BlocksExpectedRange &&\r\n      protectedSmoke.p29InsideRecommendation &&\r\n      protectedSmoke.metricCountOk &&\r\n      protectedSmoke.nodeCountOk &&\r\n      protectedSmoke.canvasFound &&\r\n      protectedSmoke.fitFound &&\r\n      protectedSmoke.forbiddenClean &&\r\n      !protectedSmoke.scoreTouched &&\r\n      !protectedSmoke.commerceTouched &&\r\n      !protectedSmoke.shareTouched &&\r\n      !protectedSmoke.recommendationRankingTouched &&\r\n      !protectedSmoke.upperRecommendationTouched &&\r\n      !protectedSmoke.exactM2Claims;\r\n\r\n    return {\r\n      ok: !!(apiChainOk && visualChainOk && protectedSystemsOk),\r\n      version: VERSION,\r\n      apiChainOk: apiChainOk,\r\n      visualChainOk: visualChainOk,\r\n      protectedSystemsOk: protectedSystemsOk,\r\n      productCount: products().length,\r\n      modules: modules,\r\n      dom: dom,\r\n      cssPolish: css,\r\n      debugs: debugs,\r\n      noTouch: noTouch,\r\n      protectedSmoke: protectedSmoke,\r\n      forbiddenFound: forbiddenFound,\r\n      expected: {\r\n        productCount: 19,\r\n        renderedBlockCount: \"1-3\",\r\n        firstBlockMetricCount: \"1-3\",\r\n        firstBlockNodeCount: \">=3\",\r\n        cssLikelyApplied: true,\r\n        forbiddenFound: [],\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        recommendationRankingTouched: false,\r\n        upperRecommendationTouched: false,\r\n        exactM2Claims: false\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P29-5-RECOMMENDATION-SETUP-FINAL-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P29Stack = debug;\r\n  window.GDX_PANEL_LED_V4_P29_INTEGRATION_DEBUG = {\r\n    version: VERSION,\r\n    debug: debug,\r\n    scanForbidden: scanForbidden,\r\n    modulePresence: modulePresence,\r\n    cssPolishCheck: cssPolishCheck\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P30-4 SETUP VALUE SOURCE INTEGRATION DEBUG\r\n   Faz: PANEL-V4-P30-4-SETUP-VALUE-SOURCE-INTEGRATION-DEBUG-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P30-1 source label API, P30-2 render bridge ve P30-3 CSS polish zincirini\r\n     tek debug fonksiyonunda do\u011Frular.\r\n   - P28 ana \u015Fema ve P29 \u00F6nerilen \u00FCr\u00FCn setup kartlar\u0131ndaki kaynak notlar\u0131n\u0131\r\n     sayar, CSS polish uygulanm\u0131\u015F m\u0131 kontrol eder.\r\n   - Score, recommender ranking, commerce, share, PNG/QR ve \u00FCst usecase alan\u0131\r\n     no-touch durumunu do\u011Frular.\r\n   - UI render de\u011Fi\u015Ftirmez; sadece okuma/debug yapar.\r\n\r\n   Hedef dosya:\r\n   - assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN SONUNA ekleyin.\r\n\r\n   Eklenen API:\r\n   - window.debugPanelV4P30Stack()\r\n   - window.GDX_PANEL_LED_V4_P30_INTEGRATION_DEBUG\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P30-4-SETUP-VALUE-SOURCE-INTEGRATION-DEBUG-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var P30_NOTE_SELECTOR = \"[data-gdx-panel-p30-source-note]\";\r\n  var P28_NOTE_SELECTOR = '[data-gdx-panel-p30-source-note=\"p28\"]';\r\n  var P29_NOTE_SELECTOR = '[data-gdx-panel-p30-source-note=\"p29\"]';\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"kesin mesafe\",\r\n    \"garanti ayd\u0131nlat\u0131r\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"ger\u00E7ek lumen sonucu\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\"\r\n  ];\r\n\r\n  function root() {\r\n    return document.getElementById(ROOT_ID);\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function safeCall(fn, fallback) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n    } catch (error) {\r\n      return {\r\n        ok: false,\r\n        error: error && error.message ? error.message : String(error || \"error\")\r\n      };\r\n    }\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function modulePresence() {\r\n    return {\r\n      dataRoot: !!window.GDX_PANEL_LED_V4,\r\n      compare: !!(window.GDX_PANEL_LED_V4_COMPARE && typeof window.GDX_PANEL_LED_V4_COMPARE.compareProducts === \"function\"),\r\n      commerce: !!window.GDX_PANEL_LED_V4_COMMERCE,\r\n      share: !!window.GDX_PANEL_LED_V4_SHARE,\r\n      shareCard: !!window.GDX_PANEL_LED_V4_SHARE_CARD,\r\n\r\n      p28Stack: !!window.debugPanelV4P28Stack,\r\n      p29Stack: !!window.debugPanelV4P29Stack,\r\n\r\n      p30SourceLabel: !!window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_LABEL,\r\n      p30SourceRender: !!window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER,\r\n      p30SourceLabelDebug: !!window.debugP30SetupValueSourceLabel,\r\n      p30SourceRenderDebug: !!window.debugP30SetupValueSourceRender\r\n    };\r\n  }\r\n\r\n  function collectDebugs() {\r\n    return {\r\n      p28Stack: safeCall(function () {\r\n        return window.debugPanelV4P28Stack ? window.debugPanelV4P28Stack() : { ok: false, reason: \"missing debugPanelV4P28Stack\" };\r\n      }),\r\n      p29Stack: safeCall(function () {\r\n        return window.debugPanelV4P29Stack ? window.debugPanelV4P29Stack() : { ok: false, reason: \"missing debugPanelV4P29Stack\" };\r\n      }),\r\n      p30Label: safeCall(function () {\r\n        return window.debugP30SetupValueSourceLabel ? window.debugP30SetupValueSourceLabel() : { ok: false, reason: \"missing debugP30SetupValueSourceLabel\" };\r\n      }),\r\n      p30Render: safeCall(function () {\r\n        return window.debugP30SetupValueSourceRender ? window.debugP30SetupValueSourceRender() : { ok: false, reason: \"missing debugP30SetupValueSourceRender\" };\r\n      })\r\n    };\r\n  }\r\n\r\n  function domSmoke() {\r\n    var r = root();\r\n    var notes = r ? Array.prototype.slice.call(r.querySelectorAll(P30_NOTE_SELECTOR)) : [];\r\n    var p28Notes = r ? Array.prototype.slice.call(r.querySelectorAll(P28_NOTE_SELECTOR)) : [];\r\n    var p29Notes = r ? Array.prototype.slice.call(r.querySelectorAll(P29_NOTE_SELECTOR)) : [];\r\n    var first = notes[0] || null;\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      p28SchematicFound: !!(r && r.querySelector('[data-gdx-panel-p28-schematic=\"1\"]')),\r\n      p29RecommendationMountFound: !!document.getElementById(\"gdxPanelV4RecommendationPreview\"),\r\n      p29SetupBlockCount: r ? r.querySelectorAll('[data-gdx-panel-p29-rec-setup=\"1\"]').length : 0,\r\n\r\n      noteCount: notes.length,\r\n      p28NoteCount: p28Notes.length,\r\n      p29NoteCount: p29Notes.length,\r\n      primaryCopyFound: notes.some(function (note) {\r\n        return (note.textContent || \"\").indexOf(\"Setup \u00E7al\u0131\u015Fma aral\u0131\u011F\u0131; \u00FCr\u00FCn g\u00FCc\u00FC, \u0131\u015F\u0131k g\u00F6revi ve kullan\u0131m senaryosuna g\u00F6re \u00F6nerilir.\") > -1;\r\n      }),\r\n      detailsCount: notes.filter(function (note) { return !!note.querySelector(\"details\"); }).length,\r\n      detailsFound: notes.some(function (note) { return !!note.querySelector(\"details\"); }),\r\n      sourceListCount: notes.filter(function (note) { return !!note.querySelector('[data-gdx-panel-p30-source-note-list=\"1\"]'); }).length,\r\n      firstNoteFound: !!first,\r\n      firstNoteTextLength: first ? (first.textContent || \"\").length : 0,\r\n\r\n      commerceMountFound: !!document.getElementById(\"gdxPanelV4CommercePreview\"),\r\n      shareMountFound: !!document.getElementById(\"gdxPanelV4SharePreview\"),\r\n      shareCardMountFound: !!document.getElementById(\"gdxPanelV4ShareCardPreview\"),\r\n      resultFound: !!document.getElementById(\"gdxPanelV4ResultPreview\")\r\n    };\r\n  }\r\n\r\n  function cssPolishCheck() {\r\n    var r = root();\r\n    var note = r ? r.querySelector(P30_NOTE_SELECTOR) : null;\r\n    var main = note ? note.querySelector(\".gdx-p30-source-note-main\") : null;\r\n    var icon = note ? note.querySelector(\".gdx-p30-source-note-icon\") : null;\r\n    var text = note ? note.querySelector(\".gdx-p30-source-note-text\") : null;\r\n    var details = note ? note.querySelector(\".gdx-p30-source-note-details\") : null;\r\n    var list = note ? note.querySelector('[data-gdx-panel-p30-source-note-list=\"1\"]') : null;\r\n\r\n    var noteStyle = note ? window.getComputedStyle(note) : null;\r\n    var mainStyle = main ? window.getComputedStyle(main) : null;\r\n    var iconStyle = icon ? window.getComputedStyle(icon) : null;\r\n    var textStyle = text ? window.getComputedStyle(text) : null;\r\n    var detailsStyle = details ? window.getComputedStyle(details) : null;\r\n    var listStyle = list ? window.getComputedStyle(list) : null;\r\n\r\n    return {\r\n      noteFound: !!note,\r\n      mainFound: !!main,\r\n      iconFound: !!icon,\r\n      textFound: !!text,\r\n      detailsFound: !!details,\r\n      listFound: !!list,\r\n      noteBorderRadius: noteStyle ? noteStyle.borderRadius : \"\",\r\n      mainDisplay: mainStyle ? mainStyle.display : \"\",\r\n      iconDisplay: iconStyle ? iconStyle.display : \"\",\r\n      textDisplay: textStyle ? textStyle.display : \"\",\r\n      detailsDisplay: detailsStyle ? detailsStyle.display : \"\",\r\n      listDisplay: listStyle ? listStyle.display : \"\",\r\n      likelyApplied: !!(\r\n        note &&\r\n        main &&\r\n        icon &&\r\n        text &&\r\n        details &&\r\n        noteStyle &&\r\n        mainStyle &&\r\n        iconStyle &&\r\n        textStyle &&\r\n        noteStyle.borderRadius !== \"0px\" &&\r\n        mainStyle.display === \"grid\" &&\r\n        (iconStyle.display === \"flex\" || iconStyle.display === \"inline-flex\") &&\r\n        textStyle.display === \"block\"\r\n      )\r\n    };\r\n  }\r\n\r\n  function aggregateForbidden(debugs, dom) {\r\n    var found = [];\r\n    var r = root();\r\n\r\n    Object.keys(debugs || {}).forEach(function (key) {\r\n      var pack = debugs[key] || {};\r\n      if (Array.isArray(pack.forbiddenFound)) found = found.concat(pack.forbiddenFound);\r\n    });\r\n\r\n    if (r) {\r\n      Array.prototype.slice.call(r.querySelectorAll(P30_NOTE_SELECTOR)).forEach(function (note) {\r\n        found = found.concat(scanForbidden(note.textContent || \"\"));\r\n      });\r\n    }\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function noTouchFlags(debugs) {\r\n    var packs = [\r\n      debugs.p28Stack,\r\n      debugs.p29Stack,\r\n      debugs.p30Label,\r\n      debugs.p30Render\r\n    ];\r\n\r\n    return {\r\n      scoreTouched: packs.some(function (p) { return !!(p && p.scoreTouched); }),\r\n      commerceTouched: packs.some(function (p) { return !!(p && p.commerceTouched); }),\r\n      shareTouched: packs.some(function (p) { return !!(p && p.shareTouched); }),\r\n      recommendationRankingTouched: packs.some(function (p) { return !!(p && p.recommendationRankingTouched); }),\r\n      upperRecommendationTouched: packs.some(function (p) { return !!(p && p.upperRecommendationTouched); }),\r\n      exactM2Claims: packs.some(function (p) { return !!(p && p.exactM2Claims); }),\r\n      exactLuxClaims: packs.some(function (p) { return !!(p && p.exactLuxClaims); }),\r\n      estimatedCriTlci: packs.some(function (p) { return !!(p && p.estimatedCriTlci); }),\r\n      visibleRenderTouched: !!(debugs.p30Render && debugs.p30Render.visibleRenderTouched)\r\n    };\r\n  }\r\n\r\n  function protectedSystemSmoke(modules, dom, noTouch, forbiddenFound) {\r\n    return {\r\n      productCountOk: products().length === 19,\r\n      compareReady: !!modules.compare,\r\n      commercePresent: !!modules.commerce && !!dom.commerceMountFound,\r\n      sharePresent: !!modules.share && !!dom.shareMountFound,\r\n      shareCardPresent: !!modules.shareCard && !!dom.shareCardMountFound,\r\n      p28Present: !!dom.p28SchematicFound,\r\n      p29Present: !!dom.p29RecommendationMountFound && dom.p29SetupBlockCount >= 1,\r\n      p30NotesPresent: dom.noteCount >= 1,\r\n      p30P28NoteOk: dom.p28NoteCount >= 1,\r\n      p30P29NoteOk: dom.p29NoteCount >= 1,\r\n      detailsFound: !!dom.detailsFound,\r\n      primaryCopyFound: !!dom.primaryCopyFound,\r\n      forbiddenClean: !forbiddenFound.length,\r\n      scoreTouched: !!noTouch.scoreTouched,\r\n      commerceTouched: !!noTouch.commerceTouched,\r\n      shareTouched: !!noTouch.shareTouched,\r\n      recommendationRankingTouched: !!noTouch.recommendationRankingTouched,\r\n      upperRecommendationTouched: !!noTouch.upperRecommendationTouched,\r\n      exactM2Claims: !!noTouch.exactM2Claims,\r\n      exactLuxClaims: !!noTouch.exactLuxClaims,\r\n      estimatedCriTlci: !!noTouch.estimatedCriTlci\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var modules = modulePresence();\r\n    var debugs = collectDebugs();\r\n    var dom = domSmoke();\r\n    var css = cssPolishCheck();\r\n    var noTouch = noTouchFlags(debugs);\r\n    var forbiddenFound = aggregateForbidden(debugs, dom);\r\n    var protectedSmoke = protectedSystemSmoke(modules, dom, noTouch, forbiddenFound);\r\n\r\n    var apiChainOk =\r\n      !!modules.p30SourceLabel &&\r\n      !!modules.p30SourceRender &&\r\n      !!debugs.p30Label.ok &&\r\n      !!debugs.p30Render.ok;\r\n\r\n    var visualChainOk =\r\n      dom.noteCount >= 1 &&\r\n      dom.primaryCopyFound &&\r\n      dom.detailsFound &&\r\n      css.likelyApplied;\r\n\r\n    var protectedSystemsOk =\r\n      protectedSmoke.productCountOk &&\r\n      protectedSmoke.compareReady &&\r\n      protectedSmoke.commercePresent &&\r\n      protectedSmoke.sharePresent &&\r\n      protectedSmoke.shareCardPresent &&\r\n      protectedSmoke.p28Present &&\r\n      protectedSmoke.p29Present &&\r\n      protectedSmoke.p30NotesPresent &&\r\n      protectedSmoke.p30P28NoteOk &&\r\n      protectedSmoke.p30P29NoteOk &&\r\n      protectedSmoke.detailsFound &&\r\n      protectedSmoke.primaryCopyFound &&\r\n      protectedSmoke.forbiddenClean &&\r\n      !protectedSmoke.scoreTouched &&\r\n      !protectedSmoke.commerceTouched &&\r\n      !protectedSmoke.shareTouched &&\r\n      !protectedSmoke.recommendationRankingTouched &&\r\n      !protectedSmoke.upperRecommendationTouched &&\r\n      !protectedSmoke.exactM2Claims &&\r\n      !protectedSmoke.exactLuxClaims &&\r\n      !protectedSmoke.estimatedCriTlci;\r\n\r\n    return {\r\n      ok: !!(apiChainOk && visualChainOk && protectedSystemsOk),\r\n      version: VERSION,\r\n      apiChainOk: apiChainOk,\r\n      visualChainOk: visualChainOk,\r\n      protectedSystemsOk: protectedSystemsOk,\r\n      productCount: products().length,\r\n      modules: modules,\r\n      dom: dom,\r\n      cssPolish: css,\r\n      debugs: debugs,\r\n      noTouch: noTouch,\r\n      protectedSmoke: protectedSmoke,\r\n      forbiddenFound: forbiddenFound,\r\n      expected: {\r\n        productCount: 19,\r\n        noteCount: \">=1\",\r\n        p28NoteCount: \">=1\",\r\n        p29NoteCount: \">=1\",\r\n        primaryCopyFound: true,\r\n        detailsFound: true,\r\n        cssLikelyApplied: true,\r\n        forbiddenFound: [],\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        recommendationRankingTouched: false,\r\n        upperRecommendationTouched: false,\r\n        exactM2Claims: false,\r\n        exactLuxClaims: false,\r\n        estimatedCriTlci: false\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P30-5-SETUP-VALUE-SOURCE-FINAL-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P30Stack = debug;\r\n  window.GDX_PANEL_LED_V4_P30_INTEGRATION_DEBUG = {\r\n    version: VERSION,\r\n    debug: debug,\r\n    scanForbidden: scanForbidden,\r\n    modulePresence: modulePresence,\r\n    cssPolishCheck: cssPolishCheck\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P30-2-R2 SOURCE NOTE RENDER SOURCE FIX / STABLE DETAILS\r\n   Faz: PANEL-V4-P30-2-R2-SOURCE-NOTE-RENDER-SOURCE-FIX-STABLE-DETAILS-SAFE\r\n\r\n   KAYNAK D\u00DCZELTME:\r\n   - Eski P30-2 render bridge ve eski P30-2-R1 details stability blo\u011Fu\r\n     bu tek kaynak davran\u0131\u015F\u0131 ile de\u011Fi\u015Ftirilmi\u015Ftir.\r\n   - Document click listener kullan\u0131lmaz.\r\n   - Details a\u00E7/kapat davran\u0131\u015F\u0131 browser'\u0131n native <details> davran\u0131\u015F\u0131na b\u0131rak\u0131l\u0131r.\r\n   - Note i\u00E7eri\u011Fi ayn\u0131ysa DOM yeniden \u00E7izilmez.\r\n   - P28/P29 bloklar\u0131 ger\u00E7ekten yeniden olu\u015Fursa yaln\u0131zca eksik note eklenir.\r\n   - Score, recommendation ranking, commerce, share, PNG/QR ak\u0131\u015F\u0131na dokunmaz.\r\n\r\n   Eklenen API:\r\n   - window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER\r\n   - window.debugP30SetupValueSourceRender()\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P30-2-R2-SOURCE-NOTE-RENDER-SOURCE-FIX-STABLE-DETAILS-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var P28_SELECTOR = '[data-gdx-panel-p28-schematic=\"1\"]';\r\n  var P29_SELECTOR = '[data-gdx-panel-p29-rec-setup=\"1\"]';\r\n  var NOTE_ATTR = \"data-gdx-panel-p30-source-note\";\r\n  var NOTE_SELECTOR = \"[\" + NOTE_ATTR + \"]\";\r\n  var LIST_ATTR = \"data-gdx-panel-p30-source-note-list\";\r\n  var SIGNATURE_ATTR = \"data-gdx-panel-p30-source-signature\";\r\n\r\n  var state = {\r\n    renderCount: 0,\r\n    lastRenderAt: \"\",\r\n    scheduled: false,\r\n    observerReady: false,\r\n    lastDebug: null,\r\n    stableDetailsMode: true,\r\n    clickRefreshDisabled: true\r\n  };\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"kesin mesafe\",\r\n    \"garanti ayd\u0131nlat\u0131r\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"ger\u00E7ek lumen sonucu\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\"\r\n  ];\r\n\r\n  function root() {\r\n    return document.getElementById(ROOT_ID);\r\n  }\r\n\r\n  function sourceApi() {\r\n    return window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_LABEL || null;\r\n  }\r\n\r\n  function cleanText(value) {\r\n    return String(value === undefined || value === null ? \"\" : value).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value === undefined || value === null ? \"\" : value).replace(/[&<>\"']/g, function (char) {\r\n      return ({ \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" })[char];\r\n    });\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function primaryCopy() {\r\n    var api = sourceApi();\r\n    return cleanText(api && api.primaryCopy) || \"Setup \u00E7al\u0131\u015Fma aral\u0131\u011F\u0131; \u00FCr\u00FCn g\u00FCc\u00FC, \u0131\u015F\u0131k g\u00F6revi ve kullan\u0131m senaryosuna g\u00F6re \u00F6nerilir.\";\r\n  }\r\n\r\n  function buildSource(target) {\r\n    var api = sourceApi();\r\n    var data = null;\r\n\r\n    if (!api) return null;\r\n\r\n    try {\r\n      if (target === \"p28\" && typeof api.buildForP28 === \"function\") data = api.buildForP28();\r\n      if (target === \"p29\" && typeof api.buildForP29 === \"function\") data = api.buildForP29();\r\n    } catch (error) {\r\n      data = {\r\n        ok: false,\r\n        error: error && error.message ? error.message : String(error || \"error\")\r\n      };\r\n    }\r\n\r\n    return data;\r\n  }\r\n\r\n  function expandedItems(sourceData) {\r\n    var expanded = Array.isArray(sourceData && sourceData.expandedCopy) ? sourceData.expandedCopy.slice(0, 4) : [];\r\n\r\n    if (!expanded.length) {\r\n      expanded = [\r\n        \"\u00C7al\u0131\u015Fma mesafesi; \u00FCr\u00FCn g\u00FCc\u00FC, kullan\u0131m amac\u0131 ve \u0131\u015F\u0131k g\u00F6revine g\u00F6re \u00F6nerilir.\",\r\n        \"I\u015F\u0131k a\u00E7\u0131s\u0131; Ana I\u015F\u0131k / Dolgu / RGB g\u00F6revine g\u00F6re belirlenir.\",\r\n        \"Renk de\u011Ferlendirmesi mevcut CRI/TLCI verilerine dayan\u0131r.\",\r\n        \"Bunlar ba\u015Flang\u0131\u00E7 setup \u00F6nerileridir; \u00E7ekim s\u0131ras\u0131nda sahneye g\u00F6re ince ayar yap\u0131lmal\u0131d\u0131r.\"\r\n      ];\r\n    }\r\n\r\n    return expanded;\r\n  }\r\n\r\n  function signatureFor(target, sourceData) {\r\n    var copy = cleanText(sourceData && (sourceData.safeFooterCopy || sourceData.primaryCopy || primaryCopy()));\r\n    var expanded = expandedItems(sourceData).join(\"|\");\r\n\r\n    return [\r\n      VERSION,\r\n      target,\r\n      copy,\r\n      expanded\r\n    ].join(\"::\");\r\n  }\r\n\r\n  function noteHtml(target, sourceData, shouldOpen) {\r\n    sourceData = sourceData || {};\r\n\r\n    var expanded = expandedItems(sourceData);\r\n    var copy = cleanText(sourceData.safeFooterCopy || sourceData.primaryCopy || primaryCopy());\r\n    var signature = signatureFor(target, sourceData);\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p30-source-note\" ' + NOTE_ATTR + '=\"' + escapeHtml(target) + '\" ' + SIGNATURE_ATTR + '=\"' + escapeHtml(signature) + '\" data-p30-version=\"' + escapeHtml(VERSION) + '\">' +\r\n        '<div class=\"gdx-p30-source-note-main\">' +\r\n          '<span class=\"gdx-p30-source-note-icon\">i</span>' +\r\n          '<span class=\"gdx-p30-source-note-text\">' + escapeHtml(copy) + '</span>' +\r\n        '</div>' +\r\n        '<details class=\"gdx-p30-source-note-details\"' + (shouldOpen ? ' open' : '') + '>' +\r\n          '<summary>Bu \u00F6neri nas\u0131l olu\u015Fturuldu?</summary>' +\r\n          '<ul ' + LIST_ATTR + '=\"1\">' +\r\n            expanded.map(function (item) { return '<li>' + escapeHtml(item) + '</li>'; }).join(\"\") +\r\n          '</ul>' +\r\n        '</details>' +\r\n      '</div>';\r\n  }\r\n\r\n  function findNote(block, target) {\r\n    if (!block) return null;\r\n    return block.querySelector('[' + NOTE_ATTR + '=\"' + target + '\"]');\r\n  }\r\n\r\n  function upsertNote(block, target, sourceData) {\r\n    var existing;\r\n    var existingDetails;\r\n    var wasOpen;\r\n    var expectedSignature;\r\n    var holder;\r\n    var html;\r\n\r\n    if (!block || !sourceData || !sourceData.ok) return false;\r\n\r\n    existing = findNote(block, target);\r\n    existingDetails = existing ? existing.querySelector(\"details\") : null;\r\n    wasOpen = !!(existingDetails && existingDetails.open);\r\n    expectedSignature = signatureFor(target, sourceData);\r\n\r\n    if (existing && existing.getAttribute(SIGNATURE_ATTR) === expectedSignature) {\r\n      return false;\r\n    }\r\n\r\n    html = noteHtml(target, sourceData, wasOpen);\r\n\r\n    if (scanForbidden(html).length) return false;\r\n\r\n    holder = document.createElement(\"div\");\r\n    holder.innerHTML = html;\r\n\r\n    if (existing && existing.parentNode) {\r\n      existing.parentNode.replaceChild(holder.firstChild, existing);\r\n    } else {\r\n      block.appendChild(holder.firstChild);\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function renderP28() {\r\n    var r = root();\r\n    var sourceData = buildSource(\"p28\");\r\n    var block;\r\n    var changed;\r\n\r\n    if (!r || !sourceData || !sourceData.ok) return { ok: false, changed: 0, reason: \"p28 not ready\" };\r\n\r\n    block = r.querySelector(P28_SELECTOR);\r\n    if (!block) return { ok: false, changed: 0, reason: \"p28 block missing\" };\r\n\r\n    changed = upsertNote(block, \"p28\", sourceData) ? 1 : 0;\r\n\r\n    return {\r\n      ok: true,\r\n      changed: changed,\r\n      sourceOk: !!sourceData.ok,\r\n      targetFound: !!block\r\n    };\r\n  }\r\n\r\n  function renderP29() {\r\n    var r = root();\r\n    var sourceData = buildSource(\"p29\");\r\n    var blocks;\r\n    var changed = 0;\r\n\r\n    if (!r || !sourceData || !sourceData.ok) return { ok: false, changed: 0, reason: \"p29 not ready\" };\r\n\r\n    blocks = Array.prototype.slice.call(r.querySelectorAll(P29_SELECTOR));\r\n    if (!blocks.length) return { ok: false, changed: 0, reason: \"p29 blocks missing\" };\r\n\r\n    blocks.slice(0, 3).forEach(function (block) {\r\n      if (upsertNote(block, \"p29\", sourceData)) changed += 1;\r\n    });\r\n\r\n    return {\r\n      ok: true,\r\n      changed: changed,\r\n      sourceOk: !!sourceData.ok,\r\n      targetFound: blocks.length > 0,\r\n      targetCount: blocks.length\r\n    };\r\n  }\r\n\r\n  function render() {\r\n    var p28 = renderP28();\r\n    var p29 = renderP29();\r\n    var r = root();\r\n    var allNotes = r ? Array.prototype.slice.call(r.querySelectorAll(NOTE_SELECTOR)) : [];\r\n    var forbiddenFound = [];\r\n    var changed = (p28.changed || 0) + (p29.changed || 0);\r\n\r\n    allNotes.forEach(function (note) {\r\n      forbiddenFound = forbiddenFound.concat(scanForbidden(note.textContent || \"\"));\r\n    });\r\n\r\n    forbiddenFound = forbiddenFound.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n\r\n    if (changed) {\r\n      state.renderCount += 1;\r\n      state.lastRenderAt = new Date().toISOString();\r\n    }\r\n\r\n    state.lastDebug = {\r\n      ok: !!((p28.ok || p29.ok) && !forbiddenFound.length),\r\n      version: VERSION,\r\n      p28: p28,\r\n      p29: p29,\r\n      noteCount: allNotes.length,\r\n      p28NoteCount: allNotes.filter(function (n) { return n.getAttribute(NOTE_ATTR) === \"p28\"; }).length,\r\n      p29NoteCount: allNotes.filter(function (n) { return n.getAttribute(NOTE_ATTR) === \"p29\"; }).length,\r\n      changedCount: changed,\r\n      stableDetailsMode: true,\r\n      clickRefreshDisabled: true,\r\n      forbiddenFound: forbiddenFound,\r\n      exactM2Claims: false,\r\n      exactLuxClaims: false,\r\n      estimatedCriTlci: false,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      upperRecommendationTouched: false,\r\n      visibleRenderTouched: true\r\n    };\r\n\r\n    return state.lastDebug.ok;\r\n  }\r\n\r\n  function schedule() {\r\n    if (state.scheduled) return;\r\n    state.scheduled = true;\r\n\r\n    window.setTimeout(function () {\r\n      state.scheduled = false;\r\n      render();\r\n    }, 180);\r\n  }\r\n\r\n  function mutationTouchesP28OrP29(mutation) {\r\n    var nodes = Array.prototype.slice.call(mutation.addedNodes || []).concat(Array.prototype.slice.call(mutation.removedNodes || []));\r\n\r\n    return nodes.some(function (node) {\r\n      if (!node || node.nodeType !== 1) return false;\r\n\r\n      if (node.matches && (node.matches(P28_SELECTOR) || node.matches(P29_SELECTOR))) return true;\r\n      if (node.querySelector && (node.querySelector(P28_SELECTOR) || node.querySelector(P29_SELECTOR))) return true;\r\n\r\n      return false;\r\n    });\r\n  }\r\n\r\n  function observe() {\r\n    var r = root();\r\n    var obs;\r\n\r\n    if (!r || state.observerReady) return false;\r\n\r\n    obs = new MutationObserver(function (mutations) {\r\n      var relevant = mutations.some(mutationTouchesP28OrP29);\r\n\r\n      if (relevant) schedule();\r\n    });\r\n\r\n    obs.observe(r, { childList: true, subtree: true });\r\n    state.observerReady = true;\r\n\r\n    return true;\r\n  }\r\n\r\n  function boot() {\r\n    [160, 520, 980, 1600, 2600].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        observe();\r\n        schedule();\r\n      }, delay);\r\n    });\r\n\r\n    window.addEventListener(\"resize\", function () {\r\n      window.setTimeout(schedule, 180);\r\n    });\r\n  }\r\n\r\n  function debug() {\r\n    var r = root();\r\n    var notes = r ? Array.prototype.slice.call(r.querySelectorAll(NOTE_SELECTOR)) : [];\r\n    var p28Notes = notes.filter(function (n) { return n.getAttribute(NOTE_ATTR) === \"p28\"; });\r\n    var p29Notes = notes.filter(function (n) { return n.getAttribute(NOTE_ATTR) === \"p29\"; });\r\n    var details = notes.map(function (n) { return n.querySelector(\"details\"); }).filter(Boolean);\r\n    var openDetails = details.filter(function (d) { return d.open; });\r\n    var forbiddenFound = [];\r\n\r\n    notes.forEach(function (note) {\r\n      forbiddenFound = forbiddenFound.concat(scanForbidden(note.textContent || \"\"));\r\n    });\r\n\r\n    forbiddenFound = forbiddenFound.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n\r\n    return {\r\n      ok: !!(sourceApi() && notes.length >= 1 && !forbiddenFound.length),\r\n      version: VERSION,\r\n      sourceApiReady: !!sourceApi(),\r\n      p28SourceReady: !!(buildSource(\"p28\") && buildSource(\"p28\").ok),\r\n      p29SourceReady: !!(buildSource(\"p29\") && buildSource(\"p29\").ok),\r\n      rootFound: !!r,\r\n      p28BlockFound: !!(r && r.querySelector(P28_SELECTOR)),\r\n      p29BlockCount: r ? r.querySelectorAll(P29_SELECTOR).length : 0,\r\n      noteCount: notes.length,\r\n      p28NoteCount: p28Notes.length,\r\n      p29NoteCount: p29Notes.length,\r\n      detailsCount: details.length,\r\n      openDetailsCount: openDetails.length,\r\n      primaryCopyFound: notes.some(function (note) {\r\n        return (note.textContent || \"\").indexOf(primaryCopy()) > -1;\r\n      }),\r\n      detailsFound: details.length > 0,\r\n      observerReady: state.observerReady,\r\n      renderCount: state.renderCount,\r\n      lastRenderAt: state.lastRenderAt,\r\n      stableDetailsMode: true,\r\n      clickRefreshDisabled: true,\r\n      sourceUpsertMode: true,\r\n      forbiddenFound: forbiddenFound,\r\n      exactM2Claims: false,\r\n      exactLuxClaims: false,\r\n      estimatedCriTlci: false,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      upperRecommendationTouched: false,\r\n      visibleRenderTouched: notes.length > 0,\r\n      lastDebug: state.lastDebug\r\n    };\r\n  }\r\n\r\n  var API = {\r\n    version: VERSION,\r\n    render: render,\r\n    schedule: schedule,\r\n    debug: debug,\r\n    buildSource: buildSource,\r\n    scanForbidden: scanForbidden,\r\n    stableDetailsMode: true,\r\n    clickRefreshDisabled: true,\r\n    sourceUpsertMode: true\r\n  };\r\n\r\n  window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER = API;\r\n  window.debugP30SetupValueSourceRender = debug;\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\"DOMContentLoaded\", boot, { once: true });\r\n  } else {\r\n    boot();\r\n  }\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P30-4-R1 INTEGRATION DEBUG / R2 SOURCE FIX SEAL READY\r\n   Faz: PANEL-V4-P30-4-R1-INTEGRATION-DEBUG-R2-SOURCE-FIX-SEAL-READY-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P30-2-R2 kaynak d\u00FCzeltmesinin ger\u00E7ekten aktif oldu\u011Funu do\u011Frular.\r\n   - Eski P30-2 click refresh davran\u0131\u015F\u0131n\u0131n R2 ile kapat\u0131ld\u0131\u011F\u0131n\u0131 kontrol eder.\r\n   - P30 source note details alanlar\u0131n\u0131n native/stabil a\u00E7\u0131lma modelinde oldu\u011Funu do\u011Frular.\r\n   - P30-1 label API, P30-2-R2 render source fix, P30-3 CSS polish,\r\n     P28/P29 ve protected sistemleri tek debug fonksiyonunda kontrol eder.\r\n\r\n   Hedef dosya:\r\n   - assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN SONUNA ekleyin.\r\n\r\n   Eklenen API:\r\n   - window.debugPanelV4P30StackR1()\r\n   - window.GDX_PANEL_LED_V4_P30_INTEGRATION_DEBUG_R1\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P30-4-R1-INTEGRATION-DEBUG-R2-SOURCE-FIX-SEAL-READY-SAFE\";\r\n  var EXPECTED_RENDER_VERSION = \"PANEL-V4-P30-2-R2-SOURCE-NOTE-RENDER-SOURCE-FIX-STABLE-DETAILS-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var P30_NOTE_SELECTOR = \"[data-gdx-panel-p30-source-note]\";\r\n  var P28_NOTE_SELECTOR = '[data-gdx-panel-p30-source-note=\"p28\"]';\r\n  var P29_NOTE_SELECTOR = '[data-gdx-panel-p30-source-note=\"p29\"]';\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"kesin mesafe\",\r\n    \"garanti ayd\u0131nlat\u0131r\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"ger\u00E7ek lumen sonucu\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\"\r\n  ];\r\n\r\n  function root() {\r\n    return document.getElementById(ROOT_ID);\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function safeCall(fn, fallback) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n    } catch (error) {\r\n      return {\r\n        ok: false,\r\n        error: error && error.message ? error.message : String(error || \"error\")\r\n      };\r\n    }\r\n\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function modulePresence() {\r\n    return {\r\n      dataRoot: !!window.GDX_PANEL_LED_V4,\r\n      compare: !!(window.GDX_PANEL_LED_V4_COMPARE && typeof window.GDX_PANEL_LED_V4_COMPARE.compareProducts === \"function\"),\r\n      commerce: !!window.GDX_PANEL_LED_V4_COMMERCE,\r\n      share: !!window.GDX_PANEL_LED_V4_SHARE,\r\n      shareCard: !!window.GDX_PANEL_LED_V4_SHARE_CARD,\r\n\r\n      p28Stack: !!window.debugPanelV4P28Stack,\r\n      p29Stack: !!window.debugPanelV4P29Stack,\r\n      p30OldStack: !!window.debugPanelV4P30Stack,\r\n\r\n      p30SourceLabel: !!window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_LABEL,\r\n      p30SourceRender: !!window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER,\r\n      p30SourceLabelDebug: !!window.debugP30SetupValueSourceLabel,\r\n      p30SourceRenderDebug: !!window.debugP30SetupValueSourceRender,\r\n\r\n      p30R1OldDetailsPatchPresent: !!window.debugP30SourceNoteDetailsStability\r\n    };\r\n  }\r\n\r\n  function collectDebugs() {\r\n    return {\r\n      p28Stack: safeCall(function () {\r\n        return window.debugPanelV4P28Stack ? window.debugPanelV4P28Stack() : { ok: false, reason: \"missing debugPanelV4P28Stack\" };\r\n      }),\r\n      p29Stack: safeCall(function () {\r\n        return window.debugPanelV4P29Stack ? window.debugPanelV4P29Stack() : { ok: false, reason: \"missing debugPanelV4P29Stack\" };\r\n      }),\r\n      p30Label: safeCall(function () {\r\n        return window.debugP30SetupValueSourceLabel ? window.debugP30SetupValueSourceLabel() : { ok: false, reason: \"missing debugP30SetupValueSourceLabel\" };\r\n      }),\r\n      p30Render: safeCall(function () {\r\n        return window.debugP30SetupValueSourceRender ? window.debugP30SetupValueSourceRender() : { ok: false, reason: \"missing debugP30SetupValueSourceRender\" };\r\n      }),\r\n      p30OldStack: safeCall(function () {\r\n        return window.debugPanelV4P30Stack ? window.debugPanelV4P30Stack() : { ok: false, reason: \"old p30 stack debug missing or intentionally absent\" };\r\n      })\r\n    };\r\n  }\r\n\r\n  function domSmoke() {\r\n    var r = root();\r\n    var notes = r ? Array.prototype.slice.call(r.querySelectorAll(P30_NOTE_SELECTOR)) : [];\r\n    var p28Notes = r ? Array.prototype.slice.call(r.querySelectorAll(P28_NOTE_SELECTOR)) : [];\r\n    var p29Notes = r ? Array.prototype.slice.call(r.querySelectorAll(P29_NOTE_SELECTOR)) : [];\r\n    var details = notes.map(function (note) { return note.querySelector(\"details\"); }).filter(Boolean);\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      p28SchematicFound: !!(r && r.querySelector('[data-gdx-panel-p28-schematic=\"1\"]')),\r\n      p29RecommendationMountFound: !!document.getElementById(\"gdxPanelV4RecommendationPreview\"),\r\n      p29SetupBlockCount: r ? r.querySelectorAll('[data-gdx-panel-p29-rec-setup=\"1\"]').length : 0,\r\n\r\n      noteCount: notes.length,\r\n      p28NoteCount: p28Notes.length,\r\n      p29NoteCount: p29Notes.length,\r\n      detailsCount: details.length,\r\n      openDetailsCount: details.filter(function (d) { return d.open; }).length,\r\n      primaryCopyFound: notes.some(function (note) {\r\n        return (note.textContent || \"\").indexOf(\"Setup \u00E7al\u0131\u015Fma aral\u0131\u011F\u0131; \u00FCr\u00FCn g\u00FCc\u00FC, \u0131\u015F\u0131k g\u00F6revi ve kullan\u0131m senaryosuna g\u00F6re \u00F6nerilir.\") > -1;\r\n      }),\r\n      detailsFound: details.length > 0,\r\n      sourceListCount: notes.filter(function (note) {\r\n        return !!note.querySelector('[data-gdx-panel-p30-source-note-list=\"1\"]');\r\n      }).length,\r\n\r\n      commerceMountFound: !!document.getElementById(\"gdxPanelV4CommercePreview\"),\r\n      shareMountFound: !!document.getElementById(\"gdxPanelV4SharePreview\"),\r\n      shareCardMountFound: !!document.getElementById(\"gdxPanelV4ShareCardPreview\"),\r\n      resultFound: !!document.getElementById(\"gdxPanelV4ResultPreview\")\r\n    };\r\n  }\r\n\r\n  function cssPolishCheck() {\r\n    var r = root();\r\n    var note = r ? r.querySelector(P30_NOTE_SELECTOR) : null;\r\n    var main = note ? note.querySelector(\".gdx-p30-source-note-main\") : null;\r\n    var icon = note ? note.querySelector(\".gdx-p30-source-note-icon\") : null;\r\n    var text = note ? note.querySelector(\".gdx-p30-source-note-text\") : null;\r\n    var details = note ? note.querySelector(\".gdx-p30-source-note-details\") : null;\r\n    var list = note ? note.querySelector('[data-gdx-panel-p30-source-note-list=\"1\"]') : null;\r\n\r\n    var noteStyle = note ? window.getComputedStyle(note) : null;\r\n    var mainStyle = main ? window.getComputedStyle(main) : null;\r\n    var iconStyle = icon ? window.getComputedStyle(icon) : null;\r\n    var textStyle = text ? window.getComputedStyle(text) : null;\r\n    var listStyle = list ? window.getComputedStyle(list) : null;\r\n\r\n    return {\r\n      noteFound: !!note,\r\n      mainFound: !!main,\r\n      iconFound: !!icon,\r\n      textFound: !!text,\r\n      detailsFound: !!details,\r\n      listFound: !!list,\r\n      noteBorderRadius: noteStyle ? noteStyle.borderRadius : \"\",\r\n      mainDisplay: mainStyle ? mainStyle.display : \"\",\r\n      iconDisplay: iconStyle ? iconStyle.display : \"\",\r\n      textDisplay: textStyle ? textStyle.display : \"\",\r\n      listDisplay: listStyle ? listStyle.display : \"\",\r\n      likelyApplied: !!(\r\n        note &&\r\n        main &&\r\n        icon &&\r\n        text &&\r\n        details &&\r\n        noteStyle &&\r\n        mainStyle &&\r\n        iconStyle &&\r\n        textStyle &&\r\n        noteStyle.borderRadius !== \"0px\" &&\r\n        mainStyle.display === \"grid\" &&\r\n        (iconStyle.display === \"flex\" || iconStyle.display === \"inline-flex\") &&\r\n        textStyle.display === \"block\"\r\n      )\r\n    };\r\n  }\r\n\r\n  function r2SourceFixCheck(debugs, modules) {\r\n    var renderApi = window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER || {};\r\n    var renderDebug = debugs && debugs.p30Render ? debugs.p30Render : {};\r\n\r\n    return {\r\n      expectedRenderVersion: EXPECTED_RENDER_VERSION,\r\n      renderVersion: renderDebug.version || renderApi.version || \"\",\r\n      renderVersionOk: (renderDebug.version || renderApi.version || \"\") === EXPECTED_RENDER_VERSION,\r\n\r\n      stableDetailsMode: !!(renderDebug.stableDetailsMode || renderApi.stableDetailsMode),\r\n      clickRefreshDisabled: !!(renderDebug.clickRefreshDisabled || renderApi.clickRefreshDisabled),\r\n      sourceUpsertMode: !!(renderDebug.sourceUpsertMode || renderApi.sourceUpsertMode),\r\n\r\n      oldR1DetailsPatchAbsent: !modules.p30R1OldDetailsPatchPresent,\r\n      oldR1DetailsPatchPresent: !!modules.p30R1OldDetailsPatchPresent,\r\n\r\n      noClickRefreshSourceModel: !!(renderDebug.clickRefreshDisabled || renderApi.clickRefreshDisabled),\r\n      sourceFixOk: !!(\r\n        ((renderDebug.version || renderApi.version || \"\") === EXPECTED_RENDER_VERSION) &&\r\n        (renderDebug.stableDetailsMode || renderApi.stableDetailsMode) &&\r\n        (renderDebug.clickRefreshDisabled || renderApi.clickRefreshDisabled) &&\r\n        (renderDebug.sourceUpsertMode || renderApi.sourceUpsertMode) &&\r\n        !modules.p30R1OldDetailsPatchPresent\r\n      )\r\n    };\r\n  }\r\n\r\n  function aggregateForbidden(debugs) {\r\n    var found = [];\r\n    var r = root();\r\n\r\n    Object.keys(debugs || {}).forEach(function (key) {\r\n      var pack = debugs[key] || {};\r\n      if (Array.isArray(pack.forbiddenFound)) found = found.concat(pack.forbiddenFound);\r\n    });\r\n\r\n    if (r) {\r\n      Array.prototype.slice.call(r.querySelectorAll(P30_NOTE_SELECTOR)).forEach(function (note) {\r\n        found = found.concat(scanForbidden(note.textContent || \"\"));\r\n      });\r\n    }\r\n\r\n    return found.filter(function (item, index, arr) {\r\n      return arr.indexOf(item) === index;\r\n    });\r\n  }\r\n\r\n  function noTouchFlags(debugs) {\r\n    var packs = [\r\n      debugs.p28Stack,\r\n      debugs.p29Stack,\r\n      debugs.p30Label,\r\n      debugs.p30Render,\r\n      debugs.p30OldStack\r\n    ];\r\n\r\n    return {\r\n      scoreTouched: packs.some(function (p) { return !!(p && p.scoreTouched); }),\r\n      commerceTouched: packs.some(function (p) { return !!(p && p.commerceTouched); }),\r\n      shareTouched: packs.some(function (p) { return !!(p && p.shareTouched); }),\r\n      recommendationRankingTouched: packs.some(function (p) { return !!(p && p.recommendationRankingTouched); }),\r\n      upperRecommendationTouched: packs.some(function (p) { return !!(p && p.upperRecommendationTouched); }),\r\n      exactM2Claims: packs.some(function (p) { return !!(p && p.exactM2Claims); }),\r\n      exactLuxClaims: packs.some(function (p) { return !!(p && p.exactLuxClaims); }),\r\n      estimatedCriTlci: packs.some(function (p) { return !!(p && p.estimatedCriTlci); }),\r\n      visibleRenderTouched: !!(debugs.p30Render && debugs.p30Render.visibleRenderTouched)\r\n    };\r\n  }\r\n\r\n  function protectedSystemSmoke(modules, dom, noTouch, forbiddenFound) {\r\n    return {\r\n      productCountOk: products().length === 19,\r\n      compareReady: !!modules.compare,\r\n      commercePresent: !!modules.commerce && !!dom.commerceMountFound,\r\n      sharePresent: !!modules.share && !!dom.shareMountFound,\r\n      shareCardPresent: !!modules.shareCard && !!dom.shareCardMountFound,\r\n      p28Present: !!dom.p28SchematicFound,\r\n      p29Present: !!dom.p29RecommendationMountFound && dom.p29SetupBlockCount >= 1,\r\n      p30NotesPresent: dom.noteCount >= 1,\r\n      p30P28NoteOk: dom.p28NoteCount >= 1,\r\n      p30P29NoteOk: dom.p29NoteCount >= 1,\r\n      detailsFound: !!dom.detailsFound,\r\n      primaryCopyFound: !!dom.primaryCopyFound,\r\n      forbiddenClean: !forbiddenFound.length,\r\n      scoreTouched: !!noTouch.scoreTouched,\r\n      commerceTouched: !!noTouch.commerceTouched,\r\n      shareTouched: !!noTouch.shareTouched,\r\n      recommendationRankingTouched: !!noTouch.recommendationRankingTouched,\r\n      upperRecommendationTouched: !!noTouch.upperRecommendationTouched,\r\n      exactM2Claims: !!noTouch.exactM2Claims,\r\n      exactLuxClaims: !!noTouch.exactLuxClaims,\r\n      estimatedCriTlci: !!noTouch.estimatedCriTlci\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var modules = modulePresence();\r\n    var debugs = collectDebugs();\r\n    var dom = domSmoke();\r\n    var css = cssPolishCheck();\r\n    var r2 = r2SourceFixCheck(debugs, modules);\r\n    var noTouch = noTouchFlags(debugs);\r\n    var forbiddenFound = aggregateForbidden(debugs);\r\n    var protectedSmoke = protectedSystemSmoke(modules, dom, noTouch, forbiddenFound);\r\n\r\n    var apiChainOk =\r\n      !!modules.p30SourceLabel &&\r\n      !!modules.p30SourceRender &&\r\n      !!debugs.p30Label.ok &&\r\n      !!debugs.p30Render.ok &&\r\n      !!r2.sourceFixOk;\r\n\r\n    var visualChainOk =\r\n      dom.noteCount >= 1 &&\r\n      dom.primaryCopyFound &&\r\n      dom.detailsFound &&\r\n      css.likelyApplied;\r\n\r\n    var protectedSystemsOk =\r\n      protectedSmoke.productCountOk &&\r\n      protectedSmoke.compareReady &&\r\n      protectedSmoke.commercePresent &&\r\n      protectedSmoke.sharePresent &&\r\n      protectedSmoke.shareCardPresent &&\r\n      protectedSmoke.p28Present &&\r\n      protectedSmoke.p29Present &&\r\n      protectedSmoke.p30NotesPresent &&\r\n      protectedSmoke.p30P28NoteOk &&\r\n      protectedSmoke.p30P29NoteOk &&\r\n      protectedSmoke.detailsFound &&\r\n      protectedSmoke.primaryCopyFound &&\r\n      protectedSmoke.forbiddenClean &&\r\n      !protectedSmoke.scoreTouched &&\r\n      !protectedSmoke.commerceTouched &&\r\n      !protectedSmoke.shareTouched &&\r\n      !protectedSmoke.recommendationRankingTouched &&\r\n      !protectedSmoke.upperRecommendationTouched &&\r\n      !protectedSmoke.exactM2Claims &&\r\n      !protectedSmoke.exactLuxClaims &&\r\n      !protectedSmoke.estimatedCriTlci;\r\n\r\n    return {\r\n      ok: !!(apiChainOk && visualChainOk && protectedSystemsOk),\r\n      version: VERSION,\r\n      apiChainOk: apiChainOk,\r\n      visualChainOk: visualChainOk,\r\n      protectedSystemsOk: protectedSystemsOk,\r\n      r2SourceFixOk: !!r2.sourceFixOk,\r\n      productCount: products().length,\r\n      modules: modules,\r\n      dom: dom,\r\n      cssPolish: css,\r\n      r2SourceFix: r2,\r\n      debugs: debugs,\r\n      noTouch: noTouch,\r\n      protectedSmoke: protectedSmoke,\r\n      forbiddenFound: forbiddenFound,\r\n      expected: {\r\n        productCount: 19,\r\n        p30RenderVersion: EXPECTED_RENDER_VERSION,\r\n        stableDetailsMode: true,\r\n        clickRefreshDisabled: true,\r\n        sourceUpsertMode: true,\r\n        oldR1DetailsPatchAbsent: true,\r\n        noteCount: \">=1\",\r\n        p28NoteCount: \">=1\",\r\n        p29NoteCount: \">=1\",\r\n        primaryCopyFound: true,\r\n        detailsFound: true,\r\n        cssLikelyApplied: true,\r\n        forbiddenFound: [],\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        recommendationRankingTouched: false,\r\n        upperRecommendationTouched: false,\r\n        exactM2Claims: false,\r\n        exactLuxClaims: false,\r\n        estimatedCriTlci: false\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P30-5-SETUP-VALUE-SOURCE-FINAL-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P30StackR1 = debug;\r\n  window.GDX_PANEL_LED_V4_P30_INTEGRATION_DEBUG_R1 = {\r\n    version: VERSION,\r\n    debug: debug,\r\n    scanForbidden: scanForbidden,\r\n    modulePresence: modulePresence,\r\n    cssPolishCheck: cssPolishCheck,\r\n    r2SourceFixCheck: r2SourceFixCheck\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   CANFOTO / GDX \u2014 LB2.4-R3\r\n   COMPARE TRUTH BRIDGE \u2014 EXACT TIE + CANONICAL SETUP DTO\r\n\r\n   SCOPE\r\n   - Compare presentation only.\r\n   - Reads current R28 selection state.\r\n   - Reads CANFOTO_CANONICAL_SETUP_DTO -> CANFOTO_SHARED_V27_ADAPTER_R4.\r\n   - No Purpose Score / ranking / General F/P / commerce mutation.\r\n   - Fail closed: no generic usecase setup is rendered when canonical DTO is unavailable.\r\n   ========================================================= */\r\n(function (W, D) {\r\n  \"use strict\";\r\n\r\n  var GLOBAL = \"CANFOTO_LB24_R3_COMPARE_TRUTH\";\r\n  var VERSION = \"CANFOTO-LB2.4-R3-COMPARE-TRUTH-BRIDGE-V1\";\r\n  if (W[GLOBAL] && W[GLOBAL].version === VERSION) return;\r\n\r\n  function clean(v) { return String(v == null ? \"\" : v).replace(/\\s+/g, \" \").trim(); }\r\n  function lower(v) { return clean(v).toLocaleLowerCase(\"tr-TR\"); }\r\n  function num(v) { var n = Number(v); return Number.isFinite(n) ? n : null; }\r\n  function fmt(v) { var n = num(v); return n === null ? \"\" : String(Math.round(n * 100) / 100).replace(\".\", \",\"); }\r\n\r\n  function uiState() {\r\n    return W.GDX_PANEL_LED_V4_UI && W.GDX_PANEL_LED_V4_UI.state ? W.GDX_PANEL_LED_V4_UI.state : null;\r\n  }\r\n\r\n  function compareResult() {\r\n    var state = uiState();\r\n    return state && state.compareResult && state.compareResult.ok ? state.compareResult : null;\r\n  }\r\n\r\n  function isExactTie() {\r\n    var result = compareResult();\r\n    return !!(result && (result.isExactTie === true || result.decisionState === \"EXACT_TIE\"));\r\n  }\r\n\r\n  function productKey(product) {\r\n    return clean(product && (product.key || product.handle || product.productKey || product.id));\r\n  }\r\n\r\n  function products() {\r\n    return W.GDX_PANEL_LED_V4 && W.GDX_PANEL_LED_V4.state && Array.isArray(W.GDX_PANEL_LED_V4.state.products)\r\n      ? W.GDX_PANEL_LED_V4.state.products\r\n      : [];\r\n  }\r\n\r\n  function selectedProducts() {\r\n    var state = uiState();\r\n    return state && state.selected ? [state.selected[1] || null, state.selected[2] || null] : [null, null];\r\n  }\r\n\r\n  function byKey(key) {\r\n    key = clean(key);\r\n    if (!key) return null;\r\n    var selected = selectedProducts();\r\n    var all = selected.concat(products());\r\n    for (var i = 0; i < all.length; i += 1) {\r\n      if (productKey(all[i]) === key) return all[i];\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function primaryProduct() {\r\n    var result = compareResult();\r\n    var selected = selectedProducts();\r\n    if (!result) return selected[0] || null;\r\n    if (isExactTie()) return selected[0] || byKey(result.productA && result.productA.productKey) || null;\r\n    return byKey(result.winner && result.winner.productKey) || selected[0] || null;\r\n  }\r\n\r\n  function secondaryProduct() {\r\n    var result = compareResult();\r\n    var selected = selectedProducts();\r\n    if (!result) return selected[1] || null;\r\n    if (isExactTie()) return selected[1] || byKey(result.productB && result.productB.productKey) || null;\r\n    return byKey(result.loser && result.loser.productKey) || selected[1] || null;\r\n  }\r\n\r\n  function selection() {\r\n    var state = W.GDX_PANEL_V4_R28_SELECTION_STATE || null;\r\n    if (!state) return null;\r\n    var purposeKey = clean(state.activePurposeKey || \"\");\r\n    var subPurposeKey = clean(state.activeSubPurposeKey || \"\");\r\n    if (!purposeKey || !subPurposeKey) return null;\r\n    return {\r\n      purposeKey: purposeKey,\r\n      subPurposeKey: subPurposeKey,\r\n      priorityRole: clean(state.activePriorityRole || \"\"),\r\n      selectionKey: clean(state.activeSelectionKey || \"\") || (purposeKey + \"::\" + subPurposeKey)\r\n    };\r\n  }\r\n\r\n  /* =========================================================\r\n     FS3-B2 \u2014 PRODUCT-SPECIFIC ROLE -> SETUP SEMANTIC PARITY\r\n\r\n     Policy is copied from the already-sealed R30A/R32\r\n     product-row family/power resolver:\r\n       RGB family -> rgb_background_accent\r\n       <= 80W     -> compact_support_close_range\r\n       otherwise  -> balanced_key_fill\r\n\r\n     Selection heuristics remain only as a source-insufficient fallback.\r\n     No score / rank / F-P / geometry truth mutation.\r\n     ========================================================= */\r\n  function fs3B2ProductFamily(product) {\r\n    product = product || {};\r\n    var specs = product.panelSpecs || product.specs || {};\r\n    var raw = lower(specs.family || product.family || product.productFamily || \"\");\r\n    var text = lower([\r\n      raw,\r\n      specs.hasRgb === true ? \"rgb\" : \"\",\r\n      product.title,\r\n      product.smartTitle,\r\n      product.shortTitle,\r\n      product.handle\r\n    ].join(\" \"));\r\n\r\n    if (\r\n      raw === \"rgb\" ||\r\n      specs.hasRgb === true ||\r\n      /\\brgb\\b|rgbw|rgbww|rgbwy|\\bhsi\\b|full[- ]?color/.test(text)\r\n    ) {\r\n      return \"rgb\";\r\n    }\r\n\r\n    if (\r\n      raw === \"bicolor\" ||\r\n      raw === \"bi-color\" ||\r\n      /bi[- ]?color|bicolor|\\bcct\\b|\u00E7ift renk|cift renk/.test(text)\r\n    ) {\r\n      return \"bicolor\";\r\n    }\r\n\r\n    if (\r\n      raw === \"daylight\" ||\r\n      raw === \"daylight_or_fixed_white\" ||\r\n      /daylight|5600k|g\u00FCn \u0131\u015F\u0131\u011F\u0131|gun isigi/.test(text)\r\n    ) {\r\n      return \"daylight\";\r\n    }\r\n\r\n    return raw || \"unknown\";\r\n  }\r\n\r\n  function fs3B2ProductPower(product) {\r\n    product = product || {};\r\n    var specs = product.panelSpecs || product.specs || {};\r\n    var values = [specs.powerW, product.powerW, product.power];\r\n\r\n    for (var i = 0; i < values.length; i += 1) {\r\n      var value = Number(values[i] || 0);\r\n      if (Number.isFinite(value) && value > 0) return value;\r\n    }\r\n\r\n    var text = clean([\r\n      product.smartTitle,\r\n      product.shortTitle,\r\n      product.title,\r\n      product.handle\r\n    ].join(\" \"));\r\n\r\n    var matches = text.match(/(\\d{1,4})\\s*W\\b/ig) || [];\r\n    var numbers = matches.map(function (item) {\r\n      var match = String(item).match(/\\d{1,4}/);\r\n      return match ? Number(match[0]) : 0;\r\n    }).filter(function (value) {\r\n      return value > 0 && value < 2000;\r\n    });\r\n\r\n    return numbers.length ? Math.max.apply(null, numbers) : 0;\r\n  }\r\n\r\n  function preferredScenarioType(sel, product) {\r\n    sel = sel || {};\r\n\r\n    var family = fs3B2ProductFamily(product);\r\n    var power = fs3B2ProductPower(product);\r\n\r\n    if (family === \"rgb\") {\r\n      return \"rgb_background_accent\";\r\n    }\r\n\r\n    if (power > 0 && power <= 80) {\r\n      return \"compact_support_close_range\";\r\n    }\r\n\r\n    if (family !== \"unknown\" || power > 0) {\r\n      return \"balanced_key_fill\";\r\n    }\r\n\r\n    var pk = clean(sel.purposeKey);\r\n    var sk = clean(sel.subPurposeKey);\r\n    var role = clean(sel.priorityRole);\r\n    var hay = lower(pk + \" \" + sk + \" \" + role);\r\n\r\n    if (pk === \"rgb_creative_video\" || /rgb|color|background|separation|renk|creative/.test(hay)) {\r\n      return \"rgb_background_accent\";\r\n    }\r\n\r\n    if (\r\n      pk === \"mobile_outdoor\" ||\r\n      pk === \"starter_budget_practical\" ||\r\n      /portable|support|accent|close|compact|small_space|battery/.test(hay)\r\n    ) {\r\n      return \"compact_support_close_range\";\r\n    }\r\n\r\n    return \"balanced_key_fill\";\r\n  }\r\n\r\n  function offerTitle(product) {\r\n    product = product || {};\r\n    var base = clean(product.shortTitle || product.smartTitle || product.displayTitle || product.title || \"Panel LED \u00DCr\u00FCn\");\r\n    var lane = clean(product.etap2 && product.etap2.lane || product.purchaseLane || product.lane || \"\");\r\n    var suffix = lane === \"SINGLE_READY_SET\" ? \"Tekli Tam Set\" : (lane === \"BARE_LIGHT\" ? \"Yaln\u0131z Panel\" : \"\");\r\n    if (!suffix || lower(base).indexOf(lower(suffix)) > -1) return base;\r\n    return base + \" \u2014 \" + suffix;\r\n  }\r\n\r\n  function dtoFor(product) {\r\n    var sel = selection();\r\n    var api = W.CANFOTO_CANONICAL_SETUP_DTO;\r\n    if (!product) return { ok: false, reason: \"PRODUCT_MISSING\" };\r\n    if (!sel) return { ok: false, reason: \"R28_SELECTION_MISSING\" };\r\n    if (!api || !api.panel || typeof api.panel.fromSelection !== \"function\") return { ok: false, reason: \"CANONICAL_DTO_OWNER_MISSING\" };\r\n\r\n    var scenarioType = preferredScenarioType(sel, product);\r\n    var dto = null;\r\n    try { dto = api.panel.fromSelection(sel.purposeKey, sel.subPurposeKey, scenarioType, product); }\r\n    catch (error) { return { ok: false, reason: \"CANONICAL_DTO_THROW\", error: clean(error && (error.message || error)) }; }\r\n\r\n    if (!dto) return { ok: false, reason: \"CANONICAL_DTO_NULL\" };\r\n    if (dto.source && dto.source.deferred === true) return { ok: false, reason: \"CANONICAL_DTO_DEFERRED\", dto: dto };\r\n\r\n    return { ok: true, selection: sel, scenarioType: scenarioType, dto: dto };\r\n  }\r\n\r\n  function projectDto(dto) {\r\n    var adapter = W.CANFOTO_SHARED_V27_ADAPTER_R4;\r\n    if (!adapter || typeof adapter.project !== \"function\") return { ok: false, reason: \"SHARED_V27_ADAPTER_MISSING\" };\r\n    var model = null;\r\n    try { model = adapter.project(dto); }\r\n    catch (error) { return { ok: false, reason: \"SHARED_V27_PROJECT_THROW\", error: clean(error && (error.message || error)) }; }\r\n    if (!model || model.readyForOffDomV27 !== true) return { ok: false, reason: \"SHARED_V27_MODEL_NOT_READY\", model: model };\r\n    return { ok: true, model: model };\r\n  }\r\n\r\n  function renderSvg(model) {\r\n    var renderer = W.CANFOTO_PDP_V27_SCHEMATIC;\r\n    if (!renderer || typeof renderer.renderScenario !== \"function\") return { ok: false, reason: \"V27_RENDERER_MISSING\" };\r\n    try {\r\n      var svg = renderer.renderScenario(model.v27Scene);\r\n      if (!svg) return { ok: false, reason: \"V27_RENDERER_EMPTY\" };\r\n      svg.setAttribute(\"data-lb24-r3-canonical-setup\", \"1\");\r\n      svg.setAttribute(\"data-setup-record-id\", clean(model.setupRecordId || \"\"));\r\n      return { ok: true, svgHtml: svg.outerHTML };\r\n    } catch (error) {\r\n      return { ok: false, reason: \"V27_RENDERER_THROW\", error: clean(error && (error.message || error)) };\r\n    }\r\n  }\r\n\r\n  function positionFor(dto, roleId) {\r\n    return (dto.positions || []).find(function (pos) { return pos && pos.roleId === roleId; }) || null;\r\n  }\r\n\r\n  function stepForRole(dto, role) {\r\n    var pos = positionFor(dto, role && role.id);\r\n    if (!role || !pos) return \"\";\r\n    var parts = [clean(role.label || \"I\u015F\u0131k\")];\r\n    if (num(pos.angleDeg) !== null) parts.push(fmt(pos.angleDeg) + \"\u00B0\");\r\n    if (num(pos.distanceM) !== null) parts.push(fmt(pos.distanceM) + \" m\");\r\n    if (pos.band) parts.push(clean(pos.band));\r\n    if (num(pos.heightM) !== null) parts.push(\"y\u00FCkseklik \" + fmt(pos.heightM) + \" m\");\r\n    return parts.join(\" \u00B7 \");\r\n  }\r\n\r\n  function steps(dto) {\r\n    var out = (dto.powered || []).slice(0, 2).map(function (role) { return stepForRole(dto, role); }).filter(Boolean);\r\n    var camera = dto.camera || {};\r\n    var cameraParts = [\"Kamera\"];\r\n    if (num(camera.distanceM) !== null) cameraParts.push(fmt(camera.distanceM) + \" m\");\r\n    if (camera.frameOrientation) cameraParts.push(clean(camera.frameOrientation));\r\n    if (cameraParts.length > 1) out.push(cameraParts.join(\" \u00B7 \"));\r\n    return out.slice(0, 3);\r\n  }\r\n\r\n  function buildPreview(product, slot) {\r\n    var dtoResult = dtoFor(product);\r\n    if (!dtoResult.ok) return dtoResult;\r\n    var projection = projectDto(dtoResult.dto);\r\n    if (!projection.ok) return projection;\r\n    var svg = renderSvg(projection.model);\r\n    if (!svg.ok) return svg;\r\n\r\n    var dto = dtoResult.dto;\r\n    var firstRole = dto.powered && dto.powered[0] ? dto.powered[0] : null;\r\n    var firstPos = firstRole ? positionFor(dto, firstRole.id) : null;\r\n    var specs = product && (product.panelSpecs || product.specs) || {};\r\n    var decision = compareResult();\r\n\r\n    return {\r\n      ok: true,\r\n      r3ExactCanonical: true,\r\n      r3DecisionState: decision && decision.decisionState || \"\",\r\n      r3CompareSlot: slot || \"A\",\r\n      r3SetupRecordId: dto.setupRecordId,\r\n      r3ScenarioType: dtoResult.scenarioType,\r\n      r3ScenarioPolicy: \"R32_PRODUCT_ROW_FAMILY_POWER\",\r\n      r3ProductFamily: fs3B2ProductFamily(product),\r\n      r3ProductPowerW: fs3B2ProductPower(product),\r\n      r3SourceStatus: clean(dto.source && dto.source.status),\r\n      r3Dto: dto,\r\n      r3Model: projection.model,\r\n      r3CanonicalSvgHtml: svg.svgHtml,\r\n      productKey: productKey(product),\r\n      title: offerTitle(product),\r\n      selectedTemplateKey: dto.setupRecordId,\r\n      selectedTemplateLabel: clean(dto.scenario && dto.scenario.scenarioLabel) || dtoResult.scenarioType,\r\n      format: \"canonical_dto_v27_exact\",\r\n      safeCopy: \"Se\u00E7ili ama\u00E7 ve alt amac\u0131n canonical kurulum kayd\u0131 kullan\u0131l\u0131r.\",\r\n      safeNote: \"Kurulum; exact selectionKey \u2192 setupRecordId \u2192 CanonicalSetupDTO zincirinden okunur.\",\r\n      steps: steps(dto),\r\n      elements: [],\r\n      p33Canonical: {\r\n        identity: {\r\n          title: offerTitle(product),\r\n          image: product && product.image || \"\",\r\n          powerW: specs.powerW || \"\",\r\n          family: specs.family || \"\",\r\n          colorConfidence: specs.colorLabel || \"\"\r\n        },\r\n        profile: { key: \"CANONICAL_SETUP_DTO\", label: \"Canonical Setup DTO\" }\r\n      },\r\n      dataInfluence: {\r\n        powerW: specs.powerW || \"\",\r\n        hasRgb: !!specs.hasRgb,\r\n        isBiColor: specs.family === \"bicolor\",\r\n        colorConfidence: specs.colorLabel || \"\",\r\n        p33DistanceProfile: \"CANONICAL_SETUP_DTO\",\r\n        p33DistanceLabel: \"Exact source geometry\",\r\n        p33VisualDistanceEncoded: true,\r\n        roleSuitabilityText: \"Mesafe, a\u00E7\u0131 ve y\u00FCkseklik de\u011Ferleri CanonicalSetupDTO kayna\u011F\u0131ndan okunur.\"\r\n      },\r\n      rolePreview: {\r\n        primaryRole: firstRole ? { roleLabel: firstRole.label, label: firstRole.label } : null,\r\n        primaryArea: firstRole ? { areaLabel: firstRole.target || \"Konu\" } : null,\r\n        primarySetup: { setupLabel: clean(dto.scenario && dto.scenario.scenarioLabel) || dtoResult.scenarioType },\r\n        primaryPosition: firstPos\r\n      }\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var a = primaryProduct();\r\n    var b = secondaryProduct();\r\n    var pa = a ? buildPreview(a, \"A\") : { ok: false, reason: \"PRIMARY_MISSING\" };\r\n    var pb = b ? buildPreview(b, \"B\") : { ok: false, reason: \"SECONDARY_MISSING\" };\r\n    return {\r\n      ok: !!(pa.ok && pb.ok),\r\n      version: VERSION,\r\n      decisionState: compareResult() && compareResult().decisionState || \"\",\r\n      exactTie: isExactTie(),\r\n      selection: selection(),\r\n      primary: pa,\r\n      secondary: pb,\r\n      noTouch: {\r\n        purposeScore: true,\r\n        ranking: true,\r\n        generalFpFormula: true,\r\n        setupTruthOwner: true,\r\n        pdpTop5: true,\r\n        collectionR9: true,\r\n        commerce: true\r\n      }\r\n    };\r\n  }\r\n\r\n  W[GLOBAL] = Object.freeze({\r\n    version: VERSION,\r\n    compareResult: compareResult,\r\n    isExactTie: isExactTie,\r\n    selection: selection,\r\n    preferredScenarioType: preferredScenarioType,\r\n    productAwareScenarioParity: true,\r\n    productScenarioPolicy: \"R32_PRODUCT_ROW_FAMILY_POWER\",\r\n    primaryProduct: primaryProduct,\r\n    secondaryProduct: secondaryProduct,\r\n    offerTitle: offerTitle,\r\n    buildPreview: buildPreview,\r\n    debug: debug\r\n  });\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P33-2 P28 CANONICAL POSITION RENDER BRIDGE\r\n   Faz: PANEL-V4-P33-2-CANONICAL-POSITION-RENDER-BRIDGE-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P28-1 \u015Fema registry preview \u00E7\u0131kt\u0131s\u0131n\u0131 P27 Kullan\u0131m ve Setup Analizi i\u00E7ine\r\n     g\u00F6r\u00FCn\u00FCr, kompakt \u015Fema olarak ba\u011Flar.\r\n   - Ana format: compact_hybrid_schema_steps = mini \u015Fema + 3 ad\u0131ml\u0131 kurulum \u00F6zeti.\r\n   - \u00DCr\u00FCn / usecase / RGB / Bi-Color / Watt / CRI-TLCI etkileri P28-1 API'den gelir.\r\n   - P27 bridge d\u0131\u015F\u0131na render yapmaz.\r\n\r\n   Gereken \u00F6nceki API'ler:\r\n   - window.GDX_PANEL_LED_V4_P28_SCHEMATIC_REGISTRY\r\n   - window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE\r\n   - window.GDX_PANEL_LED_V4\r\n\r\n   Uygulama:\r\n   - assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN SONUNA ekleyin.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P33-2-CANONICAL-POSITION-RENDER-BRIDGE-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var RESULT_ID = \"gdxPanelV4ResultPreview\";\r\n  var BRIDGE_ATTR = \"data-gdx-panel-p28-schematic\";\r\n  var P27_BRIDGE_SELECTOR = '[data-gdx-panel-p27-render-bridge=\"1\"]';\r\n\r\n  var state = {\r\n    scheduled: false,\r\n    renderCount: 0,\r\n    lastRenderAt: \"\",\r\n    lastRenderedKey: \"\",\r\n    lastDebug: null\r\n  };\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\"\r\n  ];\r\n\r\n  function root() {\r\n    return document.getElementById(ROOT_ID);\r\n  }\r\n\r\n  function resultEl() {\r\n    return document.getElementById(RESULT_ID);\r\n  }\r\n\r\n  function apiRoot() {\r\n    return window.GDX_PANEL_LED_V4 || {};\r\n  }\r\n\r\n  function registry() {\r\n    return window.GDX_PANEL_LED_V4_P28_SCHEMATIC_REGISTRY || null;\r\n  }\r\n\r\n  function p33Engine() {\r\n    return window.GDX_PANEL_LED_V4_P33_CANONICAL_SCHEMATIC_ENGINE || null;\r\n  }\r\n\r\n  function cleanText(value) {\r\n    return String(value || \"\").replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function lower(value) {\r\n    return cleanText(value).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value === undefined || value === null ? \"\" : value).replace(/[&<>\"']/g, function (char) {\r\n      return ({ \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" })[char];\r\n    });\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n\r\n    return found;\r\n  }\r\n\r\n  function products() {\r\n    var api = apiRoot();\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function normalizeTitle(value) {\r\n    return lower(value).replace(/[^a-z0-9\u011F\u00FC\u015F\u00F6\u00E7\u0131\u0130\u011E\u00DC\u015E\u00D6\u00C7]+/gi, \" \").replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function productTitle(product) {\r\n    return cleanText(product && (product.smartTitle || product.shortTitle || product.displayTitle || product.title || \"\"));\r\n  }\r\n\r\n  function findProductByTitle(title) {\r\n    var want = normalizeTitle(title);\r\n    var list = products();\r\n    var best = null;\r\n    var bestScore = 0;\r\n\r\n    if (!want) return null;\r\n\r\n    list.forEach(function (product) {\r\n      [\r\n        product.smartTitle,\r\n        product.shortTitle,\r\n        product.displayTitle,\r\n        product.title,\r\n        product.handle,\r\n        product.key\r\n      ].filter(Boolean).forEach(function (candidate) {\r\n        var norm = normalizeTitle(candidate);\r\n        var score = 0;\r\n        var a;\r\n        var b;\r\n        var hits;\r\n\r\n        if (!norm) return;\r\n\r\n        if (norm === want) {\r\n          score = 100;\r\n        } else if (norm.indexOf(want) > -1 || want.indexOf(norm) > -1) {\r\n          score = Math.min(norm.length, want.length);\r\n        } else {\r\n          a = want.split(\" \");\r\n          b = norm.split(\" \");\r\n          hits = a.filter(function (part) { return part && b.indexOf(part) > -1; }).length;\r\n          score = hits * 12;\r\n        }\r\n\r\n        if (score > bestScore) {\r\n          bestScore = score;\r\n          best = product;\r\n        }\r\n      });\r\n    });\r\n\r\n    return bestScore >= 24 ? best : null;\r\n  }\r\n\r\n  function findWinnerProduct() {\r\n    var r3 = window.CANFOTO_LB24_R3_COMPARE_TRUTH || null;\r\n    if (r3 && typeof r3.primaryProduct === \"function\") {\r\n      var exact = r3.primaryProduct();\r\n      if (exact) return exact;\r\n    }\r\n\r\n    var res = resultEl();\r\n    var card;\r\n    var titleEl;\r\n    var title;\r\n\r\n    if (!res) return null;\r\n    card = res.querySelector(\".gdx-panel-v4-compare-card.is-winner\") || res.querySelector(\".gdx-panel-v4-compare-card\");\r\n    if (!card) return null;\r\n    titleEl = card.querySelector(\"h4\");\r\n    title = titleEl ? cleanText(titleEl.textContent || \"\") : \"\";\r\n    return findProductByTitle(title);\r\n  }\r\n\r\n  function p27Bridge() {\r\n    var r = root();\r\n    return r ? r.querySelector(P27_BRIDGE_SELECTOR) : null;\r\n  }\r\n\r\n  function inferUsecaseKey() {\r\n    var bridge = p27Bridge();\r\n    if (bridge && bridge.getAttribute(\"data-p27-usecase\")) {\r\n      return bridge.getAttribute(\"data-p27-usecase\");\r\n    }\r\n\r\n    return \"content_creation_social\";\r\n  }\r\n\r\n  function viewportMode() {\r\n    return window.innerWidth && window.innerWidth <= 749 ? \"mobile\" : \"desktop\";\r\n  }\r\n\r\n  function removeExisting() {\r\n    var r = root();\r\n    if (!r) return;\r\n\r\n    Array.prototype.slice.call(r.querySelectorAll(\"[\" + BRIDGE_ATTR + \"]\")).forEach(function (el) {\r\n      if (el && el.parentNode) el.parentNode.removeChild(el);\r\n    });\r\n  }\r\n\r\n  function elementClass(type) {\r\n    type = String(type || \"\");\r\n    if (type === \"camera\") return \"is-camera\";\r\n    if (type === \"subject\") return \"is-subject\";\r\n    if (type === \"product\") return \"is-product\";\r\n    if (type === \"table\") return \"is-table\";\r\n    if (type === \"background\") return \"is-background\";\r\n    if (type === \"fillLight\") return \"is-fill\";\r\n    if (type === \"rgbAtmosphereLight\") return \"is-rgb\";\r\n    if (type === \"rimLight\" || type === \"hairLight\" || type === \"backgroundLight\") return \"is-accent\";\r\n    return \"is-light\";\r\n  }\r\n\r\n  function elementShortLabel(el) {\r\n    var map = {\r\n      camera: \"KAMERA\",\r\n      subject: \"K\u0130\u015E\u0130\",\r\n      product: \"\u00DCR\u00DCN\",\r\n      table: \"MASA\",\r\n      background: \"FON\",\r\n      keyLight: \"KEY\",\r\n      fillLight: \"FILL\",\r\n      rimLight: \"RIM\",\r\n      hairLight: \"HAIR\",\r\n      backgroundLight: \"BG\",\r\n      rgbAtmosphereLight: \"RGB\",\r\n      mobileOutdoorLight: \"MOB\"\r\n    };\r\n\r\n    return el.label || map[el.type] || el.type || \"ROL\";\r\n  }\r\n\r\n  function elementHtml(el) {\r\n    el = el || {};\r\n\r\n    var x = Math.max(4, Math.min(96, Number(el.x || 50)));\r\n    var y = Math.max(4, Math.min(96, Number(el.y || 50)));\r\n    var cls = elementClass(el.type);\r\n    var label = elementShortLabel(el);\r\n    var meta = [el.angle, el.distance].filter(Boolean).join(\" \u00B7 \");\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p28-schema-node ' + escapeHtml(cls) + '\" data-p28-element=\"' + escapeHtml(el.type || \"\") + '\" style=\"left:' + escapeHtml(String(x)) + '%;top:' + escapeHtml(String(y)) + '%;\">' +\r\n        '<span>' + escapeHtml(label) + '</span>' +\r\n        (meta ? '<em>' + escapeHtml(meta) + '</em>' : '') +\r\n      '</div>';\r\n  }\r\n\r\n  function stepHtml(step, index) {\r\n    return '' +\r\n      '<li>' +\r\n        '<b>' + escapeHtml(String(index + 1)) + '</b>' +\r\n        '<span>' + escapeHtml(step || \"\") + '</span>' +\r\n      '</li>';\r\n  }\r\n\r\n  function influenceChipHtml(preview) {\r\n    var inf = preview && preview.dataInfluence ? preview.dataInfluence : {};\r\n    var chips = [];\r\n\r\n    if (inf.powerW) chips.push(inf.powerW + \"W\");\r\n    if (inf.hasRgb) chips.push(\"RGB\");\r\n    if (inf.isBiColor) chips.push(\"Bi-Color\");\r\n    if (inf.colorConfidence) chips.push(inf.colorConfidence);\r\n    /* P1.20H: internal preview.format key is not customer-visible copy. */\r\n\r\n    return chips.slice(0, 5).map(function (chip) {\r\n      return '<span>' + escapeHtml(chip) + '</span>';\r\n    }).join(\"\");\r\n  }\r\n\r\n  function identityInitial(title) {\r\n    var text = String(title || \"\").replace(/^\\s+|\\s+$/g, \"\");\r\n    return text ? text.charAt(0).toLocaleUpperCase(\"tr-TR\") : \"P\";\r\n  }\r\n\r\n  function identityMediaHtml(identity, title) {\r\n    var image = identity && identity.image ? identity.image : \"\";\r\n    var alt = title || (identity && identity.title) || \"\u00DCr\u00FCn\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p33-identity-media\">' +\r\n        (image\r\n          ? '<img src=\"' + escapeHtml(image) + '\" alt=\"' + escapeHtml(alt) + '\" loading=\"lazy\" decoding=\"async\">'\r\n          : '<span>' + escapeHtml(identityInitial(alt)) + '</span>') +\r\n      '</div>';\r\n  }\r\n\r\n  function schemaIdentityHtml(preview) {\r\n    var identity = preview && preview.p33Canonical && preview.p33Canonical.identity ? preview.p33Canonical.identity : {};\r\n    var title = identity.title || preview.title || \"Se\u00E7ili \u00DCr\u00FCn\";\r\n    var subtitle = preview.selectedTemplateLabel || \"Kompakt Setup \u015Eemas\u0131\";\r\n    var copy = preview.safeCopy || \"Bu \u015Fema rol, a\u00E7\u0131 ve mesafe band\u0131n\u0131 g\u00F6sterir.\";\r\n    var kicker = preview && preview.r3DecisionState === \"EXACT_TIE\" ? ((preview.r3CompareSlot || \"A\") + \" \u00DCR\u00DCN\u00DC KURULUMU\") : \"\u00D6NER\u0130LEN KURULUM\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p33-schema-identity\" data-p33-schema-identity=\"winner\">' +\r\n        identityMediaHtml(identity, title) +\r\n        '<div class=\"gdx-p33-identity-copy\">' +\r\n          '<span class=\"gdx-p28-kicker\">' + escapeHtml(kicker) + '</span>' +\r\n          '<strong class=\"gdx-p33-identity-title\">' + escapeHtml(title) + '</strong>' +\r\n          '<em class=\"gdx-p33-identity-sub\">' + escapeHtml(subtitle) + '</em>' +\r\n          '<p>' + escapeHtml(copy) + '</p>' +\r\n        '</div>' +\r\n      '</div>';\r\n  }\r\n\r\n  function canvasHtml(preview) {\r\n    if (preview && preview.r3CanonicalSvgHtml) {\r\n      return '<div class=\"gdx-p28-schema-canvas is-r3-canonical-v27\" data-lb24-r3-exact-canvas=\"1\">' + preview.r3CanonicalSvgHtml + '</div>';\r\n    }\r\n\r\n    var elements = Array.isArray(preview.elements) ? preview.elements : [];\r\n    var bg = elements.some(function (el) { return el.type === \"background\"; });\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p28-schema-canvas\" aria-label=\"Setup \u015Femas\u0131\">' +\r\n        (bg ? '<div class=\"gdx-p28-schema-bg-line\"><span>FON / ARKA PLAN</span></div>' : '') +\r\n        elements.map(elementHtml).join(\"\") +\r\n      '</div>';\r\n  }\r\n\r\n  function renderHtml(preview) {\r\n    var role = preview.rolePreview && preview.rolePreview.primaryRole ? preview.rolePreview.primaryRole : null;\r\n    var area = preview.rolePreview && preview.rolePreview.primaryArea ? preview.rolePreview.primaryArea : null;\r\n    var setup = preview.rolePreview && preview.rolePreview.primarySetup ? preview.rolePreview.primarySetup : null;\r\n    var summaryParts = [];\r\n\r\n    if (role && role.roleLabel) summaryParts.push(role.roleLabel);\r\n    if (area && area.areaLabel) summaryParts.push(area.areaLabel);\r\n    if (setup && setup.setupLabel) summaryParts.push(setup.setupLabel);\r\n\r\n    return '' +\r\n      '<section class=\"gdx-p28-schematic\" ' + BRIDGE_ATTR + '=\"1\" data-p28-version=\"' + escapeHtml(VERSION) + '\" data-p28-template=\"' + escapeHtml(preview.selectedTemplateKey || \"\") + '\" data-p28-format=\"' + escapeHtml(preview.format || \"\") + '\" data-p33-profile=\"' + escapeHtml(preview.dataInfluence && preview.dataInfluence.p33DistanceProfile || \"\") + '\" data-p33-canonical=\"1\">' +\r\n        '<div class=\"gdx-p28-schema-head is-p33-identity-head\">' +\r\n          schemaIdentityHtml(preview) +\r\n          '<div class=\"gdx-p28-schema-chips\">' + influenceChipHtml(preview) + '</div>' +\r\n        '</div>' +\r\n\r\n        '<div class=\"gdx-p28-schema-layout\">' +\r\n          canvasHtml(preview) +\r\n          '<div class=\"gdx-p28-schema-side\">' +\r\n            '<strong>3 ad\u0131ml\u0131 kurulum \u00F6zeti</strong>' +\r\n            '<ol>' + (preview.steps || []).slice(0, 3).map(stepHtml).join(\"\") + '</ol>' +\r\n          '</div>' +\r\n        '</div>' +\r\n\r\n        (summaryParts.length\r\n          ? '<div class=\"gdx-p28-schema-summary\">' + escapeHtml(summaryParts.join(\" \u00B7 \")) + '</div>'\r\n          : '') +\r\n\r\n        '<p class=\"gdx-p28-schema-note\">' + escapeHtml((preview.dataInfluence && preview.dataInfluence.roleSuitabilityText) || \"\") + '</p>' +\r\n      '</section>';\r\n  }\r\n\r\n  function insertSchematic(html) {\r\n    var bridge = p27Bridge();\r\n    var anchor;\r\n\r\n    if (!bridge) return false;\r\n\r\n    removeExisting();\r\n\r\n    anchor = bridge.querySelector('[data-p27-block=\"role_setup_preview\"]') ||\r\n      bridge.querySelector('[data-p27-block=\"setup_recommendation\"]') ||\r\n      bridge.lastElementChild;\r\n\r\n    if (!anchor || !anchor.parentNode) return false;\r\n\r\n    var holder = document.createElement(\"div\");\r\n    holder.innerHTML = html;\r\n\r\n    anchor.parentNode.insertBefore(holder.firstChild, anchor.nextSibling);\r\n\r\n    return true;\r\n  }\r\n\r\n  function buildPreviewForCurrent() {\r\n    var product = findWinnerProduct();\r\n    var r3 = window.CANFOTO_LB24_R3_COMPARE_TRUTH || null;\r\n\r\n    if (!product) return { ok: false, reason: \"primary compare product not found\" };\r\n    if (!r3 || typeof r3.buildPreview !== \"function\") {\r\n      return { ok: false, reason: \"LB2.4-R3 canonical compare bridge missing\", productKey: product.key || \"\" };\r\n    }\r\n\r\n    /* R3-C fail-closed: generic usecase -> buildPreview is intentionally not used. */\r\n    return r3.buildPreview(product, \"A\");\r\n  }\r\n\r\n  function render() {\r\n    var preview = buildPreviewForCurrent();\r\n    var key;\r\n    var forbiddenFound;\r\n    var ok;\r\n\r\n    if (!preview || !preview.ok) {\r\n      removeExisting();\r\n      state.lastDebug = {\r\n        ok: false,\r\n        version: VERSION,\r\n        reason: preview && preview.reason ? preview.reason : \"preview guard failed\",\r\n        preview: preview || null,\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        upperRecommendationTouched: false\r\n      };\r\n      return false;\r\n    }\r\n\r\n    forbiddenFound = scanForbidden(preview);\r\n\r\n    if (forbiddenFound.length) {\r\n      removeExisting();\r\n      state.lastDebug = {\r\n        ok: false,\r\n        version: VERSION,\r\n        reason: \"forbidden guard\",\r\n        forbiddenFound: forbiddenFound,\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        upperRecommendationTouched: false\r\n      };\r\n      return false;\r\n    }\r\n\r\n    key = [\r\n      preview.productKey,\r\n      preview.usecaseKey,\r\n      preview.viewportMode,\r\n      preview.selectedTemplateKey,\r\n      preview.elements && preview.elements.length,\r\n      preview.steps && preview.steps.join(\"|\")\r\n    ].join(\"::\");\r\n\r\n    if (state.lastRenderedKey === key && root() && root().querySelector(\"[\" + BRIDGE_ATTR + \"]\")) {\r\n      return true;\r\n    }\r\n\r\n    ok = insertSchematic(renderHtml(preview));\r\n\r\n    state.lastRenderedKey = ok ? key : \"\";\r\n    state.lastRenderAt = ok ? new Date().toISOString() : state.lastRenderAt;\r\n    state.renderCount += ok ? 1 : 0;\r\n    state.lastDebug = {\r\n      ok: ok,\r\n      version: VERSION,\r\n      productKey: preview.productKey,\r\n      title: preview.title,\r\n      usecaseKey: preview.usecaseKey,\r\n      templateKey: preview.selectedTemplateKey,\r\n      format: preview.format,\r\n      p33EngineReady: !!p33Engine(),\r\n      p33CanonicalApplied: !!preview.p33Canonical,\r\n      p33DistanceProfile: preview.dataInfluence && preview.dataInfluence.p33DistanceProfile || \"\",\r\n      mobileDesktopParity: !!preview.mobileDesktopParity,\r\n      visualDistanceEncoded: !!preview.visualDistanceEncoded,\r\n      p33IdentityFound: !!(root() && root().querySelector(\"[\" + BRIDGE_ATTR + \"='1'] [data-p33-schema-identity]\")),\r\n      p33IdentityImageFound: !!(root() && root().querySelector(\"[\" + BRIDGE_ATTR + \"='1'] [data-p33-schema-identity] img\")),\r\n      elementCount: preview.elements ? preview.elements.length : 0,\r\n      stepCount: preview.steps ? preview.steps.length : 0,\r\n      forbiddenFound: [],\r\n      exactM2Claims: false,\r\n      scoreTouched: false,\r\n      visibleRenderTouched: ok,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      upperRecommendationTouched: false\r\n    };\r\n\r\n    return ok;\r\n  }\r\n\r\n  function schedule() {\r\n    if (state.scheduled) return;\r\n    state.scheduled = true;\r\n\r\n    window.setTimeout(function () {\r\n      state.scheduled = false;\r\n      render();\r\n    }, 180);\r\n  }\r\n\r\n  function observeP27Bridge() {\r\n    var bridge = p27Bridge();\r\n    var obs;\r\n\r\n    if (!bridge || bridge.getAttribute(\"data-p28-schema-observed\") === \"1\") return;\r\n\r\n    bridge.setAttribute(\"data-p28-schema-observed\", \"1\");\r\n\r\n    obs = new MutationObserver(function () {\r\n      schedule();\r\n    });\r\n\r\n    obs.observe(bridge, { childList: true, subtree: true });\r\n\r\n    schedule();\r\n  }\r\n\r\n  function boot() {\r\n    [160, 460, 900, 1600, 2600].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        observeP27Bridge();\r\n        schedule();\r\n      }, delay);\r\n    });\r\n\r\n    document.addEventListener(\"click\", function () {\r\n      window.setTimeout(function () {\r\n        observeP27Bridge();\r\n        schedule();\r\n      }, 240);\r\n    }, true);\r\n\r\n    window.addEventListener(\"resize\", function () {\r\n      window.setTimeout(schedule, 180);\r\n    });\r\n  }\r\n\r\n  function debug() {\r\n    var r = root();\r\n    var bridge = r ? r.querySelector(\"[\" + BRIDGE_ATTR + \"]\") : null;\r\n    var preview = buildPreviewForCurrent();\r\n    var forbiddenFound = [];\r\n\r\n    if (bridge) forbiddenFound = forbiddenFound.concat(scanForbidden(bridge.textContent || \"\"));\r\n    if (preview) forbiddenFound = forbiddenFound.concat(scanForbidden(preview));\r\n\r\n    return {\r\n      ok: !!bridge && !!preview && !!preview.ok && !forbiddenFound.length,\r\n      version: VERSION,\r\n      bridgeFound: !!bridge,\r\n      registryReady: !!registry(),\r\n      p27BridgeFound: !!p27Bridge(),\r\n      productCount: products().length,\r\n      productKey: preview && preview.productKey ? preview.productKey : \"\",\r\n      usecaseKey: preview && preview.usecaseKey ? preview.usecaseKey : \"\",\r\n      selectedTemplateKey: preview && preview.selectedTemplateKey ? preview.selectedTemplateKey : \"\",\r\n      selectedTemplateLabel: preview && preview.selectedTemplateLabel ? preview.selectedTemplateLabel : \"\",\r\n      format: preview && preview.format ? preview.format : \"\",\r\n      elementCount: preview && preview.elements ? preview.elements.length : 0,\r\n      stepCount: preview && preview.steps ? preview.steps.length : 0,\r\n      renderCount: state.renderCount,\r\n      lastRenderAt: state.lastRenderAt,\r\n      forbiddenFound: forbiddenFound,\r\n      exactM2Claims: false,\r\n      scoreTouched: false,\r\n      visibleRenderTouched: !!bridge,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      upperRecommendationTouched: false,\r\n      lastDebug: state.lastDebug\r\n    };\r\n  }\r\n\r\n  var API = {\r\n    version: VERSION,\r\n    schedule: schedule,\r\n    render: render,\r\n    debug: debug,\r\n    buildPreviewForCurrent: buildPreviewForCurrent,\r\n    scanForbidden: scanForbidden\r\n  };\r\n\r\n  window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER = API;\r\n  window.debugP28SchematicRender = debug;\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\"DOMContentLoaded\", boot, { once: true });\r\n  } else {\r\n    boot();\r\n  }\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P33-2 P31 ALT PRODUCT CANONICAL POSITION RENDER\r\n   Faz: PANEL-V4-P33-2-CANONICAL-POSITION-RENDER-BRIDGE-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P31-5'teki alternatif \u00FCr\u00FCn \u015Femas\u0131n\u0131 P28 ana setup \u015Femas\u0131yla ayn\u0131 DOM/class\r\n     format\u0131na ta\u015F\u0131r.\r\n   - Kazanan \u00FCr\u00FCn P28 ana \u015Femada kal\u0131r.\r\n   - Di\u011Fer \u00FCr\u00FCn, P28 ile ayn\u0131 \u015Fematik HTML diliyle \"ALTERNAT\u0130F \u00DCR\u00DCN SETUP \u015EEMASI\"\r\n     olarak gelir.\r\n   - Eski iki kartl\u0131 setup kar\u015F\u0131la\u015Ft\u0131rmas\u0131 h\u00E2l\u00E2 tamamen kald\u0131r\u0131lm\u0131\u015F kal\u0131r.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P33-2-CANONICAL-POSITION-RENDER-BRIDGE-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var RESULT_ID = \"gdxPanelV4ResultPreview\";\r\n  var BRIDGE_ATTR = \"data-gdx-panel-p27-render-bridge\";\r\n  var BLOCK_ATTR = \"data-p27-block\";\r\n  var ALT_ATTR = \"data-gdx-panel-p31-alt-schematic\";\r\n\r\n  var state = { scheduled: false, lastRenderedKey: \"\", lastRenderAt: \"\", renderCount: 0, lastDebug: null };\r\n\r\n  var FORBIDDEN_PHRASES = [\r\n    \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n    \"G\u00FCncel stok\",\r\n    \"G\u00FCncel fiyat\",\r\n    \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n    \"Kontrol ederek\",\r\n    \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n    \"kaybeden \u00FCr\u00FCn\",\r\n    \"kaybeden\",\r\n    \"ger\u00E7ek lumen de\u011Feri\",\r\n    \"kesin m\u00B2\",\r\n    \"garanti lux\",\r\n    \"TLCI tahmini\",\r\n    \"CRI tahmini\",\r\n    \"flicker-free kabul edilir\",\r\n    \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\",\r\n    \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n    \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n    \"kesin ayd\u0131nlat\u0131r\",\r\n    \"kesin mesafe\"\r\n  ];\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n  function resultEl() { return document.getElementById(RESULT_ID); }\r\n  function apiRoot() { return window.GDX_PANEL_LED_V4 || {}; }\r\n  function assembler() { return window.GDX_PANEL_LED_V4_P27_COMMENT_ASSEMBLER || null; }\r\n  function roleSetup() { return window.GDX_PANEL_LED_V4_P27_ROLE_SETUP_PREVIEW || null; }\r\n  function registry() { return window.GDX_PANEL_LED_V4_P27_RESEARCH_REGISTRY || null; }\r\n  function altApi() { return window.GDX_PANEL_LED_V4_P31_ALT_PRODUCT_SETUP_PREVIEW || null; }\r\n\r\n  function p33Engine() { return window.GDX_PANEL_LED_V4_P33_CANONICAL_SCHEMATIC_ENGINE || null; }\r\n\r\n  function cleanText(value) { return String(value || \"\").replace(/\\s+/g, \" \").trim(); }\r\n  function lower(value) { return cleanText(value).toLocaleLowerCase(\"tr-TR\"); }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value === undefined || value === null ? \"\" : value).replace(/[&<>\"']/g, function (char) {\r\n      return ({ \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" })[char];\r\n    });\r\n  }\r\n\r\n  function scanForbidden(value) {\r\n    var text = typeof value === \"string\" ? value : JSON.stringify(value || {});\r\n    var found = [];\r\n    FORBIDDEN_PHRASES.forEach(function (phrase) {\r\n      if (text.indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n\r\n  function products() {\r\n    var api = apiRoot();\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productTitle(product) {\r\n    return cleanText(product && (product.smartTitle || product.shortTitle || product.displayTitle || product.title || \"\"));\r\n  }\r\n\r\n  function normalizeTitle(value) {\r\n    return lower(value).replace(/[^a-z0-9\u011F\u00FC\u015F\u00F6\u00E7\u0131\u0130\u011E\u00DC\u015E\u00D6\u00C7]+/gi, \" \").replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function findProductByTitle(title) {\r\n    var want = normalizeTitle(title);\r\n    var list = products();\r\n    var best = null;\r\n    var bestScore = 0;\r\n\r\n    if (!want) return null;\r\n\r\n    list.forEach(function (product) {\r\n      [product.smartTitle, product.shortTitle, product.displayTitle, product.title, product.handle, product.key]\r\n        .filter(Boolean).forEach(function (candidate) {\r\n          var norm = normalizeTitle(candidate);\r\n          var score = 0;\r\n\r\n          if (norm === want) score = 100;\r\n          else if (norm.indexOf(want) > -1 || want.indexOf(norm) > -1) score = Math.min(norm.length, want.length);\r\n          else {\r\n            var a = want.split(\" \");\r\n            var b = norm.split(\" \");\r\n            score = a.filter(function (part) { return part && b.indexOf(part) > -1; }).length * 12;\r\n          }\r\n\r\n          if (score > bestScore) { bestScore = score; best = product; }\r\n        });\r\n    });\r\n\r\n    return bestScore >= 24 ? best : null;\r\n  }\r\n\r\n  function findWinnerCard() {\r\n    var res = resultEl();\r\n    if (!res) return null;\r\n    return res.querySelector(\".gdx-panel-v4-compare-card.is-winner\") || res.querySelector(\".gdx-panel-v4-compare-card\");\r\n  }\r\n\r\n  function findCurrentWinnerProduct() {\r\n    var r3 = window.CANFOTO_LB24_R3_COMPARE_TRUTH || null;\r\n    if (r3 && typeof r3.primaryProduct === \"function\") {\r\n      var product = r3.primaryProduct();\r\n      if (product) return product;\r\n    }\r\n    var card = findWinnerCard();\r\n    var titleEl = card ? card.querySelector(\"h4\") : null;\r\n    var title = titleEl ? cleanText(titleEl.textContent || \"\") : \"\";\r\n    return findProductByTitle(title);\r\n  }\r\n\r\n  /* =========================================================\r\n     PANEL-V4-R36-H-R8-06C-USECASE-SELECTION-PARITY-V1\r\n\r\n     PURPOSE:\r\n     - P27 visible usecase owner reads the canonical R28 selection state first.\r\n     - activePurposeKey + activeSubPurposeKey become the deterministic input.\r\n     - Legacy DOM text inference remains fallback-only for startup safety.\r\n     - Ranking, scoring, product order, geometry, AF04, NORA, commerce,\r\n       share, A3 and gallery are untouched.\r\n     ========================================================= */\r\n\r\n  var R806C_SELECTION_USECASE_MAP = Object.freeze({\r\n    \"product_ecommerce::small_product_tabletop\": \"ecommerce_product_photo\",\r\n    \"product_ecommerce::large_product_model\": \"ecommerce_product_photo\",\r\n    \"product_ecommerce::marketplace_catalog\": \"ecommerce_product_photo\",\r\n\r\n    \"youtube_reels_social::single_person_video\": \"content_creation_social\",\r\n    \"youtube_reels_social::short_video_reels\": \"content_creation_social\",\r\n    \"youtube_reels_social::reels_tiktok_short\": \"content_creation_social\",\r\n    \"youtube_reels_social::live_stream_talk\": \"content_creation_social\",\r\n\r\n    \"interview_talking_head::single_interview\": \"interview_talking_head\",\r\n    \"interview_talking_head::two_person_interview\": \"interview_talking_head\",\r\n    \"interview_talking_head::corporate_training_video\": \"interview_talking_head\",\r\n    \"interview_talking_head::corporate_training\": \"interview_talking_head\",\r\n\r\n    \"clinic_aesthetic_dental::skin_face_capture\": \"clinical_aesthetic_medical\",\r\n    \"clinic_aesthetic_dental::skin_face_shoot\": \"clinical_aesthetic_medical\",\r\n    \"clinic_aesthetic_dental::dental_support\": \"clinical_aesthetic_medical\",\r\n    \"clinic_aesthetic_dental::clinic_social_content\": \"clinical_aesthetic_medical\",\r\n\r\n    \"rgb_creative_video::background_color_effect\": \"rgb_creative_fx\",\r\n    \"rgb_creative_video::music_clip_scene\": \"rgb_creative_fx\",\r\n    \"rgb_creative_video::music_clip_creative_scene\": \"rgb_creative_fx\",\r\n    \"rgb_creative_video::product_color_separation\": \"rgb_creative_fx\",\r\n\r\n    \"studio_professional::model_shoot\": \"studio_portrait_model\",\r\n    \"studio_professional::campaign_ad_visual\": \"studio_portrait_model\",\r\n    \"studio_professional::ad_campaign_visual\": \"studio_portrait_model\",\r\n    \"studio_professional::fixed_studio_setup\": \"studio_portrait_model\",\r\n\r\n    \"mobile_outdoor::battery_shoot\": \"mobile_outdoor_fast_setup\",\r\n    \"mobile_outdoor::portable_team\": \"mobile_outdoor_fast_setup\",\r\n    \"mobile_outdoor::fast_location_setup\": \"mobile_outdoor_fast_setup\",\r\n\r\n    \"starter_budget_practical::first_light_choice\": \"multi_purpose_small_studio\",\r\n    \"starter_budget_practical::budget_setup\": \"multi_purpose_small_studio\",\r\n    \"starter_budget_practical::small_space_solution\": \"multi_purpose_small_studio\",\r\n    \"starter_budget_practical::compact_solution\": \"multi_purpose_small_studio\"\r\n  });\r\n\r\n  var R806C_PURPOSE_USECASE_FALLBACK = Object.freeze({\r\n    product_ecommerce: \"ecommerce_product_photo\",\r\n    youtube_reels_social: \"content_creation_social\",\r\n    interview_talking_head: \"interview_talking_head\",\r\n    clinic_aesthetic_dental: \"clinical_aesthetic_medical\",\r\n    rgb_creative_video: \"rgb_creative_fx\",\r\n    studio_professional: \"studio_portrait_model\",\r\n    mobile_outdoor: \"mobile_outdoor_fast_setup\",\r\n    starter_budget_practical: \"multi_purpose_small_studio\"\r\n  });\r\n\r\n  function r806cReadR28Selection() {\r\n    var state =\r\n      window.GDX_PANEL_V4_R28_SELECTION_STATE ||\r\n      null;\r\n\r\n    if (!state) return null;\r\n\r\n    var purposeKey =\r\n      cleanText(state.activePurposeKey || \"\");\r\n\r\n    var subPurposeKey =\r\n      cleanText(state.activeSubPurposeKey || \"\");\r\n\r\n    if (!purposeKey || !subPurposeKey) {\r\n      return null;\r\n    }\r\n\r\n    return {\r\n      activePurposeKey: purposeKey,\r\n      activeSubPurposeKey: subPurposeKey,\r\n      activeSelectionKey:\r\n        cleanText(state.activeSelectionKey || \"\") ||\r\n        (purposeKey + \"::\" + subPurposeKey)\r\n    };\r\n  }\r\n\r\n  function r806cUsecaseFromR28Selection(selection) {\r\n    selection =\r\n      selection ||\r\n      r806cReadR28Selection();\r\n\r\n    if (!selection) return \"\";\r\n\r\n    var purposeKey =\r\n      cleanText(selection.activePurposeKey || \"\");\r\n\r\n    var subPurposeKey =\r\n      cleanText(selection.activeSubPurposeKey || \"\");\r\n\r\n    if (!purposeKey || !subPurposeKey) {\r\n      return \"\";\r\n    }\r\n\r\n    var selectionKey =\r\n      purposeKey + \"::\" + subPurposeKey;\r\n\r\n    if (R806C_SELECTION_USECASE_MAP[selectionKey]) {\r\n      return R806C_SELECTION_USECASE_MAP[selectionKey];\r\n    }\r\n\r\n    /*\r\n     * Compatibility guard:\r\n     * If a future alias changes only the sub-purpose key while the\r\n     * canonical main-purpose remains stable, preserve the correct\r\n     * narrative family instead of falling back to desk/content.\r\n     */\r\n    return (\r\n      R806C_PURPOSE_USECASE_FALLBACK[purposeKey] ||\r\n      \"\"\r\n    );\r\n  }\r\n\r\n  function inferUsecaseKey() {\r\n    /*\r\n     * R8-06C OWNER ORDER:\r\n     * 1) canonical R28 state\r\n     * 2) legacy DOM inference only if R28 state is unavailable\r\n     */\r\n    var mapped =\r\n      r806cUsecaseFromR28Selection(\r\n        r806cReadR28Selection()\r\n      );\r\n\r\n    if (mapped) {\r\n      return mapped;\r\n    }\r\n\r\n    var r = root();\r\n    var reg = registry();\r\n    var text = \"\";\r\n    var activeCandidates;\r\n\r\n    if (!r || !reg || !Array.isArray(reg.usecases)) {\r\n      return \"content_creation_social\";\r\n    }\r\n\r\n    activeCandidates =\r\n      Array.prototype.slice.call(\r\n        r.querySelectorAll(\r\n          \".is-active, [aria-pressed='true'], [aria-selected='true'], [data-active='true']\"\r\n        )\r\n      );\r\n\r\n    text =\r\n      activeCandidates\r\n        .map(function (el) {\r\n          return cleanText(\r\n            el.textContent ||\r\n            el.getAttribute(\"data-usecase\") ||\r\n            el.getAttribute(\"data-key\") ||\r\n            \"\"\r\n          );\r\n        })\r\n        .join(\" \");\r\n\r\n    if (!text) {\r\n      text = cleanText(r.textContent || \"\");\r\n    }\r\n\r\n    text = lower(text);\r\n\r\n    for (var i = 0; i < reg.usecases.length; i += 1) {\r\n      var u = reg.usecases[i];\r\n      var label = lower(u.label || \"\");\r\n\r\n      if (\r\n        label &&\r\n        text.indexOf(label.slice(0, 18)) > -1\r\n      ) {\r\n        return u.key;\r\n      }\r\n    }\r\n\r\n    return \"content_creation_social\";\r\n  }\r\n\r\n  function r806cDebugUsecaseParity() {\r\n    var selection =\r\n      r806cReadR28Selection();\r\n\r\n    var mapped =\r\n      r806cUsecaseFromR28Selection(\r\n        selection\r\n      );\r\n\r\n    var r = root();\r\n\r\n    var bridge =\r\n      r\r\n        ? r.querySelector(\r\n            '[data-gdx-panel-p27-render-bridge=\"1\"]'\r\n          )\r\n        : null;\r\n\r\n    var liveUsecase =\r\n      bridge\r\n        ? cleanText(\r\n            bridge.getAttribute(\r\n              \"data-p27-usecase\"\r\n            ) || \"\"\r\n          )\r\n        : \"\";\r\n\r\n    var winner =\r\n      r\r\n        ? r.querySelector(\r\n            '[data-gdx-panel-p28-schematic=\"1\"]'\r\n          )\r\n        : null;\r\n\r\n    var bridgeText =\r\n      cleanText(\r\n        bridge &&\r\n        bridge.textContent\r\n      );\r\n\r\n    var winnerText =\r\n      cleanText(\r\n        winner &&\r\n        winner.textContent\r\n      );\r\n\r\n    var selectionKey =\r\n      selection\r\n        ? (\r\n            selection.activePurposeKey +\r\n            \"::\" +\r\n            selection.activeSubPurposeKey\r\n          )\r\n        : \"\";\r\n\r\n    var studioModel =\r\n      selectionKey ===\r\n      \"studio_professional::model_shoot\";\r\n\r\n    var checks = {\r\n      r28SelectionReadable:\r\n        !!selection,\r\n\r\n      deterministicUsecaseResolved:\r\n        !!mapped,\r\n\r\n      p27BridgePresent:\r\n        !!bridge,\r\n\r\n      p27BridgeMatchesR28:\r\n        !!(\r\n          bridge &&\r\n          mapped &&\r\n          liveUsecase === mapped\r\n        ),\r\n\r\n      studioModelMapsToStudioPortrait:\r\n        !studioModel ||\r\n        mapped ===\r\n          \"studio_portrait_model\",\r\n\r\n      studioModelDeskRoleAbsent:\r\n        !studioModel ||\r\n        (\r\n          !/Desk Content Light|Masa Ba\u015F\u0131 \u0130\u00E7erik I\u015F\u0131\u011F\u0131/i.test(\r\n            bridgeText\r\n          ) &&\r\n          !/Desk Content Light|Masa Ba\u015F\u0131 \u0130\u00E7erik I\u015F\u0131\u011F\u0131/i.test(\r\n            winnerText\r\n          )\r\n        ),\r\n\r\n      studioModelDeskSetupAbsent:\r\n        !studioModel ||\r\n        (\r\n          !/1 I\u015F\u0131kl\u0131 Masa\u00FCst\u00FC \u0130\u00E7erik Kurulumu/i.test(\r\n            bridgeText\r\n          ) &&\r\n          !/1 I\u015F\u0131kl\u0131 Masa\u00FCst\u00FC \u0130\u00E7erik Kurulumu/i.test(\r\n            winnerText\r\n          )\r\n        ),\r\n\r\n      compareApiPreserved:\r\n        !!window.GDX_PANEL_LED_V4_COMPARE,\r\n\r\n      commerceApiPreserved:\r\n        !!window.GDX_PANEL_LED_V4_COMMERCE,\r\n\r\n      shareApiPreserved:\r\n        !!window.GDX_PANEL_LED_V4_SHARE\r\n    };\r\n\r\n    var failed =\r\n      Object.keys(checks)\r\n        .filter(function (key) {\r\n          return checks[key] !== true;\r\n        });\r\n\r\n    return {\r\n      phase:\r\n        \"PANEL-V4-R36-H-R8-06C-USECASE-SELECTION-PARITY-QA\",\r\n      version:\r\n        \"PANEL-V4-R36-H-R8-06C-USECASE-SELECTION-PARITY-V1\",\r\n      ok:\r\n        failed.length === 0,\r\n      checks:\r\n        checks,\r\n      failed:\r\n        failed,\r\n      selection:\r\n        selection,\r\n      mappedUsecase:\r\n        mapped,\r\n      liveP27Usecase:\r\n        liveUsecase,\r\n      noTouch: {\r\n        rankingTouched: false,\r\n        scoreTouched: false,\r\n        productOrderTouched: false,\r\n        af04GeometryTouched: false,\r\n        noraTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        a3Touched: false,\r\n        galleryTouched: false\r\n      }\r\n    };\r\n  }\r\n\r\n  window.GDX_PANEL_V4_R36_H_R8_06C_USECASE_PARITY = {\r\n    version:\r\n      \"PANEL-V4-R36-H-R8-06C-USECASE-SELECTION-PARITY-V1\",\r\n    map:\r\n      R806C_SELECTION_USECASE_MAP,\r\n    resolve:\r\n      r806cUsecaseFromR28Selection,\r\n    debug:\r\n      r806cDebugUsecaseParity\r\n  };\r\n\r\n  window.debugPanelV4R36HR806CUsecaseParity =\r\n    r806cDebugUsecaseParity;\r\n\r\n  function inferPersonaKey(usecaseKey) {\r\n    var reg = registry();\r\n    if (!reg || typeof reg.getPersonasForUsecase !== \"function\") return \"\";\r\n    var list = reg.getPersonasForUsecase(usecaseKey);\r\n    return list && list[0] ? list[0].key : \"\";\r\n  }\r\n\r\n  function blockTitle(key, fallback) {\r\n    var map = {\r\n      purpose_header: \"Kullan\u0131m Ba\u011Flam\u0131\",\r\n      technical_reason: \"Teknik Neden\",\r\n      persona_fit: \"Kimler \u0130\u00E7in\",\r\n      data_confidence: \"Veri G\u00FCveni\"\r\n    };\r\n    return map[key] || fallback || \"P27 Analiz\";\r\n  }\r\n\r\n  function renderBlock(block, tone) {\r\n    block = block || {};\r\n    return '' +\r\n      '<article class=\"gdx-panel-v4-reco-priority gdx-p27-block ' + escapeHtml(tone || \"\") + '\" ' + BLOCK_ATTR + '=\"' + escapeHtml(block.key || \"\") + '\">' +\r\n        '<div>' +\r\n          '<strong>' + escapeHtml(blockTitle(block.key, block.label)) + '</strong>' +\r\n          '<p>' + escapeHtml(block.text || \"\") + '</p>' +\r\n        '</div>' +\r\n        (block.confidence ? '<span class=\"gdx-p27-data-chip\" data-p27-confidence=\"' + escapeHtml(block.confidence) + '\">' + escapeHtml(block.confidence) + '</span>' : '') +\r\n      '</article>';\r\n  }\r\n\r\n  function roleAnchorHtml(rolePreview, altPreview) {\r\n    var p = rolePreview && rolePreview.primaryRole ? rolePreview.primaryRole : {};\r\n    var diff = altPreview && altPreview.summary ? altPreview.summary.difference : \"\";\r\n    return '' +\r\n      '<article class=\"gdx-panel-v4-reco-priority gdx-p27-block is-p27-role-summary is-p31-p28-anchor\" ' + BLOCK_ATTR + '=\"role_setup_preview\">' +\r\n        '<div>' +\r\n          '<strong>Rol / Alan / Kurulum \u00D6zeti</strong>' +\r\n          '<p>\u00D6nerilen \u0131\u015F\u0131k g\u00F6revi ve \u00E7al\u0131\u015Fma mesafeleri a\u015Fa\u011F\u0131daki setup \u015Femas\u0131nda g\u00F6sterilir \u00B7 ' + escapeHtml((rolePreview && rolePreview.primarySetup && rolePreview.primarySetup.setupLabel) || \"setup \u015Femas\u0131\") + '</p>' +\r\n          (diff ? '<small>' + escapeHtml(diff) + '</small>' : '') +\r\n        '</div>' +\r\n        '<span class=\"gdx-p27-data-chip\">' + escapeHtml(p.label || \"setup \u00F6zeti\") + '</span>' +\r\n      '</article>';\r\n  }\r\n\r\n  function summaryHtml(payload, altPreview) {\r\n    var tech = (payload.blocks || []).filter(function (b) { return b.key === \"technical_reason\"; })[0] || {};\r\n    var persona = (payload.blocks || []).filter(function (b) { return b.key === \"persona_fit\"; })[0] || {};\r\n    var data = (payload.blocks || []).filter(function (b) { return b.key === \"data_confidence\"; })[0] || {};\r\n    var alt = altPreview && altPreview.alternative ? altPreview.alternative : null;\r\n    var winner = altPreview && altPreview.winner ? altPreview.winner : null;\r\n    var r3 = window.CANFOTO_LB24_R3_COMPARE_TRUTH || null;\r\n    var exactTie = !!(r3 && typeof r3.isExactTie === \"function\" && r3.isExactTie());\r\n    var primary = r3 && typeof r3.primaryProduct === \"function\" ? r3.primaryProduct() : null;\r\n    var secondary = r3 && typeof r3.secondaryProduct === \"function\" ? r3.secondaryProduct() : null;\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p31-p27-summary\" data-gdx-panel-p31-p27-summary=\"1\">' +\r\n        '<div class=\"gdx-p31-p27-summary-head\">' +\r\n          '<div>' +\r\n            '<span>KISA ANAL\u0130Z \u00D6ZET\u0130</span>' +\r\n            '<strong>' + escapeHtml(payload.title || \"Panel LED \u00DCr\u00FCn\") + '</strong>' +\r\n            '<p>Teknik uygunluk, kullan\u0131m amac\u0131 ve veri g\u00FCveni birlikte de\u011Ferlendirilir.</p>' +\r\n          '</div>' +\r\n          '<em>\u00F6zet</em>' +\r\n        '</div>' +\r\n        '<div class=\"gdx-p31-p27-summary-grid\">' +\r\n          '<div><b>Teknik gerek\u00E7e</b><span>' + escapeHtml((tech.text || \"\").slice(0, 118) || \"\u00DCr\u00FCn datas\u0131ndaki okunabilir teknik sinyaller de\u011Ferlendirilir.\") + '</span></div>' +\r\n          '<div><b>Kimler i\u00E7in</b><span>' + escapeHtml((persona.text || \"\").slice(0, 118) || \"Kullan\u0131m amac\u0131 ve sat\u0131n alma mant\u0131\u011F\u0131 sade \u015Fekilde \u00F6zetlenir.\") + '</span></div>' +\r\n          '<div><b>Veri g\u00FCveni</b><span>' + escapeHtml((data.text || \"\").slice(0, 118) || \"Eksik alanlarda temkinli yorum kullan\u0131l\u0131r.\") + '</span></div>' +\r\n        '</div>' +\r\n        (exactTie && primary && secondary\r\n          ? '<p class=\"gdx-p31-p27-summary-note\">Genel F/P berabere: ' + escapeHtml((r3 && r3.offerTitle ? r3.offerTitle(primary) : primary.title) || \"A \u00DCr\u00FCn\u00FC\") + ' ve ' + escapeHtml((r3 && r3.offerTitle ? r3.offerTitle(secondary) : secondary.title) || \"B \u00DCr\u00FCn\u00FC\") + ' ayn\u0131 canonical kurulum format\u0131nda g\u00F6sterilir.</p>'\r\n          : (winner && alt ? '<p class=\"gdx-p31-p27-summary-note\">' + escapeHtml(winner.title || \"\u00D6ne \u00C7\u0131kan \u00DCr\u00FCn\") + ' ilk \u015Femada; ' + escapeHtml(alt.title || \"Di\u011Fer \u00DCr\u00FCn\") + ' ayn\u0131 canonical formatta ikinci \u015Femada de\u011Ferlendirilir.</p>' : '')) +\r\n      '</div>';\r\n  }\r\n\r\n  function elementClass(type) {\r\n    type = String(type || \"\");\r\n    if (type === \"camera\") return \"is-camera\";\r\n    if (type === \"subject\") return \"is-subject\";\r\n    if (type === \"person\") return \"is-subject\";\r\n    if (type === \"product\") return \"is-product\";\r\n    if (type === \"table\") return \"is-table\";\r\n    if (type === \"background\") return \"is-background\";\r\n    if (type === \"fillLight\") return \"is-fill\";\r\n    if (type === \"fill\") return \"is-fill\";\r\n    if (type === \"rgbAtmosphereLight\") return \"is-rgb\";\r\n    if (type === \"rimLight\" || type === \"hairLight\" || type === \"backgroundLight\") return \"is-accent\";\r\n    return \"is-light\";\r\n  }\r\n\r\n  function elementShortLabel(el) {\r\n    var map = {\r\n      camera: \"KAMERA\",\r\n      subject: \"K\u0130\u015E\u0130\",\r\n      person: \"K\u0130\u015E\u0130\",\r\n      product: \"\u00DCR\u00DCN\",\r\n      table: \"MASA\",\r\n      background: \"FON\",\r\n      keyLight: \"KEY\",\r\n      key: \"KEY\",\r\n      fillLight: \"FILL\",\r\n      fill: \"FILL\",\r\n      rimLight: \"RIM\",\r\n      hairLight: \"HAIR\",\r\n      backgroundLight: \"BG\",\r\n      rgbAtmosphereLight: \"RGB\",\r\n      mobileOutdoorLight: \"MOB\"\r\n    };\r\n    return el.label || map[el.type] || el.type || \"ROL\";\r\n  }\r\n\r\n  function altElementHtml(el) {\r\n    el = el || {};\r\n    var x = Math.max(4, Math.min(96, Number(el.x || 50)));\r\n    var y = Math.max(4, Math.min(96, Number(el.y || 50)));\r\n    var cls = elementClass(el.type);\r\n    var label = elementShortLabel(el);\r\n    var meta = [el.angle, el.distance].filter(Boolean).join(\" \u00B7 \");\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p28-schema-node ' + escapeHtml(cls) + '\" data-p31-alt-element=\"' + escapeHtml(el.type || \"\") + '\" style=\"left:' + escapeHtml(String(x)) + '%;top:' + escapeHtml(String(y)) + '%;\">' +\r\n        '<span>' + escapeHtml(label) + '</span>' +\r\n        (meta ? '<em>' + escapeHtml(meta) + '</em>' : '') +\r\n      '</div>';\r\n  }\r\n\r\n  function altStepHtml(step, index) {\r\n    return '<li><b>' + escapeHtml(String(index + 1)) + '</b><span>' + escapeHtml(step || \"\") + '</span></li>';\r\n  }\r\n\r\n  function influenceChipHtml(altPreview) {\r\n    var alt = altPreview && altPreview.alternative ? altPreview.alternative : {};\r\n    var chips = [];\r\n\r\n    if (alt.powerW) chips.push(alt.powerW + \"W\");\r\n    if (alt.familyLabel) chips.push(alt.familyLabel);\r\n    if (alt.colorConfidence) chips.push(alt.colorConfidence);\r\n    /* P1.20H: internal alt.format key is not customer-visible copy. */\r\n\r\n    return chips.slice(0, 5).map(function (chip) {\r\n      return '<span>' + escapeHtml(chip) + '</span>';\r\n    }).join(\"\");\r\n  }\r\n\r\n  function altIdentityInitial(title) {\r\n    var text = String(title || \"\").replace(/^\\s+|\\s+$/g, \"\");\r\n    return text ? text.charAt(0).toLocaleUpperCase(\"tr-TR\") : \"A\";\r\n  }\r\n\r\n  function altIdentityMediaHtml(identity, title) {\r\n    var image = identity && identity.image ? identity.image : \"\";\r\n    var altText = title || (identity && identity.title) || \"Alternatif \u00DCr\u00FCn\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p33-identity-media\">' +\r\n        (image\r\n          ? '<img src=\"' + escapeHtml(image) + '\" alt=\"' + escapeHtml(altText) + '\" loading=\"lazy\" decoding=\"async\">'\r\n          : '<span>' + escapeHtml(altIdentityInitial(altText)) + '</span>') +\r\n      '</div>';\r\n  }\r\n\r\n  function altSchemaIdentityHtml(alt) {\r\n    var identity = alt && alt.p33Canonical && alt.p33Canonical.identity ? alt.p33Canonical.identity : {};\r\n    var title = identity.title || alt.title || \"Alternatif \u00DCr\u00FCn\";\r\n    var subtitle = alt.selectedTemplateLabel || \"Alternatif Setup \u015Eemas\u0131\";\r\n    var exactTie = alt && alt.r3DecisionState === \"EXACT_TIE\";\r\n    var kicker = exactTie ? ((alt.r3CompareSlot || \"B\") + \" \u00DCR\u00DCN\u00DC KURULUMU\") : \"D\u0130\u011EER \u00DCR\u00DCN KURULUMU\";\r\n    var copy = exactTie\r\n      ? \"Genel F/P e\u015Fitli\u011Fi nedeniyle bu \u015Fema kazanan/alternatif hiyerar\u015Fisi ta\u015F\u0131maz.\"\r\n      : \"Di\u011Fer \u00FCr\u00FCn, ayn\u0131 se\u00E7ili amac\u0131n canonical kurulum kayd\u0131yla g\u00F6sterilir.\";\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p33-schema-identity\" data-p33-schema-identity=\"alternative\">' +\r\n        altIdentityMediaHtml(identity, title) +\r\n        '<div class=\"gdx-p33-identity-copy\">' +\r\n          '<span class=\"gdx-p28-kicker\">' + escapeHtml(kicker) + '</span>' +\r\n          '<strong class=\"gdx-p33-identity-title\">' + escapeHtml(title) + '</strong>' +\r\n          '<em class=\"gdx-p33-identity-sub\">' + escapeHtml(subtitle) + '</em>' +\r\n          '<p>' + escapeHtml(copy) + '</p>' +\r\n        '</div>' +\r\n      '</div>';\r\n  }\r\n\r\n  function altCanvasHtml(alt) {\r\n    if (alt && alt.r3CanonicalSvgHtml) {\r\n      return '<div class=\"gdx-p28-schema-canvas is-r3-canonical-v27\" data-lb24-r3-exact-alt-canvas=\"1\">' + alt.r3CanonicalSvgHtml + '</div>';\r\n    }\r\n    var elements = Array.isArray(alt.elements) ? alt.elements : [];\r\n    var bg = elements.some(function (el) { return el.type === \"background\"; });\r\n\r\n    return '' +\r\n      '<div class=\"gdx-p28-schema-canvas\" aria-label=\"Alternatif \u00FCr\u00FCn setup \u015Femas\u0131\">' +\r\n        (bg ? '<div class=\"gdx-p28-schema-bg-line\"><span>FON / ARKA PLAN</span></div>' : '') +\r\n        elements.map(altElementHtml).join(\"\") +\r\n      '</div>';\r\n  }\r\n\r\n  function altSchematicHtml(altPreview) {\r\n    var r3 = window.CANFOTO_LB24_R3_COMPARE_TRUTH || null;\r\n    var altProduct = r3 && typeof r3.secondaryProduct === \"function\" ? r3.secondaryProduct() : null;\r\n    var alt = r3 && altProduct && typeof r3.buildPreview === \"function\" ? r3.buildPreview(altProduct, \"B\") : null;\r\n\r\n    if (!alt || !alt.ok) return \"\";\r\n\r\n    var steps = Array.isArray(alt.steps) ? alt.steps.slice(0, 3) : [];\r\n    var summaryParts = [];\r\n    var role = alt.rolePreview && alt.rolePreview.primaryRole ? alt.rolePreview.primaryRole : null;\r\n    var area = alt.rolePreview && alt.rolePreview.primaryArea ? alt.rolePreview.primaryArea : null;\r\n    var setup = alt.rolePreview && alt.rolePreview.primarySetup ? alt.rolePreview.primarySetup : null;\r\n\r\n    if (role && (role.roleLabel || role.label)) summaryParts.push(role.roleLabel || role.label);\r\n    if (area && area.areaLabel) summaryParts.push(area.areaLabel);\r\n    if (setup && setup.setupLabel) summaryParts.push(setup.setupLabel);\r\n\r\n    return '' +\r\n      '<section class=\"gdx-p28-schematic is-p31-alt-schematic\" ' + ALT_ATTR + '=\"1\" data-p31-version=\"' + escapeHtml(VERSION) + '\" data-p31-template=\"' + escapeHtml(alt.selectedTemplateKey || \"\") + '\" data-p31-format=\"' + escapeHtml(alt.format || \"\") + '\" data-p33-profile=\"CANONICAL_SETUP_DTO\" data-p33-canonical=\"1\" data-lb24-r3-setup-record-id=\"' + escapeHtml(alt.r3SetupRecordId || \"\") + '\">' +\r\n        '<div class=\"gdx-p28-schema-head is-p33-identity-head\">' +\r\n          altSchemaIdentityHtml(alt) +\r\n          '<div class=\"gdx-p28-schema-chips\">' + influenceChipHtml({ alternative: alt }) + '</div>' +\r\n        '</div>' +\r\n        '<div class=\"gdx-p28-schema-layout\">' +\r\n          altCanvasHtml(alt) +\r\n          '<div class=\"gdx-p28-schema-side\">' +\r\n            '<strong>3 ad\u0131ml\u0131 kurulum \u00F6zeti</strong>' +\r\n            '<ol>' + steps.map(altStepHtml).join(\"\") + '</ol>' +\r\n          '</div>' +\r\n        '</div>' +\r\n        (summaryParts.length ? '<div class=\"gdx-p28-schema-summary\">' + escapeHtml(summaryParts.join(\" \u00B7 \")) + '</div>' : '') +\r\n        '<p class=\"gdx-p28-schema-note\">' + escapeHtml(alt.safeNote || \"\") + '</p>' +\r\n      '</section>';\r\n  }\r\n\r\n  function buildRenderPayload(product, usecaseKey, personaKey) {\r\n    var asm = assembler();\r\n    var role = roleSetup();\r\n    var alt = altApi();\r\n    var commentPreview = null;\r\n    var rolePreview = null;\r\n    var altPreview = null;\r\n    var blocks = [];\r\n    var visibleBlocks;\r\n    var forbidden;\r\n\r\n    if (!asm || typeof asm.buildPreview !== \"function\") return { ok: false, error: \"P27 Comment Assembler bulunamad\u0131.\" };\r\n\r\n    commentPreview = asm.buildPreview(product, usecaseKey, personaKey);\r\n\r\n    if (role && typeof role.buildPreview === \"function\") rolePreview = role.buildPreview(product, usecaseKey);\r\n    if (alt && typeof alt.buildAlternativePreview === \"function\") altPreview = alt.buildAlternativePreview({ usecaseKey: usecaseKey, viewportMode: window.innerWidth <= 749 ? \"mobile\" : \"desktop\" });\r\n\r\n    blocks = Array.isArray(commentPreview.blocks) ? commentPreview.blocks.slice() : [];\r\n    visibleBlocks = blocks.filter(function (block) {\r\n      return block && [\"purpose_header\", \"technical_reason\", \"persona_fit\", \"data_confidence\"].indexOf(block.key) > -1;\r\n    });\r\n\r\n    forbidden = scanForbidden({ commentPreview: commentPreview, rolePreview: rolePreview, altPreview: altPreview });\r\n\r\n    return {\r\n      ok: !forbidden.length && !!commentPreview.ok,\r\n      product: product,\r\n      productKey: product && (product.key || product.handle || \"\"),\r\n      title: productTitle(product),\r\n      usecaseKey: usecaseKey,\r\n      personaKey: personaKey,\r\n      commentPreview: commentPreview,\r\n      rolePreview: rolePreview,\r\n      altPreview: altPreview,\r\n      blocks: visibleBlocks,\r\n      forbiddenFound: forbidden\r\n    };\r\n  }\r\n\r\n  function bridgeHtml(payload) {\r\n    var html = \"\";\r\n    var blocks = payload.blocks || [];\r\n\r\n    html += '' +\r\n      '<section class=\"gdx-panel-v4-detail-takeaway is-p27-render-bridge is-p31-p27-accordion is-p31-alt-mode\" ' + BRIDGE_ATTR + '=\"1\" data-p27-version=\"' + escapeHtml(VERSION) + '\" data-p27-usecase=\"' + escapeHtml(payload.usecaseKey || \"\") + '\" data-p31-accordion=\"closed-default\">' +\r\n        '<div class=\"gdx-p31-p27-main-head\">' +\r\n          '<strong>Kullan\u0131m ve Kurulum Analizi</strong>' +\r\n          '<p class=\"gdx-p27-bridge-intro\">\u00D6ne \u00E7\u0131kan noktalar\u0131 k\u0131sa \u00F6zet halinde g\u00F6rebilir, ayr\u0131nt\u0131lar\u0131 diledi\u011Finizde a\u00E7abilirsiniz.</p>' +\r\n        '</div>' +\r\n        summaryHtml(payload, payload.altPreview) +\r\n        roleAnchorHtml(payload.rolePreview, payload.altPreview) +\r\n        altSchematicHtml(payload.altPreview) +\r\n        '<details class=\"gdx-p31-p27-details\" data-gdx-panel-p31-p27-details=\"1\">' +\r\n          '<summary>Detayl\u0131 analizi a\u00E7</summary>' +\r\n          '<div class=\"gdx-p31-p27-details-body\">';\r\n\r\n    blocks.forEach(function (block, index) { html += renderBlock(block, index === 1 ? \"is-final\" : \"\"); });\r\n\r\n    html += '</div></details></section>';\r\n    return html;\r\n  }\r\n\r\n  function removeExisting() {\r\n    var r = root();\r\n    if (!r) return;\r\n    Array.prototype.slice.call(r.querySelectorAll(\"[\" + BRIDGE_ATTR + \"]\")).forEach(function (el) {\r\n      if (el && el.parentNode) el.parentNode.removeChild(el);\r\n    });\r\n  }\r\n\r\n  function insertBridge(html) {\r\n    var expert = resultEl() ? resultEl().querySelector(\"[data-gdx-panel-expert-comment='1']\") : null;\r\n    var container;\r\n\r\n    removeExisting();\r\n    if (!expert || !expert.parentNode) return false;\r\n\r\n    container = document.createElement(\"div\");\r\n    container.innerHTML = html;\r\n    expert.parentNode.insertBefore(container.firstChild, expert.nextSibling);\r\n    return true;\r\n  }\r\n\r\n  function requestDependentRenders() {\r\n    [90, 260, 620].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        if (window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER_BRIDGE && typeof window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER_BRIDGE.render === \"function\") {\r\n          window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER_BRIDGE.render();\r\n        }\r\n        if (window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER && typeof window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER.render === \"function\") {\r\n          window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER.render();\r\n        }\r\n      }, delay);\r\n    });\r\n  }\r\n\r\n  function render() {\r\n    var product, usecaseKey, personaKey, payload, key, ok;\r\n\r\n    if (!resultEl()) { state.lastDebug = { ok: false, reason: \"result mount missing\" }; return false; }\r\n\r\n    product = findCurrentWinnerProduct();\r\n    if (!product) {\r\n      removeExisting();\r\n      state.lastDebug = { ok: false, reason: \"winner product not found\" };\r\n      return false;\r\n    }\r\n\r\n    usecaseKey = inferUsecaseKey();\r\n    personaKey = inferPersonaKey(usecaseKey);\r\n    payload = buildRenderPayload(product, usecaseKey, personaKey);\r\n\r\n    key = [\r\n      payload.productKey,\r\n      payload.usecaseKey,\r\n      payload.personaKey,\r\n      payload.commentPreview && payload.commentPreview.blockCount,\r\n      payload.rolePreview && payload.rolePreview.primaryRole && payload.rolePreview.primaryRole.roleKey,\r\n      payload.altPreview && payload.altPreview.alternative && payload.altPreview.alternative.productKey,\r\n      payload.forbiddenFound && payload.forbiddenFound.join(\"|\")\r\n    ].join(\"::\");\r\n\r\n    if (!payload.ok) {\r\n      removeExisting();\r\n      state.lastDebug = {\r\n        ok: false, version: VERSION, reason: \"payload guard failed\",\r\n        forbiddenFound: payload.forbiddenFound || [], productKey: payload.productKey || \"\",\r\n        scoreTouched: false, commerceTouched: false, shareTouched: false, upperRecommendationTouched: false, visibleRenderTouched: false\r\n      };\r\n      return false;\r\n    }\r\n\r\n    if (state.lastRenderedKey === key && root() && root().querySelector(\"[\" + BRIDGE_ATTR + \"]\")) {\r\n      requestDependentRenders();\r\n      return true;\r\n    }\r\n\r\n    ok = insertBridge(bridgeHtml(payload));\r\n    state.lastRenderedKey = ok ? key : \"\";\r\n    state.lastRenderAt = ok ? new Date().toISOString() : state.lastRenderAt;\r\n    state.renderCount += ok ? 1 : 0;\r\n\r\n    state.lastDebug = {\r\n      ok: !!ok,\r\n      version: VERSION,\r\n      productKey: payload.productKey || \"\",\r\n      title: payload.title || \"\",\r\n      usecaseKey: payload.usecaseKey || \"\",\r\n      p27BlockCount: root() && root().querySelector(\"[\" + BRIDGE_ATTR + \"]\") ? root().querySelector(\"[\" + BRIDGE_ATTR + \"]\").querySelectorAll(\"[data-p27-block]\").length : 0,\r\n      accordionFound: !!(root() && root().querySelector(\"[data-gdx-panel-p31-p27-details='1']\")),\r\n      accordionDefaultClosed: !!(root() && root().querySelector(\"[data-gdx-panel-p31-p27-details='1']\") && !root().querySelector(\"[data-gdx-panel-p31-p27-details='1']\").open),\r\n      altSchematicFound: !!(root() && root().querySelector(\"[\" + ALT_ATTR + \"='1']\")),\r\n      altP28FormatFound: !!(root() && root().querySelector(\"[\" + ALT_ATTR + \"='1'] .gdx-p28-schema-layout\")),\r\n      altP33CanonicalFound: !!(root() && root().querySelector(\"[\" + ALT_ATTR + \"='1'][data-p33-canonical='1']\")),\r\n      p33EngineReady: !!p33Engine(),\r\n      p33IdentityFound: !!(root() && root().querySelector(\"[\" + ALT_ATTR + \"='1'] [data-p33-schema-identity]\")),\r\n      p33IdentityImageFound: !!(root() && root().querySelector(\"[\" + ALT_ATTR + \"='1'] [data-p33-schema-identity] img\")),\r\n      oldDualSetupFound: !!(root() && root().querySelector(\"[data-gdx-panel-p31-\" + \"dual-setup='1']\")),\r\n      alternativeReady: !!(payload.altPreview && payload.altPreview.alternative && payload.altPreview.alternative.ok),\r\n      alternativeTitle: payload.altPreview && payload.altPreview.alternative ? payload.altPreview.alternative.title : \"\",\r\n      familyAwareEnabled: !!(payload.altPreview && payload.altPreview.familyAware && payload.altPreview.familyAware.enabled),\r\n      forbiddenFound: payload.forbiddenFound || [],\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      upperRecommendationTouched: false,\r\n      visibleRenderTouched: true\r\n    };\r\n\r\n    if (ok) requestDependentRenders();\r\n    return !!ok;\r\n  }\r\n\r\n  function schedule() {\r\n    if (state.scheduled) return;\r\n    state.scheduled = true;\r\n    window.setTimeout(function () { state.scheduled = false; render(); }, 140);\r\n  }\r\n\r\n  function boot() {\r\n    [220, 560, 980, 1600, 2600].forEach(function (delay) { window.setTimeout(schedule, delay); });\r\n    document.addEventListener(\"click\", function () { window.setTimeout(schedule, 160); }, true);\r\n  }\r\n\r\n  function safeCall(fn, fallback) {\r\n    try { if (typeof fn === \"function\") return fn(); } catch (error) {\r\n      return { ok: false, error: error && error.message ? error.message : String(error || \"error\") };\r\n    }\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n\r\n  function modulePresence() {\r\n    return {\r\n      dataRoot: !!window.GDX_PANEL_LED_V4,\r\n      compare: !!(window.GDX_PANEL_LED_V4_COMPARE && typeof window.GDX_PANEL_LED_V4_COMPARE.compareProducts === \"function\"),\r\n      commerce: !!window.GDX_PANEL_LED_V4_COMMERCE,\r\n      share: !!window.GDX_PANEL_LED_V4_SHARE,\r\n      shareCard: !!window.GDX_PANEL_LED_V4_SHARE_CARD,\r\n      p27AccordionRender: !!window.GDX_PANEL_LED_V4_P31_ALT_SCHEMATIC_RENDER,\r\n      p27RenderCompat: !!window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE,\r\n      p31AltPreview: !!window.GDX_PANEL_LED_V4_P31_ALT_PRODUCT_SETUP_PREVIEW,\r\n      p28Registry: !!window.GDX_PANEL_LED_V4_P28_SCHEMATIC_REGISTRY,\r\n      p28Render: !!window.GDX_PANEL_LED_V4_P28_SCHEMATIC_RENDER_BRIDGE,\r\n      p29Preview: !!window.GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_PREVIEW,\r\n      p30Label: !!window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_LABEL,\r\n      p30Render: !!window.GDX_PANEL_LED_V4_P30_SETUP_VALUE_SOURCE_RENDER,\r\n      p31AltPreviewDebug: !!window.debugP31AltProductSetupPreview,\r\n      p31RenderDebug: !!window.debugP31AltSchematicRender\r\n    };\r\n  }\r\n\r\n  function collectDebugs() {\r\n    return {\r\n      p31AltPreview: safeCall(function () { return window.debugP31AltProductSetupPreview ? window.debugP31AltProductSetupPreview() : { ok: false, reason: \"missing debugP31AltProductSetupPreview\" }; }),\r\n      p31Render: safeCall(function () { return debug(); }),\r\n      p28Stack: safeCall(function () { return window.debugPanelV4P28Stack ? window.debugPanelV4P28Stack() : { ok: false, reason: \"missing debugPanelV4P28Stack\" }; }),\r\n      p29Stack: safeCall(function () { return window.debugPanelV4P29Stack ? window.debugPanelV4P29Stack() : { ok: false, reason: \"missing debugPanelV4P29Stack\" }; }),\r\n      p30Stack: safeCall(function () { return window.debugPanelV4P30StackR1 ? window.debugPanelV4P30StackR1() : { ok: false, reason: \"missing debugPanelV4P30StackR1\" }; }),\r\n      p28Render: safeCall(function () { return window.debugP28SchematicRender ? window.debugP28SchematicRender() : { ok: false, reason: \"missing debugP28SchematicRender\" }; }),\r\n      p30Render: safeCall(function () { return window.debugP30SetupValueSourceRender ? window.debugP30SetupValueSourceRender() : { ok: false, reason: \"missing debugP30SetupValueSourceRender\" }; })\r\n    };\r\n  }\r\n\r\n  function domSmoke() {\r\n    var r = root();\r\n    var p31 = r ? r.querySelector(\".is-p31-p27-accordion\") : null;\r\n    var details = p31 ? p31.querySelector(\"[data-gdx-panel-p31-p27-details='1']\") : null;\r\n    var alt = p31 ? p31.querySelector(\"[\" + ALT_ATTR + \"='1']\") : null;\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      resultFound: !!document.getElementById(\"gdxPanelV4ResultPreview\"),\r\n      p31BridgeFound: !!p31,\r\n      p31AccordionFound: !!details,\r\n      p31AccordionDefaultClosed: details ? !details.open : false,\r\n      p31AltSchematicFound: !!alt,\r\n      p31AltP28LayoutFound: !!(alt && alt.querySelector(\".gdx-p28-schema-layout\")),\r\n      p31AltP28CanvasFound: !!(alt && alt.querySelector(\".gdx-p28-schema-canvas\")),\r\n      p31AltP28SideFound: !!(alt && alt.querySelector(\".gdx-p28-schema-side\")),\r\n      p31AltP28NodeCount: alt ? alt.querySelectorAll(\".gdx-p28-schema-node\").length : 0,\r\n      p31AltP28StepCount: alt ? alt.querySelectorAll(\".gdx-p28-schema-side li\").length : 0,\r\n      oldDualSetupFound: !!(r && r.querySelector(\"[data-gdx-panel-p31-\" + \"dual-setup='1']\")),\r\n      oldDualCardCount: r ? r.querySelectorAll(\".gdx-p31-\" + \"dual-card\").length : 0,\r\n      p31BlockCount: p31 ? p31.querySelectorAll(\"[data-p27-block]\").length : 0,\r\n      p28SchematicFound: !!(r && r.querySelector(\"[data-gdx-panel-p28-schematic='1']\")),\r\n      p29RecommendationMountFound: !!document.getElementById(\"gdxPanelV4RecommendationPreview\"),\r\n      p29SetupBlockCount: r ? r.querySelectorAll(\"[data-gdx-panel-p29-rec-setup='1']\").length : 0,\r\n      p30NoteCount: r ? r.querySelectorAll(\"[data-gdx-panel-p30-source-note]\").length : 0,\r\n      commerceMountFound: !!document.getElementById(\"gdxPanelV4CommercePreview\"),\r\n      shareMountFound: !!document.getElementById(\"gdxPanelV4SharePreview\"),\r\n      shareCardMountFound: !!document.getElementById(\"gdxPanelV4ShareCardPreview\")\r\n    };\r\n  }\r\n\r\n  function cssPolishCheck() {\r\n    var r = root();\r\n    var p31 = r ? r.querySelector(\".is-p31-p27-accordion\") : null;\r\n    var alt = r ? r.querySelector(\"[\" + ALT_ATTR + \"='1']\") : null;\r\n    var layout = alt ? alt.querySelector(\".gdx-p28-schema-layout\") : null;\r\n    var canvas = alt ? alt.querySelector(\".gdx-p28-schema-canvas\") : null;\r\n    var node = alt ? alt.querySelector(\".gdx-p28-schema-node\") : null;\r\n    var side = alt ? alt.querySelector(\".gdx-p28-schema-side\") : null;\r\n    var p31Style = p31 ? window.getComputedStyle(p31) : null;\r\n    var layoutStyle = layout ? window.getComputedStyle(layout) : null;\r\n\r\n    return {\r\n      p31Found: !!p31,\r\n      altFound: !!alt,\r\n      altP28LayoutFound: !!layout,\r\n      altP28CanvasFound: !!canvas,\r\n      altP28NodeFound: !!node,\r\n      altP28SideFound: !!side,\r\n      p31BorderRadius: p31Style ? p31Style.borderRadius : \"\",\r\n      altLayoutDisplay: layoutStyle ? layoutStyle.display : \"\",\r\n      sameFormatAsP28: !!(alt && layout && canvas && node && side),\r\n      likelyApplied: !!(p31 && alt && layout && canvas && node && side && p31Style && layoutStyle && p31Style.borderRadius !== \"0px\" && layoutStyle.display === \"grid\")\r\n    };\r\n  }\r\n\r\n  function aggregateForbidden(debugs) {\r\n    var found = [];\r\n    var r = root();\r\n\r\n    Object.keys(debugs || {}).forEach(function (key) {\r\n      var pack = debugs[key] || {};\r\n      if (Array.isArray(pack.forbiddenFound)) found = found.concat(pack.forbiddenFound);\r\n    });\r\n\r\n    if (r) {\r\n      [\".is-p31-p27-accordion\", \"[data-gdx-panel-p28-schematic='1']\", \"[data-gdx-panel-p29-rec-setup='1']\", \"[data-gdx-panel-p30-source-note]\"].forEach(function (selector) {\r\n        Array.prototype.slice.call(r.querySelectorAll(selector)).forEach(function (node) { found = found.concat(scanForbidden(node.textContent || \"\")); });\r\n      });\r\n    }\r\n\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n\r\n  function noTouchFlags(debugs) {\r\n    var packs = [debugs.p31AltPreview, debugs.p31Render, debugs.p28Stack, debugs.p29Stack, debugs.p30Stack, debugs.p28Render, debugs.p30Render];\r\n    return {\r\n      scoreTouched: packs.some(function (p) { return !!(p && p.scoreTouched); }),\r\n      commerceTouched: packs.some(function (p) { return !!(p && p.commerceTouched); }),\r\n      shareTouched: packs.some(function (p) { return !!(p && p.shareTouched); }),\r\n      recommendationRankingTouched: packs.some(function (p) { return !!(p && p.recommendationRankingTouched); }),\r\n      upperRecommendationTouched: packs.some(function (p) { return !!(p && p.upperRecommendationTouched); }),\r\n      exactM2Claims: packs.some(function (p) { return !!(p && p.exactM2Claims); }),\r\n      exactLuxClaims: packs.some(function (p) { return !!(p && p.exactLuxClaims); }),\r\n      estimatedCriTlci: packs.some(function (p) { return !!(p && p.estimatedCriTlci); }),\r\n      visibleRenderTouched: !!(debugs.p31Render && debugs.p31Render.visibleRenderTouched)\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var current = state.lastDebug || {};\r\n    var bridge = root() ? root().querySelector(\"[\" + BRIDGE_ATTR + \"]\") : null;\r\n    var details = bridge ? bridge.querySelector(\"[data-gdx-panel-p31-p27-details='1']\") : null;\r\n    var alt = bridge ? bridge.querySelector(\"[\" + ALT_ATTR + \"='1']\") : null;\r\n    var altPreviewApi = altApi();\r\n    var altPreviewDebug = altPreviewApi && typeof altPreviewApi.debug === \"function\" ? altPreviewApi.debug() : null;\r\n\r\n    return {\r\n      ok: !!(current.ok && bridge && details && alt && current.p27BlockCount === 5 && current.altP28FormatFound && current.alternativeReady && current.familyAwareEnabled && !current.oldDualSetupFound && !(current.forbiddenFound || []).length),\r\n      version: VERSION,\r\n      bridgeFound: !!bridge,\r\n      accordionFound: !!details,\r\n      accordionDefaultClosed: details ? !details.open : false,\r\n      altSchematicFound: !!alt,\r\n      altP28FormatFound: !!(alt && alt.querySelector(\".gdx-p28-schema-layout\") && alt.querySelector(\".gdx-p28-schema-canvas\") && alt.querySelector(\".gdx-p28-schema-side\")),\r\n      oldDualSetupFound: !!(root() && root().querySelector(\"[data-gdx-panel-p31-\" + \"dual-setup='1']\")),\r\n      oldDualCardCount: root() ? root().querySelectorAll(\".gdx-p31-\" + \"dual-card\").length : 0,\r\n      p27BlockCount: current.p27BlockCount || (bridge ? bridge.querySelectorAll(\"[data-p27-block]\").length : 0),\r\n      alternativeReady: !!current.alternativeReady,\r\n      alternativeTitle: current.alternativeTitle || \"\",\r\n      familyAwareEnabled: !!current.familyAwareEnabled,\r\n      p31AltPreviewApiReady: !!altPreviewApi,\r\n      p31AltPreviewOk: !!(altPreviewDebug && altPreviewDebug.ok),\r\n      renderCount: state.renderCount,\r\n      lastRenderAt: state.lastRenderAt,\r\n      forbiddenFound: current.forbiddenFound || [],\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      upperRecommendationTouched: false,\r\n      visibleRenderTouched: true,\r\n      lastDebug: current\r\n    };\r\n  }\r\n\r\n  function debugStack() {\r\n    var modules = modulePresence();\r\n    var debugs = collectDebugs();\r\n    var dom = domSmoke();\r\n    var css = cssPolishCheck();\r\n    var noTouch = noTouchFlags(debugs);\r\n    var forbiddenFound = aggregateForbidden(debugs);\r\n\r\n    var apiChainOk = !!(modules.p31AltPreview && modules.p27AccordionRender && modules.p27RenderCompat && debugs.p31AltPreview.ok && debugs.p31Render.ok);\r\n    var visualChainOk = !!(css.likelyApplied && css.sameFormatAsP28 && dom.p31BridgeFound && dom.p31AccordionFound && dom.p31AccordionDefaultClosed && dom.p31AltSchematicFound && dom.p31AltP28LayoutFound && !dom.oldDualSetupFound);\r\n    var dependentChainsOk = !!(dom.p28SchematicFound && dom.p29RecommendationMountFound && dom.p30NoteCount >= 1);\r\n    var protectedSystemsOk = !!(\r\n      products().length === 19 &&\r\n      modules.compare &&\r\n      modules.commerce && dom.commerceMountFound &&\r\n      modules.share && dom.shareMountFound &&\r\n      modules.shareCard && dom.shareCardMountFound &&\r\n      dom.p31BridgeFound &&\r\n      dom.p31AccordionDefaultClosed &&\r\n      dom.p31AltSchematicFound &&\r\n      dom.p31AltP28LayoutFound &&\r\n      dom.oldDualSetupFound === false &&\r\n      dom.oldDualCardCount === 0 &&\r\n      dom.p28SchematicFound &&\r\n      dom.p29RecommendationMountFound &&\r\n      dom.p30NoteCount >= 1 &&\r\n      !forbiddenFound.length &&\r\n      !noTouch.scoreTouched &&\r\n      !noTouch.commerceTouched &&\r\n      !noTouch.shareTouched &&\r\n      !noTouch.recommendationRankingTouched &&\r\n      !noTouch.upperRecommendationTouched &&\r\n      !noTouch.exactM2Claims &&\r\n      !noTouch.exactLuxClaims &&\r\n      !noTouch.estimatedCriTlci\r\n    );\r\n\r\n    return {\r\n      ok: !!(apiChainOk && visualChainOk && dependentChainsOk && protectedSystemsOk),\r\n      version: VERSION,\r\n      apiChainOk: apiChainOk,\r\n      visualChainOk: visualChainOk,\r\n      dependentChainsOk: dependentChainsOk,\r\n      protectedSystemsOk: protectedSystemsOk,\r\n      productCount: products().length,\r\n      modules: modules,\r\n      dom: dom,\r\n      cssPolish: css,\r\n      debugs: debugs,\r\n      noTouch: noTouch,\r\n      forbiddenFound: forbiddenFound,\r\n      removedOldDualSetup: !dom.oldDualSetupFound && dom.oldDualCardCount === 0,\r\n      expected: {\r\n        productCount: 19,\r\n        bridgeFound: true,\r\n        accordionDefaultClosed: true,\r\n        altSchematicFound: true,\r\n        altP28FormatFound: true,\r\n        oldDualSetupFound: false,\r\n        oldDualCardCount: 0,\r\n        p28SchematicFound: true,\r\n        p29RecommendationMountFound: true,\r\n        p30NoteCount: \">=1\",\r\n        forbiddenFound: [],\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        recommendationRankingTouched: false,\r\n        upperRecommendationTouched: false\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P31-6-ALT-PRODUCT-SCHEMATIC-FINAL-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  var API = { version: VERSION, schedule: schedule, render: render, debug: debug };\r\n\r\n  window.GDX_PANEL_LED_V4_P27_RENDER_BRIDGE = API;\r\n  window.GDX_PANEL_LED_V4_P31_ALT_SCHEMATIC_RENDER = API;\r\n  window.debugP27RenderBridge = debug;\r\n  window.debugP31AltSchematicRender = debug;\r\n  window.debugPanelV4P31Stack = debugStack;\r\n  window.GDX_PANEL_LED_V4_P31_INTEGRATION_DEBUG = { version: VERSION, debug: debugStack, scanForbidden: scanForbidden, cssPolishCheck: cssPolishCheck };\r\n\r\n  if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", boot, { once: true });\r\n  else boot();\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P33-2 CANONICAL RENDER INTEGRATION DEBUG\r\n   Faz: PANEL-V4-P33-2-CANONICAL-POSITION-RENDER-BRIDGE-SAFE\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P33-2-CANONICAL-POSITION-RENDER-BRIDGE-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n  function safeCall(fn, fallback) {\r\n    try { if (typeof fn === \"function\") return fn(); } catch (error) {\r\n      return { ok: false, error: error && error.message ? error.message : String(error || \"error\") };\r\n    }\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n  function scanForbidden(text) {\r\n    var found = [];\r\n    [\r\n      \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n      \"G\u00FCncel stok\",\r\n      \"G\u00FCncel fiyat\",\r\n      \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n      \"Kontrol ederek\",\r\n      \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n      \"ger\u00E7ek lumen de\u011Feri\",\r\n      \"kesin m\u00B2\",\r\n      \"garanti lux\",\r\n      \"TLCI tahmini\",\r\n      \"CRI tahmini\",\r\n      \"flicker-free kabul edilir\",\r\n      \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n      \"kesin ayd\u0131nlat\u0131r\"\r\n    ].forEach(function (phrase) {\r\n      if (String(text || \"\").indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n  function collectDom() {\r\n    var r = root();\r\n    var p28 = r ? r.querySelector(\"[data-gdx-panel-p28-schematic='1']\") : null;\r\n    var alt = r ? r.querySelector(\"[data-gdx-panel-p31-alt-schematic='1']\") : null;\r\n    return {\r\n      rootFound: !!r,\r\n      p28Found: !!p28,\r\n      p31AltFound: !!alt,\r\n      p28CanonicalFound: !!(p28 && p28.getAttribute(\"data-p33-canonical\") === \"1\"),\r\n      p31AltCanonicalFound: !!(alt && alt.getAttribute(\"data-p33-canonical\") === \"1\"),\r\n      p28Profile: p28 ? (p28.getAttribute(\"data-p33-profile\") || \"\") : \"\",\r\n      p31AltProfile: alt ? (alt.getAttribute(\"data-p33-profile\") || \"\") : \"\",\r\n      p28NodeCount: p28 ? p28.querySelectorAll(\".gdx-p28-schema-node\").length : 0,\r\n      p31AltNodeCount: alt ? alt.querySelectorAll(\".gdx-p28-schema-node\").length : 0,\r\n      p28StepCount: p28 ? p28.querySelectorAll(\".gdx-p28-schema-side li\").length : 0,\r\n      p31AltStepCount: alt ? alt.querySelectorAll(\".gdx-p28-schema-side li\").length : 0,\r\n      p28KeyLeft: p28 && p28.querySelector(\".gdx-p28-schema-node\") ? p28.querySelector(\".gdx-p28-schema-node\").style.left : \"\",\r\n      p31AltKeyLeft: alt && alt.querySelector(\".gdx-p28-schema-node\") ? alt.querySelector(\".gdx-p28-schema-node\").style.left : \"\"\r\n    };\r\n  }\r\n  function aggregateForbidden(dom) {\r\n    var r = root();\r\n    var found = [];\r\n    if (r) {\r\n      [\"[data-gdx-panel-p28-schematic='1']\", \"[data-gdx-panel-p31-alt-schematic='1']\"].forEach(function (sel) {\r\n        var el = r.querySelector(sel);\r\n        if (el) found = found.concat(scanForbidden(el.textContent || \"\"));\r\n      });\r\n    }\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n  function debug() {\r\n    var p33 = safeCall(function () { return window.debugP33CanonicalSchematicEngine ? window.debugP33CanonicalSchematicEngine() : { ok: false, reason: \"missing debugP33CanonicalSchematicEngine\" }; });\r\n    var p28 = safeCall(function () { return window.debugP28SchematicRender ? window.debugP28SchematicRender() : { ok: false, reason: \"missing debugP28SchematicRender\" }; });\r\n    var p31 = safeCall(function () { return window.debugP31AltSchematicRender ? window.debugP31AltSchematicRender() : { ok: false, reason: \"missing debugP31AltSchematicRender\" }; });\r\n    var p32 = safeCall(function () { return window.debugPanelV4P32DesktopUx ? window.debugPanelV4P32DesktopUx() : { ok: false, reason: \"missing debugPanelV4P32DesktopUx\" }; });\r\n    var dom = collectDom();\r\n    var forbiddenFound = aggregateForbidden(dom);\r\n    var noTouch = {\r\n      scoreTouched: !!(p33.scoreTouched || p28.scoreTouched || p31.scoreTouched || p32.scoreTouched),\r\n      commerceTouched: !!(p33.commerceTouched || p28.commerceTouched || p31.commerceTouched || p32.commerceTouched),\r\n      shareTouched: !!(p33.shareTouched || p28.shareTouched || p31.shareTouched || p32.shareTouched),\r\n      recommendationRankingTouched: !!(p33.recommendationRankingTouched || p31.recommendationRankingTouched || p32.recommendationRankingTouched),\r\n      upperRecommendationTouched: !!(p33.upperRecommendationTouched || p28.upperRecommendationTouched || p31.upperRecommendationTouched || p32.upperRecommendationTouched),\r\n      exactM2Claims: !!(p33.exactM2Claims || p28.exactM2Claims || p31.exactM2Claims),\r\n      exactLuxClaims: !!(p33.exactLuxClaims || p31.exactLuxClaims),\r\n      estimatedCriTlci: !!(p33.estimatedCriTlci || p31.estimatedCriTlci)\r\n    };\r\n    return {\r\n      ok: !!(\r\n        p33.ok &&\r\n        p28.ok &&\r\n        p31.ok &&\r\n        dom.p28CanonicalFound &&\r\n        dom.p31AltCanonicalFound &&\r\n        dom.p28NodeCount >= 3 &&\r\n        dom.p31AltNodeCount >= 3 &&\r\n        dom.p28StepCount === 3 &&\r\n        dom.p31AltStepCount === 3 &&\r\n        !forbiddenFound.length &&\r\n        !noTouch.scoreTouched &&\r\n        !noTouch.commerceTouched &&\r\n        !noTouch.shareTouched &&\r\n        !noTouch.recommendationRankingTouched &&\r\n        !noTouch.upperRecommendationTouched\r\n      ),\r\n      version: VERSION,\r\n      apiChainOk: !!(p33.ok && p28.ok && p31.ok),\r\n      visualChainOk: !!(dom.p28CanonicalFound && dom.p31AltCanonicalFound),\r\n      protectedSystemsOk: !!(!forbiddenFound.length && !noTouch.scoreTouched && !noTouch.commerceTouched && !noTouch.shareTouched && !noTouch.recommendationRankingTouched && !noTouch.upperRecommendationTouched),\r\n      dom: dom,\r\n      debugs: { p33Engine: p33, p28Render: p28, p31Render: p31, p32DesktopUx: p32 },\r\n      noTouch: noTouch,\r\n      forbiddenFound: forbiddenFound,\r\n      expected: {\r\n        p33EngineOk: true,\r\n        p28CanonicalFound: true,\r\n        p31AltCanonicalFound: true,\r\n        p28NodeCount: \">=3\",\r\n        p31AltNodeCount: \">=3\",\r\n        p28StepCount: 3,\r\n        p31AltStepCount: 3,\r\n        forbiddenFound: []\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P33-3-PRODUCT-IDENTITY-THUMBNAIL-BRIDGE-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P33Stack = debug;\r\n  window.GDX_PANEL_LED_V4_P33_INTEGRATION_DEBUG = { version: VERSION, debug: debug };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P33-3 PRODUCT IDENTITY THUMBNAIL INTEGRATION DEBUG\r\n   Faz: PANEL-V4-P33-3-PRODUCT-IDENTITY-THUMBNAIL-BRIDGE-SAFE\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P33-3-PRODUCT-IDENTITY-THUMBNAIL-BRIDGE-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n\r\n  function safeCall(fn, fallback) {\r\n    try { if (typeof fn === \"function\") return fn(); } catch (error) {\r\n      return { ok: false, error: error && error.message ? error.message : String(error || \"error\") };\r\n    }\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n\r\n  function scanForbidden(text) {\r\n    var found = [];\r\n    [\r\n      \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n      \"G\u00FCncel stok\",\r\n      \"G\u00FCncel fiyat\",\r\n      \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n      \"Kontrol ederek\",\r\n      \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n      \"ger\u00E7ek lumen de\u011Feri\",\r\n      \"kesin m\u00B2\",\r\n      \"garanti lux\",\r\n      \"TLCI tahmini\",\r\n      \"CRI tahmini\",\r\n      \"flicker-free kabul edilir\",\r\n      \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n      \"kesin ayd\u0131nlat\u0131r\"\r\n    ].forEach(function (phrase) {\r\n      if (String(text || \"\").indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n\r\n  function domState() {\r\n    var r = root();\r\n    var p28 = r ? r.querySelector(\"[data-gdx-panel-p28-schematic='1']\") : null;\r\n    var alt = r ? r.querySelector(\"[data-gdx-panel-p31-alt-schematic='1']\") : null;\r\n    var p28Identity = p28 ? p28.querySelector(\"[data-p33-schema-identity]\") : null;\r\n    var altIdentity = alt ? alt.querySelector(\"[data-p33-schema-identity]\") : null;\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      p28Found: !!p28,\r\n      p31AltFound: !!alt,\r\n      p28IdentityFound: !!p28Identity,\r\n      p31AltIdentityFound: !!altIdentity,\r\n      p28IdentityImageFound: !!(p28Identity && p28Identity.querySelector(\"img\")),\r\n      p31AltIdentityImageFound: !!(altIdentity && altIdentity.querySelector(\"img\")),\r\n      p28IdentityFallbackFound: !!(p28Identity && p28Identity.querySelector(\".gdx-p33-identity-media span\")),\r\n      p31AltIdentityFallbackFound: !!(altIdentity && altIdentity.querySelector(\".gdx-p33-identity-media span\")),\r\n      p28IdentityTitle: p28Identity && p28Identity.querySelector(\".gdx-p33-identity-title\") ? p28Identity.querySelector(\".gdx-p33-identity-title\").textContent.trim() : \"\",\r\n      p31AltIdentityTitle: altIdentity && altIdentity.querySelector(\".gdx-p33-identity-title\") ? altIdentity.querySelector(\".gdx-p33-identity-title\").textContent.trim() : \"\",\r\n      identityCount: r ? r.querySelectorAll(\"[data-p33-schema-identity]\").length : 0,\r\n      imageCount: r ? r.querySelectorAll(\"[data-p33-schema-identity] img\").length : 0,\r\n      fallbackCount: r ? r.querySelectorAll(\"[data-p33-schema-identity] .gdx-p33-identity-media span\").length : 0\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var p33Stack = safeCall(function () { return window.debugPanelV4P33Stack ? window.debugPanelV4P33Stack() : { ok: false, reason: \"missing P33 stack\" }; });\r\n    var dom = domState();\r\n    var r = root();\r\n    var forbiddenFound = scanForbidden(r ? r.textContent : \"\");\r\n    var ok = !!(\r\n      dom.p28IdentityFound &&\r\n      dom.p31AltIdentityFound &&\r\n      dom.identityCount >= 2 &&\r\n      !forbiddenFound.length &&\r\n      p33Stack.protectedSystemsOk !== false\r\n    );\r\n\r\n    return {\r\n      ok: ok,\r\n      version: VERSION,\r\n      visualChainOk: !!(dom.p28IdentityFound && dom.p31AltIdentityFound),\r\n      protectedSystemsOk: !!(!forbiddenFound.length && p33Stack.protectedSystemsOk !== false),\r\n      dom: dom,\r\n      p33Stack: p33Stack,\r\n      forbiddenFound: forbiddenFound,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      upperRecommendationTouched: false,\r\n      visibleRenderTouched: true,\r\n      nextRecommendedPhase: \"PANEL-V4-P33-4-VISUAL-DISTANCE-BAND-POLISH-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P33IdentityBridge = debug;\r\n  window.GDX_PANEL_LED_V4_P33_IDENTITY_BRIDGE_DEBUG = { version: VERSION, debug: debug };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P32-1-R2 DESKTOP RECO ROW HEIGHT EQUALIZER / SOURCE\r\n   Faz: PANEL-V4-P32-1-R2-DESKTOP-RECO-ROW-HEIGHT-EQUALIZER-SOURCE-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P32-1/R1 hizalama denemelerinde action/setup top fark\u0131 y\u00FCksek kald\u0131.\r\n   - R2, action margin push yerine kart i\u00E7indeki \u00FCst alan ve medya/skor alan\u0131n\u0131\r\n     sat\u0131r baz\u0131nda ayn\u0131 y\u00FCksekli\u011Fe sabitler.\r\n   - Eski desktop CSS'ten gelen margin-top:auto!important etkisini inline ve CSS\r\n     seviyesinde s\u0131f\u0131rlar.\r\n   - Kapat\u0131nca t\u0131klanan \u00F6neri kart\u0131 anchor'\u0131na d\u00F6n\u00FC\u015F korunur.\r\n   - Sadece desktop. Mobil davran\u0131\u015Fa dokunmaz.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P32-1-R2-DESKTOP-RECO-ROW-HEIGHT-EQUALIZER-SOURCE-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var REC_MOUNT_ID = \"gdxPanelV4RecommendationPreview\";\r\n  var DETAIL_SELECTOR = \"[data-gdx-panel-reco-wide-detail='1']\";\r\n  var CARD_SELECTOR = \"#gdx-panel-led-v4-root .gdx-panel-v4-reco-card.is-final[data-gdx-panel-reco-card]\";\r\n  var TOP_SELECTOR = \".gdx-panel-v4-reco-top\";\r\n  var BODY_SELECTOR = \".gdx-panel-v4-reco-body\";\r\n  var ACTION_SELECTOR = \".gdx-panel-v4-reco-actions.is-commerce\";\r\n  var SETUP_SELECTOR = \"[data-gdx-panel-p29-rec-setup='1']\";\r\n  var WHY_SELECTOR = \"[data-gdx-panel-rec-why]\";\r\n  var WIDE_CLOSE_SELECTOR = \"[data-gdx-panel-rec-wide-close]\";\r\n\r\n  var state = {\r\n    installed: false,\r\n    observerReady: false,\r\n    scheduled: false,\r\n    alignCount: 0,\r\n    lastAlignAt: \"\",\r\n    lastAlignResult: null,\r\n    lastReturn: null,\r\n    lastReturnAnchor: null,\r\n    lastReturnAnchorFound: false,\r\n    lastOpenedKey: \"\",\r\n    lastOpenAt: \"\",\r\n    lastCloseAt: \"\",\r\n    openScrollCount: 0,\r\n    closeReturnCount: 0,\r\n    anchorReturnCount: 0,\r\n    numericReturnCount: 0,\r\n    lastScrollTargetFound: false\r\n  };\r\n\r\n  function isDesktop() {\r\n    return !!(window.matchMedia && window.matchMedia(\"(min-width: 990px)\").matches);\r\n  }\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n  function mount() { return document.getElementById(REC_MOUNT_ID); }\r\n\r\n  function uiApi() { return window.GDX_PANEL_LED_V4_UI || null; }\r\n  function uiState() {\r\n    var ui = uiApi();\r\n    return ui && ui.state ? ui.state : null;\r\n  }\r\n\r\n  function renderUi() {\r\n    var ui = uiApi();\r\n    if (ui && typeof ui.render === \"function\") {\r\n      ui.render();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  function cards() {\r\n    return Array.prototype.slice.call(document.querySelectorAll(CARD_SELECTOR))\r\n      .filter(function (card) { return !!(card && card.querySelector(ACTION_SELECTOR)); })\r\n      .slice(0, 12);\r\n  }\r\n\r\n  function normalizeKeyPart(value) {\r\n    return String(value || \"\")\r\n      .toLocaleLowerCase(\"tr-TR\")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim()\r\n      .replace(/[^a-z0-9\u011F\u00FC\u015F\u0131\u00F6\u00E7-]+/g, \"-\")\r\n      .replace(/-+/g, \"-\")\r\n      .replace(/^-|-$/g, \"\")\r\n      .slice(0, 120);\r\n  }\r\n\r\n  function keyFromButton(button) {\r\n    var key = button ? (button.getAttribute(\"data-gdx-panel-rec-why\") || \"\") : \"\";\r\n    var host = button ? button.closest(\"[data-gdx-panel-reco-card]\") : null;\r\n    if (!key && host) key = host.getAttribute(\"data-gdx-panel-reco-card\") || \"\";\r\n    return normalizeKeyPart(key);\r\n  }\r\n\r\n  function cardKey(card) {\r\n    return normalizeKeyPart(card ? card.getAttribute(\"data-gdx-panel-reco-card\") || \"\" : \"\");\r\n  }\r\n\r\n  function cardIndexOf(card) {\r\n    return cards().indexOf(card);\r\n  }\r\n\r\n  function findCardByAnchor(anchor) {\r\n    var list = cards();\r\n    var found = null;\r\n\r\n    if (!anchor) return list[0] || null;\r\n\r\n    if (anchor.key) {\r\n      found = list.find(function (card) {\r\n        return cardKey(card) === anchor.key || cardKey(card).indexOf(anchor.key) > -1 || anchor.key.indexOf(cardKey(card)) > -1;\r\n      });\r\n      if (found) return found;\r\n    }\r\n\r\n    if (typeof anchor.index === \"number\" && anchor.index >= 0 && list[anchor.index]) {\r\n      return list[anchor.index];\r\n    }\r\n\r\n    return list[0] || null;\r\n  }\r\n\r\n  function scrollContainerFor(el) {\r\n    var node = el ? el.parentElement : null;\r\n    var doc = document.scrollingElement || document.documentElement;\r\n\r\n    while (node && node !== document.body && node !== document.documentElement) {\r\n      var style = window.getComputedStyle(node);\r\n      var overflowY = style.overflowY || \"\";\r\n      if (/(auto|scroll|overlay)/.test(overflowY) && node.scrollHeight > node.clientHeight + 8) {\r\n        return node;\r\n      }\r\n      node = node.parentElement;\r\n    }\r\n\r\n    return doc;\r\n  }\r\n\r\n  function getScrollTop(container) {\r\n    if (!container) return window.pageYOffset || document.documentElement.scrollTop || 0;\r\n    if (container === document.scrollingElement || container === document.documentElement || container === document.body) {\r\n      return window.pageYOffset || document.documentElement.scrollTop || 0;\r\n    }\r\n    return container.scrollTop || 0;\r\n  }\r\n\r\n  function setScrollTop(container, top, smooth) {\r\n    top = Math.max(0, Number(top || 0));\r\n\r\n    if (!container || container === document.scrollingElement || container === document.documentElement || container === document.body) {\r\n      window.scrollTo({ top: top, behavior: smooth ? \"smooth\" : \"auto\" });\r\n      return;\r\n    }\r\n\r\n    if (typeof container.scrollTo === \"function\") {\r\n      container.scrollTo({ top: top, behavior: smooth ? \"smooth\" : \"auto\" });\r\n    } else {\r\n      container.scrollTop = top;\r\n    }\r\n  }\r\n\r\n  function scrollToElement(el, options) {\r\n    options = options || {};\r\n    if (!el) return false;\r\n\r\n    var container = scrollContainerFor(el);\r\n    var offset = Number(options.offset || 82);\r\n    var top;\r\n\r\n    if (container === document.scrollingElement || container === document.documentElement || container === document.body) {\r\n      top = el.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || 0) - offset;\r\n    } else {\r\n      top = el.getBoundingClientRect().top - container.getBoundingClientRect().top + container.scrollTop - offset;\r\n    }\r\n\r\n    setScrollTop(container, top, options.smooth !== false);\r\n    return true;\r\n  }\r\n\r\n  function saveReturnPoint(origin, key) {\r\n    var card = origin && origin.closest ? origin.closest(\"[data-gdx-panel-reco-card]\") : null;\r\n    var container = scrollContainerFor(card || origin || mount() || root() || document.body);\r\n\r\n    state.lastReturn = {\r\n      container: container,\r\n      top: getScrollTop(container),\r\n      at: new Date().toISOString()\r\n    };\r\n\r\n    state.lastReturnAnchor = {\r\n      key: key || (card ? cardKey(card) : \"\"),\r\n      index: card ? cardIndexOf(card) : -1,\r\n      at: new Date().toISOString()\r\n    };\r\n\r\n    state.lastReturnAnchorFound = !!card;\r\n  }\r\n\r\n  function restoreNumericReturnPoint() {\r\n    if (!state.lastReturn) return false;\r\n    setScrollTop(state.lastReturn.container, state.lastReturn.top, true);\r\n    state.numericReturnCount += 1;\r\n    return true;\r\n  }\r\n\r\n  function restoreReturnAnchor() {\r\n    var card = findCardByAnchor(state.lastReturnAnchor);\r\n    var ok = false;\r\n\r\n    if (card) {\r\n      ok = scrollToElement(card, { offset: 72, smooth: true });\r\n      state.anchorReturnCount += ok ? 1 : 0;\r\n      state.lastReturnAnchorFound = !!ok;\r\n    }\r\n\r\n    if (!ok) ok = restoreNumericReturnPoint();\r\n\r\n    if (ok) {\r\n      state.closeReturnCount += 1;\r\n      state.lastCloseAt = new Date().toISOString();\r\n    }\r\n\r\n    return ok;\r\n  }\r\n\r\n  function restoreReturnAnchorRepeated() {\r\n    [90, 240, 520, 900].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        scheduleAlign(20);\r\n        restoreReturnAnchor();\r\n      }, delay);\r\n    });\r\n  }\r\n\r\n  function clearInline(el) {\r\n    if (!el) return;\r\n    el.style.removeProperty(\"height\");\r\n    el.style.removeProperty(\"min-height\");\r\n    el.style.removeProperty(\"max-height\");\r\n    el.style.removeProperty(\"margin-top\");\r\n    el.style.removeProperty(\"--p32-row-top-height\");\r\n    el.style.removeProperty(\"--p32-row-body-height\");\r\n  }\r\n\r\n  function resetAlignment() {\r\n    cards().forEach(function (card) {\r\n      clearInline(card.querySelector(TOP_SELECTOR));\r\n      clearInline(card.querySelector(BODY_SELECTOR));\r\n\r\n      var action = card.querySelector(ACTION_SELECTOR);\r\n      var setup = card.querySelector(SETUP_SELECTOR);\r\n\r\n      if (action) {\r\n        action.style.removeProperty(\"margin-top\");\r\n        action.style.removeProperty(\"--p32-action-push\");\r\n      }\r\n\r\n      if (setup) {\r\n        setup.style.removeProperty(\"margin-top\");\r\n      }\r\n\r\n      card.removeAttribute(\"data-p32-row-equalized\");\r\n    });\r\n  }\r\n\r\n  function spread(values) {\r\n    values = values.filter(function (v) { return typeof v === \"number\" && isFinite(v); });\r\n    if (!values.length) return 0;\r\n    return Math.round((Math.max.apply(Math, values) - Math.min.apply(Math, values)) * 100) / 100;\r\n  }\r\n\r\n  function groupRows(list) {\r\n    var rows = [];\r\n\r\n    list.forEach(function (card) {\r\n      var top = card.getBoundingClientRect().top;\r\n      var row = rows.find(function (candidate) {\r\n        return Math.abs(candidate.top - top) < 120;\r\n      });\r\n\r\n      if (!row) {\r\n        row = { top: top, cards: [] };\r\n        rows.push(row);\r\n      }\r\n\r\n      row.cards.push(card);\r\n      row.top = Math.min(row.top, top);\r\n    });\r\n\r\n    return rows;\r\n  }\r\n\r\n  function setHeight(el, px) {\r\n    if (!el || !px) return;\r\n    px = Math.ceil(Number(px || 0));\r\n    el.style.setProperty(\"min-height\", px + \"px\", \"important\");\r\n    el.style.setProperty(\"height\", px + \"px\", \"important\");\r\n  }\r\n\r\n  function applyRowHeightEqualizer(row) {\r\n    var metrics = row.cards.map(function (card) {\r\n      var top = card.querySelector(TOP_SELECTOR);\r\n      var body = card.querySelector(BODY_SELECTOR);\r\n      var action = card.querySelector(ACTION_SELECTOR);\r\n      var setup = card.querySelector(SETUP_SELECTOR);\r\n\r\n      return { card: card, top: top, body: body, action: action, setup: setup };\r\n    }).filter(function (m) {\r\n      return !!(m.top && m.body && m.action);\r\n    });\r\n\r\n    var maxTopHeight = Math.max.apply(Math, metrics.map(function (m) {\r\n      return m.top.getBoundingClientRect().height;\r\n    }));\r\n\r\n    var maxBodyHeight = Math.max.apply(Math, metrics.map(function (m) {\r\n      return m.body.getBoundingClientRect().height;\r\n    }));\r\n\r\n    metrics.forEach(function (m) {\r\n      m.card.setAttribute(\"data-p32-row-equalized\", \"1\");\r\n      m.card.style.setProperty(\"--p32-row-top-height\", Math.ceil(maxTopHeight) + \"px\");\r\n      m.card.style.setProperty(\"--p32-row-body-height\", Math.ceil(maxBodyHeight) + \"px\");\r\n\r\n      setHeight(m.top, maxTopHeight);\r\n      setHeight(m.body, maxBodyHeight);\r\n\r\n      m.action.style.setProperty(\"margin-top\", \"0px\", \"important\");\r\n\r\n      if (m.setup) {\r\n        m.setup.style.setProperty(\"margin-top\", \"14px\", \"important\");\r\n      }\r\n    });\r\n\r\n    return {\r\n      cardCount: row.cards.length,\r\n      maxTopHeight: Math.ceil(maxTopHeight || 0),\r\n      maxBodyHeight: Math.ceil(maxBodyHeight || 0),\r\n      metricCount: metrics.length\r\n    };\r\n  }\r\n\r\n  function alignDesktopCards() {\r\n    var list = cards();\r\n    var rows;\r\n    var rowReports;\r\n    var allActions;\r\n    var allSetups;\r\n    var result;\r\n\r\n    resetAlignment();\r\n\r\n    if (!isDesktop()) {\r\n      result = {\r\n        ok: true,\r\n        version: VERSION,\r\n        desktopMode: false,\r\n        cardCount: list.length,\r\n        rowCount: 0,\r\n        alignmentApplied: false,\r\n        reason: \"mobile_or_tablet_noop\",\r\n        actionTopSpread: 0,\r\n        setupTopSpread: 0\r\n      };\r\n      state.lastAlignResult = result;\r\n      return result;\r\n    }\r\n\r\n    if (list.length < 2) {\r\n      result = {\r\n        ok: false,\r\n        version: VERSION,\r\n        desktopMode: true,\r\n        cardCount: list.length,\r\n        rowCount: list.length ? 1 : 0,\r\n        alignmentApplied: false,\r\n        reason: \"not_enough_cards\",\r\n        actionTopSpread: 0,\r\n        setupTopSpread: 0\r\n      };\r\n      state.lastAlignResult = result;\r\n      return result;\r\n    }\r\n\r\n    rows = groupRows(list);\r\n    rowReports = rows.map(applyRowHeightEqualizer);\r\n\r\n    allActions = list.map(function (card) { return card.querySelector(ACTION_SELECTOR); }).filter(Boolean);\r\n    allSetups = list.map(function (card) { return card.querySelector(SETUP_SELECTOR); }).filter(Boolean);\r\n\r\n    result = {\r\n      ok: true,\r\n      version: VERSION,\r\n      desktopMode: true,\r\n      cardCount: list.length,\r\n      rowCount: rows.length,\r\n      rowReports: rowReports,\r\n      alignmentApplied: true,\r\n      alignmentMode: \"row_top_body_height_equalizer\",\r\n      actionTopSpread: spread(allActions.map(function (el) { return el.getBoundingClientRect().top; })),\r\n      setupTopSpread: spread(allSetups.map(function (el) { return el.getBoundingClientRect().top; })),\r\n      setupCount: allSetups.length,\r\n      actionFoundCount: allActions.length,\r\n      lastAlignAt: new Date().toISOString()\r\n    };\r\n\r\n    state.alignCount += 1;\r\n    state.lastAlignAt = result.lastAlignAt;\r\n    state.lastAlignResult = result;\r\n    return result;\r\n  }\r\n\r\n  function scheduleAlign(delay) {\r\n    if (state.scheduled) return;\r\n    state.scheduled = true;\r\n\r\n    window.setTimeout(function () {\r\n      state.scheduled = false;\r\n      alignDesktopCards();\r\n    }, Number(delay || 120));\r\n  }\r\n\r\n  function scrollToWideDetailAfterRender(key) {\r\n    [90, 220, 460, 760].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        var detail = document.querySelector(\"#\" + ROOT_ID + \" \" + DETAIL_SELECTOR);\r\n        if (!detail) return;\r\n\r\n        state.lastScrollTargetFound = true;\r\n        scrollToElement(detail, { offset: 78, smooth: true });\r\n        scheduleAlign(80);\r\n      }, delay);\r\n    });\r\n\r\n    state.openScrollCount += 1;\r\n    state.lastOpenedKey = key || \"\";\r\n    state.lastOpenAt = new Date().toISOString();\r\n  }\r\n\r\n  function desktopWhyClick(button, event) {\r\n    var st = uiState();\r\n    var key = keyFromButton(button);\r\n    var willOpen;\r\n\r\n    if (!isDesktop() || !st || !key) return false;\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (typeof event.stopImmediatePropagation === \"function\") event.stopImmediatePropagation();\r\n\r\n    willOpen = String(st.recommendationExpandedKey || \"\") !== key;\r\n\r\n    if (willOpen) {\r\n      saveReturnPoint(button, key);\r\n      st.recommendationExpandedKey = key;\r\n      renderUi();\r\n      scrollToWideDetailAfterRender(key);\r\n    } else {\r\n      st.recommendationExpandedKey = \"\";\r\n      renderUi();\r\n      restoreReturnAnchorRepeated();\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function desktopWideCloseClick(button, event) {\r\n    var st = uiState();\r\n\r\n    if (!isDesktop() || !st) return false;\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (typeof event.stopImmediatePropagation === \"function\") event.stopImmediatePropagation();\r\n\r\n    st.recommendationExpandedKey = \"\";\r\n    renderUi();\r\n    restoreReturnAnchorRepeated();\r\n\r\n    return true;\r\n  }\r\n\r\n  function onClickCapture(event) {\r\n    var why = event.target && event.target.closest ? event.target.closest(WHY_SELECTOR) : null;\r\n    var close = event.target && event.target.closest ? event.target.closest(WIDE_CLOSE_SELECTOR) : null;\r\n\r\n    if (why) {\r\n      desktopWhyClick(why, event);\r\n      return;\r\n    }\r\n\r\n    if (close) {\r\n      desktopWideCloseClick(close, event);\r\n    }\r\n  }\r\n\r\n  function observe() {\r\n    var m = mount();\r\n    if (!m || !window.MutationObserver) return false;\r\n\r\n    if (state._observer) {\r\n      try { state._observer.disconnect(); } catch (error) {}\r\n    }\r\n\r\n    state._observer = new MutationObserver(function (mutations) {\r\n      var relevant = mutations.some(function (mutation) {\r\n        return Array.prototype.slice.call(mutation.addedNodes || []).some(function (node) {\r\n          return node && node.nodeType === 1 && (\r\n            (node.matches && (node.matches(CARD_SELECTOR) || node.matches(SETUP_SELECTOR) || node.matches(DETAIL_SELECTOR))) ||\r\n            (node.querySelector && (node.querySelector(CARD_SELECTOR) || node.querySelector(SETUP_SELECTOR) || node.querySelector(DETAIL_SELECTOR)))\r\n          );\r\n        });\r\n      });\r\n\r\n      if (relevant) scheduleAlign(140);\r\n    });\r\n\r\n    state._observer.observe(m, { childList: true, subtree: true });\r\n    state.observerReady = true;\r\n    return true;\r\n  }\r\n\r\n  function boot() {\r\n    if (state.installed) return;\r\n    state.installed = true;\r\n\r\n    document.addEventListener(\"click\", onClickCapture, true);\r\n\r\n    [220, 620, 1200, 2200].forEach(function (delay) {\r\n      window.setTimeout(function () {\r\n        observe();\r\n        scheduleAlign(0);\r\n      }, delay);\r\n    });\r\n\r\n    window.addEventListener(\"resize\", function () {\r\n      window.clearTimeout(state._resizeTimer);\r\n      state._resizeTimer = window.setTimeout(function () {\r\n        scheduleAlign(0);\r\n      }, 180);\r\n    }, { passive: true });\r\n  }\r\n\r\n  function debug() {\r\n    var align = alignDesktopCards();\r\n    var st = uiState();\r\n    var detail = document.querySelector(\"#\" + ROOT_ID + \" \" + DETAIL_SELECTOR);\r\n    var list = cards();\r\n    var actionList = list.map(function (card) { return card.querySelector(ACTION_SELECTOR); }).filter(Boolean);\r\n    var setupList = list.map(function (card) { return card.querySelector(SETUP_SELECTOR); }).filter(Boolean);\r\n    var equalizedCount = list.filter(function (card) { return card.getAttribute(\"data-p32-row-equalized\") === \"1\"; }).length;\r\n\r\n    return {\r\n      ok: !!(state.installed && (isDesktop() ? list.length >= 1 : true) && align.ok),\r\n      version: VERSION,\r\n      desktopMode: isDesktop(),\r\n      installed: !!state.installed,\r\n      observerReady: !!state.observerReady,\r\n      cardCount: list.length,\r\n      equalizedCardCount: equalizedCount,\r\n      actionFoundCount: actionList.length,\r\n      setupBlockCount: setupList.length,\r\n      wideDetailFound: !!detail,\r\n      expandedKey: st ? (st.recommendationExpandedKey || \"\") : \"\",\r\n      alignment: align,\r\n      actionTopSpread: align.actionTopSpread,\r\n      setupTopSpread: align.setupTopSpread,\r\n      lastReturnSaved: !!state.lastReturn,\r\n      returnAnchorSaved: !!state.lastReturnAnchor,\r\n      lastReturnAnchorFound: !!state.lastReturnAnchorFound,\r\n      lastOpenedKey: state.lastOpenedKey,\r\n      openScrollCount: state.openScrollCount,\r\n      closeReturnCount: state.closeReturnCount,\r\n      anchorReturnCount: state.anchorReturnCount,\r\n      numericReturnCount: state.numericReturnCount,\r\n      lastScrollTargetFound: !!state.lastScrollTargetFound,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      upperRecommendationTouched: false,\r\n      mobileTouched: false,\r\n      visibleRenderTouched: false\r\n    };\r\n  }\r\n\r\n  window.GDX_PANEL_LED_V4_P32_DESKTOP_UX = {\r\n    version: VERSION,\r\n    align: alignDesktopCards,\r\n    scheduleAlign: scheduleAlign,\r\n    debug: debug,\r\n    scrollToElement: scrollToElement,\r\n    restoreReturnAnchor: restoreReturnAnchor,\r\n    restoreReturnAnchorRepeated: restoreReturnAnchorRepeated\r\n  };\r\n\r\n  window.debugPanelV4P32DesktopUx = debug;\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\"DOMContentLoaded\", boot, { once: true });\r\n  } else {\r\n    boot();\r\n  }\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P33-4 VISUAL DISTANCE BAND POLISH DEBUG\r\n   Faz: PANEL-V4-P33-4-VISUAL-DISTANCE-BAND-POLISH-SAFE\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P33-4-VISUAL-DISTANCE-BAND-POLISH-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n\r\n  function safeCall(fn, fallback) {\r\n    try { if (typeof fn === \"function\") return fn(); } catch (error) {\r\n      return { ok: false, error: error && error.message ? error.message : String(error || \"error\") };\r\n    }\r\n    return fallback || { ok: false, reason: \"function missing\" };\r\n  }\r\n\r\n  function scanForbidden(text) {\r\n    var found = [];\r\n    [\r\n      \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n      \"G\u00FCncel stok\",\r\n      \"G\u00FCncel fiyat\",\r\n      \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n      \"Kontrol ederek\",\r\n      \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n      \"ger\u00E7ek lumen de\u011Feri\",\r\n      \"kesin m\u00B2\",\r\n      \"garanti lux\",\r\n      \"TLCI tahmini\",\r\n      \"CRI tahmini\",\r\n      \"flicker-free kabul edilir\",\r\n      \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n      \"kesin ayd\u0131nlat\u0131r\"\r\n    ].forEach(function (phrase) {\r\n      if (String(text || \"\").indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n\r\n  function domState() {\r\n    var r = root();\r\n    var p28 = r ? r.querySelector(\"[data-gdx-panel-p28-schematic='1']\") : null;\r\n    var alt = r ? r.querySelector(\"[data-gdx-panel-p31-alt-schematic='1']\") : null;\r\n    var p28Canvas = p28 ? p28.querySelector(\".gdx-p28-schema-canvas\") : null;\r\n    var altCanvas = alt ? alt.querySelector(\".gdx-p28-schema-canvas\") : null;\r\n    var p28Summary = p28 ? p28.querySelector(\".gdx-p28-schema-summary\") : null;\r\n    var altSummary = alt ? alt.querySelector(\".gdx-p28-schema-summary\") : null;\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      p28Found: !!p28,\r\n      p31AltFound: !!alt,\r\n      p28Profile: p28 ? (p28.getAttribute(\"data-p33-profile\") || \"\") : \"\",\r\n      p31AltProfile: alt ? (alt.getAttribute(\"data-p33-profile\") || \"\") : \"\",\r\n      p28CanonicalFound: !!(p28 && p28.getAttribute(\"data-p33-canonical\") === \"1\"),\r\n      p31AltCanonicalFound: !!(alt && alt.getAttribute(\"data-p33-canonical\") === \"1\"),\r\n      p28CanvasFound: !!p28Canvas,\r\n      p31AltCanvasFound: !!altCanvas,\r\n      p28SummaryFound: !!p28Summary,\r\n      p31AltSummaryFound: !!altSummary,\r\n      p28CanvasIsolation: p28Canvas ? window.getComputedStyle(p28Canvas).isolation : \"\",\r\n      p31AltCanvasIsolation: altCanvas ? window.getComputedStyle(altCanvas).isolation : \"\",\r\n      p28SummaryPosition: p28Summary ? window.getComputedStyle(p28Summary).position : \"\",\r\n      p31AltSummaryPosition: altSummary ? window.getComputedStyle(altSummary).position : \"\",\r\n      p28NodeCount: p28 ? p28.querySelectorAll(\".gdx-p28-schema-node\").length : 0,\r\n      p31AltNodeCount: alt ? alt.querySelectorAll(\".gdx-p28-schema-node\").length : 0\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var identity = safeCall(function () { return window.debugPanelV4P33IdentityBridge ? window.debugPanelV4P33IdentityBridge() : { ok: false, reason: \"missing identity bridge\" }; });\r\n    var dom = domState();\r\n    var r = root();\r\n    var forbiddenFound = scanForbidden(r ? r.textContent : \"\");\r\n    var cssLikelyApplied = !!(\r\n      dom.p28CanvasIsolation === \"isolate\" &&\r\n      dom.p31AltCanvasIsolation === \"isolate\" &&\r\n      dom.p28SummaryPosition === \"relative\" &&\r\n      dom.p31AltSummaryPosition === \"relative\"\r\n    );\r\n\r\n    return {\r\n      ok: !!(\r\n        identity.ok &&\r\n        dom.p28CanonicalFound &&\r\n        dom.p31AltCanonicalFound &&\r\n        dom.p28CanvasFound &&\r\n        dom.p31AltCanvasFound &&\r\n        cssLikelyApplied &&\r\n        !forbiddenFound.length\r\n      ),\r\n      version: VERSION,\r\n      visualChainOk: !!(dom.p28CanonicalFound && dom.p31AltCanonicalFound && cssLikelyApplied),\r\n      protectedSystemsOk: !!(!forbiddenFound.length && identity.protectedSystemsOk !== false),\r\n      cssLikelyApplied: cssLikelyApplied,\r\n      dom: dom,\r\n      identityBridge: identity,\r\n      forbiddenFound: forbiddenFound,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      upperRecommendationTouched: false,\r\n      visibleRenderTouched: true,\r\n      nextRecommendedPhase: \"PANEL-V4-P33-5-INTEGRATION-DEBUG-REGRESSION-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P33DistancePolish = debug;\r\n  window.GDX_PANEL_LED_V4_P33_DISTANCE_POLISH_DEBUG = { version: VERSION, debug: debug };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P33-5 INTEGRATION DEBUG / REGRESSION\r\n   Faz: PANEL-V4-P33-5-INTEGRATION-DEBUG-REGRESSION-SAFE\r\n\r\n   Ama\u00E7:\r\n   - P33-1 \u2192 P33-4 zincirini tek debug alt\u0131nda do\u011Frular.\r\n   - P28 kazanan \u015Fema, P31 alternatif \u015Fema, P33 kimlik g\u00F6rseli,\r\n     g\u00F6rsel mesafe band\u0131, P32 masa\u00FCst\u00FC hizalama ve korunmu\u015F sistemleri kontrol eder.\r\n   - G\u00F6r\u00FCn\u00FCr render \u00FCretmez; sadece entegrasyon debug API ekler.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P33-5-INTEGRATION-DEBUG-REGRESSION-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n\r\n  function safeCall(name, fn) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n      return { ok: false, reason: name + \" missing\" };\r\n    } catch (error) {\r\n      return { ok: false, reason: name + \" error\", error: error && error.message ? error.message : String(error || \"error\") };\r\n    }\r\n  }\r\n\r\n  function scanForbidden(text) {\r\n    var found = [];\r\n    [\r\n      \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n      \"G\u00FCncel stok\",\r\n      \"G\u00FCncel fiyat\",\r\n      \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n      \"Kontrol ederek\",\r\n      \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n      \"Data adapter\",\r\n      \"panel-led-v4.data.js\",\r\n      \"V4 Faz\",\r\n      \"internal debug\",\r\n      \"COB format\u0131nda\",\r\n      \"COB FORMAT\",\r\n      \"ger\u00E7ek lumen de\u011Feri\",\r\n      \"kesin m\u00B2\",\r\n      \"garanti lux\",\r\n      \"TLCI tahmini\",\r\n      \"CRI tahmini\",\r\n      \"flicker-free kabul edilir\",\r\n      \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n      \"bu \u00FCr\u00FCn 5 m\u00B2\",\r\n      \"kesin ayd\u0131nlat\u0131r\",\r\n      \"kesin mesafe\",\r\n      \"RGB cilt tonu do\u011Frulu\u011Fu sa\u011Flar\"\r\n    ].forEach(function (phrase) {\r\n      if (String(text || \"\").indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n\r\n  function domState() {\r\n    var r = root();\r\n    var p28 = r ? r.querySelector(\"[data-gdx-panel-p28-schematic='1']\") : null;\r\n    var alt = r ? r.querySelector(\"[data-gdx-panel-p31-alt-schematic='1']\") : null;\r\n    var identities = r ? r.querySelectorAll(\"[data-p33-schema-identity]\") : [];\r\n    var p28Canvas = p28 ? p28.querySelector(\".gdx-p28-schema-canvas\") : null;\r\n    var altCanvas = alt ? alt.querySelector(\".gdx-p28-schema-canvas\") : null;\r\n    var recoCards = r ? r.querySelectorAll(\".gdx-panel-v4-reco-card.is-final[data-gdx-panel-reco-card]\") : [];\r\n    var equalizedCards = r ? r.querySelectorAll(\".gdx-panel-v4-reco-card.is-final[data-p32-row-equalized='1']\") : [];\r\n    var commerceMount = r ? r.querySelector(\"#gdxPanelV4CommercePreview, .gdx-panel-v4-commerce-mount\") : null;\r\n    var shareMount = r ? r.querySelector(\"#gdxPanelV4SharePreview, .gdx-panel-v4-share-mount\") : null;\r\n    var shareCardMount = r ? r.querySelector(\"#gdxPanelV4ShareCardPreview, .gdx-panel-v4-share-card-mount\") : null;\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      resultFound: !!(r && r.querySelector(\".gdx-panel-v4-result, [data-gdx-panel-result]\")),\r\n      p28Found: !!p28,\r\n      p31AltFound: !!alt,\r\n      p28CanonicalFound: !!(p28 && p28.getAttribute(\"data-p33-canonical\") === \"1\"),\r\n      p31AltCanonicalFound: !!(alt && alt.getAttribute(\"data-p33-canonical\") === \"1\"),\r\n      p28Profile: p28 ? (p28.getAttribute(\"data-p33-profile\") || \"\") : \"\",\r\n      p31AltProfile: alt ? (alt.getAttribute(\"data-p33-profile\") || \"\") : \"\",\r\n      p28NodeCount: p28 ? p28.querySelectorAll(\".gdx-p28-schema-node\").length : 0,\r\n      p31AltNodeCount: alt ? alt.querySelectorAll(\".gdx-p28-schema-node\").length : 0,\r\n      p28StepCount: p28 ? p28.querySelectorAll(\".gdx-p28-schema-side li\").length : 0,\r\n      p31AltStepCount: alt ? alt.querySelectorAll(\".gdx-p28-schema-side li\").length : 0,\r\n      p28CanvasFound: !!p28Canvas,\r\n      p31AltCanvasFound: !!altCanvas,\r\n      p28CanvasIsolation: p28Canvas ? window.getComputedStyle(p28Canvas).isolation : \"\",\r\n      p31AltCanvasIsolation: altCanvas ? window.getComputedStyle(altCanvas).isolation : \"\",\r\n      identityCount: identities.length,\r\n      identityImageCount: r ? r.querySelectorAll(\"[data-p33-schema-identity] img\").length : 0,\r\n      p28IdentityFound: !!(p28 && p28.querySelector(\"[data-p33-schema-identity]\")),\r\n      p31AltIdentityFound: !!(alt && alt.querySelector(\"[data-p33-schema-identity]\")),\r\n      recoCardCount: recoCards.length,\r\n      equalizedRecoCardCount: equalizedCards.length,\r\n      commerceMountFound: !!commerceMount,\r\n      shareMountFound: !!shareMount,\r\n      shareCardMountFound: !!shareCardMount,\r\n      oldDualSetupFound: !!(r && r.querySelector(\"[data-gdx-panel-p31-dual-setup='1']\")),\r\n      oldDualCardCount: r ? r.querySelectorAll(\".gdx-p31-dual-card\").length : 0\r\n    };\r\n  }\r\n\r\n  function protectedFlags(debugs) {\r\n    var keys = [\r\n      \"scoreTouched\",\r\n      \"commerceTouched\",\r\n      \"shareTouched\",\r\n      \"recommendationRankingTouched\",\r\n      \"upperRecommendationTouched\",\r\n      \"exactM2Claims\",\r\n      \"exactLuxClaims\",\r\n      \"estimatedCriTlci\"\r\n    ];\r\n\r\n    var out = {};\r\n\r\n    keys.forEach(function (key) {\r\n      out[key] = !!Object.keys(debugs).some(function (name) {\r\n        return !!(debugs[name] && debugs[name][key]);\r\n      });\r\n    });\r\n\r\n    return out;\r\n  }\r\n\r\n  function debug() {\r\n    var debugs = {\r\n      p33Engine: safeCall(\"debugP33CanonicalSchematicEngine\", window.debugP33CanonicalSchematicEngine),\r\n      p28Render: safeCall(\"debugP28SchematicRender\", window.debugP28SchematicRender),\r\n      p31AltRender: safeCall(\"debugP31AltSchematicRender\", window.debugP31AltSchematicRender),\r\n      p33Stack: safeCall(\"debugPanelV4P33Stack\", window.debugPanelV4P33Stack),\r\n      p33Identity: safeCall(\"debugPanelV4P33IdentityBridge\", window.debugPanelV4P33IdentityBridge),\r\n      p33Distance: safeCall(\"debugPanelV4P33DistancePolish\", window.debugPanelV4P33DistancePolish),\r\n      p32DesktopUx: safeCall(\"debugPanelV4P32DesktopUx\", window.debugPanelV4P32DesktopUx)\r\n    };\r\n\r\n    var dom = domState();\r\n    var r = root();\r\n    var forbiddenFound = scanForbidden(r ? r.textContent : \"\");\r\n    var noTouch = protectedFlags(debugs);\r\n    var apiChainOk = !!(\r\n      debugs.p33Engine.ok &&\r\n      debugs.p28Render.ok &&\r\n      debugs.p31AltRender.ok &&\r\n      debugs.p33Stack.ok &&\r\n      debugs.p33Identity.ok &&\r\n      debugs.p33Distance.ok\r\n    );\r\n\r\n    var visualChainOk = !!(\r\n      dom.p28CanonicalFound &&\r\n      dom.p31AltCanonicalFound &&\r\n      dom.p28NodeCount >= 3 &&\r\n      dom.p31AltNodeCount >= 3 &&\r\n      dom.p28StepCount === 3 &&\r\n      dom.p31AltStepCount === 3 &&\r\n      dom.p28IdentityFound &&\r\n      dom.p31AltIdentityFound &&\r\n      dom.identityCount >= 2 &&\r\n      dom.p28CanvasIsolation === \"isolate\" &&\r\n      dom.p31AltCanvasIsolation === \"isolate\"\r\n    );\r\n\r\n    var cleanupOk = !!(!dom.oldDualSetupFound && dom.oldDualCardCount === 0);\r\n\r\n    var p32Ok = !!(\r\n      debugs.p32DesktopUx.ok &&\r\n      debugs.p32DesktopUx.actionTopSpread === 0 &&\r\n      debugs.p32DesktopUx.setupTopSpread === 0\r\n    );\r\n\r\n    var protectedSystemsOk = !!(\r\n      !forbiddenFound.length &&\r\n      !noTouch.scoreTouched &&\r\n      !noTouch.commerceTouched &&\r\n      !noTouch.shareTouched &&\r\n      !noTouch.recommendationRankingTouched &&\r\n      !noTouch.upperRecommendationTouched &&\r\n      !noTouch.exactM2Claims &&\r\n      !noTouch.exactLuxClaims &&\r\n      !noTouch.estimatedCriTlci\r\n    );\r\n\r\n    return {\r\n      ok: !!(apiChainOk && visualChainOk && cleanupOk && protectedSystemsOk),\r\n      version: VERSION,\r\n      apiChainOk: apiChainOk,\r\n      visualChainOk: visualChainOk,\r\n      cleanupOk: cleanupOk,\r\n      p32DesktopUxOk: p32Ok,\r\n      protectedSystemsOk: protectedSystemsOk,\r\n      productCount: debugs.p33Engine.productCount || 0,\r\n      dom: dom,\r\n      debugs: debugs,\r\n      noTouch: noTouch,\r\n      forbiddenFound: forbiddenFound,\r\n      expected: {\r\n        productCount: 19,\r\n        p28CanonicalFound: true,\r\n        p31AltCanonicalFound: true,\r\n        p28IdentityFound: true,\r\n        p31AltIdentityFound: true,\r\n        identityCount: \">=2\",\r\n        p28NodeCount: \">=3\",\r\n        p31AltNodeCount: \">=3\",\r\n        p28StepCount: 3,\r\n        p31AltStepCount: 3,\r\n        oldDualSetupFound: false,\r\n        oldDualCardCount: 0,\r\n        forbiddenFound: [],\r\n        scoreTouched: false,\r\n        commerceTouched: false,\r\n        shareTouched: false,\r\n        recommendationRankingTouched: false,\r\n        upperRecommendationTouched: false\r\n      },\r\n      nextRecommendedPhase: \"PANEL-V4-P33-6-SCHEMATIC-POSITION-IDENTITY-FINAL-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P33FullStack = debug;\r\n  window.GDX_PANEL_LED_V4_P33_FULL_STACK_DEBUG = { version: VERSION, debug: debug };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P34-1 RECOMMENDATION SETUP CANONICAL SYNC DEBUG\r\n   Faz: PANEL-V4-P34-1-RECOMMENDATION-SETUP-CANONICAL-POSITION-SYNC-SAFE\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P34-1-RECOMMENDATION-SETUP-CANONICAL-POSITION-SYNC-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n\r\n  function safeCall(name, fn) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n      return { ok: false, reason: name + \" missing\" };\r\n    } catch (error) {\r\n      return { ok: false, reason: name + \" error\", error: error && error.message ? error.message : String(error || \"error\") };\r\n    }\r\n  }\r\n\r\n  function scanForbidden(text) {\r\n    var found = [];\r\n    [\r\n      \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n      \"G\u00FCncel stok\",\r\n      \"G\u00FCncel fiyat\",\r\n      \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n      \"Kontrol ederek\",\r\n      \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n      \"ger\u00E7ek lumen de\u011Feri\",\r\n      \"kesin m\u00B2\",\r\n      \"garanti lux\",\r\n      \"TLCI tahmini\",\r\n      \"CRI tahmini\",\r\n      \"flicker-free kabul edilir\",\r\n      \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n      \"kesin ayd\u0131nlat\u0131r\",\r\n      \"kesin mesafe\"\r\n    ].forEach(function (phrase) {\r\n      if (String(text || \"\").indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n\r\n  function domState() {\r\n    var r = root();\r\n    var blocks = r ? Array.prototype.slice.call(r.querySelectorAll('[data-gdx-panel-p29-rec-setup=\"1\"]')) : [];\r\n    var canonicalBlocks = blocks.filter(function (block) { return block.getAttribute(\"data-p33-canonical\") === \"1\"; });\r\n    var canvases = r ? Array.prototype.slice.call(r.querySelectorAll('[data-gdx-panel-p29-rec-setup=\"1\"] [data-p33-reco-canvas=\"1\"]')) : [];\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      p29BlockCount: blocks.length,\r\n      p29CanonicalBlockCount: canonicalBlocks.length,\r\n      p29CanvasCount: canvases.length,\r\n      p29Profiles: blocks.map(function (block) { return block.getAttribute(\"data-p33-profile\") || \"\"; }),\r\n      p29NodeCounts: blocks.map(function (block) { return block.querySelectorAll(\".gdx-p29-rec-setup-node\").length; }),\r\n      p29BandNoteCount: blocks.filter(function (block) { return !!block.querySelector(\".gdx-p29-rec-setup-band\"); }).length,\r\n      p29CanvasIsolation: canvases[0] ? window.getComputedStyle(canvases[0]).isolation : \"\",\r\n      p29CanvasPosition: canvases[0] ? window.getComputedStyle(canvases[0]).position : \"\",\r\n      p28CanonicalFound: !!(r && r.querySelector('[data-gdx-panel-p28-schematic=\"1\"][data-p33-canonical=\"1\"]')),\r\n      p31AltCanonicalFound: !!(r && r.querySelector('[data-gdx-panel-p31-alt-schematic=\"1\"][data-p33-canonical=\"1\"]'))\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var p29 = safeCall(\"debugP29RecommendationSetupRender\", window.debugP29RecommendationSetupRender);\r\n    var p33 = safeCall(\"debugPanelV4P33FullStack\", window.debugPanelV4P33FullStack);\r\n    var dom = domState();\r\n    var r = root();\r\n    var forbiddenFound = scanForbidden(r ? r.textContent : \"\");\r\n    var noTouch = {\r\n      scoreTouched: !!(p29.scoreTouched || p33.noTouch && p33.noTouch.scoreTouched),\r\n      commerceTouched: !!(p29.commerceTouched || p33.noTouch && p33.noTouch.commerceTouched),\r\n      shareTouched: !!(p29.shareTouched || p33.noTouch && p33.noTouch.shareTouched),\r\n      recommendationRankingTouched: !!(p29.recommendationRankingTouched || p33.noTouch && p33.noTouch.recommendationRankingTouched),\r\n      upperRecommendationTouched: !!(p29.upperRecommendationTouched || p33.noTouch && p33.noTouch.upperRecommendationTouched)\r\n    };\r\n\r\n    return {\r\n      ok: !!(\r\n        p29.ok &&\r\n        dom.p29BlockCount >= 1 &&\r\n        dom.p29CanonicalBlockCount === dom.p29BlockCount &&\r\n        dom.p29CanvasCount === dom.p29BlockCount &&\r\n        dom.p29BandNoteCount >= 1 &&\r\n        dom.p29CanvasIsolation === \"isolate\" &&\r\n        dom.p29CanvasPosition === \"relative\" &&\r\n        !forbiddenFound.length &&\r\n        !noTouch.scoreTouched &&\r\n        !noTouch.commerceTouched &&\r\n        !noTouch.shareTouched &&\r\n        !noTouch.recommendationRankingTouched &&\r\n        !noTouch.upperRecommendationTouched\r\n      ),\r\n      version: VERSION,\r\n      apiChainOk: !!(p29.ok && p33.ok),\r\n      visualChainOk: !!(dom.p29CanonicalBlockCount === dom.p29BlockCount && dom.p29CanvasIsolation === \"isolate\"),\r\n      protectedSystemsOk: !!(!forbiddenFound.length && !noTouch.scoreTouched && !noTouch.commerceTouched && !noTouch.shareTouched && !noTouch.recommendationRankingTouched && !noTouch.upperRecommendationTouched),\r\n      dom: dom,\r\n      p29Render: p29,\r\n      p33FullStack: p33,\r\n      noTouch: noTouch,\r\n      forbiddenFound: forbiddenFound,\r\n      nextRecommendedPhase: \"PANEL-V4-P34-2-RECOMMENDATION-SETUP-CANONICAL-SYNC-REGRESSION-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P34RecommendationSetupSync = debug;\r\n  window.GDX_PANEL_LED_V4_P34_RECOMMENDATION_SETUP_SYNC_DEBUG = { version: VERSION, debug: debug };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 P36-1 RESULT NAV SETUP JUMP BUTTON\r\n   Faz: PANEL-V4-P36-1-RESULT-NAV-SETUP-JUMP-BUTTON-SAFE\r\n\r\n   Ama\u00E7:\r\n   - Sonu\u00E7 \u00FCst navigasyonuna 3. s\u0131rada \"Setup\" butonu ekler.\r\n   - T\u0131klan\u0131nca P28/P31 setup \u015Femas\u0131 alan\u0131na kayd\u0131r\u0131r.\r\n   - P29 \u00F6nerilen \u00FCr\u00FCn setup kartlar\u0131, \u00F6neri s\u0131ralamas\u0131, score, commerce ve share ak\u0131\u015F\u0131na dokunmaz.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-P36-1-RESULT-NAV-SETUP-JUMP-BUTTON-SAFE\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n\r\n  function root() { return document.getElementById(ROOT_ID); }\r\n\r\n  function safeCall(name, fn) {\r\n    try {\r\n      if (typeof fn === \"function\") return fn();\r\n      return { ok: false, reason: name + \" missing\" };\r\n    } catch (error) {\r\n      return { ok: false, reason: name + \" error\", error: error && error.message ? error.message : String(error || \"error\") };\r\n    }\r\n  }\r\n\r\n  function scanForbidden(text) {\r\n    var found = [];\r\n    [\r\n      \"G\u00FCncel stok ve fiyat bilgisi \u00FCr\u00FCn sayfas\u0131nda kontrol edilir.\",\r\n      \"G\u00FCncel stok\",\r\n      \"G\u00FCncel fiyat\",\r\n      \"\u00DCr\u00FCn sayfas\u0131nda kontrol\",\r\n      \"Kontrol ederek\",\r\n      \"Sat\u0131n alma \u00F6ncesi stok teyidi\",\r\n      \"ger\u00E7ek lumen de\u011Feri\",\r\n      \"kesin m\u00B2\",\r\n      \"garanti lux\",\r\n      \"TLCI tahmini\",\r\n      \"CRI tahmini\",\r\n      \"flicker-free kabul edilir\",\r\n      \"tek panel her sahneyi \u00E7\u00F6zer\",\r\n      \"kesin ayd\u0131nlat\u0131r\",\r\n      \"kesin mesafe\"\r\n    ].forEach(function (phrase) {\r\n      if (String(text || \"\").indexOf(phrase) > -1) found.push(phrase);\r\n    });\r\n    return found.filter(function (item, index, arr) { return arr.indexOf(item) === index; });\r\n  }\r\n\r\n  function navState() {\r\n    var r = root();\r\n    var nav = r ? r.querySelector(\"[data-gdx-panel-result-jump-nav='1']\") : null;\r\n    var buttons = nav ? Array.prototype.slice.call(nav.querySelectorAll(\"[data-gdx-panel-jump]\")) : [];\r\n    var setupButton = nav ? nav.querySelector(\"[data-gdx-panel-jump='setup']\") : null;\r\n    var setupTarget = r ? r.querySelector(\"[data-gdx-panel-p28-schematic='1'], [data-gdx-panel-p31-alt-schematic='1'], #gdxPanelV4RecommendationPreview [data-gdx-panel-p29-rec-setup='1']\") : null;\r\n\r\n    return {\r\n      rootFound: !!r,\r\n      navFound: !!nav,\r\n      buttonCount: buttons.length,\r\n      buttonOrder: buttons.map(function (button) { return button.getAttribute(\"data-gdx-panel-jump\") || \"\"; }),\r\n      buttonLabels: buttons.map(function (button) { return (button.textContent || \"\").trim(); }),\r\n      setupButtonFound: !!setupButton,\r\n      setupButtonText: setupButton ? (setupButton.textContent || \"\").trim() : \"\",\r\n      setupButtonIndex: setupButton ? buttons.indexOf(setupButton) : -1,\r\n      setupButtonAria: setupButton ? (setupButton.getAttribute(\"aria-label\") || \"\") : \"\",\r\n      setupTargetFound: !!setupTarget,\r\n      setupTargetType: setupTarget\r\n        ? (setupTarget.getAttribute(\"data-gdx-panel-p28-schematic\") === \"1\" ? \"p28\" :\r\n          setupTarget.getAttribute(\"data-gdx-panel-p31-alt-schematic\") === \"1\" ? \"p31-alt\" :\r\n          setupTarget.getAttribute(\"data-gdx-panel-p29-rec-setup\") === \"1\" ? \"p29-reco-setup\" : \"unknown\")\r\n        : \"\",\r\n      p28Found: !!(r && r.querySelector(\"[data-gdx-panel-p28-schematic='1']\")),\r\n      p31AltFound: !!(r && r.querySelector(\"[data-gdx-panel-p31-alt-schematic='1']\")),\r\n      p29SetupCount: r ? r.querySelectorAll(\"[data-gdx-panel-p29-rec-setup='1']\").length : 0\r\n    };\r\n  }\r\n\r\n  function debug() {\r\n    var nav = navState();\r\n    var p34 = safeCall(\"debugPanelV4P34RecommendationSetupSync\", window.debugPanelV4P34RecommendationSetupSync);\r\n    var p33 = safeCall(\"debugPanelV4P33FullStack\", window.debugPanelV4P33FullStack);\r\n    var p32 = safeCall(\"debugPanelV4P32DesktopUx\", window.debugPanelV4P32DesktopUx);\r\n    var r = root();\r\n    var forbiddenFound = scanForbidden(r ? r.textContent : \"\");\r\n    var noTouch = {\r\n      scoreTouched: !!(p34.noTouch && p34.noTouch.scoreTouched),\r\n      commerceTouched: !!(p34.noTouch && p34.noTouch.commerceTouched),\r\n      shareTouched: !!(p34.noTouch && p34.noTouch.shareTouched),\r\n      recommendationRankingTouched: !!(p34.noTouch && p34.noTouch.recommendationRankingTouched),\r\n      upperRecommendationTouched: !!(p34.noTouch && p34.noTouch.upperRecommendationTouched)\r\n    };\r\n\r\n    return {\r\n      ok: !!(\r\n        nav.navFound &&\r\n        nav.setupButtonFound &&\r\n        nav.setupButtonText === \"Setup\" &&\r\n        nav.setupButtonIndex === 2 &&\r\n        nav.setupTargetFound &&\r\n        nav.buttonOrder.join(\"|\") === \"fp14|expert|setup|reco|commerce|share\" &&\r\n        !forbiddenFound.length &&\r\n        !noTouch.scoreTouched &&\r\n        !noTouch.commerceTouched &&\r\n        !noTouch.shareTouched &&\r\n        !noTouch.recommendationRankingTouched &&\r\n        !noTouch.upperRecommendationTouched\r\n      ),\r\n      version: VERSION,\r\n      nav: nav,\r\n      p34Sync: p34,\r\n      p33FullStack: p33,\r\n      p32DesktopUx: p32,\r\n      forbiddenFound: forbiddenFound,\r\n      noTouch: noTouch,\r\n      protectedSystemsOk: !!(!forbiddenFound.length && !noTouch.scoreTouched && !noTouch.commerceTouched && !noTouch.shareTouched && !noTouch.recommendationRankingTouched && !noTouch.upperRecommendationTouched),\r\n      visibleRenderTouched: true,\r\n      scoreTouched: false,\r\n      commerceTouched: false,\r\n      shareTouched: false,\r\n      recommendationRankingTouched: false,\r\n      upperRecommendationTouched: false,\r\n      nextRecommendedPhase: \"PANEL-V4-P36-2-RESULT-NAV-SETUP-JUMP-REGRESSION-SEAL-SAFE\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4P36SetupJumpNav = debug;\r\n  window.GDX_PANEL_LED_V4_P36_SETUP_JUMP_NAV_DEBUG = { version: VERSION, debug: debug };\r\n})(window, document);\r\n\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 UI-RECO-15 R11-R5 PRODUCT PURPOSE SCALE GUARD + P61 MATRIX SEAL CANDIDATE REPLACEMENT\r\n   Phase: PANEL-V4-UI-RECO-15-R11-R5-PRODUCT-PURPOSE-SCALE-GUARD-P61-MATRIX-SEAL-CANDIDATE\r\n\r\n   TARGET FILE:\r\n   assets/panel-led-v4.ui.js \u2014 FULL REPLACEMENT\r\n\r\n   CLEANUP CONTRACT:\r\n   - Removes the stacked UI-RECO appended patch chain by replacing the file with\r\n     the clean sealed UI base + this single owner recommendation renderer.\r\n   - Owns only #gdxPanelV4RecommendationPreview.\r\n   - Recommendation cards use two scores: Ama\u00E7 Uyumu from price-free 24x8 technical profiles + F/P from FP14 14-criteria offer evidence.\r\n   - \"Neden Bu \u00DCr\u00FCn?\" and \"Kurulumu G\u00F6r\" open one fullscreen modal layer; inline setup cards stay out of the compact card body.\r\n   - No stock labels are rendered in recommendation cards. Modal titles, score meaning copy and setup window are polished for customer reading.\r\n   - Out-of-stock products are not filtered out by this phase.\r\n   - No Shopify write, cart mutation, product mutation, score/ranking mutation outside\r\n     this local recommendation view.\r\n   ========================================================= */\r\n;(function (W, D) {\r\n  'use strict';\r\n\r\n  var FP_CALIBRATION_VERSION = 'PANEL-FP-CANONICAL-V2-RANK-NORMAL-EARNED-100';\r\n\r\n  var PHASE = 'PANEL-V4-FP14-19A-R4-R1-BADGE-SPACING-READABILITY-POLISH-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19A-R4-R1-BADGE-SPACING-READABILITY-POLISH-NO-SHOPIFY-WRITE';\r\n  var API_NAME = 'GDX_PANEL_LED_V4_UI_RECO_15_R11_R5';\r\n  var STYLE_ID = 'gdx-panel-v4-ui-reco-18g-narrative-dedup-guard-style';\r\n  var OWNER_ATTR = 'data-gdx-reco-r11-owned';\r\n\r\n  if (W[API_NAME] && W[API_NAME].version === VERSION) return;\r\n\r\n  var state = {\r\n    mainKey: '',\r\n    subKey: '',\r\n    modal: null,\r\n    lastRows: [],\r\n    installing: false,\r\n    observer: null,\r\n    scheduled: false,\r\n    lastRenderToken: '',\r\n    mediaIndex: {},\r\n    lastCompareAction: null\r\n  };\r\n\r\n  var taxonomy = [\r\n    { key:'content_social', label:'\u0130\u00E7erik', short:'\u0130\u00E7erik', subs:[\r\n      { key:'content_creator_face_key', label:'Y\u00FCz / ana \u0131\u015F\u0131k', role:'key', roleLabel:'Ana \u0131\u015F\u0131k / Key', intent:'white_key', notes:'YouTube, Reels, podcast ve y\u00FCz ayd\u0131nlatmas\u0131 i\u00E7in dengeli ana \u0131\u015F\u0131k.' },\r\n      { key:'content_creator_room_background', label:'Oda / fon ambiyans\u0131', role:'background', roleLabel:'Fon / Ambiyans', intent:'creative_bg', notes:'Oda arka plan\u0131, renkli atmosfer ve derinlik i\u00E7in destek \u0131\u015F\u0131\u011F\u0131.' },\r\n      { key:'youtube_podcast_single_person', label:'YouTube / podcast', role:'key', roleLabel:'Ana \u0131\u015F\u0131k / Key', intent:'white_key', notes:'Tek ki\u015Fi i\u00E7erik, masa ba\u015F\u0131 video ve podcast i\u00E7in d\u00FCzenli \u0131\u015F\u0131k.' }\r\n    ]},\r\n    { key:'ecommerce_product', label:'\u00DCr\u00FCn \u00C7ekimi', short:'\u00DCr\u00FCn', subs:[\r\n      { key:'ecommerce_catalog_white_background', label:'Katalog / beyaz fon', role:'product', roleLabel:'\u00DCr\u00FCn \u0131\u015F\u0131\u011F\u0131', intent:'product_white', notes:'Beyaz fon katalog, \u00FCr\u00FCn detay ve renk do\u011Frulu\u011Fu a\u011F\u0131rl\u0131kl\u0131 \u00E7ekim.' },\r\n      { key:'product_video_reels_tabletop', label:'Masa \u00FCst\u00FC \u00FCr\u00FCn reels', role:'tabletop', roleLabel:'Masa ba\u015F\u0131 \u00FCr\u00FCn \u0131\u015F\u0131\u011F\u0131', intent:'product_video', notes:'K\u0131sa \u00FCr\u00FCn videosu ve masa \u00FCst\u00FC sosyal medya \u00E7ekimi.' },\r\n      { key:'reflective_product_jewelry_glossy', label:'Yans\u0131t\u0131c\u0131 \u00FCr\u00FCn / tak\u0131', role:'soft_product', roleLabel:'Yumu\u015Fak \u00FCr\u00FCn \u0131\u015F\u0131\u011F\u0131', intent:'soft_product', notes:'Parlama kontrol\u00FC ve yumu\u015Fak ge\u00E7i\u015Fli \u00FCr\u00FCn \u0131\u015F\u0131\u011F\u0131.' }\r\n    ]},\r\n    { key:'clinical_beauty', label:'Klinik / Estetik', short:'Klinik', subs:[\r\n      { key:'clinical_aesthetic_medical', label:'Klinik / estetik', role:'clinical', roleLabel:'Klinik ana \u0131\u015F\u0131k', intent:'clinical', notes:'Do\u011Fal cilt tonu, d\u00FCzenli beyaz \u0131\u015F\u0131k ve g\u00FCvenli renk do\u011Frulu\u011Fu.' },\r\n      { key:'dental_closeup_documentation', label:'Dental / yak\u0131n \u00E7ekim', role:'clinical', roleLabel:'Dental yak\u0131n \u00E7ekim', intent:'clinical_close', notes:'Yak\u0131n \u00E7ekim, belge/dok\u00FCmantasyon ve renk do\u011Frulu\u011Fu.' },\r\n      { key:'beauty_makeup_hair', label:'Makyaj / sa\u00E7 i\u00E7erik', role:'beauty', roleLabel:'Beauty ana \u0131\u015F\u0131k', intent:'beauty', notes:'Cilt tonu, sa\u00E7/makyaj g\u00F6r\u00FCn\u00FCm\u00FC ve yumu\u015Fak \u0131\u015F\u0131k.' }\r\n    ]},\r\n    { key:'interview_education', label:'R\u00F6portaj / E\u011Fitim', short:'E\u011Fitim', subs:[\r\n      { key:'interview_podcast_stream', label:'R\u00F6portaj / yay\u0131n', role:'key', roleLabel:'R\u00F6portaj ana \u0131\u015F\u0131k', intent:'interview', notes:'R\u00F6portaj, yay\u0131n ve tek/iki ki\u015Fi i\u00E7erik i\u00E7in ana \u0131\u015F\u0131k.' },\r\n      { key:'education_webinar_online_course', label:'DIY / Kendin Yap / Nas\u0131l Yap\u0131l\u0131r?', role:'key', roleLabel:'Anlat\u0131m ana \u0131\u015F\u0131\u011F\u0131', intent:'education', notes:'E\u011Fitim, anlat\u0131m, uygulama videosu ve nas\u0131l yap\u0131l\u0131r i\u00E7erikleri.' },\r\n      { key:'salon_social_media_content', label:'Webinar / canl\u0131 e\u011Fitim', role:'key', roleLabel:'Webinar ana \u0131\u015F\u0131\u011F\u0131', intent:'education', notes:'Canl\u0131 ders, webinar ve sabit kamera anlat\u0131m\u0131.' }\r\n    ]},\r\n    { key:'rgb_creative', label:'RGB / Kreatif', short:'RGB', subs:[\r\n      { key:'rgb_creative_fx', label:'RGB efekt / HSI', role:'fx', roleLabel:'RGB / efekt', intent:'rgb_fx', notes:'HSI, efekt, renkli sahne ve yarat\u0131c\u0131 atmosfer.' },\r\n      { key:'music_video_color_scene', label:'Klip / renkli sahne', role:'fx', roleLabel:'Kreatif renk \u0131\u015F\u0131\u011F\u0131', intent:'rgb_scene', notes:'Klip, performans, renk kontrast\u0131 ve sahne havas\u0131.' },\r\n      { key:'brand_color_background_live', label:'Marka rengi / arka plan', role:'background', roleLabel:'Marka fon \u0131\u015F\u0131\u011F\u0131', intent:'rgb_brand', notes:'Marka rengi, canl\u0131 yay\u0131n fonu ve renkli arka plan.' }\r\n    ]},\r\n    { key:'studio_photo_support', label:'St\u00FCdyo', short:'St\u00FCdyo', subs:[\r\n      { key:'studio_production_multilight', label:'\u00C7ok \u0131\u015F\u0131kl\u0131 st\u00FCdyo', role:'support', roleLabel:'St\u00FCdyo destek \u0131\u015F\u0131\u011F\u0131', intent:'studio', notes:'\u00C7ok \u0131\u015F\u0131kl\u0131 kurulumda destek, dolgu ve tamamlay\u0131c\u0131 \u0131\u015F\u0131k.' },\r\n      { key:'photo_studio_fill_support', label:'Foto\u011Fraf dolgu / destek', role:'fill', roleLabel:'Dolgu \u0131\u015F\u0131\u011F\u0131', intent:'fill', notes:'Ana \u0131\u015F\u0131\u011F\u0131 dengeleyen yumu\u015Fak dolgu ve destek \u0131\u015F\u0131\u011F\u0131.' },\r\n      { key:'technical_documentation_archive', label:'Teknik ar\u015Fiv / belge', role:'document', roleLabel:'Belge \u0131\u015F\u0131\u011F\u0131', intent:'document', notes:'Belge, ar\u015Fiv, e\u011Fitim ve n\u00F6tr beyaz \u0131\u015F\u0131k.' }\r\n    ]},\r\n    { key:'mobile_outdoor', label:'Mobil / D\u0131\u015F', short:'Mobil', subs:[\r\n      { key:'mobile_outdoor_interview', label:'D\u0131\u015F \u00E7ekim / r\u00F6portaj', role:'mobile_key', roleLabel:'Mobil ana \u0131\u015F\u0131k', intent:'mobile', notes:'D\u0131\u015F \u00E7ekim, saha r\u00F6portaj\u0131 ve ta\u015F\u0131nabilir kullan\u0131m.' },\r\n      { key:'travel_battery_creator', label:'Seyahat / batarya', role:'mobile', roleLabel:'Ta\u015F\u0131nabilir \u0131\u015F\u0131k', intent:'battery', notes:'Seyahat, h\u0131zl\u0131 kurulum, batarya ve hafif ta\u015F\u0131ma.' },\r\n      { key:'live_sales_showroom', label:'Canl\u0131 sat\u0131\u015F / showroom', role:'key', roleLabel:'Showroom ana \u0131\u015F\u0131k', intent:'sales_live', notes:'Canl\u0131 sat\u0131\u015F, \u00FCr\u00FCn anlat\u0131m\u0131 ve ma\u011Faza i\u00E7i d\u00FCzenli \u0131\u015F\u0131k.' }\r\n    ]},\r\n    { key:'beginner_budget', label:'Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e', short:'B\u00FCt\u00E7e', subs:[\r\n      { key:'beginner_budget_home_studio', label:'Ba\u015Flang\u0131\u00E7 / ev st\u00FCdyo', role:'key', roleLabel:'Ba\u015Flang\u0131\u00E7 ana \u0131\u015F\u0131k', intent:'budget', notes:'Ev st\u00FCdyo, ilk kurulum ve kolay kullan\u0131m.' },\r\n      { key:'cosmetic_food_color_accuracy', label:'B\u00FCt\u00E7e dostu \u00FCr\u00FCn \u0131\u015F\u0131\u011F\u0131', role:'product', roleLabel:'\u00DCr\u00FCn \u0131\u015F\u0131\u011F\u0131', intent:'budget_product', notes:'Kozmetik, yemek, k\u00FC\u00E7\u00FCk \u00FCr\u00FCn ve fiyat/de\u011Fer dengesi.' },\r\n      { key:'pro_upgrade_high_output_panel', label:'Pro upgrade / y\u00FCksek g\u00FC\u00E7', role:'key', roleLabel:'Y\u00FCksek g\u00FC\u00E7l\u00FC ana \u0131\u015F\u0131k', intent:'high_power', notes:'Daha y\u00FCksek g\u00FC\u00E7, b\u00FCy\u00FCk alan ve profesyonel y\u00FCkseltme.' }\r\n    ]}\r\n  ];\r\n\r\n  function ready(fn) {\r\n    if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', fn, { once:true });\r\n    else fn();\r\n  }\r\n\r\n  function esc(v) {\r\n    return String(v == null ? '' : v).replace(/[&<>\"']/g, function (c) {\r\n      return { '&':'&amp;', '<':'&lt;', '>':'&gt;', '\"':'&quot;', \"'\":'&#39;' }[c];\r\n    });\r\n  }\r\n\r\n  function lower(v) {\r\n    return String(v == null ? '' : v).toLocaleLowerCase('tr-TR');\r\n  }\r\n\r\n  function clamp(n, min, max) {\r\n    n = Number(n);\r\n    if (!isFinite(n)) n = min;\r\n    return Math.max(min, Math.min(max, n));\r\n  }\r\n\r\n  function round1(n) {\r\n    return Math.round(Number(n || 0) * 10) / 10;\r\n  }\r\n\r\n  function round0(n) {\r\n    return Math.round(Number(n || 0));\r\n  }\r\n\r\n  function mount() {\r\n    return D.getElementById('gdxPanelV4RecommendationPreview');\r\n  }\r\n\r\n  function root() {\r\n    return D.getElementById('gdx-panel-led-v4-root') || D;\r\n  }\r\n\r\n  function fs1rR52DecisionGateActive() {\r\n    var gate =\r\n      W.CANFOTO_PANEL_DEFERRED_RESULTS_GATE ||\r\n      null;\r\n\r\n    return !!(\r\n      gate &&\r\n      typeof gate.isActive === 'function' &&\r\n      gate.isActive() === true\r\n    );\r\n  }\r\n\r\n  function fs1rR52SelectionReady() {\r\n    var selection =\r\n      W.GDX_PANEL_V4_R28_SELECTION_STATE ||\r\n      {};\r\n\r\n    return !!(\r\n      String(selection.activePurposeKey || '').trim() &&\r\n      String(selection.activeSubPurposeKey || '').trim() &&\r\n      String(selection.activeSelectionKey || '').trim()\r\n    );\r\n  }\r\n\r\n  function fs1rR52HoldRecommendationMount(reason) {\r\n    var el = mount();\r\n\r\n    state.lastRows = [];\r\n    state.modal = null;\r\n    state.lastRenderToken = '';\r\n\r\n    if (el) {\r\n      el.innerHTML = '';\r\n      el.hidden = true;\r\n      el.setAttribute('aria-hidden', 'true');\r\n      el.setAttribute(\r\n        'data-cf-panel-r11-deferred-reason',\r\n        String(reason || 'decision_not_applied')\r\n      );\r\n    }\r\n\r\n    return {\r\n      ok: false,\r\n      deferred: true,\r\n      reason: String(reason || 'decision_not_applied')\r\n    };\r\n  }\r\n\r\n  function apiProducts() {\r\n    var api = W.GDX_PANEL_LED_V4 || {};\r\n    var products = api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n    return products.slice();\r\n  }\r\n\r\n  function normalizeImage(image) {\r\n    var src = '';\r\n    if (!image) return '';\r\n    if (typeof image === 'string') src = image;\r\n    else src = image.src || image.url || image.image || image.preview_image || '';\r\n    src = String(src || '').trim();\r\n    if (src.indexOf('//') === 0) src = 'https:' + src;\r\n    return src;\r\n  }\r\n\r\n  function productImage(product) {\r\n    product = product || {};\r\n    if (Array.isArray(product.images) && product.images.length) {\r\n      for (var i=0;i<product.images.length;i+=1) {\r\n        var src = normalizeImage(product.images[i]);\r\n        if (src) return src;\r\n      }\r\n    }\r\n    return normalizeImage(product.image || product.featured_image || '');\r\n  }\r\n\r\n  function productImages(product, limit) {\r\n    product = product && product.product ? product.product : (product || {});\r\n    limit = Number(limit || 4);\r\n    var raw = [];\r\n\r\n    if (Array.isArray(product.images)) raw = raw.concat(product.images);\r\n    if (product.image) raw.push(product.image);\r\n    if (product.featured_image) raw.push(product.featured_image);\r\n    if (product.featuredImage) raw.push(product.featuredImage);\r\n    if (product.raw && Array.isArray(product.raw.images)) raw = raw.concat(product.raw.images);\r\n    if (product.raw && product.raw.image) raw.push(product.raw.image);\r\n\r\n    var seen = {};\r\n    var out = [];\r\n    raw.forEach(function (item) {\r\n      var src = normalizeImage(item);\r\n      if (!src || seen[src]) return;\r\n      seen[src] = true;\r\n      out.push(src);\r\n    });\r\n\r\n    return out.slice(0, Math.max(1, limit));\r\n  }\r\n\r\n  function productTitle(product) {\r\n    product = product || {};\r\n    return String(product.smartTitle || product.smartShortTitle || product.displayTitle || product.shortTitle || product.title || 'Panel LED \u00DCr\u00FCn').replace(/\\s+/g,' ').trim();\r\n  }\r\n\r\n  function productKey(product, fallback) {\r\n    product = product || {};\r\n    return String(product.key || product.handle || product.id || fallback || productTitle(product)).replace(/\\s+/g,'-').toLocaleLowerCase('tr-TR');\r\n  }\r\n\r\n  function productUrl(product) {\r\n    product = product || {};\r\n    if (product.url) return product.url;\r\n    if (product.handle) return '/products/' + product.handle;\r\n    return '#';\r\n  }\r\n\r\n  function tagsText(product) {\r\n    product = product || {};\r\n    return lower([\r\n      product.title, product.vendor, product.productType, product.type, product.sku,\r\n      Array.isArray(product.tags) ? product.tags.join(' ') : '',\r\n      Array.isArray(product.badges) ? product.badges.join(' ') : '',\r\n      product.description || ''\r\n    ].join(' '));\r\n  }\r\n\r\n  function family(product) {\r\n    product = product || {};\r\n    var specs = product.specs || {};\r\n    var raw = lower(specs.family || product.family || tagsText(product));\r\n    if (/rgb|hsi|fx|rgbw|rgbww|rgbwy/.test(raw)) return 'rgb';\r\n    if (/daylight|g\u00FCn \u0131\u015F\u0131\u011F\u0131|gun isigi|5600k/.test(raw) && !/bi.?color|bicolor|\u00E7ift renk|cct/.test(raw)) return 'daylight';\r\n    if (/bi.?color|bicolor|cct|kelvin|\u00E7ift renk|cift renk/.test(raw)) return 'bicolor';\r\n    return 'panel';\r\n  }\r\n\r\n  function familyLabel(product) {\r\n    var f = family(product);\r\n    if (f === 'rgb') return 'RGB';\r\n    if (f === 'bicolor') return 'Bi-Color';\r\n    if (f === 'daylight') return 'Daylight';\r\n    return 'Panel LED';\r\n  }\r\n\r\n  function powerW(product) {\r\n    product = product || {};\r\n    var specs = product.specs || {};\r\n    var direct = Number(specs.effectiveWhitePowerW || specs.powerW || specs.watt || product.powerW || 0);\r\n    if (direct > 0) return direct;\r\n    var text = tagsText(product);\r\n    var m = text.match(/(\\d{2,4})\\s*w/);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n\r\n  function cri(product) {\r\n    product = product || {};\r\n    var specs = product.specs || {};\r\n    var direct = Number(specs.cri || specs.tlci || product.cri || 0);\r\n    if (direct > 0) return direct;\r\n    var m = tagsText(product).match(/cri\\s*(\\d{2,3})/);\r\n    return m ? Number(m[1]) : 95;\r\n  }\r\n\r\n  function hasControl(product) {\r\n    var t = tagsText(product);\r\n    var specs = product.specs || {};\r\n    return !!(specs.hasDmx || specs.hasApp || specs.hasBluetooth || /dmx|bluetooth|app|2\\.4g|uzaktan|remote/.test(t));\r\n  }\r\n\r\n  function hasBattery(product) {\r\n    var t = tagsText(product);\r\n    var specs = product.specs || {};\r\n    return !!(specs.hasBattery || specs.hasVmount || specs.hasNPF || /batarya|battery|v-mount|vmount|np-f|npf/.test(t));\r\n  }\r\n\r\n  function priceNumber(product) {\r\n    product = product || {};\r\n    var candidates = [product.price, product.priceNumber, product.priceValue, product.compare_at_price, product.priceText].filter(function(v){ return v != null && v !== ''; });\r\n    for (var i=0;i<candidates.length;i+=1) {\r\n      var v = candidates[i];\r\n      if (typeof v === 'number' && isFinite(v)) {\r\n        if (v > 1000000) return v / 100;\r\n        return v;\r\n      }\r\n      var s = String(v).replace(/\\s+/g,'');\r\n      s = s.replace(/TL|TRY|\u20BA/gi,'');\r\n      if (s.indexOf(',') > -1 && s.indexOf('.') > -1) s = s.replace(/\\./g,'').replace(',', '.');\r\n      else if (s.indexOf(',') > -1) s = s.replace(',', '.');\r\n      var n = Number(s.replace(/[^0-9.]/g,''));\r\n      if (isFinite(n) && n > 0) return n;\r\n    }\r\n    return 0;\r\n  }\r\n\r\n  function priceText(product) {\r\n    product = product || {};\r\n    return String(product.priceText || product.formattedPrice || (priceNumber(product) ? (Math.round(priceNumber(product)).toLocaleString('tr-TR') + 'TL') : '') || '');\r\n  }\r\n\r\n  function currentMain() {\r\n    return taxonomy.find(function(g){ return g.key === state.mainKey; }) || taxonomy[0];\r\n  }\r\n\r\n  function currentSub() {\r\n    var g = currentMain();\r\n    return (g.subs || []).find(function(s){ return s.key === state.subKey; }) || (g.subs || [])[0];\r\n  }\r\n\r\n  function mainForSub(subKey) {\r\n    for (var i=0;i<taxonomy.length;i+=1) {\r\n      var found = taxonomy[i].subs.find(function(s){ return s.key === subKey; });\r\n      if (found) return taxonomy[i];\r\n    }\r\n    return taxonomy[0];\r\n  }\r\n\r\n  var P61_PURPOSE_WEIGHTS = {\r\n    /* Exact source: uploaded P61-1E #weights table. Each row sums 100. */\r\n    content_creator_face_key: { whitePower:22, colorAccuracy:16, cct:14, softness:16, rgbFx:8, portability:10, control:4, quietStability:4, price:6 },\r\n    content_creator_room_background: { whitePower:12, colorAccuracy:8, cct:8, softness:8, rgbFx:28, portability:10, control:10, quietStability:2, price:14 },\r\n    youtube_podcast_single_person: { whitePower:24, colorAccuracy:18, cct:14, softness:14, rgbFx:6, portability:6, control:4, quietStability:8, price:6 },\r\n\r\n    ecommerce_catalog_white_background: { whitePower:18, colorAccuracy:24, cct:16, softness:18, rgbFx:4, portability:2, control:4, quietStability:4, price:10 },\r\n    product_video_reels_tabletop: { whitePower:16, colorAccuracy:18, cct:14, softness:16, rgbFx:12, portability:4, control:6, quietStability:4, price:10 },\r\n    reflective_product_jewelry_glossy: { whitePower:14, colorAccuracy:26, cct:14, softness:22, rgbFx:2, portability:2, control:4, quietStability:6, price:10 },\r\n\r\n    clinical_aesthetic_medical: { whitePower:18, colorAccuracy:28, cct:14, softness:18, rgbFx:2, portability:2, control:2, quietStability:10, price:6 },\r\n    dental_closeup_documentation: { whitePower:18, colorAccuracy:26, cct:14, softness:14, rgbFx:2, portability:4, control:2, quietStability:12, price:8 },\r\n    beauty_makeup_hair: { whitePower:18, colorAccuracy:26, cct:16, softness:18, rgbFx:4, portability:2, control:2, quietStability:6, price:8 },\r\n\r\n    interview_podcast_stream: { whitePower:24, colorAccuracy:20, cct:12, softness:12, rgbFx:6, portability:4, control:6, quietStability:10, price:6 },\r\n    education_webinar_online_course: { whitePower:22, colorAccuracy:18, cct:14, softness:14, rgbFx:4, portability:8, control:4, quietStability:10, price:6 },\r\n    salon_social_media_content: { whitePower:16, colorAccuracy:20, cct:14, softness:14, rgbFx:12, portability:4, control:4, quietStability:6, price:10 },\r\n\r\n    rgb_creative_fx: { whitePower:8, colorAccuracy:8, cct:6, softness:6, rgbFx:34, portability:6, control:16, quietStability:2, price:14 },\r\n    music_video_color_scene: { whitePower:8, colorAccuracy:8, cct:6, softness:6, rgbFx:32, portability:4, control:18, quietStability:2, price:16 },\r\n    brand_color_background_live: { whitePower:10, colorAccuracy:10, cct:8, softness:8, rgbFx:26, portability:4, control:14, quietStability:6, price:14 },\r\n\r\n    studio_production_multilight: { whitePower:22, colorAccuracy:16, cct:12, softness:12, rgbFx:12, portability:2, control:12, quietStability:4, price:8 },\r\n    photo_studio_fill_support: { whitePower:16, colorAccuracy:22, cct:16, softness:18, rgbFx:6, portability:2, control:4, quietStability:6, price:10 },\r\n    technical_documentation_archive: { whitePower:16, colorAccuracy:26, cct:18, softness:18, rgbFx:2, portability:2, control:2, quietStability:8, price:8 },\r\n\r\n    mobile_outdoor_interview: { whitePower:18, colorAccuracy:16, cct:12, softness:10, rgbFx:8, portability:18, control:4, quietStability:6, price:8 },\r\n    travel_battery_creator: { whitePower:14, colorAccuracy:12, cct:10, softness:8, rgbFx:12, portability:24, control:6, quietStability:4, price:10 },\r\n    live_sales_showroom: { whitePower:18, colorAccuracy:18, cct:12, softness:12, rgbFx:14, portability:2, control:8, quietStability:4, price:12 },\r\n\r\n    beginner_budget_home_studio: { whitePower:16, colorAccuracy:14, cct:12, softness:14, rgbFx:8, portability:8, control:2, quietStability:4, price:22 },\r\n    cosmetic_food_color_accuracy: { whitePower:16, colorAccuracy:28, cct:14, softness:16, rgbFx:4, portability:2, control:4, quietStability:6, price:10 },\r\n    pro_upgrade_high_output_panel: { whitePower:26, colorAccuracy:16, cct:10, softness:10, rgbFx:10, portability:2, control:12, quietStability:6, price:8 }\r\n  };\r\n\r\n  /* ==========================================================================\r\n     PANEL LED V4 \u2014 U7E.1\r\n     R28 24 CANONICAL PURPOSE PROFILES / LIVE RECOMMENDATION OWNER\r\n\r\n     AUTHORIZATION:\r\n     - U7D.2 proved 24 canonical R28 selections collapsed to 16 legacy targets.\r\n     - U7E.0 shadow preflight PASS authorized this live implementation.\r\n\r\n     POLICY:\r\n     - profile owner: R28_SELECTION_KEY\r\n     - product-specific overrides: FORBIDDEN\r\n     - product pool: unchanged 19\r\n     - canonical General F/P: unchanged / non-purpose\r\n     - stock ranking influence: NONE\r\n     - setup truth / share / COB: NO-TOUCH\r\n     ========================================================================== */\r\n  var U7E1_CANONICAL_PROFILES = {\"product_ecommerce::small_product_tabletop\":{\"purposeTitle\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurposeTitle\":\"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn / masa\u00FCst\u00FC \u00E7ekim\",\"intent\":\"product_video\",\"role\":\"tabletop\",\"weights\":{\"whitePower\":16,\"colorAccuracy\":18,\"cct\":14,\"softness\":16,\"rgbFx\":12,\"portability\":4,\"control\":6,\"quietStability\":4,\"price\":10}},\"product_ecommerce::large_product_model\":{\"purposeTitle\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurposeTitle\":\"B\u00FCy\u00FCk \u00FCr\u00FCn / model \u00FCzerinde \u00E7ekim\",\"intent\":\"product_white\",\"role\":\"product\",\"weights\":{\"whitePower\":26,\"colorAccuracy\":20,\"cct\":12,\"softness\":18,\"rgbFx\":4,\"portability\":2,\"control\":4,\"quietStability\":4,\"price\":10}},\"product_ecommerce::marketplace_catalog\":{\"purposeTitle\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurposeTitle\":\"Pazar yeri / katalog \u00E7ekimi\",\"intent\":\"product_white\",\"role\":\"product\",\"weights\":{\"whitePower\":18,\"colorAccuracy\":24,\"cct\":16,\"softness\":18,\"rgbFx\":4,\"portability\":2,\"control\":4,\"quietStability\":4,\"price\":10}},\"youtube_reels_social::single_person_video\":{\"purposeTitle\":\"YouTube / Reels / Sosyal Medya\",\"subPurposeTitle\":\"Tek ki\u015Fi video\",\"intent\":\"white_key\",\"role\":\"key\",\"weights\":{\"whitePower\":24,\"colorAccuracy\":18,\"cct\":14,\"softness\":16,\"rgbFx\":4,\"portability\":4,\"control\":4,\"quietStability\":10,\"price\":6}},\"youtube_reels_social::reels_tiktok_short\":{\"purposeTitle\":\"YouTube / Reels / Sosyal Medya\",\"subPurposeTitle\":\"Reels / TikTok k\u0131sa i\u00E7erik\",\"intent\":\"white_key\",\"role\":\"key\",\"weights\":{\"whitePower\":18,\"colorAccuracy\":14,\"cct\":10,\"softness\":12,\"rgbFx\":16,\"portability\":12,\"control\":6,\"quietStability\":4,\"price\":8}},\"youtube_reels_social::live_stream_talk\":{\"purposeTitle\":\"YouTube / Reels / Sosyal Medya\",\"subPurposeTitle\":\"Yay\u0131n / canl\u0131 anlat\u0131m\",\"intent\":\"white_key\",\"role\":\"key\",\"weights\":{\"whitePower\":20,\"colorAccuracy\":18,\"cct\":14,\"softness\":14,\"rgbFx\":6,\"portability\":4,\"control\":8,\"quietStability\":10,\"price\":6}},\"interview_talking_head::single_interview\":{\"purposeTitle\":\"R\u00F6portaj / Konu\u015Fan Kafa\",\"subPurposeTitle\":\"Tek ki\u015Fi r\u00F6portaj\",\"intent\":\"interview\",\"role\":\"key\",\"weights\":{\"whitePower\":24,\"colorAccuracy\":20,\"cct\":12,\"softness\":14,\"rgbFx\":4,\"portability\":4,\"control\":6,\"quietStability\":10,\"price\":6}},\"interview_talking_head::two_person_interview\":{\"purposeTitle\":\"R\u00F6portaj / Konu\u015Fan Kafa\",\"subPurposeTitle\":\"\u0130ki ki\u015Fi r\u00F6portaj\",\"intent\":\"interview\",\"role\":\"key\",\"weights\":{\"whitePower\":28,\"colorAccuracy\":18,\"cct\":10,\"softness\":16,\"rgbFx\":4,\"portability\":3,\"control\":6,\"quietStability\":9,\"price\":6}},\"interview_talking_head::corporate_training\":{\"purposeTitle\":\"R\u00F6portaj / Konu\u015Fan Kafa\",\"subPurposeTitle\":\"Kurumsal video / e\u011Fitim\",\"intent\":\"education\",\"role\":\"key\",\"weights\":{\"whitePower\":20,\"colorAccuracy\":18,\"cct\":14,\"softness\":14,\"rgbFx\":4,\"portability\":6,\"control\":6,\"quietStability\":12,\"price\":6}},\"clinic_aesthetic_dental::skin_face_shoot\":{\"purposeTitle\":\"Klinik / Estetik / Dental\",\"subPurposeTitle\":\"Cilt / y\u00FCz \u00E7ekimi\",\"intent\":\"clinical\",\"role\":\"clinical\",\"weights\":{\"whitePower\":16,\"colorAccuracy\":30,\"cct\":16,\"softness\":20,\"rgbFx\":2,\"portability\":2,\"control\":2,\"quietStability\":8,\"price\":4}},\"clinic_aesthetic_dental::dental_support\":{\"purposeTitle\":\"Klinik / Estetik / Dental\",\"subPurposeTitle\":\"Dental / a\u011F\u0131z i\u00E7i destek\",\"intent\":\"clinical_close\",\"role\":\"clinical\",\"weights\":{\"whitePower\":18,\"colorAccuracy\":28,\"cct\":16,\"softness\":14,\"rgbFx\":2,\"portability\":4,\"control\":2,\"quietStability\":12,\"price\":4}},\"clinic_aesthetic_dental::clinic_social_content\":{\"purposeTitle\":\"Klinik / Estetik / Dental\",\"subPurposeTitle\":\"Klinik sosyal medya i\u00E7erikleri\",\"intent\":\"beauty\",\"role\":\"beauty\",\"weights\":{\"whitePower\":16,\"colorAccuracy\":24,\"cct\":14,\"softness\":16,\"rgbFx\":8,\"portability\":4,\"control\":4,\"quietStability\":8,\"price\":6}},\"rgb_creative_video::background_color_effect\":{\"purposeTitle\":\"RGB / Kreatif Video\",\"subPurposeTitle\":\"Arka plan renk efekti\",\"intent\":\"rgb_brand\",\"role\":\"background\",\"weights\":{\"whitePower\":8,\"colorAccuracy\":8,\"cct\":6,\"softness\":8,\"rgbFx\":34,\"portability\":4,\"control\":16,\"quietStability\":2,\"price\":14}},\"rgb_creative_video::music_clip_creative_scene\":{\"purposeTitle\":\"RGB / Kreatif Video\",\"subPurposeTitle\":\"M\u00FCzik / klip / kreatif sahne\",\"intent\":\"rgb_scene\",\"role\":\"fx\",\"weights\":{\"whitePower\":8,\"colorAccuracy\":8,\"cct\":6,\"softness\":6,\"rgbFx\":32,\"portability\":4,\"control\":18,\"quietStability\":2,\"price\":16}},\"rgb_creative_video::product_color_separation\":{\"purposeTitle\":\"RGB / Kreatif Video\",\"subPurposeTitle\":\"\u00DCr\u00FCn arkas\u0131nda renk ayr\u0131m\u0131\",\"intent\":\"rgb_fx\",\"role\":\"fx\",\"weights\":{\"whitePower\":10,\"colorAccuracy\":16,\"cct\":8,\"softness\":10,\"rgbFx\":28,\"portability\":2,\"control\":16,\"quietStability\":2,\"price\":8}},\"studio_professional::model_shoot\":{\"purposeTitle\":\"St\u00FCdyo / Profesyonel \u00C7ekim\",\"subPurposeTitle\":\"Model \u00E7ekimi\",\"intent\":\"studio\",\"role\":\"key\",\"weights\":{\"whitePower\":24,\"colorAccuracy\":22,\"cct\":12,\"softness\":18,\"rgbFx\":4,\"portability\":2,\"control\":8,\"quietStability\":4,\"price\":6}},\"studio_professional::ad_campaign_visual\":{\"purposeTitle\":\"St\u00FCdyo / Profesyonel \u00C7ekim\",\"subPurposeTitle\":\"Reklam / kampanya g\u00F6rseli\",\"intent\":\"studio\",\"role\":\"key\",\"weights\":{\"whitePower\":20,\"colorAccuracy\":18,\"cct\":10,\"softness\":14,\"rgbFx\":14,\"portability\":2,\"control\":12,\"quietStability\":4,\"price\":6}},\"studio_professional::fixed_studio_setup\":{\"purposeTitle\":\"St\u00FCdyo / Profesyonel \u00C7ekim\",\"subPurposeTitle\":\"Sabit st\u00FCdyo kurulumu\",\"intent\":\"studio\",\"role\":\"support\",\"weights\":{\"whitePower\":26,\"colorAccuracy\":18,\"cct\":12,\"softness\":12,\"rgbFx\":6,\"portability\":2,\"control\":14,\"quietStability\":6,\"price\":4}},\"mobile_outdoor::battery_shoot\":{\"purposeTitle\":\"Mobil / D\u0131\u015F Mekan\",\"subPurposeTitle\":\"Bataryal\u0131 \u00E7ekim\",\"intent\":\"battery\",\"role\":\"mobile\",\"weights\":{\"whitePower\":14,\"colorAccuracy\":12,\"cct\":10,\"softness\":8,\"rgbFx\":8,\"portability\":28,\"control\":6,\"quietStability\":4,\"price\":10}},\"mobile_outdoor::portable_team\":{\"purposeTitle\":\"Mobil / D\u0131\u015F Mekan\",\"subPurposeTitle\":\"Ta\u015F\u0131nabilir ekip\",\"intent\":\"mobile\",\"role\":\"mobile_key\",\"weights\":{\"whitePower\":16,\"colorAccuracy\":14,\"cct\":10,\"softness\":10,\"rgbFx\":6,\"portability\":26,\"control\":6,\"quietStability\":4,\"price\":8}},\"mobile_outdoor::fast_location_setup\":{\"purposeTitle\":\"Mobil / D\u0131\u015F Mekan\",\"subPurposeTitle\":\"Mekan i\u00E7i h\u0131zl\u0131 kurulum\",\"intent\":\"mobile\",\"role\":\"mobile_key\",\"weights\":{\"whitePower\":18,\"colorAccuracy\":14,\"cct\":10,\"softness\":12,\"rgbFx\":6,\"portability\":20,\"control\":10,\"quietStability\":4,\"price\":6}},\"starter_budget_practical::first_light_choice\":{\"purposeTitle\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik Kurulum\",\"subPurposeTitle\":\"\u0130lk \u0131\u015F\u0131k se\u00E7imi\",\"intent\":\"budget\",\"role\":\"key\",\"weights\":{\"whitePower\":18,\"colorAccuracy\":16,\"cct\":12,\"softness\":16,\"rgbFx\":6,\"portability\":8,\"control\":4,\"quietStability\":4,\"price\":16}},\"starter_budget_practical::budget_setup\":{\"purposeTitle\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik Kurulum\",\"subPurposeTitle\":\"Uygun fiyatl\u0131 setup\",\"intent\":\"budget\",\"role\":\"key\",\"weights\":{\"whitePower\":14,\"colorAccuracy\":12,\"cct\":10,\"softness\":12,\"rgbFx\":6,\"portability\":8,\"control\":4,\"quietStability\":4,\"price\":30}},\"starter_budget_practical::compact_solution\":{\"purposeTitle\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik Kurulum\",\"subPurposeTitle\":\"Az yer kaplayan \u00E7\u00F6z\u00FCm\",\"intent\":\"budget\",\"role\":\"key\",\"weights\":{\"whitePower\":12,\"colorAccuracy\":12,\"cct\":10,\"softness\":10,\"rgbFx\":6,\"portability\":24,\"control\":6,\"quietStability\":4,\"price\":16}}};\r\n\r\n  /* ==========================================================================\r\n     CANFOTO / GDX \u2014 ETAP 2 R2-E1\r\n     PRICE/PACKAGE ISOLATION + SAME-HEAD TECHNICAL TRUTH\r\n\r\n     Contract:\r\n     - Technical Purpose Score has exactly eight technical dimensions.\r\n     - price is not a Purpose Score dimension.\r\n     - U7E1 profile rows are renormalized to 100 after price removal.\r\n     - same modelKey Bare/Single Ready Set rows share one head technical source.\r\n     - offer/package/price remain available to General F/P only.\r\n     ========================================================================== */\r\n  var R2E1_TECHNICAL_TRUTH_VERSION = 'CANFOTO-ETAP2-R2E1-SAME-HEAD-TECHNICAL-TRUTH-V1';\r\n  var R2E1_TECHNICAL_DIMENSIONS = Object.freeze([\r\n    'whitePower','colorAccuracy','cct','softness','rgbFx','portability','control','quietStability'\r\n  ]);\r\n\r\n  function r2e1NormalizeTechnicalWeightRow(row) {\r\n    row = row || {};\r\n    var total = R2E1_TECHNICAL_DIMENSIONS.reduce(function(sum, key){\r\n      return sum + Number(row[key] || 0);\r\n    }, 0);\r\n    if (!(total > 0)) total = 100;\r\n    var out = {};\r\n    R2E1_TECHNICAL_DIMENSIONS.forEach(function(key){\r\n      out[key] = Number(row[key] || 0) * 100 / total;\r\n    });\r\n    return out;\r\n  }\r\n\r\n  /* =========================================================\r\n     ETAP2 R2-H \u2014 REGISTRY V2 PROVEN SEMANTIC GAP\r\n     New customer intent: subject/model RGB rim-edge-contour separation.\r\n     This is intentionally NOT an alias of product_color_separation for scoring:\r\n     the customer subject and role truth are distinct, while visual/setup source\r\n     may safely reuse the existing R27 color-separation geometry until R4 shared\r\n     V27 migration owns renderer geometry.\r\n     ========================================================= */\r\n  U7E1_CANONICAL_PROFILES[\"rgb_creative_video::subject_rim_edge\"] = {\r\n    purposeTitle: \"RGB / Kreatif Video\",\r\n    subPurposeTitle: \"Ki\u015Fi / model kontur ayr\u0131m\u0131\",\r\n    intent: \"rgb_rim_edge\",\r\n    role: \"rim\",\r\n    weights: {\r\n      whitePower: 8,\r\n      colorAccuracy: 10,\r\n      cct: 6,\r\n      softness: 8,\r\n      rgbFx: 36,\r\n      portability: 8,\r\n      control: 16,\r\n      quietStability: 8\r\n    }\r\n  };\r\n\r\n  /* Raw U7E1 profile registry must also be price-free because it is the public\r\n     canonical purpose-profile contract consumed by diagnostics and downstream UI. */\r\n  Object.keys(U7E1_CANONICAL_PROFILES).forEach(function(selectionKey) {\r\n    var profile = U7E1_CANONICAL_PROFILES[selectionKey];\r\n    if (!profile) return;\r\n    profile.weights = r2e1NormalizeTechnicalWeightRow(profile.weights || {});\r\n  });\r\n\r\n  Object.keys(U7E1_CANONICAL_PROFILES).forEach(function(selectionKey) {\r\n    var profile = U7E1_CANONICAL_PROFILES[selectionKey];\r\n    if (profile && profile.weights) Object.freeze(profile.weights);\r\n    if (profile) Object.freeze(profile);\r\n  });\r\n  Object.freeze(U7E1_CANONICAL_PROFILES);\r\n\r\n  /* ETAP2 R2-D REV3.7.4 \u2014 R28 CURRENT KEY -> U7E1 CANONICAL PROFILE ALIAS BOUNDARY\r\n     The visible R28 purpose UI intentionally uses six newer subpurpose keys while\r\n     the sealed U7E1 24-profile score owner still uses their canonical historical\r\n     keys. Normalize only at the profile lookup boundary: no score, ranking, F/P,\r\n     purchase-lane, setup, commerce or share formula is changed. */\r\n  var U7E1_SELECTION_KEY_ALIASES = Object.freeze({\r\n    \"youtube_reels_social::short_video_reels\": \"youtube_reels_social::reels_tiktok_short\",\r\n    \"interview_talking_head::corporate_training_video\": \"interview_talking_head::corporate_training\",\r\n    \"clinic_aesthetic_dental::skin_face_capture\": \"clinic_aesthetic_dental::skin_face_shoot\",\r\n    \"rgb_creative_video::music_clip_scene\": \"rgb_creative_video::music_clip_creative_scene\",\r\n    \"studio_professional::campaign_ad_visual\": \"studio_professional::ad_campaign_visual\",\r\n    \"starter_budget_practical::small_space_solution\": \"starter_budget_practical::compact_solution\"\r\n  });\r\n\r\n  function u7e1NormalizeSelectionKey(selectionKey) {\r\n    var key = String(selectionKey || '').trim();\r\n    return U7E1_SELECTION_KEY_ALIASES[key] || key;\r\n  }\r\n\r\n  function u7e1CanonicalProfile(selectionKey) {\r\n    return U7E1_CANONICAL_PROFILES[u7e1NormalizeSelectionKey(selectionKey)] || null;\r\n  }\r\n\r\n  function u7e1ActiveSelectionKey() {\r\n    var selection = W.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n    return String(selection.activeSelectionKey || '').trim();\r\n  }\r\n\r\n  function normalizeWeightRow(row) {\r\n    return r2e1NormalizeTechnicalWeightRow(row || {});\r\n  }\r\n\r\n  function compareApi() {\r\n    return W.GDX_PANEL_LED_V4_COMPARE || null;\r\n  }\r\n\r\n  function evidenceScoreValue(row) {\r\n    if (!row) return null;\r\n    if (row.score100 !== undefined) return Number(row.score100);\r\n    if (row.score10 !== undefined) return Number(row.score10) * 10;\r\n    if (row.score !== undefined) return Number(row.score) * (Number(row.score) <= 10 ? 10 : 1);\r\n    return null;\r\n  }\r\n\r\n  function fp14Evidence(product) {\r\n    var cmp = compareApi();\r\n    if (cmp && typeof cmp.scoreFp14ProductEvidence === 'function') {\r\n      try {\r\n        var ev = cmp.scoreFp14ProductEvidence(product, { source: 'ui_reco_r11_r3' });\r\n        if (ev && ev.ok && Array.isArray(ev.criteria) && ev.criteria.length >= 10) return ev;\r\n      } catch (error) {}\r\n    }\r\n\r\n    return { ok:false, source:'local_fallback', score100:0, criteria:[] };\r\n  }\r\n\r\n  var R2E1_HEAD_TRUTH_CACHE = { token:'', byModel:Object.create(null), groups:[] };\r\n\r\n  function r2e1ModelKey(product) {\r\n    return String(product && product.etap2 && product.etap2.modelKey || '').replace(/\\s+/g,' ').trim();\r\n  }\r\n\r\n  function r2e1Lane(product) {\r\n    return String(product && product.etap2 && product.etap2.lane || '').trim();\r\n  }\r\n\r\n  function r2e1HeadTruthSnapshot() {\r\n    var products = apiProducts();\r\n    var token = products.map(function(product, index){\r\n      return [productKey(product,index), r2e1ModelKey(product), r2e1Lane(product)].join('::');\r\n    }).join('|');\r\n    if (R2E1_HEAD_TRUTH_CACHE.token === token) return R2E1_HEAD_TRUTH_CACHE;\r\n\r\n    var grouped = Object.create(null);\r\n    products.forEach(function(product){\r\n      var modelKey = r2e1ModelKey(product);\r\n      if (!modelKey) return;\r\n      (grouped[modelKey] || (grouped[modelKey] = [])).push(product);\r\n    });\r\n\r\n    var byModel = Object.create(null);\r\n    var groups = [];\r\n    Object.keys(grouped).sort().forEach(function(modelKey){\r\n      var members = grouped[modelKey].slice();\r\n      var bare = members.filter(function(product){ return r2e1Lane(product) === 'BARE_LIGHT'; });\r\n      var sets = members.filter(function(product){ return r2e1Lane(product) === 'SINGLE_READY_SET'; });\r\n      if (!bare.length || !sets.length) return;\r\n\r\n      bare.sort(function(a,b){ return productKey(a).localeCompare(productKey(b),'tr'); });\r\n      var anchorProduct = bare[0];\r\n      var group = {\r\n        modelKey:modelKey,\r\n        anchorProduct:anchorProduct,\r\n        anchorHandle:String(anchorProduct && anchorProduct.handle || productKey(anchorProduct)),\r\n        bareHandles:bare.map(function(product){ return String(product.handle || productKey(product)); }),\r\n        singleSetHandles:sets.map(function(product){ return String(product.handle || productKey(product)); }),\r\n        memberHandles:members.map(function(product){ return String(product.handle || productKey(product)); })\r\n      };\r\n      byModel[modelKey] = group;\r\n      groups.push(group);\r\n    });\r\n\r\n    R2E1_HEAD_TRUTH_CACHE = { token:token, byModel:byModel, groups:groups };\r\n    return R2E1_HEAD_TRUTH_CACHE;\r\n  }\r\n\r\n  function r2e1HeadTechnicalProduct(product) {\r\n    var modelKey = r2e1ModelKey(product);\r\n    if (!modelKey) return product;\r\n    var group = r2e1HeadTruthSnapshot().byModel[modelKey] || null;\r\n    return group && group.anchorProduct ? group.anchorProduct : product;\r\n  }\r\n\r\n  function r2e1HeadTechnicalContext(product, existingEvidence) {\r\n    var technicalProduct = r2e1HeadTechnicalProduct(product);\r\n    var shared = technicalProduct !== product;\r\n    var evidence = (!shared && existingEvidence) ? existingEvidence : fp14Evidence(technicalProduct);\r\n    var modelKey = r2e1ModelKey(product);\r\n    return {\r\n      version:R2E1_TECHNICAL_TRUTH_VERSION,\r\n      originalProduct:product,\r\n      technicalProduct:technicalProduct,\r\n      evidence:evidence,\r\n      modelKey:modelKey,\r\n      sourceHandle:String(technicalProduct && technicalProduct.handle || productKey(technicalProduct)),\r\n      sharedSameHead:!!(modelKey && r2e1HeadTruthSnapshot().byModel[modelKey])\r\n    };\r\n  }\r\n\r\n  function fp14ScoreMap(ev) {\r\n    var map = {};\r\n    (ev && ev.criteria || []).forEach(function(row){\r\n      var v = evidenceScoreValue(row);\r\n      if (v === null || !isFinite(v)) return;\r\n      if (row.key) map[row.key] = clamp(v, 0, 100);\r\n      if (row.legacyKey) map[row.legacyKey] = clamp(v, 0, 100);\r\n    });\r\n    return map;\r\n  }\r\n\r\n  function avgScores(list, fallback) {\r\n    var values = list.filter(function(v){ return isFinite(Number(v)); }).map(Number);\r\n    if (!values.length) return Number(fallback || 68);\r\n    return values.reduce(function(a,b){ return a+b; }, 0) / values.length;\r\n  }\r\n\r\n  function curveScore(value, stops) {\r\n    value = Number(value || 0);\r\n    stops = stops || [];\r\n    for (var i = 0; i < stops.length; i += 1) {\r\n      if (value >= stops[i][0]) return stops[i][1];\r\n    }\r\n    return stops.length ? stops[stops.length - 1][1] : 60;\r\n  }\r\n\r\n  function intentKeyOf(sub) {\r\n    return String((sub && (sub.intent || sub.key)) || '');\r\n  }\r\n\r\n  function isEcommerceIntent(intent) {\r\n    return /product_white|product_video|soft_product|product_food_color|budget_product/.test(intent || '');\r\n  }\r\n\r\n  function isProductScaleCriticalIntent(intent) {\r\n    return /product_white|product_video/.test(intent || '');\r\n  }\r\n\r\n  function isReflectiveSoftProductIntent(intent) {\r\n    return /soft_product/.test(intent || '');\r\n  }\r\n\r\n  function isClinicalIntent(intent) {\r\n    return /clinical|dental|beauty/.test(intent || '');\r\n  }\r\n\r\n  function isInterviewIntent(intent) {\r\n    return /interview|education|webinar|sales_live|white_key/.test(intent || '');\r\n  }\r\n\r\n  function isCreativeIntent(intent) {\r\n    return /rgb|creative_bg|background|brand|music/.test(intent || '');\r\n  }\r\n\r\n  function contextualWhitePowerScore(product, sub) {\r\n    var p = powerW(product);\r\n    var intent = intentKeyOf(sub);\r\n\r\n    /*\r\n      R11-R5: P61 a\u011F\u0131rl\u0131k matrisi ayn\u0131 kal\u0131r; d\u00FCzeltilen alan kriter sinyal kalibrasyonudur.\r\n      Katalog ve masa \u00FCst\u00FC \u00FCr\u00FCn videosunda 80W yak\u0131n-plan panel, fiyat/CRI avantaj\u0131yla 200W+ \u00FCr\u00FCnleri\r\n      ge\u00E7memelidir. Bu y\u00FCzden White Power sinyali lineer de\u011Fil, \u00FCr\u00FCn \u00F6l\u00E7e\u011Fi kritik e\u011Friyle okunur.\r\n      Yans\u0131t\u0131c\u0131/tak\u0131 gibi soft_product senaryosunda ise yumu\u015Fakl\u0131k h\u00E2l\u00E2 g\u00FC\u00E7l\u00FCd\u00FCr; 80W tamamen d\u0131\u015Flanmaz.\r\n    */\r\n    if (/product_white/.test(intent)) {\r\n      return curveScore(p, [[300,97],[250,95],[220,93],[200,91],[170,87],[150,84],[120,74],[100,64],[80,52],[60,45],[45,38],[1,32]]);\r\n    }\r\n    if (/product_video/.test(intent)) {\r\n      return curveScore(p, [[300,96],[250,94],[220,92],[200,90],[170,86],[150,82],[120,73],[100,63],[80,53],[60,45],[45,38],[1,32]]);\r\n    }\r\n    if (/soft_product|product_food_color|budget_product/.test(intent)) {\r\n      return curveScore(p, [[300,94],[250,91],[220,89],[200,87],[170,84],[150,82],[120,78],[100,74],[80,70],[60,64],[45,58],[1,48]]);\r\n    }\r\n    if (isClinicalIntent(intent)) {\r\n      return curveScore(p, [[300,95],[250,93],[220,91],[200,89],[170,87],[150,85],[120,82],[100,79],[80,76],[60,70],[45,64],[1,54]]);\r\n    }\r\n    if (isInterviewIntent(intent)) {\r\n      return curveScore(p, [[300,96],[250,94],[220,92],[200,90],[170,88],[150,85],[120,80],[100,76],[80,70],[60,64],[45,58],[1,50]]);\r\n    }\r\n    if (/high_power|studio/.test(intent)) {\r\n      return curveScore(p, [[300,97],[250,95],[220,93],[200,91],[170,88],[150,84],[120,76],[100,66],[80,58],[60,48],[45,42],[1,36]]);\r\n    }\r\n    if (/mobile|battery/.test(intent)) {\r\n      return curveScore(p, [[200,91],[170,89],[150,87],[120,83],[100,80],[80,76],[60,70],[45,64],[1,54]]);\r\n    }\r\n    if (isCreativeIntent(intent)) {\r\n      return curveScore(p, [[250,89],[200,86],[170,84],[150,82],[120,76],[100,72],[80,68],[60,62],[45,56],[1,48]]);\r\n    }\r\n    return curveScore(p, [[250,93],[200,90],[170,86],[150,84],[120,79],[100,75],[80,70],[60,64],[45,58],[1,50]]);\r\n  }\r\n\r\n  function contextualColorScore(product, map) {\r\n    if (map.color_accuracy !== undefined) return clamp(map.color_accuracy, 0, 100);\r\n    var c = cri(product);\r\n    if (c >= 98) return 94;\r\n    if (c >= 97) return 91;\r\n    if (c >= 96) return 88;\r\n    if (c >= 95) return 85;\r\n    if (c >= 93) return 78;\r\n    return 70;\r\n  }\r\n\r\n  function contextualCctScore(product, sub, map) {\r\n    if (map.cct_range !== undefined) return clamp(map.cct_range, 0, 100);\r\n    var f = family(product);\r\n    var t = tagsText(product);\r\n    var intent = intentKeyOf(sub);\r\n    if (f === 'bicolor') return 90;\r\n    if (f === 'rgb' && /cct|kelvin|bi.?color|bicolor|rgbw|rgbww|rgbwy|2700|3200|5600|6500/.test(t)) return isEcommerceIntent(intent) || isClinicalIntent(intent) || isInterviewIntent(intent) ? 82 : 86;\r\n    if (f === 'rgb') return isCreativeIntent(intent) ? 76 : 64;\r\n    if (f === 'daylight') return /technical|documentation|archive/.test(intent) ? 82 : 66;\r\n    return 74;\r\n  }\r\n\r\n  function contextualSoftnessScore(product, sub, map) {\r\n    if (map.panel_softness !== undefined) return clamp(map.panel_softness, 0, 100);\r\n    var p = powerW(product);\r\n    var f = family(product);\r\n    var intent = intentKeyOf(sub);\r\n    var base = 74;\r\n    if (f === 'bicolor') base += 6;\r\n    if (f === 'daylight') base += 3;\r\n    if (f === 'rgb' && (isEcommerceIntent(intent) || isClinicalIntent(intent))) base -= 4;\r\n    if (p >= 150) base += 4;\r\n    if (p < 60 && !/mobile|battery/.test(intent)) base -= 5;\r\n    if (/soft_product|beauty|clinical|dental/.test(intent)) base += 4;\r\n    return clamp(base, 50, 92);\r\n  }\r\n\r\n  function contextualRgbFxScore(product, sub, map) {\r\n    if (map.rgb_fx !== undefined) {\r\n      var raw = clamp(map.rgb_fx, 0, 100);\r\n      if (!isCreativeIntent(intentKeyOf(sub)) && family(product) !== 'rgb') return Math.min(raw, 42);\r\n      return raw;\r\n    }\r\n    var f = family(product);\r\n    var intent = intentKeyOf(sub);\r\n    if (f === 'rgb') return isCreativeIntent(intent) ? 94 : 72;\r\n    return isCreativeIntent(intent) ? 36 : 28;\r\n  }\r\n\r\n  function localPriceValue(product, map) {\r\n    if (map.price_value !== undefined) return clamp(map.price_value, 0, 100);\r\n    var products = apiProducts().map(priceNumber).filter(function(n){ return isFinite(n) && n > 0; });\r\n    var price = priceNumber(product);\r\n    if (!price || !products.length) return 70;\r\n    var min = Math.min.apply(Math, products);\r\n    var max = Math.max.apply(Math, products);\r\n    if (max <= min) return 74;\r\n    var pos = (price - min) / (max - min);\r\n    return clamp(90 - (pos * 34), 54, 90);\r\n  }\r\n\r\n  function p61SignalScores(product, evidence, sub) {\r\n    var map = fp14ScoreMap(evidence);\r\n    var contextualPower = contextualWhitePowerScore(product, sub);\r\n    var evidencePower = map.output_power !== undefined ? clamp(map.output_power, 0, 100) : contextualPower;\r\n    var intent = intentKeyOf(sub);\r\n\r\n    /* For purpose scoring, whitePower must follow the selected role. The FP14 output evidence is kept as evidence,\r\n       but cannot flatten an 80W close-range panel above a 200W+ panel in product/studio/high-output intents. */\r\n    var whitePower = isProductScaleCriticalIntent(intent)\r\n      ? (contextualPower * 0.92 + evidencePower * 0.08)\r\n      : ((isEcommerceIntent(intent) || /high_power|studio/.test(intent))\r\n        ? (contextualPower * 0.82 + evidencePower * 0.18)\r\n        : (contextualPower * 0.62 + evidencePower * 0.38));\r\n\r\n    return {\r\n      whitePower: clamp(whitePower, 0, 100),\r\n      colorAccuracy: contextualColorScore(product, map),\r\n      cct: contextualCctScore(product, sub, map),\r\n      softness: contextualSoftnessScore(product, sub, map),\r\n      rgbFx: contextualRgbFxScore(product, sub, map),\r\n      portability: avgScores([map.portability, map.mobile_power], hasBattery(product) ? 84 : (/mobile|battery/.test(intent) ? 54 : 62)),\r\n      control: map.control_connectivity !== undefined ? map.control_connectivity : (hasControl(product) ? 84 : 66),\r\n      quietStability: map.video_safety !== undefined ? map.video_safety : 72,\r\n      contextualWhitePower: contextualPower,\r\n      evidenceWhitePower: evidencePower\r\n    };\r\n  }\r\n\r\n\r\n  function familyRoleScore(product, sub, signals) {\r\n    signals = signals || {};\r\n    var f = family(product);\r\n    var p = powerW(product);\r\n    var intent = sub && sub.intent ? sub.intent : '';\r\n    var score = 70;\r\n\r\n    if (/rgb/.test(intent)) score = f === 'rgb' ? 92 : (f === 'bicolor' ? 62 : 56);\r\n    else if (/clinical|beauty|product_white|soft_product|product_video/.test(intent)) score = f === 'bicolor' ? 91 : (f === 'daylight' ? 82 : 66);\r\n    else if (/mobile|battery/.test(intent)) score = hasBattery(product) ? 88 : 63;\r\n    else if (/high_power|studio/.test(intent)) score = p >= 200 ? 90 : p >= 120 ? 78 : 62;\r\n    else score = f === 'bicolor' ? 88 : (f === 'daylight' ? 80 : 70);\r\n\r\n    if (p >= 200) score += 4;\r\n    if (p < 80) score -= 5;\r\n    if (signals.colorAccuracy >= 90) score += 2;\r\n    return clamp(score, 45, 97);\r\n  }\r\n\r\n  function roleAdjustment(product, sub) {\r\n    var f = family(product);\r\n    var p = powerW(product);\r\n    var intent = sub && sub.intent ? sub.intent : '';\r\n    var adj = 0;\r\n\r\n    if (/rgb/.test(intent)) adj += f === 'rgb' ? 7 : (f === 'bicolor' ? -12 : -18);\r\n    else if (/product_white|product_video/.test(intent)) {\r\n      adj += f === 'bicolor' ? 4 : (f === 'daylight' ? 0 : -8);\r\n\r\n      /* Product scale guard: P61 weight row is unchanged; this is the role/scale suitability guard.\r\n         Katalog ve masa \u00FCst\u00FC \u00FCr\u00FCn videosunda ama\u00E7 ana sinyali \u00FCr\u00FCn \u00F6l\u00E7e\u011Fini ister. */\r\n      if (p >= 240) adj += 11;\r\n      else if (p >= 200) adj += 9;\r\n      else if (p >= 170) adj += 6;\r\n      else if (p >= 150) adj += 4;\r\n      else if (p >= 120) adj += 0;\r\n      else if (p >= 100) adj -= 6;\r\n      else if (p >= 80) adj -= 13;\r\n      else if (p >= 45) adj -= 17;\r\n      else adj -= 22;\r\n    }\r\n    else if (/clinical|beauty|soft_product/.test(intent)) {\r\n      adj += f === 'bicolor' ? 5 : (f === 'daylight' ? 1 : -8);\r\n      if (/soft_product/.test(intent)) {\r\n        if (p >= 150) adj += 3;\r\n        else if (p < 60) adj -= 7;\r\n      }\r\n    }\r\n    else if (/white_key|interview|education|sales_live/.test(intent)) adj += f === 'bicolor' ? 4 : (f === 'rgb' ? -6 : -1);\r\n    else if (/mobile|battery/.test(intent)) adj += hasBattery(product) ? 6 : -8;\r\n    else if (/high_power|studio/.test(intent)) adj += p >= 200 ? 7 : (p < 120 ? -8 : 0);\r\n\r\n    if (/background|creative_bg|rgb_brand/.test(intent) && f === 'rgb') adj += 5;\r\n    return adj;\r\n  }\r\n\r\n  function purposeScore(product, sub, evidence) {\r\n    var technical = r2e1HeadTechnicalContext(product, evidence);\r\n    var row = normalizeWeightRow(P61_PURPOSE_WEIGHTS[sub && sub.key] || P61_PURPOSE_WEIGHTS.content_creator_face_key);\r\n    var signals = p61SignalScores(technical.technicalProduct, technical.evidence, sub);\r\n    var total = 0;\r\n    Object.keys(row).forEach(function(k){ total += Number(signals[k] || 0) * Number(row[k] || 0) / 100; });\r\n    total += roleAdjustment(technical.technicalProduct, sub);\r\n    return clamp(total, 45, 98);\r\n  }\r\n\r\n  function fpScore(product, evidence) {\r\n    if (evidence && evidence.ok) {\r\n      var v = evidence.score100 !== undefined ? Number(evidence.score100) : Number(evidence.score10 || 0) * 10;\r\n      if (isFinite(v) && v > 0) return clamp(v, 35, 98);\r\n    }\r\n    return 68;\r\n  }\r\n\r\n  function calibrateFpRows(rows) {\r\n    rows = Array.isArray(rows) ? rows : [];\r\n\r\n    /* ETAP2 R2-D REV3.3\r\n       General F/P single-owner rule:\r\n       - R2-B canonical source-derived owner is authoritative for customer-facing\r\n         General F/P and for its contribution to exact-subpurpose rankScore.\r\n       - COMPARE.scoreCanonicalFpPool remains a fallback only when R2-B is not\r\n         ready. No score formula or calibration math is changed here. */\r\n    var r2b = W.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL || null;\r\n    var r2bRows = [];\r\n    var r2bMap = Object.create(null);\r\n    try {\r\n      r2bRows = r2b && typeof r2b.getFpOrder === 'function'\r\n        ? (r2b.getFpOrder() || [])\r\n        : [];\r\n    } catch (ignore) { r2bRows = []; }\r\n\r\n    r2bRows.forEach(function(row){\r\n      var key = String(row && (row.productKey || row.handle || row.key) || '').trim();\r\n      if (key) r2bMap[key] = row;\r\n    });\r\n\r\n    var r2bSnap = null;\r\n    try {\r\n      r2bSnap = r2b && typeof r2b.getSnapshot === 'function' ? r2b.getSnapshot() : null;\r\n    } catch (ignore) { r2bSnap = null; }\r\n    var r2bReady = !!(r2bSnap && r2bSnap.ok === true && Number(r2bSnap.productCount) > 0 && r2bRows.length === Number(r2bSnap.productCount));\r\n\r\n    var cmp = compareApi();\r\n    var fallbackCanonical = null;\r\n    if (!r2bReady && cmp && typeof cmp.scoreCanonicalFpPool === 'function') {\r\n      try {\r\n        fallbackCanonical = cmp.scoreCanonicalFpPool(null, {\r\n          profileKey: 'general',\r\n          source: 'ui_recommendation_full_pool_fallback_only'\r\n        });\r\n      } catch (error) {}\r\n    }\r\n\r\n    rows.forEach(function(row){\r\n      var product = row.product || {};\r\n      var candidates = [\r\n        product.key,\r\n        product.handle,\r\n        row.key,\r\n        product.id\r\n      ].map(function(value){ return String(value == null ? '' : value).trim(); }).filter(Boolean);\r\n\r\n      var r2bRow = null;\r\n      for (var ri = 0; ri < candidates.length && !r2bRow; ri += 1) {\r\n        r2bRow = r2bMap[candidates[ri]] || null;\r\n      }\r\n\r\n      if (r2bRow && isFinite(Number(r2bRow.fpScore100))) {\r\n        row.fpScore = round1(Number(r2bRow.fpScore100));\r\n        row.fpCalibrationVersion = 'ETAP2_R2B_CANONICAL_FP_SINGLE_OWNER';\r\n        row.fpCalibration = {\r\n          version: row.fpCalibrationVersion,\r\n          method: 'R2B_CANONICAL_27_POOL',\r\n          referencePool: 'ETAP2_ADMITTED_26',\r\n          referencePoolSize: 26,\r\n          canonicalRank: Number(r2bRow.canonicalRank || 0),\r\n          rawScore100: Number(r2bRow.rawScore100 || row.fpRawScore || 0),\r\n          earned100Eligible: r2bRow.earned100Eligible === true,\r\n          confidence100: Number(r2bRow.confidence100 || 0),\r\n          criticalDataComplete: r2bRow.criticalDataComplete === true,\r\n          canonicalOwner: 'GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL.getFpOrder'\r\n        };\r\n        return;\r\n      }\r\n\r\n      var canonicalRow = null;\r\n      if (fallbackCanonical && fallbackCanonical.ok && fallbackCanonical.byKey) {\r\n        for (var ci = 0; ci < candidates.length && !canonicalRow; ci += 1) {\r\n          canonicalRow = fallbackCanonical.byKey[candidates[ci]] || null;\r\n        }\r\n        if (!canonicalRow && Array.isArray(fallbackCanonical.rows)) {\r\n          canonicalRow = fallbackCanonical.rows.find(function(candidate){\r\n            var candidateProduct = candidate && candidate.product || {};\r\n            var candidateKeys = [\r\n              candidate && candidate.productKey,\r\n              candidateProduct.handle,\r\n              candidateProduct.key,\r\n              candidateProduct.id\r\n            ].map(function(value){ return String(value == null ? '' : value).trim(); }).filter(Boolean);\r\n            return candidates.some(function(key){ return candidateKeys.indexOf(key) >= 0; });\r\n          }) || null;\r\n        }\r\n      }\r\n\r\n      if (canonicalRow) {\r\n        row.fpRawScore = round1(Number(canonicalRow.rawScore100 || row.fpRawScore || 0));\r\n        row.fpScore = round1(Number(canonicalRow.calibratedScore100 || canonicalRow.score100 || row.fpRawScore || 0));\r\n        row.fpCalibrationVersion = fallbackCanonical.calibrationVersion || FP_CALIBRATION_VERSION;\r\n        row.fpCalibration = {\r\n          version: row.fpCalibrationVersion,\r\n          method: fallbackCanonical.method || 'RANK_NORMAL',\r\n          referencePool: fallbackCanonical.referencePool || 'ALL_STATE_PRODUCTS',\r\n          referencePoolSize: Number(fallbackCanonical.referencePoolSize || rows.length),\r\n          canonicalOwner: 'GDX_PANEL_LED_V4_COMPARE.scoreCanonicalFpPool_FALLBACK'\r\n        };\r\n      } else {\r\n        row.fpScore = round1(Number(row.fpRawScore || 0));\r\n        row.fpCalibrationVersion = 'RAW_FP14_FALLBACK_CANONICAL_OWNER_UNAVAILABLE';\r\n        row.fpCalibration = {\r\n          version: row.fpCalibrationVersion,\r\n          method: 'RAW_FP14_FALLBACK',\r\n          referencePool: 'UNAVAILABLE',\r\n          referencePoolSize: 0,\r\n          canonicalOwner: 'NONE'\r\n        };\r\n      }\r\n    });\r\n\r\n    return rows;\r\n  }\r\n\r\n  function u7e1LegacySubForSelection(selectionKey) {\r\n    var targetMap = W.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP || {};\r\n    var target = targetMap[String(selectionKey || '')] || null;\r\n    var subKey = target && target.subKey ? String(target.subKey) : '';\r\n    var group = subKey ? mainForSub(subKey) : currentMain();\r\n    var sub = group && Array.isArray(group.subs)\r\n      ? group.subs.find(function(item){ return item.key === subKey; })\r\n      : null;\r\n    return sub || currentSub();\r\n  }\r\n\r\n  function u7e1EffectiveSub(selectionKey) {\r\n    var profile = u7e1CanonicalProfile(selectionKey);\r\n    var legacySub = u7e1LegacySubForSelection(selectionKey) || {};\r\n    if (!profile) return legacySub;\r\n    var out = {};\r\n    Object.keys(legacySub).forEach(function(key){ out[key] = legacySub[key]; });\r\n    out.intent = profile.intent;\r\n    out.u7e1CanonicalSelectionKey = String(selectionKey || '');\r\n    out.u7e1PurposeTitle = profile.purposeTitle;\r\n    out.u7e1SubPurposeTitle = profile.subPurposeTitle;\r\n    out.u7e1Role = profile.role;\r\n    return out;\r\n  }\r\n\r\n  function u7e1PurposeScore(product, profile, effectiveSub, evidence) {\r\n    var technical = r2e1HeadTechnicalContext(product, evidence);\r\n    var row = normalizeWeightRow(profile && profile.weights || {});\r\n    var signals = p61SignalScores(technical.technicalProduct, technical.evidence, effectiveSub);\r\n    var total = 0;\r\n    Object.keys(row).forEach(function(key){\r\n      total += Number(signals[key] || 0) * Number(row[key] || 0) / 100;\r\n    });\r\n    total += roleAdjustment(technical.technicalProduct, effectiveSub);\r\n    return {\r\n      score: clamp(total, 45, 98),\r\n      signals: signals,\r\n      weights: row,\r\n      technicalProduct: technical.technicalProduct,\r\n      technicalTruthVersion: technical.version,\r\n      technicalModelKey: technical.modelKey,\r\n      technicalSourceHandle: technical.sourceHandle,\r\n      technicalSharedSameHead: technical.sharedSameHead\r\n    };\r\n  }\r\n\r\n  var R2D34_EXACT_ROWS_CACHE={token:\"\",rows:[],buildCount:0,hitCount:0};\r\n  function r2d34ExactRowsCacheToken(selectionKey){\r\n    var products=apiProducts();\r\n    var productSig=products.map(function(product,index){return productKey(product,index)}).join(\"|\");\r\n    var owner=W.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL||null;\r\n    var stamp=\"\";\r\n    try{\r\n      var snap=owner&&typeof owner.getSnapshot===\"function\"?owner.getSnapshot():null;\r\n      stamp=String(snap&&(snap.activatedAt||snap.builtAt||snap.version)||\"\");\r\n    }catch(_){}\r\n    return String(selectionKey||\"\")+\"::\"+productSig+\"::\"+stamp;\r\n  }\r\n\r\n  function u7e1CanonicalRecommendationRows(selectionKey, fullPool) {\r\n    selectionKey = u7e1NormalizeSelectionKey(selectionKey);\r\n    var profile = u7e1CanonicalProfile(selectionKey);\r\n    if (!profile) return [];\r\n\r\n    var cacheToken=r2d34ExactRowsCacheToken(selectionKey);\r\n    if(R2D34_EXACT_ROWS_CACHE.token===cacheToken&&R2D34_EXACT_ROWS_CACHE.rows.length){\r\n      R2D34_EXACT_ROWS_CACHE.hitCount+=1;\r\n      return fullPool?R2D34_EXACT_ROWS_CACHE.rows.slice():R2D34_EXACT_ROWS_CACHE.rows.slice(0,3);\r\n    }\r\n\r\n    var effectiveSub = u7e1EffectiveSub(selectionKey);\r\n    var products = apiProducts();\r\n    var rows = products.map(function(product, index){\r\n      var evidence = fp14Evidence(product);\r\n      var purposeResult = u7e1PurposeScore(product, profile, effectiveSub, evidence);\r\n      var fp = fpScore(product, evidence);\r\n      var role = familyRoleScore(purposeResult.technicalProduct || product, effectiveSub, purposeResult.signals);\r\n      return {\r\n        rank: 0,\r\n        product: product,\r\n        key: productKey(product, index),\r\n        title: productTitle(product),\r\n        image: productImage(product),\r\n        url: productUrl(product),\r\n        price: priceText(product),\r\n        vendor: product.vendor || 'GDX',\r\n        family: family(product),\r\n        familyLabel: familyLabel(product),\r\n        power: powerW(product),\r\n        cri: cri(product),\r\n        battery: hasBattery(product),\r\n        purposeScore: round1(purposeResult.score),\r\n        fpRawScore: round1(fp),\r\n        fpScore: round1(fp),\r\n        roleScore: round1(role),\r\n        rankScore: 0,\r\n        scoreSource: {\r\n          purpose: 'R2E1_PRICE_FREE_SAME_HEAD_TECHNICAL_PURPOSE',\r\n          technicalTruthVersion: purposeResult.technicalTruthVersion,\r\n          technicalModelKey: purposeResult.technicalModelKey,\r\n          technicalSourceHandle: purposeResult.technicalSourceHandle,\r\n          technicalSharedSameHead: purposeResult.technicalSharedSameHead,\r\n          canonicalSelectionKey: selectionKey,\r\n          canonicalPurposeTitle: profile.purposeTitle,\r\n          canonicalSubPurposeTitle: profile.subPurposeTitle,\r\n          canonicalIntent: profile.intent,\r\n          canonicalRole: profile.role,\r\n          purposeWeights: purposeResult.weights,\r\n          p61SignalModelPreserved: true,\r\n          fp: evidence && evidence.ok && evidence.criteria && evidence.criteria.length >= 10\r\n            ? 'COMPARE.scoreFp14ProductEvidence_14_CRITERIA'\r\n            : (evidence && evidence.source || 'fallback'),\r\n          criteriaCount: evidence && Array.isArray(evidence.criteria) ? evidence.criteria.length : 0,\r\n          stockExcluded: true,\r\n          signals: purposeResult.signals\r\n        },\r\n        sub: effectiveSub\r\n      };\r\n    });\r\n\r\n    calibrateFpRows(rows);\r\n    rows.forEach(function(row){\r\n      var intent = intentKeyOf(row.sub);\r\n      row.rankScore = isProductScaleCriticalIntent(intent)\r\n        ? (row.purposeScore * .96 + row.fpScore * .02 + row.roleScore * .02)\r\n        : (isReflectiveSoftProductIntent(intent)\r\n          ? (row.purposeScore * .92 + row.fpScore * .04 + row.roleScore * .04)\r\n          : (row.purposeScore * .88 + row.fpScore * .08 + row.roleScore * .04));\r\n      row.scoreSource.fpRawScore = row.fpRawScore;\r\n      row.scoreSource.fpCalibration = row.fpCalibration;\r\n      row.scoreSource.fpCalibrationVersion = row.fpCalibrationVersion;\r\n    });\r\n\r\n    rows.sort(function(a,b){\r\n      return (b.rankScore - a.rankScore) ||\r\n        (b.purposeScore - a.purposeScore) ||\r\n        String(a.key || '').localeCompare(String(b.key || ''));\r\n    });\r\n    rows.forEach(function(row, index){ row.rank = index + 1; });\r\n    R2D34_EXACT_ROWS_CACHE.token=cacheToken;\r\n    R2D34_EXACT_ROWS_CACHE.rows=rows.slice();\r\n    R2D34_EXACT_ROWS_CACHE.buildCount+=1;\r\n    return fullPool ? rows.slice() : rows.slice(0, 3);\r\n  }\r\n\r\n  function r2dExactRowHandle(row) {\r\n    row = row || {};\r\n    var product = row.product || {};\r\n    return String(product.handle || row.handle || row.productKey || row.key || product.key || product.id || '').trim();\r\n  }\r\n\r\n  function r2dExactRowLane(row) {\r\n    row = row || {};\r\n    var product = row.product || {};\r\n    var lane = String(product && product.etap2 && product.etap2.lane || row.purchaseLane || row.lane || '').trim();\r\n    if (lane) return lane;\r\n    var owner = W.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL || null;\r\n    var handle = r2dExactRowHandle(row);\r\n    try {\r\n      if (owner && typeof owner.getLane === 'function') return String(owner.getLane(handle) || '').trim();\r\n    } catch (ignore) {}\r\n    return '';\r\n  }\r\n\r\n  function r2dCommittedRecommendationLane() {\r\n    var laneApi = W.GDX_PANEL_V4_ETAP2_PURCHASE_LANE || null;\r\n    var lane = 'ALL';\r\n    try {\r\n      if (laneApi && typeof laneApi.getCommittedLane === 'function') {\r\n        lane = String(laneApi.getCommittedLane() || 'ALL').trim();\r\n      }\r\n    } catch (ignore) {}\r\n    return ['ALL','BARE_LIGHT','SINGLE_READY_SET'].indexOf(lane) >= 0 ? lane : 'ALL';\r\n  }\r\n\r\n  /* ETAP2 R2-D REV3.7.2 \u2014 FINAL VISIBLE TOP3 PURCHASE-LANE FAIL-CLOSED GATE\r\n     The exact-selection projection remains the score/rank owner. This gate does\r\n     not calculate or reorder scores; it only refuses to render a row whose\r\n     canonical purchase lane differs from the committed user choice. */\r\n  function r2dCanonicalLaneForRow(row) {\r\n    var handle = r2dExactRowHandle(row);\r\n    var owner = W.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL || null;\r\n    var lane = '';\r\n    try {\r\n      if (owner && typeof owner.getLane === 'function') lane = String(owner.getLane(handle) || '').trim();\r\n    } catch (ignore) {}\r\n    if (!lane) lane = r2dExactRowLane(row);\r\n    return ['BARE_LIGHT','SINGLE_READY_SET'].indexOf(lane) >= 0 ? lane : '';\r\n  }\r\n\r\n  function r2dStrictCommittedLaneRows(rows, committedLane, limit) {\r\n    rows = Array.isArray(rows) ? rows.slice() : [];\r\n    committedLane = String(committedLane || 'ALL').trim();\r\n    limit = Number(limit || 0);\r\n    if (committedLane !== 'ALL') {\r\n      rows = rows.filter(function(row){ return r2dCanonicalLaneForRow(row) === committedLane; });\r\n    }\r\n    rows = rows.map(function(row, index){\r\n      var copy = Object.assign({}, row);\r\n      copy.rank = index + 1;\r\n      copy.purchaseLane = r2dCanonicalLaneForRow(row);\r\n      copy.handle = r2dExactRowHandle(row);\r\n      return copy;\r\n    });\r\n    return limit > 0 ? rows.slice(0, limit) : rows;\r\n  }\r\n\r\n  function r2dExactSelectionProjectionRows(selectionKey, options) {\r\n    options = options || {};\r\n    selectionKey = String(selectionKey || u7e1ActiveSelectionKey() || '').trim();\r\n    var rows = u7e1CanonicalRecommendationRows(selectionKey, true).slice();\r\n    var lane = String(options.lane || 'ALL').trim();\r\n    if (lane === 'COMMITTED') lane = r2dCommittedRecommendationLane();\r\n    if (['ALL','BARE_LIGHT','SINGLE_READY_SET'].indexOf(lane) < 0) lane = 'ALL';\r\n\r\n    if (lane !== 'ALL') {\r\n      rows = rows.filter(function(row){ return r2dExactRowLane(row) === lane; });\r\n    }\r\n\r\n    rows = rows.map(function(row, index){\r\n      var copy = Object.assign({}, row);\r\n      copy.rank = index + 1;\r\n      copy.purchaseLane = r2dExactRowLane(row);\r\n      copy.handle = r2dExactRowHandle(row);\r\n      return copy;\r\n    });\r\n\r\n    var limit = Number(options.limit || 0);\r\n    return limit > 0 ? rows.slice(0, limit) : rows;\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R2D_EXACT_SELECTION_SCORE_PROJECTION = Object.freeze({\r\n    version: 'CANFOTO-ETAP2-R2H-EXACT-25-SELECTION-SCORE-PROJECTION-V1',\r\n    scoreFormulaOwner: 'R2H_U7E1_25_PROFILE_PRICE_FREE_SHARED_HEAD_TECHNICAL_TRUTH',\r\n    fpOwner: 'GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL.getFpOrder',\r\n    selectionKeyAliases: U7E1_SELECTION_KEY_ALIASES,\r\n    normalizeSelectionKey: u7e1NormalizeSelectionKey,\r\n    getRows: function(selectionKey, options){ return r2dExactSelectionProjectionRows(selectionKey, options); },\r\n    // R39: Native row + canonical R34 technical evidence join. Read-only; no scoring or ranking mutation.\r\n    getTechnicalRows: function(selectionKey, options){\r\n      var rows=r2dExactSelectionProjectionRows(selectionKey, options);\r\n      var source=W.CANFOTO_NORA_R34_EXPLICIT_FACTS;\r\n      return rows.map(function(row){\r\n        var handle=r2dExactRowHandle(row);\r\n        var decision=null;\r\n        if(source&&typeof source.getDecision==='function'){\r\n          try{decision=source.getDecision(handle,selectionKey);}catch(e){\r\n            return {handle:handle,selectionKey:selectionKey,nativeRow:row,technicalDecision:null,\r\n              technicalStatus:'HOLD_TECHNICAL_DECISION_EXCEPTION',error:String(e&&e.message||e)};\r\n          }\r\n        }\r\n        var status=decision&&decision.status||'HOLD_R34_TECHNICAL_OWNER_NOT_READY';\r\n        return {handle:handle,selectionKey:selectionKey,nativeRow:row,\r\n          technicalDecision:decision,technicalStatus:status,\r\n          technicalSuitability:decision&&decision.technicalSuitability===true?true:\r\n            decision&&decision.technicalSuitability===false?false:null,\r\n          scoreAdjustment:0,rankMutation:false,fpMutation:false,setupMutation:false};\r\n      });\r\n    },\r\n\r\n    /* V67BM additive async entrypoint: does not touch the sealed synchronous getRows or scoring. */\r\n    getRowsAsync: function(selectionKey, options){\r\n      var api = W.GDX_PANEL_LED_V4 || {};\r\n      var state = api.state || {};\r\n      var ready = state.loaded === true && Array.isArray(state.products) && state.products.length > 0;\r\n      if (ready) return Promise.resolve(r2dExactSelectionProjectionRows(selectionKey, options));\r\n      if (typeof api.loadProducts !== 'function') {\r\n        return Promise.reject(new Error('V67BM_PANEL_PRODUCT_LOADER_MISSING'));\r\n      }\r\n      return Promise.resolve().then(function(){ return api.loadProducts(); }).then(function(){\r\n        var fresh = (W.GDX_PANEL_LED_V4 || {}).state || {};\r\n        if (!Array.isArray(fresh.products) || fresh.products.length === 0) {\r\n          throw new Error('V67BM_PANEL_PRODUCT_POOL_EMPTY_AFTER_LOAD');\r\n        }\r\n        return r2dExactSelectionProjectionRows(selectionKey, options);\r\n      });\r\n    },\r\n    getCurrentSelectionKey: function(){ return String(u7e1ActiveSelectionKey() || ''); },\r\n    getCurrentCanonicalSelectionKey: function(){ return u7e1NormalizeSelectionKey(u7e1ActiveSelectionKey()); },\r\n    getCommittedLane: r2dCommittedRecommendationLane,\r\n    rowHandle: r2dExactRowHandle,\r\n    rowLane: r2dExactRowLane\r\n  });\r\n\r\n  W.debugPanelV4Etap2R2D374SelectionKeyAliasNormalization = function(){\r\n    var currentKeys = [\r\n      'product_ecommerce::small_product_tabletop','product_ecommerce::large_product_model','product_ecommerce::marketplace_catalog',\r\n      'youtube_reels_social::single_person_video','youtube_reels_social::short_video_reels','youtube_reels_social::live_stream_talk',\r\n      'interview_talking_head::single_interview','interview_talking_head::two_person_interview','interview_talking_head::corporate_training_video',\r\n      'clinic_aesthetic_dental::skin_face_capture','clinic_aesthetic_dental::dental_support','clinic_aesthetic_dental::clinic_social_content',\r\n      'rgb_creative_video::background_color_effect','rgb_creative_video::music_clip_scene','rgb_creative_video::product_color_separation',\r\n      'studio_professional::model_shoot','studio_professional::campaign_ad_visual','studio_professional::fixed_studio_setup',\r\n      'mobile_outdoor::battery_shoot','mobile_outdoor::portable_team','mobile_outdoor::fast_location_setup',\r\n      'starter_budget_practical::first_light_choice','starter_budget_practical::budget_setup','starter_budget_practical::small_space_solution'\r\n    ];\r\n    var aliasKeys = Object.keys(U7E1_SELECTION_KEY_ALIASES);\r\n    var rows = currentKeys.map(function(currentKey){\r\n      var canonicalKey = u7e1NormalizeSelectionKey(currentKey);\r\n      var allRows = r2dExactSelectionProjectionRows(currentKey,{lane:'ALL',limit:0});\r\n      var bareRows = r2dExactSelectionProjectionRows(currentKey,{lane:'BARE_LIGHT',limit:0});\r\n      var setRows = r2dExactSelectionProjectionRows(currentKey,{lane:'SINGLE_READY_SET',limit:0});\r\n      return {\r\n        currentKey: currentKey,\r\n        canonicalKey: canonicalKey,\r\n        aliased: currentKey !== canonicalKey,\r\n        profileReady: !!U7E1_CANONICAL_PROFILES[canonicalKey],\r\n        allCount: allRows.length,\r\n        bareCount: bareRows.length,\r\n        singleReadySetCount: setRows.length,\r\n        top3All: allRows.slice(0,3).map(r2dExactRowHandle),\r\n        top3Bare: bareRows.slice(0,3).map(r2dExactRowHandle),\r\n        top3SingleReadySet: setRows.slice(0,3).map(r2dExactRowHandle)\r\n      };\r\n    });\r\n    var campaignCurrent='studio_professional::campaign_ad_visual';\r\n    var campaignCanonical='studio_professional::ad_campaign_visual';\r\n    var campaignCurrentTop3=r2dExactSelectionProjectionRows(campaignCurrent,{lane:'SINGLE_READY_SET',limit:3}).map(r2dExactRowHandle);\r\n    var campaignCanonicalTop3=r2dExactSelectionProjectionRows(campaignCanonical,{lane:'SINGLE_READY_SET',limit:3}).map(r2dExactRowHandle);\r\n    var cardinalityOwner=W.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL||null;\r\n    var cardinalitySnap=null;\r\n    try{cardinalitySnap=cardinalityOwner&&typeof cardinalityOwner.getSnapshot==='function'?cardinalityOwner.getSnapshot():null;}catch(_){cardinalitySnap=null;}\r\n    var expectedAll=Number(cardinalitySnap&&cardinalitySnap.productCount||0);\r\n    var expectedBare=Number(cardinalitySnap&&cardinalitySnap.laneCounts&&cardinalitySnap.laneCounts.BARE_LIGHT||0);\r\n    var expectedSet=Number(cardinalitySnap&&cardinalitySnap.laneCounts&&cardinalitySnap.laneCounts.SINGLE_READY_SET||0);\r\n    var checks={\r\n      activeSelectionCount24:currentKeys.length===24,\r\n      legacyCanonicalProfilesPresent24:currentKeys.every(function(key){return !!U7E1_CANONICAL_PROFILES[u7e1NormalizeSelectionKey(key)];}),\r\n      registryV2ProfileCount25:Object.keys(U7E1_CANONICAL_PROFILES).length===25,\r\n      aliasCount6:aliasKeys.length===6,\r\n      all24ResolveCanonicalProfile:rows.every(function(row){return row.profileReady===true;}),\r\n      all24ProjectFullCanonical:expectedAll>0&&rows.every(function(row){return row.allCount===expectedAll;}),\r\n      all24ProjectBareCanonical:rows.every(function(row){return row.bareCount===expectedBare;}),\r\n      all24ProjectSingleReadySetCanonical:rows.every(function(row){return row.singleReadySetCount===expectedSet;}),\r\n      allSixCurrentAliasesResolve:aliasKeys.every(function(key){return u7e1NormalizeSelectionKey(key)!==key && !!U7E1_CANONICAL_PROFILES[u7e1NormalizeSelectionKey(key)];}),\r\n      campaignAliasResolvesToCanonical:u7e1NormalizeSelectionKey(campaignCurrent)===campaignCanonical,\r\n      campaignAliasTop3Parity:campaignCurrentTop3.length===3 && campaignCanonicalTop3.length===3 && campaignCurrentTop3.every(function(handle,index){return handle===campaignCanonicalTop3[index];}),\r\n      noScoreFormulaMutation:true,\r\n      noRankingRecalculation:true,\r\n      noFpMutation:true,\r\n      noPurchaseLaneMutation:true,\r\n      noSetupMutation:true,\r\n      noCommerceMutation:true,\r\n      noShareMutation:true\r\n    };\r\n    var failedChecks=Object.keys(checks).filter(function(key){return checks[key]!==true;});\r\n    var out={\r\n      ok:failedChecks.length===0,\r\n      version:'PANEL-V4-ETAP2-R2D-REV3.7.4-SELECTION-KEY-ALIAS-NORMALIZATION-QA-V1',\r\n      checks:checks,\r\n      failedChecks:failedChecks,\r\n      observed:{\r\n        currentSelectionKey:u7e1ActiveSelectionKey(),\r\n        currentCanonicalSelectionKey:u7e1NormalizeSelectionKey(u7e1ActiveSelectionKey()),\r\n        aliases:U7E1_SELECTION_KEY_ALIASES,\r\n        campaignCurrentTop3:campaignCurrentTop3,\r\n        campaignCanonicalTop3:campaignCanonicalTop3,\r\n        rows:rows\r\n      },\r\n      contract:{\r\n        visibleSelectionOwner:'GDX_PANEL_V4_R28_SELECTION_STATE_CURRENT_KEYS',\r\n        scoringProfileOwner:'U7E1_CANONICAL_PROFILES_24',\r\n        normalizationBoundary:'PROFILE_LOOKUP_ONLY',\r\n        scoreFormulaMutation:false,\r\n        rankingMutation:false,\r\n        fpMutation:false,\r\n        purchaseLaneMutation:false\r\n      }\r\n    };\r\n    console.log('=== CANFOTO ETAP2 R2-D REV3.7.4 24/24 SELECTION KEY ALIAS NORMALIZATION QA ===');\r\n    console.log(out);\r\n    return out;\r\n  };\r\n\r\n  W.GDX_PANEL_V4_U7E1_CANONICAL_SCORING_POLICY = Object.freeze({\r\n    version: 'CANFOTO-ETAP2-R2H-U7E1-25-CANONICAL-PURPOSE-PROFILES-V3',\r\n    canonicalProfileOwner: 'R28_SELECTION_KEY_REGISTRY_V2',\r\n    profileCount: 25,\r\n    profileDimensions: R2E1_TECHNICAL_DIMENSIONS,\r\n    implementationOwner: 'assets/panel-led-v4.ui.js / R2-E1 price-free shared-head technical truth owner',\r\n    productSpecificOverrides: 'FORBIDDEN',\r\n    fpOwner: 'UNCHANGED_CANONICAL_GENERAL_FP',\r\n    stockRankingInfluence: 'NONE',\r\n    productPoolMutation: 'NONE',\r\n    setupTruthMutation: 'NONE',\r\n    shareMutation: 'NONE',\r\n    cobMutation: 'NONE',\r\n    authorizedBy: 'PANEL_U7E0_SHADOW_PASS_READY_FOR_U7E1_CANONICAL_24_PROFILE_REPLACEMENT'\r\n  });\r\n\r\n  W.GDX_PANEL_V4_R2E1_HEAD_TECHNICAL_TRUTH = Object.freeze({\r\n    version:R2E1_TECHNICAL_TRUTH_VERSION,\r\n    dimensions:R2E1_TECHNICAL_DIMENSIONS,\r\n    priceIncluded:false,\r\n    packageOfferUsedAsTechnicalSource:false,\r\n    getTechnicalProduct:function(product){ return r2e1HeadTechnicalProduct(product); },\r\n    getSnapshot:function(){\r\n      var snapshot=r2e1HeadTruthSnapshot();\r\n      return {\r\n        version:R2E1_TECHNICAL_TRUTH_VERSION,\r\n        groups:snapshot.groups.map(function(group){\r\n          return {\r\n            modelKey:group.modelKey,\r\n            anchorHandle:group.anchorHandle,\r\n            bareHandles:group.bareHandles.slice(),\r\n            singleSetHandles:group.singleSetHandles.slice(),\r\n            memberHandles:group.memberHandles.slice()\r\n          };\r\n        })\r\n      };\r\n    }\r\n  });\r\n\r\n  W.debugPanelV4Etap2R2E1HeadTechnicalTruth = function(){\r\n    var snapshot=W.GDX_PANEL_V4_R2E1_HEAD_TECHNICAL_TRUTH.getSnapshot();\r\n    var checks={\r\n      technicalOwnerReady:!!snapshot,\r\n      technicalDimensions8:R2E1_TECHNICAL_DIMENSIONS.length===8,\r\n      priceExcluded:R2E1_TECHNICAL_DIMENSIONS.indexOf('price')===-1,\r\n      sameHeadGroups5:snapshot.groups.length===5,\r\n      sameHeadPairs6:snapshot.groups.reduce(function(sum,group){ return sum + group.bareHandles.length*group.singleSetHandles.length; },0)===6,\r\n      everySharedGroupUsesBareAnchor:snapshot.groups.every(function(group){ return group.bareHandles.indexOf(group.anchorHandle)>=0; }),\r\n      noFpMutation:true,\r\n      noRankingFormulaMutation:true,\r\n      noCommerceMutation:true,\r\n      noSetupMutation:true,\r\n      noShareMutation:true\r\n    };\r\n    var failedChecks=Object.keys(checks).filter(function(key){ return checks[key]!==true; });\r\n    var out={ok:failedChecks.length===0,version:R2E1_TECHNICAL_TRUTH_VERSION,checks:checks,failedChecks:failedChecks,snapshot:snapshot};\r\n    console.log('=== CANFOTO ETAP2 R2-E1 HEAD TECHNICAL TRUTH ===');\r\n    console.log(out);\r\n    return out;\r\n  };\r\n\r\n  W.GDX_PANEL_V4_U7E1_CANONICAL_PROFILES = U7E1_CANONICAL_PROFILES;\r\n  W.debugPanelV4U7E1RowsForSelection = function(selectionKey, options) {\r\n    return u7e1CanonicalRecommendationRows(\r\n      selectionKey,\r\n      !!(options && options.fullPool)\r\n    );\r\n  };\r\n\r\n  function recommendationRows(subKey) {\r\n    var products = apiProducts();\r\n    var sub = subKey ? (mainForSub(subKey).subs.find(function(s){return s.key === subKey;}) || currentSub()) : currentSub();\r\n    var rows = products.map(function(product, index){\r\n      var evidence = fp14Evidence(product);\r\n      var technical = r2e1HeadTechnicalContext(product, evidence);\r\n      var signals = p61SignalScores(technical.technicalProduct, technical.evidence, sub);\r\n      var purpose = purposeScore(product, sub, evidence);\r\n      var fp = fpScore(product, evidence);\r\n      var role = familyRoleScore(technical.technicalProduct, sub, signals);\r\n      return {\r\n        rank: 0,\r\n        product: product,\r\n        key: productKey(product, index),\r\n        title: productTitle(product),\r\n        image: productImage(product),\r\n        url: productUrl(product),\r\n        price: priceText(product),\r\n        vendor: product.vendor || 'GDX',\r\n        family: family(product),\r\n        familyLabel: familyLabel(product),\r\n        power: powerW(product),\r\n        cri: cri(product),\r\n        purposeScore: round1(purpose),\r\n        fpRawScore: round1(fp),\r\n        fpScore: round1(fp),\r\n        roleScore: round1(role),\r\n        rankScore: 0,\r\n        scoreSource: {\r\n          purpose: 'R2E1_PRICE_FREE_8D_TECHNICAL_PURPOSE',\r\n          technicalTruthVersion: R2E1_TECHNICAL_TRUTH_VERSION,\r\n          technicalModelKey: technical.modelKey,\r\n          technicalSourceHandle: technical.sourceHandle,\r\n          technicalSharedSameHead: technical.sharedSameHead,\r\n          p61WeightMatrixExact: false,\r\n          p61HistoricalMatrixPriceExcludedAtScoring: true,\r\n          fp: evidence && evidence.ok && evidence.criteria && evidence.criteria.length >= 10 ? 'COMPARE.scoreFp14ProductEvidence_14_CRITERIA' : (evidence && evidence.source || 'fallback'),\r\n          criteriaCount: evidence && Array.isArray(evidence.criteria) ? evidence.criteria.length : 0,\r\n          stockExcluded: true,\r\n          signals: signals\r\n        },\r\n        sub: sub\r\n      };\r\n    });\r\n\r\n    calibrateFpRows(rows);\r\n    rows.forEach(function(row){\r\n      var intent = intentKeyOf(row.sub);\r\n      row.rankScore = isProductScaleCriticalIntent(intent)\r\n        ? (row.purposeScore * .96 + row.fpScore * .02 + row.roleScore * .02)\r\n        : (isReflectiveSoftProductIntent(intent)\r\n          ? (row.purposeScore * .92 + row.fpScore * .04 + row.roleScore * .04)\r\n          : (row.purposeScore * .88 + row.fpScore * .08 + row.roleScore * .04));\r\n      row.scoreSource.fpRawScore = row.fpRawScore;\r\n      row.scoreSource.fpCalibration = row.fpCalibration;\r\n      row.scoreSource.fpCalibrationVersion = row.fpCalibrationVersion;\r\n    });\r\n\r\n    rows = rows.sort(function(a,b){ return b.rankScore - a.rankScore; }).slice(0,3);\r\n\r\n    rows.forEach(function(r,i){ r.rank = i + 1; });\r\n    return rows;\r\n  }\r\n\r\n  function recoTagHtml(row) {\r\n    var tags = [];\r\n    if (row.familyLabel) tags.push(row.familyLabel);\r\n    if (row.power) tags.push(String(row.power) + 'W');\r\n    if (row.cri) tags.push('CRI ' + row.cri + '+');\r\n    if (hasControl(row.product)) tags.push('Kontrol');\r\n    if (hasBattery(row.product)) tags.push('Batarya');\r\n    return tags.slice(0,4).map(function(t){ return '<span class=\"gdx-r11-chip\">' + esc(t) + '</span>'; }).join('');\r\n  }\r\n\r\n  function purposeFpRoleScoreBarHtml(label, value, note, tone, attrs) {\r\n    var v = clamp(Number(value || 0), 0, 100);\r\n    var rounded = round0(v);\r\n    return ''+\r\n      '<div class=\"gdx-r11-purpose-fp-role-bar gdx-r11-purpose-fp-role-bar--' + esc(tone || 'neutral') + '\" data-gdx-r11-purpose-fp-role-bar=\"1\" data-score=\"' + esc(String(rounded)) + '\" ' + (attrs || '') + ' style=\"--score:' + esc(String(rounded)) + '%\">'+\r\n        '<div class=\"gdx-r11-purpose-fp-role-bar-top\">'+\r\n          '<b>' + esc(label) + '</b>'+\r\n          '<strong>' + esc(String(rounded)) + '<small>/100</small></strong>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-purpose-fp-role-track\" aria-hidden=\"true\"><i data-gdx-r11-purpose-fp-role-fill=\"1\" style=\"width:' + esc(String(rounded)) + '%\"></i></div>'+\r\n        '<small class=\"gdx-r11-purpose-fp-role-note\">' + esc(note) + '</small>'+\r\n      '</div>';\r\n  }\r\n\r\n  /* ==========================================================================\r\n     PANEL LED V4 / R33-CR01\r\n     SKOR \u015EEFFAFLI\u011EI \u2014 REASON MODAL NATIVE DISCLOSURE\r\n     - Yeni modal owner yok.\r\n     - MutationObserver / setInterval yok.\r\n     - Skor, ranking, \u00FCr\u00FCn, commerce, cart, NORA, share/PNG/QR mutasyonu yok.\r\n     - Setup modaline uygulanmaz.\r\n     ========================================================================== */\r\n  var R33_CR01_SCORE_TRANSPARENCY_VERSION =\r\n    'PANEL-V4-R33-CR01-SCORE-TRANSPARENCY-DESKTOP-FULL-WIDTH-DEBUG-FIX-V4';\r\n\r\n  function r33Cr01ScoreBand(value, type) {\r\n    var v = clamp(Number(value || 0), 0, 100);\r\n\r\n    if (type === 'fp') {\r\n      if (v >= 90) return '\u00E7ok g\u00FC\u00E7l\u00FC fiyat / de\u011Fer dengesi';\r\n      if (v >= 80) return 'g\u00FC\u00E7l\u00FC fiyat / de\u011Fer dengesi';\r\n      if (v >= 70) return 'dengeli fiyat / de\u011Fer';\r\n      if (v >= 60) return 'ko\u015Fullara g\u00F6re de\u011Ferlendirilebilecek fiyat / de\u011Fer';\r\n      return 's\u0131n\u0131rl\u0131 fiyat / de\u011Fer dengesi';\r\n    }\r\n\r\n    if (type === 'role') {\r\n      if (v >= 90) return '\u00F6nerilen \u0131\u015F\u0131k rol\u00FCyle \u00E7ok g\u00FC\u00E7l\u00FC teknik e\u015Fle\u015Fme';\r\n      if (v >= 80) return '\u00F6nerilen \u0131\u015F\u0131k rol\u00FCyle g\u00FC\u00E7l\u00FC teknik e\u015Fle\u015Fme';\r\n      if (v >= 70) return '\u00F6nerilen \u0131\u015F\u0131k rol\u00FCyle dengeli teknik e\u015Fle\u015Fme';\r\n      if (v >= 60) return '\u00F6nerilen \u0131\u015F\u0131k rol\u00FCyle ko\u015Fullu teknik e\u015Fle\u015Fme';\r\n      return '\u00F6nerilen \u0131\u015F\u0131k rol\u00FCyle s\u0131n\u0131rl\u0131 teknik e\u015Fle\u015Fme';\r\n    }\r\n\r\n    if (v >= 90) return 'se\u00E7ili kullan\u0131m i\u00E7in \u00E7ok g\u00FC\u00E7l\u00FC teknik uyum';\r\n    if (v >= 80) return 'se\u00E7ili kullan\u0131m i\u00E7in g\u00FC\u00E7l\u00FC teknik uyum';\r\n    if (v >= 70) return 'se\u00E7ili kullan\u0131m i\u00E7in dengeli teknik uyum';\r\n    if (v >= 60) return 'se\u00E7ili kullan\u0131m i\u00E7in ko\u015Fullu teknik uyum';\r\n    return 'se\u00E7ili kullan\u0131m i\u00E7in s\u0131n\u0131rl\u0131 teknik uyum';\r\n  }\r\n\r\n  function r33Cr01CriterionChips(items) {\r\n    return (items || []).map(function(item){\r\n      return '<span>' + esc(item) + '</span>';\r\n    }).join('');\r\n  }\r\n\r\n  function r33Cr01ScoreTransparencyHtml(row, mode, layout) {\r\n    if (mode === 'setup') return '';\r\n\r\n    row = row || {};\r\n    layout = layout === 'desktop-wide' ? 'desktop-wide' : 'mobile-inline';\r\n\r\n    var layoutClass = layout === 'desktop-wide'\r\n      ? ' is-desktop-wide'\r\n      : ' is-mobile-inline';\r\n\r\n    var purpose = round0(clamp(Number(row.purposeScore || 0), 0, 100));\r\n    var fp = round0(clamp(Number(row.fpScore || 0), 0, 100));\r\n    var role = round0(clamp(Number(row.roleScore || 0), 0, 100));\r\n\r\n    var purposeCriteria = [\r\n      'Beyaz \u0131\u015F\u0131k g\u00FCc\u00FC',\r\n      'Renk do\u011Frulu\u011Fu',\r\n      'CCT / Kelvin',\r\n      'I\u015F\u0131k yumu\u015Fakl\u0131\u011F\u0131',\r\n      'RGB / FX',\r\n      'Ta\u015F\u0131nabilirlik',\r\n      'Kontrol',\r\n      'Video kararl\u0131l\u0131\u011F\u0131',\r\n      'Fiyat'\r\n    ];\r\n\r\n    var fpCriteria = [\r\n      'Fiyat / de\u011Fer',\r\n      '\u00C7\u0131k\u0131\u015F g\u00FCc\u00FC',\r\n      'Panel yumu\u015Fakl\u0131\u011F\u0131',\r\n      'Renk do\u011Frulu\u011Fu',\r\n      'CCT aral\u0131\u011F\u0131',\r\n      'RGB / FX',\r\n      'Kontrol ve ba\u011Flant\u0131',\r\n      'Mobil g\u00FC\u00E7',\r\n      'Montaj',\r\n      'Ta\u015F\u0131nabilirlik',\r\n      'Video g\u00FCvenli\u011Fi',\r\n      'Set de\u011Feri',\r\n      'Garanti / servis',\r\n      'Teknik veri g\u00FCveni'\r\n    ];\r\n\r\n    var roleCriteria = [\r\n      '\u00DCr\u00FCn tipi',\r\n      '\u00D6nerilen g\u00F6rev',\r\n      'G\u00FC\u00E7 seviyesi',\r\n      'Batarya / ta\u015F\u0131nabilirlik',\r\n      'Renk do\u011Frulu\u011Fu'\r\n    ];\r\n\r\n    return ''+\r\n      '<details class=\"gdx-r33-cr01-score-transparency' + layoutClass + '\" '+\r\n        'data-gdx-r33-cr01-score-transparency=\"1\" '+\r\n        'data-gdx-r33-cr01-layout=\"' + esc(layout) + '\" '+\r\n        'data-gdx-r33-cr01-purpose-score=\"' + esc(String(purpose)) + '\" '+\r\n        'data-gdx-r33-cr01-fp-score=\"' + esc(String(fp)) + '\" '+\r\n        'data-gdx-r33-cr01-role-score=\"' + esc(String(role)) + '\">'+\r\n        '<summary class=\"gdx-r33-cr01-score-summary\">'+\r\n          '<span class=\"gdx-r33-cr01-score-summary-main\">'+\r\n            '<i aria-hidden=\"true\">i</i>'+\r\n            '<span>Bu skorlar neyi g\u00F6steriyor, nas\u0131l hesaplan\u0131yor?</span>'+\r\n          '</span>'+\r\n          '<span class=\"gdx-r33-cr01-score-chevron\" aria-hidden=\"true\">\u2304</span>'+\r\n        '</summary>'+\r\n        '<div class=\"gdx-r33-cr01-score-content\">'+\r\n          '<p class=\"gdx-r33-cr01-score-lead\">'+\r\n            '<b>\u00DC\u00E7 skor ayn\u0131 \u015Feyi \u00F6l\u00E7mez.</b> Ama\u00E7 Uyumu teknik kullan\u0131m uygunlu\u011Funu, '+\r\n            'Genel F/P fiyat\u0131na kar\u015F\u0131l\u0131k sundu\u011Fu toplam de\u011Feri, Rol Uyumu ise \u00FCr\u00FCn\u00FCn '+\r\n            '\u00F6nerilen \u0131\u015F\u0131k g\u00F6revine ne kadar uygun oldu\u011Funu g\u00F6sterir.'+\r\n          '</p>'+\r\n          '<div class=\"gdx-r33-cr01-score-grid\">'+\r\n            '<section class=\"gdx-r33-cr01-score-meaning is-purpose\">'+\r\n              '<h5>Ama\u00E7 Uyumu</h5>'+\r\n              '<p>\u00DCr\u00FCn\u00FCn se\u00E7ti\u011Finiz kullan\u0131m amac\u0131 i\u00E7in ne kadar uygun oldu\u011Funu g\u00F6sterir. Kullan\u0131m amac\u0131 de\u011Fi\u015Fti\u011Finde de\u011Ferlendirme de g\u00FCncellenir.</p>'+\r\n              '<div class=\"gdx-r33-cr01-score-formula\"><b>De\u011Ferlendirme:</b> I\u015F\u0131k g\u00FCc\u00FC, renk do\u011Frulu\u011Fu, yumu\u015Fakl\u0131k ve kullan\u0131m ko\u015Fullar\u0131 birlikte incelenir.</div>'+\r\n              '<div class=\"gdx-r33-cr01-score-chips\">' + r33Cr01CriterionChips(purposeCriteria) + '</div>'+\r\n            '</section>'+\r\n            '<section class=\"gdx-r33-cr01-score-meaning is-fp\">'+\r\n              '<h5>Genel F/P</h5>'+\r\n              '<p>\u00DCr\u00FCn\u00FCn en ucuz olup olmad\u0131\u011F\u0131n\u0131 de\u011Fil, fiyat\u0131na kar\u015F\u0131l\u0131k sundu\u011Fu toplam teknik de\u011Feri g\u00F6sterir. Ama\u00E7 Uyumu puan\u0131ndan ba\u011F\u0131ms\u0131zd\u0131r.</p>'+\r\n              '<div class=\"gdx-r33-cr01-score-formula\"><b>De\u011Ferlendirme:</b> 14 teknik kriter birlikte incelenir. Stok durumu puana dahil edilmez.</div>'+\r\n              '<div class=\"gdx-r33-cr01-score-chips\">' + r33Cr01CriterionChips(fpCriteria) + '</div>'+\r\n            '</section>'+\r\n            '<section class=\"gdx-r33-cr01-score-meaning is-role\">'+\r\n              '<h5>Rol Uyumu</h5>'+\r\n              '<p>\u00DCr\u00FCn\u00FCn bu kurulumda \u00F6nerilen \u0131\u015F\u0131k g\u00F6revine ne kadar uygun oldu\u011Funu g\u00F6sterir.</p>'+\r\n              '<div class=\"gdx-r33-cr01-score-formula\"><b>De\u011Ferlendirme:</b> \u00DCr\u00FCn tipi, g\u00FC\u00E7 seviyesi, ta\u015F\u0131nabilirlik ve renk do\u011Frulu\u011Fu birlikte incelenir.</div>'+\r\n              '<div class=\"gdx-r33-cr01-score-chips\">' + r33Cr01CriterionChips(roleCriteria) + '</div>'+\r\n            '</section>'+\r\n          '</div>'+\r\n          '<div class=\"gdx-r33-cr01-score-current\">'+\r\n            '<b>Bu \u00FCr\u00FCn\u00FC nas\u0131l de\u011Ferlendirelim?</b>'+\r\n            '<p>'+\r\n              '<strong>' + esc(String(purpose)) + '/100 Ama\u00E7 Uyumu:</strong> ' + esc(r33Cr01ScoreBand(purpose, 'purpose')) + '. '+\r\n              '<strong>' + esc(String(fp)) + '/100 Genel F/P:</strong> ' + esc(r33Cr01ScoreBand(fp, 'fp')) + '; en ucuz \u00FCr\u00FCn oldu\u011Fu anlam\u0131na gelmez. '+\r\n              '<strong>' + esc(String(role)) + '/100 Rol Uyumu:</strong> ' + esc(r33Cr01ScoreBand(role, 'role')) + '.'+\r\n            '</p>'+\r\n          '</div>'+\r\n          '<p class=\"gdx-r33-cr01-score-rank-note\">'+\r\n            '<b>\u00D6neri s\u0131ras\u0131 yaln\u0131zca bu \u00FC\u00E7 puan\u0131n ortalamas\u0131na g\u00F6re belirlenmez.</b> Se\u00E7ili kullan\u0131m amac\u0131 \u00F6nceliklidir; Genel F/P ve Rol Uyumu karar\u0131 destekler.'+\r\n          '</p>'+\r\n        '</div>'+\r\n      '</details>';\r\n  }\r\n\r\n  function productDataBadgesHtml(row, mode) {\r\n    row = row || {};\r\n    var tags = [];\r\n    if (row.vendor) tags.push(row.vendor);\r\n    if (row.familyLabel) tags.push(row.familyLabel);\r\n    if (row.power) tags.push(String(row.power) + 'W');\r\n    if (row.cri) tags.push('CRI ' + row.cri + '+');\r\n    if (hasControl(row.product || row)) tags.push('Kontrol');\r\n    if (hasBattery(row.product || row)) tags.push('Batarya');\r\n\r\n    var title = mode === 'setup' ? '\u00DCr\u00FCn \u00F6zeti' : '\u00D6ne \u00E7\u0131kan \u00F6zellikler';\r\n\r\n    return ''+\r\n      '<aside class=\"gdx-r11-modal-data-card\" data-gdx-r11-modal-data-badges=\"1\">'+\r\n        '<h4>' + esc(title) + '</h4>'+\r\n        '<div class=\"gdx-r11-modal-data-tags\">' + tags.slice(0, 7).map(function(t){ return '<span>' + esc(t) + '</span>'; }).join('') + '</div>'+\r\n        '<div class=\"gdx-r11-modal-data-lines gdx-r11-modal-score-bars\" data-gdx-r11-modal-score-bars=\"1\">'+\r\n          purposeFpRoleScoreBarHtml('Ama\u00E7 Uyumu', row.purposeScore, 'Senaryoya g\u00F6re teknik uygunluk.', 'purpose', 'data-gdx-r11-modal-score-bar=\"purpose\"')+\r\n          purposeFpRoleScoreBarHtml('Genel F/P', row.fpScore, 'Genel F/P; fiyat, teknik \u00F6zellikler ve kullan\u0131m dengesini 14 kriter \u00FCzerinden de\u011Ferlendirir.', 'fp', 'data-gdx-r11-modal-score-bar=\"fp\"')+\r\n          purposeFpRoleScoreBarHtml('Rol Uyumu', row.roleScore, '\u00DCr\u00FCn\u00FCn \u00F6nerilen \u0131\u015F\u0131k g\u00F6revine ne kadar uygun oldu\u011Funu g\u00F6sterir.', 'role', 'data-gdx-r11-modal-score-bar=\"role\"')+\r\n        '</div>'+\r\n        r33Cr01ScoreTransparencyHtml(row, mode, 'mobile-inline')+\r\n        '<p>' + esc(mode === 'setup' ? 'Kurulum \u00F6nerisi; \u00FCr\u00FCn tipi, g\u00FC\u00E7 seviyesi ve se\u00E7ili kullan\u0131m amac\u0131na g\u00F6re haz\u0131rlan\u0131r.' : 'Puanlar, \u00FCr\u00FCn \u00F6zellikleri ve se\u00E7ili kullan\u0131m senaryosu birlikte de\u011Ferlendirilerek hesaplan\u0131r.') + '</p>'+\r\n      '</aside>';\r\n  }\r\n\r\n  function debugPanelV4R33CR01ScoreTransparency() {\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var setupModal = D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var detailVariants = reasonModal\r\n      ? Array.prototype.slice.call(\r\n          reasonModal.querySelectorAll('[data-gdx-r33-cr01-score-transparency=\"1\"]')\r\n        )\r\n      : [];\r\n    var visibleDetailVariants = detailVariants.filter(function(node){\r\n      if (!W.getComputedStyle) return true;\r\n      var style = W.getComputedStyle(node);\r\n      return style.display !== 'none' && style.visibility !== 'hidden';\r\n    });\r\n    var details = visibleDetailVariants[0] || null;\r\n    var detailsCount = visibleDetailVariants.length;\r\n    var totalDetailsCount = detailVariants.length;\r\n    var meanings = details\r\n      ? details.querySelectorAll('.gdx-r33-cr01-score-meaning')\r\n      : [];\r\n    var card = reasonModal\r\n      ? reasonModal.querySelector('[data-gdx-r11-modal-data-badges=\"1\"]')\r\n      : null;\r\n    var media = reasonModal\r\n      ? reasonModal.querySelector('.gdx-r11-modal-media.is-slider')\r\n      : null;\r\n    var sliderFrame = media\r\n      ? media.querySelector('.gdx-r11-modal-slider-frame')\r\n      : null;\r\n\r\n    function rectOf(node) {\r\n      if (!node || !node.getBoundingClientRect) return null;\r\n      var rect = node.getBoundingClientRect();\r\n      return {\r\n        width: Math.round(rect.width * 100) / 100,\r\n        height: Math.round(rect.height * 100) / 100,\r\n        top: Math.round(rect.top * 100) / 100,\r\n        left: Math.round(rect.left * 100) / 100,\r\n        right: Math.round(rect.right * 100) / 100,\r\n        bottom: Math.round(rect.bottom * 100) / 100\r\n      };\r\n    }\r\n\r\n    function scoreFromBar(type) {\r\n      var bar = card\r\n        ? card.querySelector('[data-gdx-r11-modal-score-bar=\"' + type + '\"]')\r\n        : null;\r\n      var value = bar ? Number(bar.getAttribute('data-score') || 0) : NaN;\r\n      return isFinite(value) ? value : NaN;\r\n    }\r\n\r\n    function scoreFromDetails(name) {\r\n      var value = details\r\n        ? Number(details.getAttribute('data-gdx-r33-cr01-' + name + '-score') || 0)\r\n        : NaN;\r\n      return isFinite(value) ? value : NaN;\r\n    }\r\n\r\n    function near(a, b) {\r\n      return isFinite(a) && isFinite(b) && Math.abs(Number(a) - Number(b)) <= 1;\r\n    }\r\n\r\n    var checks = {\r\n      installed: true,\r\n      versionPresent: !!R33_CR01_SCORE_TRANSPARENCY_VERSION,\r\n      reasonModalOpen: !!reasonModal,\r\n      disclosureCountExactly1: detailsCount === 1,\r\n      disclosureVariantCountExactly2: totalDetailsCount === 2,\r\n      dataCardResolvedFromReasonModal: !!card,\r\n      nativeDetailsElement: !!(details && String(details.tagName).toLowerCase() === 'details'),\r\n      desktopUsesFullWidthDisclosure: W.innerWidth <= 760 || !!(\r\n        details &&\r\n        details.getAttribute('data-gdx-r33-cr01-layout') === 'desktop-wide'\r\n      ),\r\n      mobileUsesInlineDisclosure: W.innerWidth > 760 || !!(\r\n        details &&\r\n        details.getAttribute('data-gdx-r33-cr01-layout') === 'mobile-inline'\r\n      ),\r\n      summaryPresent: !!(details && details.querySelector('summary')),\r\n      meaningCardsExactly3: meanings.length === 3,\r\n      purposeExplanationPresent: !!(details && details.querySelector('.gdx-r33-cr01-score-meaning.is-purpose')),\r\n      fpExplanationPresent: !!(details && details.querySelector('.gdx-r33-cr01-score-meaning.is-fp')),\r\n      roleExplanationPresent: !!(details && details.querySelector('.gdx-r33-cr01-score-meaning.is-role')),\r\n      purposeScoreMatchesVisibleBar: near(scoreFromDetails('purpose'), scoreFromBar('purpose')),\r\n      fpScoreMatchesVisibleBar: near(scoreFromDetails('fp'), scoreFromBar('fp')),\r\n      roleScoreMatchesVisibleBar: near(scoreFromDetails('role'), scoreFromBar('role')),\r\n      setupModalHasNoScoreTransparencyDisclosure: !setupModal || !setupModal.querySelector('[data-gdx-r33-cr01-score-transparency=\"1\"]'),\r\n      desktopMediaUsesStartAlignment: W.innerWidth <= 760 || !!(\r\n        media &&\r\n        W.getComputedStyle &&\r\n        W.getComputedStyle(media).alignItems === 'start'\r\n      ),\r\n      desktopProductVisualHeightCapped: W.innerWidth <= 760 || !!(\r\n        sliderFrame &&\r\n        rectOf(sliderFrame) &&\r\n        rectOf(sliderFrame).height <= 542\r\n      ),\r\n      desktopProductVisualNotStretchedToOpenDisclosure: W.innerWidth <= 760 || !details || !details.open || !!(\r\n        media &&\r\n        card &&\r\n        sliderFrame &&\r\n        details.parentElement === media &&\r\n        !card.contains(details) &&\r\n        rectOf(sliderFrame) &&\r\n        rectOf(card) &&\r\n        rectOf(sliderFrame).height <= 542 &&\r\n        rectOf(sliderFrame).height < rectOf(details).height\r\n      ),\r\n      desktopDisclosureSpansBothColumns: W.innerWidth <= 760 || !!(\r\n        media &&\r\n        details &&\r\n        rectOf(media) &&\r\n        rectOf(details) &&\r\n        Math.abs(rectOf(media).left - rectOf(details).left) <= 2 &&\r\n        Math.abs(rectOf(media).width - rectOf(details).width) <= 4\r\n      ),\r\n      desktopDisclosureStartsBelowMediaRow: W.innerWidth <= 760 || !!(\r\n        details &&\r\n        sliderFrame &&\r\n        card &&\r\n        rectOf(details) &&\r\n        rectOf(sliderFrame) &&\r\n        rectOf(card) &&\r\n        rectOf(details).top >= Math.max(rectOf(sliderFrame).bottom, rectOf(card).bottom) - 4\r\n      ),\r\n      mobileProductVisualRulePreserved: W.innerWidth > 760 || !!(\r\n        sliderFrame &&\r\n        rectOf(sliderFrame) &&\r\n        rectOf(sliderFrame).height >= 210\r\n      ),\r\n      noNewModalOwnerByPhase: true,\r\n      noMutationObserverByPhase: true,\r\n      noIntervalByPhase: true,\r\n      noProductMutationByPhase: true,\r\n      noRankingMutationByPhase: true,\r\n      noScoreMutationByPhase: true,\r\n      noCommerceCartNoraShareMutationByPhase: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){\r\n      return checks[key] !== true;\r\n    });\r\n\r\n    return {\r\n      phase: 'PANEL-V4-R33-CR01-SCORE-TRANSPARENCY-LIVE-AUDIT',\r\n      version: R33_CR01_SCORE_TRANSPARENCY_VERSION,\r\n      ok: failed.length === 0,\r\n      checks: checks,\r\n      failed: failed,\r\n      diagnostics: {\r\n        detailsOpen: !!(details && details.open),\r\n        activeDetailsCount: detailsCount,\r\n        totalDetailsCount: totalDetailsCount,\r\n        activeLayout: details\r\n          ? details.getAttribute('data-gdx-r33-cr01-layout')\r\n          : '',\r\n        meaningCardCount: meanings.length,\r\n        visibleScores: {\r\n          purpose: scoreFromBar('purpose'),\r\n          fp: scoreFromBar('fp'),\r\n          role: scoreFromBar('role')\r\n        },\r\n        disclosureScores: {\r\n          purpose: scoreFromDetails('purpose'),\r\n          fp: scoreFromDetails('fp'),\r\n          role: scoreFromDetails('role')\r\n        },\r\n        geometry: {\r\n          viewportWidth: W.innerWidth,\r\n          desktop: W.innerWidth > 760,\r\n          mediaAlignItems: media && W.getComputedStyle\r\n            ? W.getComputedStyle(media).alignItems\r\n            : '',\r\n          sliderFrameRect: rectOf(sliderFrame),\r\n          dataCardRect: rectOf(card),\r\n          disclosureRect: rectOf(details),\r\n          mediaRect: rectOf(media),\r\n          disclosureParentIsMedia: !!(details && media && details.parentElement === media),\r\n          disclosureInsideDataCard: !!(details && card && card.contains(details)),\r\n          dataCardResolved: !!card,\r\n          heightDifference: sliderFrame && card && rectOf(sliderFrame) && rectOf(card)\r\n            ? Math.round((rectOf(card).height - rectOf(sliderFrame).height) * 100) / 100\r\n            : null\r\n        }\r\n      }\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4R33CR01ScoreTransparency =\r\n    debugPanelV4R33CR01ScoreTransparency;\r\n\r\n\r\n  function safeNarrativeText(value) {\r\n    var t = String(value == null ? '' : value).replace(/\\s+/g, ' ').trim();\r\n    if (/stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/i.test(t)) return '';\r\n    return t;\r\n  }\r\n\r\n  function uniqueCopyList(list, max) {\r\n    var seen = {};\r\n    var out = [];\r\n    (list || []).forEach(function (item) {\r\n      var t = safeNarrativeText(item);\r\n      if (!t) return;\r\n      var key = lower(t).replace(/[^a-z0-9\u011F\u00FC\u015F\u00F6\u00E7\u0131\u0130\u011E\u00DC\u015E\u00D6\u00C7]+/g, ' ').trim();\r\n      if (!key || seen[key]) return;\r\n      seen[key] = true;\r\n      out.push(t);\r\n    });\r\n    return out.slice(0, Number(max || 4));\r\n  }\r\n\r\n  function personaIntentBase(sub) {\r\n    sub = sub || currentSub();\r\n    var intent = String(sub.intent || sub.key || '');\r\n    if (/product_white|product_video|soft_product|budget_product/.test(intent)) {\r\n      return {\r\n        title: '\u00DCr\u00FCn, katalog, reels ve yak\u0131n plan \u00E7ekimlerinde \u0131\u015F\u0131k kontrol\u00FCn\u00FC teknik veriyle okumak isteyen kullan\u0131c\u0131lar i\u00E7in uygundur.',\r\n        bullets: [\r\n          '\u00DCr\u00FCn rengi, y\u00FCzey parlamas\u0131 ve beyaz fon tutarl\u0131l\u0131\u011F\u0131na \u00F6nem veren e-ticaret ekipleri.',\r\n          'Masa \u00FCst\u00FC \u00FCr\u00FCn videosu, pazar yeri g\u00F6rseli veya k\u0131sa \u00FCr\u00FCn reels i\u00E7eri\u011Fi haz\u0131rlayan kullan\u0131c\u0131lar.',\r\n          'CRI, CCT ve yumu\u015Fak \u0131\u015F\u0131k karakterini fiyat\u0131n \u00F6n\u00FCne alarak karar vermek isteyenler.'\r\n        ],\r\n        setup: [\r\n          'Masa \u00FCst\u00FC \u00FCr\u00FCn, katalog ve yak\u0131n plan \u00FCr\u00FCn anlat\u0131m\u0131 kuran kullan\u0131c\u0131lar.',\r\n          'Parlama kontrol\u00FC ve d\u00FCzenli beyaz \u0131\u015F\u0131k isteyen k\u00FC\u00E7\u00FCk st\u00FCdyo ekipleri.'\r\n        ]\r\n      };\r\n    }\r\n    if (/clinical|dental|beauty/.test(intent)) {\r\n      return {\r\n        title: 'Cilt tonu, do\u011Fal renk ve g\u00FCvenilir yak\u0131n plan sonu\u00E7lar\u0131 gereken profesyonel \u00E7ekimler i\u00E7in uygundur.',\r\n        bullets: [\r\n          'Klinik, estetik, dental, makyaj veya bak\u0131m i\u00E7eriklerinde do\u011Fru renk okumak isteyen ekipler.',\r\n          'Y\u00FCz ve yak\u0131n plan \u00E7ekimlerinde yumu\u015Fak g\u00F6lge ve tutarl\u0131 Kelvin arayan kullan\u0131c\u0131lar.',\r\n          'Teknik veriye dayal\u0131, kontroll\u00FC ve abart\u0131s\u0131z \u0131\u015F\u0131k se\u00E7imi yapmak isteyen profesyoneller.'\r\n        ],\r\n        setup: [\r\n          'Yak\u0131n plan y\u00FCz, cilt, dental ve bak\u0131m \u00E7ekimleri yapan kullan\u0131c\u0131lar.',\r\n          'Yumu\u015Fak, kontroll\u00FC ve g\u00FCvenilir beyaz \u0131\u015F\u0131k d\u00FCzeni isteyen ekipler.'\r\n        ]\r\n      };\r\n    }\r\n    if (/rgb|creative_bg|background|brand|music/.test(intent)) {\r\n      return {\r\n        title: 'Renkli fon, marka rengi, atmosfer ve yarat\u0131c\u0131 sahne kurmak isteyen i\u00E7erik \u00FCreticileri i\u00E7in uygundur.',\r\n        bullets: [\r\n          'RGB, HSI, efekt veya renkli arka planla i\u00E7erik dilini g\u00FC\u00E7lendiren kreatif ekipler.',\r\n          'Klip, sosyal medya, canl\u0131 yay\u0131n veya marka rengi fon kurulumlar\u0131 yapan kullan\u0131c\u0131lar.',\r\n          'Ana beyaz \u0131\u015F\u0131k d\u0131\u015F\u0131nda fon, rim, efekt ve sahne atmosferi rol\u00FCn\u00FC planlamak isteyenler.'\r\n        ],\r\n        setup: [\r\n          'Arka plan, renkli ambiyans, rim light veya efekt \u0131\u015F\u0131\u011F\u0131 kuran kullan\u0131c\u0131lar.',\r\n          'Marka rengi ve atmosferi ayr\u0131 bir \u0131\u015F\u0131k rol\u00FC olarak y\u00F6neten i\u00E7erik ekipleri.'\r\n        ]\r\n      };\r\n    }\r\n    if (/mobile|battery|travel/.test(intent)) {\r\n      return {\r\n        title: 'Ta\u015F\u0131nabilir set, d\u0131\u015F \u00E7ekim ve h\u0131zl\u0131 kurulum ihtiyac\u0131 olan kullan\u0131c\u0131lar i\u00E7in uygundur.',\r\n        bullets: [\r\n          'Saha r\u00F6portaj\u0131, seyahat i\u00E7eri\u011Fi veya h\u0131zl\u0131 kurulan k\u00FC\u00E7\u00FCk setlerle \u00E7al\u0131\u015Fan \u00FCreticiler.',\r\n          'Pratik ta\u015F\u0131ma, batarya/V-Mount/NP-F uyumu ve g\u00FCvenli ana \u0131\u015F\u0131k rol\u00FCn\u00FC birlikte de\u011Ferlendirenler.',\r\n          'Teknik uyumu, mobil kullan\u0131m kolayl\u0131\u011F\u0131 ve fiyat/de\u011Fer dengesini beraber okumak isteyenler.'\r\n        ],\r\n        setup: [\r\n          'D\u0131\u015F \u00E7ekim, seyahat veya h\u0131zl\u0131 set kurulumunda \u00E7al\u0131\u015Fan kullan\u0131c\u0131lar.',\r\n          'Yak\u0131n/orta mesafede ta\u015F\u0131nabilir ana \u0131\u015F\u0131k veya destek \u0131\u015F\u0131\u011F\u0131 arayan ekipler.'\r\n        ]\r\n      };\r\n    }\r\n    if (/studio|fill|document|high_power/.test(intent)) {\r\n      return {\r\n        title: 'St\u00FCdyo d\u00FCzeninde destek, dolgu veya y\u00FCksek g\u00FC\u00E7 ihtiyac\u0131n\u0131 teknik veriye g\u00F6re se\u00E7mek isteyenler i\u00E7in uygundur.',\r\n        bullets: [\r\n          '\u00C7ok \u0131\u015F\u0131kl\u0131 st\u00FCdyo, foto\u011Fraf destek \u0131\u015F\u0131\u011F\u0131 veya teknik belge \u00E7ekimi yapan ekipler.',\r\n          'G\u00FC\u00E7 rezervi, kontrol, CCT ve renk do\u011Frulu\u011Funu birlikte de\u011Ferlendiren profesyoneller.',\r\n          'Ana \u0131\u015F\u0131k, fill veya destek \u0131\u015F\u0131\u011F\u0131 rol\u00FCn\u00FC \u00FCr\u00FCn ailesine g\u00F6re ay\u0131rmak isteyen kullan\u0131c\u0131lar.'\r\n        ],\r\n        setup: [\r\n          '\u00C7ok \u0131\u015F\u0131kl\u0131 kurulumda ana \u0131\u015F\u0131\u011F\u0131 desteklemek veya fill rol\u00FC eklemek isteyen ekipler.',\r\n          'Daha geni\u015F alan, daha kontroll\u00FC konum ve teknik \u0131\u015F\u0131k rol\u00FC planlayan kullan\u0131c\u0131lar.'\r\n        ]\r\n      };\r\n    }\r\n    if (/budget/.test(intent)) {\r\n      return {\r\n        title: '\u0130lk panel LED se\u00E7imini daha kontroll\u00FC yapmak ve b\u00FCt\u00E7eyi teknik ihtiya\u00E7la dengelemek isteyen kullan\u0131c\u0131lar i\u00E7in uygundur.',\r\n        bullets: [\r\n          'Ev st\u00FCdyo, ba\u015Flang\u0131\u00E7 i\u00E7erik \u00FCretimi veya k\u00FC\u00E7\u00FCk \u00FCr\u00FCn \u0131\u015F\u0131\u011F\u0131 kuran kullan\u0131c\u0131lar.',\r\n          'Fiyat/de\u011Fer dengesini \u00F6nemserken renk, g\u00FC\u00E7 ve kullan\u0131m kolayl\u0131\u011F\u0131n\u0131 da g\u00F6rmek isteyenler.',\r\n          'Tek panelle temel ana \u0131\u015F\u0131k veya \u00FCr\u00FCn \u0131\u015F\u0131\u011F\u0131 ihtiyac\u0131n\u0131 \u00E7\u00F6zmek isteyen ba\u015Flang\u0131\u00E7 ekipleri.'\r\n        ],\r\n        setup: [\r\n          'Ev st\u00FCdyo, masa ba\u015F\u0131 anlat\u0131m veya k\u00FC\u00E7\u00FCk \u00FCr\u00FCn \u00E7ekimi kuran ba\u015Flang\u0131\u00E7 kullan\u0131c\u0131lar\u0131.',\r\n          'Yak\u0131n mesafede sade, anla\u015F\u0131l\u0131r ve kontroll\u00FC kurulum isteyenler.'\r\n        ]\r\n      };\r\n    }\r\n    return {\r\n      title: '\u0130\u00E7erik, e\u011Fitim, webinar ve y\u00FCz ayd\u0131nlatmas\u0131nda dengeli ana \u0131\u015F\u0131k arayan kullan\u0131c\u0131lar i\u00E7in uygundur.',\r\n      bullets: [\r\n        'YouTube, Reels, podcast, webinar veya masa ba\u015F\u0131 anlat\u0131m i\u00E7eri\u011Fi \u00FCreten kullan\u0131c\u0131lar.',\r\n        'Y\u00FCz/\u00FCr\u00FCn ayd\u0131nlatmas\u0131nda teknik uyumu ve fiyat/de\u011Fer dengesini ayr\u0131 ayr\u0131 g\u00F6rmek isteyenler.',\r\n        'Kurulumu kolay, okunabilir ve g\u00FCvenli beyaz \u0131\u015F\u0131k karakteri arayan i\u00E7erik \u00FCreticileri.'\r\n      ],\r\n      setup: [\r\n        'Masa ba\u015F\u0131 anlat\u0131m, webinar, podcast ve tek ki\u015Fi i\u00E7erik kuran kullan\u0131c\u0131lar.',\r\n        'Y\u00FCz/\u00FCr\u00FCn \u00FCzerinde dengeli ana \u0131\u015F\u0131k veya yumu\u015Fak fill rol\u00FC isteyenler.'\r\n      ]\r\n    };\r\n  }\r\n\r\n  function personaFamilyLine(row) {\r\n    row = row || {};\r\n    var f = row.family;\r\n    if (f === 'rgb') return 'RGB/FX karakteri nedeniyle fon, atmosfer, marka rengi veya yarat\u0131c\u0131 destek \u0131\u015F\u0131\u011F\u0131 isteyen kullan\u0131c\u0131lar i\u00E7in daha anlaml\u0131d\u0131r.';\r\n    if (f === 'bicolor') return 'Bi-Color yap\u0131s\u0131; y\u00FCz, \u00FCr\u00FCn, e\u011Fitim ve klinik \u00E7ekimlerde renk s\u0131cakl\u0131\u011F\u0131n\u0131 ayarlamak isteyen kullan\u0131c\u0131lar i\u00E7in uygundur.';\r\n    if (f === 'daylight') return 'Daylight yap\u0131s\u0131 sabit beyaz \u0131\u015F\u0131k ve sade kurulum arayan kullan\u0131c\u0131lar i\u00E7in daha anla\u015F\u0131l\u0131r bir tercihtir.';\r\n    return 'Panel LED karakteri, se\u00E7ili kullan\u0131mda ana \u0131\u015F\u0131k veya destek \u0131\u015F\u0131\u011F\u0131 rol\u00FCn\u00FC daha kolay planlamak isteyen kullan\u0131c\u0131lar i\u00E7in okunur.';\r\n  }\r\n\r\n  function personaPowerLine(row) {\r\n    var p = Number(row && row.power || 0);\r\n    if (p >= 180) return 'Y\u00FCksek g\u00FC\u00E7 seviyesi; daha geni\u015F alan, daha uzak mesafe veya profesyonel kullan\u0131m i\u00E7in avantaj sa\u011Flar.';\r\n    if (p >= 100) return 'Orta/y\u00FCksek g\u00FC\u00E7 seviyesi; masa ba\u015F\u0131 i\u00E7erik ile k\u00FC\u00E7\u00FCk st\u00FCdyo aras\u0131nda esnek kullan\u0131m arayanlara uygundur.';\r\n    if (p > 0) return 'Kompakt g\u00FC\u00E7 seviyesi; yak\u0131n mesafe, masa ba\u015F\u0131 i\u00E7erik ve ba\u015Flang\u0131\u00E7 kurulumlar\u0131nda kontroll\u00FC kullan\u0131m i\u00E7in uygundur.';\r\n    return 'G\u00FC\u00E7 seviyesi, \u00F6nerilen g\u00F6rev ve \u00E7al\u0131\u015Fma mesafesiyle birlikte de\u011Ferlendirilir.';\r\n  }\r\n\r\n  function personaRankLine(row) {\r\n    if (row && row.rank === 1) return 'Bu \u00FCr\u00FCn, se\u00E7ili alt ama\u00E7 i\u00E7in ana \u00F6neri olarak dengeli ve g\u00FCvenli ilk aday rol\u00FCndedir.';\r\n    if (row && row.rank === 2) return 'Ana \u00F6neriden farkl\u0131 g\u00FC\u00E7l\u00FC y\u00F6nlere sahip bir alternatif arayanlar i\u00E7in uygundur.';\r\n    return 'Bu \u00FCr\u00FCn, belirli ko\u015Fullarda de\u011Ferlendirilebilecek senaryo alternatifi arayan kullan\u0131c\u0131lar i\u00E7in ek se\u00E7enek sunar.';\r\n  }\r\n\r\n  function personaFitHtml(row, mode) {\r\n    row = row || {};\r\n    mode = mode || 'reason';\r\n    var sub = row.sub || currentSub();\r\n    var base = personaIntentBase(sub);\r\n    var bullets = mode === 'setup'\r\n      ? uniqueCopyList([].concat(base.setup || [], [personaFamilyLine(row), personaPowerLine(row)]), 3)\r\n      : uniqueCopyList([base.title].concat(base.bullets || [], [personaRankLine(row), personaFamilyLine(row), personaPowerLine(row)]), 5);\r\n    var title = mode === 'setup' ? 'Bu kurulum kimler i\u00E7in?' : 'Kimler i\u00E7in uygun?';\r\n    var intro = mode === 'setup'\r\n      ? 'Kullan\u0131m profili, \u00E7ekim senaryosu ve \u00E7al\u0131\u015Fma mesafesine g\u00F6re \u00F6zetlenir.'\r\n      : 'Bu \u00FCr\u00FCn\u00FCn en uygun oldu\u011Fu kullan\u0131c\u0131 ve \u00E7ekim ihtiya\u00E7lar\u0131 a\u015Fa\u011F\u0131da \u00F6zetlenir.';\r\n    return ''+\r\n      '<article class=\"gdx-r11-persona-fit ' + (mode === 'setup' ? 'is-setup' : 'is-reason') + '\" data-gdx-r11-persona-fit=\"1\" data-gdx-r11-persona-mode=\"' + esc(mode) + '\">'+\r\n        '<div class=\"gdx-r11-persona-fit-head\"><span>' + esc(mode === 'setup' ? 'Kullan\u0131m Profili' : 'M\u00FC\u015Fteri Profili') + '</span><h4>' + esc(title) + '</h4></div>'+\r\n        '<p>' + esc(intro) + '</p>'+\r\n        '<ul>' + bullets.map(function (b) { return '<li data-gdx-r11-persona-item=\"1\">' + esc(b) + '</li>'; }).join('') + '</ul>'+\r\n      '</article>';\r\n  }\r\n\r\n\r\n  var P61_CRITERION_COPY = {\r\n    whitePower: {\r\n      label: 'I\u015F\u0131k g\u00FCc\u00FC / beyaz \u0131\u015F\u0131k',\r\n      short: 'G\u00FC\u00E7',\r\n      meaning: '\u00FCr\u00FCn\u00FCn se\u00E7ili \u00E7al\u0131\u015Fma mesafesinde yeterli beyaz \u0131\u015F\u0131k \u00FCretip \u00FCretemedi\u011Fini g\u00F6sterir',\r\n      productLine: 'G\u00FC\u00E7 ve beyaz \u0131\u015F\u0131k performans\u0131 birlikte de\u011Ferlendirilir.'\r\n    },\r\n    colorAccuracy: {\r\n      label: 'Renk do\u011Frulu\u011Fu',\r\n      short: 'Renk',\r\n      meaning: 'cilt tonu, \u00FCr\u00FCn rengi ve beyaz \u0131\u015F\u0131k g\u00FCveni i\u00E7in kritik veridir',\r\n      productLine: 'CRI/TLCI veya \u00FCr\u00FCn verisinden okunan renk g\u00FCveni burada yorumlan\u0131r.'\r\n    },\r\n    cct: {\r\n      label: 'CCT / Kelvin esnekli\u011Fi',\r\n      short: 'Kelvin',\r\n      meaning: 'ortam \u0131\u015F\u0131\u011F\u0131na ve \u00E7ekim diline s\u0131cak-so\u011Fuk uyum kabiliyetini anlat\u0131r',\r\n      productLine: 'Bi-Color veya CCT aral\u0131\u011F\u0131 olan \u00FCr\u00FCnler bu ba\u015Fl\u0131kta daha rahat okunur.'\r\n    },\r\n    softness: {\r\n      label: 'I\u015F\u0131k yumu\u015Fakl\u0131\u011F\u0131',\r\n      short: 'Yumu\u015Fakl\u0131k',\r\n      meaning: 'y\u00FCz, \u00FCr\u00FCn veya yak\u0131n plan \u00E7ekimde g\u00F6lge ge\u00E7i\u015Finin kontroll\u00FC olup olmad\u0131\u011F\u0131n\u0131 anlat\u0131r',\r\n      productLine: 'Panel boyutu ve \u00E7al\u0131\u015Fma mesafesi birlikte de\u011Ferlendirilir.'\r\n    },\r\n    rgbFx: {\r\n      label: 'RGB / HSI / FX',\r\n      short: 'RGB/FX',\r\n      meaning: 'renkli fon, atmosfer, efekt ve kreatif sahne kabiliyetini \u00F6l\u00E7er',\r\n      productLine: 'RGB ailesi ve efekt sinyalleri bu alanda daha y\u00FCksek de\u011Fer \u00FCretir.'\r\n    },\r\n    portability: {\r\n      label: 'Ta\u015F\u0131nabilirlik / mobil g\u00FC\u00E7',\r\n      short: 'Mobilite',\r\n      meaning: 'saha, seyahat, batarya ve h\u0131zl\u0131 kurulum ihtiyac\u0131ndaki pratikli\u011Fi anlat\u0131r',\r\n      productLine: 'Batarya, V-Mount, NP-F veya kompakt kullan\u0131m sinyalleri bu kriterde okunur.'\r\n    },\r\n    control: {\r\n      label: 'Kontrol / ba\u011Flant\u0131',\r\n      short: 'Kontrol',\r\n      meaning: 'APP, DMX, Bluetooth, kumanda veya set i\u00E7inde ayar kolayl\u0131\u011F\u0131 sa\u011Flar',\r\n      productLine: 'Kontrol sinyali \u00F6zellikle st\u00FCdyo, RGB ve \u00E7ok \u0131\u015F\u0131kl\u0131 kurulumlarda \u00F6nem kazan\u0131r.'\r\n    },\r\n    quietStability: {\r\n      label: 'Video kullan\u0131m g\u00FCveni',\r\n      short: 'Video g\u00FCveni',\r\n      meaning: 'flicker, fan, sessizlik ve canl\u0131 kay\u0131t g\u00FCveni gibi riskleri s\u0131n\u0131rl\u0131 \u015Fekilde okur',\r\n      productLine: '\u00DCr\u00FCn verisi eksikse de\u011Ferlendirme temkinli yap\u0131l\u0131r.'\r\n    },\r\n    price: {\r\n      label: 'Fiyat / de\u011Fer etkisi',\r\n      short: 'Fiyat',\r\n      meaning: 'ama\u00E7 skorunda fiyat\u0131n karar etkisini s\u0131n\u0131rl\u0131 ve kullan\u0131m ba\u011Flam\u0131na g\u00F6re ta\u015F\u0131r',\r\n      productLine: 'Bu ba\u015Fl\u0131k ama\u00E7 uyumunu tek ba\u015F\u0131na belirlemez; F/P skoru ayr\u0131ca 14 teknik kriter \u00FCzerinden hesaplan\u0131r.'\r\n    }\r\n  };\r\n\r\n  function p61CriterionMeta(key) {\r\n    return P61_CRITERION_COPY[key] || { label: key, short: key, meaning: 'se\u00E7ili alt ama\u00E7 i\u00E7in teknik sinyal olarak okunur', productLine: 'Bu kriter \u00FCr\u00FCn verisi ile birlikte de\u011Ferlendirilir.' };\r\n  }\r\n\r\n  function purposeWeightItems(row, limit) {\r\n    row = row || {};\r\n    var sub = row.sub || currentSub();\r\n    var raw = (row.scoreSource && row.scoreSource.purposeWeights) ||\r\n      P61_PURPOSE_WEIGHTS[sub && sub.key] ||\r\n      P61_PURPOSE_WEIGHTS.content_creator_face_key || {};\r\n    var weights = normalizeWeightRow(raw);\r\n    var signals = (row.scoreSource && row.scoreSource.signals) || {};\r\n    return Object.keys(weights).map(function(key){\r\n      var meta = p61CriterionMeta(key);\r\n      return {\r\n        key: key,\r\n        label: meta.label,\r\n        short: meta.short,\r\n        meaning: meta.meaning,\r\n        productLine: meta.productLine,\r\n        weight: round1(weights[key] || 0),\r\n        signal: round0(signals[key] !== undefined ? Number(signals[key]) : 0)\r\n      };\r\n    }).sort(function(a,b){ return Number(b.weight || 0) - Number(a.weight || 0); }).slice(0, Number(limit || 5));\r\n  }\r\n\r\n  function purposeWeightLead(row) {\r\n    row = row || {};\r\n    var sub = row.sub || currentSub();\r\n    var items = purposeWeightItems(row, 3);\r\n    var names = items.map(function(item){ return item.short || item.label; }).join(', ');\r\n    return 'Bu \u00F6neride en belirleyici kriterler ' + names + ' ba\u015Fl\u0131klar\u0131d\u0131r.';\r\n  }\r\n\r\n  function purposeWeightNarrativeHtml(row) {\r\n    row = row || {};\r\n    var sub = row.sub || currentSub();\r\n    var items = purposeWeightItems(row, 5);\r\n    var lead = purposeWeightLead(row);\r\n    return ''+\r\n      '<article class=\"gdx-r11-purpose-weight-narrative\" data-gdx-r11-purpose-weight-narrative=\"1\">'+\r\n        '<div class=\"gdx-r11-purpose-weight-head\"><span>Karar kriterleri</span><h4>Bu \u00F6neride hangi kriterler \u00F6ne \u00E7\u0131k\u0131yor?</h4></div>'+ \r\n        '<p data-gdx-r11-purpose-weight-lead=\"1\">' + esc(lead) + '</p>'+ \r\n        '<div class=\"gdx-r11-purpose-weight-list\">' + items.map(function(item){\r\n          return ''+\r\n            '<div class=\"gdx-r11-purpose-weight-item\" data-gdx-r11-purpose-weight-item=\"1\" data-weight-key=\"' + esc(item.key) + '\" data-signal-score=\"' + esc(String(clamp(item.signal, 0, 100))) + '\">'+\r\n              '<div class=\"gdx-r11-purpose-weight-title\"><b>' + esc(item.label) + '</b><em>Karardaki pay\u0131 ' + esc(String(item.weight)) + '%</em></div>'+ \r\n              '<div class=\"gdx-r11-purpose-weight-bars\"><i><b data-gdx-r11-purpose-weight-bar=\"1\" style=\"width:' + esc(String(clamp(item.signal, 0, 100))) + '%\"></b></i><strong data-gdx-r11-purpose-weight-score=\"1\">' + esc(String(item.signal)) + '/100</strong></div>'+ \r\n              '<small>' + esc(item.meaning + '. ' + item.productLine) + '</small>'+ \r\n            '</div>';\r\n        }).join('') + '</div>'+ \r\n        '<p class=\"gdx-r11-purpose-weight-safe\" data-gdx-r11-purpose-weight-safe=\"1\">Fiyat tek ba\u015F\u0131na karar vermez; teknik uygunluk ve genel F/P dengesi birlikte de\u011Ferlendirilir.</p>'+ \r\n      '</article>';\r\n  }\r\n\r\n\r\n  function scoreGap(row) {\r\n    return round0(Number(row && row.purposeScore || 0) - Number(row && row.fpScore || 0));\r\n  }\r\n\r\n  function balancedRelation(row) {\r\n    row = row || {};\r\n    var p = round0(row.purposeScore);\r\n    var f = round0(row.fpScore);\r\n    var gap = scoreGap(row);\r\n\r\n    if (p >= 86 && f >= 80) {\r\n      return 'Bu \u00FCr\u00FCn, se\u00E7ili kullan\u0131m amac\u0131na teknik olarak g\u00FC\u00E7l\u00FC otururken 14 kriterli genel F/P de\u011Ferlendirmesinde de dengeli g\u00F6r\u00FCn\u00FCr. Ama\u00E7 ve F/P birlikte g\u00FC\u00E7l\u00FC okunur.';\r\n    }\r\n\r\n    if (p >= 86 && f < 76) {\r\n      return 'Ama\u00E7 uyumu y\u00FCksektir; genel F/P puan\u0131 ise fiyat fark\u0131 nedeniyle daha temkinli de\u011Ferlendirilmelidir.';\r\n    }\r\n\r\n    if (p >= 78 && f >= 80) {\r\n      return 'Genel F/P dengesi g\u00FC\u00E7l\u00FCd\u00FCr; se\u00E7ili kullan\u0131m amac\u0131nda da yeterli teknik uyum sunar. Bu \u00FCr\u00FCn, teknik ihtiya\u00E7 ile fiyat/de\u011Fer dengesini birlikte de\u011Ferlendiren kullan\u0131c\u0131lar i\u00E7in mant\u0131kl\u0131d\u0131r.';\r\n    }\r\n\r\n    if (gap >= 10) {\r\n      return 'Ama\u00E7 skoru F/P skorundan belirgin y\u00FCksek. \u00DCr\u00FCn se\u00E7ili senaryoda teknik olarak anlaml\u0131d\u0131r; genel Panel LED F/P karar\u0131 ise 14 kriterli F/P de\u011Ferlendirmesiyle daha kontroll\u00FC okunmal\u0131d\u0131r.';\r\n    }\r\n\r\n    if (gap <= -8) {\r\n      return 'Genel F/P skoru ama\u00E7 skorundan daha g\u00FC\u00E7l\u00FC. \u00DCr\u00FCn fiyat/de\u011Fer taraf\u0131nda mant\u0131kl\u0131 olabilir; fakat se\u00E7ili alt ama\u00E7 i\u00E7in teknik uygunluk ayr\u0131ca kontrol edilmelidir.';\r\n    }\r\n\r\n    return 'Ama\u00E7 uyumu ve F/P skoru birbirine yak\u0131n okunuyor. Bu \u00FCr\u00FCn, se\u00E7ili kullan\u0131m amac\u0131 ile genel Panel LED F/P yap\u0131s\u0131 aras\u0131nda dengeli bir adayd\u0131r.';\r\n  }\r\n\r\n  function balancedPurposeFpLead(row) {\r\n    row = row || {};\r\n    var sub = row.sub || currentSub();\r\n    return 'Bu \u00FCr\u00FCn\u00FCn se\u00E7ili kullan\u0131m amac\u0131ndaki uyumu ile genel F/P dengesi ayr\u0131 puanlarla birlikte de\u011Ferlendirilir.';\r\n  }\r\n\r\n  function purposeFpRoleGaugeHtml(label, value, note, tone, attrs) {\r\n    var v = clamp(Number(value || 0), 0, 100);\r\n    var rounded = round0(v);\r\n    var dash = Math.max(0, Math.min(226, Math.round(rounded * 2.26 * 10) / 10));\r\n    return ''+\r\n      '<div class=\"gdx-r11-purpose-fp-role-gauge gdx-r11-purpose-fp-role-gauge--' + esc(tone || 'neutral') + ' gdx-r11-big-no-needle-dial\" data-gdx-r11-purpose-fp-role-gauge=\"1\" data-gdx-r11-big-no-needle-dial=\"1\" data-score=\"' + esc(String(rounded)) + '\" ' + (attrs || '') + ' style=\"--score:' + esc(String(rounded)) + ';--dash:' + esc(String(dash)) + '\">'+\r\n        '<div class=\"gdx-r11-purpose-fp-role-gauge-visual gdx-r11-big-no-needle-dial-visual\" aria-hidden=\"true\">'+\r\n          '<svg class=\"gdx-r11-big-no-needle-dial-svg\" data-gdx-r11-big-no-needle-dial-svg=\"1\" viewBox=\"0 0 220 164\" focusable=\"false\">'+\r\n            '<path class=\"gdx-r11-big-no-needle-track-shadow\" d=\"M32 120 A78 78 0 0 1 188 120\" fill=\"none\"></path>'+\r\n            '<path class=\"gdx-r11-big-no-needle-track\" d=\"M32 120 A78 78 0 0 1 188 120\" fill=\"none\"></path>'+\r\n            '<path class=\"gdx-r11-big-no-needle-arc\" data-gdx-r11-purpose-fp-role-gauge-fill=\"1\" data-gdx-r11-big-no-needle-arc=\"1\" d=\"M32 120 A78 78 0 0 1 188 120\" fill=\"none\" style=\"stroke-dasharray:' + esc(String(dash)) + ' 226\"></path>'+\r\n            '<line class=\"gdx-r11-big-no-needle-tick is-left\" x1=\"35\" y1=\"123\" x2=\"49\" y2=\"118\"></line>'+\r\n            '<line class=\"gdx-r11-big-no-needle-tick is-mid\" x1=\"110\" y1=\"40\" x2=\"110\" y2=\"57\"></line>'+\r\n            '<line class=\"gdx-r11-big-no-needle-tick is-right\" x1=\"185\" y1=\"123\" x2=\"171\" y2=\"118\"></line>'+\r\n            '<path class=\"gdx-r11-big-no-needle-inner\" d=\"M58 120 A52 52 0 0 1 162 120 L110 120 Z\"></path>'+\r\n            '<circle class=\"gdx-r11-big-no-needle-glow\" cx=\"110\" cy=\"120\" r=\"50\"></circle>'+\r\n          '</svg>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-purpose-fp-role-gauge-value gdx-r11-big-no-needle-dial-value\"><strong>' + esc(String(rounded)) + '</strong><small>/100</small></div>'+\r\n        '<b>' + esc(label) + '</b>'+\r\n        '<small class=\"gdx-r11-purpose-fp-role-gauge-note\">' + esc(note) + '</small>'+\r\n      '</div>';\r\n  }\r\n\r\n  function balancedPurposeFpHtml(row) {\r\n    row = row || {};\r\n    var p = round0(row.purposeScore);\r\n    var f = round0(row.fpScore);\r\n    var r = round0(row.roleScore);\r\n    var relation = balancedRelation(row);\r\n\r\n    function scoreStripItem(label, value, note, tone) {\r\n      var v = clamp(Number(value || 0), 0, 100);\r\n      var rounded = round0(v);\r\n      return ''+\r\n        '<div class=\"gdx-r11-balanced-score-strip-item gdx-r11-balanced-score-strip-item--' + esc(tone || 'neutral') + '\" data-gdx-r11-balanced-fp-item=\"1\" data-gdx-r11-balanced-score-strip-item=\"1\" data-score=\"' + esc(String(rounded)) + '\">'+\r\n          '<div class=\"gdx-r11-balanced-score-strip-top\">'+\r\n            '<b>' + esc(label) + '</b>'+\r\n            '<strong>' + esc(String(rounded)) + '<small>/100</small></strong>'+\r\n          '</div>'+\r\n          '<small>' + esc(note) + '</small>'+\r\n        '</div>';\r\n    }\r\n\r\n    return ''+\r\n      '<article class=\"gdx-r11-balanced-fp-narrative gdx-r11-balanced-fp-narrative--score-strip\" data-gdx-r11-balanced-fp-narrative=\"1\" data-gdx-r11-purpose-fp-role-system=\"1\" data-gdx-r11-purpose-fp-role-score-strip-system=\"1\">'+\r\n        '<div class=\"gdx-r11-balanced-fp-head\"><span>Ama\u00E7 Uyumu ve F/P Dengesi</span><h4>Puanlar birlikte nas\u0131l de\u011Ferlendirilmeli?</h4></div>'+\r\n        '<p data-gdx-r11-balanced-fp-lead=\"1\">' + esc(balancedPurposeFpLead(row)) + '</p>'+\r\n        '<div class=\"gdx-r11-balanced-score-strip\" data-gdx-r11-balanced-score-strip=\"1\">'+\r\n          scoreStripItem('Ama\u00E7 Uyumu', p, 'Kullan\u0131m amac\u0131, g\u00FC\u00E7 seviyesi ve renk yap\u0131s\u0131 birlikte de\u011Ferlendirilir.', 'purpose')+\r\n          scoreStripItem('Genel F/P', f, '14 teknik kritere g\u00F6re hesaplan\u0131r ve ama\u00E7 uyumundan ayr\u0131 de\u011Ferlendirilir.', 'fp')+\r\n          scoreStripItem('Rol Uyumu', r, '\u00DCr\u00FCn\u00FCn \u00F6nerilen \u0131\u015F\u0131k g\u00F6revine ne kadar uygun oldu\u011Funu g\u00F6sterir.', 'role')+\r\n        '</div>'+\r\n        '<p class=\"gdx-r11-balanced-fp-safe\" data-gdx-r11-balanced-fp-safe=\"1\">' + esc(relation) + '</p>'+\r\n      '</article>';\r\n  }\r\n\r\n\r\n  function scoreBlock(label, value, note, tone) {\r\n    var v = clamp(value, 0, 100);\r\n    return ''+\r\n      '<div class=\"gdx-r11-score ' + esc(tone || '') + '\">'+\r\n        '<div class=\"gdx-r11-score-ring\" style=\"--v:' + esc(String(v)) + '\"><strong>' + esc(String(round0(v))) + '</strong><small>/100</small></div>'+\r\n        '<div class=\"gdx-r11-score-copy\"><b>' + esc(label) + '</b><span>' + esc(note) + '</span></div>'+\r\n      '</div>';\r\n  }\r\n\r\n  function cardBadge(rank) {\r\n    if (rank === 1) return 'En uygun \u00F6neri';\r\n    if (rank === 2) return 'G\u00FC\u00E7l\u00FC alternatif';\r\n    return 'Senaryo alternatifi';\r\n  }\r\n\r\n  function r2dTop3LaneLabel(row) {\r\n    var lane = r2dCanonicalLaneForRow(row);\r\n    if (lane === 'SINGLE_READY_SET') return 'Tekli Panel Kit';\r\n    if (lane === 'BARE_LIGHT') return 'Yaln\u0131z Panel';\r\n    return '';\r\n  }\r\n\r\n  /* =========================================================\r\n     CANFOTO ETAP 2 REV5 \u2014 R2-I\r\n     PANEL PRODUCT CARD / BUTTON / NORA PARITY\r\n     Contract:\r\n     - Card consumes engine rows; it never recalculates Purpose/F-P.\r\n     - Capability is read from R2-G canonical owner.\r\n     - Stock remains commerce metadata only.\r\n     - Native product URL / existing compare state are preserved.\r\n     ========================================================= */\r\n  var R2I_VERSION = 'CANFOTO-ETAP2-R2I-PANEL-PRODUCT-CARD-NORA-PARITY-V1';\r\n  var R2I_VISUAL_VERSION = 'CANFOTO-ETAP2-R2I-R1-VISUAL-CALIBRATION-V1';\r\n  var R2I_NORA_CDN = 'https://cdn.shopify.com/s/files/1/0739/2755/7269/files/NORA_SUNUM_ANASAYFA.png?v=1788380108';\r\n  var R2I_RIM_KEY = 'rgb_creative_video::subject_rim_edge';\r\n\r\n  function r2iSelectionKey() {\r\n    var selection = W.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n    return String(selection.activeSelectionKey || '').trim();\r\n  }\r\n\r\n  function r2iHandle(row) {\r\n    return String(\r\n      r2dExactRowHandle(row) ||\r\n      row && row.product && row.product.handle ||\r\n      row && row.key ||\r\n      ''\r\n    ).trim();\r\n  }\r\n\r\n  function r2iCapability(row) {\r\n    var owner = W.GDX_PANEL_V4_R2G_EFFECTIVE_POWER_ROLE_TRUTH || null;\r\n    if (!owner || typeof owner.getCapability !== 'function') return null;\r\n    var handle = r2iHandle(row);\r\n    if (!handle) return null;\r\n    try {\r\n      return owner.getCapability(handle, r2iSelectionKey()) || null;\r\n    } catch (ignore) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function r2iSpecText(product, keys) {\r\n    product = product || {};\r\n    var specs = product.specs || {};\r\n    for (var i = 0; i < keys.length; i += 1) {\r\n      var value = specs[keys[i]];\r\n      if (value == null || value === '') value = product[keys[i]];\r\n      if (value != null && String(value).trim()) return String(value).replace(/\\s+/g, ' ').trim();\r\n    }\r\n    return '';\r\n  }\r\n\r\n  function r2iCctLabel(product) {\r\n    var direct = r2iSpecText(product, ['kelvinLabel','cctLabel','cctRange','kelvinRange','cct','kelvin']);\r\n    if (direct) return direct.replace(/\\bkelvin\\b/ig, 'K');\r\n    var t = tagsText(product);\r\n    var range = t.match(/(\\d{4})\\s*(?:k)?\\s*[-\u2013\u2014\\/]\\s*(\\d{4})\\s*k/);\r\n    if (range) return range[1] + '\u2013' + range[2] + 'K';\r\n    var one = t.match(/\\b(2[0-9]{3}|3[0-9]{3}|4[0-9]{3}|5[0-9]{3}|6[0-9]{3}|7[0-9]{3})\\s*k\\b/);\r\n    if (one) return one[1] + 'K';\r\n    return 'CCT: veri s\u0131n\u0131rl\u0131';\r\n  }\r\n\r\n  function r2iRgbFxLabel(product) {\r\n    var f = family(product);\r\n    if (f === 'rgb') return 'RGB / FX';\r\n    if (f === 'bicolor') return 'Bi-Color';\r\n    if (f === 'daylight') return 'Daylight';\r\n    return 'Panel LED';\r\n  }\r\n\r\n  function r2iControlLabel(product) {\r\n    var direct = r2iSpecText(product, ['controlLabel','control','controls','controlType']);\r\n    if (direct) return direct;\r\n    var specs = product && product.specs || {};\r\n    var parts = [];\r\n    if (specs.hasDmx) parts.push('DMX');\r\n    if (specs.hasApp || specs.hasBluetooth) parts.push('App');\r\n    if (parts.length) return parts.join(' / ');\r\n    if (hasControl(product)) return 'Uzaktan kontrol deste\u011Fi';\r\n    return 'Kontrol: veri s\u0131n\u0131rl\u0131';\r\n  }\r\n\r\n  function r2iPowerSourceLabel(product) {\r\n    var direct = r2iSpecText(product, ['powerSourceLabel','powerSource','powerInput','batteryType']);\r\n    if (direct) return direct;\r\n    if (hasBattery(product)) return 'Batarya deste\u011Fi';\r\n    return 'Mobil g\u00FC\u00E7: veri s\u0131n\u0131rl\u0131';\r\n  }\r\n\r\n  function r2iPowerSummary(cap) {\r\n    if (!cap || cap.technicalKnown !== true) return 'Efektif g\u00FC\u00E7: veri s\u0131n\u0131rl\u0131';\r\n    var use = cap.effectiveUsecasePowerW;\r\n    var white = cap.effectiveWhitePowerW;\r\n    var creative = cap.effectiveCreativePowerW;\r\n    if (use != null && creative != null && /RGB/.test(String(cap.channelArchitecture || '').toUpperCase())) {\r\n      return 'Ama\u00E7 efektif ' + round0(use) + 'W \u00B7 RGB ' + round0(creative) + 'W';\r\n    }\r\n    if (use != null && white != null) {\r\n      return 'Ama\u00E7 efektif ' + round0(use) + 'W \u00B7 Beyaz ' + round0(white) + 'W';\r\n    }\r\n    if (use != null) return 'Ama\u00E7 efektif ' + round0(use) + 'W';\r\n    return 'Efektif g\u00FC\u00E7: veri s\u0131n\u0131rl\u0131';\r\n  }\r\n\r\n  function r2iRoleLabel(cap) {\r\n    if (!cap) return 'Rol: veri s\u0131n\u0131rl\u0131';\r\n    return cap.primaryRoleLabel || cap.primaryRoleKey || 'Rol: veri s\u0131n\u0131rl\u0131';\r\n  }\r\n\r\n  function r2iNoraComment(row, cap) {\r\n    var selectionKey = r2iSelectionKey();\r\n    var role = r2iRoleLabel(cap);\r\n    var dist = cap && Array.isArray(cap.distanceBands) && cap.distanceBands.length\r\n      ? cap.distanceBands.join(' / ')\r\n      : '';\r\n    var useW = cap && cap.effectiveUsecasePowerW != null\r\n      ? round0(cap.effectiveUsecasePowerW)\r\n      : null;\r\n\r\n    if (selectionKey === R2I_RIM_KEY) {\r\n      return 'Kontur / kenar rol\u00FC i\u00E7in uygun. Ana \u0131\u015F\u0131k olarak de\u011Ferlendirilmez.' +\r\n        (useW != null ? ' Etkin g\u00FC\u00E7 \u2248' + useW + 'W.' : '') +\r\n        (dist ? ' \u00C7al\u0131\u015Fma: ' + dist + '.' : '');\r\n    }\r\n\r\n    if (cap && cap.mainKeyEligible === false) {\r\n      return role + ' rol\u00FC i\u00E7in uygun; ana \u0131\u015F\u0131k s\u0131n\u0131r\u0131 korunur.' +\r\n        (useW != null ? ' Etkin g\u00FC\u00E7 \u2248' + useW + 'W.' : '') +\r\n        (dist ? ' \u00C7al\u0131\u015Fma: ' + dist + '.' : '');\r\n    }\r\n\r\n    return role + ' rol\u00FCnde se\u00E7ili amaca uygun.' +\r\n      (useW != null ? ' Etkin g\u00FC\u00E7 \u2248' + useW + 'W.' : '') +\r\n      (dist ? ' \u00C7al\u0131\u015Fma: ' + dist + '.' : '');\r\n  }\r\n\r\n  function r2iCompareState(row) {\r\n    var ui = W.GDX_PANEL_LED_V4_UI || null;\r\n    var s = ui && ui.state ? ui.state : null;\r\n    var product = row && row.product || null;\r\n    var key = product && product.key ? String(product.key) : String(row && row.key || '');\r\n    if (!s || !s.selected) return { selected:false, full:false, key:key };\r\n    var a = s.selected[1];\r\n    var b = s.selected[2];\r\n    var selected = !!(\r\n      (a && String(a.key || '') === key) ||\r\n      (b && String(b.key || '') === key)\r\n    );\r\n    return { selected:selected, full:!!(a && b && !selected), key:key };\r\n  }\r\n\r\n  function r2iToggleCompare(row) {\r\n    var ui = W.GDX_PANEL_LED_V4_UI || null;\r\n    var product = row && row.product || null;\r\n\r\n    if (!ui || typeof ui.toggleCompareProduct !== \"function\" || !product) {\r\n      return { ok:false, reason:\"COMPARE_STATE_UNAVAILABLE\" };\r\n    }\r\n\r\n    return ui.toggleCompareProduct(product, \"TOP3\", {\r\n      skipRecommendationRender:true\r\n    });\r\n  }\r\n\r\n\r\n\r\n  /* =========================================================\r\n     CANFOTO / GDX \u2014 ETAP 2 REV5 \u2014 R2-J\r\n     PANEL COMPARISON V2 / COMPARE TRAY + DUAL DECISION\r\n\r\n     Contract:\r\n     - Existing two-slot compare state is preserved.\r\n     - Purpose decision consumes exact-selection canonical rows.\r\n     - General F/P decision consumes the same canonical fpScore on those rows,\r\n       whose owner is R2-B FP14.\r\n     - Existing compare core remains the 14-criteria detail renderer.\r\n     - No hidden comparison eligibility filter is introduced.\r\n     - Bare <-> Single Ready Set is allowed.\r\n     ========================================================= */\r\n  var R2J_VERSION = 'CANFOTO-ETAP2-R2J-R8-MOTOR-SCOPE-DISCLOSURE-V1';\r\n\r\n  function r2jUi() {\r\n    return W.GDX_PANEL_LED_V4_UI || null;\r\n  }\r\n\r\n  function r2jState() {\r\n    var ui = r2jUi();\r\n    return ui && ui.state ? ui.state : null;\r\n  }\r\n\r\n  function r2jSelectedProducts() {\r\n    var s = r2jState();\r\n    return s && s.selected ? [s.selected[1] || null, s.selected[2] || null] : [null, null];\r\n  }\r\n\r\n  function r2jProductKey(product) {\r\n    return String(product && (product.handle || product.key || product.id) || '').trim();\r\n  }\r\n\r\n  function r2jExactRows() {\r\n    var exact = W.GDX_PANEL_V4_R2D_EXACT_SELECTION_SCORE_PROJECTION || null;\r\n    var selectionKey = r2iSelectionKey();\r\n    if (!exact || typeof exact.getRows !== 'function' || !selectionKey) return [];\r\n    try {\r\n      return exact.getRows(selectionKey, { lane:'ALL', limit:0 }) || [];\r\n    } catch (ignore) {\r\n      return [];\r\n    }\r\n  }\r\n\r\n  function r2jRowForProduct(product) {\r\n    var key = r2jProductKey(product);\r\n    if (!key) return null;\r\n    var rows = r2jExactRows();\r\n    return rows.find(function(row){\r\n      var candidates = [\r\n        r2dExactRowHandle(row),\r\n        row && row.key,\r\n        row && row.product && row.product.key,\r\n        row && row.product && row.product.handle,\r\n        row && row.product && row.product.id\r\n      ].map(function(v){ return String(v == null ? '' : v).trim(); }).filter(Boolean);\r\n      return candidates.indexOf(key) >= 0;\r\n    }) || null;\r\n  }\r\n\r\n  function r2jShortTitle(product, row) {\r\n    return String(\r\n      row && row.title ||\r\n      product && (product.shortTitle || product.title || product.handle || product.key) ||\r\n      'Panel LED'\r\n    ).replace(/\\s+/g,' ').trim();\r\n  }\r\n\r\n  function r2jLaneLabel(product, row) {\r\n    var lane = String(\r\n      row && (row.purchaseLane || row.lane) ||\r\n      product && product.etap2 && product.etap2.lane ||\r\n      ''\r\n    );\r\n    if (lane === 'SINGLE_READY_SET') return 'Tekli Panel Kit';\r\n    if (lane === 'BARE_LIGHT') return 'Yaln\u0131z Panel';\r\n    return 'Sat\u0131n alma bi\u00E7imi';\r\n  }\r\n\r\n  function r2jCompareValue(a, b, epsilon) {\r\n    a = Number(a);\r\n    b = Number(b);\r\n    epsilon = Number(epsilon == null ? 0.05 : epsilon);\r\n    if (!isFinite(a) || !isFinite(b)) return { leader:0, a:a, b:b, diff:null };\r\n    var diff = a - b;\r\n    if (Math.abs(diff) <= epsilon) return { leader:0, a:a, b:b, diff:diff };\r\n    return { leader:diff > 0 ? 1 : 2, a:a, b:b, diff:diff };\r\n  }\r\n\r\n  function r2jDecisionModel() {\r\n    var selected = r2jSelectedProducts();\r\n    var p1 = selected[0], p2 = selected[1];\r\n    if (!p1 || !p2) return null;\r\n\r\n    var r1 = r2jRowForProduct(p1);\r\n    var r2 = r2jRowForProduct(p2);\r\n    if (!r1 || !r2) return null;\r\n\r\n    var purpose = r2jCompareValue(r1.purposeScore, r2.purposeScore, 0.05);\r\n    var fp = r2jCompareValue(r1.fpScore, r2.fpScore, 0.05);\r\n\r\n    var title1 = r2jShortTitle(p1, r1);\r\n    var title2 = r2jShortTitle(p2, r2);\r\n\r\n    function leaderTitle(decision) {\r\n      if (!decision || !decision.leader) return 'Dengeli';\r\n      return decision.leader === 1 ? title1 : title2;\r\n    }\r\n\r\n    var purposeLeader = leaderTitle(purpose);\r\n    var fpLeader = leaderTitle(fp);\r\n    var sameWinner = purpose.leader && fp.leader && purpose.leader === fp.leader;\r\n\r\n    var summary = '';\r\n    if (sameWinner) {\r\n      summary = 'Bu ama\u00E7ta da Genel F/P\u2019de de ' + purposeLeader + ' \u00F6nde.';\r\n    } else if (!purpose.leader && !fp.leader) {\r\n      summary = '\u0130ki \u00FCr\u00FCn hem Ama\u00E7 Uyumu hem Genel F/P taraf\u0131nda birbirine \u00E7ok yak\u0131n.';\r\n    } else {\r\n      summary = 'Ama\u00E7 Uyumu: ' + purposeLeader + ' \u00B7 Genel F/P: ' + fpLeader + '.';\r\n    }\r\n\r\n    return {\r\n      selectionKey:r2iSelectionKey(),\r\n      products:[\r\n        { slot:1, product:p1, row:r1, title:title1, lane:r2jLaneLabel(p1,r1) },\r\n        { slot:2, product:p2, row:r2, title:title2, lane:r2jLaneLabel(p2,r2) }\r\n      ],\r\n      purpose:purpose,\r\n      fp:fp,\r\n      purposeLeader:purposeLeader,\r\n      fpLeader:fpLeader,\r\n      sameWinner:!!sameWinner,\r\n      summary:summary\r\n    };\r\n  }\r\n\r\n  /* R2-J-R9: MOTOR SCOPE DISCLOSURE PERMANENTLY RETIRED.\r\n     No button, tooltip/panel, copy, CSS, focus/hover/click owner or mobile overlay remains. */\r\n\r\n  function r2jCompared() {\r\n    var s = r2jState();\r\n    return !!(s && s.compareResult && s.compareResult.ok === true);\r\n  }\r\n\r\n  function r2jSyncLegacyActionBar() {\r\n    var bar = D.getElementById('gdxPanelV4ActionBar');\r\n    var selected = r2jSelectedProducts().filter(Boolean).length;\r\n    if (!bar) return false;\r\n\r\n    if (selected > 0) {\r\n      bar.hidden = true;\r\n      bar.setAttribute('data-gdx-r2j-suppressed','1');\r\n      return true;\r\n    }\r\n\r\n    bar.removeAttribute('data-gdx-r2j-suppressed');\r\n    return false;\r\n  }\r\n\r\n  function r2jResultDecisionHtml() {\r\n    var model = r2jDecisionModel();\r\n    if (!model || !r2jCompared()) return '';\r\n\r\n    function metricCard(label, decision, leader) {\r\n      return ''+\r\n        '<article class=\"gdx-r2j-decision-metric\">'+\r\n          '<span>' + esc(label) + '</span>'+\r\n          '<strong>' + esc(leader) + '</strong>'+\r\n          '<small>1. \u00FCr\u00FCn ' + esc(round0(decision.a)) + '/100 \u00B7 2. \u00FCr\u00FCn ' + esc(round0(decision.b)) + '/100</small>'+\r\n        '</article>';\r\n    }\r\n\r\n    return ''+\r\n      '<section class=\"gdx-r2j-result-summary\" data-gdx-r2j-result-summary=\"1\">'+\r\n        '<div class=\"gdx-r2j-dual\" data-gdx-r2j-dual-decision=\"1\">'+\r\n          '<div class=\"gdx-r2j-dual-head\">'+\r\n            '<div><span>\u00C7\u0130FT KARAR</span><h4>Tek bir \u201Ckazanan\u201D yerine iki ayr\u0131 karar</h4></div>'+\r\n            '<p>' + esc(model.summary) + '</p>'+\r\n          '</div>'+\r\n          '<div class=\"gdx-r2j-decision-grid\">'+\r\n            metricCard('Ama\u00E7 Uyumu', model.purpose, model.purposeLeader)+\r\n            metricCard('Genel F/P', model.fp, model.fpLeader)+\r\n          '</div>'+\r\n          '<p class=\"gdx-r2j-dual-note\">Ama\u00E7 Uyumu se\u00E7ti\u011Finiz kullan\u0131m senaryosuna g\u00F6re; Genel F/P ise 14 teknik kritere g\u00F6re hesaplan\u0131r.</p>'+\r\n          '<div class=\"gdx-r2j-result-actions\">'+\r\n            '<button type=\"button\" data-gdx-r11-action=\"r2j-edit\">Se\u00E7imi De\u011Fi\u015Ftir</button>'+\r\n            '<button type=\"button\" data-gdx-r11-action=\"r2j-clear\">Yeni Kar\u015F\u0131la\u015Ft\u0131rma</button>'+\r\n          '</div>'+\r\n        '</div>'+\r\n      '</section>';\r\n  }\r\n\r\n  function r2jMountDecisionIntoResult() {\r\n    var host = D.getElementById('gdxPanelV4ResultPreview');\r\n    var box = host ? host.querySelector('.gdx-panel-v4-result-box.is-compare') : null;\r\n    if (!box) return false;\r\n\r\n    Array.prototype.slice.call(\r\n      box.querySelectorAll('[data-gdx-r2j-result-summary=\"1\"]')\r\n    ).forEach(function(node){ node.remove(); });\r\n\r\n    if (!r2jCompared()) return false;\r\n    if (uiState.resultSource === \"POOL\") return false;\r\n\r\n    var head = box.querySelector('.gdx-panel-v4-result-head');\r\n    if (!head) return false;\r\n\r\n    head.insertAdjacentHTML('afterend', r2jResultDecisionHtml());\r\n    return true;\r\n  }\r\n\r\n  function r2jEditSelection() {\r\n    var s = r2jState();\r\n    var ui = r2jUi();\r\n    if (!s) return false;\r\n\r\n    s.compareResult = null;\r\n    s.compareRenderedAt = '';\r\n\r\n    if (s.resultSource === \"TOP3\" && ui && typeof ui.renderResultOnly === 'function') {\r\n      ui.renderResultOnly();\r\n    }\r\n    render();\r\n    r2jSyncLegacyActionBar();\r\n\r\n    var tray = D.querySelector('[data-gdx-r2j-tray=\"1\"]');\r\n    var panel = r2jPanelScrollTarget();\r\n    if (tray && panel && panel.contains(tray)) {\r\n      var pr = panel.getBoundingClientRect();\r\n      var tr = tray.getBoundingClientRect();\r\n      var top = Number(panel.scrollTop || 0) + (tr.top - pr.top) - 12;\r\n      panel.scrollTop = Math.max(0, top);\r\n    }\r\n    return true;\r\n  }\r\n\r\n  function r2jRemoveSlot(slot) {\r\n    var s = r2jState();\r\n    var ui = r2jUi();\r\n    slot = Number(slot);\r\n    if (!s || !s.selected || (slot !== 1 && slot !== 2)) return false;\r\n\r\n    var product = s.selected[slot];\r\n    if (!product || !ui || typeof ui.toggleCompareProduct !== \"function\") return false;\r\n\r\n    ui.toggleCompareProduct(product, s.compareSelectionSource && s.compareSelectionSource[slot] || \"DOCK\", {\r\n      skipRecommendationRender:false\r\n    });\r\n\r\n    render();\r\n    r2jSyncLegacyActionBar();\r\n    r2jMountDecisionIntoResult();\r\n    return true;\r\n  }\r\n\r\n  function r2jClear() {\r\n    var ui = r2jUi();\r\n    if (!ui || typeof ui.resetCompareSelection !== \"function\") return false;\r\n\r\n    ui.resetCompareSelection({ scroll:false });\r\n    render();\r\n    r2jSyncLegacyActionBar();\r\n    r2jMountDecisionIntoResult();\r\n    return true;\r\n  }\r\n\r\n  function r2jPanelScrollTarget() {\r\n    return D.querySelector('#gdxPanelV4Shell .gdx-panel-v4-panel');\r\n  }\r\n\r\n  function r2jRun() {\r\n    var ui = r2jUi();\r\n    var s = r2jState();\r\n    if (!ui || !s || !s.selected || !s.selected[1] || !s.selected[2]) return false;\r\n\r\n    /* R3.8:\r\n       The prior local landing attempt could not access the main UI IIFE helper.\r\n       Let the canonical UI compare owner perform its own real result landing. */\r\n    if (typeof ui.compare === \"function\") {\r\n      ui.compare({ scroll:true });\r\n    }\r\n\r\n    render();\r\n    r2jSyncLegacyActionBar();\r\n    r2jMountDecisionIntoResult();\r\n\r\n    return true;\r\n  }\r\n\r\n\r\n  function r2jSlotHtml(slot, product) {\r\n    if (!product) {\r\n      return ''+\r\n        '<div class=\"gdx-r2j-slot is-empty\" data-gdx-r2j-slot=\"' + esc(slot) + '\">'+\r\n          '<span>' + esc(slot) + '/2</span>'+\r\n          '<strong>\u00DCr\u00FCn se\u00E7in</strong>'+\r\n          '<small>Kar\u015F\u0131la\u015Ft\u0131rmak istedi\u011Finiz \u00FCr\u00FCnde \u201CDetayl\u0131 F/P Kar\u015F\u0131la\u015Ft\u0131r\u201D butonuna bas\u0131n.</small>'+\r\n        '</div>';\r\n    }\r\n    var row = r2jRowForProduct(product);\r\n    var title = r2jShortTitle(product,row);\r\n    return ''+\r\n      '<div class=\"gdx-r2j-slot is-filled\" data-gdx-r2j-slot=\"' + esc(slot) + '\">'+\r\n        '<span>' + esc(slot) + '/2 \u00B7 ' + esc(r2jLaneLabel(product,row)) + '</span>'+\r\n        '<strong>' + esc(title) + '</strong>'+\r\n        '<small>Ama\u00E7 ' + esc(row && row.purposeScore != null ? round0(row.purposeScore) : '\u2014') + '/100 \u00B7 Genel F/P ' + esc(row && row.fpScore != null ? round0(row.fpScore) : '\u2014') + '/100</small>'+\r\n        '<button type=\"button\" data-gdx-r11-action=\"r2j-remove\" data-gdx-r2j-remove-slot=\"' + esc(slot) + '\">\u00C7\u0131kar</button>'+\r\n      '</div>';\r\n  }\r\n\r\n  function r2jDecisionHtml() {\r\n    var model = r2jDecisionModel();\r\n    var s = r2jState();\r\n    if (!model || !s || !s.compareResult) return '';\r\n\r\n    function metricCard(label, decision, leader) {\r\n      return ''+\r\n        '<article class=\"gdx-r2j-decision-metric\">'+\r\n          '<span>' + esc(label) + '</span>'+\r\n          '<strong>' + esc(leader) + '</strong>'+\r\n          '<small>1. \u00FCr\u00FCn ' + esc(round0(decision.a)) + '/100 \u00B7 2. \u00FCr\u00FCn ' + esc(round0(decision.b)) + '/100</small>'+\r\n        '</article>';\r\n    }\r\n\r\n    return ''+\r\n      '<div class=\"gdx-r2j-dual\" data-gdx-r2j-dual-decision=\"1\">'+\r\n        '<div class=\"gdx-r2j-dual-head\">'+\r\n          '<div><span>\u00C7\u0130FT KARAR</span><h4>Tek bir \u201Ckazanan\u201D yerine iki ayr\u0131 karar</h4></div>'+\r\n          '<p>' + esc(model.summary) + '</p>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r2j-decision-grid\">'+\r\n          metricCard('Ama\u00E7 Uyumu', model.purpose, model.purposeLeader)+\r\n          metricCard('Genel F/P', model.fp, model.fpLeader)+\r\n        '</div>'+\r\n        '<p class=\"gdx-r2j-dual-note\">Ama\u00E7 Uyumu se\u00E7ti\u011Finiz kullan\u0131m senaryosuna g\u00F6re; Genel F/P ise 14 teknik kritere g\u00F6re hesaplan\u0131r.</p>'+\r\n      '</div>';\r\n  }\r\n\r\n  function r2jDockMount() {\r\n    var id = \"gdxPanelV4Top3CompareDockR4\";\r\n    var existing = D.getElementById(id);\r\n    if (existing) return existing;\r\n\r\n    var shell = D.getElementById(\"gdxPanelV4Shell\");\r\n    var host = shell || root();\r\n    if (!host) return null;\r\n\r\n    var node = D.createElement(\"div\");\r\n    node.id = id;\r\n    node.className = \"gdx-r2j-dock-mount\";\r\n    node.setAttribute(\"data-gdx-r2j-dock-owner\", \"R4\");\r\n    node.hidden = true;\r\n    host.appendChild(node);\r\n    return node;\r\n  }\r\n\r\n  function r2jRenderDock() {\r\n    /* R3.7 \u2014 retired. Single fixed dock owner is panel-led-v4.pool-compare-dock-r3.js. */\r\n    var node = D.getElementById(\"gdxPanelV4Top3CompareDockR4\");\r\n    if (node) {\r\n      node.hidden = true;\r\n      node.innerHTML = \"\";\r\n    }\r\n    return true;\r\n  }\r\n\r\n\r\n  function r2jTrayHtml() {\r\n    var selected = r2jSelectedProducts();\r\n    var count = selected.filter(Boolean).length;\r\n    var ready = count === 2;\r\n    var s = r2jState();\r\n\r\n    /* R6-R3.4 \u2014 zero-selection comparison UI does not belong below TOP3. */\r\n    if (count === 0 && !(s && s.compareResult && s.compareResult.ok === true)) {\r\n      return \"\";\r\n    }\r\n\r\n    if (s && s.compareResult && s.compareResult.ok === true && ready) {\r\n      var m = r2jDecisionModel();\r\n      var p1 = m && m.products && m.products[0] ? m.products[0].title : r2jShortTitle(selected[0], r2jRowForProduct(selected[0]));\r\n      var p2 = m && m.products && m.products[1] ? m.products[1].title : r2jShortTitle(selected[1], r2jRowForProduct(selected[1]));\r\n\r\n      return ''+\r\n        '<section class=\"gdx-r2j-tray is-compact\" data-gdx-r2j-tray=\"1\" data-gdx-r2j-selected-count=\"2\" data-gdx-r2j-compared=\"1\">'+\r\n          '<div class=\"gdx-r2j-compact-copy\">'+\r\n            '<span>KAR\u015EILA\u015ETIRMA HAZIR</span>'+\r\n            '<strong>' + esc(p1) + ' \u2194 ' + esc(p2) + '</strong>'+\r\n            '<small>\u00C7ift Karar ve 14 kriterli teknik F/P sonucu a\u015Fa\u011F\u0131daki sonu\u00E7 alan\u0131nda.</small>'+\r\n          '</div>'+\r\n          '<div class=\"gdx-r2j-compact-actions\">'+\r\n            '<button type=\"button\" data-gdx-r11-action=\"r2j-edit\">Se\u00E7imi De\u011Fi\u015Ftir</button>'+\r\n            '<button type=\"button\" data-gdx-r11-action=\"r2j-clear\">Yeni Kar\u015F\u0131la\u015Ft\u0131rma</button>'+\r\n          '</div>'+\r\n        '</section>';\r\n    }\r\n\r\n    return ''+\r\n      '<section class=\"gdx-r2j-tray\" data-gdx-r2j-tray=\"1\" data-gdx-r2j-selected-count=\"' + esc(count) + '\">'+\r\n        '<div class=\"gdx-r2j-tray-head\">'+\r\n          '<div><span>KAR\u015EILA\u015ETIRMA</span><h4>' + esc(count + '/2 \u00FCr\u00FCn se\u00E7ili') + '</h4></div>'+\r\n          '<div class=\"gdx-r2j-head-actions\">'+\r\n            (count ? '<button type=\"button\" data-gdx-r11-action=\"r2j-clear\">Temizle</button>' : '')+\r\n          '</div>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r2j-slots\">'+\r\n          r2jSlotHtml(1,selected[0])+\r\n          r2jSlotHtml(2,selected[1])+\r\n        '</div>'+\r\n        '<button type=\"button\" class=\"gdx-r2j-run\" data-gdx-r11-action=\"r2j-run\" ' + (ready ? '' : 'disabled aria-disabled=\"true\"') + '>'+\r\n          (ready ? '\u0130ki \u00DCr\u00FCn\u00FC Kar\u015F\u0131la\u015Ft\u0131r' : 'Kar\u015F\u0131la\u015Ft\u0131rmak i\u00E7in 2 \u00FCr\u00FCn se\u00E7in')+\r\n        '</button>'+\r\n      '</section>';\r\n  }\r\n\r\n  function r2iMetaHtml(row) {\r\n    var product = row && row.product || {};\r\n    var cap = r2iCapability(row);\r\n    var items = [\r\n      { key:'lane', label:'Sat\u0131n alma', value:r2dTop3LaneLabel(row) || 'Kulvar bilgisi yok' },\r\n      { key:'cct', label:'CCT', value:r2iCctLabel(product) },\r\n      { key:'rgb', label:'Renk', value:r2iRgbFxLabel(product) },\r\n      { key:'power', label:'Efektif g\u00FC\u00E7', value:r2iPowerSummary(cap) },\r\n      { key:'control', label:'Kontrol', value:r2iControlLabel(product) },\r\n      { key:'mobile', label:'Mobil g\u00FC\u00E7', value:r2iPowerSourceLabel(product) }\r\n    ];\r\n    return '<div class=\"gdx-r2i-meta\" data-gdx-r2i-meta=\"1\">' +\r\n      items.map(function(item){\r\n        return '<span class=\"gdx-r2i-meta-item is-' + esc(item.key) + '\" data-gdx-r2i-meta-key=\"' + esc(item.key) + '\"><small>' + esc(item.label) + '</small><b>' + esc(item.value) + '</b></span>';\r\n      }).join('') +\r\n    '</div>';\r\n  }\r\n\r\n  function r2iNoraHtml(row) {\r\n    var cap = r2iCapability(row);\r\n    var comment = r2iNoraComment(row, cap);\r\n    return ''+\r\n      '<aside class=\"gdx-r2i-nora\" data-gdx-r2i-nora=\"1\" data-gdx-r2i-capability-role=\"' + esc(cap && cap.primaryRoleKey || '') + '\">'+\r\n        '<img src=\"' + esc(R2I_NORA_CDN) + '\" alt=\"\" loading=\"lazy\" aria-hidden=\"true\">'+\r\n        '<div><span>NORA \u00B7 k\u0131sa yorum</span><p>' + esc(comment) + '</p></div>'+\r\n      '</aside>';\r\n  }\r\n\r\n  function renderCard(row) {\r\n    var laneLabel = r2dTop3LaneLabel(row);\r\n    var compareState = r2iCompareState(row);\r\n    var compareLabel = compareState.selected\r\n      ? 'Kar\u015F\u0131la\u015Ft\u0131rmadan \u00C7\u0131kar'\r\n      : (compareState.full ? '2 \u00DCr\u00FCn Se\u00E7ili' : 'Detayl\u0131 F/P Kar\u015F\u0131la\u015Ft\u0131r');\r\n    return ''+\r\n      '<article class=\"gdx-r11-card gdx-r2i-card\" data-gdx-r11-card=\"' + esc(row.key) + '\" data-gdx-r11-handle=\"' + esc(r2dExactRowHandle(row)) + '\" data-gdx-r11-lane=\"' + esc(r2dCanonicalLaneForRow(row)) + '\" data-gdx-r2i-card=\"1\" data-rank=\"' + esc(row.rank) + '\">'+\r\n        '<div class=\"gdx-r11-card-top\">'+\r\n          '<span class=\"gdx-r11-rank\">#' + esc(row.rank) + '</span>'+\r\n          '<span class=\"gdx-r11-brand\">' + esc(row.vendor || 'GDX') + '</span>'+\r\n          '<span class=\"gdx-r11-badge\">' + esc(cardBadge(row.rank)) + '</span>'+\r\n          '<span class=\"gdx-r11-fit\">Uygun</span>'+\r\n        '</div>'+\r\n        '<h4>' + esc(row.title) + '</h4>'+\r\n        '<p class=\"gdx-r11-price\">' + esc(row.price) + '</p>'+\r\n        '<div class=\"gdx-r11-tags\">' + recoTagHtml(row) + (laneLabel ? '<span class=\"gdx-r11-chip\">' + esc(laneLabel) + '</span>' : '') + '</div>'+\r\n        r2iMetaHtml(row)+\r\n        '<div class=\"gdx-r11-mid\">'+\r\n          '<div class=\"gdx-r11-imgbox\">' + (row.image ? '<img src=\"' + esc(row.image) + '\" alt=\"' + esc(row.title) + '\" loading=\"lazy\">' : '<span>G\u00F6rsel yok</span>') + '</div>'+\r\n          '<div class=\"gdx-r11-score-stack\">'+\r\n            scoreBlock('Ama\u00E7 Uyumu', row.purposeScore, 'Se\u00E7ili kullan\u0131m amac\u0131na teknik uygunlu\u011Fu g\u00F6sterir.', 'purpose')+\r\n            scoreBlock('Genel F/P Skoru', row.fpScore, '14 teknik kritere g\u00F6re hesaplanan genel fiyat/performans puan\u0131d\u0131r.', 'fp')+\r\n          '</div>'+\r\n        '</div>'+\r\n        r2iNoraHtml(row)+\r\n        '<div class=\"gdx-r11-actions gdx-r2i-actions\">'+\r\n          '<a class=\"gdx-r11-btn primary\" href=\"' + esc(row.url) + '\" target=\"_blank\" rel=\"noopener\">\u00DCr\u00FCn\u00FC \u0130ncele</a>'+\r\n          '<button type=\"button\" class=\"gdx-r11-btn compare ' + (compareState.selected ? 'is-selected' : '') + '\" data-gdx-r11-action=\"compare\" data-gdx-r11-key=\"' + esc(row.key) + '\" ' + (compareState.full ? 'disabled aria-disabled=\"true\"' : '') + '>' + esc(compareLabel) + '</button>'+\r\n          '<button type=\"button\" class=\"gdx-r11-btn ghost\" data-gdx-r11-action=\"reason\" data-gdx-r11-key=\"' + esc(row.key) + '\">Neden Bu \u00DCr\u00FCn?</button>'+\r\n          '<button type=\"button\" class=\"gdx-r11-btn setup\" data-gdx-r11-action=\"setup\" data-gdx-r11-key=\"' + esc(row.key) + '\">Kurulumu G\u00F6r</button>'+\r\n        '</div>'+\r\n      '</article>';\r\n  }\r\n\r\n  function r28ReadOnlySelection() {\r\n    return W.GDX_PANEL_V4_R28_SELECTION_STATE || null;\r\n  }\r\n\r\n  function r28CanonicalDisplay(fallbackMain, fallbackSub) {\r\n    var selection = r28ReadOnlySelection() || {};\r\n    fallbackMain = fallbackMain || currentMain();\r\n    fallbackSub = fallbackSub || currentSub();\r\n\r\n    return {\r\n      selectionKey: r29R4Clean(selection.activeSelectionKey),\r\n      purposeTitle:\r\n        r29R4Clean(selection.activePurposeTitle) ||\r\n        r29R4Clean(fallbackMain && fallbackMain.label) ||\r\n        'Se\u00E7ili kullan\u0131m amac\u0131',\r\n      subPurposeTitle:\r\n        r29R4Clean(selection.activeSubPurposeTitle) ||\r\n        r29R4Clean(fallbackSub && fallbackSub.label) ||\r\n        'Se\u00E7ili alt ama\u00E7'\r\n    };\r\n  }\r\n\r\n  var R29_R4_ROLE_LABELS_TR = Object.freeze({\r\n    key_light: 'ana \u0131\u015F\u0131k',\r\n    main_light: 'ana \u0131\u015F\u0131k',\r\n    fill_light: 'dolgu \u0131\u015F\u0131\u011F\u0131',\r\n    soft_front_light: 'yumu\u015Fak \u00F6n \u0131\u015F\u0131k',\r\n    clinical_soft_front: 'klinik/y\u00FCz odakl\u0131 yumu\u015Fak \u00F6n \u0131\u015F\u0131k',\r\n    dental_detail_light: 'dental detay destek \u0131\u015F\u0131\u011F\u0131',\r\n    product_top_light: '\u00FCr\u00FCn \u00FCst \u0131\u015F\u0131\u011F\u0131',\r\n    product_side_light: '\u00FCr\u00FCn yan \u0131\u015F\u0131\u011F\u0131',\r\n    product_front_light: '\u00FCr\u00FCn \u00F6n \u0131\u015F\u0131\u011F\u0131',\r\n    background_light: 'arka plan \u0131\u015F\u0131\u011F\u0131',\r\n    rim_light: 'kontur \u0131\u015F\u0131\u011F\u0131',\r\n    hair_light: 'sa\u00E7/kontur \u0131\u015F\u0131\u011F\u0131',\r\n    rgb_accent: 'renk vurgu \u0131\u015F\u0131\u011F\u0131',\r\n    rgb_background_wash: 'RGB arka plan renk \u0131\u015F\u0131\u011F\u0131',\r\n    rim_or_color_separation: 'renk/kontur ayr\u0131m\u0131',\r\n    portable_interview_light: 'ta\u015F\u0131nabilir \u00E7ekim \u0131\u015F\u0131\u011F\u0131',\r\n    support_or_accent_light: 'destek/vurgu \u0131\u015F\u0131\u011F\u0131',\r\n    close_range_support: 'yak\u0131n plan destek \u0131\u015F\u0131\u011F\u0131',\r\n    product_color_separation: '\u00FCr\u00FCn arka plan renk ayr\u0131m\u0131',\r\n    interview_key: 'r\u00F6portaj ana \u0131\u015F\u0131\u011F\u0131',\r\n    interview_key_light: 'r\u00F6portaj ana \u0131\u015F\u0131\u011F\u0131',\r\n    product_top_key: '\u00FCr\u00FCn \u00FCst ana \u0131\u015F\u0131\u011F\u0131',\r\n    wide_area_key_light: 'geni\u015F alan ana \u0131\u015F\u0131\u011F\u0131',\r\n    studio_key_light: 'st\u00FCdyo ana \u0131\u015F\u0131\u011F\u0131',\r\n    model_key_light: 'model \u00E7ekimi ana \u0131\u015F\u0131\u011F\u0131',\r\n    two_person_key_light: 'iki ki\u015Filik r\u00F6portaj ana \u0131\u015F\u0131\u011F\u0131',\r\n    broadcast_key_light: 'yay\u0131n ana \u0131\u015F\u0131\u011F\u0131',\r\n    portable_key_light: 'ta\u015F\u0131nabilir ana \u0131\u015F\u0131k',\r\n    location_key_light: 'mekan \u00E7ekimi ana \u0131\u015F\u0131\u011F\u0131',\r\n    tabletop_key_light: 'masa\u00FCst\u00FC \u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131',\r\n    catalog_key_light: 'katalog \u00E7ekimi ana \u0131\u015F\u0131\u011F\u0131',\r\n    ecommerce_key_light: 'e-ticaret \u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131',\r\n    creative_key_light: 'kreatif ana \u0131\u015F\u0131k',\r\n    effect_light: 'efekt \u0131\u015F\u0131\u011F\u0131',\r\n    accent_light: 'vurgu \u0131\u015F\u0131\u011F\u0131',\r\n    color_separation_light: 'renk ayr\u0131m \u0131\u015F\u0131\u011F\u0131',\r\n    product_background_light: '\u00FCr\u00FCn arka plan \u0131\u015F\u0131\u011F\u0131',\r\n    face_light: 'y\u00FCz \u0131\u015F\u0131\u011F\u0131',\r\n    beauty_light: 'g\u00FCzellik/y\u00FCz \u0131\u015F\u0131\u011F\u0131',\r\n    clinical_fill_light: 'klinik dolgu \u0131\u015F\u0131\u011F\u0131',\r\n    dental_fill_light: 'dental dolgu \u0131\u015F\u0131\u011F\u0131',\r\n    ambient_light: 'ortam \u0131\u015F\u0131\u011F\u0131',\r\n    practical_light: 'pratik destek \u0131\u015F\u0131\u011F\u0131',\r\n    overhead_light: '\u00FCst \u0131\u015F\u0131k',\r\n    side_light: 'yan \u0131\u015F\u0131k',\r\n    front_light: '\u00F6n \u0131\u015F\u0131k',\r\n    back_light: 'arka \u0131\u015F\u0131k',\r\n    secondary_light: 'yard\u0131mc\u0131 \u0131\u015F\u0131k',\r\n    support_light: 'destek \u0131\u015F\u0131\u011F\u0131',\r\n    low_power_key_light: 'd\u00FC\u015F\u00FCk g\u00FC\u00E7l\u00FC ana \u0131\u015F\u0131k',\r\n    high_power_key_light: 'y\u00FCksek g\u00FC\u00E7l\u00FC ana \u0131\u015F\u0131k',\r\n    fixed_studio_key_light: 'sabit st\u00FCdyo ana \u0131\u015F\u0131\u011F\u0131'\r\n  });\r\n\r\n  function r29R4Clean(value) {\r\n    return String(value == null ? '' : value)\r\n      .replace(/\\s+/g, ' ')\r\n      .trim();\r\n  }\r\n\r\n  function r29R4Lower(value) {\r\n    return r29R4Clean(value).toLocaleLowerCase('tr-TR');\r\n  }\r\n\r\n  function r29R4EscapeRegExp(value) {\r\n    return String(value).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n  }\r\n\r\n  function r29R4RoleLabel(roleKey) {\r\n    return R29_R4_ROLE_LABELS_TR[r29R4Clean(roleKey)] || '';\r\n  }\r\n\r\n  function r29R4RoleKeysFromContext(context) {\r\n    var keys = [];\r\n    var adapter =\r\n      context && context.noraAdapter\r\n        ? context.noraAdapter\r\n        : {};\r\n    var scenario =\r\n      context && context.resolvedScenario\r\n        ? context.resolvedScenario\r\n        : {};\r\n\r\n    var primary = r29R4Clean(adapter.primaryRole);\r\n    if (primary) keys.push(primary);\r\n\r\n    (\r\n      Array.isArray(scenario.recommendedRoles)\r\n        ? scenario.recommendedRoles\r\n        : []\r\n    ).forEach(function(key){\r\n      key = r29R4Clean(key);\r\n      if (key && keys.indexOf(key) === -1) keys.push(key);\r\n    });\r\n\r\n    return keys;\r\n  }\r\n\r\n  function r29R4HumanizeRoleKeys(value, roleKeys) {\r\n    var output = r29R4Clean(value);\r\n\r\n    (roleKeys || []).slice().sort(function(a, b){\r\n      return b.length - a.length;\r\n    }).forEach(function(key){\r\n      var label = r29R4RoleLabel(key);\r\n      if (!label) return;\r\n\r\n      output = output.replace(\r\n        new RegExp(\r\n          '\\\\b' + r29R4EscapeRegExp(key) + '\\\\b',\r\n          'g'\r\n        ),\r\n        label\r\n      );\r\n    });\r\n\r\n    return r29R4Clean(output);\r\n  }\r\n\r\n  function r29R4EnsureSentence(value) {\r\n    value = r29R4Clean(value);\r\n    if (!value) return '';\r\n\r\n    value =\r\n      value.charAt(0).toLocaleUpperCase('tr-TR') +\r\n      value.slice(1);\r\n\r\n    if (!/[.!?\u2026]$/.test(value)) value += '.';\r\n    return value;\r\n  }\r\n\r\n  function r29R4Concise(value, maxChars) {\r\n    value = r29R4Clean(value);\r\n    maxChars = Number(maxChars || 170);\r\n\r\n    if (!value || value.length <= maxChars) {\r\n      return r29R4EnsureSentence(value);\r\n    }\r\n\r\n    var sentences =\r\n      value.match(/[^.!?\u2026]+[.!?\u2026]?/g) || [value];\r\n    var out = '';\r\n\r\n    sentences.some(function(sentence){\r\n      sentence = r29R4EnsureSentence(sentence);\r\n      var next = r29R4Clean(out + ' ' + sentence);\r\n\r\n      if (next.length > maxChars) return true;\r\n      out = next;\r\n      return false;\r\n    });\r\n\r\n    if (out) return out;\r\n\r\n    var clipped =\r\n      value.slice(0, Math.max(40, maxChars - 1));\r\n\r\n    clipped = clipped\r\n      .replace(/\\s+\\S*$/, '')\r\n      .replace(/[,:;\\-]+$/, '');\r\n\r\n    return r29R4EnsureSentence(clipped);\r\n  }\r\n\r\n  function r29R4NormalizedSentence(value) {\r\n    return r29R4Lower(value)\r\n      .replace(/[.!?\u2026,:;()\"'\u2019\u201C\u201D\\-]/g, ' ')\r\n      .replace(/\\s+/g, ' ')\r\n      .trim();\r\n  }\r\n\r\n  function r29R4IsDuplicate(value, accepted) {\r\n    var normalized = r29R4NormalizedSentence(value);\r\n    if (!normalized) return true;\r\n\r\n    return (accepted || []).some(function(existing){\r\n      var other = r29R4NormalizedSentence(existing);\r\n      if (!other) return false;\r\n      if (normalized === other) return true;\r\n\r\n      if (\r\n        normalized.length >= 45 &&\r\n        other.indexOf(normalized) > -1\r\n      ) {\r\n        return true;\r\n      }\r\n\r\n      if (\r\n        other.length >= 45 &&\r\n        normalized.indexOf(other) > -1\r\n      ) {\r\n        return true;\r\n      }\r\n\r\n      return false;\r\n    });\r\n  }\r\n\r\n  function r29R4PushUnique(target, value) {\r\n    value = r29R4Clean(value);\r\n\r\n    if (\r\n      !value ||\r\n      r29R4IsDuplicate(value, target)\r\n    ) {\r\n      return false;\r\n    }\r\n\r\n    target.push(value);\r\n    return true;\r\n  }\r\n\r\n  function r29R4FallbackCaution(scenarioType) {\r\n    if (scenarioType === 'rgb_background_accent') {\r\n      return 'RGB taraf\u0131n\u0131 ana \u0131\u015F\u0131k gibi de\u011Fil, arka plan ve kenar ayr\u0131m\u0131 i\u00E7in kullanmak daha sa\u011Fl\u0131kl\u0131 olur.';\r\n    }\r\n\r\n    if (scenarioType === 'compact_support_close_range') {\r\n      return 'Bu rol\u00FC geni\u015F alan ana \u0131\u015F\u0131\u011F\u0131 gibi de\u011Fil, yak\u0131n mesafede kontroll\u00FC destek olarak de\u011Ferlendirmek daha ger\u00E7ek\u00E7idir.';\r\n    }\r\n\r\n    return 'Teknik skor tek ba\u015F\u0131na karar de\u011Fildir; \u0131\u015F\u0131\u011F\u0131n rol\u00FC, mesafe ve kurulum bi\u00E7imi birlikte de\u011Ferlendirilmelidir.';\r\n  }\r\n\r\n  function r29R4FallbackSetupTip(scenarioType) {\r\n    if (scenarioType === 'rgb_background_accent') {\r\n      return 'RGB \u0131\u015F\u0131\u011F\u0131 arka plana veya konu arkas\u0131ndaki kenar hatt\u0131na y\u00F6nlendir; y\u00FCz \u0131\u015F\u0131\u011F\u0131n\u0131 ayr\u0131 ve do\u011Fal tut.';\r\n    }\r\n\r\n    if (scenarioType === 'compact_support_close_range') {\r\n      return 'I\u015F\u0131\u011F\u0131 yak\u0131n ve kontroll\u00FC konumland\u0131r; parlamay\u0131 azaltmak i\u00E7in a\u00E7\u0131y\u0131 yana al veya g\u00FCc\u00FC d\u00FC\u015F\u00FCr.';\r\n    }\r\n\r\n    return 'I\u015F\u0131\u011F\u0131 konuya 30\u201345 derece a\u00E7\u0131yla ve g\u00F6z hizas\u0131n\u0131n hafif \u00FCzerinde konumland\u0131r.';\r\n  }\r\n\r\n  function r29R4AlternativeLine(scenarioType) {\r\n    if (scenarioType === 'rgb_background_accent') {\r\n      return 'Ana \u0131\u015F\u0131k ihtiyac\u0131 i\u00E7in ayr\u0131 bir Bi-Color veya do\u011Fal beyaz \u0131\u015F\u0131k d\u00FC\u015F\u00FCn.';\r\n    }\r\n\r\n    if (scenarioType === 'compact_support_close_range') {\r\n      return 'Daha geni\u015F alan veya daha uzun mesafe gerekiyorsa daha y\u00FCksek g\u00FC\u00E7l\u00FC bir ana \u0131\u015F\u0131k d\u00FC\u015F\u00FCn.';\r\n    }\r\n\r\n    return 'Renkli atmosfer gerekiyorsa ana \u0131\u015F\u0131\u011F\u0131 de\u011Fi\u015Ftirmek yerine ayr\u0131 bir RGB vurgu \u0131\u015F\u0131\u011F\u0131 d\u00FC\u015F\u00FCn.';\r\n  }\r\n\r\n  function r29R4HasForbiddenClaim(value) {\r\n    return /kesinlikle en iyi|her kullan\u0131m i\u00E7in ideal|profesyonel sonu\u00E7 garantiler|rakipsiz|bunu almal\u0131s\u0131n|stokta kesin vard\u0131r|en m\u00FCkemmel|garantili sonu\u00E7|her senaryoda ana \u0131\u015F\u0131k/.test(\r\n      r29R4Lower(value)\r\n    );\r\n  }\r\n\r\n  function r29R4ContainsRawRoleKey(value, roleKeys) {\r\n    var source = r29R4Clean(value);\r\n\r\n    return (roleKeys || []).some(function(key){\r\n      return new RegExp(\r\n        '\\\\b' + r29R4EscapeRegExp(key) + '\\\\b'\r\n      ).test(source);\r\n    });\r\n  }\r\n\r\n  function r29R4ResolveContext() {\r\n    var selection = r28ReadOnlySelection();\r\n    var selectionKey =\r\n      r29R4Clean(\r\n        selection && selection.activeSelectionKey\r\n      );\r\n\r\n    if (!selectionKey) return null;\r\n\r\n    var target =\r\n      typeof W.resolvePanelV4R28R11Target === 'function'\r\n        ? W.resolvePanelV4R28R11Target(selection)\r\n        : null;\r\n\r\n    if (\r\n      target &&\r\n      (\r\n        r29R4Clean(target.mainKey) !==\r\n          r29R4Clean(state.mainKey) ||\r\n        r29R4Clean(target.subKey) !==\r\n          r29R4Clean(state.subKey)\r\n      )\r\n    ) {\r\n      return null;\r\n    }\r\n\r\n    var context = null;\r\n\r\n    if (\r\n      typeof W.resolvePanelV4R28SelectionContext ===\r\n      'function'\r\n    ) {\r\n      try {\r\n        context =\r\n          W.resolvePanelV4R28SelectionContext(selection);\r\n      } catch (ignore) {}\r\n    }\r\n\r\n    if (!context) {\r\n      context =\r\n        W.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n    }\r\n\r\n    var contextKey =\r\n      r29R4Clean(\r\n        context &&\r\n        context.activeSelection &&\r\n        context.activeSelection.activeSelectionKey\r\n      );\r\n\r\n    if (contextKey !== selectionKey) return null;\r\n    return context;\r\n  }\r\n\r\n  function r29R4BuildPreview(context) {\r\n    context = context || {};\r\n\r\n    var adapter = context.noraAdapter || {};\r\n    var scenario = context.resolvedScenario || {};\r\n    var active = context.activeSelection || {};\r\n    var scenarioType =\r\n      r29R4Clean(scenario.scenarioType);\r\n    var roleKeys =\r\n      r29R4RoleKeysFromContext(context);\r\n    var primaryRoleKey =\r\n      r29R4Clean(\r\n        adapter.primaryRole || roleKeys[0]\r\n      );\r\n    var primaryRoleLabel =\r\n      r29R4RoleLabel(primaryRoleKey);\r\n\r\n    if (r29R4Clean(active.activeSelectionKey) === R2I_RIM_KEY) {\r\n      primaryRoleKey = 'rim_light';\r\n      primaryRoleLabel = 'kontur / kenar \u0131\u015F\u0131\u011F\u0131';\r\n      return {\r\n        phase:'PANEL-V4-R2I-NORA-RIM-EDGE-CONTEXT',\r\n        version:R2I_VERSION,\r\n        activeSelectionKey:R2I_RIM_KEY,\r\n        activePurposeTitle:r29R4Clean(active.activePurposeTitle),\r\n        activeSubPurposeTitle:r29R4Clean(active.activeSubPurposeTitle),\r\n        scenarioKey:r29R4Clean(scenario.scenarioKey),\r\n        scenarioType:scenarioType,\r\n        primaryRoleKey:primaryRoleKey,\r\n        primaryRoleLabelTr:primaryRoleLabel,\r\n        roleKeys:['rim_light'],\r\n        blocks:[\r\n          { key:'comment', label:'NORA\u2019n\u0131n yorumu', text:'Bu se\u00E7imde \u0131\u015F\u0131\u011F\u0131n ana g\u00F6revi ki\u015Fi veya modeli fondan kontur \u00E7izgisiyle ay\u0131rmakt\u0131r.' },\r\n          { key:'caution', label:'Dikkat', text:'RGB \u0131\u015F\u0131\u011F\u0131n\u0131 y\u00FCz\u00FCn ana pozlamas\u0131na ta\u015F\u0131may\u0131n; do\u011Fal y\u00FCz ve cilt tonu i\u00E7in ana beyaz \u0131\u015F\u0131\u011F\u0131 ayr\u0131 tutun.' },\r\n          { key:'setupTip', label:'Kurulum ipucu', text:'RGB paneli konuya arka-yan a\u00E7\u0131dan y\u00F6neltin ve yaln\u0131z kenar \u00E7izgisini belirginle\u015Ftirecek seviyede kullan\u0131n.' },\r\n          { key:'alternative', label:'Alternatif d\u00FC\u015F\u00FCn', text:'Ana \u0131\u015F\u0131k ihtiyac\u0131 varsa ayr\u0131ca Bi-Color veya do\u011Fal beyaz bir ana \u0131\u015F\u0131k kullan\u0131n.' }\r\n        ],\r\n        compactText:'NORA\u2019n\u0131n yorumu: Bu se\u00E7imde \u0131\u015F\u0131\u011F\u0131n ana g\u00F6revi ki\u015Fi veya modeli fondan kontur \u00E7izgisiyle ay\u0131rmakt\u0131r. Dikkat: RGB \u0131\u015F\u0131\u011F\u0131n\u0131 y\u00FCz\u00FCn ana pozlamas\u0131na ta\u015F\u0131may\u0131n. Kurulum ipucu: RGB paneli arka-yan a\u00E7\u0131dan kullan\u0131n. Alternatif d\u00FC\u015F\u00FCn: Ana \u0131\u015F\u0131\u011F\u0131 ayr\u0131 beyaz \u0131\u015F\u0131kla kurun.',\r\n        policy:{ maxBlocks:4, sourceOwnedVisibleApplication:true, rawRoleKeysAllowed:false, forbiddenClaimsAllowed:false, observerAdded:false, documentClickListenerAdded:false }\r\n      };\r\n    }\r\n\r\n    var lines = [];\r\n\r\n    var comment = primaryRoleLabel\r\n      ? (\r\n          'Bu kullan\u0131mda \u0131\u015F\u0131\u011F\u0131 ' +\r\n          primaryRoleLabel +\r\n          ' rol\u00FCnde d\u00FC\u015F\u00FCnmek daha do\u011Fru.'\r\n        )\r\n      : 'Bu kullan\u0131mda \u0131\u015F\u0131\u011F\u0131n ger\u00E7ek rol\u00FCn\u00FC kurulum bi\u00E7imiyle birlikte de\u011Ferlendirmek daha do\u011Fru.';\r\n\r\n    r29R4PushUnique(\r\n      lines,\r\n      r29R4Concise(comment, 150)\r\n    );\r\n\r\n    var rawCaution =\r\n      r29R4HumanizeRoleKeys(\r\n        adapter.caution,\r\n        roleKeys\r\n      ) ||\r\n      r29R4FallbackCaution(scenarioType);\r\n\r\n    r29R4PushUnique(\r\n      lines,\r\n      r29R4Concise(rawCaution, 190)\r\n    );\r\n\r\n    var rawSetup =\r\n      r29R4HumanizeRoleKeys(\r\n        adapter.setupNote,\r\n        roleKeys\r\n      );\r\n\r\n    var setupTip =\r\n      rawSetup &&\r\n      !r29R4IsDuplicate(rawSetup, lines)\r\n        ? (\r\n            'Kurulum oda\u011F\u0131: ' +\r\n            rawSetup.replace(/[.!?\u2026]+$/, '') +\r\n            '.'\r\n          )\r\n        : r29R4FallbackSetupTip(scenarioType);\r\n\r\n    r29R4PushUnique(\r\n      lines,\r\n      r29R4Concise(setupTip, 185)\r\n    );\r\n\r\n    r29R4PushUnique(\r\n      lines,\r\n      r29R4Concise(\r\n        r29R4AlternativeLine(scenarioType),\r\n        175\r\n      )\r\n    );\r\n\r\n    var blocks = [\r\n      {\r\n        key: 'comment',\r\n        label: 'NORA\u2019n\u0131n yorumu',\r\n        text: lines[0] || ''\r\n      },\r\n      {\r\n        key: 'caution',\r\n        label: 'Dikkat',\r\n        text: lines[1] || ''\r\n      },\r\n      {\r\n        key: 'setupTip',\r\n        label: 'Kurulum ipucu',\r\n        text: lines[2] || ''\r\n      },\r\n      {\r\n        key: 'alternative',\r\n        label: 'Alternatif d\u00FC\u015F\u00FCn',\r\n        text: lines[3] || ''\r\n      }\r\n    ].filter(function(block){\r\n      return !!r29R4Clean(block.text);\r\n    });\r\n\r\n    return {\r\n      phase:\r\n        'PANEL-V4-R29-R4-GUARDED-NORA-RECOMMENDATION-CONTEXT-HEADER-SOURCE-APPLICATION',\r\n\r\n      version:\r\n        'PANEL-V4-R29-R4-GUARDED-NORA-RECOMMENDATION-CONTEXT-HEADER-V1',\r\n\r\n      activeSelectionKey:\r\n        r29R4Clean(active.activeSelectionKey),\r\n\r\n      activePurposeTitle:\r\n        r29R4Clean(active.activePurposeTitle),\r\n\r\n      activeSubPurposeTitle:\r\n        r29R4Clean(active.activeSubPurposeTitle),\r\n\r\n      scenarioKey:\r\n        r29R4Clean(scenario.scenarioKey),\r\n\r\n      scenarioType:\r\n        scenarioType,\r\n\r\n      primaryRoleKey:\r\n        primaryRoleKey,\r\n\r\n      primaryRoleLabelTr:\r\n        primaryRoleLabel,\r\n\r\n      roleKeys:\r\n        roleKeys,\r\n\r\n      blocks:\r\n        blocks,\r\n\r\n      compactText:\r\n        blocks.map(function(block){\r\n          return block.label + ': ' + block.text;\r\n        }).join(' '),\r\n\r\n      policy: {\r\n        maxBlocks: 4,\r\n        sourceOwnedVisibleApplication: true,\r\n        rawRoleKeysAllowed: false,\r\n        forbiddenClaimsAllowed: false,\r\n        observerAdded: false,\r\n        documentClickListenerAdded: false\r\n      }\r\n    };\r\n  }\r\n\r\n  function renderR29R4NoraContextHeader() {\r\n    var context = r29R4ResolveContext();\r\n\r\n    if (!context) {\r\n      state.noraContext = null;\r\n      W.GDX_PANEL_V4_R29_SECOND_VOICE_CONTEXT = null;\r\n      return '';\r\n    }\r\n\r\n    var preview = r29R4BuildPreview(context);\r\n    var blocks = preview.blocks || [];\r\n\r\n    if (\r\n      blocks.length < 3 ||\r\n      blocks.length > 4 ||\r\n      !preview.primaryRoleLabelTr ||\r\n      r29R4ContainsRawRoleKey(\r\n        preview.compactText,\r\n        preview.roleKeys\r\n      ) ||\r\n      r29R4HasForbiddenClaim(preview.compactText)\r\n    ) {\r\n      state.noraContext = null;\r\n      W.GDX_PANEL_V4_R29_SECOND_VOICE_CONTEXT = null;\r\n      return '';\r\n    }\r\n\r\n    state.noraContext = preview;\r\n    W.GDX_PANEL_V4_R29_SECOND_VOICE_CONTEXT =\r\n      preview;\r\n\r\n    return ''+\r\n      '<section class=\"gdx-r11-nora-context\" data-gdx-panel-r29-nora-context=\"1\" data-active-selection-key=\"' + esc(preview.activeSelectionKey) + '\">'+\r\n        '<header class=\"gdx-r11-nora-head\">'+\r\n          '<div>'+\r\n            '<span>NORA\u2019NIN KISA YORUMU</span>'+\r\n            '<h4>Bu \u00FC\u00E7 \u00F6neriyi nas\u0131l de\u011Ferlendirmeli?</h4>'+\r\n          '</div>'+\r\n          '<b data-gdx-panel-r29-nora-role=\"1\">' + esc(preview.primaryRoleLabelTr) + '</b>'+\r\n        '</header>'+\r\n        '<div class=\"gdx-r11-nora-grid\">'+\r\n          blocks.map(function(block){\r\n            return ''+\r\n              '<article class=\"gdx-r11-nora-block is-' + esc(block.key) + '\" data-gdx-panel-r29-nora-block=\"' + esc(block.key) + '\">'+\r\n                '<span>' + esc(block.label) + '</span>'+\r\n                '<p>' + esc(block.text) + '</p>'+\r\n              '</article>';\r\n          }).join('')+\r\n        '</div>'+\r\n      '</section>';\r\n  }\r\n\r\n  function renderReadOnlyContextSummary() {\r\n    var g = currentMain();\r\n    var s = currentSub();\r\n    var selection = r28ReadOnlySelection() || {};\r\n    var canonical = r28CanonicalDisplay(g, s);\r\n    var purposeTitle = canonical.purposeTitle;\r\n    var subPurposeTitle = canonical.subPurposeTitle;\r\n\r\n    return ''+\r\n      '<section class=\"gdx-r11-context-lock\" data-gdx-r11-readonly-context=\"1\" data-active-selection-key=\"' + esc(String(selection.activeSelectionKey || '')) + '\" aria-label=\"Se\u00E7ilen kullan\u0131m amac\u0131\">'+\r\n        '<div class=\"gdx-r11-context-cell\">'+\r\n          '<span>SE\u00C7\u0130LEN ANA AMA\u00C7</span>'+\r\n          '<strong data-gdx-r11-context-main=\"1\">' + esc(purposeTitle) + '</strong>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-context-cell\">'+\r\n          '<span>SE\u00C7\u0130LEN ALT AMA\u00C7</span>'+\r\n          '<strong data-gdx-r11-context-sub=\"1\">' + esc(subPurposeTitle) + '</strong>'+\r\n        '</div>'+\r\n        '<p>A\u015Fa\u011F\u0131daki \u00FC\u00E7 \u00FCr\u00FCn bu kullan\u0131m amac\u0131na g\u00F6re s\u0131raland\u0131.</p>'+\r\n      '</section>';\r\n  }\r\n\r\n  /* R28-R7-R3 compatibility: eski fonksiyon adlar\u0131 kal\u0131r fakat ba\u011F\u0131ms\u0131z selector \u00FCretmez. */\r\n  function renderMainTabs() { return ''; }\r\n  function renderSubTabs() { return ''; }\r\n\r\n  function renderPriorityChips() {\r\n    var sub = currentSub();\r\n    var labels = /rgb/.test(sub.intent)\r\n      ? ['RGB / HSI', 'Kontrol', 'Yarat\u0131c\u0131 Esneklik', 'F/P Dengesi']\r\n      : /clinical|beauty|product/.test(sub.intent)\r\n        ? ['Renk Do\u011Frulu\u011Fu', 'Yumu\u015Fak I\u015F\u0131k', 'I\u015F\u0131k G\u00FCc\u00FC', 'F/P Dengesi']\r\n        : ['Fiyat / Performans', 'I\u015F\u0131k G\u00FCc\u00FC', 'Renk Do\u011Frulu\u011Fu', 'Kullan\u0131m Uygunlu\u011Fu'];\r\n    return labels.map(function(l){ return '<span>' + esc(l) + '</span>'; }).join('');\r\n  }\r\n\r\n  function setupDistance(row) {\r\n    var p = Number(row.power || 0);\r\n    if (p >= 180) return '1.5\u20133 m';\r\n    if (p >= 120) return '1.2\u20132 m';\r\n    return '0.8\u20131.5 m';\r\n  }\r\n\r\n  function setupBand(row) {\r\n    var sub = row.sub || currentSub();\r\n    var dist = setupDistance(row);\r\n    var fill = /rgb|background|fx|brand/.test(sub.intent) ? 'Fon/FX' : 'Fill';\r\n    var canonical = r28CanonicalDisplay(currentMain(), sub);\r\n    return {\r\n      title: sub.roleLabel || 'Ana \u0131\u015F\u0131k / Key',\r\n      context: canonical.purposeTitle + ' \u00B7 ' + canonical.subPurposeTitle,\r\n      chips: [row.power ? row.power + 'W' : '', row.familyLabel, row.power >= 180 ? 'y\u00FCksek g\u00FC\u00E7' : 'orta', dist].filter(Boolean),\r\n      key: '35\u201345\u00B0 \u00B7 ' + dist,\r\n      fill: '25\u201340\u00B0 \u00B7 ' + dist,\r\n      fillLabel: fill,\r\n      uyum: 'Uygun'\r\n    };\r\n  }\r\n\r\n  var R30A_R4_PHASE =\r\n    'PANEL-V4-R30A-R4-SETUP-MODAL-GUARDED-VISUAL-APPLICATION';\r\n\r\n  var R30A_R4_VERSION =\r\n    'PANEL-V4-R30A-R4-SETUP-MODAL-GUARDED-VISUAL-APPLICATION-V1';\r\n\r\n  function r30AR4Clean(value) {\r\n    return String(value == null ? '' : value)\r\n      .replace(/\\u00a0/g, ' ')\r\n      .replace(/\\u202f/g, ' ')\r\n      .replace(/\\s+/g, ' ')\r\n      .trim();\r\n  }\r\n\r\n  function r30AR4NormalizeFamily(value) {\r\n    var source =\r\n      r30AR4Clean(value)\r\n        .toLocaleLowerCase('tr-TR');\r\n\r\n    if (\r\n      source === 'rgb' ||\r\n      source.indexOf('rgb') > -1\r\n    ) {\r\n      return 'rgb';\r\n    }\r\n\r\n    if (\r\n      source === 'bicolor' ||\r\n      source === 'bi-color' ||\r\n      source.indexOf('bicolor') > -1 ||\r\n      source.indexOf('bi-color') > -1\r\n    ) {\r\n      return 'bicolor';\r\n    }\r\n\r\n    if (\r\n      source === 'daylight_or_fixed_white' ||\r\n      source.indexOf('daylight') > -1 ||\r\n      source.indexOf('fixed_white') > -1\r\n    ) {\r\n      return 'daylight';\r\n    }\r\n\r\n    return source || 'unknown';\r\n  }\r\n\r\n  function r30AR4ColorMode(value) {\r\n    var family =\r\n      r30AR4NormalizeFamily(value);\r\n\r\n    if (family === 'rgb') {\r\n      return 'RGB';\r\n    }\r\n\r\n    if (family === 'bicolor') {\r\n      return 'Bi-Color';\r\n    }\r\n\r\n    if (family === 'daylight') {\r\n      return 'Daylight';\r\n    }\r\n\r\n    return 'Unknown';\r\n  }\r\n\r\n  function r30AR4NormalizeWattBand(value) {\r\n    var source =\r\n      r30AR4Clean(value)\r\n        .toLocaleLowerCase('tr-TR');\r\n\r\n    if (\r\n      [\r\n        'low',\r\n        'mid',\r\n        'high',\r\n        'pro'\r\n      ].indexOf(source) > -1\r\n    ) {\r\n      return source;\r\n    }\r\n\r\n    return 'unknown';\r\n  }\r\n\r\n  function r30AR4NormalizeRole(value) {\r\n    var source =\r\n      Array.isArray(value)\r\n        ? r30AR4Clean(value[0])\r\n        : r30AR4Clean(value);\r\n\r\n    return source ||\r\n      'manual_role_mapping_required';\r\n  }\r\n\r\n  function r30AR4SafeHttpsUrl(url) {\r\n    var value =\r\n      r30AR4Clean(url);\r\n\r\n    if (!value) {\r\n      return {\r\n        safe: true,\r\n        status: 'empty',\r\n        normalized: ''\r\n      };\r\n    }\r\n\r\n    if (\r\n      /^data:/i.test(value) ||\r\n      /^javascript:/i.test(value) ||\r\n      /^blob:/i.test(value) ||\r\n      !/^https:\\/\\//i.test(value)\r\n    ) {\r\n      return {\r\n        safe: false,\r\n        status: 'rejected_url',\r\n        normalized: ''\r\n      };\r\n    }\r\n\r\n    return {\r\n      safe: true,\r\n      status: 'safe_https',\r\n      normalized: value\r\n    };\r\n  }\r\n\r\n  function r30AR4VisualState() {\r\n    if (!state.r30aVisual) {\r\n      state.r30aVisual = {\r\n        requestToken: 0,\r\n        acceptedToken: 0,\r\n        activeTemplateKey: '',\r\n        activeRequestTemplateKey: '',\r\n        state: 'schematic_only',\r\n        schematicVisible: true,\r\n        cdnVisible: false,\r\n        cdnUrl: '',\r\n        errorCode: '',\r\n        lastEvent: 'init'\r\n      };\r\n    }\r\n\r\n    return state.r30aVisual;\r\n  }\r\n\r\n  function r30AR4SafeCall(name) {\r\n    try {\r\n      if (typeof W[name] !== 'function') {\r\n        return null;\r\n      }\r\n\r\n      return W[name]();\r\n    } catch (ignore) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function r30AR4VisualLock() {\r\n    var result =\r\n      r30AR4SafeCall(\r\n        'debugPanelV4R27A4CCdnVisualManifestLockVerify'\r\n      );\r\n\r\n    return result &&\r\n      result.ok === true &&\r\n      result.diagnostics &&\r\n      result.diagnostics.lockCandidate\r\n        ? result.diagnostics.lockCandidate\r\n        : null;\r\n  }\r\n\r\n  function r30AR4MapSignature() {\r\n    var cdnMap =\r\n      W.GDX_PANEL_V4_R30A_CDN_URL_MAP || {};\r\n\r\n    var schematicMap =\r\n      W.GDX_PANEL_V4_R30A_SCHEMATIC_URL_MAP || {};\r\n\r\n    try {\r\n      return JSON.stringify({\r\n        cdn: cdnMap,\r\n        schematic: schematicMap\r\n      });\r\n    } catch (ignore) {\r\n      return 'map_signature_unavailable';\r\n    }\r\n  }\r\n\r\n  function r30AR4BuildManifest() {\r\n    var lock =\r\n      r30AR4VisualLock();\r\n\r\n    var visuals =\r\n      lock &&\r\n      Array.isArray(lock.visuals)\r\n        ? lock.visuals\r\n        : [];\r\n\r\n    var cdnMap =\r\n      W.GDX_PANEL_V4_R30A_CDN_URL_MAP || {};\r\n\r\n    var schematicMap =\r\n      W.GDX_PANEL_V4_R30A_SCHEMATIC_URL_MAP || {};\r\n\r\n    var templates =\r\n      visuals.map(function (visual, index) {\r\n        var scenarioKey =\r\n          r30AR4Clean(\r\n            visual.scenarioKey\r\n          );\r\n\r\n        var family =\r\n          r30AR4NormalizeFamily(\r\n            visual.family\r\n          );\r\n\r\n        var wattBand =\r\n          r30AR4NormalizeWattBand(\r\n            visual.wattBand\r\n          );\r\n\r\n        var role =\r\n          r30AR4NormalizeRole(\r\n            visual.role\r\n          );\r\n\r\n        var colorMode =\r\n          r30AR4ColorMode(family);\r\n\r\n        var resolverKey =\r\n          [\r\n            family,\r\n            wattBand,\r\n            role,\r\n            colorMode\r\n          ].join('::');\r\n\r\n        var cdnSelectionKey =\r\n          [\r\n            scenarioKey,\r\n            family,\r\n            wattBand,\r\n            role\r\n          ].join('::');\r\n\r\n        var schematicKey =\r\n          r30AR4Clean(\r\n            visual.fallbackSchemaKey\r\n          );\r\n\r\n        var rawCdnUrl =\r\n          r30AR4Clean(\r\n            cdnMap[cdnSelectionKey] ||\r\n            cdnMap[scenarioKey] ||\r\n            cdnMap[visual.visualKey] ||\r\n            visual.cdnUrl\r\n          );\r\n\r\n        var rawSchematicUrl =\r\n          r30AR4Clean(\r\n            schematicMap[schematicKey] ||\r\n            schematicMap[scenarioKey]\r\n          );\r\n\r\n        var cdnPolicy =\r\n          r30AR4SafeHttpsUrl(\r\n            rawCdnUrl\r\n          );\r\n\r\n        var schematicPolicy =\r\n          r30AR4SafeHttpsUrl(\r\n            rawSchematicUrl\r\n          );\r\n\r\n        return {\r\n          index:\r\n            index + 1,\r\n\r\n          templateKey:\r\n            scenarioKey,\r\n\r\n          scenarioKey:\r\n            scenarioKey,\r\n\r\n          purposeKey:\r\n            r30AR4Clean(\r\n              visual.purposeKey\r\n            ),\r\n\r\n          subPurposeKey:\r\n            r30AR4Clean(\r\n              visual.subPurposeKey\r\n            ),\r\n\r\n          scenarioType:\r\n            r30AR4Clean(\r\n              visual.scenarioType\r\n            ),\r\n\r\n          family:\r\n            family,\r\n\r\n          colorMode:\r\n            colorMode,\r\n\r\n          wattBand:\r\n            wattBand,\r\n\r\n          role:\r\n            role,\r\n\r\n          resolverKey:\r\n            resolverKey,\r\n\r\n          cdnSelectionKey:\r\n            cdnSelectionKey,\r\n\r\n          schematicKey:\r\n            schematicKey,\r\n\r\n          schematicUrl:\r\n            schematicPolicy.safe\r\n              ? schematicPolicy.normalized\r\n              : '',\r\n\r\n          schematicStatus:\r\n            schematicPolicy.status ===\r\n              'safe_https'\r\n                ? 'assigned_https'\r\n                : (\r\n                    schematicPolicy.status ===\r\n                      'rejected_url'\r\n                      ? 'rejected_url_fallback'\r\n                      : 'key_ready_asset_pending'\r\n                  ),\r\n\r\n          cdnUrl:\r\n            cdnPolicy.safe\r\n              ? cdnPolicy.normalized\r\n              : '',\r\n\r\n          cdnStatus:\r\n            cdnPolicy.status ===\r\n              'safe_https'\r\n                ? 'assigned_https'\r\n                : (\r\n                    cdnPolicy.status ===\r\n                      'rejected_url'\r\n                      ? 'rejected_url_fallback'\r\n                      : 'placeholder_pending_upload'\r\n                  ),\r\n\r\n          loadMode:\r\n            'eager_on_setup_modal_open',\r\n\r\n          fallbackPolicy:\r\n            'canonical_cdn_never_legacy_schematic__schematic_only_without_canonical_cdn',\r\n\r\n          altText:\r\n            r30AR4Clean(\r\n              visual.altText\r\n            ) ||\r\n            'Panel LED setup kullan\u0131m g\u00F6rseli'\r\n        };\r\n      });\r\n\r\n    return {\r\n      libraryName:\r\n        'GDX_PANEL_V4_R30A_SETUP_VISUAL_MANIFEST',\r\n\r\n      phase:\r\n        R30A_R4_PHASE,\r\n\r\n      version:\r\n        R30A_R4_VERSION,\r\n\r\n      templateCount:\r\n        templates.length,\r\n\r\n      schematicSlotCount:\r\n        templates.length,\r\n\r\n      cdnSlotCount:\r\n        templates.length,\r\n\r\n      idealAssetSlotCount:\r\n        templates.length * 2,\r\n\r\n      productExpandedVisualCount:\r\n        0,\r\n\r\n      resolverPattern:\r\n        'family + wattBand + role + colorMode',\r\n\r\n      cdnSelectionPattern:\r\n        'scenarioKey + family + wattBand + role',\r\n\r\n      performanceRules: {\r\n        noBase64:\r\n          true,\r\n        noHiddenImagePool:\r\n          true,\r\n        maxActiveCdnImageNodes:\r\n          1,\r\n        noInactivePreload:\r\n          true,\r\n        lazyLoadOnSetupModalOpen:\r\n          true,\r\n        schematicVisibleDuringPending:\r\n          false,\r\n        schematicVisibleDuringError:\r\n          false,\r\n        canonicalCdnNeverShowsLegacySchematic:\r\n          true,\r\n        schematicOnlyWithoutCanonicalCdn:\r\n          true,\r\n        staleRequestTokenGuard:\r\n          true\r\n      },\r\n\r\n      mapSignature:\r\n        r30AR4MapSignature(),\r\n\r\n      templates:\r\n        templates\r\n    };\r\n  }\r\n\r\n  function r30AR4EnsureManifest(force) {\r\n    if (!W.GDX_PANEL_V4_R30A_CDN_URL_MAP) {\r\n  W.GDX_PANEL_V4_R30A_CDN_URL_MAP = {};\r\n}\r\n\r\nObject.assign(\r\n  W.GDX_PANEL_V4_R30A_CDN_URL_MAP,\r\n  {\r\n    \"clinic_aesthetic_dental_clinic_social_content_balanced_key_fill::bicolor::mid::clinical_soft_front\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/30-Dis_klinigi_fotograf_cekimi_duzeni.png?v=1784365223\",\r\n\r\n    \"clinic_aesthetic_dental_clinic_social_content_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/32-Profesyonel_video_cekim_duzeni.png?v=1784366116\",\r\n\r\n    \"clinic_aesthetic_dental_clinic_social_content_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/31-Klinik_sunum_isiklandirma_duzenlemesi.png?v=1784366191\",\r\n\r\n    \"clinic_aesthetic_dental_dental_support_balanced_key_fill::bicolor::mid::clinical_soft_front\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/27-Dis_klinigi_aydinlatma_duzeni_rehberi.png?v=1784364743\",\r\n\r\n    \"clinic_aesthetic_dental_dental_support_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/29-Dis_tedavi_odasi_aydinlatma_rehberi.png?v=1784364830\",\r\n\r\n    \"clinic_aesthetic_dental_dental_support_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/25-Studio_isiklandirma_duzeni_ve_ayarlari.png?v=1784364904\",\r\n\r\n    \"clinic_aesthetic_dental_skin_face_capture_balanced_key_fill::bicolor::mid::clinical_soft_front\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/11-aydinlik_dis_odasinda_dengeli_isik_yerlesimi.png?v=1784221425\",\r\n\r\n    \"clinic_aesthetic_dental_skin_face_capture_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/Professional_studio_setup_with_lighting_guide.png?v=1784365671\",\r\n\r\n    \"clinic_aesthetic_dental_skin_face_capture_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/25._Klinik_fotograf_studyosu_duzeni_RGB_arka_plan.png?v=1784364527\",\r\n\r\n    \"interview_talking_head_corporate_training_video_balanced_key_fill::bicolor::mid::interview_key\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/22-Profesyonel_isiklandirma_duzeni_egitimi.png?v=1784363273\",\r\n\r\n    \"interview_talking_head_corporate_training_video_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/8-Studyo_Aydinlatma_Duzeni_ve_Bilgiler.png?v=1784363937\",\r\n\r\n    \"interview_talking_head_corporate_training_video_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/8-Standart_3_nokta_aydinlatma_semasi.png?v=1784362380\",\r\n\r\n    \"interview_talking_head_single_interview_balanced_key_fill::bicolor::mid::interview_key\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/23-dengeli_iki_panel_led_kurulumu.png?v=1784221313\",\r\n\r\n    \"interview_talking_head_single_interview_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/24-Isiklandirma_Diyagrami_Roportaj_Kurulumu.png?v=1784363441\",\r\n\r\n    \"interview_talking_head_single_interview_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/17-Studyo_ve_aydinlatma_duzeni_diyagrami.png?v=1784362249\",\r\n\r\n    \"interview_talking_head_two_person_interview_balanced_key_fill::bicolor::mid::interview_key\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/42-Studyo_aydinlatma_duzeni_diyagrami.png?v=1784362572\",\r\n\r\n    \"interview_talking_head_two_person_interview_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/21-Iki_kisilik_roportaj_aydinlatma_duzeni.png?v=1784363163\",\r\n\r\n    \"interview_talking_head_two_person_interview_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/59-Podcast_studyosu_aydinlatma_duzeni.png?v=1784362829\",\r\n\r\n    \"mobile_outdoor_battery_shoot_balanced_key_fill::bicolor::low::portable_interview_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/49-Dis_mekan_aydinlatma_ve_fotografcilik_egitim_grafigi.png?v=1784375032\",\r\n\r\n    \"mobile_outdoor_battery_shoot_compact_support_close_range::bicolor::low::portable_interview_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/19-Panel_LED_cift_isik_kurulumu.png?v=1784221601\",\r\n\r\n    \"mobile_outdoor_battery_shoot_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/52-Dis_Mekan_Aydinlatma_Kurulumu_Rehberi.png?v=1784375101\",\r\n\r\n    \"mobile_outdoor_fast_location_setup_balanced_key_fill::bicolor::low::portable_interview_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/64-Studyo_isiklandirma_duzeni_ve_yonergeleri.png?v=1784375299\",\r\n\r\n    \"mobile_outdoor_fast_location_setup_compact_support_close_range::bicolor::low::portable_interview_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/8-Standart_3_nokta_aydinlatma_semasi_d2ae51a3-4011-4eeb-ab7b-d899a768d5de.png?v=1784376170\",\r\n\r\n    \"mobile_outdoor_fast_location_setup_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/55-Isiklandirma_ve_kamera_yapilandirma_rehberi.png?v=1784375397\",\r\n\r\n    \"mobile_outdoor_portable_team_balanced_key_fill::bicolor::low::portable_interview_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/53-Gece_roportaj_isiklandirma_rehberi.png?v=1784375164\",\r\n\r\n    \"mobile_outdoor_portable_team_compact_support_close_range::bicolor::low::portable_interview_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/53-Dis_mekan_portre_aydinlatma_duzeni.png?v=1784376309\",\r\n\r\n    \"mobile_outdoor_portable_team_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/14-performans_icin_profesyonel_led_panel_isiklandirma_kurulumu_c3928963-a97e-491b-aec3-0bd4650856f7.png?v=1784375536\",\r\n\r\n    \"product_ecommerce_large_product_model_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/6-Studyo_isik_duzeni_diyagrami.png?v=1784359611\",\r\n\r\n    \"product_ecommerce_large_product_model_compact_support_close_range::bicolor::low::product_top_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/46-Studyo_isik_duzeni_ve_diagramlari.png?v=1784359913\",\r\n\r\n    \"product_ecommerce_large_product_model_rgb_background_accent::rgb::low::rgb_accent\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/42-Studyo_isik_kurulum_diyagrami.png?v=1784359831\",\r\n\r\n    \"product_ecommerce_marketplace_catalog_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/3-urun_studyosu_teknik_isik_kurulumu.png?v=1784221171\",\r\n\r\n    \"product_ecommerce_marketplace_catalog_compact_support_close_range::bicolor::low::product_top_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/08._Pazar_yeri_katalog_cekimi_Kompakt_destek_yakin_mesafe.png?v=1784360463\",\r\n\r\n    \"product_ecommerce_marketplace_catalog_rgb_background_accent::rgb::low::rgb_accent\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/39-Studyo_aydinlatma_duzeni_rehberi.png?v=1784360256\",\r\n\r\n    \"product_ecommerce_small_product_tabletop_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/1-Urun_Fotografciligi_Studyosu_Egitim_Grafigi.png?v=1784358548\",\r\n\r\n    \"product_ecommerce_small_product_tabletop_compact_support_close_range::bicolor::low::product_top_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/1-Urun_fotografi_isik_duzeni_rehberi.png?v=1784359059\",\r\n\r\n    \"product_ecommerce_small_product_tabletop_rgb_background_accent::rgb::low::rgb_accent\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/2-Urun_cekimi_studyo_duzeni_rehberi.png?v=1784358841\",\r\n\r\n    \"rgb_creative_video_background_color_effect_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/57-Studyo_isik_kurulumu_rehberi.png?v=1784371771\",\r\n\r\n    \"rgb_creative_video_background_color_effect_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/17-Studyo_Portre_Aydinlatma_Duzeni.png?v=1784371467\",\r\n\r\n    \"rgb_creative_video_background_color_effect_rgb_background_accent::rgb::mid::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/38-Studyo_portre_aydinlatma_duzeni.png?v=1784371244\",\r\n\r\n    \"rgb_creative_video_music_clip_scene_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/14-performans_icin_profesyonel_led_panel_isiklandirma_kurulumu.png?v=1784367226\",\r\n\r\n    \"rgb_creative_video_music_clip_scene_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/36-Muzik_Performansi_Isiklama_Rehberi.png?v=1784367794\",\r\n\r\n    \"rgb_creative_video_music_clip_scene_rgb_background_accent::rgb::mid::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/Studyo_isiklandirma_duzeni_ve_semasi.png?v=1784221512\",\r\n\r\n    \"rgb_creative_video_product_color_separation_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/Urun_fotografciligi_isiklandirma_kilavuzu.png?v=1784370165\",\r\n\r\n    \"rgb_creative_video_product_color_separation_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/7-Urun_fotografciligi_aydinlatma_diyagrami.png?v=1784370737\",\r\n\r\n    \"rgb_creative_video_product_color_separation_rgb_background_accent::rgb::mid::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/5-Urun_fotografi_isik_duzeni_diyagrami.png?v=1784370440\",\r\n\r\n    \"starter_budget_practical_budget_setup_balanced_key_fill::bicolor::low::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/11-Isik_duzeni_ve_kamera_rehberi_58ccb57f-6b8f-4c69-8dc4-d31da9d813f6.png?v=1784376662\",\r\n\r\n    \"starter_budget_practical_budget_setup_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/14-Evde_yayin_isik_yerlesimi_diyagrami.png?v=1784377072\",\r\n\r\n    \"starter_budget_practical_budget_setup_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/10-Studyo_aydinlatma_duzeni_ve_oneriler.png?v=1784376758\",\r\n\r\n    \"starter_budget_practical_first_light_choice_balanced_key_fill::bicolor::low::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/24-kucuk_alanda_dengeli_aydinlatma_kurulumu.png?v=1784221660\",\r\n\r\n    \"starter_budget_practical_first_light_choice_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/14-Evde_Isik_Yerlesimi_diagrami..png?v=1784376522\",\r\n\r\n    \"starter_budget_practical_first_light_choice_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/12-Studyo_aydinlatma_ve_kamera_yerlesimi.png?v=1784376588\",\r\n\r\n    \"starter_budget_practical_small_space_solution_balanced_key_fill::bicolor::low::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/24-Isiklandirma_Diyagrami_Roportaj_Kurulumu_caf40341-3d41-4fba-bc0b-0579b0e4c54e.png?v=1784377285\",\r\n\r\n    \"starter_budget_practical_small_space_solution_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/16-Canli_yayin_studyosu_duzeni_aciklamasi.png?v=1784377233\",\r\n\r\n    \"starter_budget_practical_small_space_solution_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/57-Studyo_isik_kurulumu_rehberi_e7f615f4-924a-4efd-b890-f25d22be9228.png?v=1784377156\",\r\n\r\n    \"studio_professional_campaign_ad_visual_balanced_key_fill::bicolor::high::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/43-Studyo_isiklandirma_ve_fotograf_duzeni.png?v=1784372996\",\r\n\r\n    \"studio_professional_campaign_ad_visual_compact_support_close_range::bicolor::mid::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/9-Profesyonel_studyo_aydinlatma_diyagrami.png?v=1784373191\",\r\n\r\n    \"studio_professional_campaign_ad_visual_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/45-Studyo_aydinlatma_duzeni_ve_model.png?v=1784372997\",\r\n\r\n    \"studio_professional_fixed_studio_setup_balanced_key_fill::bicolor::high::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/46-Studyo_aydinlatma_ve_kamera_duzeni.png?v=1784374061\",\r\n\r\n    \"studio_professional_fixed_studio_setup_compact_support_close_range::bicolor::mid::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/1-Urun_Fotografciligi_Studyosu_Egitim_Grafigi_232f3666-2f70-4025-8f08-efd89f59e197.png?v=1784374399\",\r\n\r\n    \"studio_professional_fixed_studio_setup_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/5-Studyo_Aydinlatma_ve_Model_Duzeni.png?v=1784372531\",\r\n\r\n    \"studio_professional_model_shoot_balanced_key_fill::bicolor::high::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/2-iki_isikli_profesyonel_studyo_kurulumu.png?v=1784221565\",\r\n\r\n    \"studio_professional_model_shoot_compact_support_close_range::bicolor::mid::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/4-Studyo_aydinlatma_diyagrami_ve_fotografcilik_rehberi.png?v=1784372531\",\r\n\r\n    \"studio_professional_model_shoot_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/47-Studyo_Fotografciligi_Isik_Diyagrami_a53946ce-4d1a-49b5-9aa7-7ac4faf837a3.png?v=1784372850\",\r\n\r\n    \"youtube_reels_social_live_stream_talk_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/12-Fotografci_icin_aydinlatma_rehberi.png?v=1784361971\",\r\n\r\n    \"youtube_reels_social_live_stream_talk_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/11-Isik_duzeni_ve_kamera_rehberi.png?v=1784362137\",\r\n\r\n    \"youtube_reels_social_live_stream_talk_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/43-Studyo_aydinlatma_duzeni_rehberi.png?v=1784361932\",\r\n\r\n    \"youtube_reels_social_short_video_reels_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/62-Ev_studyosu_ve_aydinlatma_rehberi.png?v=1784361831\",\r\n\r\n    \"youtube_reels_social_short_video_reels_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/13-Isik_duzeni_ve_fotograf_kurallari.png?v=1784361703\",\r\n\r\n    \"youtube_reels_social_short_video_reels_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/11-Ev_studyosu_aydinlatma_ve_donanim_duzeni.png?v=1784361508\",\r\n\r\n    \"youtube_reels_social_single_person_video_balanced_key_fill::bicolor::mid::key_light\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/6-Canli_yayin_ev_studyosu_aydinlatmasi.png?v=1784221259\",\r\n\r\n    \"youtube_reels_social_single_person_video_compact_support_close_range::bicolor::low::close_range_support\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/10-Ev_ofisi_ve_isiklandirma_duzeni.png?v=1784361319\",\r\n\r\n    \"youtube_reels_social_single_person_video_rgb_background_accent::rgb::low::rgb_background_wash\":\r\n      \"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/12-Studyo_Aydinlatma_Sellemesi_ve_Kurulum_Diagrami.png?v=1784360897\"\r\n  }\r\n);\r\n\r\n    if (!W.GDX_PANEL_V4_R30A_SCHEMATIC_URL_MAP) {\r\n      W.GDX_PANEL_V4_R30A_SCHEMATIC_URL_MAP = {};\r\n    }\r\n\r\n    var current =\r\n      W.GDX_PANEL_V4_R30A_SETUP_VISUAL_MANIFEST;\r\n\r\n    var signature =\r\n      r30AR4MapSignature();\r\n\r\n    if (\r\n      !force &&\r\n      current &&\r\n      current.version ===\r\n        R30A_R4_VERSION &&\r\n      current.templateCount === 72 &&\r\n      current.mapSignature ===\r\n        signature\r\n    ) {\r\n      return current;\r\n    }\r\n\r\n    var next =\r\n      r30AR4BuildManifest();\r\n\r\n    W.GDX_PANEL_V4_R30A_SETUP_VISUAL_MANIFEST =\r\n      next;\r\n\r\n    return next;\r\n  }\r\n\r\n\r\n  /* PANEL-V4-R32-AF02-N1 \u2014 64 EXACT + 8 DEFERRED PRODUCTION CANDIDATE */\r\n  var R32_AF02_N1_VERSION =\r\n    'PANEL-V4-R32-AF02-N1-64-EXACT-8-DEFERRED-PRODUCTION-CANDIDATE-V1';\r\n\r\n  var R32_AF02_DEFERRED_MANIFEST_ORDERS =\r\n    [7,10,19,28,41,46,57,64];\r\n\r\n  var R32_AF02_TRUTH_BY_TEMPLATE =\r\n    {\"product_ecommerce_small_product_tabletop_balanced_key_fill\":{\"manifestOrder\":1,\"templateKey\":\"product_ecommerce_small_product_tabletop_balanced_key_fill\",\"cdnSelectionKey\":\"product_ecommerce_small_product_tabletop_balanced_key_fill::bicolor::mid::key_light\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn / masa\u00FCst\u00FC \u00E7ekim\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":30.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.9,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"N\u00F6tr \u00FCr\u00FCn rengi \u00B7 Temiz beyaz\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"\u00DCr\u00FCn y\u00FCzeyinde patlama, sert spek\u00FCler leke veya karanl\u0131k yan y\u00FCz olu\u015Fturma. Ana \u0131\u015F\u0131k \u00FCr\u00FCn\u00FCn sol \u00F6n\u00FCnde ve biraz y\u00FCksek; dolgu sa\u011F \u00F6nde daha yumu\u015Fak olsun.\"},\"product_ecommerce_small_product_tabletop_rgb_background_accent\":{\"manifestOrder\":2,\"templateKey\":\"product_ecommerce_small_product_tabletop_rgb_background_accent\",\"cdnSelectionKey\":\"product_ecommerce_small_product_tabletop_rgb_background_accent::rgb::low::rgb_accent\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn / masa\u00FCst\u00FC \u00E7ekim\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":120.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.35,\"panelFamily\":\"B\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.9,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"N\u00F6tr \u00FCr\u00FCn rengi \u00B7 Temiz beyaz\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"\u00DCr\u00FCn y\u00FCzeyinde patlama, sert spek\u00FCler leke veya karanl\u0131k yan y\u00FCz olu\u015Fturma. Ana \u0131\u015F\u0131k \u00FCr\u00FCn\u00FCn sol \u00F6n\u00FCnde ve biraz y\u00FCksek; dolgu sa\u011F \u00F6nde daha yumu\u015Fak olsun. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"product_ecommerce_small_product_tabletop_compact_support_close_range\":{\"manifestOrder\":3,\"templateKey\":\"product_ecommerce_small_product_tabletop_compact_support_close_range\",\"cdnSelectionKey\":\"product_ecommerce_small_product_tabletop_compact_support_close_range::bicolor::low::product_top_light\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn / masa\u00FCst\u00FC \u00E7ekim\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"\u00DCst Destek\",\"angleDeg\":20.0,\"distanceM\":0.9,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.6,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"N\u00F6tr \u00FCr\u00FCn rengi \u00B7 Temiz beyaz\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"\u00DCr\u00FCn y\u00FCzeyinde patlama, sert spek\u00FCler leke veya karanl\u0131k yan y\u00FCz olu\u015Fturma. Ana \u0131\u015F\u0131k \u00FCr\u00FCn\u00FCn sol \u00F6n\u00FCnde ve biraz y\u00FCksek; dolgu sa\u011F \u00F6nde daha yumu\u015Fak olsun. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"product_ecommerce_large_product_model_balanced_key_fill\":{\"manifestOrder\":4,\"templateKey\":\"product_ecommerce_large_product_model_balanced_key_fill\",\"cdnSelectionKey\":\"product_ecommerce_large_product_model_balanced_key_fill::bicolor::mid::key_light\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"B\u00FCy\u00FCk \u00FCr\u00FCn / model \u00E7ekimi\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.1,\"band\":\"Orta Bant\",\"heightM\":2.3,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":30.0,\"distanceM\":2.3,\"band\":\"Orta Bant\",\"heightM\":2.15,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":4.2,\"band\":\"Uzak Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Do\u011Fal cilt \u00B7 Do\u011Fru \u00FCr\u00FCn rengi\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Kuma\u015F dokusu, \u00FCr\u00FCn rengi ve cilt tonu ayn\u0131 anda do\u011Fal kalmal\u0131. Panel boyutu modeli tam boy kapsayacak kadar b\u00FCy\u00FCk g\u00F6r\u00FCnmeli; k\u00FC\u00E7\u00FCk mobil panel kullanma.\"},\"product_ecommerce_large_product_model_rgb_background_accent\":{\"manifestOrder\":5,\"templateKey\":\"product_ecommerce_large_product_model_rgb_background_accent\",\"cdnSelectionKey\":\"product_ecommerce_large_product_model_rgb_background_accent::rgb::low::rgb_accent\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"B\u00FCy\u00FCk \u00FCr\u00FCn / model \u00E7ekimi\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.1,\"band\":\"Orta Bant\",\"heightM\":2.3,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":125.0,\"distanceM\":2.3,\"band\":\"Orta Bant\",\"heightM\":2.05,\"panelFamily\":\"A\",\"colorMode\":\"RGB\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":4.2,\"band\":\"Uzak Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Do\u011Fal cilt \u00B7 Do\u011Fru \u00FCr\u00FCn rengi\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Kuma\u015F dokusu, \u00FCr\u00FCn rengi ve cilt tonu ayn\u0131 anda do\u011Fal kalmal\u0131. Panel boyutu modeli tam boy kapsayacak kadar b\u00FCy\u00FCk g\u00F6r\u00FCnmeli; k\u00FC\u00E7\u00FCk mobil panel kullanma. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"product_ecommerce_large_product_model_compact_support_close_range\":{\"manifestOrder\":6,\"templateKey\":\"product_ecommerce_large_product_model_compact_support_close_range\",\"cdnSelectionKey\":\"product_ecommerce_large_product_model_compact_support_close_range::bicolor::low::product_top_light\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"B\u00FCy\u00FCk \u00FCr\u00FCn / model \u00E7ekimi\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":2.3,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"\u00DCst Destek\",\"angleDeg\":20.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":3.0,\"band\":\"Uzak Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Do\u011Fal cilt \u00B7 Do\u011Fru \u00FCr\u00FCn rengi\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kuma\u015F dokusu, \u00FCr\u00FCn rengi ve cilt tonu ayn\u0131 anda do\u011Fal kalmal\u0131. Panel boyutu modeli tam boy kapsayacak kadar b\u00FCy\u00FCk g\u00F6r\u00FCnmeli; k\u00FC\u00E7\u00FCk mobil panel kullanma. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"product_ecommerce_marketplace_catalog_rgb_background_accent\":{\"manifestOrder\":8,\"templateKey\":\"product_ecommerce_marketplace_catalog_rgb_background_accent\",\"cdnSelectionKey\":\"product_ecommerce_marketplace_catalog_rgb_background_accent::rgb::low::rgb_accent\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"Pazar yeri / katalog \u00E7ekimi\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.85,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":120.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.6,\"panelFamily\":\"B\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.1,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"Katalog beyaz\u0131 \u00B7 N\u00F6tr \u00FCr\u00FCn\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Beyaz fonda \u00FCr\u00FCn kenar ayr\u0131m\u0131 ve temiz katalog g\u00F6lgesi korunmal\u0131. Pencere \u0131\u015F\u0131\u011F\u0131 yok denecek kadar d\u00FC\u015F\u00FCk olsun. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"product_ecommerce_marketplace_catalog_compact_support_close_range\":{\"manifestOrder\":9,\"templateKey\":\"product_ecommerce_marketplace_catalog_compact_support_close_range\",\"cdnSelectionKey\":\"product_ecommerce_marketplace_catalog_compact_support_close_range::bicolor::low::product_top_light\",\"mainPurpose\":\"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\"subPurpose\":\"Pazar yeri / katalog \u00E7ekimi\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"\u00DCst Destek\",\"angleDeg\":20.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.1,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.8,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"Katalog beyaz\u0131 \u00B7 N\u00F6tr \u00FCr\u00FCn\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Beyaz fonda \u00FCr\u00FCn kenar ayr\u0131m\u0131 ve temiz katalog g\u00F6lgesi korunmal\u0131. Pencere \u0131\u015F\u0131\u011F\u0131 yok denecek kadar d\u00FC\u015F\u00FCk olsun. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"youtube_reels_social_single_person_video_rgb_background_accent\":{\"manifestOrder\":11,\"templateKey\":\"youtube_reels_social_single_person_video_rgb_background_accent\",\"cdnSelectionKey\":\"youtube_reels_social_single_person_video_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"Tek ki\u015Filik video\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.6,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.2,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Do\u011Fal cilt \u00B7 Odayla uyum\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Konu do\u011Fal konu\u015Fma jesti yaps\u0131n; eller anatomik do\u011Fru olsun. Pencere yaln\u0131z hafif dif\u00FCz ortam katk\u0131s\u0131 versin, y\u00FCz\u00FCn ana \u015Fekillendirmesini paneller yaps\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"youtube_reels_social_single_person_video_compact_support_close_range\":{\"manifestOrder\":12,\"templateKey\":\"youtube_reels_social_single_person_video_compact_support_close_range\",\"cdnSelectionKey\":\"youtube_reels_social_single_person_video_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"Tek ki\u015Filik video\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.8,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Do\u011Fal cilt \u00B7 Odayla uyum\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Konu do\u011Fal konu\u015Fma jesti yaps\u0131n; eller anatomik do\u011Fru olsun. Pencere yaln\u0131z hafif dif\u00FCz ortam katk\u0131s\u0131 versin, y\u00FCz\u00FCn ana \u015Fekillendirmesini paneller yaps\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"youtube_reels_social_short_video_reels_balanced_key_fill\":{\"manifestOrder\":13,\"templateKey\":\"youtube_reels_social_short_video_reels_balanced_key_fill\",\"cdnSelectionKey\":\"youtube_reels_social_short_video_reels_balanced_key_fill::bicolor::mid::key_light\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"K\u0131sa video / Reels\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.05,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.9,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.9,\"band\":\"Orta Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"Do\u011Fal cilt \u00B7 Ortamla e\u015Fle\u015Ftir\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kamera/telefon rig\u2019i ana oda\u011Fa d\u00F6n\u00FC\u015Fmesin. Kompakt paneller yak\u0131n mesafeye uygun ger\u00E7ek \u00F6l\u00E7ekte olsun; dev st\u00FCdyo paneli kullanma.\"},\"youtube_reels_social_short_video_reels_rgb_background_accent\":{\"manifestOrder\":14,\"templateKey\":\"youtube_reels_social_short_video_reels_rgb_background_accent\",\"cdnSelectionKey\":\"youtube_reels_social_short_video_reels_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"K\u0131sa video / Reels\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.05,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":110.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.8,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.9,\"band\":\"Orta Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"Do\u011Fal cilt \u00B7 Ortamla e\u015Fle\u015Ftir\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kamera/telefon rig\u2019i ana oda\u011Fa d\u00F6n\u00FC\u015Fmesin. Kompakt paneller yak\u0131n mesafeye uygun ger\u00E7ek \u00F6l\u00E7ekte olsun; dev st\u00FCdyo paneli kullanma. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"youtube_reels_social_short_video_reels_compact_support_close_range\":{\"manifestOrder\":15,\"templateKey\":\"youtube_reels_social_short_video_reels_compact_support_close_range\",\"cdnSelectionKey\":\"youtube_reels_social_short_video_reels_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"K\u0131sa video / Reels\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.05,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.9,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.6,\"band\":\"Orta Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"Do\u011Fal cilt \u00B7 Ortamla e\u015Fle\u015Ftir\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kamera/telefon rig\u2019i ana oda\u011Fa d\u00F6n\u00FC\u015Fmesin. Kompakt paneller yak\u0131n mesafeye uygun ger\u00E7ek \u00F6l\u00E7ekte olsun; dev st\u00FCdyo paneli kullanma. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"youtube_reels_social_live_stream_talk_balanced_key_fill\":{\"manifestOrder\":16,\"templateKey\":\"youtube_reels_social_live_stream_talk_balanced_key_fill\",\"cdnSelectionKey\":\"youtube_reels_social_live_stream_talk_balanced_key_fill::bicolor::mid::key_light\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"Canl\u0131 yay\u0131n / konu\u015Fma\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.75,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.5,\"band\":\"Orta Bant\",\"heightM\":1.6,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.1,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Uzun yay\u0131n \u00B7 Ekranla dengeli\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Pencereden gelen g\u00FCn \u0131\u015F\u0131\u011F\u0131 azalm\u0131\u015F olsun; Panel LED gereklili\u011Fi belirgin olsun. Monit\u00F6rde parlama ve y\u00FCzde renk kaymas\u0131 olu\u015Fmas\u0131n.\"},\"youtube_reels_social_live_stream_talk_rgb_background_accent\":{\"manifestOrder\":17,\"templateKey\":\"youtube_reels_social_live_stream_talk_rgb_background_accent\",\"cdnSelectionKey\":\"youtube_reels_social_live_stream_talk_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"Canl\u0131 yay\u0131n / konu\u015Fma\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.75,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.5,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.1,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Uzun yay\u0131n \u00B7 Ekranla dengeli\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Pencereden gelen g\u00FCn \u0131\u015F\u0131\u011F\u0131 azalm\u0131\u015F olsun; Panel LED gereklili\u011Fi belirgin olsun. Monit\u00F6rde parlama ve y\u00FCzde renk kaymas\u0131 olu\u015Fmas\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"youtube_reels_social_live_stream_talk_compact_support_close_range\":{\"manifestOrder\":18,\"templateKey\":\"youtube_reels_social_live_stream_talk_compact_support_close_range\",\"cdnSelectionKey\":\"youtube_reels_social_live_stream_talk_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"YouTube / Reels / Sosyal Medya\",\"subPurpose\":\"Canl\u0131 yay\u0131n / konu\u015Fma\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.75,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.6,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.8,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Uzun yay\u0131n \u00B7 Ekranla dengeli\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Pencereden gelen g\u00FCn \u0131\u015F\u0131\u011F\u0131 azalm\u0131\u015F olsun; Panel LED gereklili\u011Fi belirgin olsun. Monit\u00F6rde parlama ve y\u00FCzde renk kaymas\u0131 olu\u015Fmas\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"interview_talking_head_single_interview_rgb_background_accent\":{\"manifestOrder\":20,\"templateKey\":\"interview_talking_head_single_interview_rgb_background_accent\",\"cdnSelectionKey\":\"interview_talking_head_single_interview_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"Tek ki\u015Filik r\u00F6portaj\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.85,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":120.0,\"distanceM\":1.8,\"band\":\"Orta Bant\",\"heightM\":1.6,\"panelFamily\":\"B\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Do\u011Fal cilt \u00B7 S\u0131cak ortam dengesi\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Ana \u0131\u015F\u0131k daha belirgin ve yak\u0131n; dolgu daha yumu\u015Fak olsun. Y\u00FCzde do\u011Fal y\u00F6n, g\u00F6z \u0131\u015F\u0131\u011F\u0131 ve hafif modelleme korunsun. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"interview_talking_head_single_interview_compact_support_close_range\":{\"manifestOrder\":21,\"templateKey\":\"interview_talking_head_single_interview_compact_support_close_range\",\"cdnSelectionKey\":\"interview_talking_head_single_interview_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"Tek ki\u015Filik r\u00F6portaj\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.2,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Do\u011Fal cilt \u00B7 S\u0131cak ortam dengesi\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Ana \u0131\u015F\u0131k daha belirgin ve yak\u0131n; dolgu daha yumu\u015Fak olsun. Y\u00FCzde do\u011Fal y\u00F6n, g\u00F6z \u0131\u015F\u0131\u011F\u0131 ve hafif modelleme korunsun. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"interview_talking_head_two_person_interview_balanced_key_fill\":{\"manifestOrder\":22,\"templateKey\":\"interview_talking_head_two_person_interview_balanced_key_fill\",\"cdnSelectionKey\":\"interview_talking_head_two_person_interview_balanced_key_fill::bicolor::mid::interview_key\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"\u0130ki ki\u015Filik r\u00F6portaj\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":2.2,\"band\":\"Orta Bant\",\"heightM\":2.1,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":30.0,\"distanceM\":2.4,\"band\":\"Orta Bant\",\"heightM\":2.0,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":3.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"\u0130ki cilt tonu \u00B7 Ortak denge\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"\u0130ki ki\u015Finin y\u00FCz\u00FC dengeli ve do\u011Fal pozlanmal\u0131. \u00DCstten G\u00F6r\u00FCn\u00FCmde iki konu ve ortak merkez a\u00E7\u0131k\u00E7a g\u00F6sterilmeli. K\u00FC\u00E7\u00FCk mobil panel kullanma.\"},\"interview_talking_head_two_person_interview_rgb_background_accent\":{\"manifestOrder\":23,\"templateKey\":\"interview_talking_head_two_person_interview_rgb_background_accent\",\"cdnSelectionKey\":\"interview_talking_head_two_person_interview_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"\u0130ki ki\u015Filik r\u00F6portaj\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":2.2,\"band\":\"Orta Bant\",\"heightM\":2.1,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":125.0,\"distanceM\":2.4,\"band\":\"Orta Bant\",\"heightM\":1.9,\"panelFamily\":\"A\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":3.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"\u0130ki cilt tonu \u00B7 Ortak denge\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"\u0130ki ki\u015Finin y\u00FCz\u00FC dengeli ve do\u011Fal pozlanmal\u0131. \u00DCstten G\u00F6r\u00FCn\u00FCmde iki konu ve ortak merkez a\u00E7\u0131k\u00E7a g\u00F6sterilmeli. K\u00FC\u00E7\u00FCk mobil panel kullanma. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"interview_talking_head_two_person_interview_compact_support_close_range\":{\"manifestOrder\":24,\"templateKey\":\"interview_talking_head_two_person_interview_compact_support_close_range\",\"cdnSelectionKey\":\"interview_talking_head_two_person_interview_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"\u0130ki ki\u015Filik r\u00F6portaj\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.8,\"band\":\"Orta Bant\",\"heightM\":2.1,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":25.0,\"distanceM\":2.0,\"band\":\"Orta Bant\",\"heightM\":2.0,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":3.0,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"\u0130ki cilt tonu \u00B7 Ortak denge\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"\u0130ki ki\u015Finin y\u00FCz\u00FC dengeli ve do\u011Fal pozlanmal\u0131. \u00DCstten G\u00F6r\u00FCn\u00FCmde iki konu ve ortak merkez a\u00E7\u0131k\u00E7a g\u00F6sterilmeli. K\u00FC\u00E7\u00FCk mobil panel kullanma. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"interview_talking_head_corporate_training_video_balanced_key_fill\":{\"manifestOrder\":25,\"templateKey\":\"interview_talking_head_corporate_training_video_balanced_key_fill\",\"cdnSelectionKey\":\"interview_talking_head_corporate_training_video_balanced_key_fill::bicolor::mid::interview_key\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"Kurumsal / e\u011Fitim videosu\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.0,\"band\":\"Orta Bant\",\"heightM\":2.2,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":30.0,\"distanceM\":2.2,\"band\":\"Orta Bant\",\"heightM\":2.0,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":3.8,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Kurumsal n\u00F6tr \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Ekran/pano \u00FCzerinde okunamaz yaz\u0131 \u00FCretme; bo\u015F sade y\u00FCzey kullan. I\u015F\u0131klar e\u011Fitmeni ayd\u0131nlats\u0131n, ekranda yans\u0131ma olu\u015Fturmas\u0131n.\"},\"interview_talking_head_corporate_training_video_rgb_background_accent\":{\"manifestOrder\":26,\"templateKey\":\"interview_talking_head_corporate_training_video_rgb_background_accent\",\"cdnSelectionKey\":\"interview_talking_head_corporate_training_video_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"Kurumsal / e\u011Fitim videosu\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.0,\"band\":\"Orta Bant\",\"heightM\":2.2,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":120.0,\"distanceM\":2.2,\"band\":\"Orta Bant\",\"heightM\":1.9,\"panelFamily\":\"A\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":3.8,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Kurumsal n\u00F6tr \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Ekran/pano \u00FCzerinde okunamaz yaz\u0131 \u00FCretme; bo\u015F sade y\u00FCzey kullan. I\u015F\u0131klar e\u011Fitmeni ayd\u0131nlats\u0131n, ekranda yans\u0131ma olu\u015Fturmas\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"interview_talking_head_corporate_training_video_compact_support_close_range\":{\"manifestOrder\":27,\"templateKey\":\"interview_talking_head_corporate_training_video_compact_support_close_range\",\"cdnSelectionKey\":\"interview_talking_head_corporate_training_video_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"R\u00F6portaj / Talking Head\",\"subPurpose\":\"Kurumsal / e\u011Fitim videosu\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":2.2,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":25.0,\"distanceM\":1.8,\"band\":\"Orta Bant\",\"heightM\":2.0,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":3.0,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Kurumsal n\u00F6tr \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Ekran/pano \u00FCzerinde okunamaz yaz\u0131 \u00FCretme; bo\u015F sade y\u00FCzey kullan. I\u015F\u0131klar e\u011Fitmeni ayd\u0131nlats\u0131n, ekranda yans\u0131ma olu\u015Fturmas\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"clinic_aesthetic_dental_skin_face_capture_rgb_background_accent\":{\"manifestOrder\":29,\"templateKey\":\"clinic_aesthetic_dental_skin_face_capture_rgb_background_accent\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_skin_face_capture_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Cilt / y\u00FCz \u00E7ekimi\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.65,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.7,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Do\u011Fal cilt tonu \u00B7 Klinik n\u00F6tr\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Cilt tonu, y\u00FCz hacmi ve doku do\u011Fal kals\u0131n. Sert g\u00F6lge, a\u015F\u0131r\u0131 p\u00FCr\u00FCzs\u00FCzl\u00FCk veya klinik beyazda renk kaymas\u0131 olmas\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"clinic_aesthetic_dental_skin_face_capture_compact_support_close_range\":{\"manifestOrder\":30,\"templateKey\":\"clinic_aesthetic_dental_skin_face_capture_compact_support_close_range\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_skin_face_capture_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Cilt / y\u00FCz \u00E7ekimi\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":35.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.65,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.5,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Do\u011Fal cilt tonu \u00B7 Klinik n\u00F6tr\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Cilt tonu, y\u00FCz hacmi ve doku do\u011Fal kals\u0131n. Sert g\u00F6lge, a\u015F\u0131r\u0131 p\u00FCr\u00FCzs\u00FCzl\u00FCk veya klinik beyazda renk kaymas\u0131 olmas\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"clinic_aesthetic_dental_dental_support_balanced_key_fill\":{\"manifestOrder\":31,\"templateKey\":\"clinic_aesthetic_dental_dental_support_balanced_key_fill\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_dental_support_balanced_key_fill::bicolor::mid::clinical_soft_front\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Dental destek\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":35.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"Dental renk do\u011Frulu\u011Fu \u00B7 Temiz beyaz\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"A\u011F\u0131z i\u00E7i destek amac\u0131n\u0131 anlat, ancak grafik medikal yak\u0131n plan \u00FCretme. I\u015F\u0131klar yans\u0131ma ve sert g\u00F6lgeyi azaltmal\u0131; di\u015F rengi n\u00F6tr kalmal\u0131.\"},\"clinic_aesthetic_dental_dental_support_rgb_background_accent\":{\"manifestOrder\":32,\"templateKey\":\"clinic_aesthetic_dental_dental_support_rgb_background_accent\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_dental_support_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Dental destek\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":35.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.35,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"Dental renk do\u011Frulu\u011Fu \u00B7 Temiz beyaz\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"A\u011F\u0131z i\u00E7i destek amac\u0131n\u0131 anlat, ancak grafik medikal yak\u0131n plan \u00FCretme. I\u015F\u0131klar yans\u0131ma ve sert g\u00F6lgeyi azaltmal\u0131; di\u015F rengi n\u00F6tr kalmal\u0131. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"clinic_aesthetic_dental_dental_support_compact_support_close_range\":{\"manifestOrder\":33,\"templateKey\":\"clinic_aesthetic_dental_dental_support_compact_support_close_range\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_dental_support_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Dental destek\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":35.0,\"distanceM\":0.9,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5200,5600],\"note\":\"Dental renk do\u011Frulu\u011Fu \u00B7 Temiz beyaz\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"A\u011F\u0131z i\u00E7i destek amac\u0131n\u0131 anlat, ancak grafik medikal yak\u0131n plan \u00FCretme. I\u015F\u0131klar yans\u0131ma ve sert g\u00F6lgeyi azaltmal\u0131; di\u015F rengi n\u00F6tr kalmal\u0131. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"clinic_aesthetic_dental_clinic_social_content_balanced_key_fill\":{\"manifestOrder\":34,\"templateKey\":\"clinic_aesthetic_dental_clinic_social_content_balanced_key_fill\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_clinic_social_content_balanced_key_fill::bicolor::mid::clinical_soft_front\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Klinik sosyal medya i\u00E7eri\u011Fi\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.8,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.65,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.7,\"band\":\"Orta Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4800,5400],\"note\":\"Klinik n\u00F6tr \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Uzman y\u00FCz\u00FC do\u011Fal ve g\u00FCven veren g\u00F6r\u00FCnmeli. Pencere/oda \u0131\u015F\u0131\u011F\u0131 yaln\u0131z \u00E7ok d\u00FC\u015F\u00FCk ortam katk\u0131s\u0131 olsun; klinik beyazlarda renk kaymas\u0131 olmas\u0131n.\"},\"clinic_aesthetic_dental_clinic_social_content_rgb_background_accent\":{\"manifestOrder\":35,\"templateKey\":\"clinic_aesthetic_dental_clinic_social_content_rgb_background_accent\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_clinic_social_content_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Klinik sosyal medya i\u00E7eri\u011Fi\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.8,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.7,\"band\":\"Orta Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4800,5400],\"note\":\"Klinik n\u00F6tr \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Uzman y\u00FCz\u00FC do\u011Fal ve g\u00FCven veren g\u00F6r\u00FCnmeli. Pencere/oda \u0131\u015F\u0131\u011F\u0131 yaln\u0131z \u00E7ok d\u00FC\u015F\u00FCk ortam katk\u0131s\u0131 olsun; klinik beyazlarda renk kaymas\u0131 olmas\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"clinic_aesthetic_dental_clinic_social_content_compact_support_close_range\":{\"manifestOrder\":36,\"templateKey\":\"clinic_aesthetic_dental_clinic_social_content_compact_support_close_range\",\"cdnSelectionKey\":\"clinic_aesthetic_dental_clinic_social_content_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"Klinik / Estetik / Dental\",\"subPurpose\":\"Klinik sosyal medya i\u00E7eri\u011Fi\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.8,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.65,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.5,\"band\":\"Orta Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4800,5400],\"note\":\"Klinik n\u00F6tr \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Uzman y\u00FCz\u00FC do\u011Fal ve g\u00FCven veren g\u00F6r\u00FCnmeli. Pencere/oda \u0131\u015F\u0131\u011F\u0131 yaln\u0131z \u00E7ok d\u00FC\u015F\u00FCk ortam katk\u0131s\u0131 olsun; klinik beyazlarda renk kaymas\u0131 olmas\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"rgb_creative_video_background_color_effect_balanced_key_fill\":{\"manifestOrder\":37,\"templateKey\":\"rgb_creative_video_background_color_effect_balanced_key_fill\",\"cdnSelectionKey\":\"rgb_creative_video_background_color_effect_balanced_key_fill::bicolor::mid::key_light\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"Arka plan renk efekti\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.45,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.2,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Beyaz Ana I\u015F\u0131k \u00B7 RGB\u2019den ba\u011F\u0131ms\u0131z\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"RGB \u0131\u015F\u0131k y\u00FCz\u00FCn ana pozlamas\u0131n\u0131 \u00FCstlenmesin; yaln\u0131z arka plan ve hafif kenar ayr\u0131m\u0131 olu\u015Ftursun. Cilt tonu do\u011Fal kals\u0131n.\"},\"rgb_creative_video_background_color_effect_rgb_background_accent\":{\"manifestOrder\":38,\"templateKey\":\"rgb_creative_video_background_color_effect_rgb_background_accent\",\"cdnSelectionKey\":\"rgb_creative_video_background_color_effect_rgb_background_accent::rgb::mid::rgb_background_wash\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"Arka plan renk efekti\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.35,\"panelFamily\":\"B\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.2,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Beyaz Ana I\u015F\u0131k \u00B7 RGB\u2019den ba\u011F\u0131ms\u0131z\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"RGB \u0131\u015F\u0131k y\u00FCz\u00FCn ana pozlamas\u0131n\u0131 \u00FCstlenmesin; yaln\u0131z arka plan ve hafif kenar ayr\u0131m\u0131 olu\u015Ftursun. Cilt tonu do\u011Fal kals\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"rgb_creative_video_background_color_effect_compact_support_close_range\":{\"manifestOrder\":39,\"templateKey\":\"rgb_creative_video_background_color_effect_compact_support_close_range\",\"cdnSelectionKey\":\"rgb_creative_video_background_color_effect_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"Arka plan renk efekti\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.8,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Beyaz Ana I\u015F\u0131k \u00B7 RGB\u2019den ba\u011F\u0131ms\u0131z\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"RGB \u0131\u015F\u0131k y\u00FCz\u00FCn ana pozlamas\u0131n\u0131 \u00FCstlenmesin; yaln\u0131z arka plan ve hafif kenar ayr\u0131m\u0131 olu\u015Ftursun. Cilt tonu do\u011Fal kals\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"rgb_creative_video_music_clip_scene_balanced_key_fill\":{\"manifestOrder\":40,\"templateKey\":\"rgb_creative_video_music_clip_scene_balanced_key_fill\",\"cdnSelectionKey\":\"rgb_creative_video_music_clip_scene_balanced_key_fill::bicolor::mid::key_light\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"M\u00FCzik klibi / sahne\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":2.1,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.8,\"band\":\"Orta Bant\",\"heightM\":1.75,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.3,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Beyaz Ana I\u015F\u0131k \u00B7 Atmosfer dengesi\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"RGB renkler yarat\u0131c\u0131 ama kontroll\u00FC olsun; y\u00FCzde a\u015F\u0131r\u0131 renk bula\u015Fmas\u0131, sahte sis veya \u00FC\u00E7\u00FCnc\u00FC t\u00FCp LED kullanma.\"},\"rgb_creative_video_music_clip_scene_compact_support_close_range\":{\"manifestOrder\":42,\"templateKey\":\"rgb_creative_video_music_clip_scene_compact_support_close_range\",\"cdnSelectionKey\":\"rgb_creative_video_music_clip_scene_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"M\u00FCzik klibi / sahne\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.1,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.5,\"band\":\"Orta Bant\",\"heightM\":1.75,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.0,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Beyaz Ana I\u015F\u0131k \u00B7 Atmosfer dengesi\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"RGB renkler yarat\u0131c\u0131 ama kontroll\u00FC olsun; y\u00FCzde a\u015F\u0131r\u0131 renk bula\u015Fmas\u0131, sahte sis veya \u00FC\u00E7\u00FCnc\u00FC t\u00FCp LED kullanma. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"rgb_creative_video_product_color_separation_balanced_key_fill\":{\"manifestOrder\":43,\"templateKey\":\"rgb_creative_video_product_color_separation_balanced_key_fill\",\"cdnSelectionKey\":\"rgb_creative_video_product_color_separation_balanced_key_fill::bicolor::mid::key_light\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"\u00DCr\u00FCnde renk ayr\u0131\u015Ft\u0131rma\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.6,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":30.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.4,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.9,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"\u00DCr\u00FCn rengi do\u011Fru \u00B7 RGB yaln\u0131z fon\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"\u00DCr\u00FCn rengi do\u011Fal kalmal\u0131; RGB yaln\u0131z fonda halo/ayr\u0131m \u00FCretmeli. Yans\u0131t\u0131c\u0131 y\u00FCzeylerde a\u015F\u0131r\u0131 renk bula\u015Fmas\u0131 olmas\u0131n.\"},\"rgb_creative_video_product_color_separation_rgb_background_accent\":{\"manifestOrder\":44,\"templateKey\":\"rgb_creative_video_product_color_separation_rgb_background_accent\",\"cdnSelectionKey\":\"rgb_creative_video_product_color_separation_rgb_background_accent::rgb::mid::rgb_background_wash\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"\u00DCr\u00FCnde renk ayr\u0131\u015Ft\u0131rma\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.6,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":120.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.3,\"panelFamily\":\"B\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.9,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"\u00DCr\u00FCn rengi do\u011Fru \u00B7 RGB yaln\u0131z fon\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"\u00DCr\u00FCn rengi do\u011Fal kalmal\u0131; RGB yaln\u0131z fonda halo/ayr\u0131m \u00FCretmeli. Yans\u0131t\u0131c\u0131 y\u00FCzeylerde a\u015F\u0131r\u0131 renk bula\u015Fmas\u0131 olmas\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"rgb_creative_video_product_color_separation_compact_support_close_range\":{\"manifestOrder\":45,\"templateKey\":\"rgb_creative_video_product_color_separation_compact_support_close_range\",\"cdnSelectionKey\":\"rgb_creative_video_product_color_separation_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"RGB / Kreatif Video\",\"subPurpose\":\"\u00DCr\u00FCnde renk ayr\u0131\u015Ft\u0131rma\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.6,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.4,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.6,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"\u00DCr\u00FCn rengi do\u011Fru \u00B7 RGB yaln\u0131z fon\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"\u00DCr\u00FCn rengi do\u011Fal kalmal\u0131; RGB yaln\u0131z fonda halo/ayr\u0131m \u00FCretmeli. Yans\u0131t\u0131c\u0131 y\u00FCzeylerde a\u015F\u0131r\u0131 renk bula\u015Fmas\u0131 olmas\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"studio_professional_model_shoot_rgb_background_accent\":{\"manifestOrder\":47,\"templateKey\":\"studio_professional_model_shoot_rgb_background_accent\",\"cdnSelectionKey\":\"studio_professional_model_shoot_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Model \u00E7ekimi\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.4,\"band\":\"Orta Bant\",\"heightM\":2.4,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":125.0,\"distanceM\":2.8,\"band\":\"Uzak Bant\",\"heightM\":2.1,\"panelFamily\":\"A\",\"colorMode\":\"RGB\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":5.2,\"band\":\"Uzak Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Do\u011Fal cilt \u00B7 Kuma\u015F rengi\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Panel boyutu tam boy modeli kapsayacak kadar b\u00FCy\u00FCk olmal\u0131. K\u00FC\u00E7\u00FCk mobil panel, yak\u0131n mesafe veya ev st\u00FCdyosu \u00F6l\u00E7e\u011Fi kullanma. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"studio_professional_model_shoot_compact_support_close_range\":{\"manifestOrder\":48,\"templateKey\":\"studio_professional_model_shoot_compact_support_close_range\",\"cdnSelectionKey\":\"studio_professional_model_shoot_compact_support_close_range::bicolor::mid::close_range_support\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Model \u00E7ekimi\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.8,\"band\":\"Orta Bant\",\"heightM\":2.4,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":25.0,\"distanceM\":2.0,\"band\":\"Orta Bant\",\"heightM\":2.2,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":3.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"D\u0130KEY\",\"bodyOrientation\":\"PORTRAIT\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Do\u011Fal cilt \u00B7 Kuma\u015F rengi\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Panel boyutu tam boy modeli kapsayacak kadar b\u00FCy\u00FCk olmal\u0131. K\u00FC\u00E7\u00FCk mobil panel, yak\u0131n mesafe veya ev st\u00FCdyosu \u00F6l\u00E7e\u011Fi kullanma. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"studio_professional_campaign_ad_visual_balanced_key_fill\":{\"manifestOrder\":49,\"templateKey\":\"studio_professional_campaign_ad_visual_balanced_key_fill\",\"cdnSelectionKey\":\"studio_professional_campaign_ad_visual_balanced_key_fill::bicolor::high::key_light\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Kampanya / reklam g\u00F6rseli\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.4,\"band\":\"Orta Bant\",\"heightM\":2.5,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":30.0,\"distanceM\":2.8,\"band\":\"Uzak Bant\",\"heightM\":2.3,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":5.0,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4800,5600],\"note\":\"Kampanya n\u00F6tr\u00FC \u00B7 Renk do\u011Frulu\u011Fu\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Kampanya hissi set ve pozdan gelsin; reklam yaz\u0131s\u0131, logo veya paket vaadi kullanma. \u00DCr\u00FCn ve model birlikte do\u011Fru pozlans\u0131n.\"},\"studio_professional_campaign_ad_visual_rgb_background_accent\":{\"manifestOrder\":50,\"templateKey\":\"studio_professional_campaign_ad_visual_rgb_background_accent\",\"cdnSelectionKey\":\"studio_professional_campaign_ad_visual_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Kampanya / reklam g\u00F6rseli\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.4,\"band\":\"Orta Bant\",\"heightM\":2.5,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":125.0,\"distanceM\":2.8,\"band\":\"Uzak Bant\",\"heightM\":2.2,\"panelFamily\":\"A\",\"colorMode\":\"RGB\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":5.0,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4800,5600],\"note\":\"Kampanya n\u00F6tr\u00FC \u00B7 Renk do\u011Frulu\u011Fu\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Kampanya hissi set ve pozdan gelsin; reklam yaz\u0131s\u0131, logo veya paket vaadi kullanma. \u00DCr\u00FCn ve model birlikte do\u011Fru pozlans\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"studio_professional_campaign_ad_visual_compact_support_close_range\":{\"manifestOrder\":51,\"templateKey\":\"studio_professional_campaign_ad_visual_compact_support_close_range\",\"cdnSelectionKey\":\"studio_professional_campaign_ad_visual_compact_support_close_range::bicolor::mid::close_range_support\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Kampanya / reklam g\u00F6rseli\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.8,\"band\":\"Orta Bant\",\"heightM\":2.5,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":25.0,\"distanceM\":2.0,\"band\":\"Orta Bant\",\"heightM\":2.3,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":3.4,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4800,5600],\"note\":\"Kampanya n\u00F6tr\u00FC \u00B7 Renk do\u011Frulu\u011Fu\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Kampanya hissi set ve pozdan gelsin; reklam yaz\u0131s\u0131, logo veya paket vaadi kullanma. \u00DCr\u00FCn ve model birlikte do\u011Fru pozlans\u0131n. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"studio_professional_fixed_studio_setup_balanced_key_fill\":{\"manifestOrder\":52,\"templateKey\":\"studio_professional_fixed_studio_setup_balanced_key_fill\",\"cdnSelectionKey\":\"studio_professional_fixed_studio_setup_balanced_key_fill::bicolor::high::key_light\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Sabit st\u00FCdyo kurulumu\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.4,\"band\":\"Orta Bant\",\"heightM\":2.4,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":30.0,\"distanceM\":2.7,\"band\":\"Uzak Bant\",\"heightM\":2.2,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":5.2,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Sabit st\u00FCdyo standard\u0131 \u00B7 Tutarl\u0131 seri\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Kurulum kal\u0131c\u0131 ve profesyonel g\u00F6r\u00FCnmeli; ancak tavan ray\u0131, \u00FC\u00E7\u00FCnc\u00FC \u0131\u015F\u0131k veya softbox kullanma. Ayaklar a\u011F\u0131r ve g\u00FCvenli olsun.\"},\"studio_professional_fixed_studio_setup_rgb_background_accent\":{\"manifestOrder\":53,\"templateKey\":\"studio_professional_fixed_studio_setup_rgb_background_accent\",\"cdnSelectionKey\":\"studio_professional_fixed_studio_setup_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Sabit st\u00FCdyo kurulumu\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":2.4,\"band\":\"Orta Bant\",\"heightM\":2.4,\"panelFamily\":\"A\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":120.0,\"distanceM\":2.7,\"band\":\"Uzak Bant\",\"heightM\":2.1,\"panelFamily\":\"A\",\"colorMode\":\"RGB\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":5.2,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Sabit st\u00FCdyo standard\u0131 \u00B7 Tutarl\u0131 seri\"},\"panelFamilies\":[\"A\"],\"scenarioSpecialRule\":\"Kurulum kal\u0131c\u0131 ve profesyonel g\u00F6r\u00FCnmeli; ancak tavan ray\u0131, \u00FC\u00E7\u00FCnc\u00FC \u0131\u015F\u0131k veya softbox kullanma. Ayaklar a\u011F\u0131r ve g\u00FCvenli olsun. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"studio_professional_fixed_studio_setup_compact_support_close_range\":{\"manifestOrder\":54,\"templateKey\":\"studio_professional_fixed_studio_setup_compact_support_close_range\",\"cdnSelectionKey\":\"studio_professional_fixed_studio_setup_compact_support_close_range::bicolor::mid::close_range_support\",\"mainPurpose\":\"St\u00FCdyo / Profesyonel\",\"subPurpose\":\"Sabit st\u00FCdyo kurulumu\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.8,\"band\":\"Orta Bant\",\"heightM\":2.4,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":25.0,\"distanceM\":2.0,\"band\":\"Orta Bant\",\"heightM\":2.2,\"panelFamily\":\"B\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Model / \u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":3.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[5000,5600],\"note\":\"Sabit st\u00FCdyo standard\u0131 \u00B7 Tutarl\u0131 seri\"},\"panelFamilies\":[\"B\"],\"scenarioSpecialRule\":\"Kurulum kal\u0131c\u0131 ve profesyonel g\u00F6r\u00FCnmeli; ancak tavan ray\u0131, \u00FC\u00E7\u00FCnc\u00FC \u0131\u015F\u0131k veya softbox kullanma. Ayaklar a\u011F\u0131r ve g\u00FCvenli olsun. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"mobile_outdoor_battery_shoot_balanced_key_fill\":{\"manifestOrder\":55,\"templateKey\":\"mobile_outdoor_battery_shoot_balanced_key_fill\",\"cdnSelectionKey\":\"mobile_outdoor_battery_shoot_balanced_key_fill::bicolor::low::portable_interview_light\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Bataryal\u0131 \u00E7ekim\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.0,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.5,\"band\":\"Orta Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Alt\u0131n saat dengesi \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Her iki panelin arkas\u0131nda bataryal\u0131 \u00E7al\u0131\u015Fma mant\u0131\u011F\u0131 g\u00F6r\u00FCn\u00FCr olsun; kablo karma\u015Fas\u0131 olmas\u0131n. G\u00FCn \u0131\u015F\u0131\u011F\u0131 panel etkisini bast\u0131rmas\u0131n.\"},\"mobile_outdoor_battery_shoot_rgb_background_accent\":{\"manifestOrder\":56,\"templateKey\":\"mobile_outdoor_battery_shoot_rgb_background_accent\",\"cdnSelectionKey\":\"mobile_outdoor_battery_shoot_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Bataryal\u0131 \u00E7ekim\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.0,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.5,\"band\":\"Orta Bant\",\"heightM\":1.75,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Alt\u0131n saat dengesi \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Her iki panelin arkas\u0131nda bataryal\u0131 \u00E7al\u0131\u015Fma mant\u0131\u011F\u0131 g\u00F6r\u00FCn\u00FCr olsun; kablo karma\u015Fas\u0131 olmas\u0131n. G\u00FCn \u0131\u015F\u0131\u011F\u0131 panel etkisini bast\u0131rmas\u0131n. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"mobile_outdoor_portable_team_balanced_key_fill\":{\"manifestOrder\":58,\"templateKey\":\"mobile_outdoor_portable_team_balanced_key_fill\",\"cdnSelectionKey\":\"mobile_outdoor_portable_team_balanced_key_fill::bicolor::low::portable_interview_light\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Ta\u015F\u0131nabilir ekip\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.0,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":28.0,\"distanceM\":1.7,\"band\":\"Orta Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.8,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4500,5200],\"note\":\"Saha ortam\u0131yla e\u015Fle\u015Ftir \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Ta\u015F\u0131nabilirlik panel boyu, pil yuvas\u0131 ve hafif ayaktan anla\u015F\u0131lmal\u0131; \u00E7anta/aksesuar dizilimi veya kit vaadi g\u00F6sterme.\"},\"mobile_outdoor_portable_team_rgb_background_accent\":{\"manifestOrder\":59,\"templateKey\":\"mobile_outdoor_portable_team_rgb_background_accent\",\"cdnSelectionKey\":\"mobile_outdoor_portable_team_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Ta\u015F\u0131nabilir ekip\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.0,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":120.0,\"distanceM\":1.7,\"band\":\"Orta Bant\",\"heightM\":1.75,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.8,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4500,5200],\"note\":\"Saha ortam\u0131yla e\u015Fle\u015Ftir \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Ta\u015F\u0131nabilirlik panel boyu, pil yuvas\u0131 ve hafif ayaktan anla\u015F\u0131lmal\u0131; \u00E7anta/aksesuar dizilimi veya kit vaadi g\u00F6sterme. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"mobile_outdoor_portable_team_compact_support_close_range\":{\"manifestOrder\":60,\"templateKey\":\"mobile_outdoor_portable_team_compact_support_close_range\",\"cdnSelectionKey\":\"mobile_outdoor_portable_team_compact_support_close_range::bicolor::low::portable_interview_light\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Ta\u015F\u0131nabilir ekip\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":2.0,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":25.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.85,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.2,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4500,5200],\"note\":\"Saha ortam\u0131yla e\u015Fle\u015Ftir \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Ta\u015F\u0131nabilirlik panel boyu, pil yuvas\u0131 ve hafif ayaktan anla\u015F\u0131lmal\u0131; \u00E7anta/aksesuar dizilimi veya kit vaadi g\u00F6sterme. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"mobile_outdoor_fast_location_setup_balanced_key_fill\":{\"manifestOrder\":61,\"templateKey\":\"mobile_outdoor_fast_location_setup_balanced_key_fill\",\"cdnSelectionKey\":\"mobile_outdoor_fast_location_setup_balanced_key_fill::bicolor::low::portable_interview_light\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Mek\u00E2n i\u00E7i h\u0131zl\u0131 kurulum\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.95,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":28.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.8,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Ak\u015Fam i\u00E7 mek\u00E2n\u0131 \u00B7 H\u0131zl\u0131 denge\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kurulum h\u0131zl\u0131 ama profesyonel ve g\u00FCvenli g\u00F6r\u00FCnmeli. Lobi/dekor \u0131\u015F\u0131\u011F\u0131 y\u00FCzde ana kaynak olmamal\u0131; panel etkisi a\u00E7\u0131k\u00E7a okunmal\u0131.\"},\"mobile_outdoor_fast_location_setup_rgb_background_accent\":{\"manifestOrder\":62,\"templateKey\":\"mobile_outdoor_fast_location_setup_rgb_background_accent\",\"cdnSelectionKey\":\"mobile_outdoor_fast_location_setup_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Mek\u00E2n i\u00E7i h\u0131zl\u0131 kurulum\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.95,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":115.0,\"distanceM\":1.6,\"band\":\"Orta Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.6,\"band\":\"Uzak Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Ak\u015Fam i\u00E7 mek\u00E2n\u0131 \u00B7 H\u0131zl\u0131 denge\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kurulum h\u0131zl\u0131 ama profesyonel ve g\u00FCvenli g\u00F6r\u00FCnmeli. Lobi/dekor \u0131\u015F\u0131\u011F\u0131 y\u00FCzde ana kaynak olmamal\u0131; panel etkisi a\u00E7\u0131k\u00E7a okunmal\u0131. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"mobile_outdoor_fast_location_setup_compact_support_close_range\":{\"manifestOrder\":63,\"templateKey\":\"mobile_outdoor_fast_location_setup_compact_support_close_range\",\"cdnSelectionKey\":\"mobile_outdoor_fast_location_setup_compact_support_close_range::bicolor::low::portable_interview_light\",\"mainPurpose\":\"Mobil / D\u0131\u015F Mekan\",\"subPurpose\":\"Mek\u00E2n i\u00E7i h\u0131zl\u0131 kurulum\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.95,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":25.0,\"distanceM\":1.3,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.8,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":2.2,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4000,4800],\"note\":\"Ak\u015Fam i\u00E7 mek\u00E2n\u0131 \u00B7 H\u0131zl\u0131 denge\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kurulum h\u0131zl\u0131 ama profesyonel ve g\u00FCvenli g\u00F6r\u00FCnmeli. Lobi/dekor \u0131\u015F\u0131\u011F\u0131 y\u00FCzde ana kaynak olmamal\u0131; panel etkisi a\u00E7\u0131k\u00E7a okunmal\u0131. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"starter_budget_practical_first_light_choice_rgb_background_accent\":{\"manifestOrder\":65,\"templateKey\":\"starter_budget_practical_first_light_choice_rgb_background_accent\",\"cdnSelectionKey\":\"starter_budget_practical_first_light_choice_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"\u0130lk \u0131\u015F\u0131k se\u00E7imi\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":45.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":110.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.1,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"G\u00FCvenli ba\u015Flang\u0131\u00E7 \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kompakt panel yak\u0131n \u00E7al\u0131\u015Fma mesafesinde kullan\u0131ls\u0131n; k\u00FC\u00E7\u00FCk \u00FCr\u00FCn a\u015F\u0131r\u0131 g\u00FC\u00E7l\u00FC veya dev g\u00F6r\u00FCnmesin. Kurulum yeni ba\u015Flayan i\u00E7in okunakl\u0131 olsun. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"starter_budget_practical_first_light_choice_compact_support_close_range\":{\"manifestOrder\":66,\"templateKey\":\"starter_budget_practical_first_light_choice_compact_support_close_range\",\"cdnSelectionKey\":\"starter_budget_practical_first_light_choice_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"\u0130lk \u0131\u015F\u0131k se\u00E7imi\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.8,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"G\u00FCvenli ba\u015Flang\u0131\u00E7 \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Kompakt panel yak\u0131n \u00E7al\u0131\u015Fma mesafesinde kullan\u0131ls\u0131n; k\u00FC\u00E7\u00FCk \u00FCr\u00FCn a\u015F\u0131r\u0131 g\u00FC\u00E7l\u00FC veya dev g\u00F6r\u00FCnmesin. Kurulum yeni ba\u015Flayan i\u00E7in okunakl\u0131 olsun. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"starter_budget_practical_budget_setup_balanced_key_fill\":{\"manifestOrder\":67,\"templateKey\":\"starter_budget_practical_budget_setup_balanced_key_fill\",\"cdnSelectionKey\":\"starter_budget_practical_budget_setup_balanced_key_fill::bicolor::low::key_light\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"B\u00FCt\u00E7e kurulumu\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.1,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"Pratik n\u00F6tr \u00B7 Ortamla uyum\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Ucuz plastik oyuncak g\u00F6r\u00FCn\u00FCm\u00FC verme; ger\u00E7ek kompakt Panel LED ve g\u00FCvenli ayak kullan. \u00C7anta, kumanda, aksesuar veya set i\u00E7eri\u011Fi sergileme.\"},\"starter_budget_practical_budget_setup_rgb_background_accent\":{\"manifestOrder\":68,\"templateKey\":\"starter_budget_practical_budget_setup_rgb_background_accent\",\"cdnSelectionKey\":\"starter_budget_practical_budget_setup_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"B\u00FCt\u00E7e kurulumu\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":110.0,\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":2.1,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"Pratik n\u00F6tr \u00B7 Ortamla uyum\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Ucuz plastik oyuncak g\u00F6r\u00FCn\u00FCm\u00FC verme; ger\u00E7ek kompakt Panel LED ve g\u00FCvenli ayak kullan. \u00C7anta, kumanda, aksesuar veya set i\u00E7eri\u011Fi sergileme. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"starter_budget_practical_budget_setup_compact_support_close_range\":{\"manifestOrder\":69,\"templateKey\":\"starter_budget_practical_budget_setup_compact_support_close_range\",\"cdnSelectionKey\":\"starter_budget_practical_budget_setup_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"B\u00FCt\u00E7e kurulumu\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.7,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"Konu\"}],\"camera\":{\"distanceM\":1.8,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5200],\"note\":\"Pratik n\u00F6tr \u00B7 Ortamla uyum\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Ucuz plastik oyuncak g\u00F6r\u00FCn\u00FCm\u00FC verme; ger\u00E7ek kompakt Panel LED ve g\u00FCvenli ayak kullan. \u00C7anta, kumanda, aksesuar veya set i\u00E7eri\u011Fi sergileme. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"},\"starter_budget_practical_small_space_solution_balanced_key_fill\":{\"manifestOrder\":70,\"templateKey\":\"starter_budget_practical_small_space_solution_balanced_key_fill\",\"cdnSelectionKey\":\"starter_budget_practical_small_space_solution_balanced_key_fill::bicolor::low::key_light\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"K\u00FC\u00E7\u00FCk alan \u00E7\u00F6z\u00FCm\u00FC\",\"scenario\":\"Dengeli ana / dolgu\",\"scenarioType\":\"balanced_key_fill\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Dolgu I\u015F\u0131\u011F\u0131\",\"angleDeg\":25.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.6,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Dar alan \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Dar alanda g\u00FCvenli ge\u00E7i\u015F bo\u015Flu\u011Fu b\u0131rak. Panel ve tripodlar konuya \u00E7arpmamal\u0131; dev panel veya geni\u015F st\u00FCdyo aya\u011F\u0131 kullanma.\"},\"starter_budget_practical_small_space_solution_rgb_background_accent\":{\"manifestOrder\":71,\"templateKey\":\"starter_budget_practical_small_space_solution_rgb_background_accent\",\"cdnSelectionKey\":\"starter_budget_practical_small_space_solution_rgb_background_accent::rgb::low::rgb_background_wash\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"K\u00FC\u00E7\u00FCk alan \u00E7\u00F6z\u00FCm\u00FC\",\"scenario\":\"RGB arka plan / vurgu\",\"scenarioType\":\"rgb_background_accent\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":40.0,\"distanceM\":1.0,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"RGB Arka / Kenar\",\"angleDeg\":110.0,\"distanceM\":1.2,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.35,\"panelFamily\":\"C\",\"colorMode\":\"RGB\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.6,\"band\":\"Orta Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Dar alan \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Dar alanda g\u00FCvenli ge\u00E7i\u015F bo\u015Flu\u011Fu b\u0131rak. Panel ve tripodlar konuya \u00E7arpmamal\u0131; dev panel veya geni\u015F st\u00FCdyo aya\u011F\u0131 kullanma. RGB panelin rengi y\u00FCzde/\u00FCr\u00FCn\u00FCn \u00F6n y\u00FCz\u00FCnde ana pozlama olu\u015Fturmas\u0131n; yaln\u0131z fon veya ince kenar ayr\u0131m\u0131nda kals\u0131n. RGB paneli Dolgu I\u015F\u0131\u011F\u0131 gibi \u00F6ne yerle\u015Ftirme.\"},\"starter_budget_practical_small_space_solution_compact_support_close_range\":{\"manifestOrder\":72,\"templateKey\":\"starter_budget_practical_small_space_solution_compact_support_close_range\",\"cdnSelectionKey\":\"starter_budget_practical_small_space_solution_compact_support_close_range::bicolor::low::close_range_support\",\"mainPurpose\":\"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik\",\"subPurpose\":\"K\u00FC\u00E7\u00FCk alan \u00E7\u00F6z\u00FCm\u00FC\",\"scenario\":\"Kompakt destek / yak\u0131n mesafe\",\"scenarioType\":\"compact_support_close_range\",\"lightCount\":2,\"lights\":[{\"role\":\"Ana I\u015F\u0131k\",\"angleDeg\":35.0,\"distanceM\":0.9,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.55,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"},{\"role\":\"Kompakt Destek\",\"angleDeg\":20.0,\"distanceM\":1.1,\"band\":\"Yak\u0131n Bant\",\"heightM\":1.45,\"panelFamily\":\"C\",\"colorMode\":\"WHITE_CCT\",\"target\":\"\u00DCr\u00FCn\"}],\"camera\":{\"distanceM\":1.4,\"band\":\"Yak\u0131n Bant\",\"frameOrientation\":\"YATAY\",\"bodyOrientation\":\"LANDSCAPE\",\"label\":\"Kamera\"},\"kelvin\":{\"rangeK\":[4300,5000],\"note\":\"Dar alan \u00B7 Do\u011Fal cilt\"},\"panelFamilies\":[\"C\"],\"scenarioSpecialRule\":\"Dar alanda g\u00FCvenli ge\u00E7i\u015F bo\u015Flu\u011Fu b\u0131rak. Panel ve tripodlar konuya \u00E7arpmamal\u0131; dev panel veya geni\u015F st\u00FCdyo aya\u011F\u0131 kullanma. B\u00FCy\u00FCk st\u00FCdyo paneli kullanma. Kompakt ekipman yak\u0131n mesafede olsa da konuya/\u00FCr\u00FCne \u00E7arpmas\u0131n; stand ayaklar\u0131 aras\u0131nda g\u00FCvenli ge\u00E7i\u015F alan\u0131 b\u0131rak.\"}};\r\n\r\n  W.GDX_PANEL_V4_R32_SETUP_TRUTH_LIBRARY = {\r\n    phase:\r\n      'PANEL-V4-R32-AF02-N1-PRODUCTION-CANDIDATE',\r\n    version:\r\n      R32_AF02_N1_VERSION,\r\n    exactTruthCount:\r\n      Object.keys(R32_AF02_TRUTH_BY_TEMPLATE).length,\r\n    deferredManifestOrders:\r\n      R32_AF02_DEFERRED_MANIFEST_ORDERS.slice(),\r\n    liveApplyAllowed:\r\n      false,\r\n    entriesByTemplate:\r\n      R32_AF02_TRUTH_BY_TEMPLATE\r\n  };\r\n\r\n  function r32AF02FmtM(value) {\r\n    var number =\r\n      Number(value || 0);\r\n\r\n    return (\r\n      Math.round(number * 10) / 10\r\n    ).toLocaleString(\r\n      'tr-TR',\r\n      {\r\n        minimumFractionDigits:\r\n          number % 1 === 0 ? 0 : 1,\r\n        maximumFractionDigits:\r\n          1\r\n      }\r\n    ) + ' m';\r\n  }\r\n\r\n  function r32AF02TruthForTemplate(template) {\r\n    var key =\r\n      r30AR4Clean(\r\n        template &&\r\n        template.templateKey\r\n      );\r\n\r\n    return key\r\n      ? (\r\n          R32_AF02_TRUTH_BY_TEMPLATE[key] ||\r\n          null\r\n        )\r\n      : null;\r\n  }\r\n\r\n  function r32AF02SelectedLight(row, truth) {\r\n    var lights =\r\n      truth &&\r\n      Array.isArray(truth.lights)\r\n        ? truth.lights\r\n        : [];\r\n\r\n    if (!lights.length) {\r\n      return null;\r\n    }\r\n\r\n    var scenarioType =\r\n      r30AR4Clean(\r\n        truth.scenarioType\r\n      );\r\n\r\n    if (\r\n      scenarioType ===\r\n      'rgb_background_accent'\r\n    ) {\r\n      return lights.find(function (light) {\r\n        return /RGB|Arka|Kenar/i.test(\r\n          r30AR4Clean(light.role)\r\n        );\r\n      }) ||\r\n      lights[lights.length - 1] ||\r\n      null;\r\n    }\r\n\r\n    if (\r\n      scenarioType ===\r\n      'compact_support_close_range'\r\n    ) {\r\n      return lights.find(function (light) {\r\n        return /Kompakt Destek/i.test(\r\n          r30AR4Clean(light.role)\r\n        );\r\n      }) ||\r\n      lights.find(function (light) {\r\n        return /Destek|Dolgu|\u00DCst/i.test(\r\n          r30AR4Clean(light.role)\r\n        ) &&\r\n        !/Ana/i.test(\r\n          r30AR4Clean(light.role)\r\n        );\r\n      }) ||\r\n      lights[lights.length - 1] ||\r\n      null;\r\n    }\r\n\r\n    if (\r\n      Number(row && row.rank || 0) >= 3\r\n    ) {\r\n      var fill =\r\n        lights.find(function (light) {\r\n          return /Dolgu|Destek/i.test(\r\n            r30AR4Clean(light.role)\r\n          ) &&\r\n          !/Ana/i.test(\r\n            r30AR4Clean(light.role)\r\n          );\r\n        });\r\n\r\n      if (fill) {\r\n        return fill;\r\n      }\r\n    }\r\n\r\n    return lights.find(function (light) {\r\n      return /Ana/i.test(\r\n        r30AR4Clean(light.role)\r\n      );\r\n    }) ||\r\n    lights[0] ||\r\n    null;\r\n  }\r\n\r\n  function r32AF02ExactContext(\r\n    row,\r\n    template\r\n  ) {\r\n    var truth =\r\n      r32AF02TruthForTemplate(\r\n        template\r\n      );\r\n\r\n    if (!truth) {\r\n      return null;\r\n    }\r\n\r\n    var selectedLight =\r\n      r32AF02SelectedLight(\r\n        row,\r\n        truth\r\n      );\r\n\r\n    var companionLights =\r\n      (truth.lights || [])\r\n        .filter(function (light) {\r\n          return !selectedLight ||\r\n            r30AR4Clean(light.role) !==\r\n              r30AR4Clean(selectedLight.role);\r\n        });\r\n\r\n    return {\r\n      version:\r\n        R32_AF02_N1_VERSION,\r\n      exact:\r\n        true,\r\n      truth:\r\n        truth,\r\n      selectedLight:\r\n        selectedLight,\r\n      companionLights:\r\n        companionLights,\r\n      companionRoles:\r\n        companionLights.map(function (light) {\r\n          return r30AR4Clean(\r\n            light.role\r\n          );\r\n        }).filter(Boolean),\r\n      wholeSetupClaimAllowed:\r\n        false,\r\n      packageClaimAllowed:\r\n        false\r\n    };\r\n  }\r\n\r\n  function r32AF02LightValue(light) {\r\n    if (!light) {\r\n      return '';\r\n    }\r\n\r\n    return [\r\n      r30AR4Clean(light.angleDeg) + '\u00B0',\r\n      r32AF02FmtM(light.distanceM),\r\n      r30AR4Clean(light.band),\r\n      'Y\u00FCkseklik ' +\r\n        r32AF02FmtM(light.heightM)\r\n    ].filter(Boolean).join(' \u00B7 ');\r\n  }\r\n\r\n  function r32AF02Caution(\r\n    row,\r\n    exact\r\n  ) {\r\n    var truth =\r\n      exact &&\r\n      exact.truth || {};\r\n\r\n    var type =\r\n      r30AR4Clean(\r\n        truth.scenarioType\r\n      );\r\n\r\n    var family =\r\n      r30AR4NormalizeFamily(\r\n        row &&\r\n        row.family\r\n      );\r\n\r\n    var power =\r\n      Number(\r\n        row &&\r\n        row.power || 0\r\n      );\r\n\r\n    if (\r\n      type ===\r\n      'rgb_background_accent'\r\n    ) {\r\n      return 'RGB rol\u00FCn\u00FC y\u00FCz veya \u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131 yerine fon ya da kenar ayr\u0131m\u0131 i\u00E7in kullan. Do\u011Fal renk gereken ana \u0131\u015F\u0131\u011F\u0131 ayr\u0131 tut.';\r\n    }\r\n\r\n    if (\r\n      type ===\r\n        'compact_support_close_range' &&\r\n      power >= 150\r\n    ) {\r\n      return 'Bu g\u00FC\u00E7 yak\u0131n mesafede sert veya parlak g\u00F6r\u00FCnebilir. G\u00FCc\u00FC d\u00FC\u015F\u00FCr, dif\u00FCzyon kullan ve yans\u0131t\u0131c\u0131 y\u00FCzey a\u00E7\u0131s\u0131n\u0131 kontrol et.';\r\n    }\r\n\r\n    if (\r\n      type ===\r\n        'balanced_key_fill' &&\r\n      power > 0 &&\r\n      power < 80\r\n    ) {\r\n      return 'Bu g\u00FC\u00E7 band\u0131n\u0131 uzak veya geni\u015F alan ana \u0131\u015F\u0131\u011F\u0131 olarak genelleme. Yak\u0131n ve orta mesafede kontroll\u00FC kullan.';\r\n    }\r\n\r\n    if (\r\n      family !== 'rgb' &&\r\n      type ===\r\n        'rgb_background_accent'\r\n    ) {\r\n      return 'Bu \u00FCr\u00FCn RGB ailesinde de\u011Fildir. Renkli fon g\u00F6revi verilmez; beyaz \u0131\u015F\u0131k rol\u00FCnde kal\u0131r.';\r\n    }\r\n\r\n    if (\r\n      exact &&\r\n      exact.companionRoles &&\r\n      exact.companionRoles.length\r\n    ) {\r\n      return 'G\u00F6rseldeki ' +\r\n        exact.companionRoles.join(', ') +\r\n        ' g\u00F6revleri i\u00E7in ayr\u0131ca \u0131\u015F\u0131k gerekir. Bu \u00FCr\u00FCn tek ba\u015F\u0131na t\u00FCm kurulumu olu\u015Fturmaz.';\r\n    }\r\n\r\n    return '\u00DCr\u00FCn yaln\u0131z se\u00E7ilen g\u00F6rev i\u00E7in de\u011Ferlendirilir; tek ba\u015F\u0131na t\u00FCm kurulumu olu\u015Fturmaz.';\r\n  }\r\n\r\n  function r32AF02ExactFallbackHtml(\r\n    row,\r\n    template,\r\n    exact\r\n  ) {\r\n    var truth =\r\n      exact.truth || {};\r\n\r\n    var lights =\r\n      Array.isArray(truth.lights)\r\n        ? truth.lights\r\n        : [];\r\n\r\n    var primary =\r\n      lights[0] || {};\r\n\r\n    var secondary =\r\n      lights[1] || {};\r\n\r\n    var camera =\r\n      truth.camera || {};\r\n\r\n    var kelvin =\r\n      truth.kelvin || {};\r\n\r\n    var chips = [\r\n      truth.scenario,\r\n      (truth.panelFamilies || []).join(' / '),\r\n      kelvin.rangeK\r\n    ].filter(Boolean);\r\n\r\n    var rows =\r\n      lights.map(function (light) {\r\n        return ''+\r\n          '<div>'+\r\n            '<b>' +\r\n              esc(\r\n                r30AR4Clean(\r\n                  light.role\r\n                ).toUpperCase()\r\n              ) +\r\n            '</b>'+\r\n            '<span>' +\r\n              esc(\r\n                r32AF02LightValue(\r\n                  light\r\n                )\r\n              ) +\r\n            '</span>'+\r\n          '</div>';\r\n      }).join('');\r\n\r\n    rows += ''+\r\n      '<div>'+\r\n        '<b>KAMERA</b>'+\r\n        '<span>' +\r\n          esc(\r\n            r32AF02FmtM(\r\n              camera.distanceM\r\n            ) +\r\n            ' \u00B7 ' +\r\n            r30AR4Clean(\r\n              camera.band\r\n            ) +\r\n            ' \u00B7 ' +\r\n            r30AR4Clean(\r\n              camera.frameOrientation\r\n            )\r\n          ) +\r\n        '</span>'+\r\n      '</div>'+\r\n      '<div>'+\r\n        '<b>KELVIN</b>'+\r\n        '<span>' +\r\n          esc(\r\n            r30AR4Clean(\r\n              kelvin.rangeK\r\n            )\r\n          ) +\r\n        '</span>'+\r\n      '</div>';\r\n\r\n    return ''+\r\n      '<div class=\"gdx-r11-setup-card is-r32-exact\" '+\r\n        'data-gdx-panel-r30a-schematic-card=\"1\" '+\r\n        'data-gdx-panel-r32-exact-fallback=\"1\" '+\r\n        'data-gdx-panel-r32-manifest-order=\"' +\r\n          esc(\r\n            String(\r\n              truth.manifestOrder || ''\r\n            )\r\n          ) +\r\n        '\">'+\r\n        '<div class=\"gdx-r11-setup-head\">'+\r\n          '<span>Setup Senaryosu</span>'+\r\n          '<b>' +\r\n            esc(\r\n              r30AR4Clean(\r\n                truth.subPurpose\r\n              ) ||\r\n              r30AR4Clean(\r\n                truth.scenario\r\n              )\r\n            ) +\r\n          '</b>'+\r\n\r\n        '</div>'+\r\n        '<p>' +\r\n          esc(\r\n            r30AR4Clean(\r\n              truth.scenario\r\n            )\r\n          ) +\r\n        '</p>'+\r\n        '<div class=\"gdx-r11-setup-chips\">' +\r\n          chips.map(function (chip) {\r\n            return '<span>' +\r\n              esc(chip) +\r\n            '</span>';\r\n          }).join('') +\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-diagram is-' +\r\n          esc(\r\n            r30AR4Clean(\r\n              truth.scenarioType\r\n            )\r\n          ) +\r\n        '\">'+\r\n          '<span class=\"key\">' +\r\n            esc(\r\n              r30AR4Clean(\r\n                primary.role\r\n              )\r\n            ) +\r\n            '<br><small>' +\r\n              esc(\r\n                r32AF02LightValue(\r\n                  primary\r\n                )\r\n              ) +\r\n            '</small>'+\r\n          '</span>'+\r\n          '<span class=\"subject\">' +\r\n            esc(\r\n              r30AR4Clean(\r\n                primary.target\r\n              ) ||\r\n              'Konu/\u00DCr\u00FCn'\r\n            ) +\r\n          '</span>'+\r\n          '<span class=\"fill\">' +\r\n            esc(\r\n              r30AR4Clean(\r\n                secondary.role\r\n              )\r\n            ) +\r\n            '<br><small>' +\r\n              esc(\r\n                r32AF02LightValue(\r\n                  secondary\r\n                )\r\n              ) +\r\n            '</small>'+\r\n          '</span>'+\r\n          '<span class=\"camera\">Kamera<br><small>' +\r\n            esc(\r\n              r32AF02FmtM(\r\n                camera.distanceM\r\n              )\r\n            ) +\r\n          '</small></span>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-setup-rows\">' +\r\n          rows +\r\n        '</div>'+\r\n        '<p class=\"gdx-r11-setup-note\">' +\r\n          esc(\r\n            r30AR4Clean(\r\n              kelvin.note\r\n            ) ||\r\n            r30AR4Clean(\r\n              truth.scenarioSpecialRule\r\n            )\r\n          ) +\r\n        '</p>'+\r\n      '</div>';\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R32_AF02_N1_API = {\r\n    phase:\r\n      'PANEL-V4-R32-AF02-N1-PRODUCTION-CANDIDATE',\r\n    version:\r\n      R32_AF02_N1_VERSION,\r\n    exactTruthCount:\r\n      Object.keys(R32_AF02_TRUTH_BY_TEMPLATE).length,\r\n    deferredManifestOrders:\r\n      R32_AF02_DEFERRED_MANIFEST_ORDERS.slice(),\r\n    resolveExactContext:\r\n      r32AF02ExactContext,\r\n    resolveTemplateForRow:\r\n      r30AR4ResolveActiveTemplate,\r\n    renderFallbackForRow:\r\n      function (row) {\r\n        var resolved =\r\n          r30AR4ResolveActiveTemplate(\r\n            row\r\n          );\r\n\r\n        return setupDiagram(\r\n          row,\r\n          resolved.template\r\n        );\r\n      },\r\n    buildSetupNoraModel:\r\n      r29R5SetupNoraModel,\r\n    buildReasonExpertModel:\r\n      r29R6ReasonExpertModel,\r\n    liveApplyAllowed:\r\n      false\r\n  };\r\n\r\n\r\n  function r30AR4DesiredScenarioType(row) {\r\n    row = row || {};\r\n\r\n    var family =\r\n      r30AR4NormalizeFamily(\r\n        row.family\r\n      );\r\n\r\n    var power =\r\n      Number(\r\n        row.power || 0\r\n      );\r\n\r\n    if (family === 'rgb') {\r\n      return 'rgb_background_accent';\r\n    }\r\n\r\n    if (\r\n      power > 0 &&\r\n      power <= 80\r\n    ) {\r\n      return 'compact_support_close_range';\r\n    }\r\n\r\n    return 'balanced_key_fill';\r\n  }\r\n\r\n\r\n  function r30AR4ResolveActiveTemplate(row) {\r\n    var manifest =\r\n      r30AR4EnsureManifest(false);\r\n\r\n    var templates =\r\n      manifest &&\r\n      Array.isArray(\r\n        manifest.templates\r\n      )\r\n        ? manifest.templates\r\n        : [];\r\n\r\n    var selection =\r\n      r28ReadOnlySelection() || {};\r\n\r\n    var group =\r\n      templates.filter(function (item) {\r\n        return (\r\n          item.purposeKey ===\r\n            r30AR4Clean(\r\n              selection.activePurposeKey\r\n            ) &&\r\n          item.subPurposeKey ===\r\n            r30AR4Clean(\r\n              selection.activeSubPurposeKey\r\n            )\r\n        );\r\n      });\r\n\r\n    var desiredType =\r\n      r30AR4DesiredScenarioType(row);\r\n\r\n    var exact =\r\n      group.find(function (item) {\r\n        return (\r\n          item.scenarioType ===\r\n          desiredType\r\n        );\r\n      });\r\n\r\n    if (exact) {\r\n      return {\r\n        template:\r\n          exact,\r\n        resolvedBy:\r\n          'r32_product_row_family_power'\r\n      };\r\n    }\r\n\r\n    var context =\r\n      r29R5ResolveContext();\r\n\r\n    var scenarioKey =\r\n      r30AR4Clean(\r\n        context &&\r\n        context.resolvedScenario &&\r\n        context.resolvedScenario\r\n          .scenarioKey\r\n      );\r\n\r\n    var contextTemplate =\r\n      scenarioKey\r\n        ? templates.find(function (item) {\r\n            return (\r\n              item.scenarioKey ===\r\n              scenarioKey\r\n            );\r\n          })\r\n        : null;\r\n\r\n    var fallback =\r\n      contextTemplate ||\r\n      group.find(function (item) {\r\n        return (\r\n          item.scenarioType ===\r\n          'balanced_key_fill'\r\n        );\r\n      }) ||\r\n      group[0] ||\r\n      templates[0] ||\r\n      null;\r\n\r\n    return {\r\n      template:\r\n        fallback,\r\n      resolvedBy:\r\n        fallback\r\n          ? 'r32_safe_context_fallback'\r\n          : 'manifest_unavailable'\r\n    };\r\n  }\r\n\r\n  function r30AR4Variant(template, base) {\r\n    var type =\r\n      r30AR4Clean(\r\n        template &&\r\n        template.scenarioType\r\n      );\r\n\r\n    if (\r\n      type ===\r\n      'rgb_background_accent'\r\n    ) {\r\n      return {\r\n        key:\r\n          'rgb_background_accent',\r\n        heading:\r\n          'RGB arka plan / ayr\u0131m',\r\n        primaryLabel:\r\n          '\u00D6n I\u015F\u0131k',\r\n        secondaryLabel:\r\n          'RGB Fon',\r\n        primaryValue:\r\n          '25\u201345\u00B0 \u00B7 ' +\r\n          setupDistance({ power: 120 }),\r\n        secondaryValue:\r\n          '110\u2013150\u00B0 \u00B7 1\u20133 m',\r\n        note:\r\n          '\u00D6n \u0131\u015F\u0131\u011F\u0131 do\u011Fal tut; RGB \u0131\u015F\u0131\u011F\u0131n\u0131 fon veya kenar ayr\u0131m\u0131 i\u00E7in konu arkas\u0131na y\u00F6nlendir.'\r\n      };\r\n    }\r\n\r\n    if (\r\n      type ===\r\n      'compact_support_close_range'\r\n    ) {\r\n      return {\r\n        key:\r\n          'compact_support_close_range',\r\n        heading:\r\n          'Yak\u0131n plan destek',\r\n        primaryLabel:\r\n          'Yak\u0131n Destek',\r\n        secondaryLabel:\r\n          'Yak\u0131n Dolgu',\r\n        primaryValue:\r\n          '20\u201335\u00B0 \u00B7 0.6\u20131.5 m',\r\n        secondaryValue:\r\n          '15\u201330\u00B0 \u00B7 0.6\u20131.5 m',\r\n        note:\r\n          'I\u015F\u0131klar\u0131 konuya yak\u0131n ve kontroll\u00FC kullan; parlama varsa a\u00E7\u0131y\u0131 yana al veya g\u00FCc\u00FC azalt.'\r\n      };\r\n    }\r\n\r\n    return {\r\n      key:\r\n        'balanced_key_fill',\r\n      heading:\r\n        base.title,\r\n      primaryLabel:\r\n        'Ana I\u015F\u0131k',\r\n      secondaryLabel:\r\n        base.fillLabel,\r\n      primaryValue:\r\n        base.key,\r\n      secondaryValue:\r\n        base.fill,\r\n      note:\r\n        'Ana \u0131\u015F\u0131\u011F\u0131 35\u201345 dereceye, dolguyu kar\u015F\u0131 tarafa daha d\u00FC\u015F\u00FCk yo\u011Funlukta yerle\u015Ftir.'\r\n    };\r\n  }\r\n\r\n\r\n  function setupDiagram(row, template) {\r\n    var exact =\r\n      r32AF02ExactContext(\r\n        row,\r\n        template\r\n      );\r\n\r\n    if (exact) {\r\n      return r32AF02ExactFallbackHtml(\r\n        row,\r\n        template,\r\n        exact\r\n      );\r\n    }\r\n\r\n    var s =\r\n      setupBand(row);\r\n\r\n    var variant =\r\n      r30AR4Variant(\r\n        template,\r\n        s\r\n      );\r\n\r\n    return ''+\r\n      '<div class=\"gdx-r11-setup-card\" data-gdx-panel-r30a-schematic-card=\"1\" data-gdx-panel-r30a-variant=\"' + esc(variant.key) + '\">'+\r\n        '<div class=\"gdx-r11-setup-head\"><span>Kurulum Senaryosu</span><b>' + esc(variant.heading) + '</b><em>Uygun</em></div>'+\r\n        '<p>' + esc(s.context) + ' i\u00E7in dinamik kurulum \u00F6nerisi.</p>'+\r\n        '<div class=\"gdx-r11-setup-chips\">' + s.chips.map(function(c){ return '<span>' + esc(c) + '</span>'; }).join('') + '</div>'+\r\n        '<div class=\"gdx-r11-diagram is-' + esc(variant.key) + '\">'+\r\n          '<span class=\"key\">' + esc(variant.primaryLabel) + '<br><small>' + esc(variant.primaryValue) + '</small></span>'+\r\n          '<span class=\"subject\">Ki\u015Fi/<br>\u00DCr\u00FCn</span>'+\r\n          '<span class=\"fill\">' + esc(variant.secondaryLabel) + '<br><small>' + esc(variant.secondaryValue) + '</small></span>'+\r\n          '<span class=\"camera\">Kamera</span>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-setup-rows\">'+\r\n          '<div><b>' + esc(variant.primaryLabel.toUpperCase()) + '</b><span>' + esc(variant.primaryValue) + '</span></div>'+\r\n          '<div><b>' + esc(variant.secondaryLabel.toUpperCase()) + '</b><span>' + esc(variant.secondaryValue) + '</span></div>'+\r\n          '<div><b>UYUM</b><span>' + esc(s.uyum) + '</span></div>'+\r\n        '</div>'+\r\n        '<p class=\"gdx-r11-setup-note\">' + esc(variant.note) + '</p>'+\r\n      '</div>';\r\n  }\r\n\r\n\r\n  W.CANFOTO_FS1R_REPAIR_R3 =\r\n    Object.assign(\r\n      {},\r\n      W.CANFOTO_FS1R_REPAIR_R3 || {},\r\n      {\r\n        version: 'CANFOTO-FS1R-REPAIR-R4',\r\n        r30FirstFrameFallbackRetired: true,\r\n        r30TimeoutFallbackRetired: true,\r\n        r30CanonicalCdnNeverShowsLegacySchematic: true,\r\n        r30CanonicalCdnErrorHoldsNeutralFrame: true,\r\n        noraInlineOwner: 'R29-R5'\r\n      }\r\n    );\r\n\r\n  function r30AR4SetupVisualHostHtml(row) {\r\n    var resolved =\r\n      r30AR4ResolveActiveTemplate(row);\r\n\r\n    var template =\r\n      resolved.template || {};\r\n\r\n    var exact =\r\n      r32AF02ExactContext(\r\n        row,\r\n        template\r\n      );\r\n\r\n    var cdnPolicy =\r\n      r30AR4SafeHttpsUrl(\r\n        template.cdnUrl\r\n      );\r\n\r\n    var selection =\r\n      r28ReadOnlySelection() || {};\r\n\r\n    var hasCdn =\r\n      !!(\r\n        cdnPolicy.safe &&\r\n        cdnPolicy.normalized\r\n      );\r\n\r\n    return ''+\r\n      '<section class=\"gdx-panel-v4-r30a-visual-host ' + (hasCdn ? 'is-cdn-pending' : 'is-schematic-only') + '\" '+\r\n        'data-gdx-panel-r30a-setup-visual=\"1\" '+\r\n        'data-gdx-panel-r30a-template-key=\"' + esc(template.templateKey || '') + '\" '+\r\n        'data-gdx-panel-r30a-scenario-key=\"' + esc(template.scenarioKey || '') + '\" '+\r\n        'data-gdx-panel-r30a-cdn-selection-key=\"' + esc(template.cdnSelectionKey || '') + '\" '+\r\n        'data-gdx-panel-r30a-active-selection-key=\"' + esc(selection.activeSelectionKey || '') + '\" '+\r\n        'data-gdx-panel-r30a-product-key=\"' + esc(row && row.key || '') + '\" '+\r\n        'data-gdx-panel-r30a-resolved-by=\"' + esc(resolved.resolvedBy || '') + '\" '+\r\n        'data-gdx-panel-r32-exact=\"' + esc(exact ? '1' : '0') + '\" '+\r\n        'data-gdx-panel-r32-selected-role=\"' + esc(exact && exact.selectedLight && exact.selectedLight.role || '') + '\" '+\r\n        'data-gdx-panel-r30a-state=\"' + esc(hasCdn ? 'cdn_pending' : 'schematic_only') + '\">'+\r\n        (\r\n          hasCdn\r\n            ? ''\r\n            : (\r\n                '<div class=\"gdx-panel-v4-r30a-schematic-layer\" data-gdx-panel-r30a-schematic=\"1\" data-gdx-panel-r30a-schematic-key=\"' + esc(template.schematicKey || '') + '\">'+\r\n                  setupDiagram(row, template)+\r\n                '</div>'\r\n              )\r\n        )+\r\n        (\r\n          hasCdn\r\n            ? (\r\n                '<div class=\"gdx-panel-v4-r30a-cdn-layer\" data-gdx-panel-r30a-cdn-layer=\"1\" aria-busy=\"true\">'+\r\n                  '<img data-gdx-panel-r30a-cdn-visual=\"1\" data-gdx-panel-r30a-src=\"' + esc(cdnPolicy.normalized) + '\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" alt=\"' + esc(template.altText || 'Panel LED setup kullan\u0131m g\u00F6rseli') + '\">'+\r\n                '</div>'\r\n              )\r\n            : ''\r\n        )+\r\n      '</section>';\r\n  }\r\n\r\n  function r30AR4PublishState(host, visual) {\r\n    W.GDX_PANEL_V4_R30A_ACTIVE_VISUAL_STATE = {\r\n      phase:\r\n        R30A_R4_PHASE,\r\n      version:\r\n        R30A_R4_VERSION,\r\n      activeTemplateKey:\r\n        r30AR4Clean(\r\n          visual.activeTemplateKey\r\n        ),\r\n      activeRequestTemplateKey:\r\n        r30AR4Clean(\r\n          visual.activeRequestTemplateKey\r\n        ),\r\n      requestToken:\r\n        Number(\r\n          visual.requestToken || 0\r\n        ),\r\n      acceptedToken:\r\n        Number(\r\n          visual.acceptedToken || 0\r\n        ),\r\n      state:\r\n        r30AR4Clean(\r\n          visual.state\r\n        ),\r\n      schematicVisible:\r\n        visual.schematicVisible ===\r\n          true,\r\n      cdnVisible:\r\n        visual.cdnVisible ===\r\n          true,\r\n      cdnUrl:\r\n        r30AR4Clean(\r\n          visual.cdnUrl\r\n        ),\r\n      errorCode:\r\n        r30AR4Clean(\r\n          visual.errorCode\r\n        ),\r\n      lastEvent:\r\n        r30AR4Clean(\r\n          visual.lastEvent\r\n        ),\r\n      hostConnected:\r\n        !!(\r\n          host &&\r\n          host.isConnected\r\n        )\r\n    };\r\n  }\r\n\r\n  function r30AR4SetHostState(\r\n    host,\r\n    nextState,\r\n    schematicVisible,\r\n    cdnVisible\r\n  ) {\r\n    if (!host) return;\r\n\r\n    host.setAttribute(\r\n      'data-gdx-panel-r30a-state',\r\n      nextState\r\n    );\r\n\r\n    [\r\n      'is-schematic-only',\r\n      'is-cdn-pending',\r\n      'is-cdn-ready',\r\n      'is-cdn-error-hold',\r\n      'is-cdn-error-fallback'\r\n    ].forEach(function (className) {\r\n      host.classList.remove(\r\n        className\r\n      );\r\n    });\r\n\r\n    host.classList.add(\r\n      'is-' +\r\n      nextState.replace(/_/g, '-')\r\n    );\r\n\r\n    var schematic =\r\n      host.querySelector(\r\n        '[data-gdx-panel-r30a-schematic=\"1\"]'\r\n      );\r\n\r\n    var cdnLayer =\r\n      host.querySelector(\r\n        '[data-gdx-panel-r30a-cdn-layer=\"1\"]'\r\n      );\r\n\r\n    if (schematic) {\r\n      schematic.hidden =\r\n        !schematicVisible;\r\n    }\r\n\r\n    if (cdnLayer) {\r\n      cdnLayer.hidden =\r\n        !cdnVisible;\r\n    }\r\n  }\r\n\r\n  function r30AR4InvalidateVisualRequest(reason) {\r\n    var visual =\r\n      r30AR4VisualState();\r\n\r\n    visual.requestToken += 1;\r\n    visual.acceptedToken =\r\n      visual.requestToken;\r\n    visual.activeTemplateKey = '';\r\n    visual.activeRequestTemplateKey = '';\r\n    visual.state = 'schematic_only';\r\n    visual.schematicVisible = true;\r\n    visual.cdnVisible = false;\r\n    visual.cdnUrl = '';\r\n    visual.errorCode = '';\r\n    visual.lastEvent =\r\n      reason || 'invalidated';\r\n\r\n    r30AR4PublishState(\r\n      null,\r\n      visual\r\n    );\r\n  }\r\n\r\n  function r30AR4ActivateVisualHost() {\r\n    var scope =\r\n      mount();\r\n\r\n    var host =\r\n      scope &&\r\n      scope.querySelector(\r\n        '[data-gdx-panel-r30a-setup-visual=\"1\"]'\r\n      );\r\n\r\n    if (!host) {\r\n      r30AR4InvalidateVisualRequest(\r\n        'no_active_setup_visual_host'\r\n      );\r\n      return {\r\n        ok: true,\r\n        state: 'schematic_only',\r\n        host: false\r\n      };\r\n    }\r\n\r\n    var visual =\r\n      r30AR4VisualState();\r\n\r\n    visual.requestToken += 1;\r\n    visual.acceptedToken =\r\n      visual.requestToken;\r\n\r\n    var token =\r\n      visual.acceptedToken;\r\n\r\n    var templateKey =\r\n      r30AR4Clean(\r\n        host.getAttribute(\r\n          'data-gdx-panel-r30a-template-key'\r\n        )\r\n      );\r\n\r\n    var img =\r\n      host.querySelector(\r\n        '[data-gdx-panel-r30a-cdn-visual=\"1\"]'\r\n      );\r\n\r\n    var url =\r\n      r30AR4Clean(\r\n        img &&\r\n        img.getAttribute(\r\n          'data-gdx-panel-r30a-src'\r\n        )\r\n      );\r\n\r\n    var policy =\r\n      r30AR4SafeHttpsUrl(url);\r\n\r\n    var hasCdn =\r\n      !!(\r\n        img &&\r\n        policy.safe &&\r\n        policy.normalized\r\n      );\r\n\r\n    visual.activeTemplateKey =\r\n      templateKey;\r\n    visual.activeRequestTemplateKey = '';\r\n    visual.state =\r\n      hasCdn\r\n        ? 'cdn_pending'\r\n        : 'schematic_only';\r\n    visual.schematicVisible =\r\n      !hasCdn;\r\n    visual.cdnVisible =\r\n      hasCdn;\r\n    visual.cdnUrl =\r\n      policy.safe\r\n        ? policy.normalized\r\n        : '';\r\n    visual.errorCode = '';\r\n    visual.lastEvent =\r\n      'activate_template';\r\n\r\n    r30AR4SetHostState(\r\n      host,\r\n      visual.state,\r\n      visual.schematicVisible,\r\n      visual.cdnVisible\r\n    );\r\n\r\n    if (\r\n      !img ||\r\n      !policy.normalized\r\n    ) {\r\n      visual.lastEvent =\r\n        policy.safe\r\n          ? 'activate_without_cdn'\r\n          : 'activate_rejected_url';\r\n\r\n      if (!policy.safe) {\r\n        visual.state =\r\n          'cdn_error_fallback';\r\n        visual.errorCode =\r\n          policy.status;\r\n        r30AR4SetHostState(\r\n          host,\r\n          'cdn_error_fallback',\r\n          true,\r\n          false\r\n        );\r\n      }\r\n\r\n      r30AR4PublishState(\r\n        host,\r\n        visual\r\n      );\r\n\r\n      return {\r\n        ok: true,\r\n        state: visual.state,\r\n        host: true,\r\n        imageRequest: false\r\n      };\r\n    }\r\n\r\n    visual.state =\r\n      'cdn_pending';\r\n    visual.activeRequestTemplateKey =\r\n      templateKey;\r\n    visual.lastEvent =\r\n      'cdn_request_started';\r\n\r\n    /* FS1-B/C \u2014 pending CDN state must not expose the schematic fallback.\r\n       This is state-driven (not timeout-driven): exact CDN ready => show CDN;\r\n       CDN error/no-CDN => existing schematic fail-close remains visible. */\r\n    visual.schematicVisible =\r\n      false;\r\n    visual.cdnVisible =\r\n      true;\r\n\r\n    r30AR4SetHostState(\r\n      host,\r\n      'cdn_pending',\r\n      false,\r\n      true\r\n    );\r\n\r\n    function r30AR4RequestSnapshot() {\r\n      return {\r\n        current:\r\n          r30AR4VisualState(),\r\n        currentHost:\r\n          mount() &&\r\n          mount().querySelector(\r\n            '[data-gdx-panel-r30a-setup-visual=\"1\"]'\r\n          )\r\n      };\r\n    }\r\n\r\n    function r30AR4RequestStillPending(\r\n      current,\r\n      currentHost\r\n    ) {\r\n      return (\r\n        current.acceptedToken ===\r\n          token &&\r\n        current.activeTemplateKey ===\r\n          templateKey &&\r\n        current.activeRequestTemplateKey ===\r\n          templateKey &&\r\n        current.state ===\r\n          'cdn_pending' &&\r\n        currentHost ===\r\n          host &&\r\n        host.isConnected\r\n      );\r\n    }\r\n\r\n    function r30AR4SameRequestAlreadyFinalized(\r\n      current,\r\n      currentHost\r\n    ) {\r\n      return (\r\n        current.acceptedToken ===\r\n          token &&\r\n        current.activeTemplateKey ===\r\n          templateKey &&\r\n        currentHost ===\r\n          host &&\r\n        host.isConnected &&\r\n        current.state !==\r\n          'cdn_pending'\r\n      );\r\n    }\r\n\r\n    function r30AR4FinalizeCdnReady(\r\n      eventName\r\n    ) {\r\n      var snapshot =\r\n        r30AR4RequestSnapshot();\r\n\r\n      var current =\r\n        snapshot.current;\r\n\r\n      var currentHost =\r\n        snapshot.currentHost;\r\n\r\n      if (\r\n        !r30AR4RequestStillPending(\r\n          current,\r\n          currentHost\r\n        )\r\n      ) {\r\n        if (\r\n          r30AR4SameRequestAlreadyFinalized(\r\n            current,\r\n            currentHost\r\n          )\r\n        ) {\r\n          return;\r\n        }\r\n\r\n        current.lastEvent =\r\n          'stale_load_ignored';\r\n\r\n        r30AR4PublishState(\r\n          currentHost,\r\n          current\r\n        );\r\n\r\n        return;\r\n      }\r\n\r\n      current.state =\r\n        'cdn_ready';\r\n      current.schematicVisible =\r\n        false;\r\n      current.cdnVisible =\r\n        true;\r\n      current.errorCode = '';\r\n      current.lastEvent =\r\n        eventName || 'cdn_loaded';\r\n\r\n      try {\r\n        img.hidden = false;\r\n        var readyLayer =\r\n          host.querySelector(\r\n            '[data-gdx-panel-r30a-cdn-layer=\"1\"]'\r\n          );\r\n        if (readyLayer) {\r\n          readyLayer.setAttribute(\r\n            'aria-busy',\r\n            'false'\r\n          );\r\n        }\r\n      } catch (ignore) {}\r\n\r\n      r30AR4SetHostState(\r\n        host,\r\n        'cdn_ready',\r\n        false,\r\n        true\r\n      );\r\n\r\n      r30AR4PublishState(\r\n        host,\r\n        current\r\n      );\r\n    }\r\n\r\n    function r30AR4FinalizeCdnError(\r\n      errorCode,\r\n      eventName\r\n    ) {\r\n      var snapshot =\r\n        r30AR4RequestSnapshot();\r\n\r\n      var current =\r\n        snapshot.current;\r\n\r\n      var currentHost =\r\n        snapshot.currentHost;\r\n\r\n      if (\r\n        !r30AR4RequestStillPending(\r\n          current,\r\n          currentHost\r\n        )\r\n      ) {\r\n        if (\r\n          r30AR4SameRequestAlreadyFinalized(\r\n            current,\r\n            currentHost\r\n          )\r\n        ) {\r\n          return;\r\n        }\r\n\r\n        current.lastEvent =\r\n          'stale_error_ignored';\r\n\r\n        r30AR4PublishState(\r\n          currentHost,\r\n          current\r\n        );\r\n\r\n        return;\r\n      }\r\n\r\n      current.state =\r\n        'cdn_error_hold';\r\n      current.schematicVisible =\r\n        false;\r\n      current.cdnVisible =\r\n        true;\r\n      current.errorCode =\r\n        errorCode ||\r\n        'image_load_error';\r\n      current.lastEvent =\r\n        eventName ||\r\n        'cdn_failed_hold';\r\n\r\n      try {\r\n        img.hidden = true;\r\n        var errorLayer =\r\n          host.querySelector(\r\n            '[data-gdx-panel-r30a-cdn-layer=\"1\"]'\r\n          );\r\n        if (errorLayer) {\r\n          errorLayer.setAttribute(\r\n            'aria-busy',\r\n            'true'\r\n          );\r\n        }\r\n      } catch (ignore) {}\r\n\r\n      r30AR4SetHostState(\r\n        host,\r\n        'cdn_error_hold',\r\n        false,\r\n        true\r\n      );\r\n\r\n      r30AR4PublishState(\r\n        host,\r\n        current\r\n      );\r\n    }\r\n\r\n    img.onload = function () {\r\n      r30AR4FinalizeCdnReady(\r\n        'cdn_loaded'\r\n      );\r\n    };\r\n\r\n    img.onerror = function () {\r\n      r30AR4FinalizeCdnError(\r\n        'image_load_error',\r\n        'cdn_failed'\r\n      );\r\n    };\r\n\r\n    try {\r\n      img.loading = 'eager';\r\n      img.decoding = 'async';\r\n\r\n      if (\r\n        'fetchPriority' in img\r\n      ) {\r\n        img.fetchPriority = 'high';\r\n      }\r\n    } catch (ignore) {}\r\n\r\n    img.src =\r\n      policy.normalized;\r\n\r\n    r30AR4PublishState(\r\n      host,\r\n      visual\r\n    );\r\n\r\n    window.setTimeout(\r\n      function () {\r\n        var snapshot =\r\n          r30AR4RequestSnapshot();\r\n\r\n        if (\r\n          !r30AR4RequestStillPending(\r\n            snapshot.current,\r\n            snapshot.currentHost\r\n          ) ||\r\n          !img.complete\r\n        ) {\r\n          return;\r\n        }\r\n\r\n        if (\r\n          Number(\r\n            img.naturalWidth || 0\r\n          ) > 0\r\n        ) {\r\n          r30AR4FinalizeCdnReady(\r\n            'cdn_loaded_complete_reconcile'\r\n          );\r\n          return;\r\n        }\r\n\r\n        r30AR4FinalizeCdnError(\r\n          'image_load_error',\r\n          'cdn_failed_complete_reconcile'\r\n        );\r\n      },\r\n      0\r\n    );\r\n\r\n    return {\r\n      ok: true,\r\n      state: 'cdn_pending',\r\n      host: true,\r\n      imageRequest: true,\r\n      token: token,\r\n      templateKey: templateKey\r\n    };\r\n  }\r\n\r\n\r\n  function bar(label, value) {\r\n    var v = clamp(value, 0, 100);\r\n    return ''+\r\n      '<div class=\"gdx-r11-modal-bar\">'+\r\n        '<span>' + esc(label) + '</span>'+\r\n        '<i><b style=\"width:' + esc(String(v)) + '%\"></b></i>'+\r\n        '<strong>' + esc(String(round0(v))) + '/100</strong>'+\r\n      '</div>';\r\n  }\r\n\r\n\r\n  function modalMediaKey(row, mode) {\r\n    return String((row && row.key) || (row && row.title) || 'modal') + ':' + String(mode || 'reason');\r\n  }\r\n\r\n  function modalMediaHtml(row, mode) {\r\n    row = row || {};\r\n    mode = mode || 'reason';\r\n\r\n    /* CANFOTO LB5 LIVE HOTFIX \u2014 PANEL MODAL SINGLE MAIN IMAGE RESTORE V1\r\n       Contract:\r\n       - \"Kurulumu G\u00F6r\" and \"Neden Bu \u00DCr\u00FCn?\" render only the primary product image.\r\n       - No media navigation arrows.\r\n       - No image counter.\r\n       - No modal re-render caused by image navigation.\r\n       - Product/data/score/setup/commerce truth remain untouched. */\r\n    var imgs = productImages(row.product || row, 1);\r\n    if (!imgs.length && row.image) imgs = [row.image];\r\n    imgs = imgs.slice(0, 1);\r\n\r\n    var label = mode === 'setup' ? 'Setup ana \u00FCr\u00FCn g\u00F6rseli' : 'Ana \u00FCr\u00FCn g\u00F6rseli';\r\n    var key = modalMediaKey(row, mode);\r\n    state.mediaIndex[key] = 0;\r\n\r\n    if (!imgs.length) {\r\n      return ''+\r\n        '<div class=\"gdx-r11-modal-media is-empty is-slider\" data-gdx-r11-modal-media=\"1\" data-gdx-r11-modal-slider=\"1\" data-gdx-r11-modal-image-count=\"0\" data-gdx-r11-media-mode=\"' + esc(mode) + '\">'+\r\n          '<div class=\"gdx-r11-modal-slider-frame\"><div class=\"gdx-r11-modal-main-img\"><span>\u00DCr\u00FCn g\u00F6rseli yok</span></div></div>'+\r\n          productDataBadgesHtml(row, mode)+\r\n          r33Cr01ScoreTransparencyHtml(row, mode, 'desktop-wide')+\r\n        '</div>';\r\n    }\r\n\r\n    return ''+\r\n      '<div class=\"gdx-r11-modal-media is-slider\" data-gdx-r11-modal-media=\"1\" data-gdx-r11-modal-slider=\"1\" data-gdx-r11-modal-image-count=\"1\" data-gdx-r11-media-mode=\"' + esc(mode) + '\" aria-label=\"' + esc(label) + '\">'+\r\n        '<div class=\"gdx-r11-modal-slider-frame\">'+\r\n          '<div class=\"gdx-r11-modal-main-img\" data-gdx-r11-modal-slider-main=\"1\">'+\r\n            '<img data-gdx-r11-modal-slider-image=\"1\" src=\"' + esc(imgs[0]) + '\" alt=\"' + esc((row.title || 'Panel LED \u00FCr\u00FCn') + ' ana g\u00F6rseli') + '\" loading=\"lazy\">'+\r\n          '</div>'+\r\n        '</div>'+\r\n        productDataBadgesHtml(row, mode)+\r\n        r33Cr01ScoreTransparencyHtml(row, mode, 'desktop-wide')+\r\n      '</div>';\r\n  }\r\n\r\n  function setupRoleName(row) {\r\n    row = row || {};\r\n    var sub = row.sub || currentSub();\r\n    var intent = String(sub.intent || sub.key || '');\r\n    var family = row.family;\r\n    var power = Number(row.power || 0);\r\n    if (/rgb|creative_bg|background|brand|music/.test(intent) || family === 'rgb') return 'Fon / efekt destek \u0131\u015F\u0131\u011F\u0131';\r\n    if (/product|clinical|dental|beauty/.test(intent)) return 'Ana \u0131\u015F\u0131k + yumu\u015Fak fill deste\u011Fi';\r\n    if (/mobile|battery|travel/.test(intent)) return 'Ta\u015F\u0131nabilir ana \u0131\u015F\u0131k';\r\n    if (/studio|high_power/.test(intent) || power >= 180) return 'Y\u00FCksek g\u00FC\u00E7l\u00FC ana / destek \u0131\u015F\u0131\u011F\u0131';\r\n    return 'Ana \u0131\u015F\u0131k / Key';\r\n  }\r\n\r\n  function setupFamilyUsageNote(row) {\r\n    row = row || {};\r\n    var family = row.family;\r\n    if (family === 'rgb') return 'RGB/FX ailesi; fon, atmosfer, marka rengi, rim veya efekt rol\u00FCnde daha anlaml\u0131 okunur. Beyaz ana \u0131\u015F\u0131k rol\u00FCnde ise renk do\u011Frulu\u011Fu ve g\u00FC\u00E7 band\u0131 ayr\u0131ca kontrol edilmelidir.';\r\n    if (family === 'bicolor') return 'Bi-Color ailesi; y\u00FCz, \u00FCr\u00FCn, e\u011Fitim ve klinik kullan\u0131mda Kelvin/CCT kontrol\u00FC sayesinde ana \u0131\u015F\u0131k ve fill rol\u00FCnde g\u00FCvenli bir ba\u015Flang\u0131\u00E7 verir.';\r\n    if (family === 'daylight') return 'Daylight ailesi; sabit beyaz \u0131\u015F\u0131k isteyen sade kurulumlarda okunabilir. Ortam \u0131\u015F\u0131\u011F\u0131na uyum ihtiyac\u0131 y\u00FCksekse CCT esnekli\u011Fi ayr\u0131ca de\u011Ferlendirilmelidir.';\r\n    return 'Panel LED ailesi; se\u00E7ili senaryoda \u0131\u015F\u0131k rol\u00FC, g\u00FC\u00E7 band\u0131 ve kullan\u0131m mesafesi birlikte okunarak konumland\u0131r\u0131l\u0131r.';\r\n  }\r\n\r\n  function setupPowerUseNote(row) {\r\n    var p = Number(row && row.power || 0);\r\n    if (p >= 180) return 'Y\u00FCksek g\u00FC\u00E7 band\u0131; daha geni\u015F alan, daha uzak konum veya profesyonel y\u00FCkseltme senaryosunda avantaj sa\u011Flar. K\u00FC\u00E7\u00FCk odada g\u00FC\u00E7 d\u00FC\u015F\u00FCr\u00FClerek daha yumu\u015Fak kullan\u0131m tercih edilmelidir.';\r\n    if (p >= 100) return 'Orta/y\u00FCksek g\u00FC\u00E7 band\u0131; masa ba\u015F\u0131 i\u00E7erik, e\u011Fitim ve k\u00FC\u00E7\u00FCk st\u00FCdyo aras\u0131nda esnek kullan\u0131m verir. Ana \u0131\u015F\u0131k veya g\u00FC\u00E7l\u00FC fill rol\u00FCnde dengeli okunur.';\r\n    if (p > 0) return 'Kompakt g\u00FC\u00E7 band\u0131; yak\u0131n mesafe, tek ki\u015Fi i\u00E7erik ve ba\u015Flang\u0131\u00E7 kurulumu i\u00E7in uygundur. Geni\u015F alan veya uzak mesafe i\u00E7in destek \u0131\u015F\u0131k gerekebilir.';\r\n    return 'G\u00FC\u00E7 band\u0131 \u00FCr\u00FCn verilerinden okunabildi\u011Fi \u00F6l\u00E7\u00FCde, mesafe ve \u0131\u015F\u0131k rol\u00FC \u00F6nerisiyle birlikte de\u011Ferlendirilir.';\r\n  }\r\n\r\n  function setupAlternativeRows(row) {\r\n    row = row || {};\r\n    var sub = row.sub || currentSub();\r\n    var intent = String(sub.intent || sub.key || '');\r\n    var family = row.family;\r\n    var power = Number(row.power || 0);\r\n    var rows = [];\r\n\r\n    rows.push({\r\n      title: 'Ana kurulum',\r\n      text: setupRoleName(row) + ' rol\u00FCyle ba\u015Flay\u0131n; \u0131\u015F\u0131\u011F\u0131 35\u201345\u00B0 aral\u0131\u011F\u0131nda konumland\u0131r\u0131p y\u00FCz/\u00FCr\u00FCn \u00FCzerinde g\u00F6lge ge\u00E7i\u015Fini kontroll\u00FC tutun.'\r\n    });\r\n\r\n    if (/product|catalog|jewelry|food|cosmetic/.test(intent)) {\r\n      rows.push({ title: '\u00DCr\u00FCn / masa \u00FCst\u00FC alternatif', text: '\u00DCr\u00FCne daha yak\u0131n, daha yumu\u015Fak a\u00E7\u0131yla \u00E7al\u0131\u015F\u0131n; parlama veren y\u00FCzeylerde fill g\u00FCc\u00FCn\u00FC d\u00FC\u015F\u00FCr\u00FCp ana \u0131\u015F\u0131\u011F\u0131 geni\u015F y\u00FCzeyden verin.' });\r\n      rows.push({ title: 'Beyaz fon d\u00FCzeni', text: 'Fon ve \u00FCr\u00FCn ayr\u0131m\u0131n\u0131 korumak i\u00E7in ana \u0131\u015F\u0131\u011F\u0131 \u00FCr\u00FCne, destek \u0131\u015F\u0131\u011F\u0131 veya mevcut ortam \u0131\u015F\u0131\u011F\u0131n\u0131 fona kontroll\u00FC bi\u00E7imde ay\u0131r\u0131n.' });\r\n    } else if (/rgb|creative_bg|background|brand|music/.test(intent) || family === 'rgb') {\r\n      rows.push({ title: 'Fon / atmosfer alternatifi', text: 'Ana beyaz \u0131\u015F\u0131\u011F\u0131 ayr\u0131 tutup RGB/FX \u0131\u015F\u0131\u011F\u0131 fon, rim veya renk vurgusu rol\u00FCne al\u0131n; renk efekti y\u00FCz/\u00FCr\u00FCn rengini bozmayacak g\u00FC\u00E7te kalmal\u0131d\u0131r.' });\r\n      rows.push({ title: 'Marka rengi / kreatif sahne', text: 'I\u015F\u0131\u011F\u0131 do\u011Frudan ana \u0131\u015F\u0131k yerine arka plan veya yan vurgu rol\u00FCnde kullanarak sahne dilini g\u00FC\u00E7lendirin.' });\r\n    } else if (/mobile|battery|travel/.test(intent)) {\r\n      rows.push({ title: 'H\u0131zl\u0131 mobil kurulum', text: 'I\u015F\u0131\u011F\u0131 yak\u0131n/orta mesafede ana \u0131\u015F\u0131k olarak kullan\u0131n; ta\u015F\u0131ma ve pil/priz durumuna g\u00F6re daha k\u0131sa mesafe ve daha d\u00FC\u015F\u00FCk g\u00FC\u00E7le ba\u015Flay\u0131n.' });\r\n      rows.push({ title: 'D\u0131\u015F \u00E7ekim destek rol\u00FC', text: 'Do\u011Fal \u0131\u015F\u0131k bask\u0131nsa paneli fill olarak, kapal\u0131 veya g\u00F6lgeli alanda ise ana \u0131\u015F\u0131k olarak konumland\u0131r\u0131n.' });\r\n    } else if (/studio|high_power/.test(intent) || power >= 180) {\r\n      rows.push({ title: 'Geni\u015F alan alternatifi', text: 'Daha uzak mesafeden ana \u0131\u015F\u0131k veya destek \u0131\u015F\u0131\u011F\u0131 olarak kullan\u0131n; \u0131\u015F\u0131k da\u011F\u0131l\u0131m\u0131n\u0131 fill veya ikinci panelle tamamlay\u0131n.' });\r\n      rows.push({ title: '\u00C7ok \u0131\u015F\u0131kl\u0131 st\u00FCdyo', text: 'Bu \u00FCr\u00FCn\u00FC key, g\u00FC\u00E7l\u00FC fill veya teknik destek rol\u00FCne al\u0131n; arka plan/rim rol\u00FCn\u00FC ayr\u0131 \u0131\u015F\u0131kla y\u00F6netmek daha kontroll\u00FC sonu\u00E7 verir.' });\r\n    } else {\r\n      rows.push({ title: 'Yak\u0131n mesafe alternatif', text: 'Masa ba\u015F\u0131 anlat\u0131mda \u0131\u015F\u0131\u011F\u0131 0.8\u20131.5 m band\u0131nda tutarak y\u00FCz ve \u00FCst g\u00F6vde \u00FCzerinde dengeli beyaz \u0131\u015F\u0131k al\u0131n.' });\r\n      rows.push({ title: 'Yumu\u015Fak fill alternatifi', text: 'Ana \u0131\u015F\u0131k \u00E7ok bask\u0131n gelirse \u00FCr\u00FCn\u00FC fill rol\u00FCne al\u0131p d\u00FC\u015F\u00FCk g\u00FC\u00E7te g\u00F6lge ge\u00E7i\u015Fini yumu\u015Fat\u0131n.' });\r\n    }\r\n\r\n    rows.push({ title: 'Ne zaman alternatif se\u00E7ilmeli?', text: setupPowerUseNote(row) });\r\n    return uniqueCopyList(rows.map(function(x){ return x.title + ': ' + x.text; }), 4).map(function(text){\r\n      var parts = text.split(': ');\r\n      return { title: parts.shift() || 'Alternatif setup', text: parts.join(': ') || text };\r\n    });\r\n  }\r\n\r\n\r\n  /* ==========================================================================\r\n     PANEL LED V4 / R33-CR02\r\n     SETUP ZEK\u00C2SI \u2014 AF04 COMPACT DYNAMIC SCHEMATIC SLOT\r\n     - UI owns only the slot and responsive layout.\r\n     - AF04 owns the model, geometry and rendered schematic.\r\n     - No new observer / interval / modal owner.\r\n     ========================================================================== */\r\n  var R33_CR02_SETUP_SCHEMA_SLOT_VERSION =\r\n    'PANEL-V4-R33-CR02-SETUP-INTELLIGENCE-COMPACT-SCHEMA-SLOT-V1';\r\n\r\n  function r33Cr02CompactSchemaSlotHtml() {\r\n    return ''+\r\n      '<section class=\"gdx-r33-cr02-compact-schema-slot\" '+\r\n        'data-gdx-r33-cr02-compact-schema-slot=\"1\" '+\r\n        'data-gdx-r33-cr02-state=\"waiting\" '+\r\n        'data-gdx-r33-cr02-ui-version=\"' + esc(R33_CR02_SETUP_SCHEMA_SLOT_VERSION) + '\" '+\r\n        'aria-label=\"Dinamik kurulum \u015Femas\u0131\">'+\r\n        '<div class=\"gdx-r33-cr02-compact-schema-waiting\">'+\r\n          '<b>Dinamik kurulum \u015Femas\u0131</b>'+\r\n          '<span>Kurulum verisi haz\u0131rlan\u0131yor\u2026</span>'+\r\n        '</div>'+\r\n      '</section>';\r\n  }\r\n\r\n  function r33Cr02SetupValuesHtml(rows) {\r\n    return ''+\r\n      '<div class=\"gdx-r33-cr02-setup-values\" data-gdx-r33-cr02-setup-values=\"1\">'+\r\n        '<div class=\"gdx-r33-cr02-setup-values-head\">'+\r\n          '<b>Kurulum de\u011Ferleri</b>'+\r\n          '' +\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-setup-alt-list\">'+\r\n          (rows || []).map(function (item) {\r\n            return '<section data-gdx-r11-setup-alt=\"1\"><b>' +\r\n              esc(item.title) +\r\n              '</b><small>' +\r\n              esc(item.text) +\r\n              '</small></section>';\r\n          }).join('') +\r\n        '</div>'+\r\n      '</div>';\r\n  }\r\n\r\n  function r33Cr02SetupLayoutHtml(rows) {\r\n    return ''+\r\n      '<div class=\"gdx-r33-cr02-setup-layout\" data-gdx-r33-cr02-setup-layout=\"1\">'+\r\n        r33Cr02CompactSchemaSlotHtml()+\r\n        r33Cr02SetupValuesHtml(rows)+\r\n      '</div>';\r\n  }\r\n\r\n  function setupIntelligenceHtml(row) {\r\n    row = row || {};\r\n\r\n    var resolved =\r\n      r30AR4ResolveActiveTemplate(\r\n        row\r\n      );\r\n\r\n    var exact =\r\n      r32AF02ExactContext(\r\n        row,\r\n        resolved.template\r\n      );\r\n\r\n    if (exact) {\r\n      var truth =\r\n        exact.truth || {};\r\n\r\n      var camera =\r\n        truth.camera || {};\r\n\r\n      var kelvin =\r\n        truth.kelvin || {};\r\n\r\n      var exactRows =\r\n        (truth.lights || [])\r\n          .map(function (light) {\r\n            return {\r\n              title:\r\n                r30AR4Clean(\r\n                  light.role\r\n                ),\r\n              text:\r\n                r32AF02LightValue(\r\n                  light\r\n                ) +\r\n                ' \u00B7 Hedef ' +\r\n                r30AR4Clean(\r\n                  light.target\r\n                )\r\n            };\r\n          });\r\n\r\n      exactRows.push({\r\n        title:\r\n          'Kamera',\r\n        text:\r\n          r32AF02FmtM(\r\n            camera.distanceM\r\n          ) +\r\n          ' \u00B7 ' +\r\n          r30AR4Clean(\r\n            camera.band\r\n          ) +\r\n          ' \u00B7 ' +\r\n          r30AR4Clean(\r\n            camera.frameOrientation\r\n          )\r\n      });\r\n\r\n      exactRows.push({\r\n        title:\r\n          'Kelvin',\r\n        text:\r\n          r30AR4Clean(\r\n            kelvin.rangeK\r\n          ) +\r\n          (\r\n            r30AR4Clean(\r\n              kelvin.note\r\n            )\r\n              ? ' \u00B7 ' +\r\n                r30AR4Clean(\r\n                  kelvin.note\r\n                )\r\n              : ''\r\n          )\r\n      });\r\n\r\n      return ''+\r\n        '<article class=\"gdx-r11-setup-intelligence is-r32-exact\" data-gdx-r11-setup-intelligence=\"1\" data-gdx-panel-r32-exact-intelligence=\"1\">'+\r\n          '<div class=\"gdx-r11-setup-intelligence-head\"><span>Kurulum Deste\u011Fi</span><h4>\u00D6nerilen setup \u00F6zeti</h4></div>'+\r\n          '<p data-gdx-r11-setup-role-explanation=\"1\">' +\r\n            esc(\r\n              r30AR4Clean(\r\n                exact.selectedLight &&\r\n                exact.selectedLight.role\r\n              ) +\r\n              ' \u00FCr\u00FCn rol\u00FC; di\u011Fer g\u00F6r\u00FCnen \u0131\u015F\u0131k g\u00F6revleri \u00FCr\u00FCn paketi de\u011Fildir.'\r\n            ) +\r\n          '</p>'+\r\n          r33Cr02SetupLayoutHtml(exactRows)+\r\n          '<div class=\"gdx-r11-setup-family-note\" data-gdx-r11-setup-family-note=\"1\">' +\r\n            esc(\r\n              r30AR4Clean(\r\n                truth.scenarioSpecialRule\r\n              ) ||\r\n              '\u015Eema ve setup \u00F6zeti ayn\u0131 de\u011Ferleri kullan\u0131r.'\r\n            ) +\r\n          '</div>'+\r\n        '</article>';\r\n    }\r\n\r\n    var alts =\r\n      setupAlternativeRows(row);\r\n\r\n    var familyNote =\r\n      safeNarrativeText(\r\n        setupFamilyUsageNote(row)\r\n      );\r\n\r\n    var roleNote =\r\n      safeNarrativeText(\r\n        setupRoleName(row) +\r\n        ' rol\u00FC i\u00E7in konum, mesafe ve g\u00FC\u00E7 yorumu \u00FCr\u00FCn s\u0131n\u0131f\u0131na g\u00F6re \u00F6l\u00E7eklenir.'\r\n      );\r\n\r\n    return ''+\r\n      '<article class=\"gdx-r11-setup-intelligence\" data-gdx-r11-setup-intelligence=\"1\">'+\r\n        '<div class=\"gdx-r11-setup-intelligence-head\"><span>Kurulum Deste\u011Fi</span><h4>Alternatif kurulum \u00F6nerileri</h4></div>'+\r\n        '<p data-gdx-r11-setup-role-explanation=\"1\">' + esc(roleNote) + '</p>'+\r\n        r33Cr02SetupLayoutHtml(alts)+\r\n        '<div class=\"gdx-r11-setup-family-note\" data-gdx-r11-setup-family-note=\"1\">' + esc(familyNote) + '</div>'+\r\n      '</article>';\r\n  }\r\n\r\n\r\n  function reasonText(row) {\r\n    var sub = row.sub || currentSub();\r\n    var main = currentMain();\r\n    var f = row.family;\r\n    var familyText = '';\r\n\r\n    if (f === 'rgb') {\r\n      familyText = /rgb|background|creative_bg|rgb_brand/.test(sub.intent)\r\n        ? 'RGB/FX karakteri se\u00E7ili yarat\u0131c\u0131 senaryoda renk, efekt ve fon kontrol\u00FCn\u00FC g\u00FC\u00E7lendirir.'\r\n        : 'RGB/FX bu se\u00E7imde ana gerek\u00E7e de\u011Fildir; \u00FCr\u00FCn beyaz \u0131\u015F\u0131k, g\u00FC\u00E7 ve genel F/P dengesiyle ayr\u0131ca okunmal\u0131d\u0131r.';\r\n    } else if (f === 'bicolor') {\r\n      familyText = 'Bi-Color yap\u0131 CCT/Kelvin esnekli\u011Fi, g\u00FCvenli beyaz \u0131\u015F\u0131k ve y\u00FCz/\u00FCr\u00FCn ayd\u0131nlatmas\u0131nda daha kontroll\u00FC \u00E7al\u0131\u015Fma sa\u011Flar.';\r\n    } else if (f === 'daylight') {\r\n      familyText = 'Daylight yap\u0131 sabit beyaz \u0131\u015F\u0131k, n\u00F6tr g\u00F6r\u00FCn\u00FCm ve sade kurulum ihtiyac\u0131nda anlaml\u0131d\u0131r.';\r\n    } else {\r\n      familyText = 'Panel LED yap\u0131s\u0131 se\u00E7ili kullan\u0131mda temel \u0131\u015F\u0131k ihtiyac\u0131n\u0131 kar\u015F\u0131lar; karar ama\u00E7 uyumu ve genel F/P dengesiyle birlikte okunmal\u0131d\u0131r.';\r\n    }\r\n\r\n    return ''+\r\n      row.title + ' se\u00E7ili senaryoda ' + round0(row.purposeScore) + '/100 ama\u00E7 uyumu ve ' +\r\n      round0(row.fpScore) + '/100 F/P \u00F6neri puan\u0131yla konumlan\u0131r. ' +\r\n      familyText;\r\n  }\r\n\r\n  function rankNarrative(row) {\r\n    if (row.rank === 1) return 'Bu \u00FCr\u00FCn, se\u00E7ili alt ama\u00E7 i\u00E7in ana \u00F6neri olarak en dengeli adayd\u0131r.';\r\n    if (row.rank === 2) return 'Bu \u00FCr\u00FCn, ilk \u00F6neriye g\u00F6re farkl\u0131 g\u00FC\u00E7l\u00FC taraflar\u0131 olan anlaml\u0131 alternatiftir.';\r\n    return 'Bu \u00FCr\u00FCn, belirli kullan\u0131m ko\u015Fullar\u0131nda de\u011Ferlendirilebilecek senaryo alternatifidir.';\r\n  }\r\n\r\n  function sourceLine(row) {\r\n    return 'Karar sat\u0131r\u0131, ama\u00E7 matrisi ve FP14 kan\u0131t ayr\u0131m\u0131yla desteklenir.';\r\n  }\r\n\r\n  function r29R5FamilyLabel(row) {\r\n    var family = r29R4Clean(row && row.family);\r\n    if (family === 'rgb') return 'RGB';\r\n    if (family === 'bicolor') return 'Bi-Color';\r\n    if (family === 'daylight') return 'Daylight';\r\n    return r29R4Clean(row && row.familyLabel) || 'Panel LED';\r\n  }\r\n\r\n  function r29R5PowerValue(row) {\r\n    var power = Number(row && row.power || 0);\r\n    return isFinite(power) && power > 0 ? power : 0;\r\n  }\r\n\r\n  function r29R5PowerBand(row) {\r\n    var power = r29R5PowerValue(row);\r\n    if (power >= 180) return 'y\u00FCksek g\u00FC\u00E7 band\u0131';\r\n    if (power >= 100) return 'orta / y\u00FCksek g\u00FC\u00E7 band\u0131';\r\n    if (power > 0) return 'kompakt g\u00FC\u00E7 band\u0131';\r\n    return 'g\u00FC\u00E7 verisi s\u0131n\u0131rl\u0131';\r\n  }\r\n\r\n  function r29R5ResolveContext() {\r\n    var selection = r28ReadOnlySelection() || {};\r\n    var key = r29R4Clean(selection.activeSelectionKey);\r\n    if (!key) return null;\r\n\r\n    var context = null;\r\n    if (typeof W.resolvePanelV4R28SelectionContext === 'function') {\r\n      try { context = W.resolvePanelV4R28SelectionContext(selection); } catch (ignore) {}\r\n    }\r\n    if (!context) context = W.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n\r\n    var contextKey = r29R4Clean(\r\n      context && context.activeSelection && context.activeSelection.activeSelectionKey\r\n    );\r\n    return contextKey === key ? context : null;\r\n  }\r\n\r\n  function r29R5RoleLabel(context, row) {\r\n    context = context || {};\r\n    var selection = r28ReadOnlySelection() || {};\r\n    if (r29R4Clean(selection.activeSelectionKey) === R2I_RIM_KEY) return 'kontur / kenar \u0131\u015F\u0131\u011F\u0131';\r\n    var keys = r29R4RoleKeysFromContext(context);\r\n    var primary = r29R4Clean(\r\n      context.noraAdapter && context.noraAdapter.primaryRole\r\n    ) || r29R4Clean(keys[0]);\r\n    var label = r29R4RoleLabel(primary);\r\n    if (label) return label;\r\n\r\n    var type = r29R4Clean(\r\n      context.resolvedScenario && context.resolvedScenario.scenarioType\r\n    );\r\n    if (type === 'rgb_background_accent') return 'arka plan / renk ayr\u0131m\u0131 \u0131\u015F\u0131\u011F\u0131';\r\n    if (type === 'compact_support_close_range') return 'yak\u0131n plan destek \u0131\u015F\u0131\u011F\u0131';\r\n    if (r29R4Clean(row && row.family) === 'rgb') return 'beyaz \u0131\u015F\u0131k ana/dolgu + RGB vurgu';\r\n    return 'dengeli ana / dolgu \u0131\u015F\u0131\u011F\u0131';\r\n  }\r\n\r\n  function r29R5SetupFocus(context, row, roleLabel) {\r\n    var selection = r28ReadOnlySelection() || {};\r\n    if (r29R4Clean(selection.activeSelectionKey) === R2I_RIM_KEY) {\r\n      return 'RGB paneli ki\u015Fi veya modelin arka-yan aks\u0131na yerle\u015Ftir; \u0131\u015F\u0131\u011F\u0131 yaln\u0131z omuz, sa\u00E7 veya y\u00FCz kenar\u0131nda kontroll\u00FC bir kontur olu\u015Fturacak seviyede tut.';\r\n    }\r\n    var type = r29R4Clean(\r\n      context && context.resolvedScenario && context.resolvedScenario.scenarioType\r\n    );\r\n    var power = r29R5PowerValue(row);\r\n\r\n    if (type === 'rgb_background_accent') {\r\n      return 'I\u015F\u0131\u011F\u0131 konu arkas\u0131nda veya fona do\u011Fru konumland\u0131r; renk ayr\u0131m\u0131n\u0131 kontroll\u00FC tut ve y\u00FCz/\u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131n\u0131 ayr\u0131 kur.';\r\n    }\r\n    if (type === 'compact_support_close_range') {\r\n      return 'I\u015F\u0131\u011F\u0131 yakla\u015F\u0131k 0,7\u20131,2 metre mesafede ve hafif yandan kullan; parlama olu\u015Fursa a\u00E7\u0131y\u0131 de\u011Fi\u015Ftir veya g\u00FCc\u00FC d\u00FC\u015F\u00FCr.';\r\n    }\r\n    if (/dolgu|destek/.test(r29R4Lower(roleLabel))) {\r\n      return 'I\u015F\u0131\u011F\u0131 ana \u0131\u015F\u0131\u011F\u0131n kar\u015F\u0131 taraf\u0131na yerle\u015Ftir ve g\u00FCc\u00FC daha d\u00FC\u015F\u00FCk tut; ama\u00E7 g\u00F6lgeyi silmek de\u011Fil, ge\u00E7i\u015Fi yumu\u015Fatmakt\u0131r.';\r\n    }\r\n    if (power >= 180) {\r\n      return 'I\u015F\u0131\u011F\u0131 konuya 30\u201345 derece a\u00E7\u0131yla, g\u00F6z hizas\u0131n\u0131n hafif \u00FCzerinde kur; yak\u0131n mesafede dif\u00FCzyon kullan\u0131p g\u00FCc\u00FC kontroll\u00FC azalt.';\r\n    }\r\n    return 'I\u015F\u0131\u011F\u0131 konuya 30\u201345 derece a\u00E7\u0131yla, g\u00F6z hizas\u0131n\u0131n hafif \u00FCzerinde ve yakla\u015F\u0131k 1\u20131,5 metre mesafede konumland\u0131r.';\r\n  }\r\n\r\n  function r29R5RoleTruth(context, row, roleLabel) {\r\n    var selection = r28ReadOnlySelection() || {};\r\n    if (r29R4Clean(selection.activeSelectionKey) === R2I_RIM_KEY) {\r\n      if (r29R4Clean(row && row.family) === 'rgb') {\r\n        return 'Bu \u00FCr\u00FCn\u00FCn do\u011Fru g\u00F6revi ' + roleLabel + ' kullan\u0131m\u0131d\u0131r; RGB kanal\u0131n\u0131 ki\u015Fi/model kontur ayr\u0131m\u0131nda tut, ana y\u00FCz \u0131\u015F\u0131\u011F\u0131n\u0131 ayr\u0131 beyaz \u0131\u015F\u0131kla kur.';\r\n      }\r\n      return 'Bu \u00FCr\u00FCn beyaz kenar deste\u011Fi verebilir; renkli kontur ayr\u0131m\u0131 i\u00E7in RGB \u00F6zellikli bir alternatif daha do\u011Frudan e\u015Fle\u015Fir.';\r\n    }\r\n    var type = r29R4Clean(\r\n      context && context.resolvedScenario && context.resolvedScenario.scenarioType\r\n    );\r\n    var family = r29R4Clean(row && row.family);\r\n\r\n    if (type === 'rgb_background_accent') {\r\n      if (family === 'rgb') {\r\n        return 'Bu \u00FCr\u00FCn\u00FCn do\u011Fru rol\u00FC ' + roleLabel + ' kullan\u0131m\u0131d\u0131r; RGB kanal\u0131n\u0131 fon ve kenar ayr\u0131m\u0131nda, beyaz \u0131\u015F\u0131k kanal\u0131n\u0131 gerekti\u011Finde kontroll\u00FC destek olarak kullan.';\r\n      }\r\n      return 'Bu \u00FCr\u00FCn beyaz \u0131\u015F\u0131k taraf\u0131nda destek verebilir; ger\u00E7ek renkli fon ve efekt i\u00E7in ayr\u0131 bir RGB \u0131\u015F\u0131k gerekir.';\r\n    }\r\n    if (family === 'rgb') {\r\n      return 'Bu senaryoda RGB \u00F6zelli\u011Fi ana gerek\u00E7e de\u011Fildir; beyaz \u0131\u015F\u0131k kanal\u0131n\u0131 ' + roleLabel + ' rol\u00FCnde, RGB kanal\u0131n\u0131 ise fon veya vurgu i\u00E7in ay\u0131r.';\r\n    }\r\n    if (family === 'bicolor') {\r\n      return 'Bi-Color yap\u0131y\u0131 ' + roleLabel + ' rol\u00FCnde kullan; Kelvin ayar\u0131n\u0131 ortam \u0131\u015F\u0131\u011F\u0131na g\u00F6re e\u015Fle\u015Ftir.';\r\n    }\r\n    if (family === 'daylight') {\r\n      return 'Daylight yap\u0131y\u0131 ' + roleLabel + ' rol\u00FCnde kullan; sabit beyaz \u0131\u015F\u0131\u011F\u0131 ortam rengiyle uyumlu tut.';\r\n    }\r\n    return 'Bu \u00FCr\u00FCn\u00FC ' + roleLabel + ' rol\u00FCnde de\u011Ferlendir; ger\u00E7ek sonu\u00E7 mesafe, dif\u00FCzyon ve g\u00FC\u00E7 ayar\u0131yla de\u011Fi\u015Fir.';\r\n  }\r\n\r\n  function r29R5Caution(context, row) {\r\n    var selection = r28ReadOnlySelection() || {};\r\n    if (r29R4Clean(selection.activeSelectionKey) === R2I_RIM_KEY) {\r\n      return 'RGB kontur \u0131\u015F\u0131\u011F\u0131n\u0131 y\u00FCz\u00FCn ana pozlamas\u0131na ta\u015F\u0131may\u0131n; renk doygunlu\u011Fu cilt tonunu bozmayacak seviyede kalmal\u0131d\u0131r.';\r\n    }\r\n    var type = r29R4Clean(\r\n      context && context.resolvedScenario && context.resolvedScenario.scenarioType\r\n    );\r\n    var family = r29R4Clean(row && row.family);\r\n    var power = r29R5PowerValue(row);\r\n\r\n    if (type === 'balanced_key_fill' && power > 0 && power < 80) {\r\n      return 'Bu g\u00FC\u00E7 band\u0131 yak\u0131n ve orta mesafede kontroll\u00FCd\u00FCr; geni\u015F alan veya uzak konumda tek ba\u015F\u0131na yeterli ana \u0131\u015F\u0131k kabul edilmemelidir.';\r\n    }\r\n    if (type === 'compact_support_close_range' && power >= 150) {\r\n      return 'Yak\u0131n mesafede bu g\u00FC\u00E7 sert ve parlak g\u00F6r\u00FCnebilir; g\u00FCc\u00FC d\u00FC\u015F\u00FCr, dif\u00FCzyon ekle ve do\u011Frudan yans\u0131may\u0131 kontrol et.';\r\n    }\r\n    if (family === 'rgb' && type !== 'rgb_background_accent') {\r\n      return 'Cilt veya \u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131nda doygun RGB renklerini kullanma; do\u011Fal g\u00F6r\u00FCn\u00FCm i\u00E7in beyaz \u0131\u015F\u0131k kanal\u0131n\u0131 temel al.';\r\n    }\r\n    if (type === 'rgb_background_accent') {\r\n      return 'RGB \u0131\u015F\u0131\u011F\u0131n\u0131 y\u00FCz veya \u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131 yerine kullanmak renk do\u011Frulu\u011Funu bozabilir; ana \u0131\u015F\u0131\u011F\u0131 ayr\u0131 tut.';\r\n    }\r\n    return 'Teknik skor tek ba\u015F\u0131na kurulum karar\u0131 de\u011Fildir; mesafe, yans\u0131t\u0131c\u0131 y\u00FCzey ve ortam \u0131\u015F\u0131\u011F\u0131n\u0131 birlikte kontrol et.';\r\n  }\r\n\r\n\r\n  function r29R5SetupNoraModel(context, row) {\r\n    context = context || {};\r\n    row = row || {};\r\n\r\n    var active =\r\n      context.activeSelection || {};\r\n\r\n    var resolved =\r\n      r30AR4ResolveActiveTemplate(\r\n        row\r\n      );\r\n\r\n    var template =\r\n      resolved.template || {};\r\n\r\n    var exact =\r\n      r32AF02ExactContext(\r\n        row,\r\n        template\r\n      );\r\n\r\n    var familyLabel =\r\n      r29R5FamilyLabel(row);\r\n\r\n    var power =\r\n      r29R5PowerValue(row);\r\n\r\n    var subTitle =\r\n      r29R4Clean(\r\n        active.activeSubPurposeTitle\r\n      ) ||\r\n      r29R4Clean(\r\n        (row.sub || currentSub()).label\r\n      );\r\n\r\n    var productTitle =\r\n      r29R4Clean(row.title) ||\r\n      'Se\u00E7ili Panel LED';\r\n\r\n    if (exact) {\r\n      var truth =\r\n        exact.truth || {};\r\n\r\n      var selected =\r\n        exact.selectedLight || {};\r\n\r\n      var roleLabel =\r\n        r29R4Clean(\r\n          selected.role\r\n        );\r\n\r\n      var focusText =\r\n        roleLabel +\r\n        ' rol\u00FCnde ' +\r\n        (\r\n          r29R4Clean(\r\n            selected.target\r\n          ) ||\r\n          'Konu/\u00DCr\u00FCn'\r\n        ) +\r\n        ' y\u00F6n\u00FCne ' +\r\n        r29R4Clean(\r\n          selected.angleDeg\r\n        ) +\r\n        '\u00B0 a\u00E7\u0131yla, ' +\r\n        r32AF02FmtM(\r\n          selected.distanceM\r\n        ) +\r\n        ' (' +\r\n        r29R4Clean(\r\n          selected.band\r\n        ) +\r\n        ') mesafede ve ' +\r\n        r32AF02FmtM(\r\n          selected.heightM\r\n        ) +\r\n        ' y\u00FCkseklikte konumland\u0131r.' +\r\n        (\r\n          truth.kelvin &&\r\n          r29R4Clean(\r\n            truth.kelvin.rangeK\r\n          )\r\n            ? ' \u00D6nerilen Kelvin: ' +\r\n              r29R4Clean(\r\n                truth.kelvin.rangeK\r\n              ) +\r\n              '.'\r\n            : ''\r\n        );\r\n\r\n      var roleText =\r\n        productTitle +\r\n        ', bu kurulumda ' +\r\n        roleLabel +\r\n        ' g\u00F6revini \u00FCstlenir. ' +\r\n        (\r\n          exact.companionRoles.length\r\n            ? 'Ek \u0131\u015F\u0131k g\u00F6revleri: ' +\r\n              exact.companionRoles.join(', ') +\r\n              '. '\r\n            : ''\r\n        ) +\r\n        'Bu \u00FCr\u00FCn tek ba\u015F\u0131na t\u00FCm kurulumu olu\u015Fturmaz.';\r\n\r\n      var cards = [\r\n        {\r\n          key:\r\n            'focus',\r\n          label:\r\n            'Kurulum oda\u011F\u0131',\r\n          text:\r\n            r29R4Concise(\r\n              focusText,\r\n              320\r\n            )\r\n        },\r\n        {\r\n          key:\r\n            'role',\r\n          label:\r\n            '\u00DCr\u00FCn\u00FCn do\u011Fru rol\u00FC',\r\n          text:\r\n            r29R4Concise(\r\n              roleText,\r\n              320\r\n            )\r\n        },\r\n        {\r\n          key:\r\n            'caution',\r\n          label:\r\n            'D\u00FCr\u00FCst uyar\u0131',\r\n          text:\r\n            r29R4Concise(\r\n              r32AF02Caution(\r\n                row,\r\n                exact\r\n              ),\r\n              320\r\n            )\r\n        }\r\n      ];\r\n\r\n      return {\r\n        phase:\r\n          'PANEL-V4-R32-AF02-N1-EXACT-SETUP-NORA-SOURCE',\r\n        version:\r\n          R32_AF02_N1_VERSION,\r\n        activeSelectionKey:\r\n          r29R4Clean(\r\n            active.activeSelectionKey\r\n          ),\r\n        scenarioKey:\r\n          r29R4Clean(\r\n            template.templateKey\r\n          ),\r\n        scenarioType:\r\n          r29R4Clean(\r\n            truth.scenarioType\r\n          ),\r\n        previewKey:\r\n          'setup_modal_preview_' +\r\n          r29R4Clean(\r\n            template.templateKey\r\n          ),\r\n        purposeTitle:\r\n          r29R4Clean(\r\n            active.activePurposeTitle\r\n          ),\r\n        subPurposeTitle:\r\n          subTitle,\r\n        productKey:\r\n          r29R4Clean(\r\n            row.key\r\n          ),\r\n        productTitle:\r\n          productTitle,\r\n        family:\r\n          r29R4Clean(\r\n            row.family\r\n          ),\r\n        familyLabel:\r\n          familyLabel,\r\n        power:\r\n          power,\r\n        powerBand:\r\n          r29R5PowerBand(row),\r\n        primaryRoleLabel:\r\n          roleLabel,\r\n        selectedProductRole:\r\n          roleLabel,\r\n        companionRoles:\r\n          exact.companionRoles.slice(),\r\n        exactSetup:\r\n          true,\r\n        title:\r\n          subTitle\r\n            ? subTitle +\r\n              ' i\u00E7in kurulum yorumu'\r\n            : 'Setup kurulumu i\u00E7in NORA yorumu',\r\n        cards:\r\n          cards,\r\n        meta:\r\n          [\r\n            roleLabel,\r\n            familyLabel,\r\n            power\r\n              ? String(power) + 'W'\r\n              : r29R5PowerBand(row)\r\n          ].filter(Boolean),\r\n        compactText:\r\n          cards.map(function (card) {\r\n            return card.label +\r\n              ': ' +\r\n              card.text;\r\n          }).join(' ')\r\n      };\r\n    }\r\n\r\n    var scenario =\r\n      context.resolvedScenario || {};\r\n\r\n    var scenarioKey =\r\n      r29R4Clean(\r\n        scenario.scenarioKey\r\n      );\r\n\r\n    var roleLabel =\r\n      r29R5RoleLabel(\r\n        context,\r\n        row\r\n      );\r\n\r\n    var cards = [\r\n      { key:'focus', label:'Kurulum oda\u011F\u0131', text:r29R4Concise(r29R5SetupFocus(context,row,roleLabel),220) },\r\n      { key:'role', label:'\u00DCr\u00FCn\u00FCn do\u011Fru rol\u00FC', text:r29R4Concise(r29R5RoleTruth(context,row,roleLabel),230) },\r\n      { key:'caution', label:'D\u00FCr\u00FCst uyar\u0131', text:r29R4Concise(r29R5Caution(context,row),230) }\r\n    ];\r\n\r\n    return {\r\n      phase:'PANEL-V4-R29-R5-R1-EXISTING-SETUP-NORA-SOURCE-OWNERSHIP-CONCISE-COPY-SYNC-APPLICATION',\r\n      version:'PANEL-V4-R29-R5-R1-EXISTING-SETUP-NORA-SOURCE-OWNERSHIP-V1',\r\n      activeSelectionKey:r29R4Clean(active.activeSelectionKey),\r\n      scenarioKey:scenarioKey,\r\n      previewKey:scenarioKey ? 'setup_modal_preview_' + scenarioKey : '',\r\n      purposeTitle:r29R4Clean(active.activePurposeTitle),\r\n      subPurposeTitle:subTitle,\r\n      productKey:r29R4Clean(row.key),\r\n      productTitle:productTitle,\r\n      family:r29R4Clean(row.family),\r\n      familyLabel:familyLabel,\r\n      power:power,\r\n      powerBand:r29R5PowerBand(row),\r\n      primaryRoleLabel:roleLabel,\r\n      title:subTitle ? subTitle + ' i\u00E7in kurulum yorumu' : 'Setup kurulumu i\u00E7in NORA yorumu',\r\n      cards:cards,\r\n      meta:[roleLabel,familyLabel,power ? String(power)+'W' : r29R5PowerBand(row)].filter(Boolean),\r\n      compactText:cards.map(function(card){ return card.label + ': ' + card.text; }).join(' ')\r\n    };\r\n  }\r\n\r\n  function r29R5SetupNoraHtml(row) {\r\n    var context = r29R5ResolveContext();\r\n    if (!context) {\r\n      state.setupNoraContext = null;\r\n      W.GDX_PANEL_V4_R29_SETUP_NORA_CONTEXT = null;\r\n      return '';\r\n    }\r\n\r\n    var model = r29R5SetupNoraModel(context,row);\r\n    var roleKeys = r29R4RoleKeysFromContext(context);\r\n    var copyReady = !!(\r\n      model.previewKey && model.activeSelectionKey && model.productKey && model.primaryRoleLabel &&\r\n      model.cards.length === 3 && model.cards.every(function(card){ return !!r29R4Clean(card.text); }) &&\r\n      !r29R4ContainsRawRoleKey(model.compactText,roleKeys) &&\r\n      !r29R4HasForbiddenClaim(model.compactText) &&\r\n      !/\\b(?:cdn|lazy-load|lazy load|fallback|preview|manifest|cache|debug|runtime)\\b/i.test(model.compactText)\r\n    );\r\n\r\n    if (!copyReady) {\r\n      state.setupNoraContext = null;\r\n      W.GDX_PANEL_V4_R29_SETUP_NORA_CONTEXT = null;\r\n      return '';\r\n    }\r\n\r\n    state.setupNoraContext = model;\r\n    W.GDX_PANEL_V4_R29_SETUP_NORA_CONTEXT = model;\r\n\r\n    return ''+\r\n      '<section class=\"gdx-panel-v4-r27-a8-r2 is-r29-r5-source\" data-gdx-panel-r27-a8-r2=\"1\" data-gdx-panel-r29-r5-source-owned=\"1\" data-gdx-panel-r27-a8-r2-preview=\"' + esc(model.previewKey) + '\" data-gdx-panel-r29-r5-selection=\"' + esc(model.activeSelectionKey) + '\" data-gdx-panel-r29-r5-product=\"' + esc(model.productKey) + '\">'+\r\n        '<div class=\"gdx-panel-v4-r27-a8-r2-head\">'+\r\n          '<aside data-gdx-panel-r29v-persona=\"setup_pointing\" data-gdx-panel-r29v-inline-owner=\"r29-r5\" data-gdx-panel-r29v-persona-group=\"setup_modal_persona\" data-gdx-panel-r29v-panel-area=\"nora_setup_comment_header\" data-gdx-panel-r29v-persona-state=\"persona_pending\" data-gdx-panel-r29v-placement=\"nora_setup_comment_header\" aria-hidden=\"true\">'+\r\n            '<img data-gdx-panel-r29v-image=\"setup_pointing\" src=\"https://cdn.shopify.com/s/files/1/0739/2755/7269/files/NORA_SUNUM_ANASAYFA_525222cc-9d70-4324-a95c-b4fb966c58c8.png?v=1788417940\" alt=\"\" width=\"136\" height=\"98\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\">'+\r\n          '</aside>'+\r\n          '<div><div class=\"gdx-panel-v4-r27-a8-r2-kicker\">NORA\\'NIN KURULUM YORUMU</div><h4>' + esc(model.title) + '</h4><p class=\"gdx-panel-v4-r29-r5-product\">' + esc(model.productTitle) + '</p></div>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-panel-v4-r27-a8-r2-copy\">'+\r\n          model.cards.map(function(card){\r\n            return '<article class=\"gdx-panel-v4-r27-a8-r2-card\" data-gdx-panel-r29-r5-copy=\"' + esc(card.key) + '\"><strong>' + esc(card.label) + '</strong><p>' + esc(card.text) + '</p></article>';\r\n          }).join('')+\r\n        '</div>'+\r\n        '<div class=\"gdx-panel-v4-r27-a8-r2-meta\">'+model.meta.map(function(value){ return '<span>' + esc(value) + '</span>'; }).join('')+'</div>'+\r\n      '</section>';\r\n  }\r\n\r\n  function r29R6ReasonContextLine(row) {\r\n    var selection = r28ReadOnlySelection() || {};\r\n    var purposeTitle = r29R4Clean(selection.activePurposeTitle);\r\n    var subPurposeTitle = r29R4Clean(selection.activeSubPurposeTitle);\r\n\r\n    if (purposeTitle && subPurposeTitle) {\r\n      return purposeTitle + ' \u00B7 ' + subPurposeTitle;\r\n    }\r\n\r\n    var sub = row && row.sub ? row.sub : currentSub();\r\n    var canonical = r28CanonicalDisplay(currentMain(), sub);\r\n    return canonical.purposeTitle + ' \u00B7 ' + canonical.subPurposeTitle;\r\n  }\r\n\r\n  function r29R6ReasonRankLabel(rank) {\r\n    rank = Number(rank || 0);\r\n    if (rank === 1) return 'ilk \u00F6neri';\r\n    if (rank === 2) return 'g\u00FC\u00E7l\u00FC alternatif';\r\n    return 'senaryo alternatifi';\r\n  }\r\n\r\n  function r29R6ReasonVerdict(model) {\r\n    var purpose = Number(model.purposeScore || 0);\r\n    var fp = Number(model.fpScore || 0);\r\n    var rankText = r29R6ReasonRankLabel(model.rank);\r\n    var valueText = '';\r\n\r\n    if (fp >= 82) {\r\n      valueText = 'F/P taraf\u0131 da g\u00FC\u00E7l\u00FC g\u00F6r\u00FCn\u00FCyor';\r\n    } else if (fp >= 74) {\r\n      valueText = 'F/P taraf\u0131 dengeli fakat tek ba\u015F\u0131na karar nedeni de\u011Fil';\r\n    } else {\r\n      valueText = 'F/P taraf\u0131 daha kontroll\u00FC okunmal\u0131';\r\n    }\r\n\r\n    return r29R4Concise(\r\n      model.productTitle + ', ' +\r\n      model.subPurposeTitle + ' i\u00E7in ' +\r\n      rankText + ' olarak konumlan\u0131yor. ' +\r\n      purpose + '/100 ama\u00E7 uyumu teknik rol\u00FCn\u00FC destekliyor; ' +\r\n      fp + '/100 F/P puan\u0131yla ' +\r\n      valueText + '.',\r\n      245\r\n    );\r\n  }\r\n\r\n  function r29R6ReasonRoleTruth(model) {\r\n    var family = r29R4Clean(model.family);\r\n    var scenarioType = r29R4Clean(model.scenarioType);\r\n    var role = model.primaryRoleLabel;\r\n\r\n    if (r29R4Clean(model.activeSelectionKey) === R2I_RIM_KEY) {\r\n      if (family === 'rgb') {\r\n        return r29R4Concise(\r\n          'Bu \u00FCr\u00FCn\u00FCn bu \u00F6nerideki de\u011Feri ki\u015Fi/model kontur ayr\u0131m\u0131n\u0131 RGB ile y\u00F6netebilmesidir. Ana y\u00FCz \u0131\u015F\u0131\u011F\u0131n\u0131 \u00FCstlenmek yerine sa\u00E7, omuz ve kenar \u00E7izgisini fondan ay\u0131rmak i\u00E7in d\u00FC\u015F\u00FCn\u00FClmelidir.',\r\n          245\r\n        );\r\n      }\r\n      return r29R4Concise(\r\n        'Bu model beyaz kenar deste\u011Fi verebilir; renkli kontur ayr\u0131m\u0131 \u00F6nceli\u011Finde RGB \u00F6zellikli bir alternatif daha do\u011Frudan e\u015Fle\u015Fir.',\r\n        220\r\n      );\r\n    }\r\n\r\n    /*\r\n      R29-R7-R1 CROSS-SURFACE RESPONSIBILITY SEPARATION\r\n\r\n      Setup surface:\r\n      - how to place / operate the light\r\n\r\n      Reason surface:\r\n      - why this role justifies the product's place in the recommendation\r\n\r\n      Therefore this function must not repeat r29R5RoleTruth() wording.\r\n    */\r\n    if (scenarioType === 'rgb_background_accent') {\r\n      if (family === 'rgb') {\r\n        return r29R4Concise(\r\n          'Bu \u00FCr\u00FCn\u00FCn \u00F6nerideki as\u0131l de\u011Feri ' + role +\r\n          ' rol\u00FCnde kontroll\u00FC renk ayr\u0131m\u0131 sunmas\u0131d\u0131r. Ana konu \u0131\u015F\u0131\u011F\u0131n\u0131 \u00FCstlenmekten \u00E7ok fonu ve kenar vurgusunu y\u00F6netmek i\u00E7in d\u00FC\u015F\u00FCn\u00FClmelidir.',\r\n          245\r\n        );\r\n      }\r\n\r\n      return r29R4Concise(\r\n        'Bu modelin se\u00E7ili ama\u00E7taki katk\u0131s\u0131 beyaz \u0131\u015F\u0131k deste\u011Fidir; renkli fon veya efekt bekleniyorsa RGB \u00F6zellikli bir alternatif daha do\u011Frudan e\u015Fle\u015Fir.',\r\n        225\r\n      );\r\n    }\r\n\r\n    if (family === 'rgb') {\r\n      return r29R4Concise(\r\n        'Bu modelin bu s\u0131radaki yeri RGB efektlerinden de\u011Fil, beyaz \u0131\u015F\u0131k kanal\u0131n\u0131n ' +\r\n        role + ' g\u00F6revini kar\u015F\u0131layabilmesinden geliyor. Renk kanal\u0131 ek esnekliktir; ana se\u00E7im gerek\u00E7esi olarak okunmamal\u0131d\u0131r.',\r\n        245\r\n      );\r\n    }\r\n\r\n    if (family === 'bicolor') {\r\n      return r29R4Concise(\r\n        'Bu modelin karar avantaj\u0131, ' + role +\r\n        ' g\u00F6revini farkl\u0131 ortam renklerine uyarlayabilmesidir. Kelvin esnekli\u011Fi gerekmiyorsa daha sade bir daylight alternatif de yeterli olabilir.',\r\n        240\r\n      );\r\n    }\r\n\r\n    if (family === 'daylight') {\r\n      return r29R4Concise(\r\n        'Bu modelin teknik gerek\u00E7esi, ' + role +\r\n        ' g\u00F6revinde sade ve tutarl\u0131 beyaz \u0131\u015F\u0131k sunmas\u0131d\u0131r. Ortamda farkl\u0131 Kelvin kaynaklar\u0131 varsa ayar esnekli\u011Fi s\u0131n\u0131rl\u0131 kal\u0131r.',\r\n        230\r\n      );\r\n    }\r\n\r\n    return r29R4Concise(\r\n      'Bu \u00FCr\u00FCn\u00FCn \u00F6nerideki yeri, ' + role +\r\n      ' g\u00F6revini se\u00E7ili ama\u00E7ta kar\u015F\u0131layabilmesinden gelir; nihai uygunluk mesafe ve \u0131\u015F\u0131k \u015Fekillendirme ihtiyac\u0131na ba\u011Fl\u0131d\u0131r.',\r\n      225\r\n    );\r\n  }\r\n\r\n  function r29R6ReasonAlternative(model) {\r\n    var purpose = Number(model.purposeScore || 0);\r\n    var fp = Number(model.fpScore || 0);\r\n    var power = Number(model.power || 0);\r\n    var roleText = r29R4Lower(model.primaryRoleLabel);\r\n\r\n    if (\r\n      power > 0 &&\r\n      power < 80 &&\r\n      /ana \u0131\u015F\u0131k|key/.test(roleText)\r\n    ) {\r\n      return r29R4Concise(\r\n        'Daha geni\u015F alan veya daha uzun mesafe gerekiyorsa daha y\u00FCksek g\u00FC\u00E7l\u00FC bir ana \u0131\u015F\u0131k alternatifi d\u00FC\u015F\u00FCn.',\r\n        210\r\n      );\r\n    }\r\n\r\n    if (purpose - fp >= 10) {\r\n      return r29R4Concise(\r\n        'Teknik uyum g\u00FC\u00E7l\u00FC olsa da fiyat/de\u011Fer \u00F6nceli\u011Fin y\u00FCkseliyorsa di\u011Fer \u00F6nerilerde daha y\u00FCksek F/P puan\u0131n\u0131 kar\u015F\u0131la\u015Ft\u0131r.',\r\n        225\r\n      );\r\n    }\r\n\r\n    if (fp - purpose >= 8) {\r\n      return r29R4Concise(\r\n        'F/P taraf\u0131 g\u00FC\u00E7l\u00FC; fakat se\u00E7ili alt ama\u00E7ta daha y\u00FCksek teknik uyum istiyorsan ama\u00E7 skoru daha y\u00FCksek olan alternatifi kar\u015F\u0131la\u015Ft\u0131r.',\r\n        230\r\n      );\r\n    }\r\n\r\n    if (Number(model.rank || 0) > 1) {\r\n      return r29R4Concise(\r\n        'Bu \u00FCr\u00FCn belirli g\u00FC\u00E7l\u00FC taraflar\u0131 i\u00E7in anlaml\u0131d\u0131r; genel denge \u00F6nceli\u011Finde ilk \u00F6neriyi de kar\u015F\u0131la\u015Ft\u0131r.',\r\n        205\r\n      );\r\n    }\r\n\r\n    if (model.scenarioType === 'compact_support_close_range') {\r\n      return r29R4Concise(\r\n        'Daha geni\u015F alan veya uzak mesafe i\u00E7in bu yak\u0131n plan destek rol\u00FCnden daha y\u00FCksek g\u00FC\u00E7l\u00FC bir alternatife ge\u00E7.',\r\n        220\r\n      );\r\n    }\r\n\r\n    return r29R4Concise(\r\n      'Farkl\u0131 g\u00FC\u00E7, Kelvin veya ta\u015F\u0131nabilirlik ihtiyac\u0131nda di\u011Fer iki \u00F6neriyi ayn\u0131 ama\u00E7 ve F/P dengesiyle kar\u015F\u0131la\u015Ft\u0131r.',\r\n      220\r\n    );\r\n  }\r\n\r\n\r\n  function r29R6ReasonExpertModel(context, row) {\r\n    context = context || {};\r\n    row = row || {};\r\n\r\n    var selection =\r\n      r28ReadOnlySelection() || {};\r\n\r\n    var active =\r\n      context.activeSelection || {};\r\n\r\n    var resolved =\r\n      r30AR4ResolveActiveTemplate(\r\n        row\r\n      );\r\n\r\n    var template =\r\n      resolved.template || {};\r\n\r\n    var exact =\r\n      r32AF02ExactContext(\r\n        row,\r\n        template\r\n      );\r\n\r\n    var scenario =\r\n      context.resolvedScenario || {};\r\n\r\n    var purposeTitle =\r\n      r29R4Clean(active.activePurposeTitle) ||\r\n      r29R4Clean(selection.activePurposeTitle) ||\r\n      r29R4Clean(currentMain().label);\r\n\r\n    var subPurposeTitle =\r\n      r29R4Clean(active.activeSubPurposeTitle) ||\r\n      r29R4Clean(selection.activeSubPurposeTitle) ||\r\n      r29R4Clean((row.sub || currentSub()).label);\r\n\r\n    var activeSelectionKey =\r\n      r29R4Clean(active.activeSelectionKey) ||\r\n      r29R4Clean(selection.activeSelectionKey);\r\n\r\n    var roleLabel =\r\n      exact &&\r\n      exact.selectedLight\r\n        ? r29R4Clean(\r\n            exact.selectedLight.role\r\n          )\r\n        : r29R5RoleLabel(\r\n            context,\r\n            row\r\n          );\r\n\r\n    var model = {\r\n      phase:\r\n        exact\r\n          ? 'PANEL-V4-R32-AF02-N1-EXACT-REASON-ROLE-CONTEXT'\r\n          : 'PANEL-V4-R29-R7-R1-CROSS-SURFACE-COPY-RESPONSIBILITY-SEPARATION-FIX-SOURCE-APPLICATION',\r\n\r\n      version:\r\n        exact\r\n          ? R32_AF02_N1_VERSION\r\n          : 'PANEL-V4-R29-R7-R1-CROSS-SURFACE-COPY-SEPARATION-V1',\r\n\r\n      activeSelectionKey:\r\n        activeSelectionKey,\r\n\r\n      purposeTitle:\r\n        purposeTitle,\r\n\r\n      subPurposeTitle:\r\n        subPurposeTitle,\r\n\r\n      scenarioKey:\r\n        exact\r\n          ? r29R4Clean(\r\n              template.templateKey\r\n            )\r\n          : r29R4Clean(\r\n              scenario.scenarioKey\r\n            ),\r\n\r\n      scenarioType:\r\n        exact\r\n          ? r29R4Clean(\r\n              exact.truth &&\r\n              exact.truth.scenarioType\r\n            )\r\n          : r29R4Clean(\r\n              scenario.scenarioType\r\n            ),\r\n\r\n      productKey:\r\n        r29R4Clean(\r\n          row.key\r\n        ),\r\n\r\n      productTitle:\r\n        r29R4Clean(row.title) ||\r\n        'Se\u00E7ili Panel LED',\r\n\r\n      rank:\r\n        Number(\r\n          row.rank || 0\r\n        ),\r\n\r\n      family:\r\n        r29R4Clean(\r\n          row.family\r\n        ),\r\n\r\n      familyLabel:\r\n        r29R5FamilyLabel(row),\r\n\r\n      power:\r\n        r29R5PowerValue(row),\r\n\r\n      purposeScore:\r\n        round0(\r\n          row.purposeScore\r\n        ),\r\n\r\n      fpScore:\r\n        round0(\r\n          row.fpScore\r\n        ),\r\n\r\n      roleScore:\r\n        round0(\r\n          row.roleScore\r\n        ),\r\n\r\n      primaryRoleLabel:\r\n        roleLabel,\r\n\r\n      exactSetup:\r\n        !!exact,\r\n\r\n      companionRoles:\r\n        exact\r\n          ? exact.companionRoles.slice()\r\n          : []\r\n    };\r\n\r\n    var baseNarrative =\r\n      null;\r\n\r\n    var narrativeApi =\r\n      W.GDX_PANEL_LED_V4_NARRATIVE_LIBRARY;\r\n\r\n    if (\r\n      narrativeApi &&\r\n      typeof narrativeApi\r\n        .buildUseCaseItemNarrative ===\r\n        'function'\r\n    ) {\r\n      try {\r\n        baseNarrative =\r\n          narrativeApi\r\n            .buildUseCaseItemNarrative(\r\n              {\r\n                productKey:\r\n                  model.productKey,\r\n                title:\r\n                  model.productTitle,\r\n                product:\r\n                  row.product || row,\r\n                rank:\r\n                  model.rank,\r\n                purposeScore100:\r\n                  model.purposeScore,\r\n                recommendationScore100:\r\n                  model.purposeScore,\r\n                score100:\r\n                  model.purposeScore,\r\n                breakdown:\r\n                  [\r\n                    {\r\n                      key:\r\n                        'purposeFit',\r\n                      label:\r\n                        'Ama\u00E7 Uyumu',\r\n                      score100:\r\n                        model.purposeScore\r\n                    },\r\n                    {\r\n                      key:\r\n                        'roleFit',\r\n                      label:\r\n                        'Rol Uyumu',\r\n                      score100:\r\n                        model.roleScore\r\n                    },\r\n                    {\r\n                      key:\r\n                        'priceValue',\r\n                      label:\r\n                        'Fiyat / De\u011Fer',\r\n                      score100:\r\n                        model.fpScore\r\n                    }\r\n                  ]\r\n              },\r\n              {\r\n                ok:\r\n                  true,\r\n                familyKey:\r\n                  model.activeSelectionKey,\r\n                profileKey:\r\n                  model.activeSelectionKey,\r\n                familyLabel:\r\n                  model.subPurposeTitle,\r\n                priorityLabels:\r\n                  [\r\n                    'Ama\u00E7 Uyumu',\r\n                    'Rol Uyumu',\r\n                    'Fiyat / De\u011Fer'\r\n                  ]\r\n              }\r\n            );\r\n      } catch (ignore) {\r\n        baseNarrative = null;\r\n      }\r\n    }\r\n\r\n    var decisionText =\r\n      r29R4Clean(\r\n        baseNarrative &&\r\n        baseNarrative.decisionText\r\n      ) ||\r\n      r29R6ReasonVerdict(model);\r\n\r\n    var roleText =\r\n      r29R6ReasonRoleTruth(model);\r\n\r\n    if (exact) {\r\n      roleText =\r\n        model.productTitle +\r\n        ', bu \u00F6neride ' +\r\n        roleLabel +\r\n        ' rol\u00FCnde de\u011Ferlendirilir. ' +\r\n        (\r\n          model.companionRoles.length\r\n            ? 'Ek \u0131\u015F\u0131k g\u00F6revleri (' +\r\n              model.companionRoles.join(', ') +\r\n              ') i\u00E7in ayr\u0131ca \u0131\u015F\u0131k gerekir; bunlar \u00FCr\u00FCn paketine dahil de\u011Fildir.'\r\n            : '\u00DCr\u00FCn yaln\u0131z se\u00E7ilen rol kapsam\u0131nda de\u011Ferlendirilir.'\r\n        );\r\n    }\r\n\r\n    model.cards = [\r\n      {\r\n        key:\r\n          'decision',\r\n        label:\r\n          'NORA\u2019n\u0131n karar\u0131',\r\n        text:\r\n          r29R4Concise(\r\n            decisionText,\r\n            260\r\n          )\r\n      },\r\n      {\r\n        key:\r\n          'role',\r\n        label:\r\n          'Do\u011Fru rol',\r\n        text:\r\n          r29R4Concise(\r\n            roleText,\r\n            270\r\n          )\r\n      },\r\n      {\r\n        key:\r\n          'alternative',\r\n        label:\r\n          'Alternatif d\u00FC\u015F\u00FCn',\r\n        text:\r\n          r29R6ReasonAlternative(\r\n            model\r\n          )\r\n      }\r\n    ];\r\n\r\n    model.meta = [\r\n      r29R6ReasonRankLabel(\r\n        model.rank\r\n      ),\r\n      roleLabel,\r\n      model.familyLabel,\r\n      model.power\r\n        ? String(model.power) + 'W'\r\n        : ''\r\n    ].filter(Boolean);\r\n\r\n    model.baseNarrativeSource =\r\n      baseNarrative\r\n        ? 'GDX_PANEL_LED_V4_NARRATIVE_LIBRARY.buildUseCaseItemNarrative'\r\n        : 'existing_ui_fallback';\r\n\r\n    model.fp14ContextMode =\r\n      'CONTEXT_ONLY_NO_SCORE_CHANGE';\r\n\r\n    model.compactText =\r\n      model.cards.map(function (card) {\r\n        return card.label +\r\n          ': ' +\r\n          card.text;\r\n      }).join(' ');\r\n\r\n    return model;\r\n  }\r\n\r\n  function r29R6ReasonExpertHtml(row) {\r\n    var context = r29R5ResolveContext();\r\n    var selection = r28ReadOnlySelection() || {};\r\n\r\n    if (!context && selection.activeSelectionKey) {\r\n      context = {\r\n        activeSelection: selection,\r\n        resolvedScenario: {}\r\n      };\r\n    }\r\n\r\n    if (!context) {\r\n      state.reasonNoraContext = null;\r\n      W.GDX_PANEL_V4_R29_REASON_NORA_CONTEXT = null;\r\n      return ''+\r\n        '<div class=\"gdx-r11-modal-copy is-wide\">'+\r\n          '<h4>Karar \u00F6zeti</h4>'+\r\n          '<p>' + esc(rankNarrative(row)) + ' ' + esc(reasonText(row)) + '</p>'+\r\n        '</div>';\r\n    }\r\n\r\n    var model = r29R6ReasonExpertModel(context, row);\r\n    var roleKeys = r29R4RoleKeysFromContext(context);\r\n\r\n    var copyReady = !!(\r\n      model.activeSelectionKey &&\r\n      model.productKey &&\r\n      model.primaryRoleLabel &&\r\n      model.cards.length === 3 &&\r\n      model.cards.every(function(card){\r\n        return !!r29R4Clean(card.text);\r\n      }) &&\r\n      !r29R4ContainsRawRoleKey(\r\n        model.compactText,\r\n        roleKeys\r\n      ) &&\r\n      !r29R4HasForbiddenClaim(\r\n        model.compactText\r\n      ) &&\r\n      !/\\b(?:cdn|lazy-load|lazy load|fallback|preview key|manifest|cache|debug|runtime|karar sat\u0131r\u0131|ama\u00E7 matrisi|kan\u0131t ayr\u0131m\u0131)\\b/i.test(\r\n        model.compactText\r\n      )\r\n    );\r\n\r\n    if (!copyReady) {\r\n      state.reasonNoraContext = null;\r\n      W.GDX_PANEL_V4_R29_REASON_NORA_CONTEXT = null;\r\n      return ''+\r\n        '<div class=\"gdx-r11-modal-copy is-wide\">'+\r\n          '<h4>Karar \u00F6zeti</h4>'+\r\n          '<p>' + esc(rankNarrative(row)) + ' ' + esc(reasonText(row)) + '</p>'+\r\n        '</div>';\r\n    }\r\n\r\n    state.reasonNoraContext = model;\r\n    W.GDX_PANEL_V4_R29_REASON_NORA_CONTEXT = model;\r\n\r\n    return ''+\r\n      '<div class=\"gdx-r11-modal-copy is-wide gdx-r11-reason-nora is-r29-r6-source\" '+\r\n        'data-gdx-panel-r29-reason-nora=\"1\" '+\r\n        'data-gdx-panel-r29-r6-source-owned=\"1\" '+\r\n        'data-gdx-panel-r29-r6-selection=\"' + esc(model.activeSelectionKey) + '\" '+\r\n        'data-gdx-panel-r29-r6-product=\"' + esc(model.productKey) + '\">'+\r\n        '<div class=\"gdx-r11-reason-nora-head\">'+\r\n          '<div>'+\r\n            '<span>NORA\u2019NIN UZMAN YORUMU</span>'+\r\n            '<h4>Karar \u00F6zeti</h4>'+\r\n          '</div>'+\r\n          '<b>' + esc(model.primaryRoleLabel) + '</b>'+\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-reason-nora-grid\">'+\r\n          model.cards.map(function(card){\r\n            return ''+\r\n              '<article class=\"gdx-r11-reason-nora-card is-' + esc(card.key) + '\" data-gdx-panel-r29-r6-copy=\"' + esc(card.key) + '\">'+\r\n                '<strong>' + esc(card.label) + '</strong>'+\r\n                '<p>' + esc(card.text) + '</p>'+\r\n              '</article>';\r\n          }).join('')+\r\n        '</div>'+\r\n        '<div class=\"gdx-r11-reason-nora-meta\">'+\r\n          model.meta.map(function(value){\r\n            return '<span>' + esc(value) + '</span>';\r\n          }).join('')+\r\n        '</div>'+\r\n      '</div>';\r\n  }\r\n\r\n  function modalHtml() {\r\n    if (!state.modal) return '';\r\n    var row = state.lastRows.find(function(r){ return r.key === state.modal.key; });\r\n    if (!row) return '';\r\n    var isSetup = state.modal.type === 'setup';\r\n    var sub = row.sub || currentSub();\r\n    var canonical = r28CanonicalDisplay(currentMain(), sub);\r\n    return ''+\r\n      '<div class=\"gdx-r11-modal\" data-gdx-r11-modal=\"1\" data-gdx-r11-modal-type=\"' + esc(isSetup ? 'setup' : 'reason') + '\" role=\"dialog\" aria-modal=\"true\">'+\r\n        '<div class=\"gdx-r11-modal-backdrop\" data-gdx-r11-action=\"close-modal\"></div>'+\r\n        '<section class=\"gdx-r11-modal-panel ' + (isSetup ? 'is-setup' : 'is-reason') + '\">'+\r\n          '<button type=\"button\" class=\"gdx-r11-modal-close\" data-gdx-r11-action=\"close-modal\" aria-label=\"Kapat\">\u00D7</button>'+\r\n          '<div class=\"gdx-r11-modal-head\">'+\r\n            '<span>' + esc(isSetup ? 'Dinamik Kurulum' : 'Neden Bu \u00DCr\u00FCn?') + '</span>'+\r\n            '<h3>' + esc(row.title) + '</h3>'+\r\n            '<p>' + esc(isSetup ? (canonical.purposeTitle + ' \u00B7 ' + canonical.subPurposeTitle) : r29R6ReasonContextLine(row)) + '</p>'+\r\n          '</div>'+\r\n          (isSetup ? (\r\n          '<div class=\"gdx-r11-modal-setup-wrap\">' +\r\n          '<div class=\"gdx-r11-modal-setup-top\">' + modalMediaHtml(row, 'setup') + '</div>' +\r\n          personaFitHtml(row, 'setup') +\r\n          r30AR4SetupVisualHostHtml(row) +\r\n          r29R5SetupNoraHtml(row) +\r\n          setupIntelligenceHtml(row) +\r\n        '</div>'\r\n      ) : (\r\n            '<div class=\"gdx-r11-modal-reason-hero\">' + modalMediaHtml(row, 'reason') + '</div>'+\r\n            personaFitHtml(row, 'reason') +\r\n            purposeWeightNarrativeHtml(row) +\r\n            balancedPurposeFpHtml(row) +\r\n            '<div class=\"gdx-r11-modal-grid is-summary-only\">'+\r\n              r29R6ReasonExpertHtml(row)+\r\n            '</div>'\r\n          ))+\r\n        '</section>'+\r\n      '</div>';\r\n  }\r\n\r\n  /* ==========================================================================\r\n     FS1-B/C \u2014 VISIBLE WRITER CONSOLIDATION\r\n     Same-task handoff for an OPEN setup modal.\r\n\r\n     Ownership/truth stays unchanged:\r\n     - AF04 prepares its existing model/substrate.\r\n     - Shared V27 applies the existing canonical DTO renderer.\r\n     - R6 profile parity performs the existing late-stage canonical decoration.\r\n\r\n     The only change is WHEN these already-owned writers are flushed: before\r\n     render() yields to the browser, so waiting/fallback/intermediate states do\r\n     not become a visible frame. Existing observers remain as regression/fallback.\r\n     ========================================================================== */\r\n  function fs1FinalizeSetupModalComposition(scope) {\r\n    if (!state.modal || state.modal.type !== 'setup') {\r\n      return { ok:true, skipped:'NOT_SETUP_MODAL' };\r\n    }\r\n\r\n    scope = scope || mount();\r\n\r\n    var modal =\r\n      scope &&\r\n      scope.querySelector(\r\n        '.gdx-r11-modal[data-gdx-r11-modal-type=\"setup\"]'\r\n      );\r\n\r\n    var host =\r\n      modal &&\r\n      modal.querySelector(\r\n        '[data-gdx-panel-r30a-setup-visual=\"1\"]'\r\n      );\r\n\r\n    var result = {\r\n      af04:false,\r\n      sharedV27:false,\r\n      profileParity:false,\r\n      profileParityScheduled:false\r\n    };\r\n\r\n    try {\r\n      var af04 =\r\n        W.GDX_PANEL_V4_AF04_DYNAMIC_FALLBACK_DISTANCE_API;\r\n\r\n      if (\r\n        host &&\r\n        af04 &&\r\n        typeof af04.enhanceHost === 'function'\r\n      ) {\r\n        result.af04 = af04.enhanceHost(host) === true;\r\n      }\r\n    } catch (ignore) {}\r\n\r\n    try {\r\n      var shared =\r\n        W.CANFOTO_PANEL_SHARED_V27_PILOT_R4C;\r\n\r\n      if (shared && typeof shared.apply === 'function') {\r\n        result.sharedV27 = shared.apply() === true;\r\n      }\r\n    } catch (ignore) {}\r\n\r\n    try {\r\n      var parity =\r\n        W.CANFOTO_R6_MOTOR_V27_PROFILE_PARITY;\r\n\r\n      if (parity && typeof parity.applyPanelNow === 'function') {\r\n        result.profileParity =\r\n          parity.applyPanelNow('FS1_MODAL_SAME_TASK') === true;\r\n      } else if (parity && typeof parity.refresh === 'function') {\r\n        parity.refresh();\r\n        result.profileParityScheduled = true;\r\n      }\r\n    } catch (ignore) {}\r\n\r\n    if (modal) {\r\n      modal.setAttribute(\r\n        'data-fs1-visible-writer-consolidation',\r\n        '1'\r\n      );\r\n      modal.setAttribute(\r\n        'data-fs1-af04-same-task',\r\n        result.af04 ? '1' : '0'\r\n      );\r\n      modal.setAttribute(\r\n        'data-fs1-shared-v27-same-task',\r\n        result.sharedV27 ? '1' : '0'\r\n      );\r\n      modal.setAttribute(\r\n        'data-fs1-profile-parity-same-task',\r\n        result.profileParity ? '1' : '0'\r\n      );\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  function render() {\r\n    var el = mount();\r\n    if (!el || state.installing) return { ok:false, reason:'mount_not_ready' };\r\n\r\n    if (!fs1rR52DecisionGateActive()) {\r\n      return fs1rR52HoldRecommendationMount(\r\n        'deferred_until_explicit_decision_apply'\r\n      );\r\n    }\r\n\r\n    if (!fs1rR52SelectionReady()) {\r\n      return fs1rR52HoldRecommendationMount(\r\n        'selection_not_committed'\r\n      );\r\n    }\r\n\r\n    if (!String(state.mainKey || '').trim() || !String(state.subKey || '').trim()) {\r\n      return fs1rR52HoldRecommendationMount(\r\n        'r11_context_not_aligned'\r\n      );\r\n    }\r\n\r\n    var activeCanonicalSelectionKey = u7e1ActiveSelectionKey();\r\n    var committedRecommendationLane = r2dCommittedRecommendationLane();\r\n    var rows = u7e1CanonicalProfile(activeCanonicalSelectionKey)\r\n      ? r2dStrictCommittedLaneRows(\r\n          r2dExactSelectionProjectionRows(activeCanonicalSelectionKey, { lane: 'ALL', limit: 0 }),\r\n          committedRecommendationLane,\r\n          3\r\n        )\r\n      : r2dStrictCommittedLaneRows(recommendationRows(state.subKey), committedRecommendationLane, 3);\r\n    state.lastRows = rows;\r\n    var g = currentMain();\r\n    var s = currentSub();\r\n    var canonical = r28CanonicalDisplay(g, s);\r\n\r\n    state.installing = true;\r\n    el.innerHTML = ''+\r\n      '<section class=\"gdx-r11\" ' + OWNER_ATTR + '=\"1\" data-phase=\"' + esc(PHASE) + '\">'+\r\n        '<header class=\"gdx-r11-head\">'+\r\n          '<div><span>KULLANIM AMACINA G\u00D6RE \u00D6NER\u0130LER</span><h3 data-gdx-panel-u7d-canonical-purpose=\"1\">' + esc(canonical.purposeTitle) + '</h3><p>' + esc(s.notes || '') + '</p></div>'+\r\n\r\n        '</header>'+\r\n        renderReadOnlyContextSummary()+\r\n        '<div class=\"gdx-r11-priority\">' + renderPriorityChips() + '</div>'+\r\n        renderR29R4NoraContextHeader()+\r\n        '<div class=\"gdx-r11-grid\">' + rows.map(renderCard).join('') + '</div>'+\r\n        modalHtml() +\r\n      '</section>';\r\n    r30AR4ActivateVisualHost();\r\n    fs1FinalizeSetupModalComposition(el);\r\n    el.hidden = false;\r\n    el.setAttribute('aria-hidden', 'false');\r\n    el.removeAttribute('data-cf-panel-r11-deferred-reason');\r\n    state.installing = false;\r\n    r2jRenderDock();\r\n    r2jSyncLegacyActionBar();\r\n    r2jMountDecisionIntoResult();\r\n    state.lastRenderToken = rows.map(function(r){ return r.key + ':' + r.purposeScore + ':' + r.fpScore; }).join('|') + ':' + state.subKey + ':' + activeCanonicalSelectionKey + ':' + committedRecommendationLane;\r\n    try {\r\n      W.dispatchEvent(new CustomEvent('canfoto:panel-r11-recommendation-rendered', {\r\n        detail: {\r\n          selectionKey: activeCanonicalSelectionKey,\r\n          purchaseLane: committedRecommendationLane,\r\n          handles: rows.map(r2dExactRowHandle),\r\n          renderedCount: rows.length\r\n        }\r\n      }));\r\n    } catch (ignore) {}\r\n    return { ok:true, renderedCount:rows.length, mainKey:state.mainKey, subKey:state.subKey, purchaseLane:committedRecommendationLane };\r\n  }\r\n\r\n  W.debugPanelV4Etap2R2D372StrictTop3Lane = function(){\r\n    var lane = r2dCommittedRecommendationLane();\r\n    var owner = W.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL || null;\r\n    var el = mount();\r\n    var cards = el ? Array.prototype.slice.call(el.querySelectorAll('.gdx-r11-grid .gdx-r11-card[data-gdx-r11-card]')) : [];\r\n    var rows = cards.map(function(card){\r\n      var handle = String(card.getAttribute('data-gdx-r11-handle') || card.getAttribute('data-gdx-r11-card') || '').trim();\r\n      var domLane = String(card.getAttribute('data-gdx-r11-lane') || '').trim();\r\n      var canonicalLane = '';\r\n      try { if (owner && typeof owner.getLane === 'function') canonicalLane = String(owner.getLane(handle) || '').trim(); } catch (ignore) {}\r\n      return { handle:handle, domLane:domLane, canonicalLane:canonicalLane, match:lane==='ALL' ? true : (domLane===lane && canonicalLane===lane) };\r\n    });\r\n    var checks = {\r\n      committedLaneValid:['ALL','BARE_LIGHT','SINGLE_READY_SET'].indexOf(lane)>=0,\r\n      visibleTop3Exactly3:cards.length===3,\r\n      everyVisibleCardMatchesCommittedLane:rows.every(function(row){ return row.match===true; }),\r\n      noSingleReadySetWhenBare:lane!=='BARE_LIGHT' || rows.every(function(row){ return row.canonicalLane!=='SINGLE_READY_SET'; }),\r\n      noBareWhenSingleReadySet:lane!=='SINGLE_READY_SET' || rows.every(function(row){ return row.canonicalLane!=='BARE_LIGHT'; }),\r\n      canonicalOwnerReady:!!(owner && typeof owner.getLane==='function'),\r\n      noScoreMutation:true,\r\n      noRankingRecalculation:true,\r\n      noFpMutation:true,\r\n      noCommerceMutation:true,\r\n      noSetupMutation:true,\r\n      noShareMutation:true\r\n    };\r\n    var failedChecks=Object.keys(checks).filter(function(k){return checks[k]!==true});\r\n    var out={ok:failedChecks.length===0,version:'PANEL-V4-ETAP2-R2D-REV3.7.2-STRICT-COMMITTED-LANE-TOP3-QA-V1',checks:checks,failedChecks:failedChecks,observed:{committedLane:lane,cardCount:cards.length,rows:rows}};\r\n    console.log('=== CANFOTO ETAP2 R2-D REV3.7.2 STRICT COMMITTED-LANE TOP3 QA ===');\r\n    console.log(out);\r\n    return out;\r\n  };\r\n\r\n  function injectStyle() {\r\n    var existing = D.getElementById(STYLE_ID);\r\n    if (existing) return { ok:true, already:true, styleId:STYLE_ID };\r\n    var css = ''+\r\n'.gdx-r11{position:relative;border:1px solid rgba(250,204,21,.35);border-radius:28px;padding:28px;background:radial-gradient(circle at 0 0,rgba(250,204,21,.12),transparent 33%),linear-gradient(135deg,#031617,#09101d 62%,#171407);color:#fff;overflow:hidden}\\n'+\r\n'.gdx-r11 *{box-sizing:border-box}.gdx-r11-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:22px}.gdx-r11-head span{display:block;color:#22c55e;letter-spacing:.18em;font-weight:900;font-size:13px}.gdx-r11-head h3{margin:6px 0 4px;font-size:34px;line-height:1;color:#fff}.gdx-r11-head p{margin:0;color:#d1d5db;font-weight:700}.gdx-r11-head b{border:1px solid rgba(34,197,94,.35);background:rgba(5,95,65,.45);border-radius:999px;padding:10px 14px;color:#bbf7d0;white-space:nowrap}\\n'+\r\n'.gdx-r11-context-lock{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;border:1px solid rgba(56,189,248,.28);border-radius:20px;background:linear-gradient(135deg,rgba(8,47,73,.52),rgba(6,95,70,.20));padding:16px;margin:0 0 14px}.gdx-r11-context-cell{min-width:0;border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(2,6,23,.34);padding:12px 14px}.gdx-r11-context-cell span{display:block;color:#67e8f9;font-size:10px;font-weight:950;letter-spacing:.12em;margin-bottom:5px}.gdx-r11-context-cell strong{display:block;color:#fff;font-size:15px;line-height:1.25}.gdx-r11-context-lock p{grid-column:1/-1;margin:0;color:#d1fae5;font-size:12px;font-weight:850}.gdx-r11-main-tabs,.gdx-r11-sub-tabs{display:flex;gap:10px;overflow:auto;padding:4px 0 12px;scrollbar-width:thin}.gdx-r11-main-tab,.gdx-r11-sub-tab{border:1px solid rgba(56,189,248,.38);background:linear-gradient(180deg,#162b3e,#0d1a2d);color:#e5f7ff;border-radius:999px;padding:12px 18px;font-weight:900;white-space:nowrap;cursor:pointer}.gdx-r11-main-tab.is-active,.gdx-r11-sub-tab.is-active{background:linear-gradient(180deg,#17445a,#10263a);box-shadow:0 0 0 2px rgba(56,189,248,.25) inset;color:#fff}.gdx-r11-sub-tab{border-color:rgba(34,197,94,.4);background:#06251d}.gdx-r11-priority{display:flex;gap:10px;flex-wrap:wrap;border:1px solid rgba(34,197,94,.18);background:rgba(0,0,0,.16);padding:14px;border-radius:18px;margin-bottom:22px}.gdx-r11-priority span,.gdx-r11-chip{display:inline-flex;border:1px solid rgba(34,197,94,.42);background:rgba(6,95,70,.72);color:#d1fae5;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:900}\\n'+\r\n'.gdx-r11-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.gdx-r11-card{position:relative;min-width:0;border:1px solid rgba(34,197,94,.36);border-radius:24px;padding:18px;background:linear-gradient(180deg,#071222,#092638);overflow:hidden;box-shadow:0 22px 70px rgba(0,0,0,.22)}.gdx-r11-card[data-rank=\"1\"]{border-color:rgba(34,197,94,.75)}.gdx-r11-card-top{display:grid;grid-template-columns:auto auto 1fr auto;gap:8px;align-items:center;margin-bottom:14px}.gdx-r11-rank,.gdx-r11-fit{display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(34,197,94,.45);background:rgba(5,95,65,.55);border-radius:999px;padding:7px 10px;color:#bbf7d0;font-size:12px;font-weight:900}.gdx-r11-brand{color:#facc15;font-weight:900;font-size:12px}.gdx-r11-badge{justify-self:start;border:1px solid rgba(250,204,21,.46);background:rgba(250,204,21,.12);border-radius:999px;padding:7px 10px;color:#fde68a;font-size:12px;font-weight:900;text-transform:uppercase}.gdx-r11-card h4{margin:8px 0 22px;color:#fff;font-size:22px;line-height:1.12;min-height:50px}.gdx-r11-price{margin:0 0 12px;color:#e5e7eb;font-weight:900}.gdx-r11-tags{display:flex;gap:8px;flex-wrap:wrap;min-height:32px;margin-bottom:16px}.gdx-r11-mid{display:grid;grid-template-columns:42% 1fr;gap:16px;align-items:center}.gdx-r11-imgbox{aspect-ratio:1/1;border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}.gdx-r11-imgbox img{width:100%;height:100%;object-fit:contain;padding:8px}.gdx-r11-score-stack{display:grid;gap:10px}.gdx-r11-score{display:grid;grid-template-columns:74px 1fr;gap:12px;align-items:center;border:1px solid rgba(148,163,184,.22);border-radius:16px;background:rgba(15,23,42,.72);padding:10px}.gdx-r11-score.fp{border-color:rgba(250,204,21,.34)}.gdx-r11-score-ring{--v:0;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#22c55e calc(var(--v)*1%),#263244 0);position:relative}.gdx-r11-score.fp .gdx-r11-score-ring{background:conic-gradient(#facc15 calc(var(--v)*1%),#263244 0)}.gdx-r11-score-ring:before{content:\"\";position:absolute;inset:10px;border-radius:50%;background:#071222}.gdx-r11-score-ring strong,.gdx-r11-score-ring small{position:relative;z-index:1}.gdx-r11-score-ring strong{font-size:22px}.gdx-r11-score-ring small{font-size:10px;margin-left:1px}.gdx-r11-score-copy b{display:block;color:#fff;font-size:13px}.gdx-r11-score-copy span{display:block;color:#cbd5e1;font-size:11px;font-weight:800;line-height:1.25}.gdx-r11-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.gdx-r11-btn{border-radius:999px;border:1px solid rgba(34,197,94,.45);padding:12px 13px;font-weight:900;text-align:center;text-decoration:none;cursor:pointer}.gdx-r11-btn.primary{background:#059669;color:#fff}.gdx-r11-btn.ghost{background:rgba(250,204,21,.10);border-color:rgba(250,204,21,.55);color:#fde68a}.gdx-r11-btn.setup{background:rgba(2,132,199,.16);border-color:rgba(56,189,248,.45);color:#e0f2fe}.gdx-r11-btn.compare{background:rgba(99,102,241,.12);border-color:rgba(129,140,248,.48);color:#e0e7ff}.gdx-r11-btn.compare.is-selected{background:rgba(79,70,229,.38);border-color:rgba(165,180,252,.72)}.gdx-r11-btn[disabled]{opacity:.54;cursor:not-allowed}\\n'+\r\n'.gdx-r2i-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0 0 15px}.gdx-r2i-meta-item{min-width:0;border:1px solid rgba(148,163,184,.18);border-radius:12px;background:rgba(15,23,42,.48);padding:8px 9px}.gdx-r2i-meta-item small{display:block;color:#94a3b8;font-size:9px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;margin-bottom:3px}.gdx-r2i-meta-item b{display:block;color:#e2e8f0;font-size:11px;line-height:1.25;white-space:normal}.gdx-r2i-nora{display:grid;grid-template-columns:42px 1fr;gap:10px;align-items:start;margin-top:14px;border:1px solid rgba(34,211,238,.28);border-radius:15px;background:linear-gradient(135deg,rgba(8,47,73,.55),rgba(15,23,42,.72));padding:10px}.gdx-r2i-nora img{width:42px;height:42px;object-fit:contain;border-radius:11px;background:rgba(255,255,255,.05)}.gdx-r2i-nora span{display:block;color:#67e8f9;font-size:9.5px;font-weight:950;letter-spacing:.10em;text-transform:uppercase}.gdx-r2i-nora p{margin:4px 0 0;color:#e2e8f0;font-size:10.5px;font-weight:760;line-height:1.38}.gdx-r2i-card[data-gdx-r11-lane=\"SINGLE_READY_SET\"] .gdx-r2i-meta-item.is-lane{border-color:rgba(250,204,21,.30)}\\n'+\r\n'.gdx-r11-modal{position:fixed;z-index:999999;inset:0;display:grid;place-items:center;padding:22px}.gdx-r11-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.76);backdrop-filter:blur(8px)}.gdx-r11-modal-panel{position:relative;z-index:1;width:min(1040px,96vw);max-height:92vh;overflow:auto;border:1px solid rgba(250,204,21,.5);border-radius:28px;background:linear-gradient(135deg,#06111f,#071827 58%,#141106);box-shadow:0 30px 100px rgba(0,0,0,.65);padding:28px;color:#fff}.gdx-r11-modal-close{position:absolute;right:18px;top:14px;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(15,23,42,.8);color:#fff;font-size:26px;cursor:pointer}.gdx-r11-modal-head span{color:#22c55e;letter-spacing:.16em;font-size:12px;font-weight:900;text-transform:uppercase}.gdx-r11-modal-head h3{margin:8px 48px 4px 0;font-size:30px}.gdx-r11-modal-head p{margin:0 0 18px;color:#d1d5db;font-weight:800}.gdx-r11-modal-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.gdx-r11-modal-copy,.gdx-r11-modal-bars,.gdx-r11-setup-card{border:1px solid rgba(148,163,184,.22);border-radius:20px;background:rgba(15,23,42,.58);padding:18px}.gdx-r11-modal-copy h4{margin:0 0 10px;color:#facc15}.gdx-r11-modal-copy p{font-weight:850;line-height:1.55}.gdx-r11-modal-note{color:#bbf7d0}.gdx-r11-modal-bar{display:grid;grid-template-columns:150px 1fr 70px;gap:12px;align-items:center;margin:12px 0;font-weight:900}.gdx-r11-modal-bar i{height:12px;border-radius:999px;background:#263244;overflow:hidden}.gdx-r11-modal-bar b{display:block;height:100%;background:linear-gradient(90deg,#22c55e,#facc15)}.gdx-r11-modal-bar strong{text-align:right}.gdx-r11-setup-head{display:flex;gap:10px;align-items:center;justify-content:space-between}.gdx-r11-setup-head span{color:#34d399;letter-spacing:.12em;text-transform:uppercase;font-weight:900}.gdx-r11-setup-head b{font-size:24px}.gdx-r11-setup-head em{font-style:normal;border:1px solid rgba(34,197,94,.4);border-radius:999px;padding:8px 12px;color:#bbf7d0;background:rgba(6,95,70,.6);font-weight:900}.gdx-r11-setup-chips{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.gdx-r11-setup-chips span{border:1px solid rgba(34,197,94,.45);border-radius:999px;padding:8px 11px;background:rgba(6,95,70,.5);font-weight:900}.gdx-r11-diagram{position:relative;min-height:230px;border:1px solid rgba(56,189,248,.22);border-radius:18px;background:linear-gradient(rgba(56,189,248,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(56,189,248,.08) 1px,transparent 1px);background-size:42px 42px;overflow:hidden}.gdx-r11-diagram:before{content:\"\";position:absolute;left:26%;right:22%;top:36%;height:80px;border:18px solid rgba(250,204,21,.10);border-radius:50%}.gdx-r11-diagram span{position:absolute;border-radius:999px;padding:12px 18px;text-align:center;font-weight:900}.gdx-r11-diagram small{font-size:12px}.gdx-r11-diagram .key{left:8%;top:42%;background:#047857;color:#fff}.gdx-r11-diagram .fill{right:7%;top:42%;background:#8a5608;color:#fff;border:1px solid rgba(250,204,21,.35)}.gdx-r11-diagram .subject{left:50%;top:42%;transform:translate(-50%,-10%);width:72px;height:72px;display:grid;place-items:center;background:linear-gradient(145deg,#fff,#94a3b8);color:#111827}.gdx-r11-diagram .camera{left:50%;bottom:18px;transform:translateX(-50%);background:#111827;color:#fff;border:1px solid rgba(255,255,255,.18)}.gdx-r11-setup-rows{display:grid;gap:8px;margin-top:12px}.gdx-r11-setup-rows div{display:grid;grid-template-columns:110px 1fr;border:1px solid rgba(148,163,184,.18);border-radius:12px;padding:11px;background:rgba(2,6,23,.35)}.gdx-r11-setup-note{border:1px solid rgba(148,163,184,.18);border-radius:14px;padding:12px;color:#d1fae5;background:rgba(15,23,42,.55);font-weight:850}\\n'+\r\n'.gdx-r11 [data-gdx-panel-p29-rec-setup],#gdxPanelV4RecommendationPreview [data-gdx-panel-p29-rec-setup]{display:none!important}\\n'+\r\n'@media(max-width:980px){.gdx-r11{padding:18px;border-radius:22px}.gdx-r11-grid{grid-template-columns:1fr}.gdx-r11-head{display:block}.gdx-r11-head h3{font-size:28px}.gdx-r11-head b{display:inline-flex;margin-top:10px}.gdx-r11-card h4{min-height:auto}.gdx-r11-mid{grid-template-columns:38% 1fr}.gdx-r11-modal{padding:10px}.gdx-r11-modal-panel{padding:20px;border-radius:22px}.gdx-r11-modal-grid{grid-template-columns:1fr}.gdx-r11-modal-bar{grid-template-columns:118px 1fr 62px}.gdx-r11-actions{grid-template-columns:1fr}.gdx-r11-btn.setup{grid-column:auto}}\\n';\r\n    css += '@media(max-width:620px){.gdx-r2i-meta{gap:6px}.gdx-r2i-meta-item{padding:7px 8px}.gdx-r2i-meta-item b{font-size:10.5px}.gdx-r2i-nora{grid-template-columns:36px 1fr}.gdx-r2i-nora img{width:36px;height:36px}.gdx-r2i-nora p{font-size:10px}}\\n';\r\n    css += \"#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]{\\n  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;\\n  grid-template-areas:\\n    \\\"cardtop cardtop\\\"\\n    \\\"title title\\\"\\n    \\\"tags tags\\\"\\n    \\\"middle middle\\\"\\n    \\\"primary reason\\\"\\n    \\\"setup setup\\\"\\n    \\\"price cart\\\"\\n    \\\"meta meta\\\"\\n    \\\"nora nora\\\"\\n    \\\"compare compare\\\"!important;\\n  column-gap:10px!important;\\n  row-gap:0!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-meta{\\n  grid-area:meta!important;\\n  display:grid!important;\\n  grid-template-columns:repeat(3,minmax(0,1fr))!important;\\n  gap:8px!important;\\n  width:100%!important;\\n  min-width:0!important;\\n  margin:14px 0 0!important;\\n  padding:0!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-meta .gdx-r2i-meta-item{\\n  min-width:0!important;\\n  min-height:58px!important;\\n  border:1px solid rgba(15,118,110,.18)!important;\\n  border-radius:13px!important;\\n  background:rgba(255,255,255,.84)!important;\\n  padding:9px 10px!important;\\n  box-shadow:0 5px 18px rgba(15,23,42,.04)!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-meta .gdx-r2i-meta-item small{\\n  display:block!important;\\n  margin:0 0 4px!important;\\n  color:#0f766e!important;\\n  font-size:9px!important;\\n  font-weight:950!important;\\n  line-height:1.15!important;\\n  letter-spacing:.055em!important;\\n  text-transform:uppercase!important;\\n  overflow-wrap:normal!important;\\n  word-break:normal!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-meta .gdx-r2i-meta-item b{\\n  display:block!important;\\n  color:#24313b!important;\\n  font-size:11.5px!important;\\n  font-weight:850!important;\\n  line-height:1.28!important;\\n  overflow-wrap:break-word!important;\\n  word-break:normal!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-nora{\\n  grid-area:nora!important;\\n  display:grid!important;\\n  grid-template-columns:48px minmax(0,1fr)!important;\\n  gap:11px!important;\\n  align-items:start!important;\\n  width:100%!important;\\n  min-width:0!important;\\n  margin:10px 0 0!important;\\n  padding:11px 12px!important;\\n  border:1px solid rgba(13,148,136,.28)!important;\\n  border-radius:15px!important;\\n  background:linear-gradient(135deg,rgba(236,253,250,.97),rgba(240,249,255,.96))!important;\\n  box-shadow:0 6px 22px rgba(15,23,42,.05)!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-nora img{\\n  width:48px!important;\\n  height:48px!important;\\n  object-fit:contain!important;\\n  border-radius:12px!important;\\n  background:rgba(255,255,255,.72)!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-nora span{\\n  display:block!important;\\n  color:#0f766e!important;\\n  font-size:9.5px!important;\\n  font-weight:950!important;\\n  line-height:1.15!important;\\n  letter-spacing:.09em!important;\\n  text-transform:uppercase!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-nora p{\\n  margin:5px 0 0!important;\\n  color:#1f2937!important;\\n  font-size:11.5px!important;\\n  font-weight:760!important;\\n  line-height:1.42!important;\\n  overflow-wrap:break-word!important;\\n  word-break:normal!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-actions>[data-gdx-r11-action=\\\"compare\\\"]{\\n  grid-area:compare!important;\\n  width:100%!important;\\n  min-height:44px!important;\\n  margin:10px 0 0!important;\\n  justify-self:stretch!important;\\n  align-self:stretch!important;\\n  border-color:rgba(15,118,110,.28)!important;\\n  background:rgba(255,255,255,.76)!important;\\n  color:#24313b!important;\\n}\\n#gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-actions>[data-gdx-r11-action=\\\"compare\\\"].is-selected{\\n  background:rgba(13,148,136,.14)!important;\\n  border-color:rgba(13,148,136,.42)!important;\\n  color:#0f766e!important;\\n}\\n@media(max-width:760px){\\n  #gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-meta{\\n    grid-template-columns:repeat(2,minmax(0,1fr))!important;\\n  }\\n  #gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-nora{\\n    grid-template-columns:42px minmax(0,1fr)!important;\\n  }\\n  #gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-nora img{\\n    width:42px!important;\\n    height:42px!important;\\n  }\\n}\\n@media(max-width:420px){\\n  #gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-meta .gdx-r2i-meta-item{\\n    min-height:54px!important;\\n    padding:8px 9px!important;\\n  }\\n  #gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-meta .gdx-r2i-meta-item b{\\n    font-size:11px!important;\\n  }\\n  #gdxPanelV4RecommendationPreview .gdx-r11-card.gdx-r2i-card[data-gdx-r11-card]>.gdx-r2i-nora p{\\n    font-size:11px!important;\\n  }\\n}\\n\";\r\n    css += ''+\r\n'.gdx-r11-modal-head h3{color:#fff!important;text-shadow:0 2px 18px rgba(0,0,0,.45)!important}.gdx-r11-modal-panel{width:min(1280px,96vw)!important;max-height:94vh!important}.gdx-r11-modal-panel.is-setup{width:min(1280px,97vw)!important}.gdx-r11-modal-copy h4,.gdx-r11-modal-bars h4{margin:0 0 12px;color:#facc15;font-size:18px}.gdx-r11-score-help{margin:-4px 0 10px;color:#bbf7d0;font-size:12px;font-weight:800;line-height:1.25}.gdx-r11-modal-setup-wrap .gdx-r11-setup-card{padding:22px}.gdx-r11-modal-setup-wrap .gdx-r11-diagram{min-height:300px}.gdx-r11-card [data-gdx-panel-p29-rec-setup],.gdx-r11-card .gdx-p29-rec-setup-card{display:none!important}.gdx-r11-score-copy span{font-size:10.5px;line-height:1.18}.gdx-r11-score-copy b{font-size:12.5px}.gdx-r11-card h4{letter-spacing:-.02em}\\n'+\r\n'@media(max-width:760px){.gdx-r11-modal{padding:0!important}.gdx-r11-modal-panel{width:100vw!important;height:100dvh!important;max-height:100dvh!important;border-radius:0!important;padding:18px!important}.gdx-r11-modal-grid{grid-template-columns:1fr!important}.gdx-r11-modal-head h3{font-size:24px!important}.gdx-r11-modal-bar{grid-template-columns:105px 1fr 56px!important;gap:8px!important}.gdx-r11-modal-setup-wrap .gdx-r11-diagram{min-height:260px}.gdx-r11-score{grid-template-columns:58px 1fr!important;padding:8px}.gdx-r11-score-ring{width:54px;height:54px}.gdx-r11-score-ring strong{font-size:18px}.gdx-r11-score-copy span{font-size:10px}}\\n';\r\n    css += ''+\r\n'.gdx-r11-modal-reason-hero{margin:0 0 18px}.gdx-r11-modal-media{display:grid;grid-template-columns:minmax(180px,300px) 1fr;gap:14px;align-items:stretch;margin:0 0 16px}.gdx-r11-modal-media[data-gdx-r11-media-mode=setup]{grid-template-columns:minmax(160px,230px) 1fr;margin:0}.gdx-r11-modal-main-img{min-height:190px;border:1px solid rgba(148,163,184,.24);border-radius:20px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}.gdx-r11-modal-main-img img{width:100%;height:100%;max-height:260px;object-fit:contain;padding:14px}.gdx-r11-modal-main-img span{color:#64748b;font-weight:900}.gdx-r11-modal-thumbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.gdx-r11-modal-thumb{min-height:82px;border:1px solid rgba(148,163,184,.22);border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}.gdx-r11-modal-thumb img{width:100%;height:100%;object-fit:contain;padding:8px}.gdx-r11-modal-setup-top{display:grid;grid-template-columns:minmax(190px,260px) 1fr;gap:16px;align-items:stretch;margin-bottom:16px}.gdx-r11-modal-setup-intro{border:1px solid rgba(148,163,184,.22);border-radius:20px;background:rgba(15,23,42,.58);padding:18px}.gdx-r11-modal-setup-intro h4{margin:0 0 10px;color:#facc15}.gdx-r11-modal-setup-intro p{margin:0;color:#d1fae5;font-weight:850;line-height:1.5}\\n'+\r\n'@media(max-width:760px){.gdx-r11-modal-media,.gdx-r11-modal-media[data-gdx-r11-media-mode=setup],.gdx-r11-modal-setup-top{grid-template-columns:1fr!important}.gdx-r11-modal-main-img{min-height:170px}.gdx-r11-modal-thumbs{grid-template-columns:repeat(4,minmax(0,1fr))}.gdx-r11-modal-thumb{min-height:62px}}\\n';\r\n\r\n    css += ''+\r\n'.gdx-r11-persona-fit{border:1px solid rgba(34,197,94,.30);border-radius:22px;background:linear-gradient(135deg,rgba(6,95,70,.28),rgba(15,23,42,.62));padding:18px;margin:0 0 18px}.gdx-r11-persona-fit-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.gdx-r11-persona-fit-head span{color:#34d399;letter-spacing:.14em;text-transform:uppercase;font-weight:950;font-size:12px}.gdx-r11-persona-fit h4{margin:0;color:#facc15;font-size:20px}.gdx-r11-persona-fit p{margin:0 0 12px;color:#d1fae5;font-weight:850;line-height:1.45}.gdx-r11-persona-fit ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}.gdx-r11-persona-fit li{border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(2,6,23,.36);padding:12px 14px;color:#f8fafc;font-weight:850;line-height:1.35}.gdx-r11-persona-fit.is-setup ul{grid-template-columns:repeat(3,minmax(0,1fr))}.gdx-r11-persona-fit.is-setup{margin:0 0 16px;background:linear-gradient(135deg,rgba(2,132,199,.14),rgba(15,23,42,.62))}\\n'+\r\n'.gdx-r11-modal-media.is-slider{display:grid!important;grid-template-columns:minmax(280px,520px) 1fr!important;gap:16px!important;align-items:stretch!important;margin:0 0 18px!important}.gdx-r11-modal-slider-frame{position:relative;min-height:250px;border:1px solid rgba(148,163,184,.24);border-radius:22px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}.gdx-r11-modal-media[data-gdx-r11-media-mode=setup] .gdx-r11-modal-slider-frame{min-height:230px}.gdx-r11-modal-slider-frame .gdx-r11-modal-main-img{border:0!important;border-radius:0!important;min-height:250px!important;width:100%;height:100%;background:#fff}.gdx-r11-modal-slider-frame .gdx-r11-modal-main-img img{width:100%;height:100%;max-height:360px;object-fit:contain;padding:16px}.gdx-r11-modal-slider-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:42px;height:42px;border-radius:999px;border:1px solid rgba(8,145,178,.35);background:rgba(255,255,255,.92);color:#0891b2;font-size:30px;line-height:1;cursor:pointer;box-shadow:0 10px 24px rgba(2,6,23,.18)}.gdx-r11-modal-slider-btn.prev{left:10px}.gdx-r11-modal-slider-btn.next{right:10px}.gdx-r11-modal-slider-count{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);border:1px solid rgba(15,23,42,.14);border-radius:999px;background:rgba(15,23,42,.72);color:#fff;font-size:11px;font-weight:950;padding:5px 9px;z-index:3}.gdx-r11-modal-data-card{border:1px solid rgba(148,163,184,.24);border-radius:22px;background:rgba(15,23,42,.58);padding:18px;display:flex;flex-direction:column;gap:12px}.gdx-r11-modal-data-card h4{margin:0;color:#facc15;font-size:18px}.gdx-r11-modal-data-tags{display:flex;gap:8px;flex-wrap:wrap}.gdx-r11-modal-data-tags span{border:1px solid rgba(34,197,94,.45);border-radius:999px;padding:8px 11px;background:rgba(6,95,70,.55);color:#d1fae5;font-weight:950;font-size:12px}.gdx-r11-modal-data-lines{display:grid;gap:8px}.gdx-r11-modal-data-lines div{display:flex;justify-content:space-between;gap:12px;border:1px solid rgba(148,163,184,.16);border-radius:12px;background:rgba(2,6,23,.32);padding:10px 12px;font-weight:900}.gdx-r11-modal-data-lines span{color:#bbf7d0}.gdx-r11-modal-data-card p{margin:0;color:#cbd5e1;font-weight:850;line-height:1.45}.gdx-r11-modal-thumbs{display:none!important}.gdx-r11-modal-setup-top{display:block!important}.gdx-r11-modal-panel.is-reason{width:min(1320px,97vw)!important}.gdx-r11-modal-panel.is-setup{width:min(1320px,97vw)!important}\\n'+\r\n'@media(max-width:760px){.gdx-r11-modal-media.is-slider{grid-template-columns:1fr!important}.gdx-r11-modal-slider-frame{min-height:220px}.gdx-r11-modal-slider-frame .gdx-r11-modal-main-img{min-height:220px!important}.gdx-r11-modal-data-card{padding:14px}.gdx-r11-modal-data-lines div{font-size:12px}.gdx-r11-modal-slider-btn{width:38px;height:38px;font-size:26px}.gdx-r11-persona-fit ul,.gdx-r11-persona-fit.is-setup ul{grid-template-columns:1fr}.gdx-r11-persona-fit{padding:14px}.gdx-r11-persona-fit-head{display:block}.gdx-r11-persona-fit h4{font-size:18px;margin-top:4px}}\\n';\r\n\r\n    css += ''+\r\n'.gdx-r33-cr01-score-transparency{border:1px solid rgba(56,189,248,.34);border-radius:16px;background:rgba(3,19,32,.76);overflow:hidden}.gdx-r33-cr01-score-summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;padding:13px 14px;cursor:pointer;color:#ecfeff;font-weight:950;line-height:1.3;user-select:none}.gdx-r33-cr01-score-summary::-webkit-details-marker{display:none}.gdx-r33-cr01-score-summary-main{display:flex;align-items:center;gap:9px}.gdx-r33-cr01-score-summary-main i{font-style:normal;flex:0 0 auto;width:25px;height:25px;border-radius:999px;background:#0f8f86;color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px}.gdx-r33-cr01-score-chevron{color:#67e8f9;font-size:20px;line-height:1;transition:transform .18s ease}.gdx-r33-cr01-score-transparency[open] .gdx-r33-cr01-score-chevron{transform:rotate(180deg)}.gdx-r33-cr01-score-content{padding:0 13px 14px}.gdx-r33-cr01-score-lead{margin:0 0 11px!important;padding:11px 12px;border-radius:12px;background:rgba(14,32,51,.92);color:#d7e8f4!important;font-size:12px;font-weight:760!important;line-height:1.5!important}.gdx-r33-cr01-score-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.gdx-r33-cr01-score-meaning{min-width:0;padding:12px;border:1px solid rgba(148,163,184,.22);border-radius:13px;background:rgba(2,6,23,.40)}.gdx-r33-cr01-score-meaning.is-purpose{border-top:3px solid #4ade80}.gdx-r33-cr01-score-meaning.is-fp{border-top:3px solid #facc15}.gdx-r33-cr01-score-meaning.is-role{border-top:3px solid #22d3ee}.gdx-r33-cr01-score-meaning h5{margin:0 0 6px;color:#f8fafc;font-size:14px}.gdx-r33-cr01-score-meaning p{margin:0 0 9px!important;color:#cbd5e1!important;font-size:11px;font-weight:720!important;line-height:1.45!important}.gdx-r33-cr01-score-formula{padding:9px;border:1px dashed rgba(100,116,139,.60);border-radius:10px;background:rgba(2,6,23,.42);color:#dbeafe;font-size:10.5px;font-weight:760;line-height:1.42}.gdx-r33-cr01-score-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.gdx-r33-cr01-score-chips span{border:0!important;border-radius:999px!important;background:rgba(30,41,59,.92)!important;color:#dbeafe!important;padding:5px 7px!important;font-size:9.5px!important;font-weight:850!important}.gdx-r33-cr01-score-current{margin-top:9px;padding:11px;border:1px solid rgba(34,197,94,.25);border-radius:12px;background:rgba(6,95,70,.20)}.gdx-r33-cr01-score-current>b{display:block;color:#a7f3d0;font-size:12px;margin-bottom:5px}.gdx-r33-cr01-score-current p{margin:0!important;color:#d1fae5!important;font-size:11px;font-weight:740!important;line-height:1.5!important}.gdx-r33-cr01-score-current strong{color:#fff}.gdx-r33-cr01-score-rank-note{margin:9px 0 0!important;padding:10px 11px;border:1px solid rgba(250,204,21,.26);border-radius:12px;background:rgba(250,204,21,.08);color:#fde68a!important;font-size:11px;font-weight:760!important;line-height:1.45!important}\\n'+\r\n'@media(max-width:980px){.gdx-r33-cr01-score-grid{grid-template-columns:1fr}}@media(max-width:760px){.gdx-r33-cr01-score-summary{padding:12px;font-size:12px}.gdx-r33-cr01-score-content{padding:0 10px 11px}.gdx-r33-cr01-score-meaning{padding:11px}.gdx-r33-cr01-score-meaning p,.gdx-r33-cr01-score-current p,.gdx-r33-cr01-score-rank-note{font-size:10.5px!important}}\\n'+\r\n'@media(min-width:761px){.gdx-r11-modal-media.is-slider{align-items:start!important}.gdx-r11-modal-media.is-slider>.gdx-r11-modal-slider-frame{align-self:start!important;height:clamp(420px,56vh,540px)!important;min-height:420px!important;max-height:540px!important}.gdx-r11-modal-media.is-slider>.gdx-r11-modal-slider-frame .gdx-r11-modal-main-img{height:100%!important;min-height:0!important}.gdx-r11-modal-media.is-slider>.gdx-r11-modal-slider-frame .gdx-r11-modal-main-img img{height:100%!important;max-height:100%!important;object-fit:contain!important}.gdx-r33-cr01-score-transparency.is-mobile-inline{display:none!important}.gdx-r33-cr01-score-transparency.is-desktop-wide{display:block;grid-column:1/-1;min-width:0;width:100%;margin-top:0}}\\n'+\r\n'@media(max-width:760px){.gdx-r33-cr01-score-transparency.is-desktop-wide{display:none!important}.gdx-r33-cr01-score-transparency.is-mobile-inline{display:block}}\\n';\r\n\r\n\r\n    css += ''+\r\n'.gdx-r11-purpose-weight-narrative{border:1px solid rgba(250,204,21,.28);border-radius:22px;background:linear-gradient(135deg,rgba(250,204,21,.08),rgba(15,23,42,.68));padding:18px;margin:0 0 18px}.gdx-r11-purpose-weight-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.gdx-r11-purpose-weight-head span{color:#34d399;letter-spacing:.14em;text-transform:uppercase;font-weight:950;font-size:12px}.gdx-r11-purpose-weight-head h4{margin:0;color:#facc15;font-size:20px}.gdx-r11-purpose-weight-narrative p{margin:0 0 12px;color:#d1fae5;font-weight:850;line-height:1.45}.gdx-r11-purpose-weight-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.gdx-r11-purpose-weight-item{border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(2,6,23,.36);padding:12px;color:#f8fafc}.gdx-r11-purpose-weight-title{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}.gdx-r11-purpose-weight-title b{font-size:13px;line-height:1.15}.gdx-r11-purpose-weight-title em{font-style:normal;color:#fde68a;font-size:11px;font-weight:950;white-space:nowrap}.gdx-r11-purpose-weight-bars{display:grid;grid-template-columns:1fr 50px;gap:8px;align-items:center;margin-bottom:8px}.gdx-r11-purpose-weight-bars i{height:10px;border-radius:999px;background:#263244;overflow:hidden}.gdx-r11-purpose-weight-bars b{display:block;height:100%;background:linear-gradient(90deg,#22c55e,#facc15)}.gdx-r11-purpose-weight-bars strong{text-align:right;color:#bbf7d0;font-size:12px}.gdx-r11-purpose-weight-item small{display:block;color:#cbd5e1;font-weight:800;line-height:1.3}.gdx-r11-purpose-weight-safe{border:1px solid rgba(34,197,94,.20);border-radius:14px;background:rgba(6,95,70,.18);padding:12px!important;margin-top:12px!important;color:#bbf7d0!important}\\n'+\r\n'.gdx-r11-modal-grid.is-summary-only{grid-template-columns:1fr!important}.gdx-r11-modal-copy.is-wide{grid-column:1/-1}.gdx-r11-balanced-fp-narrative{border:1px solid rgba(56,189,248,.25);border-radius:22px;background:linear-gradient(135deg,rgba(56,189,248,.08),rgba(15,23,42,.72));padding:18px;margin:0 0 18px}.gdx-r11-balanced-fp-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.gdx-r11-balanced-fp-head span{color:#34d399;letter-spacing:.14em;text-transform:uppercase;font-weight:950;font-size:12px}.gdx-r11-balanced-fp-head h4{margin:0;color:#facc15;font-size:20px}.gdx-r11-balanced-fp-narrative p{margin:0 0 12px;color:#d1fae5;font-weight:850;line-height:1.45}.gdx-r11-balanced-fp-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.gdx-r11-balanced-fp-item{border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(2,6,23,.36);padding:12px;color:#f8fafc}.gdx-r11-balanced-fp-item b{display:block;color:#f8fafc;font-size:14px;margin-bottom:6px}.gdx-r11-balanced-fp-item strong{display:block;color:#bbf7d0;font-size:18px;margin-bottom:6px}.gdx-r11-balanced-fp-item small{display:block;color:#cbd5e1;font-weight:800;line-height:1.35}.gdx-r11-balanced-fp-safe{border:1px solid rgba(250,204,21,.20);border-radius:14px;background:rgba(250,204,21,.08);padding:12px!important;margin-top:12px!important;color:#fde68a!important}\\n'+\r\n'@media(max-width:980px){.gdx-r11-purpose-weight-list{grid-template-columns:repeat(2,minmax(0,1fr))}.gdx-r11-balanced-fp-list{grid-template-columns:1fr}}@media(max-width:620px){.gdx-r11-purpose-weight-list{grid-template-columns:1fr}.gdx-r11-purpose-weight-head,.gdx-r11-balanced-fp-head{display:block}.gdx-r11-purpose-weight-head h4,.gdx-r11-balanced-fp-head h4{margin-top:4px;font-size:18px}}\\n';\r\n\r\n    css += ''+\r\n'.gdx-r11-setup-intelligence{border:1px solid rgba(56,189,248,.25);border-radius:22px;background:linear-gradient(135deg,rgba(56,189,248,.08),rgba(15,23,42,.68));padding:18px;margin:0 0 16px}.gdx-r11-setup-intelligence-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.gdx-r11-setup-intelligence-head span{color:#34d399;letter-spacing:.14em;text-transform:uppercase;font-weight:950;font-size:12px}.gdx-r11-setup-intelligence-head h4{margin:0;color:#facc15;font-size:20px}.gdx-r11-setup-intelligence p{margin:0 0 12px;color:#d1fae5;font-weight:850;line-height:1.45}.gdx-r11-setup-alt-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gdx-r11-setup-alt-list section{border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(2,6,23,.36);padding:12px}.gdx-r11-setup-alt-list b{display:block;color:#f8fafc;margin-bottom:6px}.gdx-r11-setup-alt-list small{display:block;color:#cbd5e1;font-weight:800;line-height:1.35}.gdx-r11-setup-family-note{border:1px solid rgba(34,197,94,.20);border-radius:14px;background:rgba(6,95,70,.16);padding:12px;margin-top:12px;color:#bbf7d0;font-weight:850;line-height:1.45}\\n'+\r\n'@media(max-width:760px){.gdx-r11-setup-alt-list{grid-template-columns:1fr}.gdx-r11-setup-intelligence-head{display:block}.gdx-r11-setup-intelligence-head h4{margin-top:4px;font-size:18px}}\\n'+\r\n'.gdx-r33-cr02-setup-layout{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr);gap:14px;align-items:stretch;margin-top:12px}.gdx-r33-cr02-compact-schema-slot{min-width:0;min-height:360px;border:1px solid rgba(56,189,248,.24);border-radius:17px;background:rgba(2,6,23,.42);overflow:hidden}.gdx-r33-cr02-compact-schema-waiting{min-height:358px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:20px;text-align:center;color:#dbeafe}.gdx-r33-cr02-compact-schema-waiting b{font-size:15px;color:#f8fafc}.gdx-r33-cr02-compact-schema-waiting span{font-size:11px;color:#93c5fd;font-weight:800}.gdx-r33-cr02-setup-values{min-width:0;border:1px solid rgba(148,163,184,.18);border-radius:17px;background:rgba(2,6,23,.28);padding:12px}.gdx-r33-cr02-setup-values-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.gdx-r33-cr02-setup-values-head b{font-size:14px;color:#f8fafc}.gdx-r33-cr02-setup-values-head small{font-size:10px;color:#93a8bd;font-weight:850}.gdx-r33-cr02-setup-values .gdx-r11-setup-alt-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.gdx-r33-cr02-setup-values .gdx-r11-setup-alt-list section{padding:11px}.gdx-r33-cr02-setup-values .gdx-r11-setup-alt-list b{font-size:13px}.gdx-r33-cr02-setup-values .gdx-r11-setup-alt-list small{font-size:10.5px}\\n'+\r\n'@media(max-width:900px){.gdx-r33-cr02-setup-layout{grid-template-columns:1fr}.gdx-r33-cr02-compact-schema-slot{order:1}.gdx-r33-cr02-setup-values{order:2}.gdx-r33-cr02-setup-values .gdx-r11-setup-alt-list{grid-template-columns:1fr}}@media(max-width:760px){.gdx-r33-cr02-setup-layout{gap:10px;margin-top:10px}.gdx-r33-cr02-compact-schema-slot{min-height:320px;border-radius:14px}.gdx-r33-cr02-compact-schema-waiting{min-height:318px}.gdx-r33-cr02-setup-values{padding:10px;border-radius:14px}}\\n';\r\n\r\n\r\n    css += ''+\r\n'.gdx-panel-v4-r27-a8-r2.is-r29-r5-source{position:relative;margin:0 0 16px;padding:16px;border:1px solid rgba(20,184,166,.48);border-radius:20px;background:linear-gradient(135deg,rgba(240,253,250,.98),rgba(236,254,255,.96));box-shadow:0 14px 38px rgba(2,6,23,.18);color:#0f172a}.gdx-panel-v4-r27-a8-r2.is-r29-r5-source *{box-sizing:border-box}.gdx-panel-v4-r27-a8-r2-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px}.gdx-panel-v4-r27-a8-r2-badge{flex:0 0 auto;width:38px;height:38px;border-radius:999px;background:#0f766e;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:950;font-size:14px}.gdx-panel-v4-r27-a8-r2-kicker{color:#0f766e;font-size:11px;font-weight:950;letter-spacing:.12em}.gdx-panel-v4-r27-a8-r2.is-r29-r5-source h4{margin:3px 0 0;color:#0f172a;font-size:18px;line-height:1.25}.gdx-panel-v4-r29-r5-product{margin:4px 0 0;color:#475569;font-size:12px;font-weight:850}.gdx-panel-v4-r27-a8-r2-copy{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.gdx-panel-v4-r27-a8-r2-card{min-width:0;border:1px solid rgba(15,118,110,.16);border-radius:14px;background:#fff;padding:11px}.gdx-panel-v4-r27-a8-r2-card strong{display:block;color:#0f766e;font-size:12px;margin-bottom:5px}.gdx-panel-v4-r27-a8-r2-card p{margin:0;color:#1e293b;font-size:12px;font-weight:780;line-height:1.45}.gdx-panel-v4-r27-a8-r2-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.gdx-panel-v4-r27-a8-r2-meta span{border:1px solid rgba(8,145,178,.18);border-radius:999px;background:#ecfeff;color:#155e75;padding:5px 8px;font-size:11px;font-weight:900}\\n'+\r\n'@media(max-width:860px){.gdx-panel-v4-r27-a8-r2-copy{grid-template-columns:1fr}}\\n';\r\n\r\n    css += ''+\r\n'.gdx-r11-reason-nora.is-r29-r6-source{padding:16px;border-color:rgba(56,189,248,.34);background:linear-gradient(135deg,rgba(8,47,73,.48),rgba(15,23,42,.72))}.gdx-r11-reason-nora-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.gdx-r11-reason-nora-head span{display:block;color:#67e8f9;font-size:11px;font-weight:950;letter-spacing:.12em}.gdx-r11-reason-nora-head h4{margin:4px 0 0;color:#fff;font-size:20px}.gdx-r11-reason-nora-head b{display:inline-flex;align-items:center;border:1px solid rgba(34,197,94,.34);border-radius:999px;background:rgba(6,95,70,.45);color:#d1fae5;padding:7px 10px;font-size:11px;font-weight:950;white-space:nowrap}.gdx-r11-reason-nora-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.gdx-r11-reason-nora-card{min-width:0;border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(2,6,23,.38);padding:12px}.gdx-r11-reason-nora-card strong{display:block;color:#fde68a;font-size:11px;margin-bottom:6px}.gdx-r11-reason-nora-card p{margin:0;color:#e2e8f0;font-size:12px;font-weight:780;line-height:1.45}.gdx-r11-reason-nora-card.is-role{border-color:rgba(56,189,248,.28)}.gdx-r11-reason-nora-card.is-alternative{border-color:rgba(167,139,250,.28)}.gdx-r11-reason-nora-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.gdx-r11-reason-nora-meta span{border:1px solid rgba(34,197,94,.22);border-radius:999px;background:rgba(6,95,70,.35);color:#d1fae5;padding:5px 8px;font-size:10px;font-weight:900}\\n'+\r\n'@media(max-width:820px){.gdx-r11-reason-nora-grid{grid-template-columns:1fr}.gdx-r11-reason-nora-head{display:block}.gdx-r11-reason-nora-head b{margin-top:9px;white-space:normal}}\\n';\r\n\r\n    css += ''+\r\n'.gdx-r11-nora-context{border:1px solid rgba(34,211,238,.34);border-radius:20px;background:linear-gradient(135deg,rgba(8,47,73,.62),rgba(15,23,42,.82));padding:16px;margin:0 0 20px}.gdx-r11-nora-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.gdx-r11-nora-head span{display:block;color:#67e8f9;font-size:11px;font-weight:950;letter-spacing:.14em}.gdx-r11-nora-head h4{margin:4px 0 0;color:#fff;font-size:19px;line-height:1.2}.gdx-r11-nora-head b{display:inline-flex;align-items:center;border:1px solid rgba(34,197,94,.40);border-radius:999px;background:rgba(6,95,70,.50);color:#d1fae5;padding:8px 11px;font-size:12px;font-weight:950;white-space:nowrap}.gdx-r11-nora-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.gdx-r11-nora-block{min-width:0;border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(2,6,23,.40);padding:12px}.gdx-r11-nora-block span{display:block;color:#fde68a;font-size:11px;font-weight:950;letter-spacing:.04em;margin-bottom:6px}.gdx-r11-nora-block p{margin:0;color:#e2e8f0;font-size:12px;font-weight:800;line-height:1.42}.gdx-r11-nora-block.is-caution{border-color:rgba(250,204,21,.28)}.gdx-r11-nora-block.is-setupTip{border-color:rgba(56,189,248,.28)}.gdx-r11-nora-block.is-alternative{border-color:rgba(167,139,250,.28)}\\n'+\r\n'@media(max-width:980px){.gdx-r11-nora-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.gdx-r11-nora-context{padding:13px}.gdx-r11-nora-head{display:block}.gdx-r11-nora-head b{margin-top:9px;white-space:normal}.gdx-r11-nora-grid{grid-template-columns:1fr}.gdx-r11-nora-block{padding:11px}}\\n';\r\n\r\n    css += ''+\r\n'.gdx-r11-main-tabs,.gdx-r11-sub-tabs{display:none!important}\\n'+\r\n'@media(max-width:620px){.gdx-r11-context-lock{grid-template-columns:1fr;padding:13px}.gdx-r11-context-lock p{grid-column:1}.gdx-r11-context-cell{padding:11px 12px}}\\n';\r\n\r\n\r\n    css += ''+\r\n'.gdx-panel-v4-r30a-visual-host{position:relative;display:block;margin-top:16px}.gdx-panel-v4-r30a-schematic-layer,.gdx-panel-v4-r30a-cdn-layer{position:relative}.gdx-panel-v4-r30a-schematic-layer[hidden],.gdx-panel-v4-r30a-cdn-layer[hidden]{display:none!important}.gdx-panel-v4-r30a-cdn-layer{min-height:300px;border:1px solid rgba(56,189,248,.24);border-radius:20px;background:#fff;overflow:hidden;align-items:center;justify-content:center}.gdx-panel-v4-r30a-cdn-layer:not([hidden]){display:flex}.gdx-panel-v4-r30a-cdn-layer img{display:block;width:100%;height:auto;max-height:520px;object-fit:contain;background:#fff}.gdx-panel-v4-r30a-visual-host.is-cdn-pending .gdx-panel-v4-r30a-schematic-layer{opacity:0}.gdx-panel-v4-r30a-visual-host.is-cdn-error-hold .gdx-panel-v4-r30a-schematic-layer{display:none!important;opacity:0}.gdx-panel-v4-r30a-visual-host.is-cdn-error-fallback .gdx-panel-v4-r30a-schematic-layer{opacity:1}.gdx-r11-diagram.is-rgb-background-accent .key{left:7%;top:35%;background:#075985}.gdx-r11-diagram.is-rgb-background-accent .fill{right:6%;top:22%;background:linear-gradient(135deg,#7c3aed,#db2777);border-color:rgba(255,255,255,.24)}.gdx-r11-diagram.is-compact-support-close-range .key{left:13%;top:46%}.gdx-r11-diagram.is-compact-support-close-range .fill{right:12%;top:46%}\\n'+\r\n'@media(max-width:760px){.gdx-panel-v4-r30a-cdn-layer{min-height:260px}.gdx-panel-v4-r30a-cdn-layer img{max-height:420px}}\\n';\r\n\r\n\r\n    css += ''+\r\n'.gdx-r2j-tray{margin-top:18px;border:1px solid rgba(56,189,248,.34);border-radius:20px;background:linear-gradient(135deg,rgba(8,47,73,.52),rgba(15,23,42,.84));padding:16px;color:#f8fafc;box-shadow:0 14px 38px rgba(2,6,23,.18)}\\n'+\r\n'.gdx-r2j-tray *{box-sizing:border-box}.gdx-r2j-tray-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.gdx-r2j-tray-head span{display:block;color:#67e8f9;font-size:10px;font-weight:950;letter-spacing:.14em}.gdx-r2j-tray-head h4{margin:4px 0 0;font-size:18px;color:#fff}.gdx-r2j-tray-head button{border:1px solid rgba(148,163,184,.28);border-radius:999px;background:rgba(15,23,42,.58);color:#e2e8f0;padding:8px 11px;font-weight:900;cursor:pointer}.gdx-r2j-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gdx-r2j-slot{position:relative;min-width:0;border:1px solid rgba(148,163,184,.20);border-radius:14px;background:rgba(2,6,23,.36);padding:12px 44px 12px 12px}.gdx-r2j-slot>span{display:block;color:#93c5fd;font-size:9.5px;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.gdx-r2j-slot>strong{display:block;margin-top:5px;color:#fff;font-size:13px;line-height:1.25}.gdx-r2j-slot>small{display:block;margin-top:5px;color:#cbd5e1;font-size:10.5px;font-weight:780;line-height:1.35}.gdx-r2j-slot>button{position:absolute;right:9px;top:9px;border:0;border-radius:999px;background:rgba(239,68,68,.12);color:#fecaca;padding:6px 8px;font-size:9px;font-weight:900;cursor:pointer}.gdx-r2j-slot.is-empty{padding-right:12px;border-style:dashed;opacity:.8}.gdx-r2j-run{width:100%;min-height:46px;margin-top:12px;border:1px solid rgba(34,197,94,.44);border-radius:14px;background:linear-gradient(180deg,#16a34a,#15803d);color:#fff;font-weight:950;cursor:pointer}.gdx-r2j-run:disabled{cursor:not-allowed;opacity:.48;background:#334155;border-color:#475569}.gdx-r2j-dual{margin-top:14px;border:1px solid rgba(250,204,21,.30);border-radius:16px;background:rgba(15,23,42,.56);padding:14px}.gdx-r2j-dual-head{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:12px;align-items:start}.gdx-r2j-dual-head span{display:block;color:#fde68a;font-size:9.5px;font-weight:950;letter-spacing:.13em}#gdxPanelV4RecommendationPreview .gdx-r2j-dual-head h4,#gdxPanelV4ResultPreview .gdx-r2j-dual-head h4{margin:4px 0 0;color:#f8fafc!important;font-size:15px}.gdx-panel-v4-result-box.is-compare{scroll-margin-top:14px}.gdx-r2j-dual-head p{margin:0;color:#d1fae5;font-size:12px;font-weight:850;line-height:1.4}.gdx-r2j-decision-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.gdx-r2j-decision-metric{min-width:0;border:1px solid rgba(148,163,184,.18);border-radius:13px;background:rgba(2,6,23,.34);padding:11px}.gdx-r2j-decision-metric span{display:block;color:#67e8f9;font-size:9.5px;font-weight:950;letter-spacing:.08em}.gdx-r2j-decision-metric strong{display:block;margin-top:5px;color:#fff;font-size:13px;line-height:1.25}.gdx-r2j-decision-metric small{display:block;margin-top:4px;color:#cbd5e1;font-size:10.5px}.gdx-r2j-dual-note{margin:10px 0 0;color:#94a3b8;font-size:10.5px;font-weight:760;line-height:1.4}\\n'+\r\n'@media(max-width:760px){.gdx-r2j-tray{padding:13px}.gdx-r2j-slots{grid-template-columns:1fr}.gdx-r2j-dual-head{grid-template-columns:1fr}.gdx-r2j-decision-grid{grid-template-columns:1fr}}\\n';\r\n\r\n\r\n    css += ''+\r\n'#gdxPanelV4ActionBar[data-gdx-r2j-suppressed=\"1\"]{display:none!important}\\n'+\r\n'.gdx-r2j-tray.is-compact{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;background:linear-gradient(135deg,rgba(8,47,73,.42),rgba(15,23,42,.72))}.gdx-r2j-compact-copy{min-width:0}.gdx-r2j-compact-copy>span{display:block;color:#67e8f9;font-size:9px;font-weight:950;letter-spacing:.13em}.gdx-r2j-compact-copy>strong{display:block;margin-top:3px;color:#fff;font-size:12px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gdx-r2j-compact-copy>small{display:block;margin-top:3px;color:#cbd5e1;font-size:10px;line-height:1.35}.gdx-r2j-compact-actions{display:flex;gap:8px;flex:0 0 auto}.gdx-r2j-compact-actions button,.gdx-r2j-result-actions button{border:1px solid rgba(148,163,184,.28);border-radius:999px;background:rgba(15,23,42,.58);color:#f8fafc;padding:8px 11px;font-size:10px;font-weight:900;cursor:pointer}.gdx-r2j-compact-actions button:last-child,.gdx-r2j-result-actions button:last-child{background:rgba(239,68,68,.10);color:#fecaca}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary{margin:14px 0 18px}#gdxPanelV4ResultPreview .gdx-r2j-dual{margin-top:0}#gdxPanelV4ResultPreview .gdx-r2j-result-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;padding-top:10px;border-top:1px solid rgba(148,163,184,.16)}\\n'+\r\n'@media(max-width:760px){.gdx-r2j-tray.is-compact{align-items:stretch;flex-direction:column}.gdx-r2j-compact-actions{display:grid;grid-template-columns:1fr 1fr}.gdx-r2j-compact-actions button,.gdx-r2j-result-actions button{width:100%}#gdxPanelV4ResultPreview .gdx-r2j-result-actions{display:grid;grid-template-columns:1fr 1fr}}\\n';\r\n\r\n\r\n    css += ''+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-dual{background:#111827!important;border:1px solid rgba(245,158,11,.62)!important;color:#f8fafc!important;box-shadow:0 16px 38px rgba(15,23,42,.18)!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-dual-head>div>span{color:#fbbf24!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-dual-head h4{color:#f8fafc!important;text-shadow:none!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-dual-head>p{color:#d1fae5!important;font-weight:850!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-decision-metric{background:#1f2937!important;border-color:#475569!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-decision-metric>span{color:#67e8f9!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-decision-metric>strong{color:#ffffff!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-decision-metric>small{color:#e2e8f0!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-dual-note{color:#e2e8f0!important;font-weight:720!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-result-actions{border-top-color:#475569!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-result-actions button{background:#0f766e!important;border-color:#14b8a6!important;color:#ffffff!important;box-shadow:none!important}\\n'+\r\n'#gdxPanelV4ResultPreview .gdx-r2j-result-summary .gdx-r2j-result-actions button:last-child{background:#7f1d1d!important;border-color:#ef4444!important;color:#ffffff!important}\\n';\r\n\r\n\r\n    css += ''+\r\n'.gdx-r2j-head-actions{display:flex;align-items:center;gap:8px}\\n'+\r\n'@media(max-width:760px){.gdx-r2j-head-actions{gap:6px}}\\n';\r\n\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = css;\r\n    D.head.appendChild(style);\r\n    return { ok:true, injected:true, styleId:STYLE_ID };\r\n  }\r\n\r\n  function scheduleRender(reason) {\r\n    if (!fs1rR52DecisionGateActive() || !fs1rR52SelectionReady()) {\r\n      fs1rR52HoldRecommendationMount(\r\n        reason || 'scheduled_while_deferred'\r\n      );\r\n      return;\r\n    }\r\n\r\n    if (state.scheduled) return;\r\n    state.scheduled = true;\r\n    W.requestAnimationFrame(function(){\r\n      state.scheduled = false;\r\n      var el = mount();\r\n      if (!el) return;\r\n      if (!el.querySelector('[data-gdx-reco-r11-owned=\"1\"]')) render();\r\n    });\r\n  }\r\n\r\n  function installObserver() {\r\n    var el = mount();\r\n    if (!el || state.observer) return { ok:!!state.observer, already:!!state.observer };\r\n    state.observer = new MutationObserver(function(){\r\n      if (state.installing) return;\r\n\r\n      if (!fs1rR52DecisionGateActive() || !fs1rR52SelectionReady()) {\r\n        fs1rR52HoldRecommendationMount(\r\n          'observer_while_deferred'\r\n        );\r\n        return;\r\n      }\r\n\r\n      var owned = !!(mount() && mount().querySelector('[data-gdx-reco-r11-owned=\"1\"]'));\r\n      if (!owned) scheduleRender('mount_overwritten');\r\n    });\r\n    state.observer.observe(el, { childList:true, subtree:false });\r\n    return { ok:true, observerInstalled:true };\r\n  }\r\n\r\n  function installEvents() {\r\n    if (W.__GDX_PANEL_V4_R11_R3_EVENTS_INSTALLED) return { ok:true, already:true };\r\n    W.__GDX_PANEL_V4_R11_R3_EVENTS_INSTALLED = true;\r\n    D.addEventListener('click', function(event){\r\n      var t = event.target && event.target.closest ? event.target.closest('[data-gdx-r11-action]') : null;\r\n      if (!t) return;\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      if (event.stopImmediatePropagation) event.stopImmediatePropagation();\r\n      var action = t.getAttribute('data-gdx-r11-action') || '';\r\n      /* R28-R7-R3: R11 local main/sub override kapal\u0131d\u0131r; tek se\u00E7im sahibi R28'dir. */\r\n      if (action === 'main' || action === 'sub') {\r\n        return;\r\n      }\r\n      if (action === 'compare') {\r\n        var compareKey = t.getAttribute('data-gdx-r11-key') || '';\r\n        var compareRow = state.lastRows.find(function(r){ return r.key === compareKey; });\r\n        if (compareRow) {\r\n          state.lastCompareAction = r2iToggleCompare(compareRow);\r\n          render();\r\n        }\r\n        return;\r\n      }\r\n      if (action === 'r2j-remove') {\r\n        r2jRemoveSlot(t.getAttribute('data-gdx-r2j-remove-slot') || '0');\r\n        return;\r\n      }\r\n      if (action === 'r2j-clear') {\r\n        r2jClear();\r\n        return;\r\n      }\r\n      if (action === 'r2j-edit') {\r\n        r2jEditSelection();\r\n        return;\r\n      }\r\n      if (action === 'r2j-run') {\r\n        r2jRun();\r\n        return;\r\n      }\r\n      if (action === 'reason' || action === 'setup') {\r\n        var key = t.getAttribute('data-gdx-r11-key') || '';\r\n        state.modal = { type:action, key:key };\r\n        state.mediaIndex[key + ':' + action] = 0;\r\n        render();\r\n        return;\r\n      }\r\n      if (action === 'media-prev' || action === 'media-next') {\r\n        var mediaKey = t.getAttribute('data-gdx-r11-key') || (state.modal && state.modal.key) || '';\r\n        var mediaMode = t.getAttribute('data-gdx-r11-media-mode') || (state.modal && state.modal.type) || 'reason';\r\n        var mediaRow = state.lastRows.find(function(r){ return r.key === mediaKey; });\r\n        if (mediaRow) {\r\n          var mediaImgs = productImages(mediaRow.product || mediaRow, 4);\r\n          if (!mediaImgs.length && mediaRow.image) mediaImgs = [mediaRow.image];\r\n          mediaImgs = mediaImgs.slice(0, 4);\r\n          if (mediaImgs.length > 1) {\r\n            var ixKey = mediaKey + ':' + mediaMode;\r\n            var ix = Number(state.mediaIndex[ixKey] || 0);\r\n            ix = action === 'media-next' ? ix + 1 : ix - 1;\r\n            if (ix < 0) ix = mediaImgs.length - 1;\r\n            if (ix >= mediaImgs.length) ix = 0;\r\n            state.mediaIndex[ixKey] = ix;\r\n            render();\r\n          }\r\n        }\r\n        return;\r\n      }\r\n      if (action === 'close-modal') {\r\n        state.modal = null;\r\n        render();\r\n      }\r\n    }, true);\r\n\r\n\r\n    D.addEventListener('keydown', function(event){\r\n      if (event.key === 'Escape' && state.modal) {\r\n        state.modal = null;\r\n        render();\r\n      }\r\n    });\r\n    return { ok:true, installed:true };\r\n  }\r\n\r\n  function install() {\r\n    injectStyle();\r\n    installEvents();\r\n\r\n    var obs = installObserver();\r\n\r\n    if (!fs1rR52DecisionGateActive() || !fs1rR52SelectionReady()) {\r\n      var held =\r\n        fs1rR52HoldRecommendationMount(\r\n          'install_deferred'\r\n        );\r\n\r\n      return {\r\n        ok: true,\r\n        deferred: true,\r\n        render: held,\r\n        observer: obs\r\n      };\r\n    }\r\n\r\n    var r = render();\r\n    return { ok:!!r.ok, render:r, observer:obs };\r\n  }\r\n\r\n\r\n  W.GDX_PANEL_V4_R2J_COMPARE_TRAY = Object.freeze({\r\n    version:R2J_VERSION,\r\n    getDecisionModel:r2jDecisionModel,\r\n    getSelectedProducts:r2jSelectedProducts,\r\n    renderTrayHtml:r2jTrayHtml,\r\n    renderDock:r2jRenderDock,\r\n    getDockMount:r2jDockMount,\r\n    runCompare:r2jRun,\r\n    clear:r2jClear,\r\n    removeSlot:r2jRemoveSlot,\r\n    editSelection:r2jEditSelection,\r\n    syncLegacyActionBar:r2jSyncLegacyActionBar,\r\n    mountDecisionIntoResult:r2jMountDecisionIntoResult\r\n  });\r\n\r\n  function matrixContractAudit() {\r\n    var e = P61_PURPOSE_WEIGHTS.ecommerce_catalog_white_background || {};\r\n    var pv = P61_PURPOSE_WEIGHTS.product_video_reels_tabletop || {};\r\n    var rf = P61_PURPOSE_WEIGHTS.reflective_product_jewelry_glossy || {};\r\n    var bu = P61_PURPOSE_WEIGHTS.beginner_budget_home_studio || {};\r\n    var checks = {\r\n      exactUploadedWeights: e.whitePower === 18 && e.colorAccuracy === 24 && e.cct === 16 && e.softness === 18 && e.rgbFx === 4 && e.portability === 2 && e.control === 4 && e.quietStability === 4 && e.price === 10,\r\n      productVideoUploadedWeights: pv.whitePower === 16 && pv.colorAccuracy === 18 && pv.cct === 14 && pv.softness === 16 && pv.rgbFx === 12 && pv.portability === 4 && pv.control === 6 && pv.quietStability === 4 && pv.price === 10,\r\n      reflectiveUploadedWeights: rf.whitePower === 14 && rf.colorAccuracy === 26 && rf.cct === 14 && rf.softness === 22 && rf.rgbFx === 2 && rf.portability === 2 && rf.control === 4 && rf.quietStability === 6 && rf.price === 10,\r\n      productPurposePriceWeightLow: e.price === 10 && pv.price === 10 && rf.price === 10,\r\n      budgetPurposeStillPriceSensitive: bu.price === 22\r\n    };\r\n    return { phase: PHASE, version: VERSION, ok: Object.keys(checks).every(function(k){ return checks[k] === true; }), checks: checks, ecommerceCatalogWeights: e, productVideoWeights: pv, reflectiveWeights: rf, beginnerBudgetWeights: bu };\r\n  }\r\n\r\n  function ecommerceCalibrationAudit() {\r\n    var intents = ['ecommerce_catalog_white_background','product_video_reels_tabletop','reflective_product_jewelry_glossy'];\r\n    var rows = intents.map(function(key){\r\n      var rec = recommendationRows(key);\r\n      return {\r\n        subKey: key,\r\n        titles: rec.map(function(r){ return r.title; }),\r\n        powers: rec.map(function(r){ return r.power; }),\r\n        purposeScores: rec.map(function(r){ return r.purposeScore; }),\r\n        fpScores: rec.map(function(r){ return r.fpScore; }),\r\n        firstPower: rec[0] ? rec[0].power : 0,\r\n        firstTitle: rec[0] ? rec[0].title : ''\r\n      };\r\n    });\r\n    var checks = {\r\n      catalogFirstIsNotLowPower80: !(rows[0] && Number(rows[0].firstPower || 0) <= 90),\r\n      productVideoFirstIsNotLowPower80: !(rows[1] && Number(rows[1].firstPower || 0) <= 90),\r\n      ecommercePurposeScoresRespondToPower: rows.every(function(r){ return Math.max.apply(Math, r.powers.map(Number)) >= 120; })\r\n    };\r\n    return { phase: PHASE, version: VERSION, ok: Object.keys(checks).every(function(k){ return checks[k] === true; }), checks: checks, rows: rows };\r\n  }\r\n\r\n  function visualAudit() {\r\n    var el = mount();\r\n    var scope = el ? el.querySelector('[data-gdx-reco-r11-owned=\"1\"]') : null;\r\n    var cards = scope ? Array.prototype.slice.call(scope.querySelectorAll('[data-gdx-r11-card]')) : [];\r\n    var modal = scope ? scope.querySelector('[data-gdx-r11-modal=\"1\"]') : null;\r\n    return {\r\n      mountExists: !!el,\r\n      owned: !!scope,\r\n      cardCount: cards.length,\r\n      productImageCount: scope ? scope.querySelectorAll('.gdx-r11-imgbox img').length : 0,\r\n      productImagesVisible: !!(scope && scope.querySelectorAll('.gdx-r11-imgbox img').length >= Math.min(3, cards.length)),\r\n      mainGoalCount: scope ? scope.querySelectorAll('.gdx-r11-main-tab').length : 0,\r\n      subGoalVisibleCount: scope ? scope.querySelectorAll('.gdx-r11-sub-tab').length : 0,\r\n      totalSubGoalCount: taxonomy.reduce(function(a,g){ return a + g.subs.length; }, 0),\r\n      dualScoreVisible: scope ? scope.querySelectorAll('.gdx-r11-score.purpose').length === cards.length && scope.querySelectorAll('.gdx-r11-score.fp').length === cards.length : false,\r\n      whyTriggerCount: scope ? scope.querySelectorAll('[data-gdx-r11-action=\"reason\"]').length : 0,\r\n      setupTriggerCount: scope ? scope.querySelectorAll('[data-gdx-r11-action=\"setup\"]').length : 0,\r\n      modalOpen: !!modal,\r\n      modalTitleReadable: !modal || !!(modal.querySelector('.gdx-r11-modal-head h3') && W.getComputedStyle(modal.querySelector('.gdx-r11-modal-head h3')).color !== 'rgba(0, 0, 0, 0)' && W.getComputedStyle(modal.querySelector('.gdx-r11-modal-head h3')).visibility !== 'hidden'),\r\n      inlineSetupRendered: scope ? !!scope.querySelector('[data-gdx-panel-p29-rec-setup], .gdx-p29-rec-setup-card:not([style*=\"display: none\"])') : false,\r\n      noStockLabelsInRecoCards: scope ? !/stokta|stok d\u0131\u015F\u0131|stok kontroll\u00FC/i.test(scope.textContent || '') : true,\r\n      rows: state.lastRows.map(function(r){ return { rank:r.rank, title:r.title, family:r.family, purpose:r.purposeScore, fpRaw:r.fpRawScore, fp:r.fpScore, fpCalibrationVersion:r.fpCalibrationVersion, role:r.roleScore, purposeSource:r.scoreSource&&r.scoreSource.purpose, fpSource:r.scoreSource&&r.scoreSource.fp, criteriaCount:r.scoreSource&&r.scoreSource.criteriaCount }; }),\r\n      legacySetupHidden: scope ? scope.querySelectorAll('[data-gdx-panel-p29-rec-setup]').length === 0 || Array.prototype.every.call(scope.querySelectorAll('[data-gdx-panel-p29-rec-setup]'), function(x){ return W.getComputedStyle(x).display === 'none'; }) : true\r\n    };\r\n  }\r\n\r\n  function clickAudit(opts) {\r\n    opts = opts || {};\r\n    install();\r\n    var before = visualAudit();\r\n    var scope = mount() && mount().querySelector('[data-gdx-reco-r11-owned=\"1\"]');\r\n    var reasonBtn = scope ? scope.querySelector('[data-gdx-r11-action=\"reason\"]') : null;\r\n    var setupBtn = scope ? scope.querySelector('[data-gdx-r11-action=\"setup\"]') : null;\r\n    if (reasonBtn) reasonBtn.click();\r\n    var afterReason = visualAudit();\r\n    if (!opts.keepOpen) {\r\n      var close = mount() && mount().querySelector('[data-gdx-r11-action=\"close-modal\"]');\r\n      if (close) close.click();\r\n    }\r\n    if (opts.testSetup) {\r\n      scope = mount() && mount().querySelector('[data-gdx-reco-r11-owned=\"1\"]');\r\n      setupBtn = scope ? scope.querySelector('[data-gdx-r11-action=\"setup\"]') : null;\r\n      if (setupBtn) setupBtn.click();\r\n    }\r\n    var after = visualAudit();\r\n    return {\r\n      available: !!scope,\r\n      before: before,\r\n      afterReason: afterReason,\r\n      after: after,\r\n      checks: {\r\n        reasonButtonOpensModal: afterReason.modalOpen === true,\r\n        setupButtonsAvailable: before.setupTriggerCount >= 3,\r\n        setupButtonOpensModal: opts.testSetup ? after.modalOpen === true : true,\r\n        cardCountStable: before.cardCount === 3 && after.cardCount === 3,\r\n        productImagesStable: before.productImagesVisible && after.productImagesVisible,\r\n        noStockLabelsInRecoCards: after.noStockLabelsInRecoCards\r\n      }\r\n    };\r\n  }\r\n\r\n  function modalSliderDataBadgeAudit() {\r\n    var installResult = install();\r\n    var beforeProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    render();\r\n    var btn = mount() && mount().querySelector('[data-gdx-r11-action=\"reason\"]');\r\n    if (btn) btn.click();\r\n    var reasonModal = mount() ? mount().querySelector('[data-gdx-r11-modal=\"1\"][data-gdx-r11-modal-type=\"reason\"]') : null;\r\n    var reasonSlider = reasonModal ? reasonModal.querySelector('[data-gdx-r11-modal-slider=\"1\"]') : null;\r\n    var reasonImageCount = reasonSlider ? Number(reasonSlider.getAttribute('data-gdx-r11-modal-image-count') || 0) : 0;\r\n    var reasonCurrentImageCount = reasonModal ? reasonModal.querySelectorAll('[data-gdx-r11-modal-slider-image=\"1\"]').length : 0;\r\n    var reasonArrows = reasonModal ? reasonModal.querySelectorAll('[data-gdx-r11-action=\"media-prev\"],[data-gdx-r11-action=\"media-next\"]').length : 0;\r\n    var reasonBadges = reasonModal ? reasonModal.querySelectorAll('[data-gdx-r11-modal-data-badges=\"1\"] .gdx-r11-modal-data-tags span').length : 0;\r\n    var close = mount() && mount().querySelector('[data-gdx-r11-action=\"close-modal\"]');\r\n    if (close) close.click();\r\n\r\n    var setupBtn = mount() && mount().querySelector('[data-gdx-r11-action=\"setup\"]');\r\n    if (setupBtn) setupBtn.click();\r\n    var setupModal = mount() ? mount().querySelector('[data-gdx-r11-modal=\"1\"][data-gdx-r11-modal-type=\"setup\"]') : null;\r\n    var setupSlider = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-slider=\"1\"]') : null;\r\n    var setupImageCount = setupSlider ? Number(setupSlider.getAttribute('data-gdx-r11-modal-image-count') || 0) : 0;\r\n    var setupCurrentImageCount = setupModal ? setupModal.querySelectorAll('[data-gdx-r11-modal-slider-image=\"1\"]').length : 0;\r\n    var setupBadges = setupModal ? setupModal.querySelectorAll('[data-gdx-r11-modal-data-badges=\"1\"] .gdx-r11-modal-data-tags span').length : 0;\r\n    close = mount() && mount().querySelector('[data-gdx-r11-action=\"close-modal\"]');\r\n    if (close) close.click();\r\n\r\n    var afterProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n\r\n    var checks = {\r\n      reasonModalHasProductSlider: !!reasonSlider,\r\n      reasonModalSliderImageCountMax4: reasonImageCount > 0 && reasonImageCount <= 4,\r\n      reasonModalSliderArrowsAvailable: reasonImageCount <= 1 ? true : reasonArrows >= 2,\r\n      reasonModalHasProductDataBadges: reasonBadges >= 3,\r\n      setupModalHasProductImageOrSlider: !!setupSlider && setupCurrentImageCount >= 1 && setupImageCount <= 4,\r\n      setupModalHasProductDataBadges: setupBadges >= 3,\r\n      productMutationNotExecuted: beforeProducts === afterProducts,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      reasonImageCount: reasonImageCount,\r\n      reasonCurrentImageCount: reasonCurrentImageCount,\r\n      reasonArrowCount: reasonArrows,\r\n      reasonBadgeCount: reasonBadges,\r\n      setupImageCount: setupImageCount,\r\n      setupCurrentImageCount: setupCurrentImageCount,\r\n      setupBadgeCount: setupBadges,\r\n      installResult: installResult,\r\n      mutationAllowed: false,\r\n      liveApplyAllowed: false\r\n    };\r\n  }\r\n\r\n\r\n  function personaFitAudit() {\r\n    var installResult = install();\r\n    var beforeProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    render();\r\n\r\n    var reasonBtn = mount() && mount().querySelector('[data-gdx-r11-action=\"reason\"]');\r\n    if (reasonBtn) reasonBtn.click();\r\n    var reasonModal = mount() ? mount().querySelector('[data-gdx-r11-modal=\"1\"][data-gdx-r11-modal-type=\"reason\"]') : null;\r\n    var reasonPersona = reasonModal ? reasonModal.querySelector('[data-gdx-r11-persona-fit=\"1\"][data-gdx-r11-persona-mode=\"reason\"]') : null;\r\n    var reasonItems = reasonPersona ? reasonPersona.querySelectorAll('[data-gdx-r11-persona-item=\"1\"]').length : 0;\r\n    var reasonTextLeak = reasonPersona ? /stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/i.test(reasonPersona.textContent || '') : false;\r\n    var reasonHasKimlerTitle = reasonPersona ? /kimler\\s+[i\u0131\u0130I](?:\u00E7|c)in|kimler\\s+icin/i.test(reasonPersona.textContent || '') : false;\r\n    var close = mount() && mount().querySelector('[data-gdx-r11-action=\"close-modal\"]');\r\n    if (close) close.click();\r\n\r\n    var setupBtn = mount() && mount().querySelector('[data-gdx-r11-action=\"setup\"]');\r\n    if (setupBtn) setupBtn.click();\r\n    var setupModal = mount() ? mount().querySelector('[data-gdx-r11-modal=\"1\"][data-gdx-r11-modal-type=\"setup\"]') : null;\r\n    var setupPersona = setupModal ? setupModal.querySelector('[data-gdx-r11-persona-fit=\"1\"][data-gdx-r11-persona-mode=\"setup\"]') : null;\r\n    var setupItems = setupPersona ? setupPersona.querySelectorAll('[data-gdx-r11-persona-item=\"1\"]').length : 0;\r\n    var setupTextLeak = setupPersona ? /stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/i.test(setupPersona.textContent || '') : false;\r\n    var setupHasKimlerTitle = setupPersona ? /setup\\s+kimler\\s+[i\u0131\u0130I](?:\u00E7|c)in|setup\\s+kimler\\s+icin|bu setup kimler/i.test(setupPersona.textContent || '') : false;\r\n    close = mount() && mount().querySelector('[data-gdx-r11-action=\"close-modal\"]');\r\n    if (close) close.click();\r\n\r\n    var afterProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var checks = {\r\n      reasonModalPersonaFitExists: !!reasonPersona,\r\n      reasonModalKimlerIcinTitle: reasonHasKimlerTitle,\r\n      reasonModalPersonaItemCount: reasonItems >= 3,\r\n      reasonModalPersonaNoStockLeak: reasonTextLeak === false,\r\n      setupModalPersonaFitExists: !!setupPersona,\r\n      setupModalKimlerIcinTitle: setupHasKimlerTitle,\r\n      setupModalPersonaItemCount: setupItems >= 2,\r\n      setupModalPersonaNoStockLeak: setupTextLeak === false,\r\n      productMutationNotExecuted: beforeProducts === afterProducts,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      reasonPersonaItemCount: reasonItems,\r\n      setupPersonaItemCount: setupItems,\r\n      installResult: installResult,\r\n      mutationAllowed: false,\r\n      liveApplyAllowed: false\r\n    };\r\n  }\r\n\r\n  function modalImageGalleryAudit() {\r\n    return modalSliderDataBadgeAudit();\r\n  }\r\n\r\n  function main(opts) {\r\n    opts = opts || {};\r\n    var beforeProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var inst = install();\r\n    var click = opts.clickAudit ? clickAudit({ keepOpen:!!opts.keepOpen, testSetup:!!opts.testSetup }) : null;\r\n    var visual = visualAudit();\r\n    var afterProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var checks = {\r\n      r11MountExists: visual.mountExists,\r\n      r11OwnedRenderer: visual.owned,\r\n      cardCount3: visual.cardCount === 3,\r\n      productImagesVisible: visual.productImagesVisible,\r\n      mainGoalCount8: visual.mainGoalCount === 8,\r\n      altPurposeCountStill24: visual.totalSubGoalCount === 24,\r\n      dualScoreVisible: visual.dualScoreVisible,\r\n      whyButtonsAvailable: visual.whyTriggerCount >= 3,\r\n      setupButtonsAvailable: visual.setupTriggerCount >= 3,\r\n      inlineSetupNotRendered: visual.inlineSetupRendered === false,\r\n      modalTitleReadable: visual.modalTitleReadable,\r\n      noStockLabelsInRecoCards: visual.noStockLabelsInRecoCards,\r\n      fpNotFallback100: visual.rows.every(function(r){ return Number(r.fp) < 100; }),\r\n      fpScoreFromFp14Evidence: visual.rows.every(function(r){ return String(r.fpSource || '').indexOf('scoreFp14ProductEvidence') > -1 && Number(r.criteriaCount || 0) >= 10; }),\r\n      purposeScoreFromP61Matrix: visual.rows.every(function(r){ return r.purposeSource === 'P61_EXACT_24x9_WEIGHT_MATRIX_CONTEXTUAL_FP14_SIGNALS'; }),\r\n      matrixMatchesUploadedP61Preview: matrixContractAudit().checks.exactUploadedWeights === true,\r\n      productPurposePriceWeightLockedLow: matrixContractAudit().checks.productPurposePriceWeightLow === true,\r\n      legacySetupHiddenOrAbsent: visual.legacySetupHidden,\r\n      reasonModalOpens: click ? click.checks.reasonButtonOpensModal : true,\r\n      setupModalOpens: click ? click.checks.setupButtonOpensModal : true,\r\n      noShopifyWrite: true,\r\n      noProductMutation: beforeProducts === afterProducts,\r\n      noScoreMutation: true,\r\n      noRankingMutationOutsideLocalView: true,\r\n      noCartMutation: true,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      mode: 'PRODUCT_PURPOSE_SCALE_GUARD_P61_MATRIX_CANONICAL_FP14_NO_SHOPIFY_WRITE',\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      installResult: inst,\r\n      visualRead: visual,\r\n      clickAudit: click,\r\n      selected: { mainKey:state.mainKey, mainLabel:currentMain().label, subKey:state.subKey, subLabel:currentSub().label },\r\n      meanings: {\r\n        purposeScore: 'Ama\u00E7 Uyumu: se\u00E7ili ana/alt ama\u00E7 i\u00E7in teknik uygunluk.',\r\n        fpScore: 'Genel F/P Skoru: 14 kriterli genel Panel LED F/P evidencesinden gelir; ama\u00E7 skorunu de\u011Fi\u015Ftirmez.',\r\n        roleScore: 'Rol uygunlu\u011Fu: \u00FCr\u00FCn ailesi + \u0131\u015F\u0131k rol\u00FC teknik kan\u0131t\u0131; ama\u00E7 veya F/P yerine ge\u00E7mez.'\r\n      },\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false,\r\n      canExecuteApply: false,\r\n      shopifyWriteExecuted: false,\r\n      productMutationExecuted: false,\r\n      scoreMutationExecuted: false,\r\n      rankingMutationExecuted: false,\r\n      setupMutationExecuted: false,\r\n      commerceMutationExecuted: false,\r\n      cartMutationExecuted: false,\r\n      sharePngQrTouchExecuted: false,\r\n      nextPhase: 'PANEL-V4-UI-RECO-18H-FULL-MODAL-REGRESSION-SMOKE'\r\n    };\r\n  }\r\n\r\n  function noLoopMonitor(ms) {\r\n    ms = Number(ms || 1800);\r\n    install();\r\n    return new Promise(function(resolve){\r\n      var start = Date.now();\r\n      var samples = [];\r\n      var timer = W.setInterval(function(){\r\n        var v = visualAudit();\r\n        samples.push({\r\n          t: Date.now()-start,\r\n          cardCount: v.cardCount,\r\n          productImageCount: v.productImageCount,\r\n          whyTriggerCount: v.whyTriggerCount,\r\n          setupTriggerCount: v.setupTriggerCount,\r\n          modalOpen: v.modalOpen ? 1 : 0\r\n        });\r\n        if (Date.now()-start >= ms) {\r\n          W.clearInterval(timer);\r\n          var unique = [];\r\n          samples.forEach(function(s){\r\n            var key = [s.cardCount,s.productImageCount,s.whyTriggerCount,s.setupTriggerCount,s.modalOpen].join('/');\r\n            if (unique.indexOf(key) < 0) unique.push(key);\r\n          });\r\n          var final = visualAudit();\r\n          resolve({\r\n            phase: PHASE,\r\n            version: VERSION,\r\n            ok: final.cardCount === 3 && final.productImagesVisible && unique.length <= 2 && !samples.some(function(s){ return s.cardCount === 0 || s.productImageCount === 0; }),\r\n            ms: ms,\r\n            sampleCount: samples.length,\r\n            samples: samples,\r\n            uniqueStateCount: unique.length,\r\n            uniqueStates: unique,\r\n            zeroStateSeen: samples.some(function(s){ return s.cardCount === 0 || s.productImageCount === 0; }),\r\n            final: final\r\n          });\r\n        }\r\n      }, 120);\r\n    });\r\n  }\r\n\r\n  function selectGoalSub(mainKey, subKey) {\r\n    if (mainKey) state.mainKey = mainKey;\r\n    if (subKey) {\r\n      state.subKey = subKey;\r\n      state.mainKey = mainForSub(subKey).key;\r\n    } else {\r\n      var g = currentMain();\r\n      state.subKey = g.subs[0].key;\r\n    }\r\n    state.modal = null;\r\n    return render();\r\n  }\r\n\r\n  function scoreSourceAudit() {\r\n    var original = { mainKey: state.mainKey, subKey: state.subKey, modal: state.modal };\r\n    var intents = [\r\n      'content_creator_face_key',\r\n      'ecommerce_catalog_white_background',\r\n      'clinical_aesthetic_medical',\r\n      'education_webinar_online_course',\r\n      'rgb_creative_fx',\r\n      'brand_color_background_live',\r\n      'mobile_outdoor_interview',\r\n      'beginner_budget_home_studio'\r\n    ];\r\n    var rowsByIntent = intents.map(function(key){\r\n      state.subKey = key;\r\n      state.mainKey = mainForSub(key).key;\r\n      var rows = recommendationRows(key);\r\n      return {\r\n        subKey: key,\r\n        mainKey: state.mainKey,\r\n        titles: rows.map(function(r){ return r.title; }),\r\n        keys: rows.map(function(r){ return r.key; }),\r\n        purposeScores: rows.map(function(r){ return r.purposeScore; }),\r\n        fpScores: rows.map(function(r){ return r.fpScore; }),\r\n        sources: rows.map(function(r){ return r.scoreSource; })\r\n      };\r\n    });\r\n    state.mainKey = original.mainKey;\r\n    state.subKey = original.subKey;\r\n    state.modal = original.modal;\r\n    render();\r\n\r\n    var signatures = rowsByIntent.map(function(x){ return x.keys.join('|'); });\r\n    var unique = [];\r\n    signatures.forEach(function(sig){ if (unique.indexOf(sig) < 0) unique.push(sig); });\r\n    var flatSources = [];\r\n    rowsByIntent.forEach(function(x){ (x.sources || []).forEach(function(src){ flatSources.push(src || {}); }); });\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: unique.length >= 3 && flatSources.every(function(src){ return src.purpose === 'P61_EXACT_24x9_WEIGHT_MATRIX_CONTEXTUAL_FP14_SIGNALS'; }) && flatSources.every(function(src){ return String(src.fp || '').indexOf('scoreFp14ProductEvidence') > -1 && Number(src.criteriaCount || 0) >= 10; }),\r\n      checkedIntentCount: intents.length,\r\n      uniqueTop3SignatureCount: unique.length,\r\n      rowsByIntent: rowsByIntent,\r\n      checks: {\r\n        purposeScoreFromP61Matrix: flatSources.every(function(src){ return src.purpose === 'P61_EXACT_24x9_WEIGHT_MATRIX_CONTEXTUAL_FP14_SIGNALS'; }),\r\n        fpScoreFromFp14Evidence: flatSources.every(function(src){ return String(src.fp || '').indexOf('scoreFp14ProductEvidence') > -1 && Number(src.criteriaCount || 0) >= 10; }),\r\n        recommendationsChangeAcrossIntents: unique.length >= 3\r\n      }\r\n    };\r\n  }\r\n\r\n  function full24IntentAudit() {\r\n    var original = { mainKey: state.mainKey, subKey: state.subKey, modal: state.modal };\r\n    var allSubs = [];\r\n    taxonomy.forEach(function(g){ (g.subs || []).forEach(function(s){ allSubs.push({ mainKey:g.key, mainLabel:g.label, subKey:s.key, subLabel:s.label }); }); });\r\n    var rowsByIntent = allSubs.map(function(item){\r\n      state.mainKey = item.mainKey;\r\n      state.subKey = item.subKey;\r\n      var rows = recommendationRows(item.subKey);\r\n      return {\r\n        mainKey: item.mainKey,\r\n        mainLabel: item.mainLabel,\r\n        subKey: item.subKey,\r\n        subLabel: item.subLabel,\r\n        titles: rows.map(function(r){ return r.title; }),\r\n        keys: rows.map(function(r){ return r.key; }),\r\n        families: rows.map(function(r){ return r.family; }),\r\n        purposeScores: rows.map(function(r){ return r.purposeScore; }),\r\n        fpScores: rows.map(function(r){ return r.fpScore; }),\r\n        roleScores: rows.map(function(r){ return r.roleScore; }),\r\n        sources: rows.map(function(r){ return r.scoreSource; })\r\n      };\r\n    });\r\n    state.mainKey = original.mainKey;\r\n    state.subKey = original.subKey;\r\n    state.modal = original.modal;\r\n    render();\r\n\r\n    var signatures = rowsByIntent.map(function(x){ return x.keys.join('|'); });\r\n    var unique = [];\r\n    signatures.forEach(function(sig){ if (unique.indexOf(sig) < 0) unique.push(sig); });\r\n    var flatSources = [];\r\n    rowsByIntent.forEach(function(x){ (x.sources || []).forEach(function(src){ flatSources.push(src || {}); }); });\r\n\r\n    var fpByProduct = {};\r\n    rowsByIntent.forEach(function(x){\r\n      (x.keys || []).forEach(function(key, i){\r\n        if (!fpByProduct[key]) fpByProduct[key] = [];\r\n        fpByProduct[key].push(Number((x.fpScores || [])[i] || 0));\r\n      });\r\n    });\r\n    var fpInvariant = Object.keys(fpByProduct).every(function(key){\r\n      var arr = fpByProduct[key].filter(function(v){ return isFinite(v); });\r\n      if (arr.length <= 1) return true;\r\n      var min = Math.min.apply(Math, arr), max = Math.max.apply(Math, arr);\r\n      return (max - min) <= 0.2;\r\n    });\r\n\r\n    var purposeSpreadByIntent = rowsByIntent.map(function(x){\r\n      var vals = (x.purposeScores || []).map(Number).filter(function(v){ return isFinite(v); });\r\n      return vals.length ? Math.max.apply(Math, vals) - Math.min.apply(Math, vals) : 0;\r\n    });\r\n    var avgPurposeSpread = purposeSpreadByIntent.length ? purposeSpreadByIntent.reduce(function(a,b){ return a+b; }, 0) / purposeSpreadByIntent.length : 0;\r\n\r\n    var checks = {\r\n      checkedAll24AltPurposes: rowsByIntent.length === 24,\r\n      eachIntentReturns3Cards: rowsByIntent.every(function(x){ return x.keys.length === 3; }),\r\n      purposeScoreFromP61Matrix: flatSources.every(function(src){ return src.purpose === 'P61_EXACT_24x9_WEIGHT_MATRIX_CONTEXTUAL_FP14_SIGNALS'; }),\r\n      fpScoreFromFp14Evidence: flatSources.every(function(src){ return String(src.fp || '').indexOf('scoreFp14ProductEvidence') > -1 && Number(src.criteriaCount || 0) >= 10; }),\r\n      fpScoreInvariantByProductAcrossIntents: fpInvariant,\r\n      recommendationsChangeAcrossAll24: unique.length >= 6,\r\n      visiblePurposeSpreadExists: avgPurposeSpread >= 2.5,\r\n      exactUploadedWeights: matrixContractAudit().checks.exactUploadedWeights,\r\n      productPurposePriceWeightLow: matrixContractAudit().checks.productPurposePriceWeightLow,\r\n      catalogFirstIsNotLowPower80: ecommerceCalibrationAudit().checks.catalogFirstIsNotLowPower80,\r\n      productVideoFirstIsNotLowPower80: ecommerceCalibrationAudit().checks.productVideoFirstIsNotLowPower80\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checkedIntentCount: rowsByIntent.length,\r\n      uniqueTop3SignatureCount: unique.length,\r\n      averagePurposeTop3Spread: round1(avgPurposeSpread),\r\n      rowsByIntent: rowsByIntent,\r\n      checks: checks\r\n    };\r\n  }\r\n\r\n\r\n  function purposeWeightBarsMatchSignal(box) {\r\n    if (!box) return false;\r\n    var nodes = Array.prototype.slice.call(box.querySelectorAll('[data-gdx-r11-purpose-weight-item=\"1\"]'));\r\n    if (!nodes.length) return false;\r\n    return nodes.every(function(node){\r\n      var strong = node.querySelector('[data-gdx-r11-purpose-weight-score=\"1\"], .gdx-r11-purpose-weight-bars strong');\r\n      var bar = node.querySelector('[data-gdx-r11-purpose-weight-bar=\"1\"], .gdx-r11-purpose-weight-bars b');\r\n      var attrScore = Number(node.getAttribute('data-signal-score') || '');\r\n      var rawScoreText = String(strong && strong.textContent || '').split('/')[0].replace(/[^0-9.]/g, '');\r\n      var score = isFinite(attrScore) && attrScore >= 0 ? attrScore : Number(rawScoreText);\r\n      var width = bar ? Number(String(bar.style.width || '').replace('%', '').replace(/[^0-9.]/g, '')) : NaN;\r\n      return isFinite(score) && isFinite(width) && Math.abs(score - width) <= 0.1;\r\n    });\r\n  }\r\n\r\n\r\n  function purposeWeightNarrativeAudit() {\r\n    var beforeProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var installResult = install();\r\n    var rows = state.lastRows && state.lastRows.length ? state.lastRows : recommendationRows(state.subKey);\r\n    if (rows[0]) {\r\n      state.modal = { type:'reason', key: rows[0].key };\r\n      render();\r\n    }\r\n    var r = root();\r\n    var modal = r ? r.querySelector('[data-gdx-r11-modal-type=\"reason\"]') : null;\r\n    var box = modal ? modal.querySelector('[data-gdx-r11-purpose-weight-narrative=\"1\"]') : null;\r\n    var items = box ? box.querySelectorAll('[data-gdx-r11-purpose-weight-item=\"1\"]').length : 0;\r\n    var text = box ? lower(box.textContent || '') : '';\r\n    var balancedBox = modal ? modal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : null;\r\n    var balancedText = balancedBox ? lower(balancedBox.textContent || '') : '';\r\n    var combinedSeparationText = text + ' ' + balancedText;\r\n    var afterProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var checks = {\r\n      reasonModalPurposeWeightNarrativeExists: !!box,\r\n      reasonModalPurposeWeightItemCount: items >= 3 && items <= 5,\r\n      reasonModalPurposeWeightLeadExists: !!(box && box.querySelector('[data-gdx-r11-purpose-weight-lead=\"1\"]')),\r\n      reasonModalPurposeWeightNoStockLeak: !/stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/.test(text),\r\n      purposeWeightBarsMatchSignal: purposeWeightBarsMatchSignal(box),\r\n      purposeWeightMentionsFpSeparation: /f\\/p|fp14|14 kriterli|ama\u00E7 uyumu|ama\u00E7 puan\u0131ndan ayr\u0131|ayr\u0131 yorumlan\u0131r/.test(combinedSeparationText),\r\n      productMutationNotExecuted: beforeProducts === afterProducts,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      purposeWeightItemCount: items,\r\n      installResult: installResult,\r\n      mutationAllowed: false,\r\n      liveApplyAllowed: false\r\n    };\r\n  }\r\n\r\n\r\n  function balancedPurposeFpNarrativeAudit() {\r\n    var beforeProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var installResult = install();\r\n    var rows = state.lastRows && state.lastRows.length ? state.lastRows : recommendationRows(state.subKey);\r\n    if (rows[0]) {\r\n      state.modal = { type:'reason', key: rows[0].key };\r\n      render();\r\n    }\r\n    var r = root();\r\n    var modal = r ? r.querySelector('[data-gdx-r11-modal-type=\"reason\"]') : null;\r\n    var box = modal ? modal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : null;\r\n    var items = box ? box.querySelectorAll('[data-gdx-r11-balanced-fp-item=\"1\"]').length : 0;\r\n    var text = box ? lower(box.textContent || '') : '';\r\n    var afterProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var checks = {\r\n      reasonModalBalancedFpNarrativeExists: !!box,\r\n      reasonModalBalancedFpItemCount: items === 3,\r\n      balancedFpLeadExists: !!(box && box.querySelector('[data-gdx-r11-balanced-fp-lead=\"1\"]')),\r\n      balancedFpMentionsPurposeScore: /ama\u00E7 uyumu|teknik uygunluk/.test(text),\r\n      balancedFpMentionsFpEvidence: /f\\/p|14 kriterli|fp14/.test(text),\r\n      balancedFpMentionsSeparation: /ayr\u0131|ba\u011F\u0131ms\u0131z|yerine ge\u00E7mez|de\u011Fi\u015Ftirmez/.test(text),\r\n      balancedFpNoStockLeak: !/stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/.test(text),\r\n      noDuplicateScoreReadPanel: !(modal && modal.querySelector('.gdx-r11-modal-bars')),\r\n      productMutationNotExecuted: beforeProducts === afterProducts,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      balancedFpItemCount: items,\r\n      installResult: installResult,\r\n      mutationAllowed: false,\r\n      liveApplyAllowed: false\r\n    };\r\n  }\r\n\r\n\r\n  function setupIntelligenceAudit() {\r\n    var beforeProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var installResult = install();\r\n    var rows = state.lastRows && state.lastRows.length ? state.lastRows : recommendationRows(state.subKey);\r\n    if (rows[0]) {\r\n      state.modal = { type:'setup', key: rows[0].key };\r\n      render();\r\n    }\r\n    var r = root();\r\n    var modal = r ? r.querySelector('[data-gdx-r11-modal-type=\"setup\"]') : null;\r\n    var box = modal ? modal.querySelector('[data-gdx-r11-setup-intelligence=\"1\"]') : null;\r\n    var alts = box ? box.querySelectorAll('[data-gdx-r11-setup-alt=\"1\"]').length : 0;\r\n    var text = box ? lower(box.textContent || '') : '';\r\n    var afterProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var checks = {\r\n      setupModalAlternativeSetupsExist: !!box,\r\n      setupModalAlternativeSetupCount: alts >= 3,\r\n      setupModalFamilyUsageNoteExists: !!(box && box.querySelector('[data-gdx-r11-setup-family-note=\"1\"]')),\r\n      setupModalRoleExplanationExists: !!(box && box.querySelector('[data-gdx-r11-setup-role-explanation=\"1\"]')),\r\n      setupModalNoStockLeak: !/stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/.test(text),\r\n      productMutationNotExecuted: beforeProducts === afterProducts,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      setupAlternativeCount: alts,\r\n      installResult: installResult,\r\n      mutationAllowed: false,\r\n      liveApplyAllowed: false\r\n    };\r\n  }\r\n\r\n\r\n  function sentenceDuplicateCount(text) {\r\n    var seen = {};\r\n    var dup = 0;\r\n    String(text || '').split(/[.!?]+/).forEach(function (part) {\r\n      var t = lower(part).replace(/[^a-z0-9\u011F\u00FC\u015F\u00F6\u00E7\u0131\u0130\u011E\u00DC\u015E\u00D6\u00C7\\/]+/g, ' ').replace(/\\s+/g, ' ').trim();\r\n      if (!t || t.length < 36) return;\r\n      if (seen[t]) dup += 1;\r\n      seen[t] = true;\r\n    });\r\n    return dup;\r\n  }\r\n\r\n  function phraseCount(text, phrase) {\r\n    var hay = lower(text || '');\r\n    var needle = lower(phrase || '');\r\n    if (!needle) return 0;\r\n    return hay.split(needle).length - 1;\r\n  }\r\n\r\n  function narrativeDedupGuardAudit() {\r\n    var beforeProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n    var installResult = install();\r\n    var rows = state.lastRows && state.lastRows.length ? state.lastRows : recommendationRows(state.subKey);\r\n    if (rows[0]) {\r\n      state.modal = { type:'reason', key: rows[0].key };\r\n      render();\r\n    }\r\n    var r = root();\r\n    var reasonModal = r ? r.querySelector('[data-gdx-r11-modal-type=\"reason\"]') : null;\r\n    var reasonTextAll = reasonModal ? (reasonModal.textContent || '') : '';\r\n    var reasonLower = lower(reasonTextAll);\r\n    var reasonDupCount = sentenceDuplicateCount(reasonTextAll);\r\n    var reasonHotRepeats = {\r\n      selectedMainAlt: phraseCount(reasonTextAll, 'se\u00E7ili ana/alt ama\u00E7'),\r\n      productFamilyPowerBand: phraseCount(reasonTextAll, '\u00FCr\u00FCn ailesi, g\u00FC\u00E7 band\u0131'),\r\n      purposeScoreDoesNotChange: phraseCount(reasonTextAll, 'ama\u00E7 skorunu de\u011Fi\u015Ftirmez')\r\n    };\r\n\r\n    if (rows[0]) {\r\n      state.modal = { type:'setup', key: rows[0].key };\r\n      render();\r\n    }\r\n    r = root();\r\n    var setupModal = r ? r.querySelector('[data-gdx-r11-modal-type=\"setup\"]') : null;\r\n    var setupTextAll = setupModal ? (setupModal.textContent || '') : '';\r\n    var setupLower = lower(setupTextAll);\r\n    var setupDupCount = sentenceDuplicateCount(setupTextAll);\r\n    var afterProducts = apiProducts().map(function(p){ return productKey(p); }).join('|');\r\n\r\n    var checks = {\r\n      reasonModalDedupGuardActive: !!reasonModal,\r\n      reasonModalDuplicateSentenceReduced: reasonDupCount <= 1 && reasonHotRepeats.selectedMainAlt <= 1 && reasonHotRepeats.productFamilyPowerBand <= 1 && reasonHotRepeats.purposeScoreDoesNotChange === 0,\r\n      setupModalDedupGuardActive: !!setupModal,\r\n      setupModalDuplicateSentenceReduced: setupDupCount <= 1,\r\n      reasonModalNoStockLeak: !/stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/.test(reasonLower),\r\n      setupModalNoStockLeak: !/stok|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|available/.test(setupLower),\r\n      productMutationNotExecuted: beforeProducts === afterProducts,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(k){ return checks[k] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      reasonDuplicateSentenceCount: reasonDupCount,\r\n      setupDuplicateSentenceCount: setupDupCount,\r\n      reasonHotRepeats: reasonHotRepeats,\r\n      installResult: installResult,\r\n      mutationAllowed: false,\r\n      liveApplyAllowed: false\r\n    };\r\n  }\r\n\r\n\r\n  function r30AR4ProductSignature() {\r\n    try {\r\n      return JSON.stringify(\r\n        apiProducts().map(function (product, index) {\r\n          return {\r\n            index: index,\r\n            key: product &&\r\n              (\r\n                product.key ||\r\n                product.handle ||\r\n                product.id ||\r\n                product.title\r\n              ),\r\n            title: product && product.title,\r\n            price: product && product.price\r\n          };\r\n        })\r\n      );\r\n    } catch (ignore) {\r\n      return 'product_signature_unavailable';\r\n    }\r\n  }\r\n\r\n  function r30AR4Visible(element) {\r\n    if (!element) return false;\r\n\r\n    var style =\r\n      W.getComputedStyle\r\n        ? W.getComputedStyle(element)\r\n        : null;\r\n\r\n    var rect =\r\n      element.getBoundingClientRect\r\n        ? element.getBoundingClientRect()\r\n        : null;\r\n\r\n    return !!(\r\n      !element.hidden &&\r\n      style &&\r\n      style.display !== 'none' &&\r\n      style.visibility !== 'hidden' &&\r\n      Number(style.opacity) !== 0 &&\r\n      rect &&\r\n      rect.width > 0 &&\r\n      rect.height > 0\r\n    );\r\n  }\r\n\r\n  function r30AR4Audit() {\r\n    var elementCountBefore =\r\n      D.querySelectorAll('*').length;\r\n\r\n    var activeElementBefore =\r\n      D.activeElement;\r\n\r\n    var scrollXBefore =\r\n      W.scrollX;\r\n\r\n    var scrollYBefore =\r\n      W.scrollY;\r\n\r\n    var productsBefore =\r\n      r30AR4ProductSignature();\r\n\r\n    var manifest =\r\n      r30AR4EnsureManifest(false);\r\n\r\n    var templates =\r\n      manifest &&\r\n      Array.isArray(\r\n        manifest.templates\r\n      )\r\n        ? manifest.templates\r\n        : [];\r\n\r\n    var templateKeys =\r\n      templates.map(function (item) {\r\n        return item.templateKey;\r\n      });\r\n\r\n    var cdnSelectionKeys =\r\n      templates.map(function (item) {\r\n        return item.cdnSelectionKey;\r\n      });\r\n\r\n    var schematicKeys =\r\n      templates.map(function (item) {\r\n        return item.schematicKey;\r\n      });\r\n\r\n    var setupModals =\r\n      Array.prototype.slice.call(\r\n        D.querySelectorAll(\r\n          '.gdx-r11-modal[data-gdx-r11-modal-type=\"setup\"]'\r\n        )\r\n      ).filter(r30AR4Visible);\r\n\r\n    var modal =\r\n      setupModals[0] || null;\r\n\r\n    var panel =\r\n      modal &&\r\n      modal.querySelector(\r\n        '.gdx-r11-modal-panel.is-setup'\r\n      );\r\n\r\n    var hosts =\r\n      panel\r\n        ? Array.prototype.slice.call(\r\n            panel.querySelectorAll(\r\n              '[data-gdx-panel-r30a-setup-visual=\"1\"]'\r\n            )\r\n          )\r\n        : [];\r\n\r\n    var host =\r\n      hosts[0] || null;\r\n\r\n    var schematics =\r\n      host\r\n        ? host.querySelectorAll(\r\n            '[data-gdx-panel-r30a-schematic=\"1\"]'\r\n          )\r\n        : [];\r\n\r\n    var cdnLayers =\r\n      host\r\n        ? host.querySelectorAll(\r\n            '[data-gdx-panel-r30a-cdn-layer=\"1\"]'\r\n          )\r\n        : [];\r\n\r\n    var cdnImages =\r\n      host\r\n        ? host.querySelectorAll(\r\n            '[data-gdx-panel-r30a-cdn-visual=\"1\"]'\r\n          )\r\n        : [];\r\n\r\n    var allCdnImages =\r\n      D.querySelectorAll(\r\n        '[data-gdx-panel-r30a-cdn-visual=\"1\"]'\r\n      );\r\n\r\n    var activeTemplateKey =\r\n      r30AR4Clean(\r\n        host &&\r\n        host.getAttribute(\r\n          'data-gdx-panel-r30a-template-key'\r\n        )\r\n      );\r\n\r\n    var activeScenarioKey =\r\n      r30AR4Clean(\r\n        host &&\r\n        host.getAttribute(\r\n          'data-gdx-panel-r30a-scenario-key'\r\n        )\r\n      );\r\n\r\n    var hostSelectionKey =\r\n      r30AR4Clean(\r\n        host &&\r\n        host.getAttribute(\r\n          'data-gdx-panel-r30a-active-selection-key'\r\n        )\r\n      );\r\n\r\n    var hostState =\r\n      r30AR4Clean(\r\n        host &&\r\n        host.getAttribute(\r\n          'data-gdx-panel-r30a-state'\r\n        )\r\n      );\r\n\r\n    var activeImg =\r\n      cdnImages[0] || null;\r\n\r\n    var activeUrl =\r\n      r30AR4Clean(\r\n        activeImg &&\r\n        (\r\n          activeImg.getAttribute(\r\n            'data-gdx-panel-r30a-src'\r\n          ) ||\r\n          activeImg.getAttribute('src')\r\n        )\r\n      );\r\n\r\n    var currentSelection =\r\n      r28ReadOnlySelection() || {};\r\n\r\n    var currentSelectionKey =\r\n      r30AR4Clean(\r\n        currentSelection.activeSelectionKey\r\n      );\r\n\r\n    var currentContext =\r\n      r29R5ResolveContext();\r\n\r\n    var currentContextScenarioKey =\r\n      r30AR4Clean(\r\n        currentContext &&\r\n        currentContext.resolvedScenario &&\r\n        currentContext.resolvedScenario\r\n          .scenarioKey\r\n      );\r\n\r\n    var noraBoxes =\r\n      panel\r\n        ? panel.querySelectorAll(\r\n            '[data-gdx-panel-r27-a8-r2=\"1\"]' +\r\n            '[data-gdx-panel-r29-r5-source-owned=\"1\"]'\r\n          )\r\n        : [];\r\n\r\n    var nativeUpper =\r\n      modal\r\n        ? modal.querySelectorAll(\r\n            '.gdx-r11-modal-close' +\r\n            '[data-gdx-r11-action=\"close-modal\"]'\r\n          )\r\n        : [];\r\n\r\n    var floatingUpper =\r\n      modal\r\n        ? modal.querySelectorAll(\r\n            '[data-gdx-panel-r18-r7-floating-close=\"1\"]'\r\n          )\r\n        : [];\r\n\r\n    var bottomClose =\r\n      modal\r\n        ? modal.querySelectorAll(\r\n            '[data-gdx-panel-r18-r8-r1-bottom-close=\"1\"]'\r\n          )\r\n        : [];\r\n\r\n    var backdrop =\r\n      modal\r\n        ? modal.querySelectorAll(\r\n            '.gdx-r11-modal-backdrop' +\r\n            '[data-gdx-r11-action=\"close-modal\"]'\r\n          )\r\n        : [];\r\n\r\n    var cartBox =\r\n      modal &&\r\n      modal.querySelector(\r\n        '[data-gdx-panel-r18-r7-cart=\"1\"]'\r\n      );\r\n\r\n    var cartButton =\r\n      modal &&\r\n      modal.querySelector(\r\n        '[data-gdx-panel-r18-r7-cart-button=\"1\"]'\r\n      );\r\n\r\n    var activeState =\r\n      W.GDX_PANEL_V4_R30A_ACTIVE_VISUAL_STATE ||\r\n      {};\r\n\r\n    var allUrls =\r\n      templates.reduce(function (result, item) {\r\n        result.push(\r\n          r30AR4Clean(item.cdnUrl)\r\n        );\r\n        result.push(\r\n          r30AR4Clean(item.schematicUrl)\r\n        );\r\n        return result;\r\n      }, []);\r\n\r\n    var hasBase64 =\r\n      allUrls.some(function (url) {\r\n        return /^data:/i.test(url);\r\n      });\r\n\r\n    var stateSet = [\r\n      'schematic_only',\r\n      'cdn_pending',\r\n      'cdn_ready',\r\n      'cdn_error_hold',\r\n      'cdn_error_fallback'\r\n    ];\r\n\r\n    var productsAfter =\r\n      r30AR4ProductSignature();\r\n\r\n    var elementCountAfter =\r\n      D.querySelectorAll('*').length;\r\n\r\n    var checks = {\r\n      auditRan:\r\n        true,\r\n\r\n      r30AR4RuntimeReady:\r\n        W.GDX_PANEL_V4_R30A_R4_READY ===\r\n        true,\r\n\r\n      contractReady:\r\n        !!W.GDX_PANEL_V4_R30A_R4_CONTRACT,\r\n\r\n      canonicalManifestPublished:\r\n        !!manifest,\r\n\r\n      manifestTemplateCount72:\r\n        templates.length === 72,\r\n\r\n      manifestSchematicSlotCount72:\r\n        manifest &&\r\n        manifest.schematicSlotCount === 72,\r\n\r\n      manifestCdnSlotCount72:\r\n        manifest &&\r\n        manifest.cdnSlotCount === 72,\r\n\r\n      manifestIdealAssetSlotCount144:\r\n        manifest &&\r\n        manifest.idealAssetSlotCount === 144,\r\n\r\n      no1368ProductExpansion:\r\n        templates.length !==\r\n        19 * 24 * 3,\r\n\r\n      templateKeysUnique72:\r\n        templateKeys.length === 72 &&\r\n        templateKeys.filter(function (value, index, array) {\r\n          return array.indexOf(value) === index;\r\n        }).length === 72,\r\n\r\n      cdnSelectionKeysUnique72:\r\n        cdnSelectionKeys.length === 72 &&\r\n        cdnSelectionKeys.filter(function (value, index, array) {\r\n          return array.indexOf(value) === index;\r\n        }).length === 72,\r\n\r\n      schematicKeysUnique72:\r\n        schematicKeys.length === 72 &&\r\n        schematicKeys.filter(function (value, index, array) {\r\n          return array.indexOf(value) === index;\r\n        }).length === 72,\r\n\r\n      manifestNoBase64:\r\n        hasBase64 === false,\r\n\r\n      manifestSingleActiveImagePolicy:\r\n        !!(\r\n          manifest &&\r\n          manifest.performanceRules &&\r\n          manifest.performanceRules\r\n            .maxActiveCdnImageNodes === 1\r\n        ),\r\n\r\n      manifestNoHiddenImagePool:\r\n        !!(\r\n          manifest &&\r\n          manifest.performanceRules &&\r\n          manifest.performanceRules\r\n            .noHiddenImagePool\r\n        ),\r\n\r\n      manifestNoInactivePreload:\r\n        !!(\r\n          manifest &&\r\n          manifest.performanceRules &&\r\n          manifest.performanceRules\r\n            .noInactivePreload\r\n        ),\r\n\r\n      exactlyOneRenderedSetupModal:\r\n        setupModals.length === 1,\r\n\r\n      setupPanelDetected:\r\n        !!panel,\r\n\r\n      exactlyOneVisualHost:\r\n        hosts.length === 1,\r\n\r\n      visualHostInsideSetupPanel:\r\n        !!(\r\n          panel &&\r\n          host &&\r\n          panel.contains(host)\r\n        ),\r\n\r\n      schematicLayerMatchesCanonicalCdnPolicy:\r\n        activeUrl\r\n          ? schematics.length === 0\r\n          : schematics.length === 1,\r\n\r\n      maximumOneCdnLayer:\r\n        cdnLayers.length <= 1,\r\n\r\n      maximumOneActiveCdnImage:\r\n        cdnImages.length <= 1 &&\r\n        allCdnImages.length <= 1,\r\n\r\n      noHiddenImagePoolInDom:\r\n        allCdnImages.length <= 1,\r\n\r\n      activeTemplateKeyReadable:\r\n        !!activeTemplateKey,\r\n\r\n      activeTemplateExistsInManifest:\r\n        templates.some(function (item) {\r\n          return item.templateKey ===\r\n            activeTemplateKey;\r\n        }),\r\n\r\n      activeScenarioKeyReadable:\r\n        !!activeScenarioKey,\r\n\r\n      hostSelectionMatchesCurrentSelection:\r\n        !!currentSelectionKey &&\r\n        hostSelectionKey ===\r\n          currentSelectionKey,\r\n\r\n      activeScenarioMatchesCurrentContext:\r\n        !currentContextScenarioKey ||\r\n        activeScenarioKey ===\r\n          currentContextScenarioKey,\r\n\r\n      canonicalStateReadable:\r\n        stateSet.indexOf(\r\n          hostState\r\n        ) > -1,\r\n\r\n      stateSnapshotMatchesHost:\r\n        r30AR4Clean(\r\n          activeState.state\r\n        ) ===\r\n          hostState &&\r\n        r30AR4Clean(\r\n          activeState.activeTemplateKey\r\n        ) ===\r\n          activeTemplateKey,\r\n\r\n      emptyUrlKeepsSchematicOnly:\r\n        activeUrl\r\n          ? true\r\n          : (\r\n              hostState ===\r\n                'schematic_only' &&\r\n              cdnImages.length === 0 &&\r\n              schematics.length === 1 &&\r\n              schematics[0].hidden ===\r\n                false\r\n            ),\r\n\r\n      pendingHasNoLegacySchematicNodeAndReservesCdnFrame:\r\n        hostState !==\r\n          'cdn_pending' ||\r\n        (\r\n          !!activeUrl &&\r\n          schematics.length === 0 &&\r\n          cdnLayers.length === 1 &&\r\n          cdnLayers[0].hidden ===\r\n            false\r\n        ),\r\n\r\n      arbitraryTimeoutFallbackRetired:\r\n        !!(\r\n          W.GDX_PANEL_V4_R30A_R4_CONTRACT &&\r\n          W.GDX_PANEL_V4_R30A_R4_CONTRACT\r\n            .timeoutFallbackMs ===\r\n              0\r\n        ),\r\n\r\n      canonicalCdnErrorNeverShowsLegacySchematic:\r\n        hostState !==\r\n          'cdn_error_hold' ||\r\n        (\r\n          !!activeUrl &&\r\n          schematics.length === 0 &&\r\n          cdnLayers.length === 1 &&\r\n          cdnLayers[0].hidden ===\r\n            false\r\n        ),\r\n\r\n      noCdnFallbackStillAvailable:\r\n        hostState !==\r\n          'cdn_error_fallback' ||\r\n        (\r\n          !activeUrl &&\r\n          schematics.length === 1 &&\r\n          schematics[0].hidden ===\r\n            false\r\n        ),\r\n\r\n      readyRequiresCurrentCdnLayerAndNoLegacySchematic:\r\n        hostState !==\r\n          'cdn_ready' ||\r\n        (\r\n          !!activeUrl &&\r\n          cdnImages.length === 1 &&\r\n          cdnLayers.length === 1 &&\r\n          cdnLayers[0].hidden ===\r\n            false &&\r\n          schematics.length === 0\r\n        ),\r\n\r\n      staleRequestGuardReady:\r\n        !!(\r\n          W.GDX_PANEL_V4_R30A_R4_CONTRACT &&\r\n          W.GDX_PANEL_V4_R30A_R4_CONTRACT\r\n            .staleGuard ===\r\n              'requestToken + templateKey'\r\n        ),\r\n\r\n      exactlyOneSetupNoraBox:\r\n        noraBoxes.length === 1,\r\n\r\n      noSecondSetupNoraBox:\r\n        noraBoxes.length === 1,\r\n\r\n      exactlyOneNativeUpperClose:\r\n        nativeUpper.length === 1,\r\n\r\n      floatingUpperCloseRetired:\r\n        floatingUpper.length === 0,\r\n\r\n      exactlyOneBottomClose:\r\n        bottomClose.length === 1,\r\n\r\n      exactlyOneBackdropClose:\r\n        backdrop.length === 1,\r\n\r\n      cartBoxPreserved:\r\n        !!cartBox,\r\n\r\n      cartButtonPreserved:\r\n        !!cartButton,\r\n\r\n      noNewDocumentListenerByR30AR4:\r\n        true,\r\n\r\n      noNewObserverByR30AR4:\r\n        true,\r\n\r\n      noRecurringTimerByR30AR4:\r\n        true,\r\n\r\n      noraPersonaSystemKeptSeparate:\r\n        true,\r\n\r\n      noDomMutationByThisAudit:\r\n        elementCountBefore ===\r\n        elementCountAfter,\r\n\r\n      noFocusMutationByThisAudit:\r\n        D.activeElement ===\r\n        activeElementBefore,\r\n\r\n      noScrollMutationByThisAudit:\r\n        W.scrollX ===\r\n          scrollXBefore &&\r\n        W.scrollY ===\r\n          scrollYBefore,\r\n\r\n      noProductOrderMutationByThisAudit:\r\n        productsBefore ===\r\n        productsAfter,\r\n\r\n      noScoreMutationByThisAudit:\r\n        true,\r\n\r\n      noRankingMutationByThisAudit:\r\n        true,\r\n\r\n      noProductMutationByThisAudit:\r\n        true,\r\n\r\n      noPriceFormatterTouchByThisAudit:\r\n        true,\r\n\r\n      noCartMutationByThisAudit:\r\n        true,\r\n\r\n      noCommerceMutationByThisAudit:\r\n        true,\r\n\r\n      noSetupCopyMutationByThisAudit:\r\n        true,\r\n\r\n      noNoraTextMutationByThisAudit:\r\n        true,\r\n\r\n      noSharePngQrMutationByThisAudit:\r\n        true\r\n    };\r\n\r\n    var failed =\r\n      Object.keys(checks).filter(function (key) {\r\n        return checks[key] !== true;\r\n      });\r\n\r\n    var result = {\r\n      phase:\r\n        R30A_R4_PHASE,\r\n\r\n      version:\r\n        R30A_R4_VERSION,\r\n\r\n      ok:\r\n        failed.length === 0,\r\n\r\n      checks:\r\n        checks,\r\n\r\n      diagnostics: {\r\n        manifest: {\r\n          templateCount:\r\n            templates.length,\r\n          schematicSlotCount:\r\n            manifest\r\n              ? manifest.schematicSlotCount\r\n              : 0,\r\n          cdnSlotCount:\r\n            manifest\r\n              ? manifest.cdnSlotCount\r\n              : 0,\r\n          idealAssetSlotCount:\r\n            manifest\r\n              ? manifest.idealAssetSlotCount\r\n              : 0,\r\n          assignedCdnUrlCount:\r\n            templates.filter(function (item) {\r\n              return !!r30AR4Clean(\r\n                item.cdnUrl\r\n              );\r\n            }).length,\r\n          assignedSchematicUrlCount:\r\n            templates.filter(function (item) {\r\n              return !!r30AR4Clean(\r\n                item.schematicUrl\r\n              );\r\n            }).length\r\n        },\r\n\r\n        activeVisual: {\r\n          templateKey:\r\n            activeTemplateKey,\r\n          scenarioKey:\r\n            activeScenarioKey,\r\n          selectionKey:\r\n            hostSelectionKey,\r\n          currentSelectionKey:\r\n            currentSelectionKey,\r\n          currentContextScenarioKey:\r\n            currentContextScenarioKey,\r\n          state:\r\n            hostState,\r\n          activeUrl:\r\n            activeUrl,\r\n          runtimeState:\r\n            activeState\r\n        },\r\n\r\n        domCounts: {\r\n          setupModals:\r\n            setupModals.length,\r\n          hosts:\r\n            hosts.length,\r\n          schematicLayers:\r\n            schematics.length,\r\n          cdnLayers:\r\n            cdnLayers.length,\r\n          cdnImagesInHost:\r\n            cdnImages.length,\r\n          cdnImagesInDocument:\r\n            allCdnImages.length,\r\n          noraBoxes:\r\n            noraBoxes.length,\r\n          nativeUpper:\r\n            nativeUpper.length,\r\n          floatingUpper:\r\n            floatingUpper.length,\r\n          bottomClose:\r\n            bottomClose.length,\r\n          backdrop:\r\n            backdrop.length\r\n        },\r\n\r\n        sourceContract:\r\n          W.GDX_PANEL_V4_R30A_R4_CONTRACT,\r\n\r\n        failed:\r\n          failed\r\n      },\r\n\r\n      interpretation: {\r\n        decision:\r\n          failed.length === 0\r\n            ? 'R30A-R4 TECHNICAL PASS CANDIDATE. Tek visual host, 72-row canonical manifest, schematic-first fallback, en fazla bir aktif CDN katman\u0131 ve stale request guard do\u011Fruland\u0131.'\r\n            : 'R30A-R4 HOLD. Manifest, active template/context, visual host, fallback, close/cart veya NORA continuity kontrolleri incelenmeli.',\r\n\r\n        next:\r\n          failed.length === 0\r\n            ? 'Manual setup modal visual continuity check'\r\n            : 'HOLD'\r\n      },\r\n\r\n      sealCandidate:\r\n        failed.length === 0\r\n          ? 'PANEL-V4-R30A-R4-SETUP-MODAL-GUARDED-VISUAL-APPLICATION-TECHNICAL-PASS-CANDIDATE'\r\n          : 'HOLD'\r\n    };\r\n\r\n    console.log(\r\n      'R30A-R4 SETUP MODAL GUARDED VISUAL APPLICATION:',\r\n      result\r\n    );\r\n\r\n    return result;\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R30A_R4_READY =\r\n    true;\r\n\r\n  W.GDX_PANEL_V4_R30A_R4_CONTRACT = {\r\n    phase:\r\n      R30A_R4_PHASE,\r\n\r\n    version:\r\n      R30A_R4_VERSION,\r\n\r\n    sourceOwner:\r\n      'assets/panel-led-v4.ui.js / R11 setup modal source renderer',\r\n\r\n    architecture:\r\n      '24 sub-purposes \u00D7 3 setup scenarios = 72 templates',\r\n\r\n    schematicSlots:\r\n      72,\r\n\r\n    cdnSlots:\r\n      72,\r\n\r\n    idealAssetSlots:\r\n      144,\r\n\r\n    activeVisualHostCount:\r\n      1,\r\n\r\n    maxActiveCdnImageNodes:\r\n      1,\r\n\r\n    states: [\r\n      'schematic_only',\r\n      'cdn_pending',\r\n      'cdn_ready',\r\n      'cdn_error_hold',\r\n      'cdn_error_fallback'\r\n    ],\r\n\r\n    staleGuard:\r\n      'requestToken + templateKey',\r\n\r\n    urlPolicy:\r\n      'empty or HTTPS only',\r\n\r\n    fallbackPolicy:\r\n      'canonical_cdn_never_legacy_schematic__schematic_only_without_canonical_cdn',\r\n\r\n    pendingCdnFrameVisible:\r\n      true,\r\n\r\n    canonicalCdnErrorMode:\r\n      'neutral_hold_no_legacy_schematic',\r\n\r\n    timeoutFallbackMs:\r\n      0,\r\n\r\n    newDocumentListener:\r\n      false,\r\n\r\n    newObserver:\r\n      false,\r\n\r\n    recurringTimer:\r\n      false,\r\n\r\n    hiddenImagePool:\r\n      false,\r\n\r\n    preloadInactiveTemplates:\r\n      false,\r\n\r\n    secondSetupNoraBox:\r\n      false,\r\n\r\n    noraPersonaMerged:\r\n      false\r\n  };\r\n\r\n  W.refreshPanelV4R30AR4SetupVisualManifest =\r\n    function () {\r\n      return r30AR4EnsureManifest(\r\n        true\r\n      );\r\n    };\r\n\r\n  W.getPanelV4R30AR4ActiveVisualState =\r\n    function () {\r\n      return W.GDX_PANEL_V4_R30A_ACTIVE_VISUAL_STATE ||\r\n        null;\r\n    };\r\n\r\n  W.debugPanelV4R30AR4SetupModalGuardedVisualApplication =\r\n    r30AR4Audit;\r\n\r\n  W.debugPanelV4UIReco15R11R5CanonicalScoreBinding = main;\r\n  W.debugPanelV4UIReco15R11R5CleanDualScoreModalReplacement = main;\r\n  W.debugPanelV4UIReco15R11R5VisualAudit = visualAudit;\r\n  W.debugPanelV4UIReco15R11R5ClickAudit = clickAudit;\r\n  W.debugPanelV4UIReco15R11R5NoLoopMonitor = noLoopMonitor;\r\n  W.debugPanelV4UIReco15R11R5SelectGoalSub = selectGoalSub;\r\n  W.debugPanelV4UIReco15R11R5RowsForIntent = recommendationRows;\r\n  W.debugPanelV4UIReco15R11R5ScoreSourceAudit = scoreSourceAudit;\r\n  W.debugPanelV4UIReco15R11R5Full24IntentAudit = full24IntentAudit;\r\n  W.debugPanelV4UIReco15R11R5MatrixContractAudit = matrixContractAudit;\r\n  W.debugPanelV4UIReco15R11R5EcommerceCalibrationAudit = ecommerceCalibrationAudit;\r\n  W.debugPanelV4UIReco18BModalImageGalleryPreview = modalImageGalleryAudit;\r\n  W.debugPanelV4UIReco18BR1ModalGalleryDedupUpTo4Fix = modalImageGalleryAudit;\r\n  W.debugPanelV4UIReco18BR2ModalP46SliderDataBadgeFix = modalSliderDataBadgeAudit;\r\n  W.debugPanelV4UIReco18CR1PersonaFitKimlerIcinTitleAuditFix = personaFitAudit;\r\n  W.debugPanelV4UIReco18CPersonaFitKimlerIcinReturn = personaFitAudit;\r\n  W.debugPanelV4UIReco18DPurposeWeightNarrative = purposeWeightNarrativeAudit;\r\n  W.debugPanelV4UIReco18DR1PurposeWeightNarrativeAuditRootFix = purposeWeightNarrativeAudit;\r\n  W.debugPanelV4UIReco18DR2PurposeWeightNarrativeNoStockTermSafeFix = purposeWeightNarrativeAudit;\r\n  W.debugPanelV4UIReco18EBalancedPurposeVsFpNarrative = balancedPurposeFpNarrativeAudit;\r\n  W.debugPanelV4UIReco18ER1DedupePurposeWeightSignalBarFix = balancedPurposeFpNarrativeAudit;\r\n  W.debugPanelV4UIReco18ER1PurposeWeightSignalBarAudit = purposeWeightNarrativeAudit;\r\n  W.debugPanelV4UIReco18ER2PurposeWeightSignalBarAuditParserFix = balancedPurposeFpNarrativeAudit;\r\n  W.debugPanelV4UIReco18ER2PurposeWeightSignalBarAudit = purposeWeightNarrativeAudit;\r\n  W.debugPanelV4UIReco18FSetupIntelligenceExpansion = setupIntelligenceAudit;\r\n  W.debugPanelV4UIReco18GR1NarrativeDedupAuditOwnershipFix = narrativeDedupGuardAudit;\r\n  W.debugPanelV4UIReco18GNarrativeDedupGuard = narrativeDedupGuardAudit;\r\n\r\n  W.debugPanelV4UIReco15R11R4CanonicalScoreBinding = main;\r\n  W.debugPanelV4UIReco15R11R4CleanDualScoreModalReplacement = main;\r\n  W.debugPanelV4UIReco15R11R4VisualAudit = visualAudit;\r\n  W.debugPanelV4UIReco15R11R4ClickAudit = clickAudit;\r\n  W.debugPanelV4UIReco15R11R4NoLoopMonitor = noLoopMonitor;\r\n  W.debugPanelV4UIReco15R11R4SelectGoalSub = selectGoalSub;\r\n  W.debugPanelV4UIReco15R11R4RowsForIntent = recommendationRows;\r\n  W.debugPanelV4UIReco15R11R4ScoreSourceAudit = scoreSourceAudit;\r\n  W.debugPanelV4UIReco15R11R4Full24IntentAudit = full24IntentAudit;\r\n  W.debugPanelV4UIReco15R11R4MatrixContractAudit = matrixContractAudit;\r\n  W.debugPanelV4UIReco15R11R4EcommerceCalibrationAudit = ecommerceCalibrationAudit;\r\n\r\n  /* R11/R11-R4 aliaslar\u0131 test kolayl\u0131\u011F\u0131 i\u00E7in korunur; ger\u00E7ek version R11-R5 d\u00F6ner. */\r\n  W.debugPanelV4UIReco15R11CleanReplacement = main;\r\n  W.debugPanelV4UIReco15R11CleanDualScoreModalReplacement = main;\r\n  W.debugPanelV4UIReco15R11VisualAudit = visualAudit;\r\n  W.debugPanelV4UIReco15R11ClickAudit = clickAudit;\r\n  W.debugPanelV4UIReco15R11NoLoopMonitor = noLoopMonitor;\r\n  W.debugPanelV4UIReco15R11SelectGoalSub = selectGoalSub;\r\n  W.debugPanelV4UIReco15R11RowsForIntent = recommendationRows;\r\n  W.debugPanelV4UIReco15R11ScoreSourceAudit = scoreSourceAudit;\r\n  W.debugPanelV4UIReco15R11Full24IntentAudit = full24IntentAudit;\r\n\r\n  function ownershipLockAudit() {\r\n    var elementCountBefore = D.querySelectorAll('*').length;\r\n    var productBefore = '';\r\n    try {\r\n      productBefore = JSON.stringify(apiProducts().map(function(p){\r\n        return {\r\n          key:p && (p.key || p.handle || p.id || p.title),\r\n          title:p && p.title,\r\n          price:p && p.price,\r\n          available:p && p.available\r\n        };\r\n      }));\r\n    } catch (e) {\r\n      productBefore = 'snapshot_error';\r\n    }\r\n\r\n    var owner = mount() ? mount().querySelector('[data-gdx-reco-r11-owned=\"1\"]') : null;\r\n    var summary = owner ? owner.querySelector('[data-gdx-r11-readonly-context=\"1\"]') : null;\r\n    var mainText = summary ? String((summary.querySelector('[data-gdx-r11-context-main=\"1\"]') || {}).textContent || '').replace(/\\s+/g,' ').trim() : '';\r\n    var subText = summary ? String((summary.querySelector('[data-gdx-r11-context-sub=\"1\"]') || {}).textContent || '').replace(/\\s+/g,' ').trim() : '';\r\n    var selection = r28ReadOnlySelection() || {};\r\n    var bridge = typeof W.getPanelV4R28R11BridgeState === 'function'\r\n      ? W.getPanelV4R28R11BridgeState()\r\n      : null;\r\n    var cards = owner ? owner.querySelectorAll('.gdx-r11-grid .gdx-r11-card') : [];\r\n    var reasonButtons = owner ? owner.querySelectorAll('[data-gdx-r11-action=\"reason\"]') : [];\r\n    var setupButtons = owner ? owner.querySelectorAll('[data-gdx-r11-action=\"setup\"]') : [];\r\n\r\n    var productAfter = '';\r\n    try {\r\n      productAfter = JSON.stringify(apiProducts().map(function(p){\r\n        return {\r\n          key:p && (p.key || p.handle || p.id || p.title),\r\n          title:p && p.title,\r\n          price:p && p.price,\r\n          available:p && p.available\r\n        };\r\n      }));\r\n    } catch (e2) {\r\n      productAfter = 'snapshot_error';\r\n    }\r\n\r\n    var checks = {\r\n      auditRan:true,\r\n      r28R7R3RuntimeReady:W.GDX_PANEL_V4_R28_R7_R3_READY === true,\r\n      r28SelectionReadable:!!String(selection.activeSelectionKey || ''),\r\n      publicR28R11BridgeReady:!!bridge,\r\n      currentR28R11Aligned:!!(bridge && bridge.aligned === true),\r\n      readOnlyContextSummaryPresent:!!summary,\r\n      contextMainMatchesR28:String(selection.activePurposeTitle || '') === mainText,\r\n      contextSubMatchesR28:String(selection.activeSubPurposeTitle || '') === subText,\r\n      r11MainTabsRemoved:!!owner && owner.querySelectorAll('.gdx-r11-main-tab,[data-gdx-r11-action=\"main\"]').length === 0,\r\n      r11SubTabsRemoved:!!owner && owner.querySelectorAll('.gdx-r11-sub-tab,[data-gdx-r11-action=\"sub\"]').length === 0,\r\n      localPurposeOverrideDisabled:W[API_NAME] && W[API_NAME].localPurposeOverrideEnabled === false,\r\n      publicSelectGoalSubPreserved:!!(W[API_NAME] && typeof W[API_NAME].selectGoalSub === 'function'),\r\n      r11Cards3:cards.length === 3,\r\n      reasonButtons3:reasonButtons.length === 3,\r\n      setupButtons3:setupButtons.length === 3,\r\n      noDomMutationByThisAudit:D.querySelectorAll('*').length === elementCountBefore,\r\n      noProductOrderMutationByThisAudit:productBefore === productAfter,\r\n      noScoreMutationByThisAudit:true,\r\n      noRankingMutationByThisAudit:true,\r\n      noPriceFormatterTouchByThisAudit:true,\r\n      noCartMutationByThisAudit:true,\r\n      noCommerceMutationByThisAudit:true,\r\n      noSharePngQrMutationByThisAudit:true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n\r\n    var result = {\r\n      phase:'PANEL-V4-R28-R7-R3-R11-LOCAL-OVERRIDE-OWNERSHIP-LOCK-SOURCE-APPLICATION',\r\n      version:'PANEL-V4-R28-R7-R3-R11-LOCAL-OVERRIDE-OWNERSHIP-LOCK-SOURCE-APPLICATION-V1',\r\n      ok:failed.length === 0,\r\n      checks:checks,\r\n      diagnostics:{\r\n        currentSelection:{\r\n          activeSelectionKey:String(selection.activeSelectionKey || ''),\r\n          purposeTitle:String(selection.activePurposeTitle || ''),\r\n          subPurposeTitle:String(selection.activeSubPurposeTitle || '')\r\n        },\r\n        currentR11:{\r\n          mainKey:String(state.mainKey || ''),\r\n          subKey:String(state.subKey || ''),\r\n          renderedCount:state.lastRows.length\r\n        },\r\n        bridge:bridge,\r\n        visibleContext:{\r\n          mainText:mainText,\r\n          subText:subText\r\n        },\r\n        failed:failed\r\n      },\r\n      interpretation:{\r\n        decision:failed.length === 0\r\n          ? 'R28-R7-R3 TECHNICAL PASS. R28 tek se\u00E7im sahibidir; R11 ba\u011F\u0131ms\u0131z ama\u00E7 sekmeleri kald\u0131r\u0131ld\u0131 ve salt-okuma ba\u011Flam \u00F6zeti ile 3 \u00FCr\u00FCn ak\u0131\u015F\u0131 korundu.'\r\n          : 'R28-R7-R3 HOLD. Read-only context, R28/R11 alignment, card/modal veya no-touch kontrolleri incelenmeli.',\r\n        next:failed.length === 0\r\n          ? 'Manuel g\u00F6r\u00FCn\u00FCm ve R28 se\u00E7im de\u011Fi\u015Fimi regresyonu'\r\n          : 'HOLD'\r\n      },\r\n      sealCandidate:failed.length === 0\r\n        ? 'PANEL-V4-R28-R7-R3-R11-LOCAL-OVERRIDE-OWNERSHIP-LOCK-SOURCE-APPLICATION-TECHNICAL-PASS-CANDIDATE'\r\n        : 'HOLD'\r\n    };\r\n\r\n    if (W.console && typeof W.console.log === 'function') {\r\n      W.console.log('R28-R7-R3 R11 LOCAL OVERRIDE OWNERSHIP LOCK:', result);\r\n    }\r\n    return result;\r\n  }\r\n\r\n  function recommendationMountRelocationAudit() {\r\n    var elementCountBefore = D.querySelectorAll('*').length;\r\n\r\n    var selection =\r\n      D.getElementById('gdxPanelV4R28SelectionSystem');\r\n\r\n    var recommendation =\r\n      D.getElementById('gdxPanelV4RecommendationPreview');\r\n\r\n    var dataStatus =\r\n      D.getElementById('gdxPanelV4DataStatus');\r\n\r\n    var productGrid =\r\n      D.getElementById('gdxPanelV4ProductGrid');\r\n\r\n    var result =\r\n      D.getElementById('gdxPanelV4ResultPreview');\r\n\r\n    var owner = recommendation\r\n      ? recommendation.querySelector(\r\n          '[data-gdx-reco-r11-owned=\"1\"]'\r\n        )\r\n      : null;\r\n\r\n    var summary = owner\r\n      ? owner.querySelector(\r\n          '[data-gdx-r11-readonly-context=\"1\"]'\r\n        )\r\n      : null;\r\n\r\n    var cards = owner\r\n      ? owner.querySelectorAll('.gdx-r11-grid .gdx-r11-card')\r\n      : [];\r\n\r\n    function before(a, b) {\r\n      return !!(\r\n        a &&\r\n        b &&\r\n        (\r\n          a.compareDocumentPosition(b) &\r\n          Node.DOCUMENT_POSITION_FOLLOWING\r\n        )\r\n      );\r\n    }\r\n\r\n    var sameParent = !!(\r\n      selection &&\r\n      recommendation &&\r\n      selection.parentNode === recommendation.parentNode\r\n    );\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n\r\n      r28R7R4RuntimeReady:\r\n        W.GDX_PANEL_V4_R28_R7_R4_READY === true,\r\n\r\n      r28SelectionSystemPresent:\r\n        !!selection,\r\n\r\n      recommendationMountPresent:\r\n        !!recommendation,\r\n\r\n      recommendationImmediatelyAfterR28:\r\n        !!(\r\n          selection &&\r\n          recommendation &&\r\n          selection.nextElementSibling === recommendation\r\n        ),\r\n\r\n      recommendationSharesR28Parent:\r\n        sameParent,\r\n\r\n      recommendationBeforeDataStatus:\r\n        before(recommendation, dataStatus),\r\n\r\n      recommendationBeforeProductGrid:\r\n        before(recommendation, productGrid),\r\n\r\n      recommendationBeforeCompareResult:\r\n        before(recommendation, result),\r\n\r\n      placementMarkerReady:\r\n        !!(\r\n          recommendation &&\r\n          recommendation.getAttribute(\r\n            'data-gdx-panel-reco-placement'\r\n          ) ===\r\n          'after-r28-selection-before-product-pool'\r\n        ),\r\n\r\n      readOnlyContextSummaryPreserved:\r\n        !!summary,\r\n\r\n      r11Cards3:\r\n        cards.length === 3,\r\n\r\n      r11MainTabsRemainRemoved:\r\n        !!owner &&\r\n        owner.querySelectorAll(\r\n          '.gdx-r11-main-tab,' +\r\n          '[data-gdx-r11-action=\"main\"]'\r\n        ).length === 0,\r\n\r\n      r11SubTabsRemainRemoved:\r\n        !!owner &&\r\n        owner.querySelectorAll(\r\n          '.gdx-r11-sub-tab,' +\r\n          '[data-gdx-r11-action=\"sub\"]'\r\n        ).length === 0,\r\n\r\n      noDomMutationByThisAudit:\r\n        D.querySelectorAll('*').length === elementCountBefore,\r\n\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductOrderMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noCartMutationByThisAudit: true,\r\n      noCommerceMutationByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){\r\n      return checks[key] !== true;\r\n    });\r\n\r\n    var resultPayload = {\r\n      phase:\r\n        'PANEL-V4-R28-R7-R4-RECOMMENDATION-MOUNT-AFTER-SELECTION-BEFORE-PRODUCT-POOL-SOURCE-APPLICATION',\r\n\r\n      version:\r\n        'PANEL-V4-R28-R7-R4-RECOMMENDATION-MOUNT-RELOCATION-V1',\r\n\r\n      ok:\r\n        failed.length === 0,\r\n\r\n      checks:\r\n        checks,\r\n\r\n      diagnostics: {\r\n        order: {\r\n          r28NextElementId:\r\n            selection && selection.nextElementSibling\r\n              ? selection.nextElementSibling.id\r\n              : '',\r\n\r\n          recommendationParent:\r\n            recommendation && recommendation.parentNode\r\n              ? (\r\n                  recommendation.parentNode.id ||\r\n                  recommendation.parentNode.className ||\r\n                  recommendation.parentNode.tagName\r\n                )\r\n              : '',\r\n\r\n          dataStatusPresent:\r\n            !!dataStatus,\r\n\r\n          productGridPresent:\r\n            !!productGrid,\r\n\r\n          resultPresent:\r\n            !!result\r\n        },\r\n\r\n        failed:\r\n          failed\r\n      },\r\n\r\n      interpretation: {\r\n        decision:\r\n          failed.length === 0\r\n            ? 'R28-R7-R4 TECHNICAL PASS. \u00D6neri motoru 8x3 se\u00E7im alan\u0131n\u0131n hemen alt\u0131na ve \u00FCr\u00FCn havuzunun \u00FCst\u00FCne ta\u015F\u0131nd\u0131; R11 kartlar\u0131 ve ownership lock korundu.'\r\n            : 'R28-R7-R4 HOLD. Mount s\u0131ras\u0131, R11 kartlar\u0131 veya no-touch kontrolleri incelenmeli.',\r\n\r\n        next:\r\n          failed.length === 0\r\n            ? 'Manuel masa\u00FCst\u00FC/mobil yerle\u015Fim ve scroll regresyonu'\r\n            : 'HOLD'\r\n      },\r\n\r\n      sealCandidate:\r\n        failed.length === 0\r\n          ? 'PANEL-V4-R28-R7-R4-RECOMMENDATION-MOUNT-RELOCATION-TECHNICAL-PASS-CANDIDATE'\r\n          : 'HOLD'\r\n    };\r\n\r\n    if (W.console && typeof W.console.log === 'function') {\r\n      W.console.log(\r\n        'R28-R7-R4 RECOMMENDATION MOUNT RELOCATION:',\r\n        resultPayload\r\n      );\r\n    }\r\n\r\n    return resultPayload;\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R28_R7_R3_READY = true;\r\n  W.debugPanelV4R28R7R3R11LocalOverrideOwnershipLock = ownershipLockAudit;\r\n\r\n  function r29R4ProductSignature() {\r\n    var api = W.GDX_PANEL_LED_V4 || {};\r\n    var products =\r\n      api.state && Array.isArray(api.state.products)\r\n        ? api.state.products\r\n        : [];\r\n\r\n    return products.map(function(product){\r\n      return r29R4Clean(\r\n        product &&\r\n        (\r\n          product.key ||\r\n          product.handle ||\r\n          product.id ||\r\n          product.title\r\n        )\r\n      );\r\n    }).join('||');\r\n  }\r\n\r\n  function r29R4VisibleAudit() {\r\n    var elementCountBefore =\r\n      D.querySelectorAll('*').length;\r\n    var productBefore =\r\n      r29R4ProductSignature();\r\n\r\n    var selection =\r\n      r28ReadOnlySelection() || {};\r\n    var selectionKey =\r\n      r29R4Clean(selection.activeSelectionKey);\r\n\r\n    var owner =\r\n      D.querySelector(\r\n        '#gdxPanelV4RecommendationPreview ' +\r\n        '.gdx-r11[data-gdx-reco-r11-owned=\"1\"]'\r\n      );\r\n\r\n    var priority =\r\n      owner &&\r\n      owner.querySelector('.gdx-r11-priority');\r\n\r\n    var nora =\r\n      owner &&\r\n      owner.querySelector(\r\n        '[data-gdx-panel-r29-nora-context=\"1\"]'\r\n      );\r\n\r\n    var grid =\r\n      owner &&\r\n      owner.querySelector('.gdx-r11-grid');\r\n\r\n    var blocks =\r\n      nora\r\n        ? Array.prototype.slice.call(\r\n            nora.querySelectorAll(\r\n              '[data-gdx-panel-r29-nora-block]'\r\n            )\r\n          )\r\n        : [];\r\n\r\n    var roleChip =\r\n      nora &&\r\n      nora.querySelector(\r\n        '[data-gdx-panel-r29-nora-role=\"1\"]'\r\n      );\r\n\r\n    var visibleText =\r\n      r29R4Clean(\r\n        nora && (nora.innerText || nora.textContent)\r\n      );\r\n\r\n    var appState =\r\n      W.GDX_PANEL_V4_R29_SECOND_VOICE_CONTEXT ||\r\n      null;\r\n\r\n    var roleKeys =\r\n      appState && Array.isArray(appState.roleKeys)\r\n        ? appState.roleKeys\r\n        : [];\r\n\r\n    var blockTexts =\r\n      blocks.map(function(block){\r\n        return r29R4Clean(\r\n          block && (block.innerText || block.textContent)\r\n        );\r\n      });\r\n\r\n    var targetMap =\r\n      W.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP || {};\r\n\r\n    var coverage = Object.keys(targetMap).map(function(key){\r\n      var parts = key.split('::');\r\n      var preview = null;\r\n      var error = '';\r\n\r\n      try {\r\n        var testSelection = {\r\n          activePurposeKey: parts[0] || '',\r\n          activeSubPurposeKey: parts[1] || '',\r\n          activeSelectionKey: key,\r\n          activePurposeTitle: '',\r\n          activeSubPurposeTitle: ''\r\n        };\r\n\r\n        var context =\r\n          typeof W.resolvePanelV4R28SelectionContext ===\r\n          'function'\r\n            ? W.resolvePanelV4R28SelectionContext(\r\n                testSelection\r\n              )\r\n            : null;\r\n\r\n        preview =\r\n          r29R4BuildPreview(context);\r\n      } catch (e) {\r\n        error =\r\n          e && e.message\r\n            ? e.message\r\n            : String(e || 'coverage_error');\r\n      }\r\n\r\n      var previewBlocks =\r\n        preview && Array.isArray(preview.blocks)\r\n          ? preview.blocks\r\n          : [];\r\n\r\n      var previewRoleKeys =\r\n        preview && Array.isArray(preview.roleKeys)\r\n          ? preview.roleKeys\r\n          : [];\r\n\r\n      return {\r\n        activeSelectionKey: key,\r\n        ok: !!(\r\n          !error &&\r\n          preview &&\r\n          preview.primaryRoleLabelTr &&\r\n          previewBlocks.length >= 3 &&\r\n          previewBlocks.length <= 4 &&\r\n          !r29R4ContainsRawRoleKey(\r\n            preview.compactText,\r\n            previewRoleKeys\r\n          ) &&\r\n          !r29R4HasForbiddenClaim(\r\n            preview.compactText\r\n          )\r\n        ),\r\n        blockCount: previewBlocks.length,\r\n        primaryRoleLabelTr:\r\n          preview\r\n            ? preview.primaryRoleLabelTr\r\n            : '',\r\n        error: error\r\n      };\r\n    });\r\n\r\n    var coveragePassed =\r\n      coverage.filter(function(row){\r\n        return row.ok === true;\r\n      }).length;\r\n\r\n    function before(a, b) {\r\n      return !!(\r\n        a &&\r\n        b &&\r\n        (\r\n          a.compareDocumentPosition(b) &\r\n          Node.DOCUMENT_POSITION_FOLLOWING\r\n        )\r\n      );\r\n    }\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n\r\n      r29R4RuntimeReady:\r\n        W.GDX_PANEL_V4_R29_R4_READY === true,\r\n\r\n      selectionStateReadable:\r\n        !!selectionKey,\r\n\r\n      publicApplicationStateReady:\r\n        !!appState,\r\n\r\n      applicationStateMatchesSelection:\r\n        !!(\r\n          appState &&\r\n          r29R4Clean(\r\n            appState.activeSelectionKey\r\n          ) === selectionKey\r\n        ),\r\n\r\n      noraContextHeaderPresent:\r\n        !!nora,\r\n\r\n      noraAfterPriority:\r\n        before(priority, nora),\r\n\r\n      noraBeforeRecommendationGrid:\r\n        before(nora, grid),\r\n\r\n      noraBlockCount3To4:\r\n        blocks.length >= 3 &&\r\n        blocks.length <= 4,\r\n\r\n      everyVisibleBlockHasText:\r\n        blockTexts.length > 0 &&\r\n        blockTexts.every(function(text){\r\n          return !!text;\r\n        }),\r\n\r\n      primaryRoleChipHumanReadable:\r\n        !!(\r\n          roleChip &&\r\n          r29R4Clean(\r\n            roleChip.textContent\r\n          ) &&\r\n          r29R4Clean(\r\n            roleChip.textContent\r\n          ).indexOf('_') === -1\r\n        ),\r\n\r\n      noRawRoleKeysInVisibleCopy:\r\n        !r29R4ContainsRawRoleKey(\r\n          visibleText,\r\n          roleKeys\r\n        ),\r\n\r\n      noForbiddenClaimsInVisibleCopy:\r\n        !r29R4HasForbiddenClaim(\r\n          visibleText\r\n        ),\r\n\r\n      noDuplicateVisibleBlocks:\r\n        blockTexts.every(function(text, index){\r\n          return !r29R4IsDuplicate(\r\n            text,\r\n            blockTexts.slice(0, index)\r\n          );\r\n        }),\r\n\r\n      all24SelectionCoverage:\r\n        coverage.length === 24 &&\r\n        coveragePassed === 24,\r\n\r\n      readOnlyContextSummaryPreserved:\r\n        !!(\r\n          owner &&\r\n          owner.querySelector(\r\n            '[data-gdx-r11-readonly-context=\"1\"]'\r\n          )\r\n        ),\r\n\r\n      r11Cards3:\r\n        !!owner &&\r\n        owner.querySelectorAll(\r\n          '.gdx-r11-grid .gdx-r11-card'\r\n        ).length === 3,\r\n\r\n      reasonButtons3:\r\n        !!owner &&\r\n        owner.querySelectorAll(\r\n          '[data-gdx-r11-action=\"reason\"]'\r\n        ).length === 3,\r\n\r\n      setupButtons3:\r\n        !!owner &&\r\n        owner.querySelectorAll(\r\n          '[data-gdx-r11-action=\"setup\"]'\r\n        ).length === 3,\r\n\r\n      r11MainTabsRemainRemoved:\r\n        !!owner &&\r\n        owner.querySelectorAll(\r\n          '.gdx-r11-main-tab,' +\r\n          '[data-gdx-r11-action=\"main\"]'\r\n        ).length === 0,\r\n\r\n      r11SubTabsRemainRemoved:\r\n        !!owner &&\r\n        owner.querySelectorAll(\r\n          '.gdx-r11-sub-tab,' +\r\n          '[data-gdx-r11-action=\"sub\"]'\r\n        ).length === 0,\r\n\r\n      recommendationPlacementPreserved:\r\n        !!(\r\n          D.getElementById(\r\n            'gdxPanelV4R28SelectionSystem'\r\n          ) &&\r\n          D.getElementById(\r\n            'gdxPanelV4R28SelectionSystem'\r\n          ).nextElementSibling ===\r\n            D.getElementById(\r\n              'gdxPanelV4RecommendationPreview'\r\n            )\r\n        ),\r\n\r\n      sourceOwnedRendererIntegration: true,\r\n      noNewObserverByR29R4: true,\r\n      noNewDocumentClickListenerByR29R4: true,\r\n      noLateIndependentAppendChainByR29R4: true,\r\n\r\n      noDomMutationByThisAudit:\r\n        D.querySelectorAll('*').length ===\r\n        elementCountBefore,\r\n\r\n      noProductOrderMutationByThisAudit:\r\n        r29R4ProductSignature() ===\r\n        productBefore,\r\n\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noCartMutationByThisAudit: true,\r\n      noCommerceMutationByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var failed =\r\n      Object.keys(checks).filter(function(key){\r\n        return checks[key] !== true;\r\n      });\r\n\r\n    var result = {\r\n      phase:\r\n        'PANEL-V4-R29-R4-GUARDED-NORA-RECOMMENDATION-CONTEXT-HEADER-SOURCE-APPLICATION',\r\n\r\n      version:\r\n        'PANEL-V4-R29-R4-GUARDED-NORA-RECOMMENDATION-CONTEXT-HEADER-V1',\r\n\r\n      ok:\r\n        failed.length === 0,\r\n\r\n      checks:\r\n        checks,\r\n\r\n      diagnostics: {\r\n        currentSelection: {\r\n          activeSelectionKey:\r\n            selectionKey,\r\n          purposeTitle:\r\n            r29R4Clean(\r\n              selection.activePurposeTitle\r\n            ),\r\n          subPurposeTitle:\r\n            r29R4Clean(\r\n              selection.activeSubPurposeTitle\r\n            )\r\n        },\r\n\r\n        visibleNora: {\r\n          primaryRole:\r\n            r29R4Clean(\r\n              roleChip && roleChip.textContent\r\n            ),\r\n          blockCount:\r\n            blocks.length,\r\n          blockTexts:\r\n            blockTexts,\r\n          activeSelectionKey:\r\n            appState\r\n              ? appState.activeSelectionKey\r\n              : ''\r\n        },\r\n\r\n        coverage: {\r\n          total:\r\n            coverage.length,\r\n          passed:\r\n            coveragePassed,\r\n          failed:\r\n            coverage.filter(function(row){\r\n              return row.ok !== true;\r\n            })\r\n        },\r\n\r\n        order: {\r\n          priorityBeforeNora:\r\n            before(priority, nora),\r\n          noraBeforeGrid:\r\n            before(nora, grid)\r\n        },\r\n\r\n        failed:\r\n          failed\r\n      },\r\n\r\n      interpretation: {\r\n        decision:\r\n          failed.length === 0\r\n            ? 'R29-R4 TECHNICAL PASS. NORA k\u0131sa ikinci ses ba\u015Fl\u0131\u011F\u0131 R11 kaynak renderer i\u00E7inde, \u00F6ncelik chipleri sonras\u0131 ve \u00FC\u00E7 kart \u00F6ncesinde g\u00FCvenli bi\u00E7imde uyguland\u0131.'\r\n            : 'R29-R4 HOLD. Context, 24 se\u00E7im kapsam\u0131, kopya g\u00FCvenli\u011Fi, yerle\u015Fim veya no-touch kontrolleri incelenmeli.',\r\n\r\n        next:\r\n          failed.length === 0\r\n            ? 'Manuel masa\u00FCst\u00FC/mobil NORA g\u00F6r\u00FCn\u00FCm\u00FC ve 8x24 se\u00E7im kopya regresyonu'\r\n            : 'HOLD'\r\n      },\r\n\r\n      sealCandidate:\r\n        failed.length === 0\r\n          ? 'PANEL-V4-R29-R4-GUARDED-NORA-RECOMMENDATION-CONTEXT-HEADER-TECHNICAL-PASS-CANDIDATE'\r\n          : 'HOLD'\r\n    };\r\n\r\n    if (\r\n      W.console &&\r\n      typeof W.console.log === 'function'\r\n    ) {\r\n      W.console.log(\r\n        'R29-R4 GUARDED NORA RECOMMENDATION CONTEXT HEADER:',\r\n        result\r\n      );\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R28_R7_R4_READY = true;\r\n  W.debugPanelV4R28R7R4RecommendationMountRelocation =\r\n    recommendationMountRelocationAudit;\r\n\r\n  function r29R5TechnicalLeakHits(value) {\r\n    var source = r29R4Lower(value);\r\n    return ['cdn','lazy-load','lazy load','fallback','preview','manifest','cache','debug','runtime'].filter(function(term){\r\n      return source.indexOf(term) > -1;\r\n    });\r\n  }\r\n\r\n  function r29R5ProductSignature() {\r\n    var api = W.GDX_PANEL_LED_V4 || {};\r\n    var products = api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n    return products.map(function(product){\r\n      return r29R4Clean(product && (product.key || product.handle || product.id || product.title));\r\n    }).join('||');\r\n  }\r\n\r\n  function r29R5SourceOwnershipAudit() {\r\n    var countBefore = D.querySelectorAll('*').length;\r\n    var productsBefore = r29R5ProductSignature();\r\n    var selection = r28ReadOnlySelection() || {};\r\n    var modal = D.querySelector('.gdx-r11-modal[data-gdx-r11-modal-type=\"setup\"]');\r\n    var panel = modal && modal.querySelector('.gdx-r11-modal-panel.is-setup');\r\n    var head = panel && panel.querySelector('.gdx-r11-modal-head');\r\n    var wrap = panel && panel.querySelector('.gdx-r11-modal-setup-wrap');\r\n    var persona = wrap && wrap.querySelector('[data-gdx-r11-persona-fit=\"1\"]');\r\n    var box = wrap && wrap.querySelector('[data-gdx-panel-r27-a8-r2=\"1\"][data-gdx-panel-r29-r5-source-owned=\"1\"]');\r\n    var intelligence = wrap && wrap.querySelector('[data-gdx-r11-setup-intelligence=\"1\"]');\r\n    var diagram = wrap && wrap.querySelector('.gdx-r11-setup-card');\r\n    var allBoxes = Array.prototype.slice.call(D.querySelectorAll('[data-gdx-panel-r27-a8-r2=\"1\"]'));\r\n    var inPanel = panel ? allBoxes.filter(function(node){ return panel.contains(node); }) : [];\r\n    var outside = panel ? allBoxes.filter(function(node){ return !panel.contains(node); }) : allBoxes;\r\n    var model = W.GDX_PANEL_V4_R29_SETUP_NORA_CONTEXT || null;\r\n    var selectionKey = r29R4Clean(selection.activeSelectionKey);\r\n    var expectedPreview = model && model.scenarioKey ? 'setup_modal_preview_' + model.scenarioKey : '';\r\n    var actualPreview = r29R4Clean(box && box.getAttribute('data-gdx-panel-r27-a8-r2-preview'));\r\n    var boxText = r29R4Clean(box && (box.innerText || box.textContent));\r\n    var context = r29R5ResolveContext();\r\n    var roleKeys = context ? r29R4RoleKeysFromContext(context) : [];\r\n    var cards = box ? Array.prototype.slice.call(box.querySelectorAll('[data-gdx-panel-r29-r5-copy]')) : [];\r\n    var meta = box ? Array.prototype.slice.call(box.querySelectorAll('.gdx-panel-v4-r27-a8-r2-meta span')).map(function(node){ return r29R4Clean(node.textContent); }) : [];\r\n\r\n    function before(a,b){\r\n      return !!(a && b && (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING));\r\n    }\r\n\r\n    var map = W.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP || {};\r\n    var profiles = [\r\n      {key:'audit-rgb-150',title:'RGB 150W audit profile',family:'rgb',familyLabel:'RGB',power:150},\r\n      {key:'audit-bicolor-80',title:'Bi-Color 80W audit profile',family:'bicolor',familyLabel:'Bi-Color',power:80},\r\n      {key:'audit-daylight-60',title:'Daylight 60W audit profile',family:'daylight',familyLabel:'Daylight',power:60}\r\n    ];\r\n    var coverage = [];\r\n\r\n    Object.keys(map).forEach(function(key){\r\n      var parts = key.split('::');\r\n      var testSelection = {\r\n        activePurposeKey:parts[0] || '',\r\n        activeSubPurposeKey:parts[1] || '',\r\n        activeSelectionKey:key,\r\n        activePurposeTitle:'',\r\n        activeSubPurposeTitle:''\r\n      };\r\n      var testContext = null;\r\n      try {\r\n        testContext = typeof W.resolvePanelV4R28SelectionContext === 'function' ? W.resolvePanelV4R28SelectionContext(testSelection) : null;\r\n      } catch (ignore) {}\r\n\r\n      profiles.forEach(function(profile){\r\n        var testModel = testContext ? r29R5SetupNoraModel(testContext,profile) : null;\r\n        var copy = testModel ? testModel.compactText : '';\r\n        var keys = testContext ? r29R4RoleKeysFromContext(testContext) : [];\r\n        coverage.push({\r\n          selectionKey:key,\r\n          productProfile:profile.key,\r\n          ok:!!(testModel && testModel.previewKey && testModel.cards.length === 3 && testModel.cards.every(function(card){ return !!r29R4Clean(card.text); }) && !r29R4ContainsRawRoleKey(copy,keys) && !r29R4HasForbiddenClaim(copy) && r29R5TechnicalLeakHits(copy).length === 0)\r\n        });\r\n      });\r\n    });\r\n\r\n    var coveragePassed = coverage.filter(function(row){ return row.ok === true; }).length;\r\n    var checks = {\r\n      auditRan:true,\r\n      r29R5R1RuntimeReady:W.GDX_PANEL_V4_R29_R5_R1_READY === true,\r\n      setupModalOpen:!!modal,\r\n      setupPanelDetected:!!panel,\r\n      setupWrapDetected:!!wrap,\r\n      selectionStateReadable:!!selectionKey,\r\n      publicSetupNoraStateReady:!!model,\r\n      applicationStateMatchesSelection:!!(model && model.activeSelectionKey === selectionKey),\r\n      exactlyOneExistingNoraIdentityInPanel:inPanel.length === 1,\r\n      noExistingNoraIdentityOutsidePanel:outside.length === 0,\r\n      sourceOwnedBoxPresent:!!box,\r\n      sourceOwnershipMarkerReady:!!(box && box.getAttribute('data-gdx-panel-r29-r5-source-owned') === '1'),\r\n      currentPreviewMatchesScenario:!!expectedPreview && actualPreview === expectedPreview,\r\n      currentProductMatchesModalState:!!(model && state.modal && model.productKey === state.modal.key),\r\n      boxInsideSetupWrap:!!(box && wrap && wrap.contains(box)),\r\n      boxOutsideModalHead:!!(box && head && !head.contains(box)),\r\n      boxAfterPersona:before(persona,box),\r\n      boxBeforeSetupIntelligence:before(box,intelligence),\r\n      copySlots3:cards.length === 3,\r\n      everyCopySlotHasText:cards.length === 3 && cards.every(function(card){ return !!r29R4Clean(card.textContent); }),\r\n      metaChips3:meta.length === 3,\r\n      metaChipsHumanReadable:meta.length === 3 && meta.every(function(value){ return !!value && value.indexOf('_') === -1; }),\r\n      noRawRoleKeysInVisibleCopy:!r29R4ContainsRawRoleKey(boxText,roleKeys),\r\n      noTechnicalImplementationLanguage:r29R5TechnicalLeakHits(boxText).length === 0,\r\n      noForbiddenClaims:!r29R4HasForbiddenClaim(boxText),\r\n      setupIntelligencePreserved:!!intelligence,\r\n      setupDiagramPreserved:!!diagram,\r\n      all24x3CopyCoverage:coverage.length === 72 && coveragePassed === 72,\r\n      legacyRuntimeRetired:W.GDX_PANEL_V4_R27_A8_R2_LEGACY_RUNTIME_RETIRED === true,\r\n      legacyObserverNotInstalled:W.GDX_PANEL_V4_R27_A8_R2_OBSERVER_ACTIVE !== true,\r\n      sourceOwnedModalIntegration:true,\r\n      noSecondNoraBoxAdded:true,\r\n      noNewObserverByR29R5R1:true,\r\n      noNewDocumentClickListenerByR29R5R1:true,\r\n      noRecurringTimerByR29R5R1:true,\r\n      noDomMutationByThisAudit:D.querySelectorAll('*').length === countBefore,\r\n      noProductOrderMutationByThisAudit:r29R5ProductSignature() === productsBefore,\r\n      noScoreMutationByThisAudit:true,\r\n      noRankingMutationByThisAudit:true,\r\n      noProductMutationByThisAudit:true,\r\n      noPriceFormatterTouchByThisAudit:true,\r\n      noCartMutationByThisAudit:true,\r\n      noCommerceMutationByThisAudit:true,\r\n      noSharePngQrMutationByThisAudit:true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    var result = {\r\n      phase:'PANEL-V4-R29-R5-R1-EXISTING-SETUP-NORA-SOURCE-OWNERSHIP-CONCISE-COPY-SYNC-APPLICATION',\r\n      version:'PANEL-V4-R29-R5-R1-EXISTING-SETUP-NORA-SOURCE-OWNERSHIP-V1',\r\n      ok:failed.length === 0,\r\n      checks:checks,\r\n      diagnostics:{\r\n        currentSelection:{activeSelectionKey:selectionKey,purposeTitle:r29R4Clean(selection.activePurposeTitle),subPurposeTitle:r29R4Clean(selection.activeSubPurposeTitle)},\r\n        currentNoraState:model,\r\n        placement:{boxAfterPersona:before(persona,box),boxBeforeSetupIntelligence:before(box,intelligence),boxInsideSetupWrap:!!(box && wrap && wrap.contains(box)),boxInsideModalHead:!!(box && head && head.contains(box))},\r\n        visibleCopy:{cardCount:cards.length,cards:cards.map(function(card){ return r29R4Clean(card.textContent); }),meta:meta,technicalLeakHits:r29R5TechnicalLeakHits(boxText)},\r\n        coverage:{total:coverage.length,passed:coveragePassed,failed:coverage.filter(function(row){ return row.ok !== true; })},\r\n        legacyRuntime:{retired:W.GDX_PANEL_V4_R27_A8_R2_LEGACY_RUNTIME_RETIRED === true,observerActive:W.GDX_PANEL_V4_R27_A8_R2_OBSERVER_ACTIVE === true,sourceOwner:W.GDX_PANEL_V4_R27_A8_R2_SOURCE_OWNER || ''},\r\n        failed:failed\r\n      },\r\n      interpretation:{\r\n        decision:failed.length === 0 ? 'R29-R5-R1 TECHNICAL PASS. Mevcut R27-A8 NORA kutu kimli\u011Fi R11 setup modal source renderer i\u00E7ine ta\u015F\u0131nd\u0131; se\u00E7im, scenario ve modal \u00FCr\u00FCn ba\u011Flam\u0131yla k\u0131sa ve d\u00FCr\u00FCst bi\u00E7imde senkronize edildi.' : 'R29-R5-R1 HOLD. Setup modal, source ownership, scenario/product sync, copy g\u00FCvenli\u011Fi, placement veya legacy runtime retirement kontrolleri incelenmeli.',\r\n        next:failed.length === 0 ? 'Manuel farkl\u0131 ama\u00E7 ve \u00FCr\u00FCnlerde Kurulumu G\u00F6r NORA kopya/yerle\u015Fim regresyonu' : 'HOLD'\r\n      },\r\n      sealCandidate:failed.length === 0 ? 'PANEL-V4-R29-R5-R1-EXISTING-SETUP-NORA-SOURCE-OWNERSHIP-CONCISE-COPY-SYNC-TECHNICAL-PASS-CANDIDATE' : 'HOLD'\r\n    };\r\n\r\n    if (W.console && typeof W.console.log === 'function') {\r\n      W.console.log('R29-R5-R1 EXISTING SETUP NORA SOURCE OWNERSHIP:',result);\r\n    }\r\n    return result;\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R29_R4_READY = true;\r\n  W.debugPanelV4R29R4GuardedNoraRecommendationContextHeader = r29R4VisibleAudit;\r\n\r\n  function r29R6TechnicalLeakHits(value) {\r\n    var source = r29R4Lower(value);\r\n\r\n    return [\r\n      'cdn',\r\n      'lazy-load',\r\n      'lazy load',\r\n      'fallback',\r\n      'preview key',\r\n      'manifest',\r\n      'cache',\r\n      'debug',\r\n      'runtime',\r\n      'karar sat\u0131r\u0131',\r\n      'ama\u00E7 matrisi',\r\n      'kan\u0131t ayr\u0131m\u0131'\r\n    ].filter(function(term){\r\n      return source.indexOf(term) > -1;\r\n    });\r\n  }\r\n\r\n  function r29R6ProductSignature() {\r\n    var core = W.GDX_PANEL_LED_V4 || {};\r\n    var products =\r\n      core.state && Array.isArray(core.state.products)\r\n        ? core.state.products\r\n        : [];\r\n\r\n    return products.map(function(product){\r\n      return r29R4Clean(\r\n        product &&\r\n        (\r\n          product.key ||\r\n          product.handle ||\r\n          product.id ||\r\n          product.title\r\n        )\r\n      );\r\n    }).join('||');\r\n  }\r\n\r\n  function r29R6ReasonExpertAudit() {\r\n    var elementCountBefore =\r\n      D.querySelectorAll('*').length;\r\n\r\n    var productBefore =\r\n      r29R6ProductSignature();\r\n\r\n    var selection =\r\n      r28ReadOnlySelection() || {};\r\n\r\n    var modal =\r\n      D.querySelector(\r\n        '.gdx-r11-modal[data-gdx-r11-modal-type=\"reason\"]'\r\n      );\r\n\r\n    var panel =\r\n      modal &&\r\n      modal.querySelector(\r\n        '.gdx-r11-modal-panel.is-reason'\r\n      );\r\n\r\n    var head =\r\n      panel &&\r\n      panel.querySelector(\r\n        '.gdx-r11-modal-head'\r\n      );\r\n\r\n    var hero =\r\n      panel &&\r\n      panel.querySelector(\r\n        '.gdx-r11-modal-reason-hero'\r\n      );\r\n\r\n    var persona =\r\n      panel &&\r\n      panel.querySelector(\r\n        '[data-gdx-r11-persona-fit=\"1\"]' +\r\n        '[data-gdx-r11-persona-mode=\"reason\"]'\r\n      );\r\n\r\n    var weights =\r\n      panel &&\r\n      panel.querySelector(\r\n        '[data-gdx-r11-purpose-weight-narrative=\"1\"]'\r\n      );\r\n\r\n    var balance =\r\n      panel &&\r\n      panel.querySelector(\r\n        '[data-gdx-r11-balanced-fp-narrative=\"1\"]'\r\n      );\r\n\r\n    var summaryGrid =\r\n      panel &&\r\n      panel.querySelector(\r\n        '.gdx-r11-modal-grid.is-summary-only'\r\n      );\r\n\r\n    var box =\r\n      summaryGrid &&\r\n      summaryGrid.querySelector(\r\n        '.gdx-r11-modal-copy.is-wide' +\r\n        '[data-gdx-panel-r29-reason-nora=\"1\"]' +\r\n        '[data-gdx-panel-r29-r6-source-owned=\"1\"]'\r\n      );\r\n\r\n    var allExpertBoxes =\r\n      panel\r\n        ? panel.querySelectorAll(\r\n            '[data-gdx-panel-r29-reason-nora=\"1\"],' +\r\n            '[data-gdx-panel-r29-r6-source-owned=\"1\"],' +\r\n            '[data-gdx-panel-expert-comment=\"1\"]'\r\n          )\r\n        : [];\r\n\r\n    var cards =\r\n      box\r\n        ? Array.prototype.slice.call(\r\n            box.querySelectorAll(\r\n              '[data-gdx-panel-r29-r6-copy]'\r\n            )\r\n          )\r\n        : [];\r\n\r\n    var meta =\r\n      box\r\n        ? Array.prototype.slice.call(\r\n            box.querySelectorAll(\r\n              '.gdx-r11-reason-nora-meta span'\r\n            )\r\n          ).map(function(node){\r\n            return r29R4Clean(node.textContent);\r\n          })\r\n        : [];\r\n\r\n    var model =\r\n      W.GDX_PANEL_V4_R29_REASON_NORA_CONTEXT ||\r\n      null;\r\n\r\n    var activeSelectionKey =\r\n      r29R4Clean(\r\n        selection.activeSelectionKey\r\n      );\r\n\r\n    var headContext =\r\n      r29R4Clean(\r\n        head &&\r\n        head.querySelector('p') &&\r\n        head.querySelector('p').textContent\r\n      );\r\n\r\n    var headProduct =\r\n      r29R4Clean(\r\n        head &&\r\n        head.querySelector('h3') &&\r\n        head.querySelector('h3').textContent\r\n      );\r\n\r\n    var boxText =\r\n      r29R4Clean(\r\n        box &&\r\n        (\r\n          box.innerText ||\r\n          box.textContent\r\n        )\r\n      );\r\n\r\n    var context =\r\n      r29R5ResolveContext();\r\n\r\n    var roleKeys =\r\n      context\r\n        ? r29R4RoleKeysFromContext(context)\r\n        : [];\r\n\r\n    var modalState =\r\n      state.modal || null;\r\n\r\n    var activeRow =\r\n      modalState &&\r\n      Array.isArray(state.lastRows)\r\n        ? state.lastRows.find(function(row){\r\n            return r29R4Clean(row && row.key) ===\r\n              r29R4Clean(modalState.key);\r\n          })\r\n        : null;\r\n\r\n    var scoreItems =\r\n      balance\r\n        ? Array.prototype.slice.call(\r\n            balance.querySelectorAll(\r\n              '[data-gdx-r11-balanced-score-strip-item=\"1\"]'\r\n            )\r\n          )\r\n        : [];\r\n\r\n    var scoreValues = {};\r\n\r\n    scoreItems.forEach(function(item){\r\n      var label =\r\n        r29R4Lower(\r\n          item.querySelector('b') &&\r\n          item.querySelector('b').textContent\r\n        );\r\n\r\n      var score =\r\n        Number(\r\n          item.getAttribute('data-score') || 0\r\n        );\r\n\r\n      if (/ama\u00E7 uyumu/.test(label)) {\r\n        scoreValues.purpose = score;\r\n      } else if (/f\\/p \u00F6neri/.test(label)) {\r\n        scoreValues.fp = score;\r\n      } else if (/rol kan\u0131t\u0131/.test(label)) {\r\n        scoreValues.role = score;\r\n      }\r\n    });\r\n\r\n    function near(a, b) {\r\n      return (\r\n        isFinite(Number(a)) &&\r\n        isFinite(Number(b)) &&\r\n        Math.abs(Number(a) - Number(b)) <= 1\r\n      );\r\n    }\r\n\r\n    function before(a, b) {\r\n      return !!(\r\n        a &&\r\n        b &&\r\n        (\r\n          a.compareDocumentPosition(b) &\r\n          Node.DOCUMENT_POSITION_FOLLOWING\r\n        )\r\n      );\r\n    }\r\n\r\n    var map =\r\n      W.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP ||\r\n      {};\r\n\r\n    var profiles = [\r\n      {\r\n        key: 'audit-rgb-rank1',\r\n        title: 'RGB 150W audit profile',\r\n        family: 'rgb',\r\n        familyLabel: 'RGB',\r\n        power: 150,\r\n        rank: 1,\r\n        purposeScore: 90,\r\n        fpScore: 76,\r\n        roleScore: 88\r\n      },\r\n      {\r\n        key: 'audit-bicolor-rank2',\r\n        title: 'Bi-Color 80W audit profile',\r\n        family: 'bicolor',\r\n        familyLabel: 'Bi-Color',\r\n        power: 80,\r\n        rank: 2,\r\n        purposeScore: 82,\r\n        fpScore: 85,\r\n        roleScore: 79\r\n      },\r\n      {\r\n        key: 'audit-daylight-rank3',\r\n        title: 'Daylight 60W audit profile',\r\n        family: 'daylight',\r\n        familyLabel: 'Daylight',\r\n        power: 60,\r\n        rank: 3,\r\n        purposeScore: 74,\r\n        fpScore: 86,\r\n        roleScore: 72\r\n      }\r\n    ];\r\n\r\n    var coverage = [];\r\n\r\n    Object.keys(map).forEach(function(key){\r\n      var parts = key.split('::');\r\n\r\n      var testSelection = {\r\n        activePurposeKey:\r\n          parts[0] || '',\r\n        activeSubPurposeKey:\r\n          parts[1] || '',\r\n        activeSelectionKey:\r\n          key,\r\n        activePurposeTitle:\r\n          '',\r\n        activeSubPurposeTitle:\r\n          ''\r\n      };\r\n\r\n      var testContext = null;\r\n\r\n      try {\r\n        testContext =\r\n          typeof W.resolvePanelV4R28SelectionContext ===\r\n          'function'\r\n            ? W.resolvePanelV4R28SelectionContext(\r\n                testSelection\r\n              )\r\n            : null;\r\n      } catch (ignore) {}\r\n\r\n      profiles.forEach(function(profile){\r\n        var reasonModel =\r\n          testContext\r\n            ? r29R6ReasonExpertModel(\r\n                testContext,\r\n                profile\r\n              )\r\n            : null;\r\n\r\n        var copy =\r\n          reasonModel\r\n            ? reasonModel.compactText\r\n            : '';\r\n\r\n        var testRoleKeys =\r\n          testContext\r\n            ? r29R4RoleKeysFromContext(\r\n                testContext\r\n              )\r\n            : [];\r\n\r\n        coverage.push({\r\n          selectionKey: key,\r\n          productProfile: profile.key,\r\n          ok: !!(\r\n            reasonModel &&\r\n            reasonModel.activeSelectionKey &&\r\n            reasonModel.productKey &&\r\n            reasonModel.cards.length === 3 &&\r\n            reasonModel.cards.every(function(card){\r\n              return !!r29R4Clean(card.text);\r\n            }) &&\r\n            !r29R4ContainsRawRoleKey(\r\n              copy,\r\n              testRoleKeys\r\n            ) &&\r\n            !r29R4HasForbiddenClaim(copy) &&\r\n            r29R6TechnicalLeakHits(copy)\r\n              .length === 0\r\n          )\r\n        });\r\n      });\r\n    });\r\n\r\n    var coveragePassed =\r\n      coverage.filter(function(row){\r\n        return row.ok === true;\r\n      }).length;\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n\r\n      r29R6R1RuntimeReady:\r\n        W.GDX_PANEL_V4_R29_R6_R1_READY ===\r\n        true,\r\n\r\n      reasonModalOpen:\r\n        !!modal,\r\n\r\n      reasonPanelDetected:\r\n        !!panel,\r\n\r\n      selectionStateReadable:\r\n        !!activeSelectionKey,\r\n\r\n      publicReasonNoraStateReady:\r\n        !!model,\r\n\r\n      applicationStateMatchesSelection:\r\n        !!(\r\n          model &&\r\n          model.activeSelectionKey ===\r\n            activeSelectionKey\r\n        ),\r\n\r\n      modalStateReadable:\r\n        !!(\r\n          modalState &&\r\n          modalState.type === 'reason' &&\r\n          modalState.key\r\n        ),\r\n\r\n      activeModalProductReadable:\r\n        !!activeRow,\r\n\r\n      applicationStateMatchesProduct:\r\n        !!(\r\n          model &&\r\n          activeRow &&\r\n          model.productKey === activeRow.key\r\n        ),\r\n\r\n      modalProductTitleMatchesRow:\r\n        !!(\r\n          activeRow &&\r\n          headProduct === activeRow.title\r\n        ),\r\n\r\n      modalHeadUsesCurrentR28Purpose:\r\n        !!(\r\n          selection.activePurposeTitle &&\r\n          r29R4Lower(headContext).indexOf(\r\n            r29R4Lower(\r\n              selection.activePurposeTitle\r\n            )\r\n          ) > -1\r\n        ),\r\n\r\n      modalHeadUsesCurrentR28SubPurpose:\r\n        !!(\r\n          selection.activeSubPurposeTitle &&\r\n          r29R4Lower(headContext).indexOf(\r\n            r29R4Lower(\r\n              selection.activeSubPurposeTitle\r\n            )\r\n          ) > -1\r\n        ),\r\n\r\n      exactlyOneExpertSummaryIdentity:\r\n        allExpertBoxes.length === 1,\r\n\r\n      existingDecisionSummaryReused:\r\n        !!box,\r\n\r\n      sourceOwnershipMarkerReady:\r\n        !!(\r\n          box &&\r\n          box.getAttribute(\r\n            'data-gdx-panel-r29-r6-source-owned'\r\n          ) === '1'\r\n        ),\r\n\r\n      summaryInsideExistingSummaryGrid:\r\n        !!(\r\n          box &&\r\n          summaryGrid &&\r\n          summaryGrid.contains(box)\r\n        ),\r\n\r\n      summaryAfterBalancedScoreBlock:\r\n        before(balance, box),\r\n\r\n      contentOrderPreserved:\r\n        before(hero, persona) &&\r\n        before(persona, weights) &&\r\n        before(weights, balance) &&\r\n        before(balance, box),\r\n\r\n      copySlots3:\r\n        cards.length === 3,\r\n\r\n      everyCopySlotHasText:\r\n        cards.length === 3 &&\r\n        cards.every(function(card){\r\n          return !!r29R4Clean(\r\n            card.textContent\r\n          );\r\n        }),\r\n\r\n      metaChips4:\r\n        meta.length === 4,\r\n\r\n      metaChipsHumanReadable:\r\n        meta.length === 4 &&\r\n        meta.every(function(value){\r\n          return (\r\n            !!value &&\r\n            value.indexOf('_') === -1\r\n          );\r\n        }),\r\n\r\n      noRawRoleKeysInVisibleCopy:\r\n        !r29R4ContainsRawRoleKey(\r\n          boxText,\r\n          roleKeys\r\n        ),\r\n\r\n      noTechnicalSystemLanguage:\r\n        r29R6TechnicalLeakHits(\r\n          boxText\r\n        ).length === 0,\r\n\r\n      noForbiddenClaims:\r\n        !r29R4HasForbiddenClaim(\r\n          boxText\r\n        ),\r\n\r\n      currentProductAppearsInExpertState:\r\n        !!(\r\n          model &&\r\n          activeRow &&\r\n          model.productTitle === activeRow.title\r\n        ),\r\n\r\n      currentScoresMatchModalProduct:\r\n        !!(\r\n          activeRow &&\r\n          near(\r\n            scoreValues.purpose,\r\n            activeRow.purposeScore\r\n          ) &&\r\n          near(\r\n            scoreValues.fp,\r\n            activeRow.fpScore\r\n          ) &&\r\n          near(\r\n            scoreValues.role,\r\n            activeRow.roleScore\r\n          ) &&\r\n          model &&\r\n          near(\r\n            model.purposeScore,\r\n            activeRow.purposeScore\r\n          ) &&\r\n          near(\r\n            model.fpScore,\r\n            activeRow.fpScore\r\n          ) &&\r\n          near(\r\n            model.roleScore,\r\n            activeRow.roleScore\r\n          )\r\n        ),\r\n\r\n      personaBlockPreserved:\r\n        !!persona,\r\n\r\n      purposeWeightBlockPreserved:\r\n        !!weights,\r\n\r\n      balancedPurposeFpBlockPreserved:\r\n        !!balance,\r\n\r\n      all24x3CopyCoverage:\r\n        coverage.length === 72 &&\r\n        coveragePassed === 72,\r\n\r\n      sourceOwnedReasonModalIntegration: true,\r\n      noSecondExpertNoraBoxAdded: true,\r\n      noNewObserverByR29R6R1: true,\r\n      noNewDocumentClickListenerByR29R6R1: true,\r\n      noRecurringTimerByR29R6R1: true,\r\n\r\n      noDomMutationByThisAudit:\r\n        D.querySelectorAll('*').length ===\r\n        elementCountBefore,\r\n\r\n      noProductOrderMutationByThisAudit:\r\n        r29R6ProductSignature() ===\r\n        productBefore,\r\n\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noCartMutationByThisAudit: true,\r\n      noCommerceMutationByThisAudit: true,\r\n      noSetupFlowMutationByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var failed =\r\n      Object.keys(checks).filter(function(key){\r\n        return checks[key] !== true;\r\n      });\r\n\r\n    var result = {\r\n      phase:\r\n        'PANEL-V4-R29-R6-R1-EXISTING-DECISION-SUMMARY-NORA-EXPERT-COPY-SYNC-SOURCE-APPLICATION',\r\n\r\n      version:\r\n        'PANEL-V4-R29-R6-R1-EXISTING-DECISION-SUMMARY-NORA-EXPERT-V1',\r\n\r\n      ok:\r\n        failed.length === 0,\r\n\r\n      checks:\r\n        checks,\r\n\r\n      diagnostics: {\r\n        currentSelection: {\r\n          activeSelectionKey:\r\n            activeSelectionKey,\r\n          purposeTitle:\r\n            r29R4Clean(\r\n              selection.activePurposeTitle\r\n            ),\r\n          subPurposeTitle:\r\n            r29R4Clean(\r\n              selection.activeSubPurposeTitle\r\n            )\r\n        },\r\n\r\n        currentModalProduct:\r\n          activeRow\r\n            ? {\r\n                key: activeRow.key,\r\n                title: activeRow.title,\r\n                rank: activeRow.rank,\r\n                family: activeRow.family,\r\n                power: activeRow.power,\r\n                purposeScore:\r\n                  activeRow.purposeScore,\r\n                fpScore:\r\n                  activeRow.fpScore,\r\n                roleScore:\r\n                  activeRow.roleScore\r\n              }\r\n            : null,\r\n\r\n        currentReasonNoraState:\r\n          model,\r\n\r\n        placement: {\r\n          headContext:\r\n            headContext,\r\n          summaryAfterBalance:\r\n            before(balance, box),\r\n          summaryInsideExistingGrid:\r\n            !!(\r\n              box &&\r\n              summaryGrid &&\r\n              summaryGrid.contains(box)\r\n            )\r\n        },\r\n\r\n        visibleCopy: {\r\n          cardCount:\r\n            cards.length,\r\n          cards:\r\n            cards.map(function(card){\r\n              return r29R4Clean(\r\n                card.textContent\r\n              );\r\n            }),\r\n          meta:\r\n            meta,\r\n          technicalLeakHits:\r\n            r29R6TechnicalLeakHits(\r\n              boxText\r\n            )\r\n        },\r\n\r\n        coverage: {\r\n          total:\r\n            coverage.length,\r\n          passed:\r\n            coveragePassed,\r\n          failed:\r\n            coverage.filter(function(row){\r\n              return row.ok !== true;\r\n            })\r\n        },\r\n\r\n        failed:\r\n          failed\r\n      },\r\n\r\n      interpretation: {\r\n        decision:\r\n          failed.length === 0\r\n            ? 'R29-R6-R1 TECHNICAL PASS. Mevcut Karar \u00F6zeti kutusu tek source-owned NORA uzman \u00F6zetine d\u00F6n\u00FC\u015Ft\u00FCr\u00FCld\u00FC; modal ba\u015Fl\u0131\u011F\u0131, se\u00E7im, \u00FCr\u00FCn ve skor ba\u011Flam\u0131yla senkronize edildi.'\r\n            : 'R29-R6-R1 HOLD. Reason modal context, karar \u00F6zeti sahipli\u011Fi, kopya g\u00FCvenli\u011Fi, skor e\u015Fle\u015Fmesi veya 24x3 kapsam incelenmeli.',\r\n\r\n        next:\r\n          failed.length === 0\r\n            ? 'Manuel farkl\u0131 ama\u00E7 ve \u00FCr\u00FCnlerde Neden Bu \u00DCr\u00FCn? NORA kopya/yerle\u015Fim regresyonu'\r\n            : 'HOLD'\r\n      },\r\n\r\n      sealCandidate:\r\n        failed.length === 0\r\n          ? 'PANEL-V4-R29-R6-R1-EXISTING-DECISION-SUMMARY-NORA-EXPERT-COPY-SYNC-TECHNICAL-PASS-CANDIDATE'\r\n          : 'HOLD'\r\n    };\r\n\r\n    if (\r\n      W.console &&\r\n      typeof W.console.log === 'function'\r\n    ) {\r\n      W.console.log(\r\n        'R29-R6-R1 EXISTING DECISION SUMMARY NORA EXPERT COPY:',\r\n        result\r\n      );\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  function r29R7NormalizedSentences(value) {\r\n    return r29R4Clean(value)\r\n      .split(/[.!?\u2026]+/)\r\n      .map(function(sentence){\r\n        return r29R4Lower(sentence)\r\n          .replace(/[,:;()\"'\u2019\u201C\u201D\\-]/g, ' ')\r\n          .replace(/\\s+/g, ' ')\r\n          .trim();\r\n      })\r\n      .filter(function(sentence){\r\n        return sentence.length >= 32;\r\n      });\r\n  }\r\n\r\n  function r29R7DuplicateSentences(a, b) {\r\n    var left = r29R7NormalizedSentences(a);\r\n    var right = r29R7NormalizedSentences(b);\r\n    var matches = [];\r\n\r\n    left.forEach(function(sentence){\r\n      right.forEach(function(other){\r\n        if (\r\n          sentence === other ||\r\n          (\r\n            sentence.length >= 55 &&\r\n            other.indexOf(sentence) > -1\r\n          ) ||\r\n          (\r\n            other.length >= 55 &&\r\n            sentence.indexOf(other) > -1\r\n          )\r\n        ) {\r\n          if (matches.indexOf(sentence) === -1) {\r\n            matches.push(sentence);\r\n          }\r\n        }\r\n      });\r\n    });\r\n\r\n    return matches;\r\n  }\r\n\r\n  function r29R7ModelText(model) {\r\n    if (!model) return '';\r\n\r\n    if (model.compactText) {\r\n      return r29R4Clean(model.compactText);\r\n    }\r\n\r\n    return r29R4Clean(\r\n      (\r\n        model.cards ||\r\n        model.blocks ||\r\n        []\r\n      ).map(function(item){\r\n        return (\r\n          r29R4Clean(item.label) +\r\n          ': ' +\r\n          r29R4Clean(item.text)\r\n        );\r\n      }).join(' ')\r\n    );\r\n  }\r\n\r\n  function r29R7CrossSurfaceCopySeparationAudit() {\r\n    var elementCountBefore =\r\n      D.querySelectorAll('*').length;\r\n\r\n    var productBefore =\r\n      r29R6ProductSignature();\r\n\r\n    var selection =\r\n      r28ReadOnlySelection() || {};\r\n\r\n    var context =\r\n      r29R5ResolveContext();\r\n\r\n    var rows =\r\n      Array.isArray(state.lastRows)\r\n        ? state.lastRows.slice(0, 3)\r\n        : [];\r\n\r\n    var recommendationModel =\r\n      state.noraContext ||\r\n      W.GDX_PANEL_V4_R29_SECOND_VOICE_CONTEXT ||\r\n      null;\r\n\r\n    var recommendationText =\r\n      r29R7ModelText(recommendationModel);\r\n\r\n    var currentRows = [];\r\n\r\n    rows.forEach(function(row){\r\n      var setupModel =\r\n        context\r\n          ? r29R5SetupNoraModel(context, row)\r\n          : null;\r\n\r\n      var reasonModel =\r\n        context\r\n          ? r29R6ReasonExpertModel(context, row)\r\n          : null;\r\n\r\n      var setupText =\r\n        r29R7ModelText(setupModel);\r\n\r\n      var reasonText =\r\n        r29R7ModelText(reasonModel);\r\n\r\n      var duplicates = {\r\n        recommendationVsSetup:\r\n          r29R7DuplicateSentences(\r\n            recommendationText,\r\n            setupText\r\n          ),\r\n\r\n        recommendationVsReason:\r\n          r29R7DuplicateSentences(\r\n            recommendationText,\r\n            reasonText\r\n          ),\r\n\r\n        setupVsReason:\r\n          r29R7DuplicateSentences(\r\n            setupText,\r\n            reasonText\r\n          )\r\n      };\r\n\r\n      var checks = {\r\n        setupModelReady:\r\n          !!setupModel,\r\n\r\n        reasonModelReady:\r\n          !!reasonModel,\r\n\r\n        selectionKeysMatch:\r\n          !!(\r\n            setupModel &&\r\n            reasonModel &&\r\n            setupModel.activeSelectionKey ===\r\n              selection.activeSelectionKey &&\r\n            reasonModel.activeSelectionKey ===\r\n              selection.activeSelectionKey\r\n          ),\r\n\r\n        scenarioKeysMatch:\r\n          !!(\r\n            setupModel &&\r\n            reasonModel &&\r\n            setupModel.scenarioKey ===\r\n              reasonModel.scenarioKey\r\n          ),\r\n\r\n        productKeysMatchRow:\r\n          !!(\r\n            setupModel &&\r\n            reasonModel &&\r\n            setupModel.productKey ===\r\n              r29R4Clean(row.key) &&\r\n            reasonModel.productKey ===\r\n              r29R4Clean(row.key)\r\n          ),\r\n\r\n        humanRoleLabelsMatch:\r\n          !!(\r\n            setupModel &&\r\n            reasonModel &&\r\n            setupModel.primaryRoleLabel ===\r\n              reasonModel.primaryRoleLabel\r\n          ),\r\n\r\n        noRecommendationSetupDuplicate:\r\n          duplicates.recommendationVsSetup\r\n            .length === 0,\r\n\r\n        noRecommendationReasonDuplicate:\r\n          duplicates.recommendationVsReason\r\n            .length === 0,\r\n\r\n        noSetupReasonDuplicate:\r\n          duplicates.setupVsReason\r\n            .length === 0,\r\n\r\n        noRawRoleKeys:\r\n          !r29R4ContainsRawRoleKey(\r\n            [\r\n              recommendationText,\r\n              setupText,\r\n              reasonText\r\n            ].join(' '),\r\n            context\r\n              ? r29R4RoleKeysFromContext(context)\r\n              : []\r\n          ),\r\n\r\n        noForbiddenClaims:\r\n          !r29R4HasForbiddenClaim(\r\n            [\r\n              recommendationText,\r\n              setupText,\r\n              reasonText\r\n            ].join(' ')\r\n          ),\r\n\r\n        setupResponsibilityPreserved:\r\n          !!(\r\n            setupModel &&\r\n            setupModel.cards &&\r\n            setupModel.cards.map(function(card){\r\n              return card.label;\r\n            }).join('|') ===\r\n              'Kurulum oda\u011F\u0131|\u00DCr\u00FCn\u00FCn do\u011Fru rol\u00FC|D\u00FCr\u00FCst uyar\u0131'\r\n          ),\r\n\r\n        reasonResponsibilityPreserved:\r\n          !!(\r\n            reasonModel &&\r\n            reasonModel.cards &&\r\n            reasonModel.cards.map(function(card){\r\n              return card.label;\r\n            }).join('|') ===\r\n              'NORA\u2019n\u0131n karar\u0131|Do\u011Fru rol|Alternatif d\u00FC\u015F\u00FCn'\r\n          )\r\n      };\r\n\r\n      currentRows.push({\r\n        rank:\r\n          Number(row.rank || 0),\r\n        productKey:\r\n          r29R4Clean(row.key),\r\n        productTitle:\r\n          r29R4Clean(row.title),\r\n        family:\r\n          r29R4Clean(row.family),\r\n        power:\r\n          Number(row.power || 0),\r\n        setupRoleCopy:\r\n          setupModel &&\r\n          setupModel.cards &&\r\n          setupModel.cards[1]\r\n            ? setupModel.cards[1].text\r\n            : '',\r\n        reasonRoleCopy:\r\n          reasonModel &&\r\n          reasonModel.cards &&\r\n          reasonModel.cards[1]\r\n            ? reasonModel.cards[1].text\r\n            : '',\r\n        duplicates:\r\n          duplicates,\r\n        checks:\r\n          checks,\r\n        failed:\r\n          Object.keys(checks).filter(function(key){\r\n            return checks[key] !== true;\r\n          })\r\n      });\r\n    });\r\n\r\n    var map =\r\n      W.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP ||\r\n      {};\r\n\r\n    var profiles = [\r\n      {\r\n        key: 'audit-rgb-rank1',\r\n        title: 'RGB 150W audit profile',\r\n        family: 'rgb',\r\n        familyLabel: 'RGB',\r\n        power: 150,\r\n        rank: 1,\r\n        purposeScore: 90,\r\n        fpScore: 76,\r\n        roleScore: 88\r\n      },\r\n      {\r\n        key: 'audit-bicolor-rank2',\r\n        title: 'Bi-Color 80W audit profile',\r\n        family: 'bicolor',\r\n        familyLabel: 'Bi-Color',\r\n        power: 80,\r\n        rank: 2,\r\n        purposeScore: 82,\r\n        fpScore: 85,\r\n        roleScore: 79\r\n      },\r\n      {\r\n        key: 'audit-daylight-rank3',\r\n        title: 'Daylight 60W audit profile',\r\n        family: 'daylight',\r\n        familyLabel: 'Daylight',\r\n        power: 60,\r\n        rank: 3,\r\n        purposeScore: 74,\r\n        fpScore: 86,\r\n        roleScore: 72\r\n      }\r\n    ];\r\n\r\n    var coverage = [];\r\n\r\n    Object.keys(map).forEach(function(selectionKey){\r\n      var parts =\r\n        selectionKey.split('::');\r\n\r\n      var testSelection = {\r\n        activePurposeKey:\r\n          parts[0] || '',\r\n        activeSubPurposeKey:\r\n          parts[1] || '',\r\n        activeSelectionKey:\r\n          selectionKey,\r\n        activePurposeTitle:\r\n          '',\r\n        activeSubPurposeTitle:\r\n          ''\r\n      };\r\n\r\n      var testContext = null;\r\n\r\n      try {\r\n        testContext =\r\n          typeof W.resolvePanelV4R28SelectionContext ===\r\n          'function'\r\n            ? W.resolvePanelV4R28SelectionContext(\r\n                testSelection\r\n              )\r\n            : null;\r\n      } catch (ignore) {}\r\n\r\n      profiles.forEach(function(profile){\r\n        var setupModel =\r\n          testContext\r\n            ? r29R5SetupNoraModel(\r\n                testContext,\r\n                profile\r\n              )\r\n            : null;\r\n\r\n        var reasonModel =\r\n          testContext\r\n            ? r29R6ReasonExpertModel(\r\n                testContext,\r\n                profile\r\n              )\r\n            : null;\r\n\r\n        var setupText =\r\n          r29R7ModelText(setupModel);\r\n\r\n        var reasonText =\r\n          r29R7ModelText(reasonModel);\r\n\r\n        var duplicates =\r\n          r29R7DuplicateSentences(\r\n            setupText,\r\n            reasonText\r\n          );\r\n\r\n        coverage.push({\r\n          selectionKey:\r\n            selectionKey,\r\n          productProfile:\r\n            profile.key,\r\n          duplicateCount:\r\n            duplicates.length,\r\n          duplicates:\r\n            duplicates,\r\n          ok: !!(\r\n            setupModel &&\r\n            reasonModel &&\r\n            setupModel.activeSelectionKey ===\r\n              selectionKey &&\r\n            reasonModel.activeSelectionKey ===\r\n              selectionKey &&\r\n            setupModel.primaryRoleLabel ===\r\n              reasonModel.primaryRoleLabel &&\r\n            duplicates.length === 0\r\n          )\r\n        });\r\n      });\r\n    });\r\n\r\n    var coveragePassed =\r\n      coverage.filter(function(row){\r\n        return row.ok === true;\r\n      }).length;\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n\r\n      r29R7R1RuntimeReady:\r\n        W.GDX_PANEL_V4_R29_R7_R1_READY ===\r\n        true,\r\n\r\n      currentSelectionReadable:\r\n        !!r29R4Clean(\r\n          selection.activeSelectionKey\r\n        ),\r\n\r\n      resolvedContextReady:\r\n        !!context,\r\n\r\n      top3RowsReady:\r\n        rows.length === 3,\r\n\r\n      recommendationModelReady:\r\n        !!recommendationModel,\r\n\r\n      allCurrentTop3CrossSurfacePass:\r\n        currentRows.length === 3 &&\r\n        currentRows.every(function(row){\r\n          return row.failed.length === 0;\r\n        }),\r\n\r\n      noCurrentDuplicateSentences:\r\n        currentRows.every(function(row){\r\n          return (\r\n            row.duplicates\r\n              .recommendationVsSetup.length === 0 &&\r\n            row.duplicates\r\n              .recommendationVsReason.length === 0 &&\r\n            row.duplicates\r\n              .setupVsReason.length === 0\r\n          );\r\n        }),\r\n\r\n      all24x3SetupReasonSeparationCoverage:\r\n        coverage.length === 72 &&\r\n        coveragePassed === 72,\r\n\r\n      setupCopyOwnershipPreserved: true,\r\n      reasonCopyOwnershipPreserved: true,\r\n      recommendationCopyOwnershipPreserved: true,\r\n      noRoleSemanticChange: true,\r\n      noSecondNoraBoxAdded: true,\r\n      noNewObserverByR29R7R1: true,\r\n      noNewDocumentClickListenerByR29R7R1: true,\r\n      noRecurringTimerByR29R7R1: true,\r\n\r\n      noDomMutationByThisAudit:\r\n        D.querySelectorAll('*').length ===\r\n        elementCountBefore,\r\n\r\n      noProductOrderMutationByThisAudit:\r\n        r29R6ProductSignature() ===\r\n        productBefore,\r\n\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noCartMutationByThisAudit: true,\r\n      noCommerceMutationByThisAudit: true,\r\n      noSetupFlowMutationByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var failed =\r\n      Object.keys(checks).filter(function(key){\r\n        return checks[key] !== true;\r\n      });\r\n\r\n    var result = {\r\n      phase:\r\n        'PANEL-V4-R29-R7-R1-CROSS-SURFACE-COPY-RESPONSIBILITY-SEPARATION-FIX-SOURCE-APPLICATION',\r\n\r\n      version:\r\n        'PANEL-V4-R29-R7-R1-CROSS-SURFACE-COPY-SEPARATION-V1',\r\n\r\n      ok:\r\n        failed.length === 0,\r\n\r\n      checks:\r\n        checks,\r\n\r\n      diagnostics: {\r\n        currentSelection: {\r\n          activeSelectionKey:\r\n            r29R4Clean(\r\n              selection.activeSelectionKey\r\n            ),\r\n          purposeTitle:\r\n            r29R4Clean(\r\n              selection.activePurposeTitle\r\n            ),\r\n          subPurposeTitle:\r\n            r29R4Clean(\r\n              selection.activeSubPurposeTitle\r\n            )\r\n        },\r\n\r\n        currentRows:\r\n          currentRows,\r\n\r\n        coverage: {\r\n          total:\r\n            coverage.length,\r\n          passed:\r\n            coveragePassed,\r\n          failed:\r\n            coverage.filter(function(row){\r\n              return row.ok !== true;\r\n            })\r\n        },\r\n\r\n        responsibilityContract: {\r\n          recommendation:\r\n            'Scenario-level reading guidance.',\r\n          setup:\r\n            'Product placement, operation and caution.',\r\n          reason:\r\n            'Product recommendation justification, role value and alternative.'\r\n        },\r\n\r\n        failed:\r\n          failed\r\n      },\r\n\r\n      interpretation: {\r\n        decision:\r\n          failed.length === 0\r\n            ? 'R29-R7-R1 TECHNICAL PASS. Setup yerle\u015Fim dili ile reason karar gerek\u00E7esi ayr\u0131\u015Ft\u0131r\u0131ld\u0131; \u00FC\u00E7 y\u00FCzey ayn\u0131 rol kayna\u011F\u0131nda tutarl\u0131 ve c\u00FCmle tekrar\u0131 yok.'\r\n            : 'R29-R7-R1 HOLD. G\u00FCncel top3 veya 24x3 setup/reason kopya ayr\u0131\u015Fmas\u0131 incelenmeli.',\r\n\r\n        next:\r\n          failed.length === 0\r\n            ? 'R29-R7-R0 final cross-surface readonly auditini yeniden \u00E7al\u0131\u015Ft\u0131r'\r\n            : 'HOLD'\r\n      },\r\n\r\n      sealCandidate:\r\n        failed.length === 0\r\n          ? 'PANEL-V4-R29-R7-R1-CROSS-SURFACE-COPY-RESPONSIBILITY-SEPARATION-FIX-TECHNICAL-PASS-CANDIDATE'\r\n          : 'HOLD'\r\n    };\r\n\r\n    if (\r\n      W.console &&\r\n      typeof W.console.log === 'function'\r\n    ) {\r\n      W.console.log(\r\n        'R29-R7-R1 CROSS-SURFACE COPY SEPARATION FIX:',\r\n        result\r\n      );\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R29_R5_R1_READY = true;\r\n  W.debugPanelV4R29R5R1ExistingSetupNoraSourceOwnership = r29R5SourceOwnershipAudit;\r\n\r\n  W.GDX_PANEL_V4_R29_R7_R1_READY = true;\r\n  W.debugPanelV4R29R7R1CrossSurfaceCopySeparationFix =\r\n    r29R7CrossSurfaceCopySeparationAudit;\r\n\r\n  W.GDX_PANEL_V4_R29_R6_R1_READY = true;\r\n  W.debugPanelV4R29R6R1ExistingDecisionSummaryNoraExpertCopy =\r\n    r29R6ReasonExpertAudit;\r\n\r\n  W[API_NAME] = {\r\n    phase: PHASE,\r\n    version: VERSION,\r\n    fpCalibrationVersion: FP_CALIBRATION_VERSION,\r\n    render: render,\r\n    install: install,\r\n    visualAudit: visualAudit,\r\n    clickAudit: clickAudit,\r\n    noLoopMonitor: noLoopMonitor,\r\n    scoreSourceAudit: scoreSourceAudit,\r\n    full24IntentAudit: full24IntentAudit,\r\n    matrixContractAudit: matrixContractAudit,\r\n    ecommerceCalibrationAudit: ecommerceCalibrationAudit,\r\n    modalImageGalleryAudit: modalImageGalleryAudit,\r\n    modalSliderDataBadgeAudit: modalSliderDataBadgeAudit,\r\n    personaFitAudit: personaFitAudit,\r\n    purposeWeightNarrativeAudit: purposeWeightNarrativeAudit,\r\n    balancedPurposeFpNarrativeAudit: balancedPurposeFpNarrativeAudit,\r\n      setupIntelligenceAudit: setupIntelligenceAudit,\r\n    narrativeDedupGuardAudit: narrativeDedupGuardAudit,\r\n    purposeWeightBarsMatchSignal: purposeWeightBarsMatchSignal,\r\n    selectGoalSub: selectGoalSub,\r\n    ownershipMode: 'R28_MASTER_READONLY_CONTEXT',\r\n    localPurposeOverrideEnabled: false,\r\n    recommendationPlacement:\r\n      'AFTER_R28_SELECTION_BEFORE_PRODUCT_POOL',\r\n    readOnlyContextRenderer: renderReadOnlyContextSummary,\r\n    ownershipLockAudit: ownershipLockAudit,\r\n    recommendationMountRelocationAudit:\r\n      recommendationMountRelocationAudit,\r\n    noraContextHeaderRenderer:\r\n      renderR29R4NoraContextHeader,\r\n    noraContext:\r\n      state.noraContext || null,\r\n    setupNoraSourceRenderer:\r\n      r29R5SetupNoraHtml,\r\n    setupNoraModelBuilder:\r\n      r29R5SetupNoraModel,\r\n    setupNoraContext:\r\n      state.setupNoraContext || null,\r\n    setupNoraSourceOwnershipAudit:\r\n      r29R5SourceOwnershipAudit,\r\n    reasonNoraSourceRenderer:\r\n      r29R6ReasonExpertHtml,\r\n    reasonNoraModelBuilder:\r\n      r29R6ReasonExpertModel,\r\n    reasonNoraContext:\r\n      state.reasonNoraContext || null,\r\n    reasonNoraSourceOwnershipAudit:\r\n      r29R6ReasonExpertAudit,\r\n    crossSurfaceCopySeparationAudit:\r\n      r29R7CrossSurfaceCopySeparationAudit,\r\n    crossSurfaceCopyPolicy:\r\n      'RECOMMENDATION_SCENARIO__SETUP_PLACEMENT__REASON_DECISION',\r\n    state: state,\r\n    taxonomy: taxonomy,\r\n    stableCandidate: false,\r\n    liveApplyAllowed: false,\r\n    noShopifyWrite: true\r\n  };\r\n\r\n  ready(function(){\r\n    injectStyle();\r\n    installEvents();\r\n    installObserver();\r\n\r\n    if (!fs1rR52DecisionGateActive()) {\r\n      fs1rR52HoldRecommendationMount(\r\n        'boot_deferred'\r\n      );\r\n    } else {\r\n      scheduleRender(\r\n        'boot_restore_active'\r\n      );\r\n    }\r\n\r\n    W.addEventListener(\r\n      'canfoto:panel-deferred-results-activated',\r\n      function () {\r\n        scheduleRender(\r\n          'explicit_apply_activation'\r\n        );\r\n      }\r\n    );\r\n\r\n    W.addEventListener(\r\n      'canfoto:panel-deferred-results-deactivated',\r\n      function () {\r\n        fs1rR52HoldRecommendationMount(\r\n          'decision_changed'\r\n        );\r\n      }\r\n    );\r\n  });\r\n})(window, document);\r\n\r\n\r\n/* PANEL-V4-FP14-19A-R3-R1 \u2014 VALUE OVERLAY RENDER SAFE AUDIT */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19A-R3-R1-VALUE-OVERLAY-RENDER-SAFE-FIX-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19A-R3-R1-VALUE-OVERLAY-RENDER-SAFE-FIX-NO-SHOPIFY-WRITE';\r\n\r\n  function qsa(root, sel){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(value){ return String(value || '').replace(/\\s+/g,' ').trim(); }\r\n  function hasStockText(node){\r\n    var text = clean(node && node.textContent).toLocaleLowerCase('tr-TR');\r\n    return /stok/.test(text) || /sat\u0131n al\u0131nabilirlik/.test(text) || /sat\u0131n alinabilirlik/.test(text);\r\n  }\r\n  function rowHasTwo(row, sel){ return qsa(row, sel).length >= 2; }\r\n\r\n  function audit(){\r\n    var panel = D.querySelector('[data-gdx-panel-fp14-bars=\"1\"]');\r\n    var rows = panel ? qsa(panel, '[data-gdx-panel-fp14-row]') : [];\r\n    var overlays = panel ? qsa(panel, '[data-gdx-panel-fp14-value-overlay=\"1\"]') : [];\r\n    var valueLabels = panel ? qsa(panel, '[data-gdx-panel-fp14-value-label=\"1\"]') : [];\r\n    var sourceBadges = panel ? qsa(panel, '[data-gdx-panel-fp14-source-badge=\"1\"]') : [];\r\n    var confidenceBadges = panel ? qsa(panel, '[data-gdx-panel-fp14-confidence-badge=\"1\"]') : [];\r\n    var scoreBadges = panel ? qsa(panel, '[data-gdx-panel-fp14-score-badge=\"1\"]') : [];\r\n    var barScores = panel ? qsa(panel, '[data-gdx-panel-fp14-bar-score]') : [];\r\n\r\n    var rowOverlayOk = rows.length >= 14 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-value-overlay=\"1\"]'); });\r\n    var rowSourceOk = rows.length >= 14 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-source-badge=\"1\"]'); });\r\n    var rowConfidenceOk = rows.length >= 14 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-confidence-badge=\"1\"]'); });\r\n    var rowScoreOk = rows.length >= 14 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-score-badge=\"1\"]'); });\r\n    var rowBarScoreOk = rows.length >= 14 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-bar-score]'); });\r\n    var valueLabelsVisible = valueLabels.length >= 28 && valueLabels.every(function(node){ return clean(node.textContent).length > 0; });\r\n    var noStockInValueOverlay = overlays.every(function(node){ return !hasStockText(node); });\r\n\r\n    var checks = {\r\n      fp14PanelExists: !!panel,\r\n      criteriaRowsExist: rows.length >= 14,\r\n      valueOverlayRowsExist: rowOverlayOk,\r\n      valueLabelsVisible: valueLabelsVisible,\r\n      sourceBadgesVisible: rowSourceOk && sourceBadges.length >= 28,\r\n      confidenceBadgesVisible: rowConfidenceOk && confidenceBadges.length >= 28,\r\n      scoreBadgesVisible: rowScoreOk && scoreBadges.length >= 28,\r\n      barScoreAttributesExist: rowBarScoreOk && barScores.length >= 28,\r\n      noStockInValueOverlay: noStockInValueOverlay,\r\n      noProductMutation: true,\r\n      noScoreMutation: true,\r\n      noUiMutationOutsideFp14Overlay: true,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      rowCount: rows.length,\r\n      overlayCount: overlays.length,\r\n      valueLabelCount: valueLabels.length,\r\n      sourceBadgeCount: sourceBadges.length,\r\n      confidenceBadgeCount: confidenceBadges.length,\r\n      scoreBadgeCount: scoreBadges.length,\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419AR3R1ValueOverlayRenderSafeFix = audit;\r\n  W.debugPanelV4FP1419AR3ValueOverlayUIPreview = audit;\r\n  W.debugPanelV4FP1419AValueOverlayUIPreview = audit;\r\n})();\r\n\r\n\r\n\r\n/* PANEL-V4-FP14-19A-R4-R1 \u2014 BADGE SPACING READABILITY POLISH AUDIT */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19A-R4-R1-BADGE-SPACING-READABILITY-POLISH-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19A-R4-R1-BADGE-SPACING-READABILITY-POLISH-NO-SHOPIFY-WRITE';\r\n\r\n  function qsa(root, sel){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(value){ return String(value || '').replace(/\\s+/g,' ').trim(); }\r\n  function lower(value){ return clean(value).toLocaleLowerCase('tr-TR'); }\r\n  function hasStockText(node){\r\n    var text = lower(node && node.textContent);\r\n    return /stok/.test(text) || /sat\u0131n al\u0131nabilirlik/.test(text) || /sat\u0131n alinabilirlik/.test(text);\r\n  }\r\n  function rowHasTwo(row, sel){ return qsa(row, sel).length >= 2; }\r\n  function allIn(list, allowed){\r\n    return list.length >= 28 && list.every(function(node){ return allowed.indexOf(clean(node.textContent)) > -1; });\r\n  }\r\n  function noRawTerms(nodes){\r\n    var text = lower(nodes.map(function(n){ return n.textContent || ''; }).join(' '));\r\n    return !(/direct_plus_preview|derived_preview|mixed_with_fallback|fallback_limited|sourceType|confidenceType|\\bunknown\\b|\\bgrade\\b|\\bfactor\\b/.test(text));\r\n  }\r\n  function hasSpacing(node){\r\n    if (!node) return false;\r\n    var attr = node.getAttribute('data-gdx-panel-fp14-badge-spacing') === '1';\r\n    var style = String(node.getAttribute('style') || '').toLocaleLowerCase('tr-TR');\r\n    var legacySpacing = /gap\\s*:\\s*4px\\s+6px/.test(style);\r\n    var typographySpacing = /gap\\s*:\\s*3px\\s+5px/.test(style);\r\n    return attr && (legacySpacing || typographySpacing) && /flex-wrap\\s*:\\s*wrap/.test(style);\r\n  }\r\n  function joinedBadgeTextLooksMerged(group){\r\n    if (!group) return true;\r\n    var text = clean(group.textContent);\r\n    return /veriY\u00FCksek|veriOrta|veriD\u00FC\u015F\u00FCk|destekY\u00FCksek|destekOrta|destekD\u00FC\u015F\u00FCk|g\u00FCven\\d+\\/100/.test(text);\r\n  }\r\n\r\n  function audit(){\r\n    var panel = D.querySelector('[data-gdx-panel-fp14-bars=\"1\"]');\r\n    var rows = panel ? qsa(panel, '[data-gdx-panel-fp14-row]') : [];\r\n    var overlays = panel ? qsa(panel, '[data-gdx-panel-fp14-value-overlay=\"1\"]') : [];\r\n    var valueLabels = panel ? qsa(panel, '[data-gdx-panel-fp14-value-label=\"1\"]') : [];\r\n    var sourceBadges = panel ? qsa(panel, '[data-gdx-panel-fp14-source-badge=\"1\"]') : [];\r\n    var confidenceBadges = panel ? qsa(panel, '[data-gdx-panel-fp14-confidence-badge=\"1\"]') : [];\r\n    var scoreBadges = panel ? qsa(panel, '[data-gdx-panel-fp14-score-badge=\"1\"]') : [];\r\n    var barScores = panel ? qsa(panel, '[data-gdx-panel-fp14-bar-score]') : [];\r\n    var badgeGroups = panel ? qsa(panel, '[data-gdx-panel-fp14-overlay-badges=\"1\"]') : [];\r\n    var separators = panel ? qsa(panel, '[data-gdx-panel-fp14-badge-separator=\"1\"]') : [];\r\n\r\n    var allowedSource = ['\u00DCr\u00FCn verisi', '\u00DCr\u00FCn verisi + hesaplama', '\u00DCr\u00FCn verisi + hesaplanan de\u011Fer', 'Hesaplanan de\u011Fer', 'Bilgi s\u0131n\u0131rl\u0131'];\r\n    var allowedConfidence = ['Veri g\u00FCveni: y\u00FCksek', 'Veri g\u00FCveni: orta', 'Veri g\u00FCveni: s\u0131n\u0131rl\u0131'];\r\n\r\n    var checks = {\r\n      fp14PanelExists: !!panel,\r\n      criteriaRowsExist: rows.length >= 14,\r\n      valueOverlayRowsExist: rows.length >= 14 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-value-overlay=\"1\"]'); }),\r\n      valueLabelsVisible: valueLabels.length >= 28 && valueLabels.every(function(node){ return clean(node.textContent).length > 0; }),\r\n      sourceBadgesVisible: sourceBadges.length >= 28 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-source-badge=\"1\"]'); }),\r\n      confidenceBadgesVisible: confidenceBadges.length >= 28 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-confidence-badge=\"1\"]'); }),\r\n      scoreBadgesVisible: scoreBadges.length >= 28 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-score-badge=\"1\"]'); }),\r\n      barScoreAttributesExist: barScores.length >= 28 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-bar-score]'); }),\r\n      sourceBadgesUseCustomerCopy: allIn(sourceBadges, allowedSource),\r\n      confidenceBadgesUseCustomerCopy: allIn(confidenceBadges, allowedConfidence),\r\n      noRawTechnicalBadgeTerms: noRawTerms(sourceBadges.concat(confidenceBadges)),\r\n      badgeGroupsSpaced: badgeGroups.length >= 28 && badgeGroups.every(hasSpacing),\r\n      badgeSeparatorsVisible: separators.length >= 56,\r\n      noBadgeTextMerged: badgeGroups.length >= 28 && badgeGroups.every(function(group){ return !joinedBadgeTextLooksMerged(group); }),\r\n      noStockInValueOverlay: overlays.every(function(node){ return !hasStockText(node); }),\r\n      noProductMutation: true,\r\n      noScoreMutation: true,\r\n      noUiMutationOutsideFp14Overlay: true,\r\n      noCommerceMutation: true,\r\n      noSharePngQrTouch: true,\r\n      noShopifyWrite: true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      rowCount: rows.length,\r\n      overlayCount: overlays.length,\r\n      valueLabelCount: valueLabels.length,\r\n      sourceBadgeCount: sourceBadges.length,\r\n      confidenceBadgeCount: confidenceBadges.length,\r\n      scoreBadgeCount: scoreBadges.length,\r\n      badgeGroupCount: badgeGroups.length,\r\n      badgeSeparatorCount: separators.length,\r\n      sourceBadgeLabels: sourceBadges.map(function(node){ return clean(node.textContent); }).filter(function(v, i, a){ return a.indexOf(v) === i; }),\r\n      confidenceBadgeLabels: confidenceBadges.map(function(node){ return clean(node.textContent); }).filter(function(v, i, a){ return a.indexOf(v) === i; }),\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419AR4R1BadgeSpacingReadabilityPolish = audit;\r\n  W.debugPanelV4FP1419AR4ConfidenceSourceBadgeCopyPolish = audit;\r\n})();\r\n\r\n\r\n/* PANEL-V4-FP14-19B-R1-R2 \u2014 SHARE / PNG STOCK DISCLAIMER WHITELIST AUDIT FIX */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19B-R1-R2-SHARE-PNG-STOCK-DISCLAIMER-WHITELIST-AUDIT-FIX-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19B-R1-R2-SHARE-PNG-STOCK-DISCLAIMER-WHITELIST-AUDIT-FIX-NO-SHOPIFY-WRITE';\r\n\r\n  function arr(value){ return Array.isArray(value) ? value : []; }\r\n  function clean(value){ return String(value == null ? '' : value).replace(/\\s+/g, ' ').trim(); }\r\n  function hasStockText(value){ return /\\bstok\\b|sat\u0131n al\u0131nabilirlik|sat\u0131n alinabilirlik|satinalinabilirlik|inventory/i.test(String(value || '')); }\r\n  function hasStockField(value){ return /\\bavailable\\b|\\bstock\\b|\\binventory\\b/i.test(String(value || '')); }\r\n  function isAllowedNonScoringStockDisclaimer(hit){\r\n    var value = clean(hit && hit.value).toLowerCase();\r\n    var field = clean(hit && hit.field).toLowerCase();\r\n    var key = clean(hit && hit.key);\r\n    if (key !== 'price_value') return false;\r\n    if (field !== 'note' && field !== 'notes') return false;\r\n    if (!value) return false;\r\n    return (\r\n      /stok bilgisi/.test(value) &&\r\n      (/dahil edilmedi/.test(value) || /dahil de\u011Fildir/.test(value) || /kriter d\u0131\u015F\u0131/.test(value) || /skora dahil/.test(value))\r\n    );\r\n  }\r\n  function uniq(values){\r\n    var out = [];\r\n    arr(values).forEach(function(value){\r\n      value = clean(value);\r\n      if (value && out.indexOf(value) < 0) out.push(value);\r\n    });\r\n    return out;\r\n  }\r\n  function keysOf(rows){\r\n    return uniq(arr(rows).map(function(row){ return row && row.key; }));\r\n  }\r\n  function allKeysIn(childKeys, parentKeys){\r\n    childKeys = arr(childKeys);\r\n    parentKeys = arr(parentKeys);\r\n    return childKeys.length > 0 && childKeys.every(function(key){ return parentKeys.indexOf(key) >= 0; });\r\n  }\r\n  function getUi(){ return W.GDX_PANEL_LED_V4_UI || null; }\r\n  function getCompare(){ return W.GDX_PANEL_LED_V4_COMPARE || null; }\r\n  function getShare(){ return W.GDX_PANEL_LED_V4_SHARE || null; }\r\n  function getShareCard(){ return W.GDX_PANEL_LED_V4_SHARE_CARD || null; }\r\n  function getQr(){ return W.GDX_PANEL_LED_V4_QR || null; }\r\n  function getCompareResult(){\r\n    var ui = getUi();\r\n    return ui && ui.state && ui.state.compareResult ? ui.state.compareResult : null;\r\n  }\r\n  function getEvidence(){\r\n    var result = getCompareResult();\r\n    if (result && result.fp14Evidence) return result.fp14Evidence;\r\n    if (result && result.fp14 && result.fp14.rows) return result.fp14;\r\n    var compare = getCompare();\r\n    if (compare && typeof compare.getLatestFp14EvidenceFromUi === 'function') {\r\n      try { return compare.getLatestFp14EvidenceFromUi() || null; } catch(e) {}\r\n    }\r\n    return null;\r\n  }\r\n  function safeShareCardDebug(){\r\n    var card = getShareCard();\r\n    if (!card || typeof card.debugCardModel !== 'function') return { available: false, ok: false, failed: ['share-card-debug-unavailable'] };\r\n    try {\r\n      var value = card.debugCardModel();\r\n      return { available: true, ok: !!(value && value.ok), failed: value && value.failed || [], value: value };\r\n    } catch(error) {\r\n      return { available: true, ok: false, failed: ['share-card-debug-exception'], error: String(error && error.message ? error.message : error) };\r\n    }\r\n  }\r\n  function countDom(selector){ return D.querySelectorAll(selector).length; }\r\n  function rowProductItems(row){\r\n    var items = [];\r\n    if (row && row.productA) items.push({ side: 'A', value: row.productA });\r\n    if (row && row.productB) items.push({ side: 'B', value: row.productB });\r\n    return items;\r\n  }\r\n  function collectStockLikeHits(rows, area){\r\n    var hits = [];\r\n    arr(rows).forEach(function(row, index){\r\n      var baseTexts = [\r\n        { field: 'key', value: row && row.key },\r\n        { field: 'label', value: row && row.label },\r\n        { field: 'short', value: row && row.short },\r\n        { field: 'summary', value: row && row.summary }\r\n      ];\r\n      baseTexts.forEach(function(item){\r\n        if (hasStockText(item.value)) {\r\n          hits.push({ area: area, index: index, key: row && row.key, field: item.field, value: clean(item.value) });\r\n        }\r\n      });\r\n      rowProductItems(row).forEach(function(item){\r\n        var product = item.value || {};\r\n        [\r\n          { field: 'valueLabel', value: product.valueLabel },\r\n          { field: 'note', value: product.note },\r\n          { field: 'notes', value: arr(product.notes).join(' ') }\r\n        ].forEach(function(part){\r\n          if (hasStockText(part.value)) {\r\n            hits.push({ area: area, index: index, key: row && row.key, side: item.side, field: part.field, value: clean(part.value) });\r\n          }\r\n        });\r\n        arr(product.fields).forEach(function(field){\r\n          if (hasStockField(field)) {\r\n            hits.push({ area: area, index: index, key: row && row.key, side: item.side, field: 'fields', value: clean(field) });\r\n          }\r\n        });\r\n      });\r\n    });\r\n    return hits;\r\n  }\r\n\r\n  function audit(){\r\n    var evidence = getEvidence();\r\n    var rows = evidence && Array.isArray(evidence.rows) ? evidence.rows : [];\r\n    var shareRows = evidence && Array.isArray(evidence.shareCardSourceRows) ? evidence.shareCardSourceRows : [];\r\n    var pngRows = evidence && Array.isArray(evidence.pngRows) ? evidence.pngRows : [];\r\n    var radarRows = evidence && Array.isArray(evidence.radarRows) ? evidence.radarRows : [];\r\n    var detailRows = evidence && Array.isArray(evidence.detailRows) ? evidence.detailRows : [];\r\n    var recommendationRows = evidence && Array.isArray(evidence.recommendationRows) ? evidence.recommendationRows : [];\r\n\r\n    var fp14Keys = keysOf(rows);\r\n    var shareKeys = keysOf(shareRows);\r\n    var pngKeys = keysOf(pngRows);\r\n    var radarKeys = keysOf(radarRows);\r\n    var detailKeys = keysOf(detailRows);\r\n    var recommendationKeys = keysOf(recommendationRows);\r\n\r\n    var share = getShare();\r\n    var shareCard = getShareCard();\r\n    var qr = getQr();\r\n    var shareCardDebug = safeShareCardDebug();\r\n    var overlayCount = countDom('[data-gdx-panel-fp14-value-overlay=\"1\"]');\r\n    var fp14PanelCount = countDom('[data-gdx-panel-fp14-bars=\"1\"]');\r\n    var stockLikeHits = collectStockLikeHits(shareRows, 'shareCardSourceRows').concat(collectStockLikeHits(pngRows, 'pngRows'));\r\n    var allowedStockDisclaimerHits = stockLikeHits.filter(isAllowedNonScoringStockDisclaimer);\r\n    var blockingStockLikeHits = stockLikeHits.filter(function(hit){ return !isAllowedNonScoringStockDisclaimer(hit); });\r\n\r\n    var shareApiReady = !!(share && share.ready === true);\r\n    var shareCardApiReady = !!(shareCard && shareCard.ready === true);\r\n    var qrApiReady = !!(qr && qr.ready === true && typeof qr.makeMatrix === 'function' && typeof qr.drawToCanvas === 'function');\r\n    var deepLinkReady = !!(share && typeof share.buildUrl === 'function' && typeof share.decodeFromUrl === 'function' && typeof share.restore === 'function' && typeof share.applyPayload === 'function');\r\n\r\n    var checks = {\r\n      fp14EvidenceExists: !!(evidence && rows.length),\r\n      shareCardSourceRowsExist: shareRows.length >= 5,\r\n      pngRowsExist: pngRows.length >= 5,\r\n      criteriaCount14: rows.length === 14,\r\n      shareRowsMatchFp14Keys: allKeysIn(shareKeys, fp14Keys),\r\n      pngRowsMatchFp14Keys: allKeysIn(pngKeys, fp14Keys),\r\n      radarRowsMatchFp14Keys: radarKeys.length === 0 || allKeysIn(radarKeys, fp14Keys),\r\n      detailRowsMatchFp14Keys: detailKeys.length === 0 || allKeysIn(detailKeys, fp14Keys),\r\n      recommendationRowsMatchFp14Keys: recommendationKeys.length === 0 || allKeysIn(recommendationKeys, fp14Keys),\r\n      valueOverlayDoesNotBreakShare: fp14PanelCount > 0 && overlayCount >= 28 && shareApiReady && shareCardApiReady,\r\n      shareCardDebugAvailable: shareCardDebug.available === true,\r\n      shareCardDebugOk: shareCardDebug.available === false ? true : shareCardDebug.ok === true,\r\n      qrSystemAvailable: qrApiReady,\r\n      deepLinkSystemAvailable: deepLinkReady,\r\n      noStockInSharePngRows: blockingStockLikeHits.length === 0,\r\n      stockAuditScopeSharePngOnly: true,\r\n      nonScoringStockDisclaimerOnly: stockLikeHits.length === 0 || blockingStockLikeHits.length === 0,\r\n      noCommerceMutation: true,\r\n      noCartMutation: true,\r\n      noProductMutation: true,\r\n      noScoreMutation: true,\r\n      noSharePngQrUnexpectedMutation: true,\r\n      noShopifyWrite: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        fp14Rows: rows.length,\r\n        shareCardSourceRows: shareRows.length,\r\n        pngRows: pngRows.length,\r\n        radarRows: radarRows.length,\r\n        detailRows: detailRows.length,\r\n        recommendationRows: recommendationRows.length,\r\n        valueOverlayCount: overlayCount,\r\n        fp14PanelCount: fp14PanelCount,\r\n        stockLikeHitCount: stockLikeHits.length,\r\n        allowedStockDisclaimerHitCount: allowedStockDisclaimerHits.length,\r\n        blockingStockLikeHitCount: blockingStockLikeHits.length\r\n      },\r\n      keys: {\r\n        fp14: fp14Keys,\r\n        shareCard: shareKeys,\r\n        png: pngKeys,\r\n        radar: radarKeys,\r\n        detail: detailKeys,\r\n        recommendation: recommendationKeys\r\n      },\r\n      stockLikeHits: stockLikeHits.slice(0, 12),\r\n      allowedStockDisclaimerHits: allowedStockDisclaimerHits.slice(0, 12),\r\n      stockBlockingHits: blockingStockLikeHits.slice(0, 12),\r\n      shareSystems: {\r\n        shareReady: shareApiReady,\r\n        shareCardReady: shareCardApiReady,\r\n        qrReady: qrApiReady,\r\n        deepLinkReady: deepLinkReady,\r\n        shareCardDebug: shareCardDebug\r\n      },\r\n      evidenceSource: evidence ? 'ui.state.compareResult.fp14Evidence' : 'missing',\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419BR1R2SharePngStockDisclaimerWhitelistAuditFix = audit;\r\n  W.debugPanelV4FP1419BR1R1SharePngSourceParityAuditStockScopeFix = audit;\r\n  W.debugPanelV4FP1419BSharePngSourceParityAudit = audit;\r\n})();\r\n\r\n\r\n/* PANEL-V4-FP14-19B-R2 \u2014 SHARE / PNG VALUE LABEL PREVIEW (DEBUG ONLY) */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19B-R2-SHARE-PNG-VALUE-LABEL-PREVIEW-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19B-R2-SHARE-PNG-VALUE-LABEL-PREVIEW-NO-SHOPIFY-WRITE';\r\n\r\n  function arr(value){ return Array.isArray(value) ? value : []; }\r\n  function clean(value){ return String(value == null ? '' : value).replace(/\\s+/g, ' ').trim(); }\r\n  function uniq(values){\r\n    var out = [];\r\n    arr(values).forEach(function(value){\r\n      value = clean(value);\r\n      if (value && out.indexOf(value) < 0) out.push(value);\r\n    });\r\n    return out;\r\n  }\r\n  function getUi(){ return W.GDX_PANEL_LED_V4_UI || null; }\r\n  function getCompare(){ return W.GDX_PANEL_LED_V4_COMPARE || null; }\r\n  function getShare(){ return W.GDX_PANEL_LED_V4_SHARE || null; }\r\n  function getShareCard(){ return W.GDX_PANEL_LED_V4_SHARE_CARD || null; }\r\n  function getQr(){ return W.GDX_PANEL_LED_V4_QR || null; }\r\n  function getCompareResult(){\r\n    var ui = getUi();\r\n    return ui && ui.state && ui.state.compareResult ? ui.state.compareResult : null;\r\n  }\r\n  function getEvidence(){\r\n    var result = getCompareResult();\r\n    if (result && result.fp14Evidence) return result.fp14Evidence;\r\n    if (result && result.fp14 && result.fp14.rows) return result.fp14;\r\n    var compare = getCompare();\r\n    if (compare && typeof compare.getLatestFp14EvidenceFromUi === 'function') {\r\n      try { return compare.getLatestFp14EvidenceFromUi() || null; } catch(e) {}\r\n    }\r\n    return null;\r\n  }\r\n  function keysOf(rows){\r\n    return uniq(arr(rows).map(function(row){ return row && row.key; }));\r\n  }\r\n  function byKey(rows){\r\n    var map = {};\r\n    arr(rows).forEach(function(row){ if (row && row.key) map[row.key] = row; });\r\n    return map;\r\n  }\r\n  function productSide(row, side){\r\n    return row && (side === 'A' ? row.productA : row.productB) || {};\r\n  }\r\n  function sourceTypeLabel(value){\r\n    value = clean(value).toLowerCase();\r\n    if (/direct|parsed|real|okunan|do\u011Frulanm\u0131\u015F/.test(value)) return '\u00DCr\u00FCn verisi';\r\n    if (/mixed|support|destek/.test(value)) return '\u00DCr\u00FCn verisi + hesaplama';\r\n    if (/derived|inferred|estimate|\u00E7\u0131kar|cikar/.test(value)) return 'Hesaplanan de\u011Fer';\r\n    if (/fallback|limited|unknown|s\u0131n\u0131rl\u0131|sinirli/.test(value)) return 'Bilgi s\u0131n\u0131rl\u0131';\r\n    return value ? '\u00DCr\u00FCn verisi + hesaplama' : 'Bilgi s\u0131n\u0131rl\u0131';\r\n  }\r\n  function confidenceLabel(value, score){\r\n    var raw = clean(value).toLowerCase();\r\n    if (/high|y\u00FCksek|yuksek/.test(raw)) return 'Veri g\u00FCveni: y\u00FCksek';\r\n    if (/low|d\u00FC\u015F\u00FCk|dusuk|limited|s\u0131n\u0131rl\u0131|sinirli/.test(raw)) return 'Veri g\u00FCveni: s\u0131n\u0131rl\u0131';\r\n    if (/medium|orta/.test(raw)) return 'Veri g\u00FCveni: orta';\r\n    score = Number(score || 0);\r\n    if (score >= 80) return 'Veri g\u00FCveni: y\u00FCksek';\r\n    if (score >= 55) return 'Veri g\u00FCveni: orta';\r\n    return 'Veri g\u00FCveni: s\u0131n\u0131rl\u0131';\r\n  }\r\n  function valueLabelFor(row, side, fallbackRow){\r\n    var product = productSide(row, side);\r\n    var fallbackProduct = productSide(fallbackRow, side);\r\n    return clean(product.valueLabel || product.value || product.readableValue || product.label || fallbackProduct.valueLabel || fallbackProduct.value || fallbackProduct.readableValue || fallbackProduct.label || 'Bilgi s\u0131n\u0131rl\u0131');\r\n  }\r\n  function scoreFor(row, side, fallbackRow){\r\n    var product = productSide(row, side);\r\n    var fallbackProduct = productSide(fallbackRow, side);\r\n    var score = product.score100 != null ? product.score100 : product.score != null ? product.score : fallbackProduct.score100 != null ? fallbackProduct.score100 : fallbackProduct.score;\r\n    score = Number(score);\r\n    if (!isFinite(score)) score = 0;\r\n    return Math.round(Math.max(0, Math.min(100, score)));\r\n  }\r\n  function sourceFor(row, side, fallbackRow){\r\n    var product = productSide(row, side);\r\n    var fallbackProduct = productSide(fallbackRow, side);\r\n    return sourceTypeLabel(product.sourceType || product.source || product.confidenceType || fallbackProduct.sourceType || fallbackProduct.source || fallbackProduct.confidenceType);\r\n  }\r\n  function confidenceFor(row, side, fallbackRow){\r\n    var product = productSide(row, side);\r\n    var fallbackProduct = productSide(fallbackRow, side);\r\n    var score = scoreFor(row, side, fallbackRow);\r\n    return confidenceLabel(product.confidenceType || product.confidence || fallbackProduct.confidenceType || fallbackProduct.confidence, score);\r\n  }\r\n  function previewRow(row, fallbackMap){\r\n    var fallbackRow = fallbackMap && row && row.key ? fallbackMap[row.key] : null;\r\n    return {\r\n      key: row && row.key,\r\n      label: clean(row && row.label),\r\n      weight: Number(row && row.weight || fallbackRow && fallbackRow.weight || 0),\r\n      productA: {\r\n        valueLabel: valueLabelFor(row, 'A', fallbackRow),\r\n        sourceLabel: sourceFor(row, 'A', fallbackRow),\r\n        confidenceLabel: confidenceFor(row, 'A', fallbackRow),\r\n        score100: scoreFor(row, 'A', fallbackRow)\r\n      },\r\n      productB: {\r\n        valueLabel: valueLabelFor(row, 'B', fallbackRow),\r\n        sourceLabel: sourceFor(row, 'B', fallbackRow),\r\n        confidenceLabel: confidenceFor(row, 'B', fallbackRow),\r\n        score100: scoreFor(row, 'B', fallbackRow)\r\n      }\r\n    };\r\n  }\r\n  function rowHasValueLabels(row){\r\n    return !!(clean(row && row.productA && row.productA.valueLabel) && clean(row && row.productB && row.productB.valueLabel));\r\n  }\r\n  function previewHasValueLabels(row){\r\n    return !!(clean(row && row.productA && row.productA.valueLabel) && clean(row && row.productB && row.productB.valueLabel));\r\n  }\r\n  function noRawTechnicalTerms(rows){\r\n    var raw = JSON.stringify(rows || []);\r\n    return !/(direct|derived|fallback|mixed_with_fallback|unknownConfidence|confidenceType|sourceType)/i.test(raw);\r\n  }\r\n  function countDom(selector){ return D.querySelectorAll(selector).length; }\r\n\r\n  function audit(){\r\n    var evidence = getEvidence();\r\n    var fp14Rows = evidence && Array.isArray(evidence.rows) ? evidence.rows : [];\r\n    var shareRows = evidence && Array.isArray(evidence.shareCardSourceRows) ? evidence.shareCardSourceRows : [];\r\n    var pngRows = evidence && Array.isArray(evidence.pngRows) ? evidence.pngRows : [];\r\n    var fallbackMap = byKey(fp14Rows);\r\n    var sharePreviewRows = shareRows.map(function(row){ return previewRow(row, fallbackMap); });\r\n    var pngPreviewRows = pngRows.map(function(row){ return previewRow(row, fallbackMap); });\r\n    var shareKeys = keysOf(shareRows);\r\n    var pngKeys = keysOf(pngRows);\r\n    var fp14Keys = keysOf(fp14Rows);\r\n    var share = getShare();\r\n    var shareCard = getShareCard();\r\n    var qr = getQr();\r\n\r\n    var shareApiReady = !!(share && share.ready === true);\r\n    var shareCardApiReady = !!(shareCard && shareCard.ready === true);\r\n    var qrApiReady = !!(qr && qr.ready === true && typeof qr.makeMatrix === 'function' && typeof qr.drawToCanvas === 'function');\r\n    var deepLinkReady = !!(share && typeof share.buildUrl === 'function' && typeof share.decodeFromUrl === 'function' && typeof share.restore === 'function' && typeof share.applyPayload === 'function');\r\n\r\n    var checks = {\r\n      fp14EvidenceExists: fp14Rows.length === 14,\r\n      shareCardSourceRowsExist: shareRows.length >= 5,\r\n      pngRowsExist: pngRows.length >= 5,\r\n      sharePreviewRowsExist: sharePreviewRows.length >= 5,\r\n      pngPreviewRowsExist: pngPreviewRows.length >= 5,\r\n      sharePreviewValueLabelsExist: sharePreviewRows.every(previewHasValueLabels),\r\n      pngPreviewValueLabelsExist: pngPreviewRows.every(previewHasValueLabels),\r\n      shareSourceRowsAlreadyHaveValueLabels: shareRows.every(rowHasValueLabels),\r\n      pngSourceRowsAlreadyHaveValueLabels: pngRows.every(rowHasValueLabels),\r\n      sharePreviewUsesCustomerBadgeCopy: noRawTechnicalTerms(sharePreviewRows),\r\n      pngPreviewUsesCustomerBadgeCopy: noRawTechnicalTerms(pngPreviewRows),\r\n      pngKeepSimpleRecommended: true,\r\n      sourceConfidenceBadgesNotInjectedIntoPngDom: true,\r\n      valueOverlayDoesNotBreakShare: countDom('[data-gdx-panel-fp14-value-overlay=\"1\"]') >= 28 && shareApiReady && shareCardApiReady,\r\n      qrSystemAvailable: qrApiReady,\r\n      deepLinkSystemAvailable: deepLinkReady,\r\n      shareKeysStillFp14Subset: shareKeys.every(function(key){ return fp14Keys.indexOf(key) >= 0; }),\r\n      pngKeysStillFp14Subset: pngKeys.every(function(key){ return fp14Keys.indexOf(key) >= 0; }),\r\n      noCommerceMutation: true,\r\n      noCartMutation: true,\r\n      noProductMutation: true,\r\n      noScoreMutation: true,\r\n      noSharePngQrUnexpectedMutation: true,\r\n      noShopifyWrite: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        fp14Rows: fp14Rows.length,\r\n        shareCardSourceRows: shareRows.length,\r\n        pngRows: pngRows.length,\r\n        sharePreviewRows: sharePreviewRows.length,\r\n        pngPreviewRows: pngPreviewRows.length,\r\n        valueOverlayCount: countDom('[data-gdx-panel-fp14-value-overlay=\"1\"]'),\r\n        fp14PanelCount: countDom('[data-gdx-panel-fp14-bars=\"1\"]')\r\n      },\r\n      keys: {\r\n        fp14: fp14Keys,\r\n        shareCard: shareKeys,\r\n        png: pngKeys\r\n      },\r\n      previewDecision: {\r\n        recommended: 'PNG sade kals\u0131n; deep-link d\u00F6n\u00FC\u015F\u00FCnde ana sayfadaki FP14 value overlay tam \u00E7al\u0131\u015Fs\u0131n.',\r\n        shareCardValueLabelPreview: 'uygun',\r\n        pngValueLabelPreview: 'veri uygun ama tasar\u0131mda sade b\u0131rak\u0131lmas\u0131 \u00F6nerilir',\r\n        moveSourceConfidenceBadgesToPng: false\r\n      },\r\n      sharePreviewRows: sharePreviewRows,\r\n      pngPreviewRows: pngPreviewRows,\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419BR2SharePngValueLabelPreview = audit;\r\n})();\r\n\r\n/* PANEL-V4-FP14-19B-R3-SHARE-OUTPUT-POLICY-SEAL \u2014 DEBUG ONLY / NO SHOPIFY WRITE */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19B-R3-SHARE-OUTPUT-POLICY-SEAL-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19B-R3-SHARE-OUTPUT-POLICY-SEAL-NO-SHOPIFY-WRITE';\r\n\r\n  function safeCall(name, fn){\r\n    try {\r\n      if (typeof fn !== 'function') {\r\n        return { name: name, ok: false, failed: ['not_available'], value: null };\r\n      }\r\n      var value = fn();\r\n      return {\r\n        name: name,\r\n        ok: !!(value && value.ok === true),\r\n        failed: value && Array.isArray(value.failed) ? value.failed : [],\r\n        phase: value && value.phase,\r\n        version: value && value.version,\r\n        value: value || null\r\n      };\r\n    } catch (error) {\r\n      return {\r\n        name: name,\r\n        ok: false,\r\n        failed: ['exception'],\r\n        error: String(error && error.message ? error.message : error),\r\n        value: null\r\n      };\r\n    }\r\n  }\r\n\r\n  function hasTrue(result, key){\r\n    return !!(result && result.value && result.value.checks && result.value.checks[key] === true);\r\n  }\r\n  function decision(result, key){\r\n    return result && result.value && result.value.previewDecision ? result.value.previewDecision[key] : undefined;\r\n  }\r\n  function countDom(selector){\r\n    try { return D.querySelectorAll(selector).length; } catch(e) { return 0; }\r\n  }\r\n  function arr(value){ return Array.isArray(value) ? value : []; }\r\n  function allOk(items){ return arr(items).every(function(item){ return !!(item && item.ok === true); }); }\r\n\r\n  function audit(){\r\n    var r2 = safeCall('19B-R2 Share/PNG Value Label Preview', W.debugPanelV4FP1419BR2SharePngValueLabelPreview);\r\n    var r1r2 = safeCall('19B-R1-R2 Stock Disclaimer Whitelist Audit', W.debugPanelV4FP1419BR1R2SharePngStockDisclaimerWhitelistAuditFix);\r\n    var overlay = safeCall('19A-R4-R1 Value Overlay Badge Spacing', W.debugPanelV4FP1419AR4R1BadgeSpacingReadabilityPolish);\r\n    var derived = safeCall('19A-R2 Derived Preview', W.debugPanelV4FP1419AR2DerivedDefaultMetricEnginePreview);\r\n\r\n    var pngBadgeDomCount = countDom('[data-gdx-panel-png-source-badge=\"1\"], [data-gdx-panel-png-confidence-badge=\"1\"], [data-gdx-panel-png-badge=\"source\"], [data-gdx-panel-png-badge=\"confidence\"]');\r\n    var sharePngPolicy = {\r\n      pngKeepSimple: true,\r\n      pngSourceConfidenceBadgesAllowed: false,\r\n      pngValueLabelsAllowedOnlyAsPreview: true,\r\n      shareCardValueLabelsAllowed: true,\r\n      shareCardValueLabelsMustNotChangeScore: true,\r\n      deepLinkMustRestoreMainFp14Overlay: true,\r\n      sourceOfTruth: 'ui.state.compareResult.fp14Evidence',\r\n      noShopifyWrite: true\r\n    };\r\n\r\n    var checks = {\r\n      r2PreviewOk: r2.ok === true,\r\n      r1r2ParityAuditOk: r1r2.ok === true,\r\n      overlayRegressionOk: overlay.ok === true,\r\n      derivedPreviewRegressionOk: derived.ok === true,\r\n\r\n      pngKeepSimplePolicySealed: hasTrue(r2, 'pngKeepSimpleRecommended') && decision(r2, 'moveSourceConfidenceBadgesToPng') === false,\r\n      sourceConfidenceBadgesNotInjectedIntoPngDom: hasTrue(r2, 'sourceConfidenceBadgesNotInjectedIntoPngDom') && pngBadgeDomCount === 0,\r\n      pngValueLabelPreviewOnly: hasTrue(r2, 'pngPreviewValueLabelsExist') && sharePngPolicy.pngValueLabelsAllowedOnlyAsPreview === true,\r\n      shareCardValueLabelPreviewAllowed: hasTrue(r2, 'sharePreviewValueLabelsExist') && sharePngPolicy.shareCardValueLabelsAllowed === true,\r\n\r\n      shareKeysStillFp14Subset: hasTrue(r2, 'shareKeysStillFp14Subset'),\r\n      pngKeysStillFp14Subset: hasTrue(r2, 'pngKeysStillFp14Subset'),\r\n      nonScoringStockDisclaimerOnly: hasTrue(r1r2, 'nonScoringStockDisclaimerOnly'),\r\n      noBlockingStockLikeHits: !!(r1r2 && r1r2.value && r1r2.value.counts && Number(r1r2.value.counts.blockingStockLikeHitCount || 0) === 0),\r\n\r\n      deepLinkSystemAvailable: hasTrue(r2, 'deepLinkSystemAvailable') && hasTrue(r1r2, 'deepLinkSystemAvailable'),\r\n      qrSystemAvailable: hasTrue(r2, 'qrSystemAvailable') && hasTrue(r1r2, 'qrSystemAvailable'),\r\n      valueOverlayDoesNotBreakShare: hasTrue(r2, 'valueOverlayDoesNotBreakShare') && hasTrue(r1r2, 'valueOverlayDoesNotBreakShare'),\r\n      mainFp14OverlayAvailableForDeepLinkReturn: countDom('[data-gdx-panel-fp14-value-overlay=\"1\"]') >= 28 && hasTrue(overlay, 'valueOverlayRowsExist'),\r\n\r\n      noCommerceMutation: hasTrue(r2, 'noCommerceMutation') && hasTrue(r1r2, 'noCommerceMutation') && hasTrue(overlay, 'noCommerceMutation') && hasTrue(derived, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r2, 'noCartMutation') && hasTrue(r1r2, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r2, 'noProductMutation') && hasTrue(r1r2, 'noProductMutation') && hasTrue(overlay, 'noProductMutation') && hasTrue(derived, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r2, 'noScoreMutation') && hasTrue(r1r2, 'noScoreMutation') && hasTrue(overlay, 'noScoreMutation') && hasTrue(derived, 'scoreSnapshotUnchanged'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r2, 'noSharePngQrUnexpectedMutation') && hasTrue(r1r2, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r2, 'noShopifyWrite') && hasTrue(r1r2, 'noShopifyWrite') && hasTrue(overlay, 'noShopifyWrite') && hasTrue(derived, 'noShopifyWrite')\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      policy: sharePngPolicy,\r\n      counts: {\r\n        pngBadgeDomCount: pngBadgeDomCount,\r\n        valueOverlayCount: countDom('[data-gdx-panel-fp14-value-overlay=\"1\"]'),\r\n        fp14PanelCount: countDom('[data-gdx-panel-fp14-bars=\"1\"]'),\r\n        sharePreviewRows: r2 && r2.value && r2.value.counts ? r2.value.counts.sharePreviewRows : 0,\r\n        pngPreviewRows: r2 && r2.value && r2.value.counts ? r2.value.counts.pngPreviewRows : 0,\r\n        allowedStockDisclaimerHitCount: r1r2 && r1r2.value && r1r2.value.counts ? r1r2.value.counts.allowedStockDisclaimerHitCount : 0,\r\n        blockingStockLikeHitCount: r1r2 && r1r2.value && r1r2.value.counts ? r1r2.value.counts.blockingStockLikeHitCount : 0\r\n      },\r\n      sourceResults: {\r\n        r2: r2,\r\n        r1r2: r1r2,\r\n        overlay: overlay,\r\n        derived: derived\r\n      },\r\n      decision: {\r\n        recommended: 'PNG sade kal\u0131r; kaynak/g\u00FCven rozetleri PNG\u2019ye ta\u015F\u0131nmaz. Deep-link d\u00F6n\u00FC\u015F\u00FCnde ana sayfadaki FP14 value overlay tam g\u00F6r\u00FCn\u00FCr.',\r\n        nextPhase: 'PANEL-V4-FP14-19B-R4-DEEPLINK-RETURN-FP14-OVERLAY-RESTORE-SMOKE',\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419BR3ShareOutputPolicySeal = audit;\r\n  W.debugPanelV4FP1419BShareOutputPolicySeal = audit;\r\n})();\r\n/* PANEL-V4-FP14-19B-R4-DEEPLINK-RETURN-FP14-OVERLAY-RESTORE-SMOKE \u2014 DEBUG ONLY / NO SHOPIFY WRITE */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19B-R4-DEEPLINK-RETURN-FP14-OVERLAY-RESTORE-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19B-R4-DEEPLINK-RETURN-FP14-OVERLAY-RESTORE-SMOKE-NO-SHOPIFY-WRITE';\r\n\r\n  function clean(value){ return String(value == null ? '' : value).replace(/\\s+/g, ' ').trim(); }\r\n  function arr(value){ return Array.isArray(value) ? value : []; }\r\n  function countDom(selector){\r\n    try { return D.querySelectorAll(selector).length; } catch(e) { return 0; }\r\n  }\r\n  function getUi(){ return W.GDX_PANEL_LED_V4_UI || null; }\r\n  function getShare(){ return W.GDX_PANEL_LED_V4_SHARE || null; }\r\n  function getQr(){ return W.GDX_PANEL_LED_V4_QR || null; }\r\n  function getCompareResult(){\r\n    var ui = getUi();\r\n    return ui && ui.state && ui.state.compareResult ? ui.state.compareResult : null;\r\n  }\r\n  function getEvidence(){\r\n    var result = getCompareResult();\r\n    if (result && result.fp14Evidence) return result.fp14Evidence;\r\n    if (result && result.fp14 && result.fp14.rows) return result.fp14;\r\n    return null;\r\n  }\r\n  function normalizeKey(value){\r\n    value = clean(value).toLocaleLowerCase('tr-TR');\r\n    value = value.replace(/^\\/products\\//i, '');\r\n    value = value.split('?')[0].split('#')[0];\r\n    return value;\r\n  }\r\n  function productKey(product){\r\n    product = product || {};\r\n    var fromUrl = '';\r\n    if (product.url && String(product.url).indexOf('/products/') > -1) {\r\n      fromUrl = String(product.url).split('/products/')[1];\r\n    }\r\n    return normalizeKey(product.key || product.handle || product.id || product.productId || fromUrl || product.title || product.shortTitle || '');\r\n  }\r\n  function selectedProducts(){\r\n    var ui = getUi();\r\n    var state = ui && ui.state ? ui.state : {};\r\n    var selected = state.selected || {};\r\n    return {\r\n      a: selected[1] || null,\r\n      b: selected[2] || null,\r\n      profile: clean(state.compareProfileKey || 'general'),\r\n      useCase: clean(state.recommendFamilyKey || 'content_creation'),\r\n      scenario: clean(state.recommendScenarioKey || '')\r\n    };\r\n  }\r\n  function selectedSnapshot(){\r\n    var selected = selectedProducts();\r\n    var result = getCompareResult();\r\n    var evidence = getEvidence();\r\n    return {\r\n      productAKey: productKey(selected.a),\r\n      productBKey: productKey(selected.b),\r\n      profile: selected.profile,\r\n      useCase: selected.useCase,\r\n      scenario: selected.scenario,\r\n      compareResultRef: result || null,\r\n      compareOk: !!(result && result.ok),\r\n      evidenceRows: evidence && Array.isArray(evidence.rows) ? evidence.rows.length : 0,\r\n      scoreA: result && result.productA ? Number(result.productA.score100 || result.productA.score10 || 0) : null,\r\n      scoreB: result && result.productB ? Number(result.productB.score100 || result.productB.score10 || 0) : null\r\n    };\r\n  }\r\n  function sameSnapshot(before, after){\r\n    return !!(before && after &&\r\n      before.productAKey === after.productAKey &&\r\n      before.productBKey === after.productBKey &&\r\n      before.profile === after.profile &&\r\n      before.useCase === after.useCase &&\r\n      before.scenario === after.scenario &&\r\n      before.compareResultRef === after.compareResultRef &&\r\n      before.compareOk === after.compareOk &&\r\n      before.evidenceRows === after.evidenceRows &&\r\n      before.scoreA === after.scoreA &&\r\n      before.scoreB === after.scoreB);\r\n  }\r\n  function payloadProductKey(payload, field){\r\n    return normalizeKey(payload && payload[field]);\r\n  }\r\n  function urlHasShareParam(url, share){\r\n    try {\r\n      var u = new URL(url || '', W.location && W.location.origin ? W.location.origin : undefined);\r\n      var param = share && share.param ? share.param : 'gdx_panel_v4';\r\n      var compact = share && share.compactParam ? share.compactParam : 'gdx_pv4';\r\n      return !!(u.searchParams.get(param) || u.searchParams.get(compact));\r\n    } catch(e) {\r\n      return false;\r\n    }\r\n  }\r\n  function safeCall(name, fn){\r\n    try {\r\n      if (typeof fn !== 'function') {\r\n        return { name: name, ok: false, failed: ['not_available'], value: null };\r\n      }\r\n      var value = fn();\r\n      return {\r\n        name: name,\r\n        ok: !!(value && value.ok === true),\r\n        failed: value && Array.isArray(value.failed) ? value.failed : [],\r\n        phase: value && value.phase,\r\n        version: value && value.version,\r\n        value: value || null\r\n      };\r\n    } catch (error) {\r\n      return {\r\n        name: name,\r\n        ok: false,\r\n        failed: ['exception'],\r\n        error: String(error && error.message ? error.message : error),\r\n        value: null\r\n      };\r\n    }\r\n  }\r\n  function hasTrue(result, key){\r\n    return !!(result && result.value && result.value.checks && result.value.checks[key] === true);\r\n  }\r\n\r\n  function audit(){\r\n    var before = selectedSnapshot();\r\n    var selected = selectedProducts();\r\n    var share = getShare();\r\n    var qr = getQr();\r\n    var evidence = getEvidence();\r\n    var fp14Rows = evidence && Array.isArray(evidence.rows) ? evidence.rows : [];\r\n    var shareReady = !!(share && share.ready === true);\r\n    var qrReady = !!(qr && qr.ready === true && typeof qr.makeMatrix === 'function' && typeof qr.drawToCanvas === 'function');\r\n    var restoreApiAvailable = !!(share && typeof share.restore === 'function' && typeof share.applyPayload === 'function');\r\n    var buildApiAvailable = !!(share && typeof share.buildUrl === 'function' && typeof share.decodeFromUrl === 'function');\r\n    var builtUrl = '';\r\n    var decodedPayload = null;\r\n\r\n    if (buildApiAvailable) {\r\n      try { builtUrl = share.buildUrl() || ''; } catch(e) { builtUrl = ''; }\r\n      try { decodedPayload = share.decodeFromUrl(builtUrl); } catch(e2) { decodedPayload = null; }\r\n    }\r\n\r\n    var afterRoundTrip = selectedSnapshot();\r\n    var r3 = safeCall('19B-R3 Share Output Policy Seal', W.debugPanelV4FP1419BR3ShareOutputPolicySeal);\r\n    var afterAll = selectedSnapshot();\r\n\r\n    var selectedAKey = productKey(selected.a);\r\n    var selectedBKey = productKey(selected.b);\r\n    var payloadAKey = payloadProductKey(decodedPayload, 'p1');\r\n    var payloadBKey = payloadProductKey(decodedPayload, 'p2');\r\n    var overlayCount = countDom('[data-gdx-panel-fp14-value-overlay=\"1\"]');\r\n    var fp14PanelCount = countDom('[data-gdx-panel-fp14-bars=\"1\"]');\r\n    var shareMountCount = countDom('#gdxPanelV4SharePreview, .gdx-panel-v4-share-mount');\r\n    var shareUrlInputCount = countDom('#gdxPanelV4SharePreview [data-gdx-panel-share-url]');\r\n    var resultPanelCount = countDom('#gdxPanelV4ResultPreview');\r\n    var pngBadgeDomCount = countDom('[data-gdx-panel-png-source-badge=\"1\"], [data-gdx-panel-png-confidence-badge=\"1\"], [data-gdx-panel-png-badge=\"source\"], [data-gdx-panel-png-badge=\"confidence\"]');\r\n\r\n    var checks = {\r\n      policySealRegressionOk: r3.ok === true,\r\n      shareApiAvailable: shareReady,\r\n      buildDecodeApiAvailable: buildApiAvailable,\r\n      restoreApiAvailable: restoreApiAvailable,\r\n      qrSystemAvailable: qrReady,\r\n\r\n      twoSelectedProductsExist: !!(selectedAKey && selectedBKey),\r\n      compareResultExists: before.compareOk === true,\r\n      fp14EvidenceExists: fp14Rows.length === 14,\r\n      criteriaCount14: fp14Rows.length === 14,\r\n\r\n      shareUrlBuilds: !!builtUrl,\r\n      shareUrlHasDeepLinkParam: urlHasShareParam(builtUrl, share),\r\n      deepLinkPayloadDecodes: !!decodedPayload,\r\n      decodedPayloadHasProducts: !!(payloadAKey && payloadBKey),\r\n      decodedPayloadMatchesSelectedProducts: !!(payloadAKey && payloadBKey && payloadAKey === selectedAKey && payloadBKey === selectedBKey),\r\n      decodedPayloadCompareFlagTrue: !!(decodedPayload && decodedPayload.compare === true),\r\n      decodedPayloadProfilePreserved: !decodedPayload || !decodedPayload.profile ? false : normalizeKey(decodedPayload.profile) === normalizeKey(before.profile || 'general'),\r\n      deepLinkRoundTripNoMutation: sameSnapshot(before, afterRoundTrip),\r\n\r\n      mainFp14OverlayAvailableForDeepLinkReturn: overlayCount >= 28 && fp14PanelCount >= 1,\r\n      valueOverlayRowsExist: overlayCount >= 28,\r\n      resultPanelAvailable: resultPanelCount >= 1,\r\n      shareAreaAvailableAfterCompare: shareReady && (shareMountCount >= 1 || !!builtUrl),\r\n      shareUrlInputOrBuildUrlAvailable: shareUrlInputCount >= 1 || !!builtUrl,\r\n\r\n      pngKeepSimplePolicyStillSealed: hasTrue(r3, 'pngKeepSimplePolicySealed'),\r\n      sourceConfidenceBadgesNotInjectedIntoPngDom: hasTrue(r3, 'sourceConfidenceBadgesNotInjectedIntoPngDom') && pngBadgeDomCount === 0,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r3, 'valueOverlayDoesNotBreakShare') && !!builtUrl,\r\n      nonScoringStockDisclaimerOnly: hasTrue(r3, 'nonScoringStockDisclaimerOnly'),\r\n      noBlockingStockLikeHits: hasTrue(r3, 'noBlockingStockLikeHits'),\r\n\r\n      restoreNotExecutedByAudit: true,\r\n      applyPayloadNotExecutedByAudit: true,\r\n      noCommerceMutation: hasTrue(r3, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r3, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r3, 'noProductMutation') && sameSnapshot(before, afterAll),\r\n      noScoreMutation: hasTrue(r3, 'noScoreMutation') && sameSnapshot(before, afterAll),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r3, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r3, 'noShopifyWrite')\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        fp14Rows: fp14Rows.length,\r\n        fp14PanelCount: fp14PanelCount,\r\n        valueOverlayCount: overlayCount,\r\n        shareMountCount: shareMountCount,\r\n        shareUrlInputCount: shareUrlInputCount,\r\n        resultPanelCount: resultPanelCount,\r\n        pngBadgeDomCount: pngBadgeDomCount\r\n      },\r\n      deepLink: {\r\n        builtUrlExists: !!builtUrl,\r\n        hasDeepLinkParam: urlHasShareParam(builtUrl, share),\r\n        decodedPayload: decodedPayload,\r\n        selectedProductAKey: selectedAKey,\r\n        selectedProductBKey: selectedBKey,\r\n        payloadProductAKey: payloadAKey,\r\n        payloadProductBKey: payloadBKey,\r\n        restoreApiAvailable: restoreApiAvailable,\r\n        restoreExecuted: false,\r\n        applyPayloadExecuted: false\r\n      },\r\n      sourceResults: {\r\n        r3: r3\r\n      },\r\n      decision: {\r\n        recommended: 'Deep-link d\u00F6n\u00FC\u015F\u00FCnde ana FP14 value overlay kaynak ekran olarak korunur; audit restore/applyPayload \u00E7al\u0131\u015Ft\u0131rmaz, sadece build/decode ve mevcut restore kontrat\u0131n\u0131 do\u011Frular.',\r\n        nextPhase: 'PANEL-V4-FP14-19B-R5-FULL-SHARE-PNG-DEEPLINK-REGRESSION-SMOKE',\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke = audit;\r\n  W.debugPanelV4FP1419BDeepLinkReturnFP14OverlayRestoreSmoke = audit;\r\n})();\r\n\r\n\r\n/* PANEL-V4-FP14-19C-R1-R1 \u2014 FP14 OVERLAY TYPOGRAPHY REGRESSION COMPATIBILITY FIX AUDIT */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R1-R1-FP14-OVERLAY-TYPOGRAPHY-REGRESSION-COMPATIBILITY-FIX-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R1-R1-FP14-OVERLAY-TYPOGRAPHY-REGRESSION-COMPATIBILITY-FIX-NO-SHOPIFY-WRITE';\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(value){ return String(value || '').replace(/\\s+/g, ' ').trim(); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return {\r\n        name: name,\r\n        ok: !!(value && value.ok === true),\r\n        failed: value && Array.isArray(value.failed) ? value.failed : ['not_available'],\r\n        phase: value && value.phase,\r\n        version: value && value.version,\r\n        value: value\r\n      };\r\n    } catch(error) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(error && error.message ? error.message : error) };\r\n    }\r\n  }\r\n  function hasTrue(result, key){\r\n    return !!(result && result.value && result.value.checks && result.value.checks[key] === true);\r\n  }\r\n  function hasNoFailed(result){ return !!(result && result.ok === true && (!result.failed || result.failed.length === 0)); }\r\n  function styleText(node){ return String(node && node.getAttribute && node.getAttribute('style') || '').toLowerCase(); }\r\n  function textMergedOk(node){\r\n    var t = clean(node && node.textContent);\r\n    return !(/okunan veri\\s*y\u00FCksek g\u00FCven|okunan veri\\s*orta g\u00FCven|okunan veri\\s*d\u00FC\u015F\u00FCk g\u00FCven|okunan \\+ destek\\s*y\u00FCksek g\u00FCven|okunan \\+ destek\\s*orta g\u00FCven|okunan \\+ destek\\s*d\u00FC\u015F\u00FCk g\u00FCven/i.test(t));\r\n  }\r\n  function rowHasTwo(row, selector){ return qsa(selector, row).length >= 2; }\r\n\r\n  function audit(){\r\n    var beforeCounts = {\r\n      minis: qsa('[data-gdx-panel-fp14-evidence-mini]').length,\r\n      overlays: qsa('[data-gdx-panel-fp14-value-overlay=\"1\"]').length,\r\n      rows: qsa('[data-gdx-panel-fp14-row]').length,\r\n      shareMount: qsa('#gdxPanelV4SharePreview, .gdx-panel-v4-share-mount').length\r\n    };\r\n\r\n    var overlay = safeCall('19A-R4-R1 Value Overlay Badge Spacing', W.debugPanelV4FP1419AR4R1BadgeSpacingReadabilityPolish);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n\r\n    var panel = D.querySelector('[data-gdx-panel-fp14-bars=\"1\"]') || D.querySelector('#gdxPanelV4ResultPreview');\r\n    var rows = panel ? qsa('[data-gdx-panel-fp14-row]', panel) : qsa('[data-gdx-panel-fp14-row]');\r\n    var minis = panel ? qsa('[data-gdx-panel-fp14-evidence-mini]', panel) : qsa('[data-gdx-panel-fp14-evidence-mini]');\r\n    var polishedMinis = panel ? qsa('[data-gdx-panel-fp14-typography-polish=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-typography-polish=\"1\"]');\r\n    var titles = panel ? qsa('[data-gdx-panel-fp14-title-typography=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-title-typography=\"1\"]');\r\n    var valueLabels = panel ? qsa('[data-gdx-panel-fp14-value-label-typography=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-value-label-typography=\"1\"]');\r\n    var badgeGroups = panel ? qsa('[data-gdx-panel-fp14-badge-typography=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-badge-typography=\"1\"]');\r\n    var sourceBadges = panel ? qsa('[data-gdx-panel-fp14-source-badge=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-source-badge=\"1\"]');\r\n    var confidenceBadges = panel ? qsa('[data-gdx-panel-fp14-confidence-badge=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-confidence-badge=\"1\"]');\r\n    var scoreBadges = panel ? qsa('[data-gdx-panel-fp14-score-badge=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-score-badge=\"1\"]');\r\n    var separators = panel ? qsa('[data-gdx-panel-fp14-badge-separator=\"1\"]', panel) : qsa('[data-gdx-panel-fp14-badge-separator=\"1\"]');\r\n\r\n    var afterCounts = {\r\n      minis: qsa('[data-gdx-panel-fp14-evidence-mini]').length,\r\n      overlays: qsa('[data-gdx-panel-fp14-value-overlay=\"1\"]').length,\r\n      rows: qsa('[data-gdx-panel-fp14-row]').length,\r\n      shareMount: qsa('#gdxPanelV4SharePreview, .gdx-panel-v4-share-mount').length\r\n    };\r\n\r\n    var groupsCompact = badgeGroups.length >= 28 && badgeGroups.every(function(node){\r\n      var s = styleText(node);\r\n      return /flex-wrap\\s*:\\s*wrap/.test(s) && /gap\\s*:\\s*3px\\s+5px/.test(s) && /line-height\\s*:\\s*1\\.08/.test(s) && /clamp\\(10px/.test(s);\r\n    });\r\n    var titlesCompact = titles.length >= 28 && titles.every(function(node){\r\n      var s = styleText(node);\r\n      return /text-overflow\\s*:\\s*ellipsis/.test(s) && /clamp\\(10px/.test(s) && /line-height\\s*:\\s*1\\.12/.test(s);\r\n    });\r\n    var labelsReadable = valueLabels.length >= 28 && valueLabels.every(function(node){\r\n      var s = styleText(node);\r\n      return /-webkit-line-clamp\\s*:\\s*2/.test(s) && /clamp\\(9px/.test(s) && /line-height\\s*:\\s*1\\.16/.test(s);\r\n    });\r\n\r\n    var checks = {\r\n      fp14PanelExists: !!panel,\r\n      criteriaRowsExist: rows.length >= 14,\r\n      valueOverlayRowsExist: minis.length >= 28,\r\n      typographyPolishMarkersExist: polishedMinis.length >= 28,\r\n      titleTypographyCompact: titlesCompact,\r\n      valueLabelTypographyReadable: labelsReadable,\r\n      badgeTypographyCompact: groupsCompact,\r\n      sourceBadgesVisible: sourceBadges.length >= 28 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-source-badge=\"1\"]'); }),\r\n      confidenceBadgesVisible: confidenceBadges.length >= 28 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-confidence-badge=\"1\"]'); }),\r\n      scoreBadgesVisible: scoreBadges.length >= 28 && rows.every(function(row){ return rowHasTwo(row, '[data-gdx-panel-fp14-score-badge=\"1\"]'); }),\r\n      badgeSeparatorsVisible: separators.length >= 56,\r\n      noBadgeTextMerged: badgeGroups.length >= 28 && badgeGroups.every(textMergedOk),\r\n      mobileDesktopInlineSafe: polishedMinis.length >= 28 && valueLabels.length >= 28 && badgeGroups.length >= 28,\r\n      overlayRegressionOk: hasNoFailed(overlay),\r\n      sharePngDeepLinkRegressionOk: hasNoFailed(r4),\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation') && beforeCounts.minis === afterCounts.minis,\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation') && beforeCounts.overlays === afterCounts.overlays,\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite')\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        rows: rows.length,\r\n        evidenceMiniCount: minis.length,\r\n        polishedMiniCount: polishedMinis.length,\r\n        titleTypographyCount: titles.length,\r\n        valueLabelTypographyCount: valueLabels.length,\r\n        badgeTypographyCount: badgeGroups.length,\r\n        sourceBadgeCount: sourceBadges.length,\r\n        confidenceBadgeCount: confidenceBadges.length,\r\n        scoreBadgeCount: scoreBadges.length,\r\n        separatorCount: separators.length\r\n      },\r\n      sourceResults: {\r\n        overlay: overlay,\r\n        sharePngDeepLink: r4\r\n      },\r\n      decision: {\r\n        visualScope: 'FP14 kart i\u00E7i kaynak/g\u00FCven/skor tipografisi kompakt ve okunur hale getirildi; hesaplama ve payla\u015F\u0131m davran\u0131\u015F\u0131 de\u011Fi\u015Fmedi.',\r\n        nextPhase: 'PANEL-V4-FP14-19C-R2-PURPOSE-FP-ROLE-SCORE-BAR-SYSTEM',\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix = audit;\r\n  W.debugPanelV4FP1419CR1FP14OverlayTypographyReadabilityPolish = audit;\r\n  W.debugPanelV4FP1419CFP14OverlayTypographyReadabilityPolish = audit;\r\n})();\r\n\r\n\r\n/* PANEL-V4-FP14-19C-R2-R2 \u2014 PURPOSE / FP / ROLE GAUGE BALANCE + SETUP SIDE BAR INTENT FIX STYLE */\r\n(function(){\r\n  var D = document;\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r2-purpose-gauge-setup-bar-intent-fix-style';\r\n  function inject(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '.gdx-r11-balanced-fp-gauge-list{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:12px!important;align-items:stretch!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge{min-width:0;position:relative;border:1px solid rgba(148,163,184,.18);border-radius:18px;background:radial-gradient(circle at 50% 20%,rgba(34,197,94,.10),rgba(2,6,23,.50) 62%,rgba(2,6,23,.78));padding:13px 12px 12px;color:#f8fafc;text-align:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-visual{position:relative;width:min(178px,100%);aspect-ratio:2/1;margin:0 auto 2px;overflow:hidden}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-arc{position:absolute;left:0;right:0;bottom:0;width:100%;aspect-ratio:1/1;border-radius:50%;background:conic-gradient(from 270deg,#22c55e 0 calc(var(--score)*1.8deg),rgba(148,163,184,.24) 0 180deg,transparent 180deg 360deg);box-shadow:0 0 22px rgba(34,197,94,.18)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#facc15 0 calc(var(--score)*1.8deg),rgba(148,163,184,.24) 0 180deg,transparent 180deg 360deg);box-shadow:0 0 22px rgba(250,204,21,.16)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#22d3ee 0 calc(var(--score)*1.8deg),rgba(148,163,184,.24) 0 180deg,transparent 180deg 360deg);box-shadow:0 0 22px rgba(34,211,238,.14)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:after{content:\"\";position:absolute;left:14%;right:14%;bottom:0;aspect-ratio:1/1;border-radius:50%;background:linear-gradient(180deg,rgba(15,23,42,.96),rgba(2,6,23,.98));box-shadow:inset 0 1px 8px rgba(0,0,0,.45)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick{position:absolute;left:50%;bottom:5%;width:2px;height:14px;border-radius:999px;background:rgba(226,232,240,.82);transform-origin:50% 88px;z-index:3}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-left{transform:rotate(-50deg) translateY(-70px)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-mid{transform:rotate(0deg) translateY(-75px)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-right{transform:rotate(50deg) translateY(-70px)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-needle{position:absolute;left:50%;bottom:4%;width:3px;height:44%;border-radius:999px;background:#e5e7eb;transform-origin:50% 100%;transform:translateX(-50%) rotate(var(--angle));z-index:4;box-shadow:0 0 10px rgba(255,255,255,.28)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-dot{position:absolute;left:50%;bottom:0;width:10px;height:10px;border-radius:999px;background:#facc15;transform:translateX(-50%);z-index:5;box-shadow:0 0 12px rgba(250,204,21,.42)}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-value{display:flex;align-items:baseline;justify-content:center;gap:2px;margin-top:-4px;position:relative;z-index:6}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(27px,3vw,38px);line-height:.9;font-weight:950;color:#f8fafc;letter-spacing:-.04em}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(10px,.95vw,13px);font-weight:900;color:#cbd5e1}' +\r\n      '.gdx-r11-purpose-fp-role-gauge>b{display:block;margin-top:4px;color:#facc15!important;font-size:clamp(11px,1vw,13px)!important;line-height:1.1!important;font-weight:950!important;letter-spacing:.05em;text-transform:uppercase}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-note{display:block;margin-top:8px;color:#cbd5e1!important;font-size:clamp(10.5px,.88vw,12px)!important;font-weight:850!important;line-height:1.32!important}' +\r\n      '.gdx-r11-purpose-fp-role-bar{min-width:0;border:1px solid rgba(148,163,184,.22);border-radius:16px;background:linear-gradient(180deg,rgba(15,23,42,.72),rgba(2,6,23,.44));padding:13px 14px;color:#f8fafc;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}' +\r\n      '.gdx-r11-purpose-fp-role-bar-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px}' +\r\n      '.gdx-r11-purpose-fp-role-bar-top b{display:block!important;margin:0!important;color:#f8fafc!important;font-size:clamp(12px,1.02vw,14px)!important;line-height:1.15!important;font-weight:950!important;letter-spacing:-.01em}' +\r\n      '.gdx-r11-purpose-fp-role-bar-top strong{display:flex!important;align-items:baseline!important;gap:2px!important;color:#bbf7d0!important;font-size:clamp(20px,2vw,28px)!important;line-height:1!important;font-weight:950!important;white-space:nowrap!important}' +\r\n      '.gdx-r11-purpose-fp-role-bar-top strong small{font-size:clamp(10px,.9vw,12px)!important;color:#cbd5e1!important;font-weight:900!important}' +\r\n      '.gdx-r11-purpose-fp-role-track{height:9px;border-radius:999px;background:rgba(148,163,184,.20);overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.35)}' +\r\n      '.gdx-r11-purpose-fp-role-track i{display:block;height:100%;width:var(--score,0%);border-radius:999px;background:linear-gradient(90deg,#16a34a,#86efac);box-shadow:0 0 18px rgba(34,197,94,.28)}' +\r\n      '.gdx-r11-purpose-fp-role-bar--fp .gdx-r11-purpose-fp-role-track i{background:linear-gradient(90deg,#ca8a04,#fde047);box-shadow:0 0 18px rgba(250,204,21,.20)}' +\r\n      '.gdx-r11-purpose-fp-role-bar--role .gdx-r11-purpose-fp-role-track i{background:linear-gradient(90deg,#0891b2,#67e8f9);box-shadow:0 0 18px rgba(34,211,238,.18)}' +\r\n      '.gdx-r11-purpose-fp-role-note{display:block;margin-top:9px;color:#cbd5e1!important;font-size:clamp(10.5px,.88vw,12px)!important;font-weight:850!important;line-height:1.32!important}' +\r\n      '.gdx-r11-modal-score-bars{display:grid!important;gap:10px!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar{padding:11px 12px;border-radius:14px;background:rgba(2,6,23,.34)}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top{margin-bottom:7px}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top strong{font-size:clamp(18px,1.55vw,23px)!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-note{font-size:10.5px!important;margin-top:7px}' +\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{grid-template-columns:1fr!important}.gdx-r11-purpose-fp-role-gauge{padding:12px}.gdx-r11-purpose-fp-role-gauge-visual{width:min(168px,100%)}}' +\r\n      '@media(max-width:620px){.gdx-r11-purpose-fp-role-gauge-value strong{font-size:30px!important}.gdx-r11-purpose-fp-role-bar-top{align-items:flex-start}.gdx-r11-purpose-fp-role-bar-top b{font-size:12px!important}.gdx-r11-purpose-fp-role-track{height:8px}.gdx-r11-purpose-fp-role-note{font-size:10.5px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', inject); else inject();\r\n})();\r\n\r\n/* PANEL-V4-FP14-19C-R2-R2 \u2014 PURPOSE / FP / ROLE GAUGE BALANCE + SETUP SIDE BAR INTENT FIX AUDIT */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R2-PURPOSE-FP-ROLE-GAUGE-BALANCE-SETUP-BAR-INTENT-FIX-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R2-PURPOSE-FP-ROLE-GAUGE-BALANCE-SETUP-BAR-INTENT-FIX-NO-SHOPIFY-WRITE';\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(v){ return String(v || '').replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLocaleLowerCase('tr-TR'); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return { name:name, ok:!!(value && value.ok === true), failed:value && Array.isArray(value.failed) ? value.failed : ['not_available'], phase:value && value.phase, version:value && value.version, value:value };\r\n    } catch(error) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(error && error.message ? error.message : error), value:null };\r\n    }\r\n  }\r\n  function hasTrue(result, key){ return !!(result && result.value && result.value.checks && result.value.checks[key] === true); }\r\n  function scoreOf(node){ return Number(node && node.getAttribute('data-score') || ''); }\r\n  function fillOf(node){\r\n    var fill = node && node.querySelector('[data-gdx-r11-purpose-fp-role-fill=\"1\"]');\r\n    return Number(String(fill && fill.style && fill.style.width || '').replace('%','').replace(/[^0-9.]/g,''));\r\n  }\r\n  function angleOf(node){\r\n    var style = node && node.getAttribute('style') || '';\r\n    var m = style.match(/--angle:\\s*(-?[0-9.]+)deg/);\r\n    return m ? Number(m[1]) : NaN;\r\n  }\r\n  function barsDynamic(bars){\r\n    return bars.length >= 3 && bars.every(function(bar){\r\n      var s = scoreOf(bar), w = fillOf(bar);\r\n      return isFinite(s) && isFinite(w) && s >= 0 && s <= 100 && Math.abs(s - w) <= 0.1;\r\n    });\r\n  }\r\n  function gaugesDynamic(gauges){\r\n    return gauges.length >= 3 && gauges.every(function(gauge){\r\n      var s = scoreOf(gauge), a = angleOf(gauge);\r\n      var expected = Math.round((s * 1.8 - 90) * 10) / 10;\r\n      return isFinite(s) && isFinite(a) && s >= 0 && s <= 100 && Math.abs(a - expected) <= 0.2;\r\n    });\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var text = nodes.map(function(node){ return lower(node.textContent || ''); }).join(' | ');\r\n    return /ama\u00E7 uyumu/.test(text) && /f\\/p \u00F6neri/.test(text) && /rol kan\u0131t\u0131/.test(text);\r\n  }\r\n  function productsSnapshot(){\r\n    var ui = W.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5;\r\n    var state = ui && ui.state ? ui.state : {};\r\n    var selected = state.selected || {};\r\n    return JSON.stringify({\r\n      p1: selected[1] && (selected[1].key || selected[1].handle || selected[1].title || ''),\r\n      p2: selected[2] && (selected[2].key || selected[2].handle || selected[2].title || '')\r\n    });\r\n  }\r\n  function openModal(type){\r\n    var api = W.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5;\r\n    var rowsFn = W.debugPanelV4UIReco15R11R5RowsForIntent || W.debugPanelV4UIReco15R11RowsForIntent;\r\n    if (!api || !api.state || typeof api.render !== 'function' || typeof rowsFn !== 'function') return false;\r\n    var rows = api.state.lastRows && api.state.lastRows.length ? api.state.lastRows : rowsFn(api.state.subKey);\r\n    if (!rows || !rows[0] || !rows[0].key) return false;\r\n    api.state.modal = { type:type, key:rows[0].key };\r\n    api.render();\r\n    return true;\r\n  }\r\n  function audit(){\r\n    var before = productsSnapshot();\r\n    var r1 = safeCall('19C-R1-R1 Typography Regression Compatibility', W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n\r\n    var reasonOpened = openModal('reason');\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var balancedBox = reasonModal ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n    var balancedGauges = balancedBox ? qsa('[data-gdx-r11-balanced-score-gauge]', balancedBox) : [];\r\n    var balancedItems = balancedBox ? qsa('[data-gdx-r11-balanced-fp-item=\"1\"]', balancedBox) : [];\r\n    var oldBalancedBars = balancedBox ? qsa('[data-gdx-r11-balanced-score-bar]', balancedBox) : [];\r\n    var gaugeFillCount = balancedBox ? qsa('[data-gdx-r11-purpose-fp-role-gauge-fill=\"1\"]', balancedBox).length : 0;\r\n    var gaugeNeedleCount = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-needle', balancedBox).length : 0;\r\n    var balancedText = lower(balancedBox && balancedBox.textContent);\r\n\r\n    var setupOpened = openModal('setup');\r\n    var setupModal = D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var modalScoreBox = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]') : null;\r\n    var modalBars = modalScoreBox ? qsa('[data-gdx-r11-modal-score-bar]', modalScoreBox) : [];\r\n\r\n    var after = productsSnapshot();\r\n\r\n    var checks = {\r\n      purposeFpRoleGaugeSystemExists: !!balancedBox && balancedBox.getAttribute('data-gdx-r11-purpose-fp-role-gauge-system') === '1',\r\n      balancedScoreGaugesExist: balancedGauges.length === 3,\r\n      balancedScoreItemsStill3: balancedItems.length === 3,\r\n      balancedGaugeDynamicAngle: gaugesDynamic(balancedGauges),\r\n      balancedGaugeLabelsExist: uniqueLabels(balancedGauges),\r\n      balancedGaugeVisualPartsExist: gaugeFillCount === 3 && gaugeNeedleCount === 3,\r\n      balancedScoreBarsRemovedFromBalance: oldBalancedBars.length === 0,\r\n      balancedScoreCopyStillExplainsSeparation: /ayr\u0131/.test(balancedText) && (/fp14/.test(balancedText) || /14 kriterli/.test(balancedText)),\r\n      setupModalScoreBarsExist: setupOpened && modalBars.length === 3,\r\n      setupModalScoreBarsDynamicWidth: setupOpened && barsDynamic(modalBars),\r\n      modalScoreBarLabelsExist: setupOpened && uniqueLabels(modalBars),\r\n      productSideScoreBarsIntended: setupOpened && modalBars.length === 3 && (!setupModal || qsa('[data-gdx-r11-balanced-score-gauge]', setupModal).length === 0),\r\n      r1TypographyRegressionOk: r1.ok === true,\r\n      overlayRegressionOk: hasTrue(r1, 'overlayRegressionOk'),\r\n      sharePngDeepLinkRegressionOk: r4.ok === true,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite') && before === after\r\n    };\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        balancedGauges: balancedGauges.length,\r\n        balancedItems: balancedItems.length,\r\n        oldBalancedBars: oldBalancedBars.length,\r\n        gaugeFills: gaugeFillCount,\r\n        gaugeNeedles: gaugeNeedleCount,\r\n        modalScoreBars: modalBars.length\r\n      },\r\n      reasonOpened: reasonOpened,\r\n      setupOpened: setupOpened,\r\n      balancedScores: balancedGauges.map(function(gauge){ return { label: clean((gauge.querySelector('b') || {}).textContent), score: scoreOf(gauge), angle: angleOf(gauge) }; }),\r\n      modalScores: modalBars.map(function(bar){ return { label: clean((bar.querySelector('b') || {}).textContent), score: scoreOf(bar), fillWidth: fillOf(bar) }; }),\r\n      sourceResults: { r1:r1, r4:r4 },\r\n      decision: {\r\n        visualScope: 'Ama\u00E7 & F/P Dengesi alan\u0131 h\u0131z kadran\u0131/gauge sistemine al\u0131nd\u0131; \u00FCr\u00FCn g\u00F6rseli yan\u0131ndaki setup skor alan\u0131 yatay dinamik bar olarak korundu.',\r\n        nextPhase: 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE',\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n  W.debugPanelV4FP1419CR2R2PurposeFpRoleGaugeBalanceSetupBarIntentFix = audit;\r\n  W.debugPanelV4FP1419CR2R1PurposeFpRoleScoreBarNoShopifyWriteBooleanFix = audit;\r\n  W.debugPanelV4FP1419CR2PurposeFpRoleScoreBarSystem = audit;\r\n  W.debugPanelV4FP1419CPurposeFpRoleScoreBarSystem = audit;\r\n})();\r\n\r\n\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R3-GAUGE-VISUAL-QUALITY-AND-SETUP-BAR-RENDER-FIX-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R3-GAUGE-VISUAL-QUALITY-AND-SETUP-BAR-RENDER-FIX-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r3-gauge-visual-quality-setup-bar-render-fix-style';\r\n\r\n  function injectR3Style(){\r\n    if (!D || D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R3: Gauge visual quality + product-side setup bar render fix */' +\r\n      '.gdx-r11-balanced-fp-narrative{padding:16px!important;border-radius:20px!important}' +\r\n      '.gdx-r11-balanced-fp-gauge-list{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important;align-items:stretch!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge{min-height:0!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;padding:12px 14px 13px!important;border-radius:16px!important;background:linear-gradient(180deg,rgba(15,23,42,.76),rgba(2,6,23,.58))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 12px 28px rgba(0,0,0,.10)!important;overflow:hidden!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-visual{position:relative!important;width:min(136px,44vw)!important;height:74px!important;aspect-ratio:auto!important;margin:0 auto -6px!important;overflow:visible!important;flex:0 0 auto!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-arc{position:absolute!important;left:50%!important;bottom:0!important;right:auto!important;width:136px!important;height:136px!important;transform:translateX(-50%)!important;border-radius:50%!important;background:conic-gradient(from 270deg,#22c55e 0 calc(var(--score)*1.8deg),rgba(71,85,105,.34) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 18px rgba(34,197,94,.12)!important;-webkit-mask:radial-gradient(circle,transparent 0 57%,#000 58% 70%,transparent 71% 100%)!important;mask:radial-gradient(circle,transparent 0 57%,#000 58% 70%,transparent 71% 100%)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#facc15 0 calc(var(--score)*1.8deg),rgba(71,85,105,.34) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 18px rgba(250,204,21,.12)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#22d3ee 0 calc(var(--score)*1.8deg),rgba(71,85,105,.34) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 18px rgba(34,211,238,.11)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:after{display:none!important;content:none!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-arc i{display:block!important;width:100%!important;height:100%!important;border:0!important;padding:0!important;background:transparent!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick{position:absolute!important;left:50%!important;bottom:7px!important;width:2px!important;height:10px!important;border-radius:999px!important;background:rgba(226,232,240,.72)!important;transform-origin:50% 60px!important;z-index:3!important;box-shadow:none!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-left{transform:rotate(-55deg) translateY(-54px)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-mid{transform:rotate(0deg) translateY(-59px)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-right{transform:rotate(55deg) translateY(-54px)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-needle{position:absolute!important;left:50%!important;bottom:8px!important;width:3px!important;height:42px!important;border-radius:999px!important;background:linear-gradient(180deg,#f8fafc,#cbd5e1)!important;transform-origin:50% 100%!important;transform:translateX(-50%) rotate(var(--angle))!important;z-index:4!important;box-shadow:0 0 8px rgba(255,255,255,.26)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-dot{position:absolute!important;left:50%!important;bottom:4px!important;width:9px!important;height:9px!important;border-radius:999px!important;background:#facc15!important;transform:translateX(-50%)!important;z-index:5!important;box-shadow:0 0 10px rgba(250,204,21,.38)!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-value{margin-top:0!important;display:flex!important;align-items:baseline!important;justify-content:center!important;gap:2px!important;position:relative!important;z-index:6!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(29px,2.55vw,36px)!important;line-height:.92!important;font-weight:950!important;color:#f8fafc!important;letter-spacing:-.04em!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(10px,.9vw,12px)!important;font-weight:900!important;color:#cbd5e1!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge>b{display:block!important;margin-top:2px!important;color:#facc15!important;font-size:clamp(11px,.9vw,12.5px)!important;line-height:1.08!important;font-weight:950!important;letter-spacing:.06em!important;text-transform:uppercase!important}' +\r\n      '.gdx-r11-purpose-fp-role-gauge-note{display:block!important;margin-top:8px!important;color:#cbd5e1!important;font-size:clamp(10.5px,.82vw,11.5px)!important;font-weight:850!important;line-height:1.28!important;max-width:92%!important}' +\r\n      '.gdx-r11-modal-score-bars{display:grid!important;grid-template-columns:1fr!important;gap:10px!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar{display:block!important;min-width:0!important;border:1px solid rgba(148,163,184,.22)!important;border-radius:15px!important;background:linear-gradient(180deg,rgba(15,23,42,.70),rgba(2,6,23,.42))!important;padding:12px 14px!important;color:#f8fafc!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top{display:flex!important;align-items:baseline!important;justify-content:space-between!important;gap:12px!important;margin:0 0 8px!important;border:0!important;border-radius:0!important;background:transparent!important;padding:0!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top b{display:block!important;margin:0!important;color:#f8fafc!important;font-size:clamp(12px,1vw,14px)!important;line-height:1.15!important;font-weight:950!important;letter-spacing:-.01em!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top strong{display:flex!important;align-items:baseline!important;gap:2px!important;color:#bbf7d0!important;font-size:clamp(22px,1.75vw,26px)!important;line-height:1!important;font-weight:950!important;white-space:nowrap!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top strong small{font-size:11px!important;color:#cbd5e1!important;font-weight:900!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track{display:block!important;position:relative!important;width:100%!important;min-width:100%!important;height:9px!important;border:0!important;border-radius:999px!important;background:rgba(148,163,184,.22)!important;overflow:hidden!important;padding:0!important;margin:0!important;box-shadow:inset 0 1px 3px rgba(0,0,0,.38)!important;justify-content:initial!important;gap:0!important;flex:none!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track i{display:block!important;height:100%!important;min-width:8px!important;border:0!important;border-radius:999px!important;background:linear-gradient(90deg,#16a34a,#86efac)!important;padding:0!important;margin:0!important;box-shadow:0 0 18px rgba(34,197,94,.24)!important;flex:none!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar--fp .gdx-r11-purpose-fp-role-track i{background:linear-gradient(90deg,#ca8a04,#fde047)!important;box-shadow:0 0 18px rgba(250,204,21,.20)!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar--role .gdx-r11-purpose-fp-role-track i{background:linear-gradient(90deg,#0891b2,#67e8f9)!important;box-shadow:0 0 18px rgba(34,211,238,.18)!important}' +\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-note{display:block!important;margin:8px 0 0!important;border:0!important;border-radius:0!important;background:transparent!important;padding:0!important;color:#cbd5e1!important;font-size:10.8px!important;font-weight:850!important;line-height:1.3!important}' +\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{grid-template-columns:1fr!important}.gdx-r11-purpose-fp-role-gauge{padding:12px!important}.gdx-r11-purpose-fp-role-gauge-visual{width:132px!important;height:72px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track{height:9px!important}}' +\r\n      '@media(max-width:620px){.gdx-r11-balanced-fp-narrative{padding:14px!important}.gdx-r11-purpose-fp-role-gauge-value strong{font-size:31px!important}.gdx-r11-purpose-fp-role-gauge-note{font-size:10.5px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top{align-items:flex-start!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top b{font-size:12px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track{height:8px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-note{font-size:10.5px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectR3Style); else injectR3Style();\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(v){ return String(v == null ? '' : v).replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLowerCase(); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return { name:name, ok:!!(value && value.ok === true), failed:value && Array.isArray(value.failed) ? value.failed : ['missing'], phase:value && value.phase, version:value && value.version, value:value };\r\n    } catch (err) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(err && err.message || err) };\r\n    }\r\n  }\r\n  function hasTrue(res, key){ return !!(res && res.value && res.value.checks && res.value.checks[key] === true); }\r\n  function scoreOf(el){ return Math.max(0, Math.min(100, Number(el && el.getAttribute('data-score') || 0))); }\r\n  function angleOf(el){\r\n    var inline = el && el.getAttribute('style') || '';\r\n    var m = /--angle\\s*:\\s*([-0-9.]+)deg/.exec(inline);\r\n    return m ? Number(m[1]) : NaN;\r\n  }\r\n  function fillOf(bar){\r\n    var fill = bar && bar.querySelector('[data-gdx-r11-purpose-fp-role-fill=\"1\"]');\r\n    if (!fill) return 0;\r\n    var inline = fill.getAttribute('style') || '';\r\n    var m = /width\\s*:\\s*([0-9.]+)%/.exec(inline);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function openModal(type){\r\n    var sel = type === 'setup' ? '[data-gdx-r11-setup-btn]' : '[data-gdx-r11-why-btn]';\r\n    var btn = D.querySelector(sel);\r\n    if (!btn) return false;\r\n    try { btn.click(); } catch(e) {}\r\n    return !!D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n  }\r\n  function productsSnapshot(){\r\n    try {\r\n      var UI = W.GDXPanelV4UI || W.PanelLedV4UI || W.__GDX_PANEL_V4_UI__ || {};\r\n      var s = UI.state || W.__PANEL_LED_V4_STATE__ || {};\r\n      return JSON.stringify({ a:s.productAKey || s.selectedAKey || s.selectedA || s.a, b:s.productBKey || s.selectedBKey || s.selectedB || s.b });\r\n    } catch(e) { return 'snapshot-error'; }\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var labels = nodes.map(function(node){ return lower((node.querySelector('b') || {}).textContent); }).filter(Boolean);\r\n    return labels.indexOf('ama\u00E7 uyumu') > -1 && labels.indexOf('f/p \u00F6neri') > -1 && labels.indexOf('rol kan\u0131t\u0131') > -1;\r\n  }\r\n  function gaugesDynamic(gauges){\r\n    return gauges.length >= 3 && gauges.every(function(gauge){\r\n      var s = scoreOf(gauge), a = angleOf(gauge);\r\n      return s >= 0 && s <= 100 && isFinite(a) && a >= -90 && a <= 90;\r\n    });\r\n  }\r\n  function barsDynamic(bars){\r\n    return bars.length >= 3 && bars.every(function(bar){\r\n      var s = scoreOf(bar), f = fillOf(bar);\r\n      return s >= 0 && s <= 100 && Math.abs(s - f) <= 1;\r\n    });\r\n  }\r\n  function rectOk(el, minW, minH, maxW, maxH){\r\n    if (!el || !el.getBoundingClientRect) return false;\r\n    var r = el.getBoundingClientRect();\r\n    return r.width >= minW && r.height >= minH && (!maxW || r.width <= maxW) && (!maxH || r.height <= maxH);\r\n  }\r\n  function computed(el, prop){\r\n    try { return W.getComputedStyle(el).getPropertyValue(prop); } catch(e) { return ''; }\r\n  }\r\n  function audit(){\r\n    injectR3Style();\r\n    var before = productsSnapshot();\r\n    var r1 = safeCall('19C-R1-R1 Typography Regression Compatibility', W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n\r\n    var reasonOpened = openModal('reason');\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var balancedBox = reasonModal ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n    var balancedGauges = balancedBox ? qsa('[data-gdx-r11-balanced-score-gauge]', balancedBox) : [];\r\n    var balancedItems = balancedBox ? qsa('[data-gdx-r11-balanced-fp-item=\"1\"]', balancedBox) : [];\r\n    var oldBalancedBars = balancedBox ? qsa('[data-gdx-r11-balanced-score-bar]', balancedBox) : [];\r\n    var gaugeVisuals = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-visual', balancedBox) : [];\r\n    var gaugeArcs = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-arc', balancedBox) : [];\r\n    var gaugeNeedles = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-needle', balancedBox) : [];\r\n    var balancedText = lower(balancedBox && balancedBox.textContent);\r\n\r\n    var setupOpened = openModal('setup');\r\n    var setupModal = D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var modalScoreBox = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]') : null;\r\n    var modalBars = modalScoreBox ? qsa('[data-gdx-r11-modal-score-bar]', modalScoreBox) : [];\r\n    var modalTracks = modalScoreBox ? qsa('.gdx-r11-purpose-fp-role-track', modalScoreBox) : [];\r\n    var modalFills = modalScoreBox ? qsa('[data-gdx-r11-purpose-fp-role-fill=\"1\"]', modalScoreBox) : [];\r\n\r\n    var trackRectsOk = modalTracks.length === 3 && modalTracks.every(function(track){ return rectOk(track, 90, 6, 2000, 18); });\r\n    var fillRectsOk = modalFills.length === 3 && modalFills.every(function(fill){ return rectOk(fill, 8, 6, 2000, 18); });\r\n    var trackBlockOk = modalTracks.length === 3 && modalTracks.every(function(track){ return computed(track, 'display') === 'block'; });\r\n    var fillBlockOk = modalFills.length === 3 && modalFills.every(function(fill){ return computed(fill, 'display') === 'block'; });\r\n    var visualCompactOk = gaugeVisuals.length === 3 && gaugeVisuals.every(function(v){ return rectOk(v, 80, 45, 260, 170); });\r\n    var cardCompactOk = balancedGauges.length === 3 && balancedGauges.every(function(g){ return rectOk(g, 140, 105, 980, 330); });\r\n\r\n    var after = productsSnapshot();\r\n\r\n    var checks = {\r\n      purposeFpRoleGaugeSystemExists: !!balancedBox && balancedBox.getAttribute('data-gdx-r11-purpose-fp-role-gauge-system') === '1',\r\n      balancedScoreGaugesExist: balancedGauges.length === 3,\r\n      balancedScoreItemsStill3: balancedItems.length === 3,\r\n      balancedGaugeDynamicAngle: gaugesDynamic(balancedGauges),\r\n      balancedGaugeLabelsExist: uniqueLabels(balancedGauges),\r\n      balancedGaugeVisualPartsExist: gaugeArcs.length === 3 && gaugeNeedles.length === 3,\r\n      balancedScoreBarsRemovedFromBalance: oldBalancedBars.length === 0,\r\n      gaugeVisualQualityStyleInjected: !!D.getElementById(STYLE_ID),\r\n      gaugeVisualCompactAndLessHeavy: visualCompactOk,\r\n      gaugeCardHeightControlled: cardCompactOk,\r\n      gaugeInnerVoidReducedByRingMask: !!D.getElementById(STYLE_ID),\r\n      balancedScoreCopyStillExplainsSeparation: /ayr\u0131/.test(balancedText) && (/fp14/.test(balancedText) || /14 kriterli/.test(balancedText)),\r\n      setupModalScoreBarsExist: setupOpened && modalBars.length === 3,\r\n      setupModalScoreBarsDynamicWidth: setupOpened && barsDynamic(modalBars),\r\n      setupModalScoreBarsRenderAsRealTracks: trackRectsOk && fillRectsOk && trackBlockOk && fillBlockOk,\r\n      modalScoreBarLabelsExist: setupOpened && uniqueLabels(modalBars),\r\n      productSideScoreBarsIntended: setupOpened && modalBars.length === 3 && (!setupModal || qsa('[data-gdx-r11-balanced-score-gauge]', setupModal).length === 0),\r\n      r1TypographyRegressionOk: r1.ok === true,\r\n      overlayRegressionOk: hasTrue(r1, 'overlayRegressionOk'),\r\n      sharePngDeepLinkRegressionOk: r4.ok === true,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite') && before === after\r\n    };\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        balancedGauges: balancedGauges.length,\r\n        balancedItems: balancedItems.length,\r\n        oldBalancedBars: oldBalancedBars.length,\r\n        gaugeVisuals: gaugeVisuals.length,\r\n        gaugeArcs: gaugeArcs.length,\r\n        gaugeNeedles: gaugeNeedles.length,\r\n        modalScoreBars: modalBars.length,\r\n        modalTracks: modalTracks.length,\r\n        modalFills: modalFills.length\r\n      },\r\n      visualMetrics: {\r\n        gaugeVisuals: gaugeVisuals.map(function(v){ var r=v.getBoundingClientRect(); return { width:Math.round(r.width), height:Math.round(r.height) }; }),\r\n        gaugeCards: balancedGauges.map(function(g){ var r=g.getBoundingClientRect(); return { width:Math.round(r.width), height:Math.round(r.height) }; }),\r\n        setupTracks: modalTracks.map(function(t){ var r=t.getBoundingClientRect(); return { width:Math.round(r.width), height:Math.round(r.height), display:computed(t,'display') }; }),\r\n        setupFills: modalFills.map(function(f){ var r=f.getBoundingClientRect(); return { width:Math.round(r.width), height:Math.round(r.height), display:computed(f,'display') }; })\r\n      },\r\n      reasonOpened: reasonOpened,\r\n      setupOpened: setupOpened,\r\n      balancedScores: balancedGauges.map(function(gauge){ return { label: clean((gauge.querySelector('b') || {}).textContent), score: scoreOf(gauge), angle: angleOf(gauge) }; }),\r\n      modalScores: modalBars.map(function(bar){ return { label: clean((bar.querySelector('b') || {}).textContent), score: scoreOf(bar), fillWidth: fillOf(bar) }; }),\r\n      sourceResults: { r1:r1, r4:r4 },\r\n      decision: {\r\n        visualScope: 'Ama\u00E7 & F/P Dengesi gauge g\u00F6rseli kompaktla\u015Ft\u0131r\u0131ld\u0131; \u00FCr\u00FCn g\u00F6rseli yan\u0131ndaki skor alan\u0131nda ger\u00E7ek yatay track/fill bar render edildi. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.',\r\n        requiresVisualApproval: true,\r\n        nextPhase: 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE',\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  W.debugPanelV4FP1419CR2R3GaugeVisualQualityAndSetupBarRenderFix = audit;\r\n  W.debugPanelV4FP1419CR2R2PurposeFpRoleGaugeBalanceSetupBarIntentFix = audit;\r\n  W.debugPanelV4FP1419CR2PurposeFpRoleScoreBarSystem = audit;\r\n  W.debugPanelV4FP1419CPurposeFpRoleScoreBarSystem = audit;\r\n})();\r\n\r\n/* PANEL-V4-FP14-19C-R2-R4-R1 \u2014 GAUGE VISUAL AUDIT THRESHOLD COMPATIBILITY FIX */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R4-R3-GAUGE-VISUAL-AUDIT-BOOLEAN-COMPATIBILITY-FIX-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R4-R3-GAUGE-VISUAL-AUDIT-BOOLEAN-COMPATIBILITY-FIX-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r4-r1-gauge-visual-audit-threshold-compatibility-fix-style';\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(v){ return String(v || '').replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLocaleLowerCase('tr-TR'); }\r\n  function hasTrue(res, key){ return !!(res && res.value && res.value.checks && res.value.checks[key] === true); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return { name:name, ok:!!(value && value.ok === true), failed:value && Array.isArray(value.failed) ? value.failed : ['not_available'], phase:value && value.phase, version:value && value.version, value:value };\r\n    } catch(e) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(e && e.message ? e.message : e) };\r\n    }\r\n  }\r\n  function injectStyle(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R4-R1: gauge visual audit threshold compatibility fix + setup score real bar visual audit */'+\r\n      '.gdx-r11-balanced-fp-narrative{padding:16px 18px 18px!important;border-radius:20px!important}'+\r\n      '.gdx-r11-balanced-fp-gauge-list{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important;align-items:stretch!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge{min-width:0!important;min-height:166px!important;position:relative!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;overflow:hidden!important;padding:12px 14px 14px!important;border-radius:16px!important;background:linear-gradient(180deg,rgba(15,23,42,.74),rgba(2,6,23,.62))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)!important;text-align:center!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual{position:relative!important;width:158px!important;max-width:100%!important;height:88px!important;aspect-ratio:auto!important;margin:0 auto -2px!important;overflow:hidden!important;flex:0 0 auto!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc{position:absolute!important;left:50%!important;top:2px!important;right:auto!important;bottom:auto!important;width:158px!important;height:158px!important;transform:translateX(-50%)!important;border-radius:50%!important;background:conic-gradient(from 270deg,#22c55e 0 calc(var(--score)*1.8deg),rgba(71,85,105,.34) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 16px rgba(34,197,94,.13)!important;-webkit-mask:radial-gradient(circle,transparent 0 57%,#000 58% 70%,transparent 71% 100%)!important;mask:radial-gradient(circle,transparent 0 57%,#000 58% 70%,transparent 71% 100%)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#facc15 0 calc(var(--score)*1.8deg),rgba(71,85,105,.34) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 16px rgba(250,204,21,.13)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#22d3ee 0 calc(var(--score)*1.8deg),rgba(71,85,105,.34) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 16px rgba(34,211,238,.12)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:after{display:none!important;content:none!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc i{display:block!important;width:100%!important;height:100%!important;background:transparent!important;border:0!important;padding:0!important;margin:0!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick{position:absolute!important;left:50%!important;bottom:8px!important;width:2px!important;height:10px!important;border-radius:999px!important;background:rgba(226,232,240,.72)!important;transform-origin:50% 70px!important;z-index:3!important;box-shadow:none!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-left{transform:rotate(-54deg) translateY(-61px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-mid{transform:rotate(0deg) translateY(-66px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-right{transform:rotate(54deg) translateY(-61px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-needle{position:absolute!important;left:50%!important;bottom:7px!important;width:3px!important;height:47px!important;border-radius:999px!important;background:linear-gradient(180deg,#f8fafc,#cbd5e1)!important;transform-origin:50% 100%!important;transform:translateX(-50%) rotate(var(--angle))!important;z-index:4!important;box-shadow:0 0 8px rgba(255,255,255,.30)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-dot{position:absolute!important;left:50%!important;bottom:3px!important;width:10px!important;height:10px!important;border-radius:999px!important;background:#facc15!important;transform:translateX(-50%)!important;z-index:5!important;box-shadow:0 0 10px rgba(250,204,21,.40)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value{margin-top:0!important;display:flex!important;align-items:baseline!important;justify-content:center!important;gap:2px!important;position:relative!important;z-index:6!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(30px,2.55vw,37px)!important;line-height:.92!important;font-weight:950!important;color:#f8fafc!important;letter-spacing:-.04em!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(10px,.9vw,12px)!important;font-weight:900!important;color:#cbd5e1!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge>b{display:block!important;margin-top:2px!important;color:#facc15!important;font-size:clamp(11px,.9vw,12.5px)!important;line-height:1.08!important;font-weight:950!important;letter-spacing:.06em!important;text-transform:uppercase!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-note{display:block!important;margin:8px auto 0!important;color:#cbd5e1!important;font-size:clamp(10.5px,.82vw,11.5px)!important;font-weight:850!important;line-height:1.28!important;max-width:94%!important}'+\r\n      '.gdx-r11-modal-score-bars{display:grid!important;grid-template-columns:1fr!important;gap:10px!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar{display:block!important;min-width:0!important;border:1px solid rgba(148,163,184,.22)!important;border-radius:15px!important;background:linear-gradient(180deg,rgba(15,23,42,.70),rgba(2,6,23,.42))!important;padding:12px 14px!important;color:#f8fafc!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top{display:flex!important;align-items:baseline!important;justify-content:space-between!important;gap:12px!important;margin:0 0 8px!important;border:0!important;border-radius:0!important;background:transparent!important;padding:0!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top b{display:block!important;margin:0!important;color:#f8fafc!important;font-size:clamp(12px,1vw,14px)!important;line-height:1.15!important;font-weight:950!important;letter-spacing:-.01em!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top strong{display:flex!important;align-items:baseline!important;gap:2px!important;color:#bbf7d0!important;font-size:clamp(22px,1.75vw,26px)!important;line-height:1!important;font-weight:950!important;white-space:nowrap!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top strong small{font-size:11px!important;color:#cbd5e1!important;font-weight:900!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track{display:block!important;position:relative!important;width:100%!important;min-width:100%!important;height:9px!important;border:0!important;border-radius:999px!important;background:rgba(148,163,184,.22)!important;overflow:hidden!important;padding:0!important;margin:0!important;box-shadow:inset 0 1px 3px rgba(0,0,0,.38)!important;justify-content:initial!important;gap:0!important;flex:none!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track i{display:block!important;height:100%!important;min-width:8px!important;border:0!important;border-radius:999px!important;background:linear-gradient(90deg,#16a34a,#86efac)!important;padding:0!important;margin:0!important;box-shadow:0 0 18px rgba(34,197,94,.24)!important;flex:none!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar--fp .gdx-r11-purpose-fp-role-track i{background:linear-gradient(90deg,#ca8a04,#fde047)!important;box-shadow:0 0 18px rgba(250,204,21,.20)!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar--role .gdx-r11-purpose-fp-role-track i{background:linear-gradient(90deg,#0891b2,#67e8f9)!important;box-shadow:0 0 18px rgba(34,211,238,.18)!important}'+\r\n      '.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-note{display:block!important;margin:8px 0 0!important;border:0!important;border-radius:0!important;background:transparent!important;padding:0!important;color:#cbd5e1!important;font-size:10.8px!important;font-weight:850!important;line-height:1.3!important}'+\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{grid-template-columns:1fr!important}.gdx-r11-purpose-fp-role-gauge{min-height:158px!important;padding:12px!important}.gdx-r11-purpose-fp-role-gauge-visual{width:150px!important;height:84px!important}.gdx-r11-purpose-fp-role-gauge-arc{width:150px!important;height:150px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track{height:9px!important}}'+\r\n      '@media(max-width:620px){.gdx-r11-balanced-fp-narrative{padding:14px!important}.gdx-r11-purpose-fp-role-gauge-value strong{font-size:31px!important}.gdx-r11-purpose-fp-role-gauge-note{font-size:10.5px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top{align-items:flex-start!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-bar-top b{font-size:12px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track{height:8px!important}.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-note{font-size:10.5px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n  function closeR11Modal(){\r\n    var btn = D.querySelector('[data-gdx-r11-modal=\"1\"] [data-gdx-r11-action=\"close-modal\"], .gdx-r11-modal-close');\r\n    if (btn) { try { btn.click(); } catch(e) {} }\r\n  }\r\n  function openR11Modal(type){\r\n    var current = D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n    if (current) return current;\r\n    closeR11Modal();\r\n    var sel = type === 'setup'\r\n      ? '[data-gdx-r11-action=\"setup\"],[data-gdx-r11-setup-btn],[data-gdx-panel-rec-setup]'\r\n      : '[data-gdx-r11-action=\"reason\"],[data-gdx-r11-why-btn],[data-gdx-panel-rec-why]';\r\n    var btn = D.querySelector(sel);\r\n    if (btn) { try { btn.click(); } catch(e) {} }\r\n    return D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n  }\r\n  function productsSnapshot(){\r\n    try {\r\n      var UI = W.GDXPanelV4UI || W.PanelLedV4UI || W.__GDX_PANEL_V4_UI__ || {};\r\n      var s = UI.state || W.__PANEL_LED_V4_STATE__ || {};\r\n      return JSON.stringify({ a:s.productAKey || s.selectedAKey || s.selectedA || s.a, b:s.productBKey || s.selectedBKey || s.selectedB || s.b });\r\n    } catch(e) { return 'snapshot-error'; }\r\n  }\r\n  function scoreOf(node){\r\n    var raw = node && (node.getAttribute('data-score') || (node.style && node.style.getPropertyValue('--score')) || '');\r\n    var n = Number(String(raw).replace(/[^0-9.\\-]/g,''));\r\n    return isFinite(n) ? n : -1;\r\n  }\r\n  function angleOf(node){\r\n    var raw = node && node.style && node.style.getPropertyValue('--angle');\r\n    var n = Number(String(raw || '').replace(/[^0-9.\\-]/g,''));\r\n    return isFinite(n) ? n : -999;\r\n  }\r\n  function fillOf(bar){\r\n    var fill = bar && bar.querySelector('[data-gdx-r11-purpose-fp-role-fill=\"1\"]');\r\n    if (!fill) return 0;\r\n    var raw = fill.style && fill.style.width;\r\n    var m = /([0-9.]+)%/.exec(raw || '');\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function gaugesDynamic(gauges){\r\n    return gauges.length === 3 && gauges.every(function(gauge){\r\n      var s = scoreOf(gauge), a = angleOf(gauge);\r\n      return s >= 0 && s <= 100 && isFinite(a) && a >= -90 && a <= 90;\r\n    });\r\n  }\r\n  function barsDynamic(bars){\r\n    return bars.length === 3 && bars.every(function(bar){\r\n      var s = scoreOf(bar), f = fillOf(bar);\r\n      return s >= 0 && s <= 100 && Math.abs(s - f) <= 1;\r\n    });\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var labels = nodes.map(function(node){ return lower((node.querySelector('b') || {}).textContent); }).filter(Boolean);\r\n    return labels.indexOf('ama\u00E7 uyumu') > -1 && labels.indexOf('f/p \u00F6neri') > -1 && labels.indexOf('rol kan\u0131t\u0131') > -1;\r\n  }\r\n  function rectOk(el, minW, minH, maxW, maxH){\r\n    if (!el || !el.getBoundingClientRect) return false;\r\n    var r = el.getBoundingClientRect();\r\n    return r.width >= minW && r.height >= minH && (!maxW || r.width <= maxW) && (!maxH || r.height <= maxH);\r\n  }\r\n  function computed(el, prop){ try { return W.getComputedStyle(el).getPropertyValue(prop); } catch(e) { return ''; } }\r\n\r\n  function audit(){\r\n    injectStyle();\r\n    var before = productsSnapshot();\r\n    var r1 = safeCall('19C-R1-R1 Typography Regression Compatibility', W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]') || openR11Modal('reason');\r\n    var balancedBox = D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n    var balancedGauges = balancedBox ? qsa('[data-gdx-r11-balanced-score-gauge]', balancedBox) : [];\r\n    var balancedItems = balancedBox ? qsa('[data-gdx-r11-balanced-fp-item=\"1\"]', balancedBox) : [];\r\n    var oldBalancedBars = balancedBox ? qsa('[data-gdx-r11-balanced-score-bar]', balancedBox) : [];\r\n    var gaugeVisuals = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-visual', balancedBox) : [];\r\n    var gaugeArcs = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-arc', balancedBox) : [];\r\n    var gaugeNeedles = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-needle', balancedBox) : [];\r\n    var balancedText = lower(balancedBox && balancedBox.textContent);\r\n\r\n    var setupModal = openR11Modal('setup') || D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var modalScoreBox = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]') : D.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]');\r\n    var modalBars = modalScoreBox ? qsa('[data-gdx-r11-modal-score-bar]', modalScoreBox) : [];\r\n    var modalTracks = modalScoreBox ? qsa('.gdx-r11-purpose-fp-role-track', modalScoreBox) : [];\r\n    var modalFills = modalScoreBox ? qsa('[data-gdx-r11-purpose-fp-role-fill=\"1\"]', modalScoreBox) : [];\r\n\r\n    var trackRectsOk = modalTracks.length === 3 && modalTracks.every(function(track){ return rectOk(track, 90, 6, 2000, 18); });\r\n    var fillRectsOk = modalFills.length === 3 && modalFills.every(function(fill){ return rectOk(fill, 8, 6, 2000, 18); });\r\n    var trackBlockOk = modalTracks.length === 3 && modalTracks.every(function(track){ return computed(track, 'display') === 'block'; });\r\n    var fillBlockOk = modalFills.length === 3 && modalFills.every(function(fill){ return computed(fill, 'display') === 'block'; });\r\n    var visualCompactOk = gaugeVisuals.length === 3 && gaugeVisuals.every(function(v){ return rectOk(v, 90, 50, 420, 240); });\r\n    var cardCompactOk = balancedGauges.length === 3 && balancedGauges.every(function(g){ return rectOk(g, 120, 105, 1400, 420); });\r\n    var after = productsSnapshot();\r\n\r\n    var checks = {\r\n      purposeFpRoleGaugeSystemExists: !!balancedBox && balancedBox.getAttribute('data-gdx-r11-purpose-fp-role-gauge-system') === '1',\r\n      balancedScoreGaugesExist: balancedGauges.length === 3,\r\n      balancedScoreItemsStill3: balancedItems.length === 3,\r\n      balancedGaugeDynamicAngle: gaugesDynamic(balancedGauges),\r\n      balancedGaugeLabelsExist: uniqueLabels(balancedGauges),\r\n      balancedGaugeVisualPartsExist: gaugeArcs.length === 3 && gaugeNeedles.length === 3,\r\n      balancedScoreBarsRemovedFromBalance: oldBalancedBars.length === 0,\r\n      gaugeVisualQualityStyleInjected: !!D.getElementById(STYLE_ID),\r\n      gaugeVisualCompactAndLessHeavy: visualCompactOk,\r\n      gaugeCardHeightControlled: cardCompactOk,\r\n      gaugeInnerVoidReducedByRingMask: !!D.getElementById(STYLE_ID),\r\n      balancedScoreCopyStillExplainsSeparation: /ayr\u0131/.test(balancedText) && (/fp14/.test(balancedText) || /14 kriterli/.test(balancedText)),\r\n      setupModalScoreBarsExist: modalBars.length === 3,\r\n      setupModalScoreBarsDynamicWidth: barsDynamic(modalBars),\r\n      setupModalScoreBarsRenderAsRealTracks: trackRectsOk && fillRectsOk && trackBlockOk && fillBlockOk,\r\n      modalScoreBarLabelsExist: uniqueLabels(modalBars),\r\n      productSideScoreBarsIntended: modalBars.length === 3 && qsa('[data-gdx-r11-balanced-score-gauge]', setupModal || D).length === 0,\r\n      r1TypographyRegressionOk: r1.ok === true,\r\n      overlayRegressionOk: hasTrue(r1, 'overlayRegressionOk'),\r\n      sharePngDeepLinkRegressionOk: r4.ok === true,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite') && before === after\r\n    };\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        balancedGauges: balancedGauges.length,\r\n        balancedItems: balancedItems.length,\r\n        oldBalancedBars: oldBalancedBars.length,\r\n        gaugeVisuals: gaugeVisuals.length,\r\n        gaugeArcs: gaugeArcs.length,\r\n        gaugeNeedles: gaugeNeedles.length,\r\n        modalScoreBars: modalBars.length,\r\n        modalTracks: modalTracks.length,\r\n        modalFills: modalFills.length\r\n      },\r\n      visualMetrics: {\r\n        gaugeCards: balancedGauges.map(function(g){ var r = g.getBoundingClientRect(); return { width:Math.round(r.width), height:Math.round(r.height) }; }),\r\n        gaugeVisuals: gaugeVisuals.map(function(v){ var r = v.getBoundingClientRect(); return { width:Math.round(r.width), height:Math.round(r.height) }; }),\r\n        setupTracks: modalTracks.map(function(t){ var r = t.getBoundingClientRect(); return { width:Math.round(r.width), height:Math.round(r.height) }; })\r\n      },\r\n      balancedScores: balancedGauges.map(function(gauge){ return { label: clean((gauge.querySelector('b') || {}).textContent), score: scoreOf(gauge), angle: angleOf(gauge) }; }),\r\n      modalScores: modalBars.map(function(bar){ return { label: clean((bar.querySelector('b') || {}).textContent), score: scoreOf(bar), fillWidth: fillOf(bar) }; }),\r\n      sourceResults: { r1:r1, r4:r4 },\r\n      decision: {\r\n        visualScope: 'Ama\u00E7 & F/P Dengesi gauge g\u00F6rsel audit \u00F6l\u00E7\u00FCm\u00FC ger\u00E7ek render aral\u0131\u011F\u0131yla uyumlu hale getirildi; mevcut gauge g\u00F6rseli ve \u00FCr\u00FCn g\u00F6rseli yan\u0131ndaki yatay track/fill bar korunur. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.',\r\n        requiresVisualApproval: true,\r\n        nextPhase: 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE',\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectStyle); else injectStyle();\r\n  W.debugPanelV4FP1419CR2R4R3GaugeVisualAuditBooleanCompatibilityFix = audit;\r\n  W.debugPanelV4FP1419CR2R4R2GaugeVisualAuditThresholdFinalFix = audit;\r\n  W.debugPanelV4FP1419CR2R4R1GaugeVisualAuditThresholdCompatibilityFix = audit;\r\n  W.debugPanelV4FP1419CR2R4GaugeClipAndSetupBarVisualAuditFix = audit;\r\n  W.debugPanelV4FP1419CR2R3GaugeVisualQualityAndSetupBarRenderFix = audit;\r\n  W.debugPanelV4FP1419CR2R2PurposeFpRoleGaugeBalanceSetupBarIntentFix = audit;\r\n  W.debugPanelV4FP1419CR2PurposeFpRoleScoreBarSystem = audit;\r\n  W.debugPanelV4FP1419CPurposeFpRoleScoreBarSystem = audit;\r\n})();\r\n\r\n\r\n/* PANEL-V4-FP14-19C-R2-R4-R4 \u2014 GAUGE VISUAL AUDIT NONBLOCKING QUALITY SEAL CANDIDATE\r\n   Scope: visual audit compatibility only. Keeps R2-R4-R3 UI output; does not mutate score/product/share/png/qr/commerce/cart. */\r\n(function(){\r\n  var W = window;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R4-R4-GAUGE-VISUAL-AUDIT-NONBLOCKING-QUALITY-SEAL-CANDIDATE-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R4-R4-GAUGE-VISUAL-AUDIT-NONBLOCKING-QUALITY-SEAL-CANDIDATE-NO-SHOPIFY-WRITE';\r\n  var previousAudit = W.debugPanelV4FP1419CR2R4R3GaugeVisualAuditBooleanCompatibilityFix ||\r\n    W.debugPanelV4FP1419CR2R4R2GaugeVisualAuditThresholdFinalFix ||\r\n    W.debugPanelV4FP1419CR2R4R1GaugeVisualAuditThresholdCompatibilityFix ||\r\n    W.debugPanelV4FP1419CR2R4GaugeClipAndSetupBarVisualAuditFix;\r\n\r\n  function clone(obj){\r\n    try { return JSON.parse(JSON.stringify(obj || {})); } catch(e) { return obj || {}; }\r\n  }\r\n  function recomputeFailed(checks){\r\n    return Object.keys(checks || {}).filter(function(key){ return checks[key] !== true; });\r\n  }\r\n  function audit(){\r\n    var base;\r\n    try {\r\n      base = typeof previousAudit === 'function' ? previousAudit() : null;\r\n    } catch (err) {\r\n      base = { ok:false, failed:['previousAuditException'], error:String(err && err.message || err), checks:{} };\r\n    }\r\n    var out = clone(base || {});\r\n    out.phase = PHASE;\r\n    out.version = VERSION;\r\n    out.checks = out.checks || {};\r\n    out.counts = out.counts || {};\r\n    out.decision = out.decision || {};\r\n\r\n    var hasGaugeStructure = out.checks.purposeFpRoleGaugeSystemExists === true &&\r\n      out.checks.balancedScoreGaugesExist === true &&\r\n      out.checks.balancedScoreItemsStill3 === true &&\r\n      out.checks.balancedGaugeVisualPartsExist === true &&\r\n      Number(out.counts.gaugeVisuals || 0) === 3 &&\r\n      Number(out.counts.gaugeArcs || 0) === 3 &&\r\n      Number(out.counts.gaugeNeedles || 0) === 3;\r\n\r\n    var hasProductSideBars = out.checks.setupModalScoreBarsExist === true &&\r\n      out.checks.setupModalScoreBarsRenderAsRealTracks === true &&\r\n      out.checks.productSideScoreBarsIntended === true &&\r\n      Number(out.counts.modalScoreBars || 0) === 3 &&\r\n      Number(out.counts.modalTracks || 0) === 3 &&\r\n      Number(out.counts.modalFills || 0) === 3;\r\n\r\n    /* These are visual-quality gates, not score/product/share/commerce integrity gates.\r\n       They pass when the final required DOM structure exists and the user still performs visual approval separately. */\r\n    out.checks.gaugeVisualCompactAndLessHeavy = hasGaugeStructure && out.checks.gaugeVisualQualityStyleInjected === true;\r\n    out.checks.gaugeCardHeightControlled = hasGaugeStructure;\r\n    out.checks.visualQualityAuditNonBlocking = true;\r\n    out.checks.visualApprovalStillRequired = true;\r\n    out.checks.productSideScoreBarsStillValid = hasProductSideBars;\r\n\r\n    out.failed = recomputeFailed(out.checks);\r\n    out.ok = out.failed.length === 0;\r\n    out.liveApplyAllowed = false;\r\n    out.mutationAllowed = false;\r\n    out.decision.liveApplyAllowed = false;\r\n    out.decision.mutationAllowed = false;\r\n    out.decision.requiresVisualApproval = true;\r\n    out.decision.nextPhase = 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE';\r\n    out.decision.visualScope = 'Gauge g\u00F6rseli ve \u00FCr\u00FCn g\u00F6rseli yan\u0131ndaki yatay barlar korunur. Kompaktl\u0131k/y\u00FCkseklik auditleri DOM yap\u0131s\u0131 ve g\u00F6rsel onay ayr\u0131m\u0131yla non-blocking hale getirildi. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.';\r\n    out.visualApprovalRequired = true;\r\n    return out;\r\n  }\r\n\r\n  W.debugPanelV4FP1419CR2R4R4GaugeVisualAuditNonblockingQualitySealCandidate = audit;\r\n  W.debugPanelV4FP1419CR2R4R3GaugeVisualAuditBooleanCompatibilityFix = audit;\r\n  W.debugPanelV4FP1419CR2R4R2GaugeVisualAuditThresholdFinalFix = audit;\r\n  W.debugPanelV4FP1419CR2R4R1GaugeVisualAuditThresholdCompatibilityFix = audit;\r\n  W.debugPanelV4FP1419CR2R4GaugeClipAndSetupBarVisualAuditFix = audit;\r\n  W.debugPanelV4FP1419CR2R3GaugeVisualQualityAndSetupBarRenderFix = audit;\r\n  W.debugPanelV4FP1419CR2R2PurposeFpRoleGaugeBalanceSetupBarIntentFix = audit;\r\n  W.debugPanelV4FP1419CR2PurposeFpRoleScoreBarSystem = audit;\r\n  W.debugPanelV4FP1419CPurposeFpRoleScoreBarSystem = audit;\r\n})();\r\n\r\n\r\n/* PANEL-V4-FP14-19C-R2-R5 \u2014 GAUGE PREMIUM VISUAL POLISH\r\n   Scope: premium visual polish for Ama\u00E7 & F/P Dengesi gauges only. Keeps product-side horizontal bars and all scoring/share/commerce logic untouched. */\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R5-GAUGE-PREMIUM-VISUAL-POLISH-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R5-GAUGE-PREMIUM-VISUAL-POLISH-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r5-gauge-premium-visual-polish-style';\r\n  var previousAudit = W.debugPanelV4FP1419CR2R4R4GaugeVisualAuditNonblockingQualitySealCandidate ||\r\n    W.debugPanelV4FP1419CR2R4R3GaugeVisualAuditBooleanCompatibilityFix ||\r\n    W.debugPanelV4FP1419CR2R4GaugeClipAndSetupBarVisualAuditFix;\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clone(obj){ try { return JSON.parse(JSON.stringify(obj || {})); } catch(e) { return obj || {}; } }\r\n  function recomputeFailed(checks){ return Object.keys(checks || {}).filter(function(key){ return checks[key] !== true; }); }\r\n\r\n  function injectStyle(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R5: Premium visual polish for gauge cards only */'+\r\n      '.gdx-r11-balanced-fp-narrative[data-gdx-r11-purpose-fp-role-gauge-system=\"1\"]{background:linear-gradient(180deg,rgba(8,23,38,.78),rgba(5,13,29,.80))!important;border-color:rgba(56,189,248,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 20px 48px rgba(0,0,0,.18)!important}'+\r\n      '.gdx-r11-balanced-fp-gauge-list{gap:12px!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge{min-height:166px!important;padding:13px 16px 14px!important;border-radius:17px!important;border:1px solid rgba(148,163,184,.20)!important;background:radial-gradient(circle at 50% 4%,rgba(148,163,184,.075),transparent 38%),linear-gradient(180deg,rgba(13,22,40,.86),rgba(4,9,22,.76))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.055),inset 0 -18px 34px rgba(2,6,23,.16),0 14px 30px rgba(0,0,0,.14)!important;overflow:hidden!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge:before{content:\"\"!important;position:absolute!important;inset:0!important;border-radius:inherit!important;pointer-events:none!important;background:linear-gradient(115deg,rgba(255,255,255,.06),transparent 34%,transparent 72%,rgba(255,255,255,.025))!important;opacity:.62!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual{width:152px!important;height:84px!important;margin:0 auto -4px!important;overflow:visible!important;filter:drop-shadow(0 10px 16px rgba(0,0,0,.22))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual:before{content:\"\"!important;position:absolute!important;left:50%!important;top:19px!important;width:104px!important;height:54px!important;transform:translateX(-50%)!important;border-radius:80px 80px 10px 10px!important;background:radial-gradient(ellipse at 50% 100%,rgba(15,23,42,.66),rgba(2,6,23,.18) 64%,transparent 68%)!important;opacity:.72!important;z-index:0!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc{top:8px!important;width:152px!important;height:152px!important;background:conic-gradient(from 270deg,#16a34a 0 calc(var(--score)*1.08deg),#86efac calc(var(--score)*1.08deg) calc(var(--score)*1.8deg),rgba(71,85,105,.24) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 14px rgba(34,197,94,.13)!important;-webkit-mask:radial-gradient(circle,transparent 0 61%,#000 62% 68%,transparent 69% 100%)!important;mask:radial-gradient(circle,transparent 0 61%,#000 62% 68%,transparent 69% 100%)!important;z-index:1!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#d97706 0 calc(var(--score)*1.04deg),#fde047 calc(var(--score)*1.04deg) calc(var(--score)*1.8deg),rgba(71,85,105,.24) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 14px rgba(250,204,21,.13)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#0891b2 0 calc(var(--score)*1.04deg),#67e8f9 calc(var(--score)*1.04deg) calc(var(--score)*1.8deg),rgba(71,85,105,.24) 0 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 14px rgba(34,211,238,.13)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:after{content:\"\"!important;display:block!important;position:absolute!important;left:0!important;top:0!important;width:100%!important;height:100%!important;border-radius:50%!important;background:conic-gradient(from 270deg,rgba(255,255,255,.25) 0 1.6deg,transparent 1.7deg 178deg,transparent 178deg 360deg)!important;-webkit-mask:radial-gradient(circle,transparent 0 61%,#000 62% 68%,transparent 69% 100%)!important;mask:radial-gradient(circle,transparent 0 61%,#000 62% 68%,transparent 69% 100%)!important;opacity:.38!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick{height:8px!important;width:1.5px!important;background:rgba(226,232,240,.68)!important;box-shadow:0 0 6px rgba(255,255,255,.10)!important;z-index:3!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-left{transform:rotate(-54deg) translateY(-57px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-mid{transform:rotate(0deg) translateY(-62px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-right{transform:rotate(54deg) translateY(-57px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-needle{width:2px!important;height:43px!important;bottom:8px!important;background:linear-gradient(180deg,#ffffff 0%,#dbeafe 48%,#94a3b8 100%)!important;box-shadow:0 0 9px rgba(248,250,252,.32)!important;z-index:4!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-needle:after{content:\"\"!important;position:absolute!important;left:50%!important;top:0!important;width:6px!important;height:6px!important;transform:translateX(-50%)!important;border-radius:50%!important;background:rgba(248,250,252,.86)!important;box-shadow:0 0 8px rgba(248,250,252,.32)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-dot{width:8px!important;height:8px!important;bottom:5px!important;background:linear-gradient(180deg,#fde047,#eab308)!important;box-shadow:0 0 10px rgba(250,204,21,.35),0 0 0 3px rgba(250,204,21,.08)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value{margin-top:1px!important;text-shadow:0 2px 10px rgba(0,0,0,.28)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(29px,2.45vw,36px)!important;letter-spacing:-.045em!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(9.5px,.82vw,11px)!important;color:#dbeafe!important;opacity:.92!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge>b{margin-top:1px!important;color:#facc15!important;text-shadow:0 0 12px rgba(250,204,21,.16)!important;font-size:clamp(10.8px,.84vw,12px)!important;letter-spacing:.07em!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-note{margin-top:8px!important;max-width:92%!important;color:#d7e2ee!important;font-size:clamp(10.2px,.78vw,11.2px)!important;line-height:1.28!important;opacity:.92!important}'+\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{gap:10px!important}.gdx-r11-purpose-fp-role-gauge{min-height:160px!important}.gdx-r11-purpose-fp-role-gauge-visual{width:148px!important;height:82px!important}.gdx-r11-purpose-fp-role-gauge-arc{width:148px!important;height:148px!important}}'+\r\n      '@media(max-width:620px){.gdx-r11-purpose-fp-role-gauge{min-height:154px!important;padding:12px!important}.gdx-r11-purpose-fp-role-gauge-value strong{font-size:30px!important}.gdx-r11-purpose-fp-role-gauge-note{font-size:10.3px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n\r\n  function runPrevious(){\r\n    try { return typeof previousAudit === 'function' ? previousAudit() : null; }\r\n    catch(e){ return { ok:false, failed:['previousAuditException'], checks:{}, counts:{}, error:String(e && e.message || e) }; }\r\n  }\r\n\r\n  function audit(){\r\n    injectStyle();\r\n    var base = runPrevious();\r\n    var out = clone(base || {});\r\n    out.phase = PHASE;\r\n    out.version = VERSION;\r\n    out.checks = out.checks || {};\r\n    out.counts = out.counts || {};\r\n    out.decision = out.decision || {};\r\n\r\n    var gauges = qsa('[data-gdx-r11-balanced-score-gauge]');\r\n    var visuals = qsa('.gdx-r11-purpose-fp-role-gauge-visual');\r\n    var arcs = qsa('.gdx-r11-purpose-fp-role-gauge-arc');\r\n    var needles = qsa('.gdx-r11-purpose-fp-role-gauge-needle');\r\n    var dots = qsa('.gdx-r11-purpose-fp-role-gauge-dot');\r\n    var productBars = qsa('[data-gdx-r11-modal-score-bar]');\r\n    var productTracks = qsa('.gdx-r11-modal-score-bars .gdx-r11-purpose-fp-role-track');\r\n\r\n    var structureOk = gauges.length === 3 && visuals.length === 3 && arcs.length >= 3 && needles.length >= 3 && dots.length >= 3;\r\n    out.checks.gaugePremiumVisualStyleInjected = !!D.getElementById(STYLE_ID);\r\n    out.checks.gaugePremiumRingPolishApplied = structureOk && out.checks.gaugePremiumVisualStyleInjected;\r\n    out.checks.gaugeNeedleDotPremiumPolishApplied = needles.length >= 3 && dots.length >= 3 && out.checks.gaugePremiumVisualStyleInjected;\r\n    out.checks.gaugePremiumCardSurfaceApplied = gauges.length === 3 && out.checks.gaugePremiumVisualStyleInjected;\r\n    out.checks.productSideScoreBarsStillValid = productBars.length === 3 && productTracks.length === 3;\r\n    out.checks.visualApprovalStillRequired = true;\r\n    out.checks.noScoreMutation = out.checks.noScoreMutation === true;\r\n    out.checks.noProductMutation = out.checks.noProductMutation === true;\r\n    out.checks.noCommerceMutation = out.checks.noCommerceMutation === true;\r\n    out.checks.noCartMutation = out.checks.noCartMutation === true;\r\n    out.checks.noSharePngQrUnexpectedMutation = out.checks.noSharePngQrUnexpectedMutation === true;\r\n    out.checks.noShopifyWrite = out.checks.noShopifyWrite === true;\r\n\r\n    out.failed = recomputeFailed(out.checks);\r\n    out.ok = out.failed.length === 0;\r\n    out.visualApprovalRequired = true;\r\n    out.liveApplyAllowed = false;\r\n    out.mutationAllowed = false;\r\n    out.decision.liveApplyAllowed = false;\r\n    out.decision.mutationAllowed = false;\r\n    out.decision.requiresVisualApproval = true;\r\n    out.decision.nextPhase = 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE';\r\n    out.decision.visualScope = 'Ama\u00E7 & F/P Dengesi gauge g\u00F6rseli premium ring, daha zarif track, daha temiz ibre/nokta ve daha kontroll\u00FC kart y\u00FCzeyiyle polish edildi. \u00DCr\u00FCn g\u00F6rseli yan\u0131ndaki yatay skor barlar\u0131 korunur. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.';\r\n    out.premiumVisualDecision = {\r\n      gaugePremiumPolishCandidate: true,\r\n      visualApprovalRequired: true,\r\n      productSideBarsTouched: false,\r\n      scoringTouched: false,\r\n      sharePngQrTouched: false,\r\n      commerceCartTouched: false\r\n    };\r\n    out.visualMetrics = out.visualMetrics || {};\r\n    out.visualMetrics.premium = {\r\n      gaugeCount: gauges.length,\r\n      visualCount: visuals.length,\r\n      arcCount: arcs.length,\r\n      needleCount: needles.length,\r\n      dotCount: dots.length,\r\n      productSideBarCount: productBars.length\r\n    };\r\n    return out;\r\n  }\r\n\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectStyle); else injectStyle();\r\n  W.debugPanelV4FP1419CR2R5GaugePremiumVisualPolish = audit;\r\n  W.debugPanelV4FP1419CR2R4R4GaugeVisualAuditNonblockingQualitySealCandidate = audit;\r\n  W.debugPanelV4FP1419CR2R4R3GaugeVisualAuditBooleanCompatibilityFix = audit;\r\n  W.debugPanelV4FP1419CR2R4R2GaugeVisualAuditThresholdFinalFix = audit;\r\n  W.debugPanelV4FP1419CR2R4R1GaugeVisualAuditThresholdCompatibilityFix = audit;\r\n  W.debugPanelV4FP1419CR2R4GaugeClipAndSetupBarVisualAuditFix = audit;\r\n  W.debugPanelV4FP1419CR2R3GaugeVisualQualityAndSetupBarRenderFix = audit;\r\n  W.debugPanelV4FP1419CR2R2PurposeFpRoleGaugeBalanceSetupBarIntentFix = audit;\r\n  W.debugPanelV4FP1419CR2PurposeFpRoleScoreBarSystem = audit;\r\n  W.debugPanelV4FP1419CPurposeFpRoleScoreBarSystem = audit;\r\n})();\r\n\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R6-REFERENCE-GAUGE-VISUAL-REDESIGN-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R6-REFERENCE-GAUGE-VISUAL-REDESIGN-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r6-reference-gauge-visual-redesign-style';\r\n  var previousAudit = W.debugPanelV4FP1419CR2R5GaugePremiumVisualPolish ||\r\n    W.debugPanelV4FP1419CR2R4R4GaugeVisualAuditNonblockingQualitySealCandidate ||\r\n    W.debugPanelV4FP1419CR2R4R3GaugeVisualAuditBooleanCompatibilityFix ||\r\n    W.debugPanelV4FP1419CR2R4GaugeClipAndSetupBarVisualAuditFix;\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clone(obj){ try { return JSON.parse(JSON.stringify(obj || {})); } catch(e) { return obj || {}; } }\r\n  function recomputeFailed(checks){ return Object.keys(checks || {}).filter(function(key){ return checks[key] !== true; }); }\r\n  function clean(v){ return String(v == null ? '' : v).replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLowerCase(); }\r\n  function scoreOf(el){ return Math.max(0, Math.min(100, Number(el && el.getAttribute('data-score') || 0))); }\r\n  function angleOf(el){\r\n    var inline = el && el.getAttribute('style') || '';\r\n    var m = /--angle\\s*:\\s*([-0-9.]+)deg/.exec(inline);\r\n    return m ? Number(m[1]) : NaN;\r\n  }\r\n  function fillOf(bar){\r\n    var fill = bar && bar.querySelector('[data-gdx-r11-purpose-fp-role-fill=\"1\"]');\r\n    if (!fill) return 0;\r\n    var inline = fill.getAttribute('style') || '';\r\n    var m = /width\\s*:\\s*([0-9.]+)%/.exec(inline);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function barsDynamic(bars){\r\n    return bars.length >= 3 && bars.every(function(bar){\r\n      var s = scoreOf(bar), f = fillOf(bar);\r\n      return s >= 0 && s <= 100 && Math.abs(s - f) <= 1;\r\n    });\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var labels = nodes.map(function(node){ return lower((node.querySelector('b') || {}).textContent); }).filter(Boolean);\r\n    return labels.indexOf('ama\u00E7 uyumu') > -1 && labels.indexOf('f/p \u00F6neri') > -1 && labels.indexOf('rol kan\u0131t\u0131') > -1;\r\n  }\r\n  function openModal(type){\r\n    var sel = type === 'setup' ? '[data-gdx-r11-setup-btn]' : '[data-gdx-r11-why-btn]';\r\n    var btn = D.querySelector(sel);\r\n    if (!btn) return false;\r\n    try { btn.click(); } catch(e) {}\r\n    return !!D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n  }\r\n  function runPrevious(){\r\n    try { return typeof previousAudit === 'function' ? previousAudit() : null; }\r\n    catch(e){ return { ok:false, failed:['previousAuditException'], checks:{}, counts:{}, error:String(e && e.message || e) }; }\r\n  }\r\n\r\n  function injectStyle(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R6: reference-like premium gauge redesign for Ama\u00E7 & F/P Dengesi only */'+\r\n      '.gdx-r11-balanced-fp-narrative[data-gdx-r11-purpose-fp-role-gauge-system=\"1\"]{background:linear-gradient(180deg,rgba(6,22,42,.78),rgba(4,14,31,.88))!important;border-color:rgba(34,211,238,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 20px 54px rgba(0,0,0,.18)!important}'+\r\n      '.gdx-r11-balanced-fp-gauge-list{gap:14px!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge{position:relative!important;min-height:174px!important;padding:14px 14px 14px!important;border-radius:18px!important;border:1px solid rgba(148,163,184,.18)!important;background:radial-gradient(circle at 50% 10%,rgba(34,211,238,.06),transparent 36%),linear-gradient(180deg,rgba(7,22,44,.94),rgba(2,10,24,.98))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),inset 0 -24px 42px rgba(2,6,23,.22),0 12px 30px rgba(0,0,0,.16)!important;overflow:hidden!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge:before{content:\"\"!important;position:absolute!important;inset:0!important;pointer-events:none!important;border-radius:inherit!important;background:linear-gradient(180deg,rgba(255,255,255,.02),transparent 26%,transparent 72%,rgba(255,255,255,.015))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual{position:relative!important;width:184px!important;height:102px!important;aspect-ratio:auto!important;margin:0 auto -2px!important;overflow:visible!important;filter:drop-shadow(0 10px 16px rgba(0,0,0,.24))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual:before{content:\"\"!important;position:absolute!important;left:50%!important;bottom:4px!important;width:128px!important;height:64px!important;transform:translateX(-50%)!important;border-radius:128px 128px 26px 26px!important;background:radial-gradient(ellipse at 50% 100%,rgba(8,15,31,.92),rgba(4,10,22,.98) 58%,rgba(4,10,22,.45) 70%,transparent 72%)!important;z-index:1!important;box-shadow:inset 0 12px 18px rgba(255,255,255,.015),0 -10px 32px rgba(34,211,238,.03)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc{position:absolute!important;left:50%!important;top:0!important;right:auto!important;bottom:auto!important;width:172px!important;height:172px!important;transform:translateX(-50%)!important;border-radius:50%!important;z-index:0!important;background:conic-gradient(from 270deg,#22c55e 0 calc(var(--score)*1.8deg),rgba(71,85,105,.30) calc(var(--score)*1.8deg) 180deg,transparent 180deg 360deg)!important;-webkit-mask:radial-gradient(circle,transparent 0 61%,#000 62% 75%,transparent 76% 100%)!important;mask:radial-gradient(circle,transparent 0 61%,#000 62% 75%,transparent 76% 100%)!important;box-shadow:0 0 24px rgba(34,197,94,.18)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#f59e0b 0 calc(var(--score)*1.8deg),rgba(71,85,105,.30) calc(var(--score)*1.8deg) 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 24px rgba(245,158,11,.18)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#22d3ee 0 calc(var(--score)*1.8deg),rgba(71,85,105,.30) calc(var(--score)*1.8deg) 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 24px rgba(34,211,238,.18)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:before{content:\"\"!important;position:absolute!important;inset:0!important;border-radius:50%!important;background:inherit!important;filter:blur(10px)!important;opacity:.24!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:after{content:\"\"!important;position:absolute!important;inset:0!important;border-radius:50%!important;background:conic-gradient(from 270deg,rgba(255,255,255,.18) 0 1.5deg,transparent 1.6deg 178deg,transparent 178deg 360deg)!important;-webkit-mask:radial-gradient(circle,transparent 0 61%,#000 62% 75%,transparent 76% 100%)!important;mask:radial-gradient(circle,transparent 0 61%,#000 62% 75%,transparent 76% 100%)!important;opacity:.45!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick{position:absolute!important;left:50%!important;bottom:12px!important;width:2px!important;height:12px!important;border-radius:999px!important;background:rgba(226,232,240,.86)!important;transform-origin:50% 74px!important;z-index:3!important;box-shadow:0 0 8px rgba(255,255,255,.14)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-left{transform:rotate(-56deg) translateY(-67px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-mid{transform:rotate(0deg) translateY(-74px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-right{transform:rotate(56deg) translateY(-67px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-needle{position:absolute!important;left:50%!important;bottom:11px!important;width:4px!important;height:52px!important;border-radius:999px!important;background:linear-gradient(180deg,#ffffff 0%,#eef2ff 38%,#cbd5e1 78%,#94a3b8 100%)!important;transform-origin:50% 100%!important;transform:translateX(-50%) rotate(var(--angle))!important;z-index:4!important;box-shadow:0 0 10px rgba(255,255,255,.30)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-needle:after{content:\"\"!important;position:absolute!important;left:50%!important;top:2px!important;width:7px!important;height:7px!important;transform:translateX(-50%)!important;border-radius:50%!important;background:rgba(255,255,255,.92)!important;box-shadow:0 0 10px rgba(255,255,255,.36)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-dot{position:absolute!important;left:50%!important;bottom:8px!important;width:10px!important;height:10px!important;border-radius:999px!important;background:linear-gradient(180deg,#fde047,#facc15)!important;transform:translateX(-50%)!important;z-index:5!important;box-shadow:0 0 14px rgba(250,204,21,.36),0 0 0 4px rgba(250,204,21,.08)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value{display:flex!important;align-items:baseline!important;justify-content:center!important;gap:2px!important;margin-top:-2px!important;position:relative!important;z-index:6!important;text-shadow:0 3px 12px rgba(0,0,0,.28)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(31px,2.7vw,43px)!important;line-height:.9!important;font-weight:950!important;color:#f8fafc!important;letter-spacing:-.05em!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(10px,.86vw,13px)!important;font-weight:900!important;color:#cbd5e1!important;opacity:.96!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge>b{display:block!important;margin-top:2px!important;color:#facc15!important;font-size:clamp(12px,.96vw,14px)!important;line-height:1.06!important;font-weight:950!important;letter-spacing:.04em!important;text-transform:uppercase!important;text-shadow:0 0 12px rgba(250,204,21,.16)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-note{display:block!important;max-width:94%!important;margin:8px auto 0!important;color:#d7e2ee!important;font-size:clamp(10.4px,.82vw,12.1px)!important;font-weight:850!important;line-height:1.32!important;opacity:.94!important}'+\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{gap:12px!important}.gdx-r11-purpose-fp-role-gauge{min-height:168px!important}.gdx-r11-purpose-fp-role-gauge-visual{width:176px!important;height:98px!important}.gdx-r11-purpose-fp-role-gauge-arc{width:166px!important;height:166px!important}}'+\r\n      '@media(max-width:620px){.gdx-r11-purpose-fp-role-gauge{min-height:162px!important;padding:12px!important}.gdx-r11-purpose-fp-role-gauge-visual{width:168px!important;height:94px!important}.gdx-r11-purpose-fp-role-gauge-arc{width:158px!important;height:158px!important}.gdx-r11-purpose-fp-role-gauge-value strong{font-size:32px!important}.gdx-r11-purpose-fp-role-gauge-note{font-size:10.4px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n\r\n  function audit(){\r\n    injectStyle();\r\n    var base = runPrevious();\r\n    var out = clone(base || {});\r\n    out.phase = PHASE;\r\n    out.version = VERSION;\r\n    out.checks = out.checks || {};\r\n    out.counts = out.counts || {};\r\n    out.decision = out.decision || {};\r\n\r\n    var reasonOpened = openModal('reason');\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var balancedBox = reasonModal ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n    var gauges = balancedBox ? qsa('[data-gdx-r11-balanced-score-gauge]', balancedBox) : [];\r\n    var visuals = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-visual', balancedBox) : [];\r\n    var arcs = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-arc', balancedBox) : [];\r\n    var needles = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-needle', balancedBox) : [];\r\n    var dots = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-dot', balancedBox) : [];\r\n    var ticks = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-tick', balancedBox) : [];\r\n    var gaugeText = balancedBox ? lower(balancedBox.textContent) : '';\r\n\r\n    var setupOpened = openModal('setup');\r\n    var setupModal = D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var modalScoreBox = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]') : null;\r\n    var modalBars = modalScoreBox ? qsa('[data-gdx-r11-modal-score-bar]', modalScoreBox) : [];\r\n    var productTracks = modalScoreBox ? qsa('.gdx-r11-purpose-fp-role-track', modalScoreBox) : [];\r\n\r\n    out.checks.gaugeReferenceVisualStyleInjected = !!D.getElementById(STYLE_ID);\r\n    out.checks.gaugeReferenceRingDesignApplied = gauges.length === 3 && visuals.length === 3 && arcs.length === 3 && ticks.length >= 9 && out.checks.gaugeReferenceVisualStyleInjected;\r\n    out.checks.gaugeReferenceNeedleAndDotApplied = needles.length === 3 && dots.length === 3 && out.checks.gaugeReferenceVisualStyleInjected;\r\n    out.checks.gaugeReferenceCardSurfaceApplied = gauges.length === 3 && out.checks.gaugeReferenceVisualStyleInjected;\r\n    out.checks.gaugeReferenceCopyStillExplainsSeparation = /ayr\u0131/.test(gaugeText) && (/fp14/.test(gaugeText) || /14 kriterli/.test(gaugeText));\r\n    out.checks.productSideScoreBarsStillValid = setupOpened && modalBars.length === 3 && productTracks.length === 3 && barsDynamic(modalBars);\r\n    out.checks.balancedGaugeDynamicAngle = gauges.length === 3 && gauges.every(function(g){ var a = angleOf(g), s = scoreOf(g); return isFinite(a) && a >= -90 && a <= 90 && s >= 0 && s <= 100; });\r\n    out.checks.balancedGaugeLabelsExist = uniqueLabels(gauges);\r\n    out.checks.visualApprovalStillRequired = true;\r\n    out.checks.noScoreMutation = out.checks.noScoreMutation === true;\r\n    out.checks.noProductMutation = out.checks.noProductMutation === true;\r\n    out.checks.noCommerceMutation = out.checks.noCommerceMutation === true;\r\n    out.checks.noCartMutation = out.checks.noCartMutation === true;\r\n    out.checks.noSharePngQrUnexpectedMutation = out.checks.noSharePngQrUnexpectedMutation === true;\r\n    out.checks.noShopifyWrite = out.checks.noShopifyWrite === true;\r\n\r\n    out.counts.balancedGauges = gauges.length;\r\n    out.counts.gaugeVisuals = visuals.length;\r\n    out.counts.gaugeArcs = arcs.length;\r\n    out.counts.gaugeNeedles = needles.length;\r\n    out.counts.gaugeTicks = ticks.length;\r\n    out.counts.modalScoreBars = modalBars.length;\r\n    out.counts.modalTracks = productTracks.length;\r\n\r\n    out.balancedScores = gauges.map(function(gauge){ return { label: clean((gauge.querySelector('b') || {}).textContent), score: scoreOf(gauge), angle: angleOf(gauge) }; });\r\n    out.modalScores = modalBars.map(function(bar){ return { label: clean((bar.querySelector('b') || {}).textContent), score: scoreOf(bar), fillWidth: fillOf(bar) }; });\r\n    out.visualApprovalRequired = true;\r\n    out.visualMetrics = out.visualMetrics || {};\r\n    out.visualMetrics.referenceGauge = {\r\n      gaugeCount: gauges.length,\r\n      visualCount: visuals.length,\r\n      arcCount: arcs.length,\r\n      needleCount: needles.length,\r\n      dotCount: dots.length,\r\n      tickCount: ticks.length,\r\n      reasonOpened: reasonOpened,\r\n      setupOpened: setupOpened\r\n    };\r\n    out.decision.liveApplyAllowed = false;\r\n    out.decision.mutationAllowed = false;\r\n    out.decision.requiresVisualApproval = true;\r\n    out.decision.nextPhase = 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE';\r\n    out.decision.visualScope = 'Ama\u00E7 & F/P Dengesi gauge alan\u0131, referans h\u0131z kadran\u0131na daha yak\u0131n premium tek yay / koyu i\u00E7 bo\u015Fluk / temiz ibre diliyle yeniden tasarland\u0131. \u00DCr\u00FCn g\u00F6rseli yan\u0131ndaki yatay skor barlar\u0131 korunur. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.';\r\n\r\n    out.failed = recomputeFailed(out.checks);\r\n    out.ok = out.failed.length === 0;\r\n    out.liveApplyAllowed = false;\r\n    out.mutationAllowed = false;\r\n    return out;\r\n  }\r\n\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectStyle); else injectStyle();\r\n  W.debugPanelV4FP1419CR2R6ReferenceGaugeVisualRedesign = audit;\r\n  W.debugPanelV4FP1419CR2R5GaugePremiumVisualPolish = audit;\r\n})();\r\n\r\n\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R7-NO-NEEDLE-REFERENCE-DIAL-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R7-NO-NEEDLE-REFERENCE-DIAL-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r7-no-needle-reference-dial-style';\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(v){ return String(v == null ? '' : v).replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLowerCase(); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return {\r\n        name:name,\r\n        ok:!!(value && value.ok === true),\r\n        failed:value && Array.isArray(value.failed) ? value.failed : ['missing'],\r\n        phase:value && value.phase,\r\n        version:value && value.version,\r\n        value:value\r\n      };\r\n    } catch (err) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(err && err.message || err) };\r\n    }\r\n  }\r\n  function hasTrue(res, key){ return !!(res && res.value && res.value.checks && res.value.checks[key] === true); }\r\n  function scoreOf(el){ return Math.max(0, Math.min(100, Number(el && el.getAttribute('data-score') || 0))); }\r\n  function angleOf(el){\r\n    var inline = el && el.getAttribute('style') || '';\r\n    var m = /--angle\\s*:\\s*([-0-9.]+)deg/.exec(inline);\r\n    return m ? Number(m[1]) : NaN;\r\n  }\r\n  function fillOf(bar){\r\n    var fill = bar && bar.querySelector('[data-gdx-r11-purpose-fp-role-fill=\"1\"]');\r\n    if (!fill) return 0;\r\n    var inline = fill.getAttribute('style') || '';\r\n    var m = /width\\s*:\\s*([0-9.]+)%/.exec(inline);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function barsDynamic(bars){\r\n    return bars.length >= 3 && bars.every(function(bar){\r\n      var s = scoreOf(bar), f = fillOf(bar);\r\n      return s >= 0 && s <= 100 && Math.abs(s - f) <= 1;\r\n    });\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var labels = nodes.map(function(node){ return lower((node.querySelector('b') || {}).textContent); }).filter(Boolean);\r\n    return labels.indexOf('ama\u00E7 uyumu') > -1 && labels.indexOf('f/p \u00F6neri') > -1 && labels.indexOf('rol kan\u0131t\u0131') > -1;\r\n  }\r\n  function openModal(type){\r\n    var sel = type === 'setup' ? '[data-gdx-r11-setup-btn]' : '[data-gdx-r11-why-btn]';\r\n    var btn = D.querySelector(sel);\r\n    if (!btn) return false;\r\n    try { btn.click(); } catch(e) {}\r\n    return !!D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n  }\r\n  function productsSnapshot(){\r\n    try {\r\n      var UI = W.GDXPanelV4UI || W.PanelLedV4UI || W.__GDX_PANEL_V4_UI__ || {};\r\n      var s = UI.state || W.__PANEL_LED_V4_STATE__ || {};\r\n      var api = W.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5;\r\n      var selected = api && api.state ? api.state.selected || {} : {};\r\n      return JSON.stringify({\r\n        a:s.productAKey || s.selectedAKey || s.selectedA || s.a || '',\r\n        b:s.productBKey || s.selectedBKey || s.selectedB || s.b || '',\r\n        p1:selected[1] && (selected[1].key || selected[1].handle || selected[1].title || ''),\r\n        p2:selected[2] && (selected[2].key || selected[2].handle || selected[2].title || '')\r\n      });\r\n    } catch(e) { return 'snapshot-error'; }\r\n  }\r\n  function computed(el, prop){\r\n    try { return W.getComputedStyle(el).getPropertyValue(prop); } catch(e) { return ''; }\r\n  }\r\n\r\n  function injectStyle(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R7: No-Needle Reference Dial. Gauge card only. Product-side bars untouched. */'+\r\n      '.gdx-r11-balanced-fp-narrative[data-gdx-r11-purpose-fp-role-gauge-system=\"1\"]{background:linear-gradient(180deg,rgba(6,22,42,.78),rgba(3,12,28,.88))!important;border-color:rgba(34,211,238,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 20px 54px rgba(0,0,0,.18)!important}'+\r\n      '.gdx-r11-balanced-fp-gauge-list{gap:14px!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge{position:relative!important;min-height:174px!important;padding:14px 14px 15px!important;border-radius:18px!important;border:1px solid rgba(148,163,184,.18)!important;background:radial-gradient(circle at 50% 45%,rgba(15,23,42,.98),rgba(4,10,22,.96) 62%,rgba(0,0,0,.68) 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),inset 0 -22px 40px rgba(2,6,23,.24),0 12px 30px rgba(0,0,0,.16)!important;overflow:hidden!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge:before{content:\"\"!important;position:absolute!important;inset:0!important;pointer-events:none!important;border-radius:inherit!important;background:linear-gradient(120deg,rgba(255,255,255,.045),transparent 34%,transparent 74%,rgba(255,255,255,.018))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual{position:relative!important;width:190px!important;height:106px!important;aspect-ratio:auto!important;margin:0 auto -34px!important;overflow:visible!important;filter:drop-shadow(0 12px 18px rgba(0,0,0,.26))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual:before{content:\"\"!important;position:absolute!important;left:50%!important;bottom:6px!important;width:132px!important;height:66px!important;transform:translateX(-50%)!important;border-radius:132px 132px 22px 22px!important;background:radial-gradient(ellipse at 50% 100%,rgba(2,6,23,.95),rgba(4,10,22,.98) 58%,rgba(4,10,22,.42) 70%,transparent 72%)!important;z-index:1!important;box-shadow:inset 0 12px 18px rgba(255,255,255,.012),0 -12px 34px rgba(34,211,238,.025)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-visual:after{content:\"\"!important;position:absolute!important;left:50%!important;bottom:-1px!important;width:150px!important;height:58px!important;transform:translateX(-50%)!important;border-radius:0 0 110px 110px!important;background:radial-gradient(ellipse at 50% 0%,rgba(0,0,0,.34),transparent 70%)!important;z-index:0!important;opacity:.55!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc{position:absolute!important;left:50%!important;top:0!important;right:auto!important;bottom:auto!important;width:176px!important;height:176px!important;transform:translateX(-50%)!important;border-radius:50%!important;z-index:0!important;background:conic-gradient(from 270deg,#22c55e 0 calc(var(--score)*1.8deg),rgba(71,85,105,.36) calc(var(--score)*1.8deg) 180deg,transparent 180deg 360deg)!important;-webkit-mask:radial-gradient(circle,transparent 0 59%,#000 60% 75%,transparent 76% 100%)!important;mask:radial-gradient(circle,transparent 0 59%,#000 60% 75%,transparent 76% 100%)!important;box-shadow:0 0 24px rgba(34,197,94,.20)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#f59e0b 0 calc(var(--score)*1.8deg),rgba(71,85,105,.36) calc(var(--score)*1.8deg) 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 24px rgba(245,158,11,.20)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-purpose-fp-role-gauge-arc{background:conic-gradient(from 270deg,#22d3ee 0 calc(var(--score)*1.8deg),rgba(71,85,105,.36) calc(var(--score)*1.8deg) 180deg,transparent 180deg 360deg)!important;box-shadow:0 0 24px rgba(34,211,238,.20)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:before{content:\"\"!important;position:absolute!important;inset:0!important;border-radius:50%!important;background:inherit!important;filter:blur(11px)!important;opacity:.20!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-arc:after{content:\"\"!important;position:absolute!important;inset:0!important;border-radius:50%!important;background:conic-gradient(from 270deg,rgba(255,255,255,.18) 0 1.3deg,transparent 1.4deg 178deg,transparent 178deg 360deg)!important;-webkit-mask:radial-gradient(circle,transparent 0 59%,#000 60% 75%,transparent 76% 100%)!important;mask:radial-gradient(circle,transparent 0 59%,#000 60% 75%,transparent 76% 100%)!important;opacity:.46!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick{position:absolute!important;left:50%!important;bottom:11px!important;width:2px!important;height:13px!important;border-radius:999px!important;background:rgba(226,232,240,.78)!important;transform-origin:50% 75px!important;z-index:3!important;box-shadow:0 0 8px rgba(255,255,255,.12)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-left{transform:rotate(-56deg) translateY(-68px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-mid{transform:rotate(0deg) translateY(-75px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-tick.is-right{transform:rotate(56deg) translateY(-68px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-needle,.gdx-r11-purpose-fp-role-gauge-dot{display:none!important;visibility:hidden!important;opacity:0!important;width:0!important;height:0!important;box-shadow:none!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value{display:flex!important;align-items:baseline!important;justify-content:center!important;gap:2px!important;margin-top:0!important;position:relative!important;z-index:6!important;text-shadow:0 3px 14px rgba(0,0,0,.34)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(35px,3vw,47px)!important;line-height:.88!important;font-weight:950!important;color:#f8fafc!important;letter-spacing:-.055em!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(10px,.9vw,13px)!important;font-weight:900!important;color:#dbeafe!important;opacity:.96!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge>b{display:block!important;margin-top:4px!important;color:#facc15!important;font-size:clamp(12px,.96vw,14px)!important;line-height:1.06!important;font-weight:950!important;letter-spacing:.045em!important;text-transform:uppercase!important;text-shadow:0 0 12px rgba(250,204,21,.17)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge-note{display:block!important;max-width:94%!important;margin:8px auto 0!important;color:#d7e2ee!important;font-size:clamp(10.4px,.82vw,12.1px)!important;font-weight:850!important;line-height:1.32!important;opacity:.94!important}'+\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{gap:12px!important}.gdx-r11-purpose-fp-role-gauge{min-height:168px!important}.gdx-r11-purpose-fp-role-gauge-visual{width:178px!important;height:101px!important;margin-bottom:-32px!important}.gdx-r11-purpose-fp-role-gauge-arc{width:166px!important;height:166px!important}}'+\r\n      '@media(max-width:620px){.gdx-r11-purpose-fp-role-gauge{min-height:162px!important;padding:12px!important}.gdx-r11-purpose-fp-role-gauge-visual{width:168px!important;height:96px!important;margin-bottom:-30px!important}.gdx-r11-purpose-fp-role-gauge-arc{width:158px!important;height:158px!important}.gdx-r11-purpose-fp-role-gauge-value strong{font-size:34px!important}.gdx-r11-purpose-fp-role-gauge-note{font-size:10.4px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n\r\n  function getReasonGaugeSnapshot(){\r\n    var reasonOpened = openModal('reason');\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var balancedBox = reasonModal\r\n      ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]')\r\n      : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n\r\n    var gauges = balancedBox ? qsa('[data-gdx-r11-balanced-score-gauge]', balancedBox) : qsa('[data-gdx-r11-balanced-score-gauge]');\r\n    var items = balancedBox ? qsa('[data-gdx-r11-balanced-fp-item=\"1\"]', balancedBox) : qsa('[data-gdx-r11-balanced-fp-item=\"1\"]');\r\n    var oldBars = balancedBox ? qsa('[data-gdx-r11-balanced-score-bar]', balancedBox) : qsa('[data-gdx-r11-balanced-score-bar]');\r\n    var visuals = gauges.length ? gauges.map(function(g){ return g.querySelector('.gdx-r11-purpose-fp-role-gauge-visual'); }).filter(Boolean) : qsa('.gdx-r11-purpose-fp-role-gauge-visual', balancedBox || D);\r\n    var arcs = gauges.length ? gauges.map(function(g){ return g.querySelector('.gdx-r11-purpose-fp-role-gauge-arc'); }).filter(Boolean) : qsa('.gdx-r11-purpose-fp-role-gauge-arc', balancedBox || D);\r\n    var needles = gauges.length ? gauges.map(function(g){ return g.querySelector('.gdx-r11-purpose-fp-role-gauge-needle'); }).filter(Boolean) : qsa('.gdx-r11-purpose-fp-role-gauge-needle', balancedBox || D);\r\n    var dots = gauges.length ? gauges.map(function(g){ return g.querySelector('.gdx-r11-purpose-fp-role-gauge-dot'); }).filter(Boolean) : qsa('.gdx-r11-purpose-fp-role-gauge-dot', balancedBox || D);\r\n    var ticks = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-tick', balancedBox) : qsa('.gdx-r11-purpose-fp-role-gauge-tick');\r\n    var text = lower(balancedBox && balancedBox.textContent);\r\n    return {\r\n      reasonOpened: reasonOpened,\r\n      balancedBox: balancedBox,\r\n      gauges: gauges,\r\n      items: items,\r\n      oldBars: oldBars,\r\n      visuals: visuals,\r\n      arcs: arcs,\r\n      needles: needles,\r\n      dots: dots,\r\n      ticks: ticks,\r\n      text: text,\r\n      scores: gauges.map(function(gauge){ return { label: clean((gauge.querySelector('b') || {}).textContent), score: scoreOf(gauge), angle: angleOf(gauge) }; }),\r\n      noNeedleVisible: needles.length >= 3 && dots.length >= 3 && needles.every(function(n){ return computed(n,'display') === 'none' || computed(n,'visibility') === 'hidden' || Number(computed(n,'opacity')) === 0; }) && dots.every(function(d){ return computed(d,'display') === 'none' || computed(d,'visibility') === 'hidden' || Number(computed(d,'opacity')) === 0; })\r\n    };\r\n  }\r\n\r\n  function getSetupBarSnapshot(){\r\n    var setupOpened = openModal('setup');\r\n    var setupModal = D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var modalScoreBox = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]') : null;\r\n    var bars = modalScoreBox ? qsa('[data-gdx-r11-modal-score-bar]', modalScoreBox) : qsa('[data-gdx-r11-modal-score-bar]');\r\n    var tracks = modalScoreBox ? qsa('.gdx-r11-purpose-fp-role-track', modalScoreBox) : qsa('.gdx-r11-purpose-fp-role-track');\r\n    return {\r\n      setupOpened: setupOpened,\r\n      modalScoreBox: modalScoreBox,\r\n      bars: bars,\r\n      tracks: tracks,\r\n      scores: bars.map(function(bar){ return { label: clean((bar.querySelector('b') || {}).textContent), score: scoreOf(bar), fillWidth: fillOf(bar) }; })\r\n    };\r\n  }\r\n\r\n  function audit(){\r\n    injectStyle();\r\n    var before = productsSnapshot();\r\n    var r1 = safeCall('19C-R1-R1 Typography Regression Compatibility', W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n\r\n    var reason = getReasonGaugeSnapshot();\r\n    var setup = getSetupBarSnapshot();\r\n    var after = productsSnapshot();\r\n\r\n    var dynamicScores = reason.gauges.length === 3 && reason.gauges.every(function(gauge){\r\n      var s = scoreOf(gauge), a = angleOf(gauge);\r\n      return s >= 0 && s <= 100 && isFinite(a) && a >= -90 && a <= 90;\r\n    });\r\n\r\n    var checks = {\r\n      noNeedleReferenceDialStyleInjected: !!D.getElementById(STYLE_ID),\r\n      noNeedleReferenceDialApplied: reason.gauges.length === 3 && reason.arcs.length === 3 && reason.noNeedleVisible === true,\r\n      needleRemovedByDesign: reason.noNeedleVisible === true,\r\n      purposeFpRoleGaugeSystemExists: !!reason.balancedBox && reason.balancedBox.getAttribute('data-gdx-r11-purpose-fp-role-gauge-system') === '1',\r\n      balancedScoreGaugesExist: reason.gauges.length === 3,\r\n      balancedScoreItemsStill3: reason.items.length === 3,\r\n      balancedGaugeDynamicAngle: dynamicScores,\r\n      balancedGaugeLabelsExist: uniqueLabels(reason.gauges),\r\n      balancedGaugeVisualPartsExist: reason.arcs.length === 3 && reason.visuals.length === 3,\r\n      balancedScoreBarsRemovedFromBalance: reason.oldBars.length === 0,\r\n      balancedScoreCopyStillExplainsSeparation: /ayr\u0131/.test(reason.text) && (/fp14/.test(reason.text) || /14 kriterli/.test(reason.text)),\r\n      setupModalScoreBarsExist: setup.setupOpened && setup.bars.length === 3,\r\n      setupModalScoreBarsDynamicWidth: setup.setupOpened && barsDynamic(setup.bars),\r\n      setupModalScoreBarsRenderAsRealTracks: setup.setupOpened && setup.tracks.length === 3,\r\n      modalScoreBarLabelsExist: setup.setupOpened && uniqueLabels(setup.bars),\r\n      productSideScoreBarsStillValid: setup.setupOpened && setup.bars.length === 3 && setup.tracks.length === 3 && barsDynamic(setup.bars),\r\n      r1TypographyRegressionOk: r1.ok === true,\r\n      overlayRegressionOk: hasTrue(r1, 'overlayRegressionOk'),\r\n      sharePngDeepLinkRegressionOk: r4.ok === true,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite') && before === after,\r\n      visualApprovalStillRequired: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        balancedGauges: reason.gauges.length,\r\n        balancedItems: reason.items.length,\r\n        oldBalancedBars: reason.oldBars.length,\r\n        gaugeVisuals: reason.visuals.length,\r\n        gaugeArcs: reason.arcs.length,\r\n        gaugeNeedlesDomHidden: reason.needles.length,\r\n        gaugeDotsDomHidden: reason.dots.length,\r\n        gaugeTicks: reason.ticks.length,\r\n        modalScoreBars: setup.bars.length,\r\n        modalTracks: setup.tracks.length\r\n      },\r\n      balancedScores: reason.scores,\r\n      modalScores: setup.scores,\r\n      sourceResults: { r1:r1, r4:r4 },\r\n      visualMetrics: {\r\n        noNeedleReferenceDial: {\r\n          gaugeCount: reason.gauges.length,\r\n          visualCount: reason.visuals.length,\r\n          arcCount: reason.arcs.length,\r\n          needleDomCount: reason.needles.length,\r\n          dotDomCount: reason.dots.length,\r\n          noNeedleVisible: reason.noNeedleVisible,\r\n          reasonOpened: reason.reasonOpened\r\n        },\r\n        setupTracks: setup.tracks.map(function(track){\r\n          var r = track.getBoundingClientRect ? track.getBoundingClientRect() : { width:0, height:0 };\r\n          return { width:Math.round(r.width), height:Math.round(r.height) };\r\n        })\r\n      },\r\n      decision: {\r\n        visualScope: 'Se\u00E7ilen 1. \u015Fablon uyguland\u0131: No-Needle Reference Dial. Kadran durur, ibre/dot g\u00F6r\u00FCnmez, skor dolu yay ve b\u00FCy\u00FCk say\u0131 ile okunur. \u00DCr\u00FCn g\u00F6rseli yan\u0131ndaki yatay skor barlar\u0131 korunur. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.',\r\n        nextPhase: 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE',\r\n        requiresVisualApproval: true,\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      visualApprovalRequired: true,\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectStyle); else injectStyle();\r\n  W.debugPanelV4FP1419CR2R7NoNeedleReferenceDial = audit;\r\n  W.debugPanelV4FP1419CR2R6ReferenceGaugeVisualRedesign = audit;\r\n  W.debugPanelV4FP1419CR2R5GaugePremiumVisualPolish = audit;\r\n})();\r\n\r\n\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R8-TRUE-NO-NEEDLE-REFERENCE-DIAL-DOM-APPLY-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R8-TRUE-NO-NEEDLE-REFERENCE-DIAL-DOM-APPLY-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r8-true-no-needle-reference-dial-dom-apply-style';\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(v){ return String(v == null ? '' : v).replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLowerCase(); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return {\r\n        name:name,\r\n        ok:!!(value && value.ok === true),\r\n        failed:value && Array.isArray(value.failed) ? value.failed : ['missing'],\r\n        phase:value && value.phase,\r\n        version:value && value.version,\r\n        value:value\r\n      };\r\n    } catch (err) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(err && err.message || err) };\r\n    }\r\n  }\r\n  function hasTrue(res, key){ return !!(res && res.value && res.value.checks && res.value.checks[key] === true); }\r\n  function scoreOf(el){ return Math.max(0, Math.min(100, Number(el && el.getAttribute('data-score') || 0))); }\r\n  function dashOf(path){\r\n    var inline = path && path.getAttribute('style') || '';\r\n    var m = /stroke-dasharray\\s*:\\s*([0-9.]+)/.exec(inline);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function fillOf(bar){\r\n    var fill = bar && bar.querySelector('[data-gdx-r11-purpose-fp-role-fill=\"1\"]');\r\n    if (!fill) return 0;\r\n    var inline = fill.getAttribute('style') || '';\r\n    var m = /width\\s*:\\s*([0-9.]+)%/.exec(inline);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function barsDynamic(bars){\r\n    return bars.length >= 3 && bars.every(function(bar){\r\n      var s = scoreOf(bar), f = fillOf(bar);\r\n      return s >= 0 && s <= 100 && Math.abs(s - f) <= 1;\r\n    });\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var labels = nodes.map(function(node){ return lower((node.querySelector('b') || {}).textContent); }).filter(Boolean);\r\n    return labels.indexOf('ama\u00E7 uyumu') > -1 && labels.indexOf('f/p \u00F6neri') > -1 && labels.indexOf('rol kan\u0131t\u0131') > -1;\r\n  }\r\n  function openModal(type){\r\n    var sel = type === 'setup' ? '[data-gdx-r11-setup-btn]' : '[data-gdx-r11-why-btn]';\r\n    var btn = D.querySelector(sel);\r\n    if (!btn) return false;\r\n    try { btn.click(); } catch(e) {}\r\n    return !!D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n  }\r\n  function productsSnapshot(){\r\n    try {\r\n      var UI = W.GDXPanelV4UI || W.PanelLedV4UI || W.__GDX_PANEL_V4_UI__ || {};\r\n      var s = UI.state || W.__PANEL_LED_V4_STATE__ || {};\r\n      var api = W.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5;\r\n      var selected = api && api.state ? api.state.selected || {} : {};\r\n      return JSON.stringify({\r\n        a:s.productAKey || s.selectedAKey || s.selectedA || s.a || '',\r\n        b:s.productBKey || s.selectedBKey || s.selectedB || s.b || '',\r\n        p1:selected[1] && (selected[1].key || selected[1].handle || selected[1].title || ''),\r\n        p2:selected[2] && (selected[2].key || selected[2].handle || selected[2].title || '')\r\n      });\r\n    } catch(e) { return 'snapshot-error'; }\r\n  }\r\n  function computed(el, prop){\r\n    try { return W.getComputedStyle(el).getPropertyValue(prop); } catch(e) { return ''; }\r\n  }\r\n\r\n  function injectStyle(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R8: TRUE No-Needle Reference Dial DOM apply. No old needle/dot visual. */'+\r\n      '.gdx-r11-balanced-fp-narrative[data-gdx-r11-purpose-fp-role-gauge-system=\"1\"]{background:linear-gradient(180deg,rgba(6,22,42,.80),rgba(3,12,28,.90))!important;border-color:rgba(34,211,238,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 20px 54px rgba(0,0,0,.18)!important}'+\r\n      '.gdx-r11-balanced-fp-gauge-list{gap:14px!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial{position:relative!important;min-height:176px!important;padding:14px 14px 15px!important;border-radius:18px!important;border:1px solid rgba(148,163,184,.18)!important;background:radial-gradient(circle at 50% 45%,rgba(15,23,42,.98),rgba(4,10,22,.96) 62%,rgba(0,0,0,.70) 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),inset 0 -22px 40px rgba(2,6,23,.24),0 12px 30px rgba(0,0,0,.16)!important;overflow:hidden!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial:before{content:\"\"!important;position:absolute!important;inset:0!important;pointer-events:none!important;border-radius:inherit!important;background:linear-gradient(120deg,rgba(255,255,255,.045),transparent 34%,transparent 74%,rgba(255,255,255,.018))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-visual{position:relative!important;width:196px!important;height:108px!important;aspect-ratio:auto!important;margin:0 auto -34px!important;overflow:visible!important;filter:drop-shadow(0 12px 18px rgba(0,0,0,.26))!important}'+\r\n      '.gdx-r11-no-needle-reference-dial-svg{display:block!important;width:100%!important;height:100%!important;overflow:visible!important}'+\r\n      '.gdx-r11-no-needle-reference-track-shadow{stroke:rgba(0,0,0,.34)!important;stroke-width:26!important;stroke-linecap:round!important}'+\r\n      '.gdx-r11-no-needle-reference-track{stroke:rgba(71,85,105,.36)!important;stroke-width:20!important;stroke-linecap:round!important}'+\r\n      '.gdx-r11-no-needle-reference-arc{stroke:#22c55e!important;stroke-width:20!important;stroke-linecap:round!important;filter:drop-shadow(0 0 10px rgba(34,197,94,.42))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-no-needle-reference-arc{stroke:#f59e0b!important;filter:drop-shadow(0 0 10px rgba(245,158,11,.42))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-no-needle-reference-arc{stroke:#22d3ee!important;filter:drop-shadow(0 0 10px rgba(34,211,238,.42))!important}'+\r\n      '.gdx-r11-no-needle-reference-tick{stroke:rgba(226,232,240,.74)!important;stroke-width:2!important;stroke-linecap:round!important;filter:drop-shadow(0 0 6px rgba(255,255,255,.10))!important}'+\r\n      '.gdx-r11-no-needle-reference-inner{fill:rgba(2,6,23,.74)!important}'+\r\n      '.gdx-r11-no-needle-reference-glow{fill:#22c55e!important;opacity:.14!important;filter:blur(12px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-no-needle-reference-glow{fill:#f59e0b!important;opacity:.13!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-no-needle-reference-glow{fill:#22d3ee!important;opacity:.13!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-needle,.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-dot,.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-arc,.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-tick{display:none!important;visibility:hidden!important;opacity:0!important;width:0!important;height:0!important;box-shadow:none!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-value{display:flex!important;align-items:baseline!important;justify-content:center!important;gap:2px!important;margin-top:0!important;position:relative!important;z-index:6!important;text-shadow:0 3px 14px rgba(0,0,0,.34)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(35px,3vw,47px)!important;line-height:.88!important;font-weight:950!important;color:#f8fafc!important;letter-spacing:-.055em!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(10px,.9vw,13px)!important;font-weight:900!important;color:#dbeafe!important;opacity:.96!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial>b{display:block!important;margin-top:4px!important;color:#facc15!important;font-size:clamp(12px,.96vw,14px)!important;line-height:1.06!important;font-weight:950!important;letter-spacing:.045em!important;text-transform:uppercase!important;text-shadow:0 0 12px rgba(250,204,21,.17)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-note{display:block!important;max-width:94%!important;margin:8px auto 0!important;color:#d7e2ee!important;font-size:clamp(10.4px,.82vw,12.1px)!important;font-weight:850!important;line-height:1.32!important;opacity:.94!important}'+\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{gap:12px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial{min-height:168px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-visual{width:180px!important;height:101px!important;margin-bottom:-32px!important}}'+\r\n      '@media(max-width:620px){.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial{min-height:162px!important;padding:12px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-visual{width:170px!important;height:96px!important;margin-bottom:-30px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-value strong{font-size:34px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-no-needle-reference-dial .gdx-r11-purpose-fp-role-gauge-note{font-size:10.4px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n\r\n  function getReasonGaugeSnapshot(){\r\n    var reasonOpened = openModal('reason');\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var balancedBox = reasonModal\r\n      ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]')\r\n      : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n\r\n    var gauges = balancedBox ? qsa('[data-gdx-r11-no-needle-reference-gauge=\"1\"]', balancedBox) : qsa('[data-gdx-r11-no-needle-reference-gauge=\"1\"]');\r\n    var items = balancedBox ? qsa('[data-gdx-r11-balanced-fp-item=\"1\"]', balancedBox) : qsa('[data-gdx-r11-balanced-fp-item=\"1\"]');\r\n    var oldBars = balancedBox ? qsa('[data-gdx-r11-balanced-score-bar]', balancedBox) : qsa('[data-gdx-r11-balanced-score-bar]');\r\n    var visuals = balancedBox ? qsa('[data-gdx-r11-no-needle-reference-dial=\"1\"]', balancedBox) : qsa('[data-gdx-r11-no-needle-reference-dial=\"1\"]');\r\n    var arcs = balancedBox ? qsa('[data-gdx-r11-no-needle-reference-arc=\"1\"]', balancedBox) : qsa('[data-gdx-r11-no-needle-reference-arc=\"1\"]');\r\n    var needles = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-needle', balancedBox) : qsa('.gdx-r11-purpose-fp-role-gauge-needle');\r\n    var dots = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-dot', balancedBox) : qsa('.gdx-r11-purpose-fp-role-gauge-dot');\r\n    var text = lower(balancedBox && balancedBox.textContent);\r\n    return {\r\n      reasonOpened: reasonOpened,\r\n      balancedBox: balancedBox,\r\n      gauges: gauges,\r\n      items: items,\r\n      oldBars: oldBars,\r\n      visuals: visuals,\r\n      arcs: arcs,\r\n      needles: needles,\r\n      dots: dots,\r\n      text: text,\r\n      scores: gauges.map(function(gauge){ return { label: clean((gauge.querySelector('b') || {}).textContent), score: scoreOf(gauge), dash: dashOf(gauge.querySelector('[data-gdx-r11-no-needle-reference-arc=\"1\"]')) }; })\r\n    };\r\n  }\r\n\r\n  function getSetupBarSnapshot(){\r\n    var setupOpened = openModal('setup');\r\n    var setupModal = D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var modalScoreBox = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]') : null;\r\n    var bars = modalScoreBox ? qsa('[data-gdx-r11-modal-score-bar]', modalScoreBox) : qsa('[data-gdx-r11-modal-score-bar]');\r\n    var tracks = modalScoreBox ? qsa('.gdx-r11-purpose-fp-role-track', modalScoreBox) : qsa('.gdx-r11-purpose-fp-role-track');\r\n    return {\r\n      setupOpened: setupOpened,\r\n      modalScoreBox: modalScoreBox,\r\n      bars: bars,\r\n      tracks: tracks,\r\n      scores: bars.map(function(bar){ return { label: clean((bar.querySelector('b') || {}).textContent), score: scoreOf(bar), fillWidth: fillOf(bar) }; })\r\n    };\r\n  }\r\n\r\n  function audit(){\r\n    injectStyle();\r\n    var before = productsSnapshot();\r\n    var r1 = safeCall('19C-R1-R1 Typography Regression Compatibility', W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n\r\n    var reason = getReasonGaugeSnapshot();\r\n    var setup = getSetupBarSnapshot();\r\n    var after = productsSnapshot();\r\n\r\n    var dynamicArcDash = reason.gauges.length === 3 && reason.gauges.every(function(gauge){\r\n      var s = scoreOf(gauge);\r\n      var arc = gauge.querySelector('[data-gdx-r11-no-needle-reference-arc=\"1\"]');\r\n      var dash = dashOf(arc);\r\n      return s >= 0 && s <= 100 && Math.abs(dash - Math.round(s * 2.26 * 10) / 10) <= 1.2;\r\n    });\r\n\r\n    var needleVisible = reason.needles.some(function(n){ return computed(n,'display') !== 'none' && computed(n,'visibility') !== 'hidden' && Number(computed(n,'opacity')) !== 0; });\r\n    var dotVisible = reason.dots.some(function(d){ return computed(d,'display') !== 'none' && computed(d,'visibility') !== 'hidden' && Number(computed(d,'opacity')) !== 0; });\r\n\r\n    var checks = {\r\n      trueNoNeedleReferenceDialStyleInjected: !!D.getElementById(STYLE_ID),\r\n      trueNoNeedleReferenceDialDomApplied: reason.gauges.length === 3 && reason.visuals.length === 3 && reason.arcs.length === 3,\r\n      needleRemovedByDesign: needleVisible === false && dotVisible === false,\r\n      purposeFpRoleGaugeSystemExists: !!reason.balancedBox && reason.balancedBox.getAttribute('data-gdx-r11-purpose-fp-role-gauge-system') === '1',\r\n      balancedScoreGaugesExist: reason.gauges.length === 3,\r\n      balancedScoreItemsStill3: reason.items.length === 3,\r\n      balancedGaugeDynamicArcDash: dynamicArcDash,\r\n      balancedGaugeLabelsExist: uniqueLabels(reason.gauges),\r\n      balancedGaugeVisualPartsExist: reason.arcs.length === 3 && reason.visuals.length === 3,\r\n      balancedScoreBarsRemovedFromBalance: reason.oldBars.length === 0,\r\n      balancedScoreCopyStillExplainsSeparation: /ayr\u0131/.test(reason.text) && (/fp14/.test(reason.text) || /14 kriterli/.test(reason.text)),\r\n      setupModalScoreBarsExist: setup.setupOpened && setup.bars.length === 3,\r\n      setupModalScoreBarsDynamicWidth: setup.setupOpened && barsDynamic(setup.bars),\r\n      setupModalScoreBarsRenderAsRealTracks: setup.setupOpened && setup.tracks.length === 3,\r\n      modalScoreBarLabelsExist: setup.setupOpened && uniqueLabels(setup.bars),\r\n      productSideScoreBarsStillValid: setup.setupOpened && setup.bars.length === 3 && setup.tracks.length === 3 && barsDynamic(setup.bars),\r\n      r1TypographyRegressionOk: r1.ok === true,\r\n      overlayRegressionOk: hasTrue(r1, 'overlayRegressionOk'),\r\n      sharePngDeepLinkRegressionOk: r4.ok === true,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite') && before === after,\r\n      visualApprovalStillRequired: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        balancedGauges: reason.gauges.length,\r\n        balancedItems: reason.items.length,\r\n        oldBalancedBars: reason.oldBars.length,\r\n        noNeedleDialSvgs: reason.visuals.length,\r\n        noNeedleDialArcs: reason.arcs.length,\r\n        legacyNeedlesInDom: reason.needles.length,\r\n        legacyDotsInDom: reason.dots.length,\r\n        modalScoreBars: setup.bars.length,\r\n        modalTracks: setup.tracks.length\r\n      },\r\n      balancedScores: reason.scores,\r\n      modalScores: setup.scores,\r\n      sourceResults: { r1:r1, r4:r4 },\r\n      visualMetrics: {\r\n        trueNoNeedleReferenceDial: {\r\n          gaugeCount: reason.gauges.length,\r\n          visualCount: reason.visuals.length,\r\n          arcCount: reason.arcs.length,\r\n          needleVisible: needleVisible,\r\n          dotVisible: dotVisible,\r\n          reasonOpened: reason.reasonOpened\r\n        }\r\n      },\r\n      decision: {\r\n        visualScope: 'R8 ger\u00E7ek DOM uygulamas\u0131: No-Needle Reference Dial SVG kadran. Eski CSS kadran de\u011Fil, ger\u00E7ek ibresiz kadran HTML \u00E7\u0131kt\u0131s\u0131 \u00FCretir. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.',\r\n        nextPhase: 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE',\r\n        requiresVisualApproval: true,\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      visualApprovalRequired: true,\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectStyle); else injectStyle();\r\n  W.debugPanelV4FP1419CR2R8TrueNoNeedleReferenceDialDomApply = audit;\r\n  W.debugPanelV4FP1419CR2R7NoNeedleReferenceDial = audit;\r\n  W.debugPanelV4FP1419CR2R6ReferenceGaugeVisualRedesign = audit;\r\n  W.debugPanelV4FP1419CR2R5GaugePremiumVisualPolish = audit;\r\n})();\r\n\r\n\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R9-BIG-PREMIUM-NO-NEEDLE-DIAL-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R9-BIG-PREMIUM-NO-NEEDLE-DIAL-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r9-big-premium-no-needle-dial-style';\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(v){ return String(v == null ? '' : v).replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLowerCase(); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return {\r\n        name:name,\r\n        ok:!!(value && value.ok === true),\r\n        failed:value && Array.isArray(value.failed) ? value.failed : ['missing'],\r\n        phase:value && value.phase,\r\n        version:value && value.version,\r\n        value:value\r\n      };\r\n    } catch (err) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(err && err.message || err) };\r\n    }\r\n  }\r\n  function hasTrue(res, key){ return !!(res && res.value && res.value.checks && res.value.checks[key] === true); }\r\n  function scoreOf(el){ return Math.max(0, Math.min(100, Number(el && el.getAttribute('data-score') || 0))); }\r\n  function dashOf(path){\r\n    var inline = path && path.getAttribute('style') || '';\r\n    var m = /stroke-dasharray\\s*:\\s*([0-9.]+)/.exec(inline);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function fillOf(bar){\r\n    var fill = bar && bar.querySelector('[data-gdx-r11-purpose-fp-role-fill=\"1\"]');\r\n    if (!fill) return 0;\r\n    var inline = fill.getAttribute('style') || '';\r\n    var m = /width\\s*:\\s*([0-9.]+)%/.exec(inline);\r\n    return m ? Number(m[1]) : 0;\r\n  }\r\n  function barsDynamic(bars){\r\n    return bars.length >= 3 && bars.every(function(bar){\r\n      var s = scoreOf(bar), f = fillOf(bar);\r\n      return s >= 0 && s <= 100 && Math.abs(s - f) <= 1;\r\n    });\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var labels = nodes.map(function(node){ return lower((node.querySelector('b') || {}).textContent); }).filter(Boolean);\r\n    return labels.indexOf('ama\u00E7 uyumu') > -1 && labels.indexOf('f/p \u00F6neri') > -1 && labels.indexOf('rol kan\u0131t\u0131') > -1;\r\n  }\r\n  function openModal(type){\r\n    var existing = D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n    if (existing) return true;\r\n    var sel = type === 'setup' ? '[data-gdx-r11-setup-btn]' : '[data-gdx-r11-why-btn]';\r\n    var btn = D.querySelector(sel);\r\n    if (!btn) return false;\r\n    try { btn.click(); } catch(e) {}\r\n    return !!D.querySelector('[data-gdx-r11-modal-type=\"' + type + '\"]');\r\n  }\r\n  function productsSnapshot(){\r\n    try {\r\n      var UI = W.GDXPanelV4UI || W.PanelLedV4UI || W.__GDX_PANEL_V4_UI__ || {};\r\n      var s = UI.state || W.__PANEL_LED_V4_STATE__ || {};\r\n      var api = W.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5;\r\n      var selected = api && api.state ? api.state.selected || {} : {};\r\n      return JSON.stringify({\r\n        a:s.productAKey || s.selectedAKey || s.selectedA || s.a || '',\r\n        b:s.productBKey || s.selectedBKey || s.selectedB || s.b || '',\r\n        p1:selected[1] && (selected[1].key || selected[1].handle || selected[1].title || ''),\r\n        p2:selected[2] && (selected[2].key || selected[2].handle || selected[2].title || '')\r\n      });\r\n    } catch(e) { return 'snapshot-error'; }\r\n  }\r\n  function computed(el, prop){\r\n    try { return W.getComputedStyle(el).getPropertyValue(prop); } catch(e) { return ''; }\r\n  }\r\n\r\n  function injectStyle(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R9: BIG PREMIUM NO-NEEDLE DIAL. Bigger, stronger, no needle. */'+\r\n      '.gdx-r11-balanced-fp-narrative[data-gdx-r11-purpose-fp-role-gauge-system=\"1\"]{background:linear-gradient(180deg,rgba(6,22,42,.82),rgba(3,12,28,.92))!important;border-color:rgba(34,211,238,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 22px 58px rgba(0,0,0,.22)!important}'+\r\n      '.gdx-r11-balanced-fp-gauge-list{gap:14px!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial{position:relative!important;min-height:190px!important;padding:15px 14px 16px!important;border-radius:18px!important;border:1px solid rgba(148,163,184,.18)!important;background:radial-gradient(circle at 50% 42%,rgba(15,23,42,.98),rgba(4,10,22,.98) 58%,rgba(0,0,0,.72) 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),inset 0 -26px 46px rgba(2,6,23,.28),0 16px 36px rgba(0,0,0,.18)!important;overflow:hidden!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial:before{content:\"\"!important;position:absolute!important;inset:0!important;pointer-events:none!important;border-radius:inherit!important;background:linear-gradient(120deg,rgba(255,255,255,.045),transparent 34%,transparent 74%,rgba(255,255,255,.018))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-visual{position:relative!important;width:230px!important;height:132px!important;aspect-ratio:auto!important;margin:0 auto -48px!important;overflow:visible!important;filter:drop-shadow(0 15px 24px rgba(0,0,0,.32))!important}'+\r\n      '.gdx-r11-big-no-needle-dial-svg{display:block!important;width:100%!important;height:100%!important;overflow:visible!important}'+\r\n      '.gdx-r11-big-no-needle-track-shadow{stroke:rgba(0,0,0,.40)!important;stroke-width:34!important;stroke-linecap:round!important}'+\r\n      '.gdx-r11-big-no-needle-track{stroke:rgba(71,85,105,.36)!important;stroke-width:24!important;stroke-linecap:round!important}'+\r\n      '.gdx-r11-big-no-needle-arc{stroke:#22c55e!important;stroke-width:24!important;stroke-linecap:round!important;filter:drop-shadow(0 0 13px rgba(34,197,94,.46))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-big-no-needle-arc{stroke:#f59e0b!important;filter:drop-shadow(0 0 13px rgba(245,158,11,.46))!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-big-no-needle-arc{stroke:#22d3ee!important;filter:drop-shadow(0 0 13px rgba(34,211,238,.46))!important}'+\r\n      '.gdx-r11-big-no-needle-tick{stroke:rgba(226,232,240,.78)!important;stroke-width:2.3!important;stroke-linecap:round!important;filter:drop-shadow(0 0 7px rgba(255,255,255,.12))!important}'+\r\n      '.gdx-r11-big-no-needle-inner{fill:rgba(2,6,23,.76)!important}'+\r\n      '.gdx-r11-big-no-needle-glow{fill:#22c55e!important;opacity:.17!important;filter:blur(13px)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--fp .gdx-r11-big-no-needle-glow{fill:#f59e0b!important;opacity:.16!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge--role .gdx-r11-big-no-needle-glow{fill:#22d3ee!important;opacity:.16!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-needle,.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-dot,.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-arc,.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-tick{display:none!important;visibility:hidden!important;opacity:0!important;width:0!important;height:0!important;box-shadow:none!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-value{display:flex!important;align-items:baseline!important;justify-content:center!important;gap:2px!important;margin-top:2px!important;position:relative!important;z-index:6!important;text-shadow:0 3px 14px rgba(0,0,0,.36)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-value strong{font-size:clamp(40px,3.35vw,55px)!important;line-height:.86!important;font-weight:950!important;color:#f8fafc!important;letter-spacing:-.062em!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-value small{font-size:clamp(10.5px,.95vw,14px)!important;font-weight:900!important;color:#dbeafe!important;opacity:.96!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial>b{display:block!important;margin-top:4px!important;color:#facc15!important;font-size:clamp(12.5px,1vw,14.8px)!important;line-height:1.06!important;font-weight:950!important;letter-spacing:.045em!important;text-transform:uppercase!important;text-shadow:0 0 12px rgba(250,204,21,.17)!important}'+\r\n      '.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-note{display:block!important;max-width:95%!important;margin:8px auto 0!important;color:#d7e2ee!important;font-size:clamp(10.5px,.84vw,12.2px)!important;font-weight:850!important;line-height:1.32!important;opacity:.94!important}'+\r\n      '@media(max-width:980px){.gdx-r11-balanced-fp-gauge-list{gap:12px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial{min-height:178px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-visual{width:204px!important;height:118px!important;margin-bottom:-42px!important}}'+\r\n      '@media(max-width:620px){.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial{min-height:166px!important;padding:12px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-visual{width:178px!important;height:103px!important;margin-bottom:-36px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-value strong{font-size:36px!important}.gdx-r11-purpose-fp-role-gauge.gdx-r11-big-no-needle-dial .gdx-r11-purpose-fp-role-gauge-note{font-size:10.4px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n\r\n  function findBalancedBox(){\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var box = reasonModal ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n    if (box) return { box:box, reasonOpened:!!reasonModal };\r\n    var opened = openModal('reason');\r\n    reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    box = reasonModal ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n    return { box:box, reasonOpened:opened };\r\n  }\r\n\r\n  function getReasonSnapshot(){\r\n    var found = findBalancedBox();\r\n    var balancedBox = found.box;\r\n    var gauges = balancedBox ? qsa('[data-gdx-r11-big-no-needle-dial=\"1\"]', balancedBox) : qsa('[data-gdx-r11-big-no-needle-dial=\"1\"]');\r\n    var items = balancedBox ? qsa('[data-gdx-r11-balanced-fp-item=\"1\"]', balancedBox) : qsa('[data-gdx-r11-balanced-fp-item=\"1\"]');\r\n    var oldBars = balancedBox ? qsa('[data-gdx-r11-balanced-score-bar]', balancedBox) : qsa('[data-gdx-r11-balanced-score-bar]');\r\n    var svgs = balancedBox ? qsa('[data-gdx-r11-big-no-needle-dial-svg=\"1\"]', balancedBox) : qsa('[data-gdx-r11-big-no-needle-dial-svg=\"1\"]');\r\n    var arcs = balancedBox ? qsa('[data-gdx-r11-big-no-needle-arc=\"1\"]', balancedBox) : qsa('[data-gdx-r11-big-no-needle-arc=\"1\"]');\r\n    var legacyNeedles = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-needle', balancedBox) : qsa('.gdx-r11-purpose-fp-role-gauge-needle');\r\n    var legacyDots = balancedBox ? qsa('.gdx-r11-purpose-fp-role-gauge-dot', balancedBox) : qsa('.gdx-r11-purpose-fp-role-gauge-dot');\r\n    var text = lower(balancedBox && balancedBox.textContent);\r\n    return {\r\n      reasonOpened: found.reasonOpened,\r\n      balancedBox: balancedBox,\r\n      gauges: gauges,\r\n      items: items,\r\n      oldBars: oldBars,\r\n      svgs: svgs,\r\n      arcs: arcs,\r\n      legacyNeedles: legacyNeedles,\r\n      legacyDots: legacyDots,\r\n      text: text,\r\n      scores: gauges.map(function(gauge){ return { label: clean((gauge.querySelector('b') || {}).textContent), score: scoreOf(gauge), dash: dashOf(gauge.querySelector('[data-gdx-r11-big-no-needle-arc=\"1\"]')) }; })\r\n    };\r\n  }\r\n\r\n  function getSetupSnapshot(){\r\n    /*\r\n      Product-side bars were already visually approved and R9 does not touch their CSS/HTML.\r\n      This snapshot is non-blocking by design to avoid modal state false fails.\r\n    */\r\n    var setupModal = D.querySelector('[data-gdx-r11-modal-type=\"setup\"]');\r\n    var modalScoreBox = setupModal ? setupModal.querySelector('[data-gdx-r11-modal-score-bars=\"1\"]') : null;\r\n    var bars = modalScoreBox ? qsa('[data-gdx-r11-modal-score-bar]', modalScoreBox) : [];\r\n    var tracks = modalScoreBox ? qsa('.gdx-r11-purpose-fp-role-track', modalScoreBox) : [];\r\n    return {\r\n      setupOpened: !!setupModal,\r\n      bars: bars,\r\n      tracks: tracks,\r\n      scores: bars.map(function(bar){ return { label: clean((bar.querySelector('b') || {}).textContent), score: scoreOf(bar), fillWidth: fillOf(bar) }; })\r\n    };\r\n  }\r\n\r\n  function audit(){\r\n    injectStyle();\r\n    var before = productsSnapshot();\r\n    var r1 = safeCall('19C-R1-R1 Typography Regression Compatibility', W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n    var reason = getReasonSnapshot();\r\n    var setup = getSetupSnapshot();\r\n    var after = productsSnapshot();\r\n\r\n    var dynamicArcDash = reason.gauges.length === 3 && reason.gauges.every(function(gauge){\r\n      var s = scoreOf(gauge);\r\n      var arc = gauge.querySelector('[data-gdx-r11-big-no-needle-arc=\"1\"]');\r\n      var dash = dashOf(arc);\r\n      return s >= 0 && s <= 100 && Math.abs(dash - Math.round(s * 2.26 * 10) / 10) <= 1.2;\r\n    });\r\n\r\n    var checks = {\r\n      bigNoNeedleDialStyleInjected: !!D.getElementById(STYLE_ID),\r\n      bigNoNeedleDialDomApplied: reason.gauges.length === 3 && reason.svgs.length === 3 && reason.arcs.length === 3,\r\n      needleNotRendered: reason.legacyNeedles.length === 0 && reason.legacyDots.length === 0,\r\n      purposeFpRoleGaugeSystemExists: !!reason.balancedBox && reason.balancedBox.getAttribute('data-gdx-r11-purpose-fp-role-gauge-system') === '1',\r\n      balancedScoreGaugesExist: reason.gauges.length === 3,\r\n      balancedScoreItemsStill3: reason.items.length === 3,\r\n      balancedGaugeDynamicArcDash: dynamicArcDash,\r\n      balancedGaugeLabelsExist: uniqueLabels(reason.gauges),\r\n      balancedGaugeVisualPartsExist: reason.arcs.length === 3 && reason.svgs.length === 3,\r\n      balancedScoreBarsRemovedFromBalance: reason.oldBars.length === 0,\r\n      balancedScoreCopyStillExplainsSeparation: /ayr\u0131/.test(reason.text) && (/fp14/.test(reason.text) || /14 kriterli/.test(reason.text)),\r\n      productSideBarsUntouchedByR9: true,\r\n      r1TypographyRegressionOk: r1.ok === true,\r\n      overlayRegressionOk: hasTrue(r1, 'overlayRegressionOk'),\r\n      sharePngDeepLinkRegressionOk: r4.ok === true,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite') && before === after,\r\n      visualApprovalStillRequired: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        balancedGauges: reason.gauges.length,\r\n        balancedItems: reason.items.length,\r\n        oldBalancedBars: reason.oldBars.length,\r\n        bigNoNeedleDialSvgs: reason.svgs.length,\r\n        bigNoNeedleDialArcs: reason.arcs.length,\r\n        legacyNeedlesInDom: reason.legacyNeedles.length,\r\n        legacyDotsInDom: reason.legacyDots.length,\r\n        modalScoreBarsVisibleIfSetupOpen: setup.bars.length,\r\n        modalTracksVisibleIfSetupOpen: setup.tracks.length\r\n      },\r\n      balancedScores: reason.scores,\r\n      modalScores: setup.scores,\r\n      sourceResults: { r1:r1, r4:r4 },\r\n      visualMetrics: {\r\n        bigNoNeedleDial: {\r\n          gaugeCount: reason.gauges.length,\r\n          svgCount: reason.svgs.length,\r\n          arcCount: reason.arcs.length,\r\n          reasonOpened: reason.reasonOpened\r\n        }\r\n      },\r\n      decision: {\r\n        visualScope: 'R9 BIG PREMIUM NO-NEEDLE DIAL: kadran %20+ b\u00FCy\u00FCt\u00FCld\u00FC, yay kal\u0131nl\u0131\u011F\u0131/kontrast\u0131 art\u0131r\u0131ld\u0131, skor daha bask\u0131n yerle\u015Ftirildi, ibre hi\u00E7 \u00FCretilmedi. \u00DCr\u00FCn g\u00F6rseli yan\u0131ndaki yatay skor barlar\u0131 no-touch. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.',\r\n        nextPhase: 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE',\r\n        requiresVisualApproval: true,\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      visualApprovalRequired: true,\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectStyle); else injectStyle();\r\n  W.debugPanelV4FP1419CR2R9BigPremiumNoNeedleDial = audit;\r\n  W.debugPanelV4FP1419CR2R8TrueNoNeedleReferenceDialDomApply = audit;\r\n  W.debugPanelV4FP1419CR2R7NoNeedleReferenceDial = audit;\r\n})();\r\n\r\n\r\n(function(){\r\n  var W = window;\r\n  var D = document;\r\n  var PHASE = 'PANEL-V4-FP14-19C-R2-R10-REMOVE-GAUGE-CLEAN-SCORE-STRIP-SMOKE';\r\n  var VERSION = 'PANEL-V4-FP14-19C-R2-R10-REMOVE-GAUGE-CLEAN-SCORE-STRIP-NO-SHOPIFY-WRITE';\r\n  var STYLE_ID = 'gdx-panel-v4-fp14-19c-r2-r10-remove-gauge-clean-score-strip-style';\r\n\r\n  function qsa(sel, root){ return Array.prototype.slice.call((root || D).querySelectorAll(sel)); }\r\n  function clean(v){ return String(v == null ? '' : v).replace(/\\s+/g,' ').trim(); }\r\n  function lower(v){ return clean(v).toLowerCase(); }\r\n  function scoreOf(el){ return Math.max(0, Math.min(100, Number(el && el.getAttribute('data-score') || 0))); }\r\n  function safeCall(name, fn){\r\n    try {\r\n      var value = typeof fn === 'function' ? fn() : null;\r\n      return {\r\n        name:name,\r\n        ok:!!(value && value.ok === true),\r\n        failed:value && Array.isArray(value.failed) ? value.failed : ['missing'],\r\n        phase:value && value.phase,\r\n        version:value && value.version,\r\n        value:value\r\n      };\r\n    } catch (err) {\r\n      return { name:name, ok:false, failed:['exception'], error:String(err && err.message || err) };\r\n    }\r\n  }\r\n  function hasTrue(res, key){ return !!(res && res.value && res.value.checks && res.value.checks[key] === true); }\r\n  function productsSnapshot(){\r\n    try {\r\n      var UI = W.GDXPanelV4UI || W.PanelLedV4UI || W.__GDX_PANEL_V4_UI__ || {};\r\n      var s = UI.state || W.__PANEL_LED_V4_STATE__ || {};\r\n      var api = W.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5;\r\n      var selected = api && api.state ? api.state.selected || {} : {};\r\n      return JSON.stringify({\r\n        a:s.productAKey || s.selectedAKey || s.selectedA || s.a || '',\r\n        b:s.productBKey || s.selectedBKey || s.selectedB || s.b || '',\r\n        p1:selected[1] && (selected[1].key || selected[1].handle || selected[1].title || ''),\r\n        p2:selected[2] && (selected[2].key || selected[2].handle || selected[2].title || '')\r\n      });\r\n    } catch(e) { return 'snapshot-error'; }\r\n  }\r\n  function openReason(){\r\n    var existing = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    if (existing) return true;\r\n    var btn = D.querySelector('[data-gdx-r11-why-btn]');\r\n    if (!btn) return false;\r\n    try { btn.click(); } catch(e) {}\r\n    return !!D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n  }\r\n  function uniqueLabels(nodes){\r\n    var labels = nodes.map(function(node){ return lower((node.querySelector('b') || {}).textContent); }).filter(Boolean);\r\n    return labels.indexOf('ama\u00E7 uyumu') > -1 && labels.indexOf('f/p \u00F6neri') > -1 && labels.indexOf('rol kan\u0131t\u0131') > -1;\r\n  }\r\n\r\n  function injectStyle(){\r\n    if (D.getElementById(STYLE_ID)) return;\r\n    var style = D.createElement('style');\r\n    style.id = STYLE_ID;\r\n    style.textContent = ''+\r\n      '/* 19C-R2-R10: remove all gauge/kadran visuals, keep clean premium score strip */'+\r\n      '.gdx-r11-balanced-fp-narrative--score-strip{background:linear-gradient(180deg,rgba(6,22,42,.80),rgba(3,12,28,.90))!important;border-color:rgba(34,211,238,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 22px 58px rgba(0,0,0,.18)!important}'+\r\n      '.gdx-r11-balanced-score-strip{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:12px!important;margin:14px 0 0!important}'+\r\n      '.gdx-r11-balanced-score-strip-item{position:relative!important;min-width:0!important;border:1px solid rgba(148,163,184,.18)!important;border-radius:17px!important;padding:14px 15px!important;background:linear-gradient(180deg,rgba(15,23,42,.72),rgba(2,6,23,.58))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 12px 28px rgba(0,0,0,.12)!important;overflow:hidden!important}'+\r\n      '.gdx-r11-balanced-score-strip-item:before{content:\"\"!important;position:absolute!important;left:0!important;top:0!important;bottom:0!important;width:4px!important;background:#22c55e!important;box-shadow:0 0 16px rgba(34,197,94,.30)!important}'+\r\n      '.gdx-r11-balanced-score-strip-item--fp:before{background:#f59e0b!important;box-shadow:0 0 16px rgba(245,158,11,.30)!important}'+\r\n      '.gdx-r11-balanced-score-strip-item--role:before{background:#22d3ee!important;box-shadow:0 0 16px rgba(34,211,238,.28)!important}'+\r\n      '.gdx-r11-balanced-score-strip-top{display:flex!important;align-items:baseline!important;justify-content:space-between!important;gap:12px!important;margin:0 0 8px!important}'+\r\n      '.gdx-r11-balanced-score-strip-top b{display:block!important;color:#f8fafc!important;font-size:clamp(12px,.96vw,14px)!important;line-height:1.15!important;font-weight:950!important;letter-spacing:-.01em!important}'+\r\n      '.gdx-r11-balanced-score-strip-top strong{display:flex!important;align-items:baseline!important;gap:2px!important;color:#bbf7d0!important;font-size:clamp(24px,2vw,31px)!important;line-height:.92!important;font-weight:950!important;letter-spacing:-.04em!important;white-space:nowrap!important;text-shadow:0 2px 10px rgba(0,0,0,.24)!important}'+\r\n      '.gdx-r11-balanced-score-strip-item--fp .gdx-r11-balanced-score-strip-top strong{color:#fde68a!important}'+\r\n      '.gdx-r11-balanced-score-strip-item--role .gdx-r11-balanced-score-strip-top strong{color:#a5f3fc!important}'+\r\n      '.gdx-r11-balanced-score-strip-top strong small{font-size:11px!important;color:#cbd5e1!important;font-weight:900!important;letter-spacing:0!important}'+\r\n      '.gdx-r11-balanced-score-strip-item>small{display:block!important;color:#cbd5e1!important;font-size:clamp(10.5px,.82vw,11.6px)!important;font-weight:850!important;line-height:1.35!important;margin:0!important}'+\r\n      '.gdx-r11-balanced-fp-narrative--score-strip .gdx-r11-balanced-fp-gauge-list,.gdx-r11-balanced-fp-narrative--score-strip .gdx-r11-purpose-fp-role-gauge,.gdx-r11-balanced-fp-narrative--score-strip [data-gdx-r11-balanced-score-gauge],.gdx-r11-balanced-fp-narrative--score-strip svg[class*=\"dial\"],.gdx-r11-balanced-fp-narrative--score-strip [class*=\"needle\"],.gdx-r11-balanced-fp-narrative--score-strip [class*=\"gauge-arc\"]{display:none!important;visibility:hidden!important;opacity:0!important}'+\r\n      '@media(max-width:980px){.gdx-r11-balanced-score-strip{grid-template-columns:1fr!important}.gdx-r11-balanced-score-strip-item{padding:13px 14px!important}}';\r\n    (D.head || D.documentElement).appendChild(style);\r\n  }\r\n\r\n  function getSnapshot(){\r\n    openReason();\r\n    var reasonModal = D.querySelector('[data-gdx-r11-modal-type=\"reason\"]');\r\n    var box = reasonModal ? reasonModal.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]') : D.querySelector('[data-gdx-r11-balanced-fp-narrative=\"1\"]');\r\n    var strip = box ? box.querySelector('[data-gdx-r11-balanced-score-strip=\"1\"]') : null;\r\n    var items = strip ? qsa('[data-gdx-r11-balanced-score-strip-item=\"1\"]', strip) : [];\r\n    var gauges = box ? qsa('[data-gdx-r11-purpose-fp-role-gauge=\"1\"],[data-gdx-r11-balanced-score-gauge],[data-gdx-r11-big-no-needle-dial=\"1\"],[data-gdx-r11-no-needle-reference-gauge=\"1\"]', box) : [];\r\n    var arcs = box ? qsa('[data-gdx-r11-big-no-needle-arc=\"1\"],[data-gdx-r11-no-needle-reference-arc=\"1\"],.gdx-r11-purpose-fp-role-gauge-arc', box) : [];\r\n    var needles = box ? qsa('.gdx-r11-purpose-fp-role-gauge-needle,.gdx-r11-purpose-fp-role-gauge-dot', box) : [];\r\n    var oldBars = box ? qsa('[data-gdx-r11-balanced-score-bar]', box) : [];\r\n    var text = lower(box && box.textContent);\r\n    return {\r\n      box: box,\r\n      strip: strip,\r\n      items: items,\r\n      gauges: gauges,\r\n      arcs: arcs,\r\n      needles: needles,\r\n      oldBars: oldBars,\r\n      text: text,\r\n      scores: items.map(function(item){ return { label: clean((item.querySelector('b') || {}).textContent), score: scoreOf(item) }; })\r\n    };\r\n  }\r\n\r\n  function audit(){\r\n    injectStyle();\r\n    var before = productsSnapshot();\r\n    var r1 = safeCall('19C-R1-R1 Typography Regression Compatibility', W.debugPanelV4FP1419CR1R1FP14OverlayTypographyRegressionCompatibilityFix);\r\n    var r4 = safeCall('19B-R4 Deep-link Return Overlay Restore Smoke', W.debugPanelV4FP1419BR4DeepLinkReturnFP14OverlayRestoreSmoke);\r\n    var snap = getSnapshot();\r\n    var after = productsSnapshot();\r\n\r\n    var scoresOk = snap.items.length === 3 && snap.items.every(function(item){\r\n      var s = scoreOf(item);\r\n      return s >= 0 && s <= 100;\r\n    });\r\n\r\n    var checks = {\r\n      gaugeRemovedCleanScoreStripStyleInjected: !!D.getElementById(STYLE_ID),\r\n      purposeFpRoleScoreStripSystemExists: !!snap.box && snap.box.getAttribute('data-gdx-r11-purpose-fp-role-score-strip-system') === '1',\r\n      scoreStripExists: !!snap.strip,\r\n      scoreStripItemsStill3: snap.items.length === 3,\r\n      scoreStripLabelsExist: uniqueLabels(snap.items),\r\n      scoreStripScoresDynamic: scoresOk,\r\n      allGaugeVisualsRemovedFromBalance: snap.gauges.length === 0 && snap.arcs.length === 0 && snap.needles.length === 0,\r\n      balancedScoreBarsRemovedFromBalance: snap.oldBars.length === 0,\r\n      balancedScoreCopyStillExplainsSeparation: /ayr\u0131/.test(snap.text) && (/fp14/.test(snap.text) || /14 kriterli/.test(snap.text)),\r\n      productSideBarsUntouchedByR10: true,\r\n      r1TypographyRegressionOk: r1.ok === true,\r\n      overlayRegressionOk: hasTrue(r1, 'overlayRegressionOk'),\r\n      sharePngDeepLinkRegressionOk: r4.ok === true,\r\n      valueOverlayDoesNotBreakShare: hasTrue(r4, 'valueOverlayDoesNotBreakShare'),\r\n      noCommerceMutation: hasTrue(r4, 'noCommerceMutation'),\r\n      noCartMutation: hasTrue(r4, 'noCartMutation'),\r\n      noProductMutation: hasTrue(r4, 'noProductMutation'),\r\n      noScoreMutation: hasTrue(r4, 'noScoreMutation'),\r\n      noSharePngQrUnexpectedMutation: hasTrue(r4, 'noSharePngQrUnexpectedMutation'),\r\n      noShopifyWrite: hasTrue(r4, 'noShopifyWrite') && before === after,\r\n      visualApprovalStillRequired: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      failed: failed,\r\n      checks: checks,\r\n      counts: {\r\n        scoreStripItems: snap.items.length,\r\n        hiddenOrRemovedGaugeVisuals: snap.gauges.length,\r\n        hiddenOrRemovedGaugeArcs: snap.arcs.length,\r\n        hiddenOrRemovedNeedlesDots: snap.needles.length,\r\n        oldBalancedBars: snap.oldBars.length\r\n      },\r\n      scoreStripScores: snap.scores,\r\n      sourceResults: { r1:r1, r4:r4 },\r\n      decision: {\r\n        visualScope: 'R10: h\u0131z g\u00F6stergesi/kadran/gauge g\u00F6rselleri tamamen kald\u0131r\u0131ld\u0131. Ama\u00E7 & F/P Dengesi alan\u0131 temiz premium 3 skor kart\u0131na \u00E7evrildi. \u00DCr\u00FCn g\u00F6rseli yan\u0131ndaki yatay skor barlar\u0131 no-touch. Console PASS g\u00F6rsel onay yerine ge\u00E7mez.',\r\n        nextPhase: 'PANEL-V4-FP14-19C-R3-FULL-UX-MICRO-POLISH-REGRESSION-SMOKE',\r\n        requiresVisualApproval: true,\r\n        liveApplyAllowed: false,\r\n        mutationAllowed: false\r\n      },\r\n      visualApprovalRequired: true,\r\n      liveApplyAllowed: false,\r\n      mutationAllowed: false\r\n    };\r\n  }\r\n\r\n  if (D.readyState === 'loading') D.addEventListener('DOMContentLoaded', injectStyle); else injectStyle();\r\n  W.debugPanelV4FP1419CR2R10RemoveGaugeCleanScoreStrip = audit;\r\n  W.debugPanelV4FP1419CR2R9BigPremiumNoNeedleDial = audit;\r\n  W.debugPanelV4FP1419CR2R8TrueNoNeedleReferenceDialDomApply = audit;\r\n})();\r\n\r\n/* PANEL-V4-SAFE-TEXT-ONLY-USER-PROFILE-LABEL-PATCH */\r\n(function () {\r\n  var PHASE = \"PANEL-V4-SAFE-TEXT-ONLY-USER-PROFILE-LABEL-PATCH\";\r\n  var FROM = [\"M\u00FC\u015Fteri Profili\", \"M\u00DC\u015ETER\u0130 PROF\u0130L\u0130\"];\r\n  var TO = \"KULLANICI PROF\u0130L\u0130\";\r\n\r\n  function isTargetText(value) {\r\n    value = String(value || \"\").replace(/\\s+/g, \" \").trim();\r\n    return FROM.indexOf(value) !== -1;\r\n  }\r\n\r\n  function patchUserProfileLabel(root) {\r\n    root = root || document;\r\n    var changed = 0;\r\n\r\n    var directTargets = root.querySelectorAll\r\n      ? root.querySelectorAll(\".gdx-r11-persona-fit-head span\")\r\n      : [];\r\n\r\n    Array.prototype.forEach.call(directTargets, function (el) {\r\n      if (isTargetText(el.textContent)) {\r\n        el.textContent = TO;\r\n        changed++;\r\n      }\r\n    });\r\n\r\n    return changed;\r\n  }\r\n\r\n  function runPatch() {\r\n    return patchUserProfileLabel(document);\r\n  }\r\n\r\n  runPatch();\r\n\r\n  if (!window.__GDX_PANEL_V4_USER_PROFILE_LABEL_OBSERVER__) {\r\n    window.__GDX_PANEL_V4_USER_PROFILE_LABEL_OBSERVER__ = true;\r\n\r\n    var observer = new MutationObserver(function () {\r\n      runPatch();\r\n    });\r\n\r\n    observer.observe(document.documentElement, {\r\n      childList: true,\r\n      subtree: true\r\n    });\r\n  }\r\n\r\n  window.debugPanelV4SafeTextOnlyUserProfileLabelPatch = function () {\r\n    var changedNow = runPatch();\r\n    var remaining = Array.prototype.slice\r\n      .call(document.querySelectorAll(\".gdx-r11-persona-fit-head span\"))\r\n      .filter(function (el) {\r\n        return isTargetText(el.textContent);\r\n      }).length;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      ok: remaining === 0,\r\n      changedNow: changedNow,\r\n      remainingOldLabels: remaining,\r\n      noButtonTouch: true,\r\n      noModalActionTouch: true,\r\n      noScoreTouch: true,\r\n      noProductTouch: true,\r\n      noCommerceTouch: true,\r\n      noCartTouch: true,\r\n      noSharePngQrTouch: true\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-SAFE-TEXT-ONLY-SCENARIO-ALT-BADGE-TO-ALTERNATIF-PATCH\r\n   Append-only patch. R10 stabil baz\u0131n EN ALTINA eklenir.\r\n   Ama\u00E7: \"#3\" kart\u0131ndaki \"SENARYO ALTERNAT\u0130F\u0130\" etiketini \"ALTERNAT\u0130F\" yapar.\r\n   No-touch: button/action listener/render/score/product/share/cart/commerce.\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-SAFE-TEXT-ONLY-SCENARIO-ALT-BADGE-TO-ALTERNATIF-PATCH\";\r\n  var TARGET = \"senaryo alternatifi\";\r\n  var TO = \"Alternatif\";\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function norm(value) {\r\n    return clean(value).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function patchScenarioAlternativeBadge(root) {\r\n    root = root || document;\r\n    var changed = 0;\r\n\r\n    var badges = Array.prototype.slice.call(\r\n      root.querySelectorAll(\".gdx-r11-badge, [class*='badge']\")\r\n    );\r\n\r\n    badges.forEach(function (el) {\r\n      if (norm(el.textContent) === TARGET) {\r\n        el.textContent = TO;\r\n        changed += 1;\r\n      }\r\n    });\r\n\r\n    return changed;\r\n  }\r\n\r\n  function runPatch() {\r\n    return patchScenarioAlternativeBadge(document);\r\n  }\r\n\r\n  runPatch();\r\n\r\n  if (!window.__GDX_PANEL_V4_SCENARIO_ALT_BADGE_PATCH_OBSERVER__) {\r\n    window.__GDX_PANEL_V4_SCENARIO_ALT_BADGE_PATCH_OBSERVER__ = true;\r\n\r\n    var observer = new MutationObserver(function () {\r\n      runPatch();\r\n    });\r\n\r\n    observer.observe(document.documentElement, {\r\n      childList: true,\r\n      subtree: true,\r\n      characterData: true\r\n    });\r\n  }\r\n\r\n  window.debugPanelV4ScenarioAltBadgeToAlternatifPatch = function () {\r\n    var changedNow = runPatch();\r\n\r\n    var oldBadges = Array.prototype.slice\r\n      .call(document.querySelectorAll(\".gdx-r11-badge, [class*='badge']\"))\r\n      .filter(function (el) {\r\n        return norm(el.textContent) === TARGET;\r\n      });\r\n\r\n    var newBadges = Array.prototype.slice\r\n      .call(document.querySelectorAll(\".gdx-r11-badge, [class*='badge']\"))\r\n      .filter(function (el) {\r\n        return norm(el.textContent) === norm(TO);\r\n      });\r\n\r\n    return {\r\n      phase: PHASE,\r\n      ok: oldBadges.length === 0 && newBadges.length > 0,\r\n      changedNow: changedNow,\r\n      remainingScenarioAlternativeBadges: oldBadges.length,\r\n      alternatifBadges: newBadges.length,\r\n      noButtonTouch: true,\r\n      noModalActionTouch: true,\r\n      noRenderTouch: true,\r\n      noScoreTouch: true,\r\n      noProductTouch: true,\r\n      noCommerceTouch: true,\r\n      noCartTouch: true,\r\n      noSharePngQrTouch: true\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R15-R1-FORMAT-STANDARDIZATION-DISPLAY-PATCH\r\n   UYGULAMA: assets/panel-led-v4.ui.js en alt\u0131na append-only ekle.\r\n   AMA\u00C7: G\u00F6r\u00FCn\u00FCr /10 skorlar\u0131 /100 yapar; \"\u00C7ok yak\u0131n sonu\u00E7\" dilini \"Yak\u0131n sonu\u00E7\" standard\u0131na \u00E7eker.\r\n   NO-TOUCH: fiyat, skor matemati\u011Fi, ranking, \u00FCr\u00FCn datas\u0131, cart/commerce/share/PNG/QR, button/modal action.\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R15-R1-FORMAT-STANDARDIZATION-DISPLAY-PATCH\";\r\n  var VERSION = \"PANEL-V4-R15-R1-FORMAT-STANDARDIZATION-DISPLAY-PATCH-APPEND-ONLY\";\r\n\r\n  if (window.__PANEL_V4_R15_R1_FORMAT_STANDARDIZATION__) return;\r\n  window.__PANEL_V4_R15_R1_FORMAT_STANDARDIZATION__ = true;\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v).replace(/\\u00a0/g, \" \").replace(/\\u202f/g, \" \").replace(/\\s+/g, \" \").trim();\r\n  }\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n  function getRoot() {\r\n    return document.querySelector(\"#gdx-panel-led-v4-root\") ||\r\n      document.querySelector(\"#gdxPanelV4Shell\") ||\r\n      document.body;\r\n  }\r\n  function badTextParent(node) {\r\n    var p = node && node.parentElement;\r\n    if (!p) return true;\r\n    var tag = (p.tagName || \"\").toLowerCase();\r\n    return /^(script|style|noscript|textarea|input|select|option|code|pre)$/.test(tag);\r\n  }\r\n  function toNumber(value) {\r\n    var n = Number(String(value == null ? \"\" : value).replace(\",\", \".\").replace(/[^\\d.]/g, \"\"));\r\n    return isFinite(n) ? n : null;\r\n  }\r\n  function score10To100(value) {\r\n    var n = toNumber(value);\r\n    if (n === null || n > 10) return null;\r\n    return Math.max(0, Math.min(100, Math.round(n * 10)));\r\n  }\r\n  function differenceToPoint(value) {\r\n    var n = toNumber(value);\r\n    if (n === null) return \"0\";\r\n    var p = Math.round(n * 10);\r\n    if (n > 0 && p < 1) p = 1;\r\n    return String(p);\r\n  }\r\n  function normalizeText(text) {\r\n    var after = String(text == null ? \"\" : text);\r\n\r\n    after = after.replace(/\\b(\\d{1,3}(?:[.,]\\d+)?)\\s*\\/\\s*10\\b/g, function (match, raw) {\r\n      var converted = score10To100(raw);\r\n      return converted === null ? match : String(converted) + \"/100\";\r\n    });\r\n\r\n    after = after.replace(/\u00C7ok yak\u0131n sonu\u00E7/g, \"Yak\u0131n sonu\u00E7\");\r\n    after = after.replace(/\u00E7ok yak\u0131n sonu\u00E7/g, \"yak\u0131n sonu\u00E7\");\r\n    after = after.replace(/\u00E7ok yak\u0131n/g, \"yak\u0131n\");\r\n    after = after.replace(/Yak\u0131n Sonu\u00E7ta \u00D6nde/g, \"K\u00FC\u00E7\u00FCk Farkla \u00D6nde\");\r\n    after = after.replace(/k\u0131lpay\u0131/gi, \"yak\u0131n sonu\u00E7\");\r\n\r\n    after = after.replace(/\u0130\u00E7 skor fark\u0131:\\s*([\\d.,]+)/g, function (_, raw) {\r\n      return \"Skor fark\u0131: \" + differenceToPoint(raw) + \" puan\";\r\n    });\r\n\r\n    return after;\r\n  }\r\n  function walkTextNodes(root) {\r\n    var changed = 0;\r\n    var walker = document.createTreeWalker(root || getRoot(), NodeFilter.SHOW_TEXT, {\r\n      acceptNode: function (node) {\r\n        if (!node || badTextParent(node)) return NodeFilter.FILTER_REJECT;\r\n        var t = String(node.nodeValue || \"\");\r\n        return (\r\n          /\\b\\d{1,3}(?:[.,]\\d+)?\\s*\\/\\s*10\\b/.test(t) ||\r\n          /\u00C7ok yak\u0131n|\u00E7ok yak\u0131n|Yak\u0131n Sonu\u00E7ta \u00D6nde|k\u0131lpay\u0131|\u0130\u00E7 skor fark\u0131:/i.test(t)\r\n        ) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\r\n      }\r\n    });\r\n    var nodes = [];\r\n    while (walker.nextNode()) nodes.push(walker.currentNode);\r\n    nodes.forEach(function (node) {\r\n      var before = node.nodeValue;\r\n      var after = normalizeText(before);\r\n      if (after !== before) {\r\n        node.nodeValue = after;\r\n        changed++;\r\n      }\r\n    });\r\n    return changed;\r\n  }\r\n  function directTextNodes(el) {\r\n    return Array.prototype.slice.call(el.childNodes || []).filter(function (node) { return node && node.nodeType === 3; });\r\n  }\r\n  function firstDirectNumber(el) {\r\n    var nodes = directTextNodes(el);\r\n    for (var i = 0; i < nodes.length; i += 1) {\r\n      var t = clean(nodes[i].nodeValue);\r\n      if (/^\\d{1,3}(?:[.,]\\d+)?$/.test(t)) return { node: nodes[i], value: t };\r\n    }\r\n    return null;\r\n  }\r\n  function normalizeCompareScoreBlocks(root) {\r\n    var changed = 0;\r\n    qsa(\".gdx-panel-v4-compare-score\", root || getRoot()).forEach(function (el) {\r\n      var small = el.querySelector(\"small\");\r\n      var direct = firstDirectNumber(el);\r\n      if (!direct || !small || !/\\/\\s*10\\b/.test(clean(small.textContent))) return;\r\n      var converted = score10To100(direct.value);\r\n      if (converted === null) return;\r\n      if (clean(direct.node.nodeValue) !== String(converted)) {\r\n        direct.node.nodeValue = String(converted);\r\n        changed++;\r\n      }\r\n      if (clean(small.textContent) !== \"/100\") {\r\n        small.textContent = \"/100\";\r\n        changed++;\r\n      }\r\n      el.setAttribute(\"data-gdx-panel-r15-score100\", \"1\");\r\n    });\r\n    return changed;\r\n  }\r\n  function normalizeActionBarScores(root) {\r\n    var changed = 0;\r\n    qsa(\".gdx-panel-v4-actionbar-score\", root || getRoot()).forEach(function (el) {\r\n      var before = el.textContent;\r\n      var after = normalizeText(before);\r\n      if (after !== before) {\r\n        el.textContent = after;\r\n        el.setAttribute(\"data-gdx-panel-r15-score100\", \"1\");\r\n        changed++;\r\n      }\r\n    });\r\n    return changed;\r\n  }\r\n  function run() {\r\n    var r = getRoot();\r\n    return normalizeCompareScoreBlocks(r) + normalizeActionBarScores(r) + walkTextNodes(r);\r\n  }\r\n  function bodyText() {\r\n    return clean((getRoot() && getRoot().innerText) || document.body.innerText || \"\");\r\n  }\r\n  function matchAll(re) {\r\n    var t = bodyText(), out = [], m;\r\n    re.lastIndex = 0;\r\n    while ((m = re.exec(t)) !== null) {\r\n      out.push(m[0]);\r\n      if (m.index === re.lastIndex) re.lastIndex++;\r\n    }\r\n    return out;\r\n  }\r\n  function diagnostics() {\r\n    var t = bodyText();\r\n    return {\r\n      score10TextCount: matchAll(/\\b\\d{1,3}(?:[.,]\\d+)?\\s*\\/\\s*10\\b/g).length,\r\n      score100TextCount: matchAll(/\\b\\d{1,3}\\s*\\/\\s*100\\b/g).length,\r\n      compareScoreSmall10: qsa(\".gdx-panel-v4-compare-score small\", getRoot()).filter(function (el) { return /\\/\\s*10\\b/.test(clean(el.textContent)); }).length,\r\n      actionBarScore10: qsa(\".gdx-panel-v4-actionbar-score\", getRoot()).filter(function (el) { return /\\/\\s*10\\b/.test(clean(el.textContent)); }).length,\r\n      cokYakinText: matchAll(/\u00C7ok yak\u0131n sonu\u00E7|\u00E7ok yak\u0131n/gi).length,\r\n      kucukFarklaText: matchAll(/K\u00FC\u00E7\u00FCk Farkla \u00D6nde/gi).length,\r\n      yakinSonuctaOndeText: matchAll(/Yak\u0131n Sonu\u00E7ta \u00D6nde/gi).length,\r\n      kilpayiText: matchAll(/k\u0131lpay\u0131|kilpayi/gi).length,\r\n      yakinSonucText: matchAll(/Yak\u0131n sonu\u00E7/gi).length,\r\n      skorFarkiText: matchAll(/Skor fark\u0131:\\s*\\d+\\s*puan/g).length,\r\n      priceDotTL: /\\d{1,3}\\.\\d{3}\\s*TL/.test(t),\r\n      oldCommaDecimalTL: matchAll(/\\d{1,3},\\d{3}\\.00\\s*TL|\\d{1,3},\\d{3}\\.00TL/g).length,\r\n      missingTLBeforeBullet: matchAll(/\\b\\d{1,3}(?:[.,]\\d{3})+\\s*[\u00B7\u2022]\\s*(?=[^\\n]*(?:W\\b|CRI|TLCI|GDX|Godox|Bi-Color|RGB|Batarya|DMX))/g).length\r\n    };\r\n  }\r\n\r\n  run();\r\n\r\n  var scheduled = false;\r\n  var observer = new MutationObserver(function () {\r\n    if (scheduled) return;\r\n    scheduled = true;\r\n    requestAnimationFrame(function () {\r\n      scheduled = false;\r\n      run();\r\n    });\r\n  });\r\n  if (document.body) observer.observe(document.body, { childList: true, subtree: true, characterData: true });\r\n\r\n  window.debugPanelV4R15R1FormatStandardization = function () {\r\n    var changedNow = run();\r\n    var d = diagnostics();\r\n    var ok =\r\n      d.score10TextCount === 0 &&\r\n      d.compareScoreSmall10 === 0 &&\r\n      d.actionBarScore10 === 0 &&\r\n      d.cokYakinText === 0 &&\r\n      d.yakinSonuctaOndeText === 0 &&\r\n      d.kilpayiText === 0 &&\r\n      d.priceDotTL === true &&\r\n      d.oldCommaDecimalTL === 0 &&\r\n      d.missingTLBeforeBullet === 0;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      changedNow: changedNow,\r\n      diagnostics: d,\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noProductMutation: true,\r\n      noButtonTouch: true,\r\n      noModalActionTouch: true,\r\n      noCommerceMutation: true,\r\n      noCartMutation: true,\r\n      noSharePngQrMutation: true,\r\n      noPriceFormatterTouch: true,\r\n      sealCandidate: ok ? \"PANEL-V4-R15-R1-FORMAT-STANDARDIZATION-DISPLAY-PATCH-PASS-STABLE\" : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R16-R1-COMMERCE-RECOMMENDATION-LABEL-CLARITY\r\n   AMA\u00C7:\r\n   R16-R0-R1 precise audit, en alttaki commerce \u00F6neri blo\u011Funun zaten UI.state.recommendationResult Top 3 ile beslendi\u011Fini do\u011Frulad\u0131.\r\n   Bu patch sadece ba\u015Fl\u0131\u011F\u0131 netle\u015Ftirir:\r\n\r\n   \"\u00D6nerilen \u00DCr\u00FCnler\" -> \"Se\u00E7ili Amaca G\u00F6re \u00D6nerilenler\"\r\n\r\n   UYGULAMA:\r\n   assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN ALTINA append-only ekle.\r\n\r\n   NO-TOUCH:\r\n   - \u00DCr\u00FCn kayna\u011F\u0131 de\u011Fi\u015Ftirmez\r\n   - Skor/ranking de\u011Fi\u015Ftirmez\r\n   - Cart / Sepete Ekle de\u011Fi\u015Ftirmez\r\n   - Commerce data/render fonksiyonuna dokunmaz\r\n   - Share / PNG / QR yok\r\n   - Button / modal action yok\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R16-R1-COMMERCE-RECOMMENDATION-LABEL-CLARITY\";\r\n  var VERSION = \"PANEL-V4-R16-R1-COMMERCE-RECOMMENDATION-LABEL-CLARITY-APPEND-ONLY\";\r\n\r\n  if (window.__PANEL_V4_R16_R1_COMMERCE_RECO_LABEL_CLARITY__) return;\r\n  window.__PANEL_V4_R16_R1_COMMERCE_RECO_LABEL_CLARITY__ = true;\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function mount() {\r\n    return document.getElementById(\"gdxPanelV4CommercePreview\") || document.body;\r\n  }\r\n\r\n  function apply() {\r\n    var changed = 0;\r\n    var root = mount();\r\n\r\n    qsa(\".gdx-panel-v4-commerce-block-title\", root).forEach(function (el) {\r\n      var t = clean(el.textContent);\r\n\r\n      if (t === \"\u00D6nerilen \u00DCr\u00FCnler\") {\r\n        el.textContent = \"Se\u00E7ili Amaca G\u00F6re \u00D6nerilenler\";\r\n        el.setAttribute(\"data-gdx-panel-r16-label-clarity\", \"1\");\r\n        changed++;\r\n      }\r\n    });\r\n\r\n    return changed;\r\n  }\r\n\r\n  function diagnostics() {\r\n    var root = mount();\r\n    var titles = qsa(\".gdx-panel-v4-commerce-block-title\", root).map(function (el) {\r\n      return clean(el.textContent);\r\n    }).filter(Boolean);\r\n\r\n    return {\r\n      titles: titles,\r\n      oldRecommendationTitleCount: titles.filter(function (t) { return t === \"\u00D6nerilen \u00DCr\u00FCnler\"; }).length,\r\n      clearRecommendationTitleCount: titles.filter(function (t) { return t === \"Se\u00E7ili Amaca G\u00F6re \u00D6nerilenler\"; }).length,\r\n      compareTitleCount: titles.filter(function (t) { return t === \"Kar\u015F\u0131la\u015Ft\u0131r\u0131lan \u00DCr\u00FCnler\"; }).length,\r\n      commerceCardCount: qsa(\".gdx-panel-v4-commerce-card\", root).length,\r\n      addToCartButtonCount: qsa(\"[data-gdx-panel-commerce-add]\", root).length\r\n    };\r\n  }\r\n\r\n  apply();\r\n\r\n  var scheduled = false;\r\n  var observer = new MutationObserver(function () {\r\n    if (scheduled) return;\r\n    scheduled = true;\r\n    requestAnimationFrame(function () {\r\n      scheduled = false;\r\n      apply();\r\n    });\r\n  });\r\n\r\n  if (document.body) {\r\n    observer.observe(document.body, { childList: true, subtree: true, characterData: true });\r\n  }\r\n\r\n  window.debugPanelV4R16R1CommerceRecommendationLabelClarity = function () {\r\n    var changedNow = apply();\r\n    var d = diagnostics();\r\n\r\n    var ok =\r\n      d.oldRecommendationTitleCount === 0 &&\r\n      d.clearRecommendationTitleCount >= 1 &&\r\n      d.compareTitleCount >= 1 &&\r\n      d.commerceCardCount >= 5;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      changedNow: changedNow,\r\n      diagnostics: d,\r\n      noSourceMutation: true,\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noProductMutation: true,\r\n      noButtonTouch: true,\r\n      noModalActionTouch: true,\r\n      noCommerceDataMutation: true,\r\n      noCartMutation: true,\r\n      noSharePngQrMutation: true,\r\n      sealCandidate: ok ? \"PANEL-V4-R16-R1-COMMERCE-RECOMMENDATION-LABEL-CLARITY-PASS-STABLE\" : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n\r\n/* PANEL-V4-R17-R2-TOP-CARD-DIRECT-VARIANT-ADD-TO-CART\r\n   AMA\u00C7:\r\n   R17-R2-R0 audit PASS:\r\n   - \u00DCst \u00F6neri kartlar\u0131 product pool ile e\u015Fle\u015Fiyor.\r\n   - 3/3 \u00FCst kartta ger\u00E7ek product pool variant id var.\r\n   - Alt commerce index ba\u011F\u0131ml\u0131l\u0131\u011F\u0131 yok.\r\n\r\n   Bu patch \u00FCst \u00F6neri kartlar\u0131na Sepete Ekle butonu ekler ve butonu\r\n   SADECE \u00DCST KARTIN KEND\u0130 GER\u00C7EK PRODUCT POOL VARIANT ID'S\u0130 ile \u00E7al\u0131\u015Ft\u0131r\u0131r.\r\n\r\n   KES\u0130N KURAL:\r\n   - Alt commerce \"\u00D6nerilen \u00DCr\u00FCnler\" index'i kullan\u0131lmaz.\r\n   - Alt commerce Sepete Ekle butonu tetiklenmez.\r\n   - Kaynak: window.GDX_PANEL_LED_V4.state.products i\u00E7indeki e\u015Fle\u015Fen ger\u00E7ek \u00FCr\u00FCn.\r\n   - Variant ID yoksa Sepete Ekle eklenmez; \u00FCr\u00FCn sayfas\u0131 fallback korunur.\r\n\r\n   UYGULAMA:\r\n   assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN ALTINA append-only ekle.\r\n\r\n   NO-TOUCH:\r\n   - Skor hesaplama yok\r\n   - Ranking yok\r\n   - \u00DCr\u00FCn \u00F6neri kayna\u011F\u0131 yok\r\n   - Fiyat formatter yok\r\n   - Modal action yok\r\n   - Share / PNG / QR yok\r\n   - Alt commerce cart butonuna click yok\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R17-R2-TOP-CARD-DIRECT-VARIANT-ADD-TO-CART\";\r\n  var VERSION = \"PANEL-V4-R17-R2-TOP-CARD-DIRECT-VARIANT-ADD-TO-CART-APPEND-ONLY\";\r\n\r\n  if (window.__PANEL_V4_R17_R2_TOP_DIRECT_VARIANT_CART__) return;\r\n  window.__PANEL_V4_R17_R2_TOP_DIRECT_VARIANT_CART__ = true;\r\n\r\n  window.__PANEL_V4_R17_R2_LAST_CART_ADD__ = window.__PANEL_V4_R17_R2_LAST_CART_ADD__ || null;\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function norm(v) {\r\n    return clean(v)\r\n      .toLocaleLowerCase(\"tr-TR\")\r\n      .replace(/[^\\p{L}\\p{N}]+/gu, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle(el);\r\n    if (!st || st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0) return false;\r\n    var r = el.getBoundingClientRect();\r\n    return r.width > 0 && r.height > 0;\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function commerceMount() {\r\n    return document.getElementById(\"gdxPanelV4CommercePreview\");\r\n  }\r\n\r\n  function productNameLike(s) {\r\n    s = clean(s);\r\n    return /^(GDX|Godox)\\s+/i.test(s) && s.length >= 8 && s.length <= 110;\r\n  }\r\n\r\n  function productTitle(product) {\r\n    product = product || {};\r\n    return clean(\r\n      product.smartTitle ||\r\n      product.smartShortTitle ||\r\n      product.displayTitle ||\r\n      product.shortTitle ||\r\n      product.title ||\r\n      product.name ||\r\n      \"\"\r\n    );\r\n  }\r\n\r\n  function productKeys(product) {\r\n    product = product || {};\r\n    return [\r\n      product.key,\r\n      product.handle,\r\n      product.id,\r\n      product.product_id,\r\n      product.title,\r\n      product.shortTitle,\r\n      product.smartTitle,\r\n      product.smartShortTitle\r\n    ].map(clean).filter(Boolean);\r\n  }\r\n\r\n  function numericVariantIdFrom(value) {\r\n    value = clean(value);\r\n    if (!value) return \"\";\r\n    var m = value.match(/(\\d{8,})/);\r\n    return m ? m[1] : \"\";\r\n  }\r\n\r\n  function productVariantId(product) {\r\n    product = product || {};\r\n\r\n    var direct = [\r\n      product.variantId,\r\n      product.variant_id,\r\n      product.selectedVariantId,\r\n      product.firstVariantId,\r\n      product.firstAvailableVariantId,\r\n      product.defaultVariantId,\r\n      product.legacyVariantId\r\n    ].map(numericVariantIdFrom).find(Boolean);\r\n\r\n    if (direct) return direct;\r\n\r\n    var variants = Array.isArray(product.variants) ? product.variants : [];\r\n\r\n    for (var i = 0; i < variants.length; i += 1) {\r\n      var v = variants[i] || {};\r\n      var id = numericVariantIdFrom(v.id || v.variantId || v.admin_graphql_api_id || v.storefrontId || \"\");\r\n      if (id) return id;\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  function productHandle(product) {\r\n    product = product || {};\r\n    return clean(product.handle || product.productHandle || \"\");\r\n  }\r\n\r\n  function productUrl(product) {\r\n    var handle = productHandle(product);\r\n    if (handle) return \"/products/\" + handle;\r\n    return clean(product.url || product.onlineStoreUrl || \"\");\r\n  }\r\n\r\n  function productPrice(product) {\r\n    product = product || {};\r\n    return clean(product.priceText || product.price || product.displayPrice || \"\");\r\n  }\r\n\r\n  function nearestTopCard(el) {\r\n    var mount = commerceMount();\r\n    var cur = el;\r\n\r\n    for (var i = 0; i < 10 && cur; i += 1) {\r\n      if (mount && mount.contains(cur)) return null;\r\n\r\n      var t = clean(cur.innerText);\r\n      var hasReason = /Neden Bu \u00DCr\u00FCn/i.test(t);\r\n      var hasSetup = /Setup['\u2019]?u G\u00F6r|Kurulumu G\u00F6r/i.test(t);\r\n      var hasProduct = /GDX|Godox/i.test(t);\r\n\r\n      if (hasReason && hasSetup && hasProduct && t.length < 2400) return cur;\r\n\r\n      cur = cur.parentElement;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function titleFromCard(card) {\r\n    if (!card) return \"\";\r\n\r\n    var title = \"\";\r\n\r\n    qsa(\"h1,h2,h3,h4,b,strong\", card).some(function (el) {\r\n      var t = clean(el.textContent);\r\n      if (productNameLike(t)) {\r\n        title = t;\r\n        return true;\r\n      }\r\n      return false;\r\n    });\r\n\r\n    if (title) return title;\r\n\r\n    qsa(\"div,span\", card).some(function (el) {\r\n      var t = clean(el.textContent);\r\n      if (productNameLike(t)) {\r\n        title = t;\r\n        return true;\r\n      }\r\n      return false;\r\n    });\r\n\r\n    return title;\r\n  }\r\n\r\n  function keyFromCard(card) {\r\n    if (!card) return \"\";\r\n\r\n    var candidates = [\r\n      card.getAttribute(\"data-gdx-r11-key\"),\r\n      card.getAttribute(\"data-gdx-panel-product\"),\r\n      card.getAttribute(\"data-gdx-panel-product-key\"),\r\n      card.getAttribute(\"data-product-key\")\r\n    ].map(clean).filter(Boolean);\r\n\r\n    qsa(\"[data-gdx-r11-key],[data-gdx-panel-product],[data-gdx-panel-product-key],[data-product-key]\", card).forEach(function (el) {\r\n      [\r\n        el.getAttribute(\"data-gdx-r11-key\"),\r\n        el.getAttribute(\"data-gdx-panel-product\"),\r\n        el.getAttribute(\"data-gdx-panel-product-key\"),\r\n        el.getAttribute(\"data-product-key\")\r\n      ].map(clean).filter(Boolean).forEach(function (x) {\r\n        candidates.push(x);\r\n      });\r\n    });\r\n\r\n    return candidates[0] || \"\";\r\n  }\r\n\r\n  function topCards() {\r\n    var out = [];\r\n\r\n    qsa(\"button,a\", document.body).forEach(function (btn) {\r\n      if (!visible(btn)) return;\r\n      if (!/^Neden Bu \u00DCr\u00FCn\\??$/i.test(clean(btn.textContent))) return;\r\n\r\n      var card = nearestTopCard(btn);\r\n      if (!card) return;\r\n\r\n      var title = titleFromCard(card);\r\n      if (!title) return;\r\n\r\n      out.push({\r\n        card: card,\r\n        title: title,\r\n        key: keyFromCard(card)\r\n      });\r\n    });\r\n\r\n    var seen = {};\r\n    return out.filter(function (entry) {\r\n      var k = norm(entry.key || entry.title || clean(entry.card.innerText));\r\n      if (!k || seen[k]) return false;\r\n      seen[k] = true;\r\n      return true;\r\n    }).slice(0, 6);\r\n  }\r\n\r\n  function matchProductForCard(entry) {\r\n    var products = productPool();\r\n    var cardKey = clean(entry.key);\r\n    var cardTitle = clean(entry.title);\r\n    var cardTitleNorm = norm(cardTitle);\r\n\r\n    if (cardKey) {\r\n      var byExactKey = products.find(function (p) {\r\n        return productKeys(p).some(function (k) {\r\n          return norm(k) === norm(cardKey);\r\n        });\r\n      });\r\n      if (byExactKey) return { product: byExactKey, method: \"exact-data-key\" };\r\n    }\r\n\r\n    var byExactTitle = products.find(function (p) {\r\n      return norm(productTitle(p)) === cardTitleNorm ||\r\n        norm(p.title) === cardTitleNorm ||\r\n        norm(p.shortTitle) === cardTitleNorm ||\r\n        norm(p.smartShortTitle) === cardTitleNorm;\r\n    });\r\n    if (byExactTitle) return { product: byExactTitle, method: \"exact-title\" };\r\n\r\n    var byContains = products.find(function (p) {\r\n      var pt = norm(productTitle(p));\r\n      var raw = norm(p.title || \"\");\r\n      return (pt && (pt.indexOf(cardTitleNorm) > -1 || cardTitleNorm.indexOf(pt) > -1)) ||\r\n        (raw && (raw.indexOf(cardTitleNorm) > -1 || cardTitleNorm.indexOf(raw) > -1));\r\n    });\r\n    if (byContains) return { product: byContains, method: \"contains-title\" };\r\n\r\n    var cardCompact = cardTitleNorm.replace(/\\b(gdx|godox)\\b/g, \"\").trim();\r\n    var byCompact = products.find(function (p) {\r\n      var pt = norm(productTitle(p)).replace(/\\b(gdx|godox)\\b/g, \"\").trim();\r\n      return pt && cardCompact && (pt.indexOf(cardCompact) > -1 || cardCompact.indexOf(pt) > -1);\r\n    });\r\n    if (byCompact) return { product: byCompact, method: \"compact-title\" };\r\n\r\n    return { product: null, method: \"not-found\" };\r\n  }\r\n\r\n  function actionRow(card) {\r\n    var reasonBtn = qsa(\"button,a\", card).find(function (el) {\r\n      return /^Neden Bu \u00DCr\u00FCn\\??$/i.test(clean(el.textContent));\r\n    });\r\n\r\n    if (!reasonBtn) return card;\r\n\r\n    var row = reasonBtn.parentElement;\r\n\r\n    for (var i = 0; i < 5 && row; i += 1) {\r\n      var txt = clean(row.innerText);\r\n      if (/\u00DCr\u00FCn\u00FC \u0130ncele/i.test(txt) && /Neden Bu \u00DCr\u00FCn/i.test(txt) && txt.length < 180) return row;\r\n      row = row.parentElement;\r\n    }\r\n\r\n    return reasonBtn.parentElement || card;\r\n  }\r\n\r\n  function dispatchCartEvents(cart, item) {\r\n    var detail = {\r\n      source: PHASE,\r\n      cart: cart || null,\r\n      item: item || null\r\n    };\r\n\r\n    [\r\n      \"cart:refresh\",\r\n      \"cart:updated\",\r\n      \"cart:update\",\r\n      \"theme:cart:refresh\",\r\n      \"theme:cart:update\",\r\n      \"ajaxProduct:added\",\r\n      \"product:added\"\r\n    ].forEach(function (name) {\r\n      try {\r\n        document.dispatchEvent(new CustomEvent(name, { bubbles: true, detail: detail }));\r\n        window.dispatchEvent(new CustomEvent(name, { detail: detail }));\r\n      } catch (error) {}\r\n    });\r\n  }\r\n\r\n  function fetchCart() {\r\n    return fetch(\"/cart.js\", {\r\n      method: \"GET\",\r\n      credentials: \"same-origin\",\r\n      headers: { \"Accept\": \"application/json\" }\r\n    }).then(function (res) {\r\n      return res.ok ? res.json() : null;\r\n    }).catch(function () {\r\n      return null;\r\n    });\r\n  }\r\n\r\n  function addVariantToCart(variantId, quantity) {\r\n    return fetch(\"/cart/add.js\", {\r\n      method: \"POST\",\r\n      credentials: \"same-origin\",\r\n      headers: {\r\n        \"Accept\": \"application/json\",\r\n        \"Content-Type\": \"application/json\"\r\n      },\r\n      body: JSON.stringify({\r\n        id: Number(variantId),\r\n        quantity: Number(quantity || 1)\r\n      })\r\n    }).then(function (res) {\r\n      if (!res.ok) {\r\n        return res.json().catch(function () {\r\n          return {};\r\n        }).then(function (data) {\r\n          var msg = data && (data.description || data.message) ? (data.description || data.message) : \"Sepete eklenemedi.\";\r\n          throw new Error(msg);\r\n        });\r\n      }\r\n      return res.json();\r\n    });\r\n  }\r\n\r\n  function setButtonState(btn, state, text) {\r\n    btn.setAttribute(\"data-gdx-panel-r17-r2-cart-state\", state);\r\n    btn.textContent = text;\r\n\r\n    if (state === \"out-of-stock\") {\r\n      btn.disabled = true;\r\n      btn.style.opacity = \".68\";\r\n      btn.style.cursor = \"not-allowed\";\r\n      btn.style.background = \"#64748b\";\r\n      btn.style.borderColor = \"#64748b\";\r\n      btn.style.color = \"#ffffff\";\r\n      btn.setAttribute(\"aria-disabled\", \"true\");\r\n    } else if (state === \"loading\") {\r\n      btn.disabled = true;\r\n      btn.style.opacity = \".82\";\r\n      btn.style.cursor = \"wait\";\r\n    } else if (state === \"success\") {\r\n      btn.disabled = false;\r\n      btn.style.opacity = \"1\";\r\n      btn.style.cursor = \"pointer\";\r\n      btn.style.background = \"linear-gradient(135deg,#22c55e,#15803d)\";\r\n      btn.style.color = \"#03140b\";\r\n    } else if (state === \"error\") {\r\n      btn.disabled = false;\r\n      btn.style.opacity = \"1\";\r\n      btn.style.cursor = \"pointer\";\r\n      btn.style.background = \"linear-gradient(135deg,#ef4444,#991b1b)\";\r\n      btn.style.color = \"#fff\";\r\n    } else {\r\n      btn.disabled = false;\r\n      btn.removeAttribute(\"aria-disabled\");\r\n      btn.style.opacity = \"1\";\r\n      btn.style.cursor = \"pointer\";\r\n      btn.style.background = \"linear-gradient(135deg,#22c55e,#16a34a)\";\r\n      btn.style.borderColor = \"rgba(34,197,94,.72)\";\r\n      btn.style.color = \"#03140b\";\r\n    }\r\n  }\r\n\r\n  function styleButton(btn) {\r\n    btn.style.appearance = \"none\";\r\n    btn.style.border = \"1px solid rgba(34,197,94,.72)\";\r\n    btn.style.background = \"linear-gradient(135deg,#22c55e,#16a34a)\";\r\n    btn.style.color = \"#03140b\";\r\n    btn.style.fontWeight = \"900\";\r\n    btn.style.borderRadius = \"999px\";\r\n    btn.style.padding = \"12px 18px\";\r\n    btn.style.minHeight = \"44px\";\r\n    btn.style.cursor = \"pointer\";\r\n    btn.style.boxShadow = \"0 12px 26px rgba(34,197,94,.22)\";\r\n    btn.style.flex = \"1 1 160px\";\r\n    btn.style.marginTop = \"10px\";\r\n  }\r\n\r\n  function createOrUpdateButton(entry, index) {\r\n    var card = entry.card;\r\n    if (!card) return false;\r\n\r\n    var match = matchProductForCard(entry);\r\n    var product = match.product || {};\r\n    var variantId = productVariantId(product);\r\n    var title = productTitle(product) || entry.title;\r\n    var handle = productHandle(product);\r\n    var productKey = clean(product.key || entry.key || \"\");\r\n    var available = product.available !== false;\r\n\r\n    if (!variantId) return false;\r\n\r\n    var existing = card.querySelector(\"[data-gdx-panel-r17-r2-direct-add='1']\");\r\n    if (existing) {\r\n      existing.setAttribute(\"data-gdx-panel-variant-id\", variantId);\r\n      existing.setAttribute(\"data-gdx-panel-product-key\", productKey);\r\n      existing.setAttribute(\"data-gdx-panel-product-handle\", handle);\r\n      existing.setAttribute(\"data-gdx-panel-product-title\", title);\r\n      existing.setAttribute(\"data-gdx-panel-r17-r2-match-method\", match.method);\r\n      if (!available) setButtonState(existing, \"out-of-stock\", \"Stok D\u0131\u015F\u0131\");\r\n      else if (existing.getAttribute(\"data-gdx-panel-r17-r2-cart-state\") === \"out-of-stock\") setButtonState(existing, \"idle\", \"Sepete Ekle\");\r\n      return false;\r\n    }\r\n\r\n    var row = actionRow(card);\r\n    var btn = document.createElement(\"button\");\r\n    btn.type = \"button\";\r\n    btn.textContent = \"Sepete Ekle\";\r\n    btn.setAttribute(\"data-gdx-panel-r17-r2-direct-add\", \"1\");\r\n    btn.setAttribute(\"data-gdx-panel-variant-id\", variantId);\r\n    btn.setAttribute(\"data-gdx-panel-product-key\", productKey);\r\n    btn.setAttribute(\"data-gdx-panel-product-handle\", handle);\r\n    btn.setAttribute(\"data-gdx-panel-product-title\", title);\r\n    btn.setAttribute(\"data-gdx-panel-r17-r2-match-method\", match.method);\r\n    btn.setAttribute(\"aria-label\", title + \" sepete ekle\");\r\n    styleButton(btn);\r\n    if (!available) setButtonState(btn, \"out-of-stock\", \"Stok D\u0131\u015F\u0131\");\r\n\r\n    btn.addEventListener(\"click\", function (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n\r\n      if (btn.disabled) return;\r\n\r\n      var oldText = \"Sepete Ekle\";\r\n      var directVariantId = clean(btn.getAttribute(\"data-gdx-panel-variant-id\"));\r\n      var directTitle = clean(btn.getAttribute(\"data-gdx-panel-product-title\"));\r\n      var directKey = clean(btn.getAttribute(\"data-gdx-panel-product-key\"));\r\n\r\n      window.__PANEL_V4_R17_R2_LAST_CART_ADD__ = {\r\n        phase: PHASE,\r\n        status: \"started\",\r\n        variantId: directVariantId,\r\n        productTitle: directTitle,\r\n        productKey: directKey,\r\n        startedAt: new Date().toISOString()\r\n      };\r\n\r\n      setButtonState(btn, \"loading\", \"Sepete Ekleniyor...\");\r\n\r\n      addVariantToCart(directVariantId, 1)\r\n        .then(function (item) {\r\n          return fetchCart().then(function (cart) {\r\n            window.__PANEL_V4_R17_R2_LAST_CART_ADD__ = {\r\n              phase: PHASE,\r\n              status: \"success\",\r\n              variantId: directVariantId,\r\n              productTitle: directTitle,\r\n              productKey: directKey,\r\n              item: item || null,\r\n              cartItemCount: cart && cart.item_count,\r\n              finishedAt: new Date().toISOString()\r\n            };\r\n\r\n            dispatchCartEvents(cart, item);\r\n            setButtonState(btn, \"success\", \"Sepete Eklendi \u2713\");\r\n\r\n            window.setTimeout(function () {\r\n              setButtonState(btn, \"idle\", oldText);\r\n            }, 1800);\r\n          });\r\n        })\r\n        .catch(function (error) {\r\n          window.__PANEL_V4_R17_R2_LAST_CART_ADD__ = {\r\n            phase: PHASE,\r\n            status: \"error\",\r\n            variantId: directVariantId,\r\n            productTitle: directTitle,\r\n            productKey: directKey,\r\n            error: clean(error && error.message ? error.message : error),\r\n            finishedAt: new Date().toISOString()\r\n          };\r\n\r\n          console.warn(\"[PANEL V4 R17-R2] Sepete ekleme hatas\u0131:\", error);\r\n          setButtonState(btn, \"error\", \"Tekrar Dene\");\r\n\r\n          window.setTimeout(function () {\r\n            setButtonState(btn, \"idle\", oldText);\r\n          }, 2200);\r\n        });\r\n    });\r\n\r\n    row.appendChild(btn);\r\n    card.setAttribute(\"data-gdx-panel-r17-r2-direct-cart-ready\", \"1\");\r\n    card.setAttribute(\"data-gdx-panel-r17-r2-direct-cart-title\", title);\r\n    card.setAttribute(\"data-gdx-panel-r17-r2-direct-cart-variant\", variantId);\r\n\r\n    return true;\r\n  }\r\n\r\n  function apply() {\r\n    var changed = 0;\r\n    topCards().slice(0, 3).forEach(function (entry, index) {\r\n      if (createOrUpdateButton(entry, index)) changed++;\r\n    });\r\n    return changed;\r\n  }\r\n\r\n  function diagnostics() {\r\n    var cards = topCards().slice(0, 3);\r\n\r\n    var rows = cards.map(function (entry, index) {\r\n      var match = matchProductForCard(entry);\r\n      var product = match.product || {};\r\n      var btn = entry.card.querySelector(\"[data-gdx-panel-r17-r2-direct-add='1']\");\r\n      return {\r\n        index: index + 1,\r\n        cardTitle: entry.title,\r\n        cardDataKey: entry.key,\r\n        matched: !!match.product,\r\n        matchMethod: match.method,\r\n        matchedProductTitle: productTitle(product),\r\n        matchedProductKey: clean(product.key || \"\"),\r\n        matchedHandle: productHandle(product),\r\n        matchedVariantId: productVariantId(product),\r\n        buttonExists: !!btn,\r\n        buttonVariantId: clean(btn && btn.getAttribute(\"data-gdx-panel-variant-id\")),\r\n        buttonProductTitle: clean(btn && btn.getAttribute(\"data-gdx-panel-product-title\"))\r\n      };\r\n    });\r\n\r\n    return {\r\n      productPoolCount: productPool().length,\r\n      topCardCount: cards.length,\r\n      directButtonCount: qsa(\"[data-gdx-panel-r17-r2-direct-add='1']\").length,\r\n      matchedCount: rows.filter(function (r) { return r.matched; }).length,\r\n      variantIdCount: rows.filter(function (r) { return !!r.matchedVariantId; }).length,\r\n      buttonVariantMatchesCount: rows.filter(function (r) {\r\n        return !!r.buttonVariantId && r.buttonVariantId === r.matchedVariantId;\r\n      }).length,\r\n      rows: rows,\r\n      lastCartAdd: window.__PANEL_V4_R17_R2_LAST_CART_ADD__ || null\r\n    };\r\n  }\r\n\r\n  apply();\r\n\r\n  var scheduled = false;\r\n  var observer = new MutationObserver(function () {\r\n    if (scheduled) return;\r\n    scheduled = true;\r\n    requestAnimationFrame(function () {\r\n      scheduled = false;\r\n      apply();\r\n    });\r\n  });\r\n\r\n  if (document.body) {\r\n    observer.observe(document.body, { childList: true, subtree: true, characterData: true });\r\n  }\r\n\r\n  window.debugPanelV4R17R2TopCardDirectVariantAddToCart = function () {\r\n    var changedNow = apply();\r\n    var d = diagnostics();\r\n\r\n    var ok =\r\n      d.productPoolCount >= 10 &&\r\n      d.topCardCount >= 3 &&\r\n      d.directButtonCount >= 3 &&\r\n      d.matchedCount >= 3 &&\r\n      d.variantIdCount >= 3 &&\r\n      d.buttonVariantMatchesCount >= 3;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      changedNow: changedNow,\r\n      diagnostics: d,\r\n      noBottomCommerceIndexDependency: true,\r\n      noCommerceButtonClickBridge: true,\r\n      source: \"window.GDX_PANEL_LED_V4.state.products matched product variant id\",\r\n      cartWriteOnlyOnUserClick: true,\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noProductMutation: true,\r\n      noPriceFormatterTouch: true,\r\n      noModalActionTouch: true,\r\n      noSharePngQrMutation: true,\r\n      note: \"Debug sepete \u00FCr\u00FCn eklemez. \u00DCst kart butonuna manuel t\u0131klan\u0131nca lastCartAdd alan\u0131ndan ger\u00E7ek eklenen variant takip edilir.\",\r\n      sealCandidate: ok ? \"PANEL-V4-R17-R2-TOP-CARD-DIRECT-VARIANT-ADD-TO-CART-READY-FOR-MANUAL-CART-TEST\" : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n\r\n/* PANEL-V4-R18-R7-CLEAN-CONSOLIDATED-MODAL-CART-UX\r\n   AMA\u00C7:\r\n   R18-R1/R2/R3/R4/R5 append denemeleri canl\u0131da birikince t\u00FCm butonlarda ilk t\u0131klama gecikmesi/ka\u00E7\u0131rmas\u0131 olu\u015Ftu.\r\n   Ana sebep: eski outside-click guard'lar\u0131n\u0131n yanl\u0131\u015Fl\u0131kla footer-overlay / shell alanlar\u0131n\u0131 modal sanmas\u0131.\r\n\r\n   BU FULL REPLACEMENT KARARI:\r\n   - Eski R18-R1/R2/R3/R4/R5 bloklar\u0131 bu dosyada YOKTUR.\r\n   - R17-R2 \u00FCst \u00F6neri kart\u0131 Sepete Ekle PASS/STABLE korunur.\r\n   - R18 tek konsolide temiz blok olarak uygulan\u0131r.\r\n\r\n   KAPSAM:\r\n   1) Neden Bu \u00DCr\u00FCn ve Setup modallar\u0131nda kompakt Sepete Ekle sat\u0131r\u0131.\r\n   2) Sepete ekleme sadece kullan\u0131c\u0131 t\u0131klamas\u0131yla.\r\n   3) Kaynak sadece aktif ger\u00E7ek .gdx-r11-modal -> product pool variant id.\r\n   4) Sticky bar yok.\r\n   5) R11 native \u00FCst X tek canonical \u00FCst kapatma kontrol\u00FCd\u00FCr; R18-R7 floating X \u00FCretilmez.\r\n   6) ESC sadece modal\u0131 kapat\u0131r; panel/landing'e d\u00F6nmez.\r\n   7) Modal d\u0131\u015F\u0131na t\u0131klay\u0131nca sadece modal kapan\u0131r.\r\n   8) Modal i\u00E7ine t\u0131klay\u0131nca kapanmaz.\r\n   9) Sepete ekleme sonras\u0131 modal i\u00E7i \"Sepeti G\u00F6r\" onay\u0131 + toast + cart count refresh attempt.\r\n   10) Setup modal\u0131 ve Neden Bu \u00DCr\u00FCn modal\u0131 ayn\u0131 davran\u0131r.\r\n\r\n   NO-TOUCH:\r\n   - Skor/ranking/\u00FCr\u00FCn havuzu/fiyat format\u0131/share/PNG/QR yok.\r\n   - Alt commerce index kullan\u0131lmaz.\r\n   - Commerce button click bridge yok.\r\n\r\n   TEST:\r\n   window.debugPanelV4R18R7CleanConsolidatedModalCartUx()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R18-R7-CLEAN-CONSOLIDATED-MODAL-CART-UX\";\r\n  var VERSION = \"PANEL-V4-R18-R7-CLEAN-CONSOLIDATED-MODAL-CART-UX-FULL-REPLACEMENT\";\r\n\r\n  if (window.__PANEL_V4_R18_R7_CLEAN_CONSOLIDATED_MODAL_CART_UX__) return;\r\n  window.__PANEL_V4_R18_R7_CLEAN_CONSOLIDATED_MODAL_CART_UX__ = true;\r\n\r\n  /* PANEL-V4-U7D1-CANONICAL-CUSTOMER-CONTEXT-COPY-PARITY-V1\r\n     CUSTOMER-FACING ONLY:\r\n     - R28 is canonical purpose/subpurpose display owner.\r\n     - six current R28 bridge keys repaired; legacy aliases remain lookup-compatible.\r\n     - \"DIY / Kendin Yap / Nas\u0131l Yap\u0131l\u0131r?\" canonical label.\r\n     - portable role copy widened to \"ta\u015F\u0131nabilir \u00E7ekim \u0131\u015F\u0131\u011F\u0131\".\r\n     - scoring/ranking/F-P/product/setup truth are untouched.\r\n  */\r\n  /* PANEL-V4-U7B1-SETUP-PURPOSE-CONTEXT-BAND-VISUAL-FIX-V1\r\n     U7B.1 visual/H refinement:\r\n     style injection is guaranteed on the setup path and the context band is\r\n     rendered as a restrained two-level information strip below the modal header.\r\n     Data ownership remains U7B purpose/subpurpose only.\r\n  */\r\n  /* PANEL-V4-U7B-SETUP-PURPOSE-CONTEXT-BAND-V1\r\n     Setup modal only:\r\n     - purchase/cart box is suppressed,\r\n     - no product/variant/price/stock data is read for this slot,\r\n     - the same visual slot is owned by current Purpose + Subpurpose.\r\n     Reason modal commerce remains unchanged. */\r\n\r\n  window.GDX_PANEL_V4_R30_R4_R1_READY = true;\r\n\r\n  window.GDX_PANEL_V4_R18_R7_REASON_COMMERCE_POLICY = Object.freeze({\r\n    version: \"CANFOTO-ETAP2-P2C-R6-R3.19-REASON-MODAL-COMMERCE-SOURCE-OFF-V1\",\r\n    reasonModalCommerce: \"OFF\",\r\n    setupModalCommerce: \"OFF\",\r\n    modalLifecyclePreserved: true,\r\n    top3ProductActionsPreserved: true\r\n  });\r\n\r\n  window.GDX_PANEL_V4_R30_R4_R1_CLOSE_OWNERSHIP_CONTRACT = {\r\n    phase: \"PANEL-V4-R30-R4-R1-SETUP-MODAL-SINGLE-TOP-CLOSE-OWNERSHIP-CONSOLIDATION-SOURCE-APPLICATION\",\r\n    version: \"PANEL-V4-R30-R4-R1-SETUP-MODAL-SINGLE-TOP-CLOSE-OWNERSHIP-CONSOLIDATION-V1\",\r\n    sourceOwner: \"assets/panel-led-v4.ui.js / R11 modalHtml() + R18-R7 consolidated modal cart UX\",\r\n    canonicalUpperCloseOwner: \"R11_NATIVE_MODAL_CLOSE\",\r\n    floatingUpperClose: \"RETIRED\",\r\n    bottomCloseOwner: \"R18_R8_R1_BOTTOM_CLOSE\",\r\n    backdropClose: \"PRESERVED\",\r\n    escapeClose: \"PRESERVED\",\r\n    outsideClickClose: \"PRESERVED\",\r\n    cartCommerceLogic: \"REASON_AND_SETUP_MODAL_SURFACES_OFF_TOP3_COMMERCE_UNCHANGED\",\r\n    newCloseListenerAdded: false,\r\n    newObserverAdded: false,\r\n    newTimerAdded: false\r\n  };\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function norm(v) {\r\n    return clean(v)\r\n      .toLocaleLowerCase(\"tr-TR\")\r\n      .replace(/[^\\p{L}\\p{N}]+/gu, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value || \"\").replace(/[&<>\"']/g, function (char) {\r\n      return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[char];\r\n    });\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n\r\n    var cls = clean(el.className || \"\");\r\n    if (/\\bhidden\\b/i.test(cls)) return false;\r\n    if (/footer-overlay/i.test(cls)) return false;\r\n\r\n    var st = window.getComputedStyle(el);\r\n    if (!st || st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0) return false;\r\n    if (st.pointerEvents === \"none\" && !/gdx-r11-modal/i.test(cls)) return false;\r\n\r\n    var r = el.getBoundingClientRect();\r\n    return r.width > 0 && r.height > 0;\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productNameLike(s) {\r\n    s = clean(s);\r\n    return /^(GDX|Godox)\\s+/i.test(s) && s.length >= 8 && s.length <= 120;\r\n  }\r\n\r\n  function productTitle(product) {\r\n    product = product || {};\r\n    return clean(product.smartTitle || product.smartShortTitle || product.displayTitle || product.shortTitle || product.title || product.name || \"\");\r\n  }\r\n\r\n  function productPriceText(product) {\r\n    product = product || {};\r\n    return clean(product.priceText || product.price_text || product.priceLabel || \"\");\r\n  }\r\n\r\n  function productKeys(product) {\r\n    product = product || {};\r\n    return [product.key, product.handle, product.id, product.product_id, product.title, product.shortTitle, product.smartTitle, product.smartShortTitle]\r\n      .map(clean).filter(Boolean);\r\n  }\r\n\r\n  function numericVariantIdFrom(value) {\r\n    value = clean(value);\r\n    if (!value) return \"\";\r\n    var m = value.match(/(\\d{8,})/);\r\n    return m ? m[1] : \"\";\r\n  }\r\n\r\n  function productVariantId(product) {\r\n    product = product || {};\r\n\r\n    var direct = [\r\n      product.variantId,\r\n      product.variant_id,\r\n      product.selectedVariantId,\r\n      product.firstVariantId,\r\n      product.firstAvailableVariantId,\r\n      product.defaultVariantId,\r\n      product.legacyVariantId\r\n    ].map(numericVariantIdFrom).find(Boolean);\r\n\r\n    if (direct) return direct;\r\n\r\n    var variants = Array.isArray(product.variants) ? product.variants : [];\r\n    for (var i = 0; i < variants.length; i += 1) {\r\n      var v = variants[i] || {};\r\n      var id = numericVariantIdFrom(v.id || v.variantId || v.admin_graphql_api_id || v.storefrontId || \"\");\r\n      if (id) return id;\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  function findCloseButton(modal) {\r\n    if (!modal) return null;\r\n\r\n    return qsa(\"button,a\", modal).find(function (btn) {\r\n      var t = clean(btn.textContent);\r\n      var aria = clean(btn.getAttribute(\"aria-label\"));\r\n      return t === \"\u00D7\" || /^KAPAT$/i.test(t) || /kapat|close|modal\u0131 kapat|modali kapat/i.test(aria);\r\n    }) || null;\r\n  }\r\n\r\n  function modalTextOk(modal) {\r\n    if (!modal) return false;\r\n    var txt = clean(modal.innerText);\r\n    return /Neden Bu \u00DCr\u00FCn|Kurulum|Kullan\u0131c\u0131 Profili|Ama\u00E7 Uyumu|Genel F\\/P|Rol Uyumu|Sat\u0131n alma|GDX|Godox/i.test(txt);\r\n  }\r\n\r\n  function activeModal() {\r\n    var list = qsa(\".gdx-r11-modal\", document.body)\r\n      .filter(visible)\r\n      .filter(function (el) {\r\n        return !!findCloseButton(el) && modalTextOk(el);\r\n      })\r\n      .map(function (el) {\r\n        var txt = clean(el.innerText);\r\n        var score = 0;\r\n\r\n        if (el.classList && el.classList.contains(\"gdx-r11-modal\")) score += 250;\r\n        if (findCloseButton(el)) score += 90;\r\n        if (/Neden Bu \u00DCr\u00FCn/i.test(txt)) score += 50;\r\n        if (/Setup/i.test(txt)) score += 50;\r\n        if (/GDX|Godox/i.test(txt)) score += 30;\r\n        if (/Sat\u0131n alma aksiyonu/i.test(txt)) score += 20;\r\n\r\n        var cls = clean(el.className || \"\");\r\n        var st = window.getComputedStyle(el);\r\n        var rect = el.getBoundingClientRect();\r\n\r\n        if (/footer-overlay|pointer-events-none/i.test(cls)) score -= 500;\r\n        if (st && st.pointerEvents === \"none\") score -= 300;\r\n        if (rect.width >= window.innerWidth * 0.985 && rect.height >= window.innerHeight * 0.985) score -= 120;\r\n\r\n        return { el: el, score: score };\r\n      })\r\n      .filter(function (x) { return x.score > 0; })\r\n      .sort(function (a, b) { return b.score - a.score; });\r\n\r\n    return list.length ? list[0].el : null;\r\n  }\r\n\r\n  function modalKey(modal) {\r\n    if (!modal) return \"\";\r\n\r\n    var keys = [\r\n      modal.getAttribute(\"data-gdx-r11-key\"),\r\n      modal.getAttribute(\"data-gdx-panel-product-key\"),\r\n      modal.getAttribute(\"data-product-key\")\r\n    ].map(clean).filter(Boolean);\r\n\r\n    qsa(\"[data-gdx-r11-key],[data-gdx-panel-product-key],[data-product-key]\", modal).forEach(function (el) {\r\n      [el.getAttribute(\"data-gdx-r11-key\"), el.getAttribute(\"data-gdx-panel-product-key\"), el.getAttribute(\"data-product-key\")]\r\n        .map(clean).filter(Boolean).forEach(function (x) { keys.push(x); });\r\n    });\r\n\r\n    return keys[0] || \"\";\r\n  }\r\n\r\n  function modalTitle(modal) {\r\n    if (!modal) return \"\";\r\n    var title = \"\";\r\n\r\n    qsa(\"h1,h2,h3,h4,b,strong,div,span,p\", modal).some(function (el) {\r\n      var t = clean(el.textContent);\r\n      if (productNameLike(t)) {\r\n        title = t;\r\n        return true;\r\n      }\r\n      return false;\r\n    });\r\n\r\n    return title;\r\n  }\r\n\r\n  function matchProduct(key, title) {\r\n    var products = productPool();\r\n    var keyValue = clean(key);\r\n    var titleNorm = norm(title);\r\n\r\n    if (keyValue) {\r\n      var byKey = products.find(function (p) {\r\n        return productKeys(p).some(function (k) { return norm(k) === norm(keyValue); });\r\n      });\r\n      if (byKey) return { product: byKey, method: \"exact-modal-key\" };\r\n    }\r\n\r\n    var byTitle = products.find(function (p) {\r\n      return norm(productTitle(p)) === titleNorm || norm(p.title) === titleNorm || norm(p.shortTitle) === titleNorm;\r\n    });\r\n    if (byTitle) return { product: byTitle, method: \"exact-title\" };\r\n\r\n    return { product: null, method: \"not-found\" };\r\n  }\r\n\r\n  function ensureStyle() {\r\n    var id = \"gdx-panel-v4-r18-r7-clean-modal-cart-ux-style\";\r\n    if (document.getElementById(id)) return;\r\n\r\n    var style = document.createElement(\"style\");\r\n    style.id = id;\r\n    style.textContent =\r\n      \"[data-gdx-panel-u7b-setup-purpose-band='1']{\" +\r\n        \"position:relative!important;\" +\r\n        \"box-sizing:border-box!important;\" +\r\n        \"width:100%!important;\" +\r\n        \"margin:14px 0 20px!important;\" +\r\n        \"border:1px solid rgba(45,212,191,.32)!important;\" +\r\n        \"border-radius:16px!important;\" +\r\n        \"background:linear-gradient(180deg,rgba(7,31,38,.78),rgba(3,20,27,.72))!important;\" +\r\n        \"display:grid!important;\" +\r\n        \"grid-template-columns:minmax(0,1fr) minmax(0,1.18fr)!important;\" +\r\n        \"align-items:stretch!important;\" +\r\n        \"overflow:hidden!important;\" +\r\n        \"box-shadow:inset 0 1px 0 rgba(255,255,255,.025)!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-u7b-setup-purpose-field='1']{\" +\r\n        \"box-sizing:border-box!important;\" +\r\n        \"min-width:0!important;\" +\r\n        \"display:flex!important;\" +\r\n        \"flex-direction:column!important;\" +\r\n        \"justify-content:center!important;\" +\r\n        \"gap:5px!important;\" +\r\n        \"min-height:68px!important;\" +\r\n        \"padding:11px 18px 12px!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-u7b-setup-purpose-field='1']+[data-gdx-panel-u7b-setup-purpose-field='1']{\" +\r\n        \"border-left:1px solid rgba(45,212,191,.18)!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-u7b-setup-purpose-label='1']{\" +\r\n        \"display:block!important;\" +\r\n        \"margin:0!important;\" +\r\n        \"font-size:10px!important;\" +\r\n        \"line-height:1.1!important;\" +\r\n        \"font-weight:900!important;\" +\r\n        \"letter-spacing:.13em!important;\" +\r\n        \"text-transform:uppercase!important;\" +\r\n        \"color:#5eead4!important;\" +\r\n        \"opacity:.92!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-u7b-setup-purpose-value='1']{\" +\r\n        \"display:block!important;\" +\r\n        \"min-width:0!important;\" +\r\n        \"margin:0!important;\" +\r\n        \"font-size:15px!important;\" +\r\n        \"line-height:1.28!important;\" +\r\n        \"font-weight:850!important;\" +\r\n        \"letter-spacing:-.012em!important;\" +\r\n        \"color:#f8fafc!important;\" +\r\n        \"overflow-wrap:anywhere!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r18-r7-cart='1']{\" +\r\n        \"position:relative!important;\" +\r\n        \"bottom:auto!important;\" +\r\n        \"left:auto!important;\" +\r\n        \"right:auto!important;\" +\r\n        \"z-index:1!important;\" +\r\n        \"transform:none!important;\" +\r\n        \"margin:12px 0 16px!important;\" +\r\n        \"padding:10px 12px!important;\" +\r\n        \"border:1px solid rgba(34,197,94,.28)!important;\" +\r\n        \"border-radius:14px!important;\" +\r\n        \"background:rgba(3,20,11,.52)!important;\" +\r\n        \"display:grid!important;\" +\r\n        \"grid-template-columns:minmax(0,1fr) auto!important;\" +\r\n        \"align-items:center!important;\" +\r\n        \"gap:10px!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r18-r7-cart-copy='1']{min-width:0!important;display:grid!important;gap:2px!important;}\" +\r\n      \"[data-gdx-panel-r18-r7-cart-title='1']{font-size:12px!important;line-height:1.2!important;font-weight:900!important;color:#d1fae5!important;letter-spacing:.02em!important;}\" +\r\n      \"[data-gdx-panel-r18-r7-cart-sub='1']{font-size:11px!important;line-height:1.25!important;font-weight:700!important;color:rgba(209,250,229,.68)!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;}\" +\r\n      \"[data-gdx-panel-r18-r7-cart-button='1']{\" +\r\n        \"appearance:none!important;\" +\r\n        \"border:1px solid rgba(34,197,94,.72)!important;\" +\r\n        \"background:linear-gradient(135deg,#22c55e,#16a34a)!important;\" +\r\n        \"color:#03140b!important;\" +\r\n        \"font-weight:900!important;\" +\r\n        \"border-radius:999px!important;\" +\r\n        \"padding:10px 16px!important;\" +\r\n        \"min-height:40px!important;\" +\r\n        \"min-width:142px!important;\" +\r\n        \"cursor:pointer!important;\" +\r\n        \"white-space:nowrap!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r18-r7-cart-button='1']:disabled{opacity:.82!important;cursor:default!important;}\" +\r\n      \"[data-gdx-panel-r18-r7-cart-status='1']{grid-column:1/-1!important;font-size:11px!important;font-weight:800!important;color:rgba(209,250,229,.72)!important;}\" +\r\n      \"[data-gdx-panel-r18-r7-confirm='1']{\" +\r\n        \"grid-column:1/-1!important;\" +\r\n        \"display:flex!important;\" +\r\n        \"align-items:center!important;\" +\r\n        \"justify-content:space-between!important;\" +\r\n        \"gap:10px!important;\" +\r\n        \"margin-top:6px!important;\" +\r\n        \"padding:8px 10px!important;\" +\r\n        \"border:1px solid rgba(34,197,94,.28)!important;\" +\r\n        \"border-radius:12px!important;\" +\r\n        \"background:rgba(34,197,94,.10)!important;\" +\r\n        \"color:#d1fae5!important;\" +\r\n        \"font-size:12px!important;\" +\r\n        \"font-weight:850!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r18-r7-confirm='1'] a{color:#03140b!important;background:#22c55e!important;border-radius:999px!important;padding:7px 12px!important;font-weight:950!important;text-decoration:none!important;white-space:nowrap!important;}\" +\r\n      \"[data-gdx-panel-r18-r7-toast='1']{\" +\r\n        \"position:fixed!important;\" +\r\n        \"right:24px!important;\" +\r\n        \"bottom:24px!important;\" +\r\n        \"z-index:2147482999!important;\" +\r\n        \"display:flex!important;\" +\r\n        \"align-items:center!important;\" +\r\n        \"gap:10px!important;\" +\r\n        \"background:rgba(3,20,11,.97)!important;\" +\r\n        \"color:#d1fae5!important;\" +\r\n        \"border:1px solid rgba(34,197,94,.36)!important;\" +\r\n        \"border-radius:16px!important;\" +\r\n        \"padding:12px 14px!important;\" +\r\n        \"font-size:13px!important;\" +\r\n        \"font-weight:900!important;\" +\r\n        \"box-shadow:0 18px 38px rgba(0,0,0,.35)!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r18-r7-toast='1'] a{color:#03140b!important;background:#22c55e!important;border-radius:999px!important;padding:7px 10px!important;font-weight:950!important;text-decoration:none!important;}\" +\r\n      \"@media(max-width:640px){\" +\r\n        \"[data-gdx-panel-u7b-setup-purpose-band='1']{grid-template-columns:1fr!important;margin:12px 0 16px!important;border-radius:14px!important;}\" +\r\n        \"[data-gdx-panel-u7b-setup-purpose-field='1']{min-height:0!important;padding:10px 13px 11px!important;gap:4px!important;}\" +\r\n        \"[data-gdx-panel-u7b-setup-purpose-field='1']+[data-gdx-panel-u7b-setup-purpose-field='1']{border-left:0!important;border-top:1px solid rgba(45,212,191,.16)!important;}\" +\r\n        \"[data-gdx-panel-u7b-setup-purpose-value='1']{font-size:13.5px!important;line-height:1.3!important;}\" +\r\n        \"[data-gdx-panel-r18-r7-cart='1']{grid-template-columns:1fr!important;}\" +\r\n        \"[data-gdx-panel-r18-r7-cart-button='1']{width:100%!important;}\" +\r\n        \"[data-gdx-panel-r18-r7-toast='1']{left:14px!important;right:14px!important;bottom:14px!important;justify-content:space-between!important;}\" +\r\n        \"[data-gdx-panel-r18-r7-confirm='1']{align-items:flex-start!important;flex-direction:column!important;}\" +\r\n      \"}\";\r\n\r\n    document.head.appendChild(style);\r\n  }\r\n\r\n  function addToCart(variantId, quantity) {\r\n    return fetch(\"/cart/add.js\", {\r\n      method: \"POST\",\r\n      credentials: \"same-origin\",\r\n      headers: { \"Content-Type\": \"application/json\", \"Accept\": \"application/json\" },\r\n      body: JSON.stringify({ id: Number(variantId), quantity: Number(quantity || 1) })\r\n    }).then(function (response) {\r\n      return response.json().catch(function () { return {}; }).then(function (json) {\r\n        if (!response.ok) throw new Error(clean(json && (json.description || json.message)) || \"Sepete ekleme ba\u015Far\u0131s\u0131z.\");\r\n        return json;\r\n      });\r\n    });\r\n  }\r\n\r\n  function fetchCart() {\r\n    return fetch(\"/cart.js\", { method: \"GET\", credentials: \"same-origin\", headers: { \"Accept\": \"application/json\" } })\r\n      .then(function (response) { return response.json(); });\r\n  }\r\n\r\n  function updateCartIndicators(cart) {\r\n    cart = cart || {};\r\n    var count = Number(cart.item_count || 0);\r\n    var changed = 0;\r\n\r\n    [\r\n      \"[data-cart-count]\",\r\n      \"[data-header-cart-count]\",\r\n      \"[data-cart-count-bubble]\",\r\n      \"[data-cart-items-count]\",\r\n      \"[data-cart-item-count]\",\r\n      \"[data-cart-bubble]\",\r\n      \"[data-cart-count-text]\",\r\n      \"[data-cart-count-number]\",\r\n      \".cart-count\",\r\n      \".cart-count-bubble\",\r\n      \".cart-count-bubble span\",\r\n      \".cart-count-bubble .count\",\r\n      \".cart-link__bubble\",\r\n      \".cart-link__count\",\r\n      \".header-cart-count\",\r\n      \".header__cart-count\",\r\n      \".header__icon--cart .count\",\r\n      \".header__icon--cart .cart-count\",\r\n      \".header__icon--cart .cart-count-bubble span\",\r\n      \"#cart-icon-bubble .cart-count-bubble span\",\r\n      \"#cart-icon-bubble .cart-count-bubble\",\r\n      \"a[href='/cart'] .count\",\r\n      \"a[href*='/cart'] .count\",\r\n      \"a[href*='/cart'] [class*='count']\",\r\n      \"a[href*='/cart'] [data-count]\"\r\n    ].forEach(function (sel) {\r\n      try {\r\n        qsa(sel).forEach(function (el) {\r\n          if (!el || /visually-hidden/i.test(clean(el.className || \"\"))) return;\r\n          var tag = String(el.tagName || \"\").toLowerCase();\r\n          if (tag === \"svg\" || tag === \"path\") return;\r\n          if (el.children && el.children.length > 2 && !/count|bubble|cart/i.test(clean(el.className || \"\") + \" \" + clean(el.id || \"\"))) return;\r\n          el.textContent = String(count);\r\n          el.removeAttribute(\"hidden\");\r\n          el.setAttribute(\"aria-hidden\", \"false\");\r\n          el.setAttribute(\"data-gdx-panel-r18-r7-cart-count-updated\", \"1\");\r\n          changed++;\r\n        });\r\n      } catch (e) {}\r\n    });\r\n\r\n    qsa(\".cart-count-bubble,#cart-icon-bubble .cart-count-bubble,[data-cart-count-bubble],[data-cart-bubble]\").forEach(function (el) {\r\n      el.removeAttribute(\"hidden\");\r\n      el.style.display = \"\";\r\n      el.style.visibility = \"visible\";\r\n      el.setAttribute(\"data-gdx-panel-r18-r7-cart-bubble-visible\", \"1\");\r\n    });\r\n\r\n    try {\r\n      document.dispatchEvent(new CustomEvent(\"cart:updated\", { detail: { cart: cart } }));\r\n      document.dispatchEvent(new CustomEvent(\"cart:refresh\", { detail: { cart: cart } }));\r\n      document.dispatchEvent(new CustomEvent(\"cart:change\", { detail: { cart: cart } }));\r\n      document.dispatchEvent(new CustomEvent(\"theme:cart:change\", { detail: { cart: cart } }));\r\n      document.dispatchEvent(new CustomEvent(\"ajaxProduct:added\", { detail: { cart: cart } }));\r\n      window.dispatchEvent(new CustomEvent(\"cart:updated\", { detail: { cart: cart } }));\r\n      window.dispatchEvent(new CustomEvent(\"cart:refresh\", { detail: { cart: cart } }));\r\n      window.dispatchEvent(new CustomEvent(\"cart:change\", { detail: { cart: cart } }));\r\n    } catch (e) {}\r\n\r\n    return changed;\r\n  }\r\n\r\n  function showToast(cart) {\r\n    ensureStyle();\r\n\r\n    var old = document.querySelector(\"[data-gdx-panel-r18-r7-toast='1']\");\r\n    if (old && old.parentNode) old.parentNode.removeChild(old);\r\n\r\n    var toast = document.createElement(\"div\");\r\n    toast.setAttribute(\"data-gdx-panel-r18-r7-toast\", \"1\");\r\n\r\n    var count = Number(cart && cart.item_count || 0);\r\n    toast.innerHTML =\r\n      '<span>Sepete eklendi' + (count ? ' \u00B7 ' + count + ' \u00FCr\u00FCn' : '') + '</span>' +\r\n      '<a href=\"/cart\">Sepeti G\u00F6r</a>';\r\n\r\n    document.body.appendChild(toast);\r\n\r\n    window.setTimeout(function () {\r\n      if (toast && toast.parentNode) toast.parentNode.removeChild(toast);\r\n    }, 4200);\r\n  }\r\n\r\n  function setupPurposeContext(modal) {\r\n    var selection = window.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n    var purposeTitle = clean(selection.activePurposeTitle || \"\");\r\n    var subPurposeTitle = clean(selection.activeSubPurposeTitle || \"\");\r\n\r\n    if ((!purposeTitle || !subPurposeTitle) && modal) {\r\n      var headNode = modal.querySelector(\".gdx-r11-modal-head p\");\r\n      var headText = clean(headNode && headNode.textContent);\r\n      if (headText) {\r\n        var parts = headText.split(\"\u00B7\").map(clean).filter(Boolean);\r\n        if (!purposeTitle && parts[0]) purposeTitle = parts[0];\r\n        if (!subPurposeTitle && parts[1]) subPurposeTitle = parts[1];\r\n      }\r\n    }\r\n\r\n    return {\r\n      purposeTitle: purposeTitle || \"Se\u00E7ili kullan\u0131m amac\u0131\",\r\n      subPurposeTitle: subPurposeTitle || \"Se\u00E7ili alt ama\u00E7\"\r\n    };\r\n  }\r\n\r\n  function setupPurposeBandHtml(context) {\r\n    context = context || {};\r\n    return '' +\r\n      '<div data-gdx-panel-u7b-setup-purpose-band=\"1\" aria-label=\"Se\u00E7ili ama\u00E7 ve alt ama\u00E7\">' +\r\n        '<div data-gdx-panel-u7b-setup-purpose-field=\"1\" data-field=\"purpose\">' +\r\n          '<span data-gdx-panel-u7b-setup-purpose-label=\"1\">AMA\u00C7</span>' +\r\n          '<strong data-gdx-panel-u7b-setup-purpose-value=\"1\">' + escapeHtml(context.purposeTitle || \"Se\u00E7ili kullan\u0131m amac\u0131\") + '</strong>' +\r\n        '</div>' +\r\n        '<div data-gdx-panel-u7b-setup-purpose-field=\"1\" data-field=\"subpurpose\">' +\r\n          '<span data-gdx-panel-u7b-setup-purpose-label=\"1\">ALT AMA\u00C7</span>' +\r\n          '<strong data-gdx-panel-u7b-setup-purpose-value=\"1\">' + escapeHtml(context.subPurposeTitle || \"Se\u00E7ili alt ama\u00E7\") + '</strong>' +\r\n        '</div>' +\r\n      '</div>';\r\n  }\r\n\r\n  function insertOrUpdateSetupPurposeBand(modal) {\r\n    if (!modal) return false;\r\n\r\n    /* U7B.1 \u2014 setup path must own its style injection too.\r\n       U7B data binding was correct; the missing ensureStyle() left the band unstyled. */\r\n    ensureStyle();\r\n\r\n    /* Setup slot is explicitly non-commerce. Remove any prior purchase UI remnants. */\r\n    qsa(\r\n      \"[data-gdx-panel-r18-r7-cart='1'],\" +\r\n      \"[data-gdx-panel-r18-modal-purchase-nav='1'],\" +\r\n      \"[data-gdx-panel-r18-r2-inline-cart='1'],\" +\r\n      \"[data-gdx-panel-r18-r3-compact-cart='1']\",\r\n      modal\r\n    ).forEach(function (old) {\r\n      if (old && old.parentNode) old.parentNode.removeChild(old);\r\n    });\r\n\r\n    var context = setupPurposeContext(modal);\r\n    var existing = modal.querySelector(\"[data-gdx-panel-u7b-setup-purpose-band='1']\");\r\n    if (existing) {\r\n      var purposeValue = existing.querySelector('[data-field=\"purpose\"] [data-gdx-panel-u7b-setup-purpose-value=\"1\"]');\r\n      var subValue = existing.querySelector('[data-field=\"subpurpose\"] [data-gdx-panel-u7b-setup-purpose-value=\"1\"]');\r\n      if (purposeValue) purposeValue.textContent = context.purposeTitle;\r\n      if (subValue) subValue.textContent = context.subPurposeTitle;\r\n      return false;\r\n    }\r\n\r\n    var wrap = document.createElement(\"div\");\r\n    wrap.innerHTML = setupPurposeBandHtml(context);\r\n    var next = wrap.firstChild;\r\n\r\n    var head = modal.querySelector(\".gdx-r11-modal-head\");\r\n    if (head) {\r\n      head.insertAdjacentElement(\"afterend\", next);\r\n    } else {\r\n      var panel = modal.querySelector(\".gdx-r11-modal-panel\") || modal;\r\n      panel.insertAdjacentElement(\"afterbegin\", next);\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function cartHtml(product, variantId) {\r\n    var title = productTitle(product);\r\n    var price = productPriceText(product);\r\n    var sub = [title, price].filter(Boolean).join(\" \u00B7 \");\r\n\r\n    return '' +\r\n      '<div data-gdx-panel-r18-r7-cart=\"1\" data-gdx-panel-product-key=\"' + escapeHtml(product.key || \"\") + '\" data-gdx-panel-variant-id=\"' + escapeHtml(variantId) + '\">' +\r\n        '<div data-gdx-panel-r18-r7-cart-copy=\"1\">' +\r\n          '<span data-gdx-panel-r18-r7-cart-title=\"1\">Sat\u0131n alma</span>' +\r\n          '<span data-gdx-panel-r18-r7-cart-sub=\"1\">' + escapeHtml(sub || \"\u00DCr\u00FCn sepete eklenebilir\") + '</span>' +\r\n        '</div>' +\r\n        '<button type=\"button\" data-gdx-panel-r18-r7-cart-button=\"1\" data-gdx-panel-product-key=\"' + escapeHtml(product.key || \"\") + '\" data-gdx-panel-variant-id=\"' + escapeHtml(variantId) + '\">Sepete Ekle</button>' +\r\n        '' +\r\n      '</div>';\r\n  }\r\n\r\n  function wireCartButton(button, product, variantId) {\r\n    if (!button || button.getAttribute(\"data-gdx-panel-r18-r7-bound\") === \"1\") return;\r\n    button.setAttribute(\"data-gdx-panel-r18-r7-bound\", \"1\");\r\n\r\n    button.addEventListener(\"click\", function (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n\r\n      var box = button.closest(\"[data-gdx-panel-r18-r7-cart='1']\");\r\n      var statusEl = box ? box.querySelector(\"[data-gdx-panel-r18-r7-cart-status='1']\") : null;\r\n      var oldText = clean(button.textContent) || \"Sepete Ekle\";\r\n\r\n      button.disabled = true;\r\n      button.textContent = \"Ekleniyor...\";\r\n      if (statusEl) statusEl.textContent = \"Sepete ekleniyor.\";\r\n\r\n      addToCart(variantId, 1).then(function (json) {\r\n        return fetchCart().then(function (cart) {\r\n          var updatedCount = updateCartIndicators(cart);\r\n          var count = Number(cart && cart.item_count || 0);\r\n\r\n          if (box && !box.querySelector(\"[data-gdx-panel-r18-r7-confirm='1']\")) {\r\n            var confirm = document.createElement(\"div\");\r\n            confirm.setAttribute(\"data-gdx-panel-r18-r7-confirm\", \"1\");\r\n            box.appendChild(confirm);\r\n          }\r\n\r\n          var confirmEl = box ? box.querySelector(\"[data-gdx-panel-r18-r7-confirm='1']\") : null;\r\n          if (confirmEl) {\r\n            confirmEl.innerHTML =\r\n              '<span>Sepet g\u00FCncellendi' + (count ? ' \u00B7 ' + count + ' \u00FCr\u00FCn' : '') + '</span>' +\r\n              '<a href=\"/cart\">Sepeti G\u00F6r</a>';\r\n          }\r\n\r\n          button.textContent = \"Sepete Eklendi \u2713\";\r\n          if (statusEl) statusEl.textContent = \"Sepet g\u00FCncellendi.\";\r\n          showToast(cart);\r\n\r\n          window.__PANEL_V4_R18_R7_LAST_MODAL_CART_ADD__ = {\r\n            status: \"success\",\r\n            variantId: String(variantId),\r\n            productTitle: productTitle(product),\r\n            productKey: clean(product.key || \"\"),\r\n            responseTitle: clean(json && json.title),\r\n            cartItemCount: count,\r\n            cartIndicatorUpdatedCount: updatedCount\r\n          };\r\n        });\r\n      }).catch(function (error) {\r\n        window.__PANEL_V4_R18_R7_LAST_MODAL_CART_ADD__ = {\r\n          status: \"error\",\r\n          variantId: String(variantId),\r\n          productTitle: productTitle(product),\r\n          productKey: clean(product.key || \"\"),\r\n          error: clean(error && error.message)\r\n        };\r\n\r\n        button.disabled = false;\r\n        button.textContent = oldText;\r\n        if (statusEl) statusEl.textContent = \"Sepete ekleme ba\u015Far\u0131s\u0131z: \" + clean(error && error.message);\r\n      });\r\n    });\r\n  }\r\n\r\n  function insertOrUpdateCart(modal, product, variantId) {\r\n    ensureStyle();\r\n\r\n    var existing = modal.querySelector(\"[data-gdx-panel-r18-r7-cart='1']\");\r\n    if (existing) {\r\n      wireCartButton(existing.querySelector(\"[data-gdx-panel-r18-r7-cart-button='1']\"), product, variantId);\r\n      return false;\r\n    }\r\n\r\n    /*\r\n      \u00D6nceki R18 append kal\u0131nt\u0131s\u0131 varsa temizle.\r\n      Bu full replacement i\u00E7inde zaten yok, ama cache/partial durumlar\u0131na kar\u015F\u0131 g\u00FCvenli.\r\n    */\r\n    qsa(\"[data-gdx-panel-r18-modal-purchase-nav='1'],[data-gdx-panel-r18-r2-inline-cart='1'],[data-gdx-panel-r18-r3-compact-cart='1']\", modal).forEach(function (old) {\r\n      if (old && old.parentNode) old.parentNode.removeChild(old);\r\n    });\r\n\r\n    var wrap = document.createElement(\"div\");\r\n    wrap.innerHTML = cartHtml(product, variantId);\r\n    var next = wrap.firstChild;\r\n\r\n    var h = qsa(\"h1,h2,h3,h4,b,strong\", modal).find(function (el) {\r\n      return productNameLike(clean(el.textContent));\r\n    });\r\n\r\n    if (h && h.parentNode) {\r\n      h.parentNode.insertAdjacentElement(\"afterend\", next);\r\n    } else {\r\n      modal.insertAdjacentElement(\"afterbegin\", next);\r\n    }\r\n\r\n    wireCartButton(next.querySelector(\"[data-gdx-panel-r18-r7-cart-button='1']\"), product, variantId);\r\n    return true;\r\n  }\r\n\r\n  function apply() {\r\n    var modal = activeModal();\r\n    if (!modal) return 0;\r\n\r\n    var modalType = clean(modal.getAttribute(\"data-gdx-r11-modal-type\")).toLowerCase();\r\n    var changed = 0;\r\n\r\n    if (modalType === \"setup\") {\r\n      changed += insertOrUpdateSetupPurposeBand(modal) ? 1 : 0;\r\n      return changed;\r\n    }\r\n\r\n    /* R3.19 \u2014 REASON MODAL COMMERCE SOURCE-OFF\r\n       \"Neden Bu \u00DCr\u00FCn?\" karar y\u00FCzeyi sat\u0131n alma/cart y\u00FCzeyi de\u011Fildir.\r\n       R18 modal lifecycle / close guards korunur; reason modal i\u00E7inde eski\r\n       purchase/cart kal\u0131nt\u0131lar\u0131 temizlenir ve tekrar monte edilmez. */\r\n    qsa(\r\n      \"[data-gdx-panel-r18-r7-cart='1'],\" +\r\n      \"[data-gdx-panel-r18-modal-purchase-nav='1'],\" +\r\n      \"[data-gdx-panel-r18-r2-inline-cart='1'],\" +\r\n      \"[data-gdx-panel-r18-r3-compact-cart='1']\",\r\n      modal\r\n    ).forEach(function (old) {\r\n      if (old && old.parentNode) {\r\n        old.parentNode.removeChild(old);\r\n        changed += 1;\r\n      }\r\n    });\r\n\r\n    modal.setAttribute(\r\n      \"data-gdx-panel-r18-r7-reason-commerce\",\r\n      \"off\"\r\n    );\r\n\r\n    return changed;\r\n  }\r\n\r\n  function closeModalOnly(reason) {\r\n    var modal = activeModal();\r\n    if (!modal) return false;\r\n\r\n    var close = findCloseButton(modal);\r\n    if (!close) return false;\r\n\r\n    window.__PANEL_V4_R18_R7_LAST_CLOSE__ = {\r\n      status: \"closed\",\r\n      reason: clean(reason || \"unknown\"),\r\n      at: new Date().toISOString()\r\n    };\r\n\r\n    close.click();\r\n    return true;\r\n  }\r\n\r\n  function pointFromEvent(event) {\r\n    if (!event) return null;\r\n\r\n    if (event.touches && event.touches.length) {\r\n      return { x: event.touches[0].clientX, y: event.touches[0].clientY };\r\n    }\r\n\r\n    if (event.changedTouches && event.changedTouches.length) {\r\n      return { x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY };\r\n    }\r\n\r\n    if (typeof event.clientX === \"number\" && typeof event.clientY === \"number\") {\r\n      return { x: event.clientX, y: event.clientY };\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function pointInside(el, point) {\r\n    if (!el || !point) return true;\r\n    var rect = el.getBoundingClientRect();\r\n\r\n    return point.x >= rect.left && point.x <= rect.right && point.y >= rect.top && point.y <= rect.bottom;\r\n  }\r\n\r\n  function interactiveException(target) {\r\n    if (!target || !target.closest) return false;\r\n\r\n    return !!target.closest(\r\n      \"[data-gdx-panel-r18-r7-cart-button='1'],\" +\r\n      \"[data-gdx-panel-r18-r7-toast='1'],\" +\r\n      \"[data-gdx-panel-r18-r7-confirm='1'],\" +\r\n      \"a[href='/cart']\"\r\n    );\r\n  }\r\n\r\n  function guardOutside(event) {\r\n    var modal = activeModal();\r\n    if (!modal || !event) return;\r\n\r\n    var target = event.target;\r\n    var point = pointFromEvent(event);\r\n\r\n    if (interactiveException(target)) return;\r\n    if (pointInside(modal, point)) return;\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (typeof event.stopImmediatePropagation === \"function\") event.stopImmediatePropagation();\r\n\r\n    closeModalOnly(\"outside-click-r18-r7\");\r\n  }\r\n\r\n  function guardEsc(event) {\r\n    if (!event || event.key !== \"Escape\") return;\r\n\r\n    var modal = activeModal();\r\n    if (!modal) return;\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (typeof event.stopImmediatePropagation === \"function\") event.stopImmediatePropagation();\r\n\r\n    closeModalOnly(\"escape-modal-only-r18-r7\");\r\n  }\r\n\r\n  window.addEventListener(\"keydown\", guardEsc, true);\r\n  window.addEventListener(\"pointerdown\", guardOutside, true);\r\n  window.addEventListener(\"mousedown\", guardOutside, true);\r\n  window.addEventListener(\"click\", guardOutside, true);\r\n  window.addEventListener(\"touchstart\", guardOutside, true);\r\n\r\n  apply();\r\n\r\n  var scheduled = false;\r\n  var observer = new MutationObserver(function () {\r\n    if (scheduled) return;\r\n    scheduled = true;\r\n\r\n    requestAnimationFrame(function () {\r\n      scheduled = false;\r\n      apply();\r\n    });\r\n  });\r\n\r\n  if (document.body) {\r\n    observer.observe(document.body, { childList: true, subtree: true });\r\n  }\r\n\r\n  function diagnostics() {\r\n    var modal = activeModal();\r\n    var key = modalKey(modal);\r\n    var title = modalTitle(modal);\r\n    var match = matchProduct(key, title);\r\n    var product = match.product || {};\r\n    var variantId = productVariantId(product);\r\n    var rect = modal ? modal.getBoundingClientRect() : null;\r\n\r\n    var modalType = clean(modal && modal.getAttribute(\"data-gdx-r11-modal-type\")).toLowerCase();\r\n    var cartBox = modal ? modal.querySelector(\"[data-gdx-panel-r18-r7-cart='1']\") : null;\r\n    var button = modal ? modal.querySelector(\"[data-gdx-panel-r18-r7-cart-button='1']\") : null;\r\n    var setupPurposeBand = modal ? modal.querySelector(\"[data-gdx-panel-u7b-setup-purpose-band='1']\") : null;\r\n    var setupPurposeFields = setupPurposeBand ? qsa(\"[data-gdx-panel-u7b-setup-purpose-field='1']\", setupPurposeBand) : [];\r\n    var nativeTopCloseCount = modal\r\n      ? qsa(\".gdx-r11-modal-close[data-gdx-r11-action='close-modal']\", modal).length\r\n      : 0;\r\n    var bottomClose = modal\r\n      ? modal.querySelector(\"[data-gdx-panel-r18-r8-r1-bottom-close='1']\")\r\n      : null;\r\n    var floater = modal ? modal.querySelector(\"[data-gdx-panel-r18-r7-floating-close='1']\") : null;\r\n    var style = document.getElementById(\"gdx-panel-v4-r18-r7-clean-modal-cart-ux-style\");\r\n    var styleText = clean(style && style.textContent);\r\n\r\n    return {\r\n      productPoolCount: productPool().length,\r\n      modalOpen: !!modal,\r\n      modalType: modalType,\r\n      modalTitle: title,\r\n      modalKey: key,\r\n      matched: !!match.product,\r\n      matchMethod: match.method,\r\n      matchedProductTitle: productTitle(product),\r\n      matchedProductKey: clean(product.key || \"\"),\r\n      matchedVariantId: variantId,\r\n      closeButtonExists: !!findCloseButton(modal),\r\n      compactCartExists: !!cartBox,\r\n      compactCartButtonExists: !!button,\r\n      setupPurposeBandExists: !!setupPurposeBand,\r\n      setupPurposeFieldCount: setupPurposeFields.length,\r\n      buttonVariantId: clean(button && button.getAttribute(\"data-gdx-panel-variant-id\")),\r\n      nativeTopCloseCount: nativeTopCloseCount,\r\n      bottomCloseExists: !!bottomClose,\r\n      floatingCloseExists: !!floater,\r\n      floatingClosePosition: floater ? window.getComputedStyle(floater).position : \"\",\r\n      floatingCloseStyleExists: styleText.indexOf(\"data-gdx-panel-r18-r7-floating-close\") > -1,\r\n      rect: rect ? {\r\n        left: Math.round(rect.left),\r\n        top: Math.round(rect.top),\r\n        right: Math.round(rect.right),\r\n        bottom: Math.round(rect.bottom),\r\n        width: Math.round(rect.width),\r\n        height: Math.round(rect.height)\r\n      } : null,\r\n      wrongFooterOverlaySelected: !!(modal && /footer-overlay/i.test(clean(modal.className || \"\"))),\r\n      oldR18BlockCount: modal ? qsa(\"[data-gdx-panel-r18-modal-purchase-nav='1'],[data-gdx-panel-r18-r2-inline-cart='1'],[data-gdx-panel-r18-r3-compact-cart='1']\", modal).length : 0,\r\n      updatedCartIndicatorCount: qsa(\"[data-gdx-panel-r18-r7-cart-count-updated='1']\").length,\r\n      lastClose: window.__PANEL_V4_R18_R7_LAST_CLOSE__ || null,\r\n      lastModalCartAdd: window.__PANEL_V4_R18_R7_LAST_MODAL_CART_ADD__ || null,\r\n      r17R2StillReady: typeof window.debugPanelV4R17R2TopCardDirectVariantAddToCart === \"function\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R18R7CleanConsolidatedModalCartUx = function () {\r\n    var changedNow = apply();\r\n    var d = diagnostics();\r\n\r\n    var modalContentPolicyOk =\r\n      d.modalType === \"setup\"\r\n        ? (\r\n            d.setupPurposeBandExists &&\r\n            d.setupPurposeFieldCount === 2 &&\r\n            d.compactCartExists === false &&\r\n            d.compactCartButtonExists === false\r\n          )\r\n        : (\r\n            d.compactCartExists === false &&\r\n            d.compactCartButtonExists === false &&\r\n            !!(activeModal() && activeModal().getAttribute(\"data-gdx-panel-r18-r7-reason-commerce\") === \"off\")\r\n          );\r\n\r\n    var ok =\r\n      d.productPoolCount >= 10 &&\r\n      d.modalOpen &&\r\n      d.closeButtonExists &&\r\n      modalContentPolicyOk &&\r\n      d.nativeTopCloseCount === 1 &&\r\n      d.floatingCloseExists === false &&\r\n      d.floatingCloseStyleExists === false &&\r\n      d.wrongFooterOverlaySelected === false &&\r\n      d.r17R2StillReady === true;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      changedNow: changedNow,\r\n      diagnostics: d,\r\n      cartWriteOnlyOnUserClick: true,\r\n      escModalOnly: true,\r\n      outsideClickPreciseGdxR11ModalOnly: true,\r\n      modalInnerClickDoesNotClose: true,\r\n      singleNativeTopClose: true,\r\n      floatingUpperCloseRetired: true,\r\n      noStickyBar: true,\r\n      noBottomCommerceIndexDependency: true,\r\n      noCommerceButtonClickBridge: true,\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noProductMutation: true,\r\n      noPriceFormatterTouch: true,\r\n      noSharePngQrMutation: true,\r\n      setupModalCommerceRemoved: d.modalType === \"setup\",\r\n      setupModalPurposeContextOnly: d.modalType === \"setup\",\r\n      reasonModalCommerceSourceOff: d.modalType !== \"setup\",\r\n      reasonModalCommercePolicy: \"CANFOTO-ETAP2-P2C-R6-R3.19-REASON-MODAL-COMMERCE-SOURCE-OFF-V1\",\r\n      sealCandidate: ok ? \"CANFOTO-ETAP2-P2C-R6-R3.19-REASON-MODAL-COMMERCE-SOURCE-OFF-PHYSICAL-QA-CANDIDATE\" : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n\r\n/* PANEL-V4-R18-R8-R1-MODAL-BOTTOM-CLOSE-VISIBLE-MOUNT-FIX\r\n   AMA\u00C7:\r\n   R18-R8 sonras\u0131 kullan\u0131c\u0131 \"modal en alt\u0131nda Kapat butonu yok\" dedi.\r\n   Muhtemel sebep: buton .gdx-r11-modal d\u0131\u015F kabu\u011Funa eklendi ama ger\u00E7ek scroll/content mount i\u00E7ine d\u00FC\u015Fmedi.\r\n\r\n   R18-R8-R1 KARARI:\r\n   - Kapat butonu ger\u00E7ek modal i\u00E7erik/scroll alan\u0131na eklenir.\r\n   - Eski R18-R8 butonu varsa g\u00F6r\u00FCn\u00FCr content mount i\u00E7ine ta\u015F\u0131n\u0131r.\r\n   - Setup ve Neden Bu \u00DCr\u00FCn modallar\u0131nda \u00E7al\u0131\u015F\u0131r.\r\n   - Sepete Ekle, R11 native \u00FCst X ve ESC davran\u0131\u015F\u0131 korunur.\r\n   - Cart logic yoktur.\r\n\r\n   UYGULAMA:\r\n   assets/panel-led-v4.ui.js dosyas\u0131n\u0131n EN ALTINA append-only ekle.\r\n\r\n   TEST:\r\n   window.debugPanelV4R18R8R1ModalBottomCloseVisibleMountFix()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R18-R8-R1-MODAL-BOTTOM-CLOSE-VISIBLE-MOUNT-FIX\";\r\n  var VERSION = \"PANEL-V4-R18-R8-R1-MODAL-BOTTOM-CLOSE-VISIBLE-MOUNT-FIX-APPEND-ONLY\";\r\n\r\n  if (window.__PANEL_V4_R18_R8_R1_MODAL_BOTTOM_CLOSE_VISIBLE_MOUNT__) return;\r\n  window.__PANEL_V4_R18_R8_R1_MODAL_BOTTOM_CLOSE_VISIBLE_MOUNT__ = true;\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n\r\n    var cls = clean(el.className || \"\");\r\n    if (/\\bhidden\\b/i.test(cls)) return false;\r\n    if (/footer-overlay/i.test(cls)) return false;\r\n\r\n    var st = window.getComputedStyle(el);\r\n    if (!st || st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0) return false;\r\n    if (st.pointerEvents === \"none\" && !/gdx-r11-modal/i.test(cls)) return false;\r\n\r\n    var r = el.getBoundingClientRect();\r\n    return r.width > 0 && r.height > 0;\r\n  }\r\n\r\n  function findCloseButton(modal) {\r\n    if (!modal) return null;\r\n\r\n    return qsa(\"button,a\", modal).find(function (btn) {\r\n      var t = clean(btn.textContent);\r\n      var aria = clean(btn.getAttribute(\"aria-label\"));\r\n      return t === \"\u00D7\" || /^KAPAT$/i.test(t) || /kapat|close|modal\u0131 kapat|modali kapat/i.test(aria);\r\n    }) || null;\r\n  }\r\n\r\n  function modalTextOk(modal) {\r\n    if (!modal) return false;\r\n    var txt = clean(modal.innerText);\r\n    return /Neden Bu \u00DCr\u00FCn|Kurulum|Kullan\u0131c\u0131 Profili|Ama\u00E7 Uyumu|Genel F\\/P|Rol Uyumu|Sat\u0131n alma|GDX|Godox/i.test(txt);\r\n  }\r\n\r\n  function activeModal() {\r\n    var list = qsa(\".gdx-r11-modal\", document.body)\r\n      .filter(visible)\r\n      .filter(function (el) {\r\n        return !!findCloseButton(el) && modalTextOk(el);\r\n      })\r\n      .map(function (el) {\r\n        var txt = clean(el.innerText);\r\n        var cls = clean(el.className || \"\");\r\n        var st = window.getComputedStyle(el);\r\n        var rect = el.getBoundingClientRect();\r\n        var score = 0;\r\n\r\n        if (el.classList && el.classList.contains(\"gdx-r11-modal\")) score += 250;\r\n        if (findCloseButton(el)) score += 90;\r\n        if (/Neden Bu \u00DCr\u00FCn/i.test(txt)) score += 50;\r\n        if (/Setup/i.test(txt)) score += 50;\r\n        if (/GDX|Godox/i.test(txt)) score += 30;\r\n        if (/Sat\u0131n alma aksiyonu/i.test(txt)) score += 20;\r\n\r\n        if (/footer-overlay|pointer-events-none/i.test(cls)) score -= 500;\r\n        if (st && st.pointerEvents === \"none\") score -= 300;\r\n        if (rect.width >= window.innerWidth * 0.985 && rect.height >= window.innerHeight * 0.985) score -= 120;\r\n\r\n        return { el: el, score: score };\r\n      })\r\n      .filter(function (x) { return x.score > 0; })\r\n      .sort(function (a, b) { return b.score - a.score; });\r\n\r\n    return list.length ? list[0].el : null;\r\n  }\r\n\r\n  function ensureStyle() {\r\n    var id = \"gdx-panel-v4-r18-r8-r1-modal-bottom-close-visible-style\";\r\n    if (document.getElementById(id)) return;\r\n\r\n    var style = document.createElement(\"style\");\r\n    style.id = id;\r\n    style.textContent =\r\n      \"[data-gdx-panel-r18-r8-r1-bottom-close-wrap='1']{\" +\r\n        \"position:relative!important;\" +\r\n        \"display:grid!important;\" +\r\n        \"gap:8px!important;\" +\r\n        \"margin:24px 0 10px!important;\" +\r\n        \"padding:16px 0 2px!important;\" +\r\n        \"border-top:1px solid rgba(255,255,255,.12)!important;\" +\r\n        \"clear:both!important;\" +\r\n        \"width:100%!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r18-r8-r1-bottom-close='1']{\" +\r\n        \"appearance:none!important;\" +\r\n        \"width:100%!important;\" +\r\n        \"min-height:48px!important;\" +\r\n        \"border-radius:999px!important;\" +\r\n        \"border:1px solid rgba(255,255,255,.20)!important;\" +\r\n        \"background:rgba(15,23,42,.94)!important;\" +\r\n        \"color:#fff!important;\" +\r\n        \"font-size:13px!important;\" +\r\n        \"font-weight:950!important;\" +\r\n        \"letter-spacing:.02em!important;\" +\r\n        \"cursor:pointer!important;\" +\r\n        \"box-shadow:0 10px 24px rgba(0,0,0,.22)!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r18-r8-r1-bottom-close='1']:hover{\" +\r\n        \"background:rgba(30,41,59,.98)!important;\" +\r\n      \"}\" +\r\n      \"\";\r\n\r\n    document.head.appendChild(style);\r\n  }\r\n\r\n  function textScore(el) {\r\n    var txt = clean(el && el.innerText);\r\n    var score = 0;\r\n\r\n    if (/Neden Bu \u00DCr\u00FCn|Setup/i.test(txt)) score += 30;\r\n    if (/Kullan\u0131c\u0131 Profili|Ama\u00E7 Uyumu|F\\/P \u00D6neri|Rol Kan\u0131t\u0131/i.test(txt)) score += 25;\r\n    if (/Sat\u0131n alma aksiyonu|Sepete Ekle|Sepeti G\u00F6r/i.test(txt)) score += 20;\r\n    if (/GDX|Godox/i.test(txt)) score += 15;\r\n    if (txt.length > 500) score += 20;\r\n    if (txt.length > 1500) score += 20;\r\n\r\n    return score;\r\n  }\r\n\r\n  function bestVisibleContentMount(modal) {\r\n    if (!modal) return null;\r\n\r\n    /*\r\n      \u00D6nce var olan sat\u0131n alma/cart kutusunun bulundu\u011Fu g\u00F6r\u00FCn\u00FCr content parent'\u0131.\r\n      Bu alan kesin modal scroll i\u00E7indedir.\r\n    */\r\n    var known = modal.querySelector(\r\n      \"[data-gdx-panel-r18-r7-cart='1'],\" +\r\n      \"[data-gdx-panel-r18-r3-compact-cart='1'],\" +\r\n      \"[data-gdx-panel-r18-modal-purchase-nav='1']\"\r\n    );\r\n\r\n    if (known) {\r\n      var p = known.parentElement;\r\n      while (p && p !== modal && p.parentElement !== modal) {\r\n        p = p.parentElement;\r\n      }\r\n      if (p && visible(p)) return p;\r\n    }\r\n\r\n    /*\r\n      Muhtemel body/content alanlar\u0131.\r\n    */\r\n    var selector =\r\n      \".gdx-r11-modal-body,.gdx-r11-modal-content,.gdx-r11-modal-inner,\" +\r\n      \"[class*='modal-body'],[class*='modal-content'],[class*='modal-inner'],\" +\r\n      \"[class*='body'],[class*='content'],[class*='inner']\";\r\n\r\n    var candidates = qsa(selector, modal)\r\n      .filter(visible)\r\n      .map(function (el) {\r\n        var r = el.getBoundingClientRect();\r\n        var score = textScore(el) + Math.min(80, Math.round((el.scrollHeight || r.height || 0) / 40));\r\n        if (el === modal) score -= 100;\r\n        if (r.width < 240 || r.height < 120) score -= 40;\r\n        return { el: el, score: score };\r\n      })\r\n      .filter(function (x) { return x.score > 0; })\r\n      .sort(function (a, b) { return b.score - a.score; });\r\n\r\n    if (candidates.length) return candidates[0].el;\r\n\r\n    /*\r\n      Son \u00E7are: modal\u0131n kendisi. R18-R8 burada ba\u015Far\u0131s\u0131z olduysa bile R1 debug bunu g\u00F6sterir.\r\n    */\r\n    return modal;\r\n  }\r\n\r\n  function buildCloseWrap() {\r\n    var wrap = document.createElement(\"div\");\r\n    wrap.setAttribute(\"data-gdx-panel-r18-r8-r1-bottom-close-wrap\", \"1\");\r\n    wrap.innerHTML =\r\n      '<button type=\"button\" data-gdx-panel-r18-r8-r1-bottom-close=\"1\" aria-label=\"Modal\u0131 kapat\">Kapat</button>';\r\n\r\n    var btn = wrap.querySelector(\"[data-gdx-panel-r18-r8-r1-bottom-close='1']\");\r\n    btn.addEventListener(\"click\", function (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n\r\n      var modal = activeModal();\r\n      var close = findCloseButton(modal);\r\n\r\n      window.__PANEL_V4_R18_R8_R1_LAST_BOTTOM_CLOSE__ = {\r\n        status: close ? \"closed\" : \"close-button-not-found\",\r\n        at: new Date().toISOString()\r\n      };\r\n\r\n      if (close) close.click();\r\n    });\r\n\r\n    return wrap;\r\n  }\r\n\r\n  function insertOrMoveBottomClose(modal) {\r\n    if (!modal) return false;\r\n\r\n    ensureStyle();\r\n\r\n    var close = findCloseButton(modal);\r\n    if (!close) return false;\r\n\r\n    var mount = bestVisibleContentMount(modal);\r\n    if (!mount) return false;\r\n\r\n    /*\r\n      Eski R18-R8 ve R8-R1 denemelerini tekille\u015Ftir.\r\n    */\r\n    qsa(\"[data-gdx-panel-r18-r8-bottom-close-wrap='1']\", modal).forEach(function (old) {\r\n      if (old && old.parentNode) old.parentNode.removeChild(old);\r\n    });\r\n\r\n    var existing = modal.querySelector(\"[data-gdx-panel-r18-r8-r1-bottom-close-wrap='1']\");\r\n    if (existing && existing.parentNode !== mount) {\r\n      existing.parentNode.removeChild(existing);\r\n      mount.appendChild(existing);\r\n      return true;\r\n    }\r\n\r\n    if (existing) return false;\r\n\r\n    var wrap = buildCloseWrap();\r\n    mount.appendChild(wrap);\r\n\r\n    modal.setAttribute(\"data-gdx-panel-r18-r8-r1-bottom-close-ready\", \"1\");\r\n    mount.setAttribute(\"data-gdx-panel-r18-r8-r1-bottom-close-mount\", \"1\");\r\n\r\n    return true;\r\n  }\r\n\r\n  function apply() {\r\n    var modal = activeModal();\r\n    return insertOrMoveBottomClose(modal) ? 1 : 0;\r\n  }\r\n\r\n  apply();\r\n\r\n  var scheduled = false;\r\n  var observer = new MutationObserver(function () {\r\n    if (scheduled) return;\r\n    scheduled = true;\r\n\r\n    requestAnimationFrame(function () {\r\n      scheduled = false;\r\n      apply();\r\n    });\r\n  });\r\n\r\n  if (document.body) {\r\n    observer.observe(document.body, { childList: true, subtree: true });\r\n  }\r\n\r\n  function diagnostics() {\r\n    var modal = activeModal();\r\n    var mount = bestVisibleContentMount(modal);\r\n    var wrap = modal ? modal.querySelector(\"[data-gdx-panel-r18-r8-r1-bottom-close-wrap='1']\") : null;\r\n    var btn = modal ? modal.querySelector(\"[data-gdx-panel-r18-r8-r1-bottom-close='1']\") : null;\r\n    var oldWrap = modal ? modal.querySelector(\"[data-gdx-panel-r18-r8-bottom-close-wrap='1']\") : null;\r\n\r\n    var mountRect = mount ? mount.getBoundingClientRect() : null;\r\n    var btnRect = btn ? btn.getBoundingClientRect() : null;\r\n\r\n    return {\r\n      modalOpen: !!modal,\r\n      selectedModalClassName: clean(modal && modal.className).slice(0, 160),\r\n      closeButtonExists: !!findCloseButton(modal),\r\n      mountFound: !!mount,\r\n      mountClassName: clean(mount && mount.className).slice(0, 160),\r\n      mountIsModalRoot: !!(modal && mount === modal),\r\n      mountRect: mountRect ? {\r\n        left: Math.round(mountRect.left),\r\n        top: Math.round(mountRect.top),\r\n        right: Math.round(mountRect.right),\r\n        bottom: Math.round(mountRect.bottom),\r\n        width: Math.round(mountRect.width),\r\n        height: Math.round(mountRect.height)\r\n      } : null,\r\n      bottomCloseWrapExists: !!wrap,\r\n      bottomCloseButtonExists: !!btn,\r\n      bottomCloseButtonVisibleNow: visible(btn),\r\n      bottomCloseButtonRect: btnRect ? {\r\n        left: Math.round(btnRect.left),\r\n        top: Math.round(btnRect.top),\r\n        right: Math.round(btnRect.right),\r\n        bottom: Math.round(btnRect.bottom),\r\n        width: Math.round(btnRect.width),\r\n        height: Math.round(btnRect.height)\r\n      } : null,\r\n      oldR18R8WrapStillExists: !!oldWrap,\r\n      lastBottomClose: window.__PANEL_V4_R18_R8_R1_LAST_BOTTOM_CLOSE__ || null,\r\n      noOutsideClickRequirement: true\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R18R8R1ModalBottomCloseVisibleMountFix = function () {\r\n    var changedNow = apply();\r\n    var d = diagnostics();\r\n\r\n    var ok =\r\n      d.modalOpen &&\r\n      d.closeButtonExists &&\r\n      d.mountFound &&\r\n      d.bottomCloseWrapExists &&\r\n      d.bottomCloseButtonExists &&\r\n      d.oldR18R8WrapStillExists === false;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      changedNow: changedNow,\r\n      diagnostics: d,\r\n      outsideClickRequirementDropped: true,\r\n      noCartLogicMutation: true,\r\n      noCartApi: true,\r\n      noVariantMutation: true,\r\n      noProductSourceMutation: true,\r\n      noStickyBar: true,\r\n      noBottomCommerceIndexDependency: true,\r\n      noCommerceButtonClickBridge: true,\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noProductMutation: true,\r\n      noPriceFormatterTouch: true,\r\n      noSharePngQrMutation: true,\r\n      sealCandidate: ok ? \"PANEL-V4-R18-R8-R1-MODAL-BOTTOM-CLOSE-VISIBLE-MOUNT-FIX-READY-FOR-MANUAL-UX-TEST\" : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R30-R4-R1-SETUP-MODAL-SINGLE-TOP-CLOSE-OWNERSHIP-CONSOLIDATION\r\n   SOURCE-OWNED TECHNICAL AUDIT\r\n   - No listener\r\n   - No observer\r\n   - No timer\r\n   - No DOM mutation\r\n*/\r\n(function () {\r\n  \"use strict\";\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(selector, root) {\r\n    try {\r\n      return Array.prototype.slice.call(\r\n        (root || document).querySelectorAll(selector)\r\n      );\r\n    } catch (ignore) {\r\n      return [];\r\n    }\r\n  }\r\n\r\n  function text(element) {\r\n    return clean(\r\n      element &&\r\n      (\r\n        element.innerText ||\r\n        element.textContent\r\n      )\r\n    );\r\n  }\r\n\r\n  function rendered(element) {\r\n    if (!element) return false;\r\n\r\n    var style =\r\n      window.getComputedStyle\r\n        ? window.getComputedStyle(element)\r\n        : null;\r\n\r\n    var rect =\r\n      element.getBoundingClientRect\r\n        ? element.getBoundingClientRect()\r\n        : null;\r\n\r\n    if (element.hidden) return false;\r\n\r\n    if (\r\n      style &&\r\n      (\r\n        style.display === \"none\" ||\r\n        style.visibility === \"hidden\" ||\r\n        Number(style.opacity) === 0\r\n      )\r\n    ) {\r\n      return false;\r\n    }\r\n\r\n    return !!(\r\n      rect &&\r\n      rect.width > 0 &&\r\n      rect.height > 0\r\n    );\r\n  }\r\n\r\n  function productSignature() {\r\n    var core =\r\n      window.GDX_PANEL_LED_V4 || {};\r\n\r\n    var products =\r\n      core.state &&\r\n      Array.isArray(core.state.products)\r\n        ? core.state.products\r\n        : [];\r\n\r\n    return JSON.stringify(\r\n      products.map(function (product, index) {\r\n        return {\r\n          index: index,\r\n          key: clean(\r\n            product &&\r\n            (\r\n              product.key ||\r\n              product.handle ||\r\n              product.id ||\r\n              product.title\r\n            )\r\n          ),\r\n          title: clean(\r\n            product &&\r\n            product.title\r\n          ),\r\n          price:\r\n            product &&\r\n            product.price\r\n        };\r\n      })\r\n    );\r\n  }\r\n\r\n  function activeSetupModal() {\r\n    return qsa(\r\n      '.gdx-r11-modal[data-gdx-r11-modal-type=\"setup\"]'\r\n    ).find(rendered) || null;\r\n  }\r\n\r\n  window.debugPanelV4R30R4R1SetupModalSingleTopCloseOwnershipConsolidation =\r\n    function () {\r\n      var elementCountBefore =\r\n        document.querySelectorAll(\"*\").length;\r\n\r\n      var activeElementBefore =\r\n        document.activeElement;\r\n\r\n      var scrollXBefore =\r\n        window.scrollX;\r\n\r\n      var scrollYBefore =\r\n        window.scrollY;\r\n\r\n      var productsBefore =\r\n        productSignature();\r\n\r\n      var modal =\r\n        activeSetupModal();\r\n\r\n      var panel =\r\n        modal &&\r\n        modal.querySelector(\r\n          \".gdx-r11-modal-panel\"\r\n        );\r\n\r\n      var nativeTopCloses =\r\n        qsa(\r\n          '.gdx-r11-modal-close[data-gdx-r11-action=\"close-modal\"]',\r\n          modal\r\n        );\r\n\r\n      var floatingTopCloses =\r\n        qsa(\r\n          '[data-gdx-panel-r18-r7-floating-close=\"1\"]',\r\n          modal\r\n        );\r\n\r\n      var bottomCloses =\r\n        qsa(\r\n          '[data-gdx-panel-r18-r8-r1-bottom-close=\"1\"]',\r\n          modal\r\n        );\r\n\r\n      var backdrops =\r\n        qsa(\r\n          '.gdx-r11-modal-backdrop[data-gdx-r11-action=\"close-modal\"]',\r\n          modal\r\n        );\r\n\r\n      var closeLikeButtons =\r\n        qsa(\r\n          \"button,a\",\r\n          modal\r\n        ).filter(function (element) {\r\n          var value =\r\n            clean(\r\n              text(element) +\r\n              \" \" +\r\n              element.getAttribute(\r\n                \"aria-label\"\r\n              )\r\n            );\r\n\r\n          return (\r\n            text(element) === \"\u00D7\" ||\r\n            /kapat|close/i.test(value)\r\n          );\r\n        });\r\n\r\n      var xControls =\r\n        closeLikeButtons.filter(function (element) {\r\n          return text(element) === \"\u00D7\";\r\n        });\r\n\r\n      var style =\r\n        document.getElementById(\r\n          \"gdx-panel-v4-r18-r7-clean-modal-cart-ux-style\"\r\n        );\r\n\r\n      var styleText =\r\n        clean(\r\n          style &&\r\n          style.textContent\r\n        );\r\n\r\n      var cartBox =\r\n        modal &&\r\n        modal.querySelector(\r\n          '[data-gdx-panel-r18-r7-cart=\"1\"]'\r\n        );\r\n\r\n      var cartButton =\r\n        modal &&\r\n        modal.querySelector(\r\n          '[data-gdx-panel-r18-r7-cart-button=\"1\"]'\r\n        );\r\n\r\n      var setupNora =\r\n        modal &&\r\n        modal.querySelector(\r\n          '[data-gdx-panel-r29-r5-source-owned=\"1\"]'\r\n        );\r\n\r\n      var setupIntelligence =\r\n        modal &&\r\n        modal.querySelector(\r\n          '[data-gdx-r11-setup-intelligence=\"1\"]'\r\n        );\r\n\r\n      var setupSchematic =\r\n        modal &&\r\n        modal.querySelector(\r\n          \".gdx-r11-diagram,\" +\r\n          \".gdx-r11-setup-card,\" +\r\n          \"[data-gdx-panel-p28-schematic='1']\"\r\n        );\r\n\r\n      var contract =\r\n        window.GDX_PANEL_V4_R30_R4_R1_CLOSE_OWNERSHIP_CONTRACT ||\r\n        null;\r\n\r\n      var productsAfter =\r\n        productSignature();\r\n\r\n      var elementCountAfter =\r\n        document.querySelectorAll(\"*\").length;\r\n\r\n      var checks = {\r\n        auditRan:\r\n          true,\r\n\r\n        r30R4R1RuntimeReady:\r\n          window.GDX_PANEL_V4_R30_R4_R1_READY ===\r\n          true,\r\n\r\n        closeOwnershipContractReady:\r\n          !!(\r\n            contract &&\r\n            contract\r\n              .canonicalUpperCloseOwner ===\r\n                \"R11_NATIVE_MODAL_CLOSE\" &&\r\n            contract\r\n              .floatingUpperClose ===\r\n                \"RETIRED\" &&\r\n            contract\r\n              .bottomCloseOwner ===\r\n                \"R18_R8_R1_BOTTOM_CLOSE\"\r\n          ),\r\n\r\n        setupModalOpen:\r\n          !!modal,\r\n\r\n        exactlyOneRenderedSetupModal:\r\n          qsa(\r\n            '.gdx-r11-modal[data-gdx-r11-modal-type=\"setup\"]'\r\n          ).filter(rendered).length === 1,\r\n\r\n        modalPanelDetected:\r\n          !!panel,\r\n\r\n        exactlyOneNativeUpperClose:\r\n          nativeTopCloses.length === 1,\r\n\r\n        nativeUpperCloseRendered:\r\n          rendered(\r\n            nativeTopCloses[0]\r\n          ),\r\n\r\n        nativeUpperCloseInsidePanel:\r\n          !!(\r\n            panel &&\r\n            nativeTopCloses[0] &&\r\n            panel.contains(\r\n              nativeTopCloses[0]\r\n            )\r\n          ),\r\n\r\n        nativeUpperCloseActionReady:\r\n          !!(\r\n            nativeTopCloses[0] &&\r\n            nativeTopCloses[0]\r\n              .getAttribute(\r\n                \"data-gdx-r11-action\"\r\n              ) ===\r\n                \"close-modal\"\r\n          ),\r\n\r\n        floatingUpperCloseRetired:\r\n          floatingTopCloses.length === 0,\r\n\r\n        floatingUpperCloseStyleRetired:\r\n          styleText.indexOf(\r\n            \"data-gdx-panel-r18-r7-floating-close\"\r\n          ) === -1,\r\n\r\n        exactlyOneRenderedUpperX:\r\n          xControls.length === 1 &&\r\n          rendered(\r\n            xControls[0]\r\n          ),\r\n\r\n        exactlyOneBottomClose:\r\n          bottomCloses.length === 1,\r\n\r\n        bottomCloseInsidePanel:\r\n          !!(\r\n            panel &&\r\n            bottomCloses[0] &&\r\n            panel.contains(\r\n              bottomCloses[0]\r\n            )\r\n          ),\r\n\r\n        bottomCloseTypeButton:\r\n          !!(\r\n            bottomCloses[0] &&\r\n            clean(\r\n              bottomCloses[0]\r\n                .getAttribute(\r\n                  \"type\"\r\n                )\r\n            ).toLowerCase() ===\r\n              \"button\"\r\n          ),\r\n\r\n        exactlyOneBackdropClose:\r\n          backdrops.length === 1,\r\n\r\n        backdropCloseActionReady:\r\n          !!(\r\n            backdrops[0] &&\r\n            backdrops[0]\r\n              .getAttribute(\r\n                \"data-gdx-r11-action\"\r\n              ) ===\r\n                \"close-modal\"\r\n          ),\r\n\r\n        finalVisibleCloseModelReady:\r\n          closeLikeButtons.length === 2 &&\r\n          nativeTopCloses.length === 1 &&\r\n          bottomCloses.length === 1 &&\r\n          floatingTopCloses.length === 0,\r\n\r\n        r18R7CartBoxPreserved:\r\n          !!cartBox,\r\n\r\n        r18R7CartButtonPreserved:\r\n          !!cartButton,\r\n\r\n        r18R7CartButtonVariantReady:\r\n          !!clean(\r\n            cartButton &&\r\n            cartButton.getAttribute(\r\n              \"data-gdx-panel-variant-id\"\r\n            )\r\n          ),\r\n\r\n        setupNoraPreserved:\r\n          !!setupNora,\r\n\r\n        setupIntelligencePreserved:\r\n          !!setupIntelligence,\r\n\r\n        setupSchematicPreserved:\r\n          !!setupSchematic,\r\n\r\n        escapeClosePreservedByContract:\r\n          !!(\r\n            contract &&\r\n            contract.escapeClose ===\r\n              \"PRESERVED\"\r\n          ),\r\n\r\n        outsideClickClosePreservedByContract:\r\n          !!(\r\n            contract &&\r\n            contract\r\n              .outsideClickClose ===\r\n                \"PRESERVED\"\r\n          ),\r\n\r\n        cartCommerceLogicPreservedByContract:\r\n          !!(\r\n            contract &&\r\n            contract\r\n              .cartCommerceLogic ===\r\n                \"PRESERVED\"\r\n          ),\r\n\r\n        noNewCloseListenerAdded:\r\n          !!(\r\n            contract &&\r\n            contract\r\n              .newCloseListenerAdded ===\r\n                false\r\n          ),\r\n\r\n        noNewObserverAdded:\r\n          !!(\r\n            contract &&\r\n            contract\r\n              .newObserverAdded ===\r\n                false\r\n          ),\r\n\r\n        noNewTimerAdded:\r\n          !!(\r\n            contract &&\r\n            contract\r\n              .newTimerAdded ===\r\n                false\r\n          ),\r\n\r\n        legacyR18R7DebugAvailable:\r\n          typeof window\r\n            .debugPanelV4R18R7CleanConsolidatedModalCartUx ===\r\n            \"function\",\r\n\r\n        bottomCloseDebugAvailable:\r\n          typeof window\r\n            .debugPanelV4R18R8R1ModalBottomCloseVisibleMountFix ===\r\n            \"function\",\r\n\r\n        noModalCloseByThisAudit:\r\n          !!activeSetupModal(),\r\n\r\n        noFocusMutationByThisAudit:\r\n          document.activeElement ===\r\n          activeElementBefore,\r\n\r\n        noScrollMutationByThisAudit:\r\n          window.scrollX ===\r\n            scrollXBefore &&\r\n          window.scrollY ===\r\n            scrollYBefore,\r\n\r\n        noDomMutationByThisAudit:\r\n          elementCountBefore ===\r\n          elementCountAfter,\r\n\r\n        noProductOrderMutationByThisAudit:\r\n          productsBefore ===\r\n          productsAfter,\r\n\r\n        noScoreMutationByThisAudit:\r\n          true,\r\n\r\n        noRankingMutationByThisAudit:\r\n          true,\r\n\r\n        noProductMutationByThisAudit:\r\n          true,\r\n\r\n        noPriceFormatterTouchByThisAudit:\r\n          true,\r\n\r\n        noCartMutationByThisAudit:\r\n          true,\r\n\r\n        noCommerceMutationByThisAudit:\r\n          true,\r\n\r\n        noSetupNarrativeMutationByThisAudit:\r\n          true,\r\n\r\n        noSharePngQrMutationByThisAudit:\r\n          true\r\n      };\r\n\r\n      var failed =\r\n        Object.keys(checks).filter(function (key) {\r\n          return checks[key] !== true;\r\n        });\r\n\r\n      var result = {\r\n        phase:\r\n          \"PANEL-V4-R30-R4-R1-SETUP-MODAL-SINGLE-TOP-CLOSE-OWNERSHIP-CONSOLIDATION-SOURCE-APPLICATION\",\r\n\r\n        version:\r\n          \"PANEL-V4-R30-R4-R1-SETUP-MODAL-SINGLE-TOP-CLOSE-OWNERSHIP-CONSOLIDATION-V1\",\r\n\r\n        ok:\r\n          failed.length === 0,\r\n\r\n        checks:\r\n          checks,\r\n\r\n        diagnostics: {\r\n          closeCounts: {\r\n            nativeUpper:\r\n              nativeTopCloses.length,\r\n            floatingUpper:\r\n              floatingTopCloses.length,\r\n            bottom:\r\n              bottomCloses.length,\r\n            backdrop:\r\n              backdrops.length,\r\n            closeLikeButtons:\r\n              closeLikeButtons.length,\r\n            xControls:\r\n              xControls.length\r\n          },\r\n\r\n          closeModel: {\r\n            upperOwner:\r\n              \"R11 native modal close\",\r\n            floatingOwner:\r\n              \"retired\",\r\n            bottomOwner:\r\n              \"R18-R8-R1 bottom close\",\r\n            backdropOwner:\r\n              \"R11 modal backdrop\"\r\n          },\r\n\r\n          preservedContent: {\r\n            cartBox:\r\n              !!cartBox,\r\n            cartButton:\r\n              !!cartButton,\r\n            setupNora:\r\n              !!setupNora,\r\n            setupIntelligence:\r\n              !!setupIntelligence,\r\n            setupSchematic:\r\n              !!setupSchematic\r\n          },\r\n\r\n          contract:\r\n            contract,\r\n\r\n          failed:\r\n            failed\r\n        },\r\n\r\n        interpretation: {\r\n          decision:\r\n            failed.length === 0\r\n              ? \"R30-R4-R1 TECHNICAL PASS. R18-R7 floating \u00FCst X kald\u0131r\u0131ld\u0131; R11 native \u00FCst X, alt Kapat, backdrop/ESC/outside-click ve cart/setup i\u00E7erikleri korundu.\"\r\n              : \"R30-R4-R1 HOLD. Tek \u00FCst X sahipli\u011Fi, alt Kapat, cart veya setup i\u00E7erik s\u00FCreklili\u011Fi incelenmeli.\",\r\n\r\n          next:\r\n            failed.length === 0\r\n              ? \"Setup ve Reason modallar\u0131nda k\u0131sa manuel close/cart kontrol\u00FC\"\r\n              : \"HOLD\"\r\n        },\r\n\r\n        sealCandidate:\r\n          failed.length === 0\r\n            ? \"PANEL-V4-R30-R4-R1-SETUP-MODAL-SINGLE-TOP-CLOSE-OWNERSHIP-CONSOLIDATION-TECHNICAL-PASS-CANDIDATE\"\r\n            : \"HOLD\"\r\n      };\r\n\r\n      if (\r\n        window.console &&\r\n        typeof window.console.log ===\r\n          \"function\"\r\n      ) {\r\n        window.console.log(\r\n          \"R30-R4-R1 SETUP MODAL SINGLE TOP CLOSE OWNERSHIP:\",\r\n          result\r\n        );\r\n      }\r\n\r\n      return result;\r\n    };\r\n})();\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 R36-R5.2\r\n   R21 CTA OWNER FINAL REPAIR\r\n   M\u00DCH\u00DCR ADAYI:\r\n   PANEL-V4-R36-R5-2-R21-CTA-OWNER-FINAL-REPAIR\r\n\r\n   AMA\u00C7:\r\n   - Mevcut R21 compact CTA owner'\u0131n\u0131 tek kaynakta d\u00FCzeltmek.\r\n   - Canonical R11 \u00F6neri kartlar\u0131n\u0131 do\u011Frudan hedeflemek.\r\n   - Copy metnine ba\u011F\u0131ml\u0131l\u0131\u011F\u0131 azaltmak.\r\n   - \u00DCr\u00FCn\u00FC \u0130ncele / Neden Bu \u00DCr\u00FCn? / Kurulumu G\u00F6r / Sepete Ekle\r\n     rollerini canonical data attribute + fallback text ile i\u015Faretlemek.\r\n   - R17-R2 ger\u00E7ek variant Sepete Ekle mant\u0131\u011F\u0131na DOKUNMAMAK.\r\n   - Skor/ranking/product selection/price/share/modal mant\u0131\u011F\u0131na DOKUNMAMAK.\r\n\r\n   NEW SHOPIFY ASSET: NONE\r\n   TARGET:\r\n   assets/panel-led-v4.ui.js \u2014 FULL REPLACEMENT\r\n   ========================================================= */\r\n(function () {\r\n  \"use strict\";\r\n\r\n  var PHASE = \"PANEL-V4-R36-R5-2-R21-CTA-OWNER-FINAL-REPAIR\";\r\n  var VERSION = \"PANEL-V4-R36-R5-2-R21-CTA-OWNER-FINAL-REPAIR-V1\";\r\n\r\n  if (window.__PANEL_V4_R21_R2_FIRST_FOLD_CTA_COMPACT__) return;\r\n  window.__PANEL_V4_R21_R2_FIRST_FOLD_CTA_COMPACT__ = true;\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n\r\n    var cls = clean(el.className || \"\");\r\n    if (/\\bhidden\\b/i.test(cls)) return false;\r\n    if (/footer-overlay/i.test(cls)) return false;\r\n\r\n    var st = window.getComputedStyle(el);\r\n    if (\r\n      !st ||\r\n      st.display === \"none\" ||\r\n      st.visibility === \"hidden\" ||\r\n      Number(st.opacity) === 0\r\n    ) {\r\n      return false;\r\n    }\r\n\r\n    var r = el.getBoundingClientRect();\r\n    return r.width > 0 && r.height > 0;\r\n  }\r\n\r\n  function rectPack(el) {\r\n    if (!el) return null;\r\n\r\n    var r = el.getBoundingClientRect();\r\n\r\n    return {\r\n      left: Math.round(r.left),\r\n      top: Math.round(r.top),\r\n      right: Math.round(r.right),\r\n      bottom: Math.round(r.bottom),\r\n      width: Math.round(r.width),\r\n      height: Math.round(r.height),\r\n      firstFold:\r\n        r.top < Math.round(window.innerHeight * 0.82) &&\r\n        r.bottom > 0\r\n    };\r\n  }\r\n\r\n  function recommendationMount() {\r\n    return document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n  }\r\n\r\n  function commerceMount() {\r\n    return document.getElementById(\"gdxPanelV4CommercePreview\");\r\n  }\r\n\r\n  function nearestTopCardFallback(el) {\r\n    var commerce = commerceMount();\r\n    var cur = el;\r\n\r\n    for (var i = 0; i < 10 && cur; i += 1) {\r\n      if (commerce && commerce.contains(cur)) return null;\r\n\r\n      if (\r\n        cur.matches &&\r\n        cur.matches(\".gdx-r11-card[data-gdx-r11-card]\")\r\n      ) {\r\n        return cur;\r\n      }\r\n\r\n      var t = clean(cur.innerText);\r\n\r\n      if (\r\n        /Neden Bu \u00DCr\u00FCn/i.test(t) &&\r\n        /Setup['\u2019]?u G\u00F6r|Kurulumu G\u00F6r/i.test(t) &&\r\n        /GDX|Godox/i.test(t) &&\r\n        t.length < 2600\r\n      ) {\r\n        return cur;\r\n      }\r\n\r\n      cur = cur.parentElement;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function topCards() {\r\n    var mount = recommendationMount();\r\n\r\n    /*\r\n      FINAL OWNER RULE:\r\n      R11 recommendation renderer already publishes the canonical contract:\r\n      article.gdx-r11-card[data-gdx-r11-card]\r\n      Prefer that contract instead of reconstructing card ownership from copy.\r\n    */\r\n    var canonical = qsa(\r\n      \".gdx-r11-card[data-gdx-r11-card]\",\r\n      mount || document\r\n    ).filter(visible);\r\n\r\n    if (canonical.length) {\r\n      return canonical.slice(0, 6);\r\n    }\r\n\r\n    /* Legacy-safe fallback only. */\r\n    var out = [];\r\n\r\n    qsa(\"button,a\", document.body).forEach(function (btn) {\r\n      if (!visible(btn)) return;\r\n      if (!/^Neden Bu \u00DCr\u00FCn\\??$/i.test(clean(btn.textContent))) return;\r\n\r\n      var card = nearestTopCardFallback(btn);\r\n      if (!card) return;\r\n\r\n      if (out.indexOf(card) === -1) out.push(card);\r\n    });\r\n\r\n    return out.slice(0, 6);\r\n  }\r\n\r\n  function cardTitle(card) {\r\n    if (!card) return \"\";\r\n\r\n    var titleNode = card.querySelector(\"h4\");\r\n    if (titleNode) return clean(titleNode.textContent);\r\n\r\n    var title = \"\";\r\n\r\n    qsa(\"h1,h2,h3,h4,b,strong,div,span\", card).some(function (el) {\r\n      var t = clean(el.textContent);\r\n\r\n      if (\r\n        /^(GDX|Godox)\\s+/i.test(t) &&\r\n        t.length >= 8 &&\r\n        t.length <= 120\r\n      ) {\r\n        title = t;\r\n        return true;\r\n      }\r\n\r\n      return false;\r\n    });\r\n\r\n    return title;\r\n  }\r\n\r\n  function ensureStyle() {\r\n    var id = \"gdx-panel-v4-r21-r2-first-fold-cta-compact-style\";\r\n    var style = document.getElementById(id);\r\n\r\n    if (!style) {\r\n      style = document.createElement(\"style\");\r\n      style.id = id;\r\n      document.head.appendChild(style);\r\n    }\r\n\r\n    style.textContent =\r\n      \"[data-gdx-panel-r21-r2-compact-card='1']{\" +\r\n        \"gap:10px!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r21-r2-compact-card='1'] button,\" +\r\n      \"[data-gdx-panel-r21-r2-compact-card='1'] a{\" +\r\n        \"line-height:1.12!important;\" +\r\n        \"letter-spacing:.01em!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r21-r2-compact-card='1'] [data-gdx-panel-r21-r2-cta='1']{\" +\r\n        \"min-height:36px!important;\" +\r\n        \"padding:8px 11px!important;\" +\r\n        \"border-radius:14px!important;\" +\r\n        \"font-size:11.5px!important;\" +\r\n        \"font-weight:850!important;\" +\r\n        \"white-space:normal!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r21-r2-compact-card='1'] [data-gdx-panel-r21-r2-cta-role='cart']{\" +\r\n        \"min-height:40px!important;\" +\r\n        \"font-size:12px!important;\" +\r\n        \"font-weight:950!important;\" +\r\n      \"}\" +\r\n      \"[data-gdx-panel-r21-r2-compact-card='1'] [data-gdx-panel-r21-r2-cta-role='reason'],\" +\r\n      \"[data-gdx-panel-r21-r2-compact-card='1'] [data-gdx-panel-r21-r2-cta-role='setup']{\" +\r\n        \"opacity:.94!important;\" +\r\n      \"}\" +\r\n      \"@media (min-width:768px) and (max-width:1120px){\" +\r\n        \"[data-gdx-panel-r21-r2-compact-card='1'] [data-gdx-panel-r21-r2-cta='1']{\" +\r\n          \"min-height:34px!important;\" +\r\n          \"padding:7px 9px!important;\" +\r\n          \"font-size:11px!important;\" +\r\n        \"}\" +\r\n        \"[data-gdx-panel-r21-r2-compact-card='1'] [data-gdx-panel-r21-r2-cta-role='cart']{\" +\r\n          \"min-height:38px!important;\" +\r\n        \"}\" +\r\n      \"}\" +\r\n      \"@media (max-width:767px){\" +\r\n        \"[data-gdx-panel-r21-r2-compact-card='1'] [data-gdx-panel-r21-r2-cta='1']{\" +\r\n          \"min-height:38px!important;\" +\r\n          \"padding:8px 10px!important;\" +\r\n          \"font-size:11.5px!important;\" +\r\n        \"}\" +\r\n      \"}\";\r\n  }\r\n\r\n  function roleOf(btn) {\r\n    if (!btn) return \"other\";\r\n\r\n    /*\r\n      Prefer stable DOM contracts first.\r\n      Customer copy stays only as a fallback.\r\n    */\r\n    if (btn.getAttribute(\"data-gdx-panel-r17-r2-direct-add\") === \"1\") {\r\n      return \"cart\";\r\n    }\r\n\r\n    var action = clean(btn.getAttribute(\"data-gdx-r11-action\"));\r\n\r\n    if (action === \"reason\") return \"reason\";\r\n    if (action === \"setup\") return \"setup\";\r\n\r\n    if (\r\n      btn.matches &&\r\n      btn.matches(\"a.gdx-r11-btn.primary\")\r\n    ) {\r\n      return \"product-link\";\r\n    }\r\n\r\n    var t = clean(btn.textContent);\r\n\r\n    if (/sepete ekle|sepete eklendi|tekrar dene/i.test(t)) return \"cart\";\r\n    if (/neden bu \u00FCr\u00FCn/i.test(t)) return \"reason\";\r\n    if (/setup|kurulumu g\u00F6r/i.test(t)) return \"setup\";\r\n    if (/\u00FCr\u00FCn\u00FC incele|incele/i.test(t)) return \"product-link\";\r\n\r\n    return \"other\";\r\n  }\r\n\r\n  function clearR21Markers(card) {\r\n    qsa(\r\n      \"[data-gdx-panel-r21-r2-cta='1']\",\r\n      card\r\n    ).forEach(function (btn) {\r\n      btn.removeAttribute(\"data-gdx-panel-r21-r2-cta\");\r\n      btn.removeAttribute(\"data-gdx-panel-r21-r2-cta-role\");\r\n    });\r\n  }\r\n\r\n  function markCard(card, index) {\r\n    if (!card) return;\r\n\r\n    card.setAttribute(\r\n      \"data-gdx-panel-r21-r2-compact-card\",\r\n      \"1\"\r\n    );\r\n\r\n    card.setAttribute(\r\n      \"data-gdx-panel-r21-r2-compact-index\",\r\n      String(index + 1)\r\n    );\r\n\r\n    clearR21Markers(card);\r\n\r\n    qsa(\"button,a\", card).forEach(function (btn) {\r\n      var role = roleOf(btn);\r\n\r\n      if (role === \"other\") return;\r\n\r\n      btn.setAttribute(\r\n        \"data-gdx-panel-r21-r2-cta\",\r\n        \"1\"\r\n      );\r\n\r\n      btn.setAttribute(\r\n        \"data-gdx-panel-r21-r2-cta-role\",\r\n        role\r\n      );\r\n    });\r\n  }\r\n\r\n  function apply() {\r\n    ensureStyle();\r\n\r\n    var cards = topCards().slice(0, 3);\r\n\r\n    cards.forEach(function (card, index) {\r\n      markCard(card, index);\r\n    });\r\n\r\n    window.__PANEL_V4_R21_R2_LAST_APPLY__ = {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      at: new Date().toISOString(),\r\n      source: \"canonical-r11-card-contract\",\r\n      cardCount: cards.length\r\n    };\r\n\r\n    return cards.length;\r\n  }\r\n\r\n  function scheduleApply() {\r\n    if (window.__PANEL_V4_R36_R5_2_R21_SCHEDULED__) return;\r\n\r\n    window.__PANEL_V4_R36_R5_2_R21_SCHEDULED__ = true;\r\n\r\n    requestAnimationFrame(function () {\r\n      window.__PANEL_V4_R36_R5_2_R21_SCHEDULED__ = false;\r\n      apply();\r\n    });\r\n  }\r\n\r\n  apply();\r\n\r\n  /*\r\n    R17 direct-cart button is inserted dynamically.\r\n    childList observer is sufficient; no cart/scoring mutation is performed.\r\n  */\r\n  var observer = new MutationObserver(scheduleApply);\r\n\r\n  if (document.body) {\r\n    observer.observe(document.body, {\r\n      childList: true,\r\n      subtree: true\r\n    });\r\n  }\r\n\r\n  function cardDiagnostics() {\r\n    return topCards()\r\n      .slice(0, 3)\r\n      .map(function (card, index) {\r\n        var buttons = qsa(\r\n          \"[data-gdx-panel-r21-r2-cta='1']\",\r\n          card\r\n        ).map(function (btn) {\r\n          return {\r\n            text: clean(btn.textContent),\r\n            role: clean(\r\n              btn.getAttribute(\r\n                \"data-gdx-panel-r21-r2-cta-role\"\r\n              )\r\n            ),\r\n            canonicalAction: clean(\r\n              btn.getAttribute(\"data-gdx-r11-action\")\r\n            ),\r\n            r17R2Cart:\r\n              btn.getAttribute(\r\n                \"data-gdx-panel-r17-r2-direct-add\"\r\n              ) === \"1\",\r\n            rect: rectPack(btn),\r\n            visible: visible(btn)\r\n          };\r\n        });\r\n\r\n        return {\r\n          index: index + 1,\r\n          title: cardTitle(card),\r\n          canonicalCard:\r\n            !!(\r\n              card.matches &&\r\n              card.matches(\r\n                \".gdx-r11-card[data-gdx-r11-card]\"\r\n              )\r\n            ),\r\n          marked:\r\n            card.getAttribute(\r\n              \"data-gdx-panel-r21-r2-compact-card\"\r\n            ) === \"1\",\r\n          rect: rectPack(card),\r\n          ctaCount: buttons.length,\r\n          hasProductLink: buttons.some(function (b) {\r\n            return b.role === \"product-link\";\r\n          }),\r\n          hasReason: buttons.some(function (b) {\r\n            return b.role === \"reason\";\r\n          }),\r\n          hasSetup: buttons.some(function (b) {\r\n            return b.role === \"setup\";\r\n          }),\r\n          hasCart: buttons.some(function (b) {\r\n            return b.role === \"cart\";\r\n          }),\r\n          allCtasVisible:\r\n            buttons.length > 0 &&\r\n            buttons.every(function (b) {\r\n              return b.visible;\r\n            }),\r\n          buttons: buttons\r\n        };\r\n      });\r\n  }\r\n\r\n  function status() {\r\n    var changed = apply();\r\n    var cards = cardDiagnostics();\r\n\r\n    var checks = {\r\n      compactCardsDetected:\r\n        cards.length >= 3,\r\n\r\n      canonicalR11CardsDetected:\r\n        cards.length >= 3 &&\r\n        cards.every(function (c) {\r\n          return c.canonicalCard;\r\n        }),\r\n\r\n      allCardsMarked:\r\n        cards.length >= 3 &&\r\n        cards.every(function (c) {\r\n          return c.marked;\r\n        }),\r\n\r\n      allCoreCtasPreserved:\r\n        cards.length >= 3 &&\r\n        cards.every(function (c) {\r\n          return (\r\n            c.hasProductLink &&\r\n            c.hasReason &&\r\n            c.hasSetup &&\r\n            c.hasCart\r\n          );\r\n        }),\r\n\r\n      allCtasVisible:\r\n        cards.length >= 3 &&\r\n        cards.every(function (c) {\r\n          return c.allCtasVisible;\r\n        }),\r\n\r\n      r17R2CartStillPresent:\r\n        cards.length >= 3 &&\r\n        cards.every(function (c) {\r\n          return c.buttons.some(function (b) {\r\n            return b.role === \"cart\" && b.r17R2Cart;\r\n          });\r\n        }),\r\n\r\n      noDomRemoval: true,\r\n      noCartLogicMutation: true,\r\n      noCartApi: true,\r\n      noVariantMutation: true,\r\n      noProductSourceMutation: true,\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noProductMutation: true,\r\n      noPriceFormatterTouch: true,\r\n      noSharePngQrMutation: true\r\n    };\r\n\r\n    var ok =\r\n      checks.compactCardsDetected &&\r\n      checks.canonicalR11CardsDetected &&\r\n      checks.allCardsMarked &&\r\n      checks.allCoreCtasPreserved &&\r\n      checks.allCtasVisible &&\r\n      checks.r17R2CartStillPresent;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      changed: changed,\r\n      checks: checks,\r\n      diagnostics: {\r\n        viewport: {\r\n          width: window.innerWidth,\r\n          height: window.innerHeight,\r\n          mode:\r\n            window.innerWidth <= 767\r\n              ? \"mobile\"\r\n              : (\r\n                  window.innerWidth <= 1024\r\n                    ? \"tablet\"\r\n                    : \"desktop\"\r\n                )\r\n        },\r\n        lastApply:\r\n          window.__PANEL_V4_R21_R2_LAST_APPLY__ ||\r\n          null,\r\n        cards: cards\r\n      },\r\n      sealCandidate:\r\n        ok\r\n          ? \"PANEL-V4-R36-R5-2-R21-CTA-OWNER-FINAL-REPAIR-LIVE-PASS-CANDIDATE\"\r\n          : \"HOLD\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R21R2FirstFoldCtaCompactPolish =\r\n    status;\r\n\r\n  window.GDX_PANEL_V4_R36_R5_2_R21_OWNER = {\r\n    phase: PHASE,\r\n    version: VERSION,\r\n    apply: apply,\r\n    status: status\r\n  };\r\n})();\r\n\r\n\r\n/* PANEL-V4-R26-R0-OPENING-DENSITY-R21R2-READONLY-AUDIT\r\n   FAZ:\r\n   R26-R0\r\n\r\n   KISA AMA\u00C7:\r\n   A\u00E7\u0131l\u0131\u015F/\u00F6neri ekran\u0131nda R21-R2 sonras\u0131 CTA yo\u011Funlu\u011Funu ve R21-R2 etkisini \u00F6l\u00E7er.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131k.\r\n   Modal kapal\u0131.\r\n   Kar\u015F\u0131la\u015Ft\u0131rma yapmadan console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R26R0OpeningDensityR21R2Audit()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R26-R0-OPENING-DENSITY-R21R2-READONLY-AUDIT\";\r\n  var VERSION = \"PANEL-V4-R26-R0-OPENING-DENSITY-R21R2-READONLY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n\r\n    var cls = clean(el.className || \"\");\r\n    if (/\\bhidden\\b/i.test(cls)) return false;\r\n\r\n    var st = window.getComputedStyle(el);\r\n    if (!st || st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0) return false;\r\n\r\n    var r = el.getBoundingClientRect();\r\n    return r.width > 0 && r.height > 0 && r.bottom > 0 && r.right > 0 && r.top < window.innerHeight && r.left < window.innerWidth;\r\n  }\r\n\r\n  function rectPack(el) {\r\n    if (!el) return null;\r\n    var r = el.getBoundingClientRect();\r\n    return {\r\n      left: Math.round(r.left),\r\n      top: Math.round(r.top),\r\n      right: Math.round(r.right),\r\n      bottom: Math.round(r.bottom),\r\n      width: Math.round(r.width),\r\n      height: Math.round(r.height)\r\n    };\r\n  }\r\n\r\n  function root() {\r\n    return document.getElementById(\"gdx-panel-led-v4-root\") || document;\r\n  }\r\n\r\n  function shell() {\r\n    return document.getElementById(\"gdxPanelV4Shell\");\r\n  }\r\n\r\n  function resultEl() {\r\n    return document.getElementById(\"gdxPanelV4ResultPreview\");\r\n  }\r\n\r\n  function commerceEl() {\r\n    return document.getElementById(\"gdxPanelV4CommercePreview\");\r\n  }\r\n\r\n  function activeModal() {\r\n    return qsa(\"[role='dialog'],.gdx-r11-modal,.gdx-r11-modal-panel,[data-gdx-panel-modal]\")\r\n      .find(function (el) {\r\n        if (!visible(el)) return false;\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        return /Neden Bu \u00DCr\u00FCn|Setup|Sepete Ekle|Kapat/i.test(txt);\r\n      }) || null;\r\n  }\r\n\r\n  function productPoolCount() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products.length : 0;\r\n  }\r\n\r\n  function isCompareDone() {\r\n    var result = resultEl();\r\n    if (!result) return false;\r\n    var txt = clean(result.innerText || result.textContent || \"\");\r\n    if (!txt) return false;\r\n    if (/Kar\u015F\u0131la\u015Ft\u0131rma sonucunu g\u00F6rmek i\u00E7in iki Panel LED \u00FCr\u00FCn\u00FC se\u00E7in/i.test(txt)) return false;\r\n    if (/\u0130ki \u00FCr\u00FCn se\u00E7ildi/i.test(txt) && /GENEL F\\/P KAR\u015EILA\u015ETIR/i.test(txt)) return false;\r\n    if (/B\u0130R \u00DCR\u00DCN DAHA SE\u00C7\u0130N|\u0130K\u0130 \u00DCR\u00DCN SE\u00C7\u0130N/i.test(txt)) return false;\r\n    if (result.querySelector(\"[data-gdx-panel-fp14-detail-section='1']\")) return true;\r\n    if (result.querySelector(\"[data-gdx-panel-result-jump-nav='1']\")) return true;\r\n    return /F\\/P Kazanan\u0131|Teknik Analiz|Uzman Yorumu|Karar verileri kontrol edildi|14 kriterli/i.test(txt);\r\n  }\r\n\r\n  function textRole(text) {\r\n    text = clean(text);\r\n    if (/Neden Bu \u00DCr\u00FCn/i.test(text)) return \"reason\";\r\n    if (/Setup|Kurulumu G\u00F6r|Kurulumu G\u00F6r/i.test(text)) return \"setup\";\r\n    if (/Sepete Ekle|Sepete Git/i.test(text)) return \"cart\";\r\n    if (/GENEL F\\/P KAR\u015EILA\u015ETIR|Kar\u015F\u0131la\u015Ft\u0131r/i.test(text)) return \"compare\";\r\n    if (/\u00DCr\u00FCn\u00FC \u0130ncele|Detay|\u0130ncele/i.test(text)) return \"product_link\";\r\n    if (/Payla\u015F|PNG|QR|Sonucu/i.test(text)) return \"share\";\r\n    if (/Amaca G\u00F6re|\u00D6ner|Kullan\u0131m|Ama\u00E7/i.test(text)) return \"purpose\";\r\n    return \"other\";\r\n  }\r\n\r\n  function visibleButtons() {\r\n    var r = root();\r\n    return qsa(\"button,a,[role='button']\", r)\r\n      .filter(visible)\r\n      .map(function (el, index) {\r\n        var txt = clean(el.innerText || el.textContent || el.getAttribute(\"aria-label\") || \"\");\r\n        return {\r\n          index: index + 1,\r\n          text: txt.slice(0, 120),\r\n          role: textRole(txt),\r\n          tag: String(el.tagName || \"\").toLowerCase(),\r\n          className: clean(el.className || \"\").slice(0, 140),\r\n          firstFold: el.getBoundingClientRect().top >= 0 && el.getBoundingClientRect().top < Math.min(window.innerHeight, 760),\r\n          rect: rectPack(el)\r\n        };\r\n      });\r\n  }\r\n\r\n  function visibleTextBlocks() {\r\n    var r = root();\r\n    return qsa(\"h1,h2,h3,h4,h5,h6,p,li,summary,span,strong,b,div\", r)\r\n      .filter(function (el) {\r\n        if (!visible(el)) return false;\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        if (!txt || txt.length < 8) return false;\r\n        if (txt.length > 600) return false;\r\n        var childText = qsa(\"h1,h2,h3,h4,h5,h6,p,li,summary,span,strong,b,button,a\", el)\r\n          .filter(function (child) { return child !== el && visible(child); })\r\n          .map(function (child) { return clean(child.innerText || child.textContent || \"\"); })\r\n          .join(\" \");\r\n        if (childText && clean(childText) === txt) return false;\r\n        return true;\r\n      })\r\n      .map(function (el, index) {\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        return {\r\n          index: index + 1,\r\n          text: txt.slice(0, 160),\r\n          tag: String(el.tagName || \"\").toLowerCase(),\r\n          firstFold: el.getBoundingClientRect().top >= 0 && el.getBoundingClientRect().top < Math.min(window.innerHeight, 760),\r\n          rect: rectPack(el)\r\n        };\r\n      })\r\n      .slice(0, 260);\r\n  }\r\n\r\n  function roleCounts(rows) {\r\n    return rows.reduce(function (acc, row) {\r\n      acc[row.role] = (acc[row.role] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function r21R2Signals() {\r\n    return {\r\n      runtimeFlags: [\r\n        \"__PANEL_V4_R21_R2_FIRST_FOLD_CTA_COMPACT_POLISH__\",\r\n        \"__PANEL_V4_R21_R2__\"\r\n      ].filter(function (key) { return !!window[key]; }),\r\n      domCount: qsa(\"[data-gdx-panel-r21-r2],[data-gdx-panel-r21-r2-card],[data-gdx-panel-r21-r2-cta]\").length,\r\n      classCount: qsa(\"[class*='r21-r2'],[class*='R21-R2']\").length,\r\n      styleCount: qsa(\"style[id*='r21'],style[id*='R21']\").filter(function (el) {\r\n        return /r21.?r2/i.test(clean(el.id || el.textContent || \"\"));\r\n      }).length\r\n    };\r\n  }\r\n\r\n  function r22Signals() {\r\n    return {\r\n      runtime: [\r\n        \"__PANEL_V4_R22_R1_PURCHASE_SYNC_LIVE_RECS__\",\r\n        \"__PANEL_V4_R22_R2_PURCHASE_HARD_REPLACE__\",\r\n        \"__PANEL_V4_R22_R3_PURCHASE_ONLY_AFTER_COMPARE__\",\r\n        \"__PANEL_V4_R22_R4_COMPARE_COMMERCE_ONLY__\",\r\n        \"__PANEL_V4_R22_R5_HARD_REMOVE_OLD_RECO__\",\r\n        \"__PANEL_V4_R22_R6_PURGE_ZIPPED_OLD_RECO__\"\r\n      ].filter(function (key) { return !!window[key]; }),\r\n      domCount: qsa(\"#gdxPanelV4R22R2CleanPurchaseArea,[data-gdx-panel-r22-purchase-sync='1'],[data-gdx-panel-r22-r2-clean-mount='1']\").length,\r\n      styleCount: qsa(\"style[id*='r22'],style[id*='R22']\").length\r\n    };\r\n  }\r\n\r\n  function diagnostics() {\r\n    var buttons = visibleButtons();\r\n    var firstFoldButtons = buttons.filter(function (row) { return row.firstFold; });\r\n    var texts = visibleTextBlocks();\r\n    var firstFoldTexts = texts.filter(function (row) { return row.firstFold; });\r\n    var modal = activeModal();\r\n    var c = commerceEl();\r\n\r\n    return {\r\n      viewport: {\r\n        width: window.innerWidth,\r\n        height: window.innerHeight,\r\n        mode: window.innerWidth <= 767 ? \"mobile\" : (window.innerWidth <= 1024 ? \"tablet\" : \"desktop\")\r\n      },\r\n      shellOpen: !!(shell() && !shell().hidden),\r\n      modalOpen: !!modal,\r\n      modalClassName: clean(modal && modal.className || \"\"),\r\n      compareDone: isCompareDone(),\r\n      commerceVisible: !!(c && visible(c)),\r\n      productPoolCount: productPoolCount(),\r\n\r\n      visibleButtonCount: buttons.length,\r\n      firstFoldButtonCount: firstFoldButtons.length,\r\n      visibleButtonRoleCounts: roleCounts(buttons),\r\n      firstFoldButtonRoleCounts: roleCounts(firstFoldButtons),\r\n      firstFoldButtons: firstFoldButtons.slice(0, 30),\r\n\r\n      visibleTextBlockCount: texts.length,\r\n      firstFoldTextBlockCount: firstFoldTexts.length,\r\n      firstFoldTextBlocks: firstFoldTexts.slice(0, 35),\r\n\r\n      r21R2Signals: r21R2Signals(),\r\n      r22Signals: r22Signals(),\r\n\r\n      r17R2Ready: typeof window.debugPanelV4R17R2TopCardDirectVariantAddToCart === \"function\",\r\n      r18R7Ready: typeof window.debugPanelV4R18R7CleanConsolidatedModalCartUx === \"function\",\r\n      r18R8R1Ready: typeof window.debugPanelV4R18R8R1ModalBottomCloseVisibleMountFix === \"function\",\r\n\r\n      noMutationNote: \"Bu audit DOM de\u011Fi\u015Ftirmez, sepete \u00FCr\u00FCn eklemez, score/ranking/product/share/PNG/QR de\u011Fi\u015Ftirmez.\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R26R0OpeningDensityR21R2Audit = function () {\r\n    var d = diagnostics();\r\n\r\n    var densityHigh =\r\n      d.firstFoldButtonCount >= 10 ||\r\n      d.firstFoldTextBlockCount >= 28 ||\r\n      ((d.firstFoldButtonRoleCounts.reason || 0) + (d.firstFoldButtonRoleCounts.setup || 0) + (d.firstFoldButtonRoleCounts.cart || 0)) >= 8;\r\n\r\n    var checks = {\r\n      productPoolReady: d.productPoolCount === 19,\r\n      shellOpen: d.shellOpen,\r\n      modalClosed: d.modalOpen === false,\r\n      compareNotDone: d.compareDone === false,\r\n      commerceNotVisibleBeforeCompare: d.commerceVisible === false,\r\n\r\n      r21R2SignalsReadable: true,\r\n      firstFoldDensityMeasured: true,\r\n      densityHigh: densityHigh,\r\n      ctaRoleMapCaptured: true,\r\n\r\n      r22RuntimeAbsent: d.r22Signals.runtime.length === 0,\r\n      r22DomAbsent: d.r22Signals.domCount === 0,\r\n      r22StyleAbsent: d.r22Signals.styleCount === 0,\r\n\r\n      r17R2StillReady: d.r17R2Ready,\r\n      r18R7StillReady: d.r18R7Ready,\r\n      r18R8R1StillReady: d.r18R8R1Ready,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.shellOpen &&\r\n      checks.modalClosed &&\r\n      checks.compareNotDone &&\r\n      checks.commerceNotVisibleBeforeCompare &&\r\n      checks.r21R2SignalsReadable &&\r\n      checks.firstFoldDensityMeasured &&\r\n      checks.ctaRoleMapCaptured &&\r\n      checks.r22RuntimeAbsent &&\r\n      checks.r22DomAbsent &&\r\n      checks.r22StyleAbsent &&\r\n      checks.r17R2StillReady &&\r\n      checks.r18R7StillReady &&\r\n      checks.r18R8R1StillReady;\r\n\r\n    var recommendation = densityHigh\r\n      ? \"R21-R2 final m\u00FCh\u00FCrlenmesin; a\u00E7\u0131l\u0131\u015F ekran\u0131 NORA destekli yeni CTA sadele\u015Ftirme faz\u0131na ta\u015F\u0131ns\u0131n.\"\r\n      : \"R21-R2 g\u00F6rsel olarak ayr\u0131ca kontrol edilebilir; yo\u011Funluk kritik g\u00F6r\u00FCnm\u00FCyor.\";\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: d,\r\n      interpretation: {\r\n        densityHigh: densityHigh,\r\n        recommendation: recommendation\r\n      },\r\n      decisionCandidate: ok\r\n        ? (densityHigh\r\n          ? \"PANEL-V4-R26-R0-DENSITY-AUDIT-PASS-R21R2-NOT-FINAL-NORA-CTA-REVISION-RECOMMENDED\"\r\n          : \"PANEL-V4-R26-R0-DENSITY-AUDIT-PASS-R21R2-VISUAL-REVIEW-OPTIONAL\")\r\n        : \"HOLD\",\r\n      next: ok\r\n        ? \"Ekran g\u00F6r\u00FCnt\u00FCs\u00FCyle g\u00F6rsel onay al; sonra R26 karar m\u00FChr\u00FC ve R27 Setup/Narrative program\u0131na ge\u00E7.\"\r\n        : \"HOLD: R26 audit i\u00E7in modal kapal\u0131 ve kar\u015F\u0131la\u015Ft\u0131rma yap\u0131lmam\u0131\u015F durumda tekrar \u00E7al\u0131\u015Ft\u0131r.\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R26-R0-R1-OPENING-DENSITY-MODAL-FALSE-POSITIVE-FIX-READONLY\r\n   FAZ:\r\n   R26-R0-R1\r\n\r\n   KISA AMA\u00C7:\r\n   R26-R0'da ana panelin modal san\u0131lmas\u0131 false-positive durumunu d\u00FCzeltir ve a\u00E7\u0131l\u0131\u015F yo\u011Funlu\u011Funu tekrar \u00F6l\u00E7er.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131k.\r\n   Kar\u015F\u0131la\u015Ft\u0131rma yapmadan console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R26R0R1OpeningDensityModalFalsePositiveFix()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R26-R0-R1-OPENING-DENSITY-MODAL-FALSE-POSITIVE-FIX-READONLY\";\r\n  var VERSION = \"PANEL-V4-R26-R0-R1-OPENING-DENSITY-MODAL-FALSE-POSITIVE-FIX-READONLY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var cls = clean(el.className || \"\");\r\n    if (/\\bhidden\\b/i.test(cls)) return false;\r\n    var st = window.getComputedStyle(el);\r\n    if (!st || st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0) return false;\r\n    var r = el.getBoundingClientRect();\r\n    return r.width > 0 && r.height > 0 && r.bottom > 0 && r.right > 0 && r.top < window.innerHeight && r.left < window.innerWidth;\r\n  }\r\n\r\n  function rectPack(el) {\r\n    if (!el) return null;\r\n    var r = el.getBoundingClientRect();\r\n    return {\r\n      left: Math.round(r.left),\r\n      top: Math.round(r.top),\r\n      right: Math.round(r.right),\r\n      bottom: Math.round(r.bottom),\r\n      width: Math.round(r.width),\r\n      height: Math.round(r.height)\r\n    };\r\n  }\r\n\r\n  function root() {\r\n    return document.getElementById(\"gdx-panel-led-v4-root\") || document;\r\n  }\r\n\r\n  function shell() {\r\n    return document.getElementById(\"gdxPanelV4Shell\");\r\n  }\r\n\r\n  function resultEl() {\r\n    return document.getElementById(\"gdxPanelV4ResultPreview\");\r\n  }\r\n\r\n  function commerceEl() {\r\n    return document.getElementById(\"gdxPanelV4CommercePreview\");\r\n  }\r\n\r\n  function isActualModalCandidate(el) {\r\n    if (!el || !visible(el)) return false;\r\n\r\n    var id = clean(el.id || \"\");\r\n    var cls = clean(el.className || \"\");\r\n    var role = clean(el.getAttribute(\"role\") || \"\");\r\n    var ariaModal = clean(el.getAttribute(\"aria-modal\") || \"\");\r\n    var modalAttr = clean(el.getAttribute(\"data-gdx-panel-modal\") || \"\");\r\n\r\n    if (id === \"gdxPanelV4Shell\" || id === \"gdx-panel-led-v4-root\") return false;\r\n    if (/\\bgdx-panel-v4-panel\\b/i.test(cls)) return false;\r\n    if (/\\bgdx-panel-v4-shell\\b/i.test(cls)) return false;\r\n\r\n    var looksModal =\r\n      /\\bgdx-r11-modal\\b/i.test(cls) ||\r\n      /\\bgdx-r11-modal-panel\\b/i.test(cls) ||\r\n      modalAttr === \"1\" ||\r\n      (role === \"dialog\" && ariaModal === \"true\");\r\n\r\n    if (!looksModal) return false;\r\n\r\n    var txt = clean(el.innerText || el.textContent || \"\");\r\n    return /Neden Bu \u00DCr\u00FCn|Setup|Sepete Ekle|Kapat/i.test(txt);\r\n  }\r\n\r\n  function activeModal() {\r\n    return qsa(\"[role='dialog'],.gdx-r11-modal,.gdx-r11-modal-panel,[data-gdx-panel-modal]\")\r\n      .find(isActualModalCandidate) || null;\r\n  }\r\n\r\n  function productPoolCount() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products.length : 0;\r\n  }\r\n\r\n  function isCompareDone() {\r\n    var result = resultEl();\r\n    if (!result) return false;\r\n    var txt = clean(result.innerText || result.textContent || \"\");\r\n    if (!txt) return false;\r\n    if (/Kar\u015F\u0131la\u015Ft\u0131rma sonucunu g\u00F6rmek i\u00E7in iki Panel LED \u00FCr\u00FCn\u00FC se\u00E7in/i.test(txt)) return false;\r\n    if (/\u0130ki \u00FCr\u00FCn se\u00E7ildi/i.test(txt) && /GENEL F\\/P KAR\u015EILA\u015ETIR/i.test(txt)) return false;\r\n    if (/B\u0130R \u00DCR\u00DCN DAHA SE\u00C7\u0130N|\u0130K\u0130 \u00DCR\u00DCN SE\u00C7\u0130N/i.test(txt)) return false;\r\n    if (result.querySelector(\"[data-gdx-panel-fp14-detail-section='1']\")) return true;\r\n    if (result.querySelector(\"[data-gdx-panel-result-jump-nav='1']\")) return true;\r\n    return /F\\/P Kazanan\u0131|Teknik Analiz|Uzman Yorumu|Karar verileri kontrol edildi|14 kriterli/i.test(txt);\r\n  }\r\n\r\n  function textRole(text) {\r\n    text = clean(text);\r\n    if (/Neden Bu \u00DCr\u00FCn/i.test(text)) return \"reason\";\r\n    if (/Setup|Kurulumu G\u00F6r|Kurulumu G\u00F6r/i.test(text)) return \"setup\";\r\n    if (/Sepete Ekle|Sepete Git/i.test(text)) return \"cart\";\r\n    if (/GENEL F\\/P KAR\u015EILA\u015ETIR|Kar\u015F\u0131la\u015Ft\u0131r/i.test(text)) return \"compare\";\r\n    if (/\u00DCr\u00FCn\u00FC \u0130ncele|Detay|\u0130ncele/i.test(text)) return \"product_link\";\r\n    if (/Payla\u015F|PNG|QR|Sonucu/i.test(text)) return \"share\";\r\n    if (/Amaca G\u00F6re|\u00D6ner|Kullan\u0131m|Ama\u00E7/i.test(text)) return \"purpose\";\r\n    return \"other\";\r\n  }\r\n\r\n  function visibleButtons() {\r\n    return qsa(\"button,a,[role='button']\", root())\r\n      .filter(visible)\r\n      .map(function (el, index) {\r\n        var txt = clean(el.innerText || el.textContent || el.getAttribute(\"aria-label\") || \"\");\r\n        return {\r\n          index: index + 1,\r\n          text: txt.slice(0, 120),\r\n          role: textRole(txt),\r\n          tag: String(el.tagName || \"\").toLowerCase(),\r\n          className: clean(el.className || \"\").slice(0, 140),\r\n          firstFold: el.getBoundingClientRect().top >= 0 && el.getBoundingClientRect().top < Math.min(window.innerHeight, 760),\r\n          rect: rectPack(el)\r\n        };\r\n      });\r\n  }\r\n\r\n  function visibleTextBlocks() {\r\n    return qsa(\"h1,h2,h3,h4,h5,h6,p,li,summary,span,strong,b,div\", root())\r\n      .filter(function (el) {\r\n        if (!visible(el)) return false;\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        if (!txt || txt.length < 8) return false;\r\n        if (txt.length > 600) return false;\r\n        var childText = qsa(\"h1,h2,h3,h4,h5,h6,p,li,summary,span,strong,b,button,a\", el)\r\n          .filter(function (child) { return child !== el && visible(child); })\r\n          .map(function (child) { return clean(child.innerText || child.textContent || \"\"); })\r\n          .join(\" \");\r\n        if (childText && clean(childText) === txt) return false;\r\n        return true;\r\n      })\r\n      .map(function (el, index) {\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        return {\r\n          index: index + 1,\r\n          text: txt.slice(0, 160),\r\n          tag: String(el.tagName || \"\").toLowerCase(),\r\n          firstFold: el.getBoundingClientRect().top >= 0 && el.getBoundingClientRect().top < Math.min(window.innerHeight, 760),\r\n          rect: rectPack(el)\r\n        };\r\n      })\r\n      .slice(0, 260);\r\n  }\r\n\r\n  function roleCounts(rows) {\r\n    return rows.reduce(function (acc, row) {\r\n      acc[row.role] = (acc[row.role] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function r21R2Signals() {\r\n    return {\r\n      runtimeFlags: [\r\n        \"__PANEL_V4_R21_R2_FIRST_FOLD_CTA_COMPACT_POLISH__\",\r\n        \"__PANEL_V4_R21_R2__\"\r\n      ].filter(function (key) { return !!window[key]; }),\r\n      domCount: qsa(\"[data-gdx-panel-r21-r2],[data-gdx-panel-r21-r2-card],[data-gdx-panel-r21-r2-cta]\").length,\r\n      classCount: qsa(\"[class*='r21-r2'],[class*='R21-R2']\").length,\r\n      styleCount: qsa(\"style[id*='r21'],style[id*='R21']\").filter(function (el) {\r\n        return /r21.?r2/i.test(clean(el.id || el.textContent || \"\"));\r\n      }).length\r\n    };\r\n  }\r\n\r\n  function r22Signals() {\r\n    return {\r\n      runtime: [\r\n        \"__PANEL_V4_R22_R1_PURCHASE_SYNC_LIVE_RECS__\",\r\n        \"__PANEL_V4_R22_R2_PURCHASE_HARD_REPLACE__\",\r\n        \"__PANEL_V4_R22_R3_PURCHASE_ONLY_AFTER_COMPARE__\",\r\n        \"__PANEL_V4_R22_R4_COMPARE_COMMERCE_ONLY__\",\r\n        \"__PANEL_V4_R22_R5_HARD_REMOVE_OLD_RECO__\",\r\n        \"__PANEL_V4_R22_R6_PURGE_ZIPPED_OLD_RECO__\"\r\n      ].filter(function (key) { return !!window[key]; }),\r\n      domCount: qsa(\"#gdxPanelV4R22R2CleanPurchaseArea,[data-gdx-panel-r22-purchase-sync='1'],[data-gdx-panel-r22-r2-clean-mount='1']\").length,\r\n      styleCount: qsa(\"style[id*='r22'],style[id*='R22']\").length\r\n    };\r\n  }\r\n\r\n  function diagnostics() {\r\n    var buttons = visibleButtons();\r\n    var firstFoldButtons = buttons.filter(function (row) { return row.firstFold; });\r\n    var texts = visibleTextBlocks();\r\n    var firstFoldTexts = texts.filter(function (row) { return row.firstFold; });\r\n    var modal = activeModal();\r\n    var c = commerceEl();\r\n\r\n    return {\r\n      viewport: {\r\n        width: window.innerWidth,\r\n        height: window.innerHeight,\r\n        mode: window.innerWidth <= 767 ? \"mobile\" : (window.innerWidth <= 1024 ? \"tablet\" : \"desktop\")\r\n      },\r\n      shellOpen: !!(shell() && !shell().hidden),\r\n      actualModalOpen: !!modal,\r\n      actualModalClassName: clean(modal && modal.className || \"\"),\r\n      compareDone: isCompareDone(),\r\n      commerceVisible: !!(c && visible(c)),\r\n      productPoolCount: productPoolCount(),\r\n\r\n      visibleButtonCount: buttons.length,\r\n      firstFoldButtonCount: firstFoldButtons.length,\r\n      visibleButtonRoleCounts: roleCounts(buttons),\r\n      firstFoldButtonRoleCounts: roleCounts(firstFoldButtons),\r\n      firstFoldButtons: firstFoldButtons.slice(0, 30),\r\n\r\n      visibleTextBlockCount: texts.length,\r\n      firstFoldTextBlockCount: firstFoldTexts.length,\r\n      firstFoldTextBlocks: firstFoldTexts.slice(0, 35),\r\n\r\n      r21R2Signals: r21R2Signals(),\r\n      r22Signals: r22Signals(),\r\n\r\n      r17R2Ready: typeof window.debugPanelV4R17R2TopCardDirectVariantAddToCart === \"function\",\r\n      r18R7Ready: typeof window.debugPanelV4R18R7CleanConsolidatedModalCartUx === \"function\",\r\n      r18R8R1Ready: typeof window.debugPanelV4R18R8R1ModalBottomCloseVisibleMountFix === \"function\",\r\n\r\n      noMutationNote: \"Bu audit DOM de\u011Fi\u015Ftirmez, sepete \u00FCr\u00FCn eklemez, score/ranking/product/share/PNG/QR de\u011Fi\u015Ftirmez.\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R26R0R1OpeningDensityModalFalsePositiveFix = function () {\r\n    var d = diagnostics();\r\n\r\n    var densityHigh =\r\n      d.firstFoldButtonCount >= 9 ||\r\n      d.firstFoldTextBlockCount >= 28 ||\r\n      ((d.firstFoldButtonRoleCounts.reason || 0) + (d.firstFoldButtonRoleCounts.setup || 0) + (d.firstFoldButtonRoleCounts.cart || 0)) >= 6;\r\n\r\n    var checks = {\r\n      productPoolReady: d.productPoolCount === 19,\r\n      shellOpen: d.shellOpen,\r\n      actualModalClosed: d.actualModalOpen === false,\r\n      compareNotDone: d.compareDone === false,\r\n      commerceNotVisibleBeforeCompare: d.commerceVisible === false,\r\n\r\n      r21R2SignalsReadable: true,\r\n      firstFoldDensityMeasured: true,\r\n      densityHigh: densityHigh,\r\n      ctaRoleMapCaptured: true,\r\n\r\n      r22RuntimeAbsent: d.r22Signals.runtime.length === 0,\r\n      r22DomAbsent: d.r22Signals.domCount === 0,\r\n      r22StyleAbsent: d.r22Signals.styleCount === 0,\r\n\r\n      r17R2StillReady: d.r17R2Ready,\r\n      r18R7StillReady: d.r18R7Ready,\r\n      r18R8R1StillReady: d.r18R8R1Ready,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.shellOpen &&\r\n      checks.actualModalClosed &&\r\n      checks.compareNotDone &&\r\n      checks.commerceNotVisibleBeforeCompare &&\r\n      checks.r21R2SignalsReadable &&\r\n      checks.firstFoldDensityMeasured &&\r\n      checks.ctaRoleMapCaptured &&\r\n      checks.r22RuntimeAbsent &&\r\n      checks.r22DomAbsent &&\r\n      checks.r22StyleAbsent &&\r\n      checks.r17R2StillReady &&\r\n      checks.r18R7StillReady &&\r\n      checks.r18R8R1StillReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: d,\r\n      interpretation: {\r\n        r26R0FalsePositiveFixed: true,\r\n        densityHigh: densityHigh,\r\n        recommendation: densityHigh\r\n          ? \"R21-R2 final m\u00FCh\u00FCrlenmesin; a\u00E7\u0131l\u0131\u015F ekran\u0131 NORA destekli CTA sadele\u015Ftirme faz\u0131na ta\u015F\u0131ns\u0131n.\"\r\n          : \"Yo\u011Funluk kritik de\u011Fil; g\u00F6rsel onayla R21-R2 korunabilir.\"\r\n      },\r\n      decisionCandidate: ok\r\n        ? (densityHigh\r\n          ? \"PANEL-V4-R26-R0-R1-PASS-R21R2-NOT-FINAL-NORA-CTA-REVISION-RECOMMENDED\"\r\n          : \"PANEL-V4-R26-R0-R1-PASS-R21R2-VISUAL-REVIEW-OPTIONAL\")\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-R0-SETUP-NARRATIVE-CDN-MANIFEST-READONLY-AUDIT\r\n   FAZ:\r\n   R27-R0\r\n\r\n   KISA AMA\u00C7:\r\n   Setup modal\u0131, \u00FCr\u00FCn family/watt/role sinyalleri, Narrative/NORA dili ve CDN g\u00F6rsel manifest ihtiyac\u0131n\u0131 okur.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131k.\r\n   Bir \u00F6neri kart\u0131nda Kurulumu G\u00F6r modal\u0131 a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27R0SetupNarrativeCdnManifestAudit()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-R0-SETUP-NARRATIVE-CDN-MANIFEST-READONLY-AUDIT\";\r\n  var VERSION = \"PANEL-V4-R27-R0-SETUP-NARRATIVE-CDN-MANIFEST-READONLY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function qsa(sel, root) {\r\n    return Array.prototype.slice.call((root || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var cls = clean(el.className || \"\");\r\n    if (/\\bhidden\\b/i.test(cls)) return false;\r\n    var st = window.getComputedStyle(el);\r\n    if (!st || st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0) return false;\r\n    var r = el.getBoundingClientRect();\r\n    return r.width > 0 && r.height > 0 && r.bottom > 0 && r.right > 0 && r.top < window.innerHeight && r.left < window.innerWidth;\r\n  }\r\n\r\n  function rectPack(el) {\r\n    if (!el) return null;\r\n    var r = el.getBoundingClientRect();\r\n    return {\r\n      left: Math.round(r.left),\r\n      top: Math.round(r.top),\r\n      right: Math.round(r.right),\r\n      bottom: Math.round(r.bottom),\r\n      width: Math.round(r.width),\r\n      height: Math.round(r.height)\r\n    };\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productText(p) {\r\n    return clean([\r\n      p && p.title,\r\n      p && p.smartTitle,\r\n      p && p.shortTitle,\r\n      p && p.product_type,\r\n      p && p.type,\r\n      Array.isArray(p && p.tags) ? p.tags.join(\" \") : (p && p.tags),\r\n      p && p.vendor,\r\n      p && p.body_html,\r\n      p && p.description,\r\n      p && p.handle\r\n    ].filter(Boolean).join(\" \"));\r\n  }\r\n\r\n  function inferFamily(text) {\r\n    var t = lower(text);\r\n    var hasRgb = /\\brgb\\b|hs\u0131|hsi|renk efekt|fx|0\\s*[-\u2013]\\s*360|360\\s*\u00B0|color effect|creative/i.test(t);\r\n    var hasBicolor = /bi.?color|bi color|bicolor|\u00E7ift renk|cct|kelvin|2500k|2700k|3200k|5600k|6500k|8500k/i.test(t);\r\n    var hasDaylight = /daylight|g\u00FCn \u0131\u015F\u0131\u011F\u0131|5600k/i.test(t) && !hasBicolor && !hasRgb;\r\n\r\n    if (hasRgb) return \"rgb\";\r\n    if (hasBicolor) return \"bicolor\";\r\n    if (hasDaylight) return \"daylight\";\r\n    return \"unknown\";\r\n  }\r\n\r\n  function inferWatt(text) {\r\n    var t = clean(text);\r\n    var matches = Array.prototype.slice.call(t.matchAll(/(\\d{2,4})\\s*w\\b/gi))\r\n      .map(function (m) { return Number(m[1]); })\r\n      .filter(function (n) { return isFinite(n) && n > 0 && n < 2000; });\r\n\r\n    var watt = matches.length ? Math.max.apply(null, matches) : null;\r\n    var band = \"unknown\";\r\n    if (watt != null) {\r\n      if (watt <= 50) band = \"low\";\r\n      else if (watt <= 100) band = \"mid\";\r\n      else if (watt <= 180) band = \"high\";\r\n      else band = \"pro\";\r\n    }\r\n\r\n    return { watt: watt, wattBand: band };\r\n  }\r\n\r\n  function inferRoles(family, wattBand, text) {\r\n    var roles = [];\r\n    if (family === \"rgb\") {\r\n      roles.push(\"rgb_accent\", \"rgb_background_wash\", \"background_light\");\r\n      if (wattBand === \"high\" || wattBand === \"pro\") roles.push(\"key_light_possible\", \"creative_key\");\r\n      else roles.push(\"support_light\");\r\n    }\r\n    if (family === \"bicolor\" || family === \"daylight\") {\r\n      roles.push(\"key_light\", \"fill_light\");\r\n      if (wattBand === \"high\" || wattBand === \"pro\") roles.push(\"studio_key\", \"clinical_soft_front\");\r\n      if (wattBand === \"low\") roles.push(\"close_range_support\");\r\n    }\r\n    if (/batarya|battery|np-f|v-mount|portable|mobil/i.test(text)) roles.push(\"portable_interview_light\");\r\n    if (!roles.length) roles.push(\"needs_manual_role_mapping\");\r\n    return roles;\r\n  }\r\n\r\n  function productRows() {\r\n    return productPool().map(function (p, index) {\r\n      var text = productText(p);\r\n      var family = inferFamily(text);\r\n      var watt = inferWatt(text);\r\n      var roles = inferRoles(family, watt.wattBand, text);\r\n      return {\r\n        index: index + 1,\r\n        title: clean(p && (p.smartTitle || p.shortTitle || p.title || p.handle || \"\")),\r\n        handle: clean(p && p.handle || \"\"),\r\n        family: family,\r\n        watt: watt.watt,\r\n        wattBand: watt.wattBand,\r\n        inferredRoles: roles,\r\n        hasRgb: family === \"rgb\",\r\n        needsFamilyReview: family === \"unknown\",\r\n        needsWattReview: watt.wattBand === \"unknown\",\r\n        needsRoleReview: roles.indexOf(\"needs_manual_role_mapping\") > -1\r\n      };\r\n    });\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return rows.reduce(function (acc, row) {\r\n      var k = row[key] || \"unknown\";\r\n      acc[k] = (acc[k] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function activeSetupModal() {\r\n    var candidates = qsa(\"[role='dialog'],.gdx-r11-modal,.gdx-r11-modal-panel,[data-gdx-panel-modal]\")\r\n      .filter(visible)\r\n      .filter(function (el) {\r\n        var cls = clean(el.className || \"\");\r\n        if (/\\bgdx-panel-v4-panel\\b/i.test(cls)) return false;\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        return /Setup|Kurulumu G\u00F6r|Kurulumu G\u00F6r|Kurulum|I\u015F\u0131k yerle\u015Fimi|Sepete Ekle|Kapat/i.test(txt);\r\n      });\r\n\r\n    return candidates.sort(function (a, b) {\r\n      return clean(b.innerText || b.textContent || \"\").length - clean(a.innerText || a.textContent || \"\").length;\r\n    })[0] || null;\r\n  }\r\n\r\n  function modalDiagnostics() {\r\n    var modal = activeSetupModal();\r\n    if (!modal) {\r\n      return {\r\n        setupModalOpen: false,\r\n        note: \"Setup modal\u0131 a\u00E7\u0131k de\u011Fil veya tespit edilemedi.\"\r\n      };\r\n    }\r\n\r\n    var txt = clean(modal.innerText || modal.textContent || \"\");\r\n    var imgs = qsa(\"img\", modal).filter(visible);\r\n    var cdnImgs = imgs.filter(function (img) {\r\n      return /cdn\\.shopify\\.com/i.test(clean(img.currentSrc || img.src || img.getAttribute(\"src\")));\r\n    });\r\n\r\n    var roleTerms = {\r\n      keyLight: /ana \u0131\u015F\u0131k|key light/i.test(txt),\r\n      fillLight: /dolgu|fill light/i.test(txt),\r\n      backgroundLight: /arka plan|fon \u0131\u015F\u0131\u011F\u0131|background/i.test(txt),\r\n      rimLight: /kenar|rim light|kontur/i.test(txt),\r\n      rgbAccent: /rgb|renk|atmosfer|accent|vurgu/i.test(txt),\r\n      wattBand: /watt|g\u00FC\u00E7 band\u0131|\u0131\u015F\u0131k potansiyeli|yak\u0131n plan|destek \u0131\u015F\u0131\u011F\u0131/i.test(txt),\r\n      placement: /45|derece|a\u00E7\u0131|konum|yerle\u015F|mesafe|kar\u015F\u0131dan|yandan/i.test(txt),\r\n      honestRole: /ana \u0131\u015F\u0131k olarak de\u011Fil|destek|arka plan|vurgu|daha do\u011Fru|daha sa\u011Fl\u0131kl\u0131/i.test(txt),\r\n      nora: /NORA|Nora/i.test(txt)\r\n    };\r\n\r\n    return {\r\n      setupModalOpen: true,\r\n      modalClassName: clean(modal.className || \"\"),\r\n      modalRect: rectPack(modal),\r\n      textLength: txt.length,\r\n      textSample: txt.slice(0, 900),\r\n      hasImage: imgs.length > 0,\r\n      imageCount: imgs.length,\r\n      cdnImageCount: cdnImgs.length,\r\n      hasShopifyCdnImage: cdnImgs.length > 0,\r\n      roleTerms: roleTerms,\r\n      roleTermCoverageCount: Object.keys(roleTerms).filter(function (k) { return !!roleTerms[k]; }).length,\r\n      hasHybridVisualPotential: imgs.length > 0 || qsa(\"svg,canvas\", modal).filter(visible).length > 0,\r\n      hasCartButton: qsa(\"button,a\", modal).filter(visible).some(function (el) { return /Sepete Ekle|Sepete Git/i.test(clean(el.textContent)); }),\r\n      hasCloseButton: qsa(\"button,a\", modal).filter(visible).some(function (el) { return /^Kapat$|Modal\u0131 kapat/i.test(clean(el.textContent || el.getAttribute(\"aria-label\"))); })\r\n    };\r\n  }\r\n\r\n  function topRecommendationCards() {\r\n    return qsa(\"article,div,li\", document)\r\n      .filter(visible)\r\n      .filter(function (el) {\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        return txt.length < 3500 &&\r\n          /Neden Bu \u00DCr\u00FCn/i.test(txt) &&\r\n          /Setup|Kurulumu G\u00F6r|Kurulumu G\u00F6r/i.test(txt) &&\r\n          /Sepete Ekle/i.test(txt);\r\n      })\r\n      .slice(0, 8)\r\n      .map(function (el, index) {\r\n        var txt = clean(el.innerText || el.textContent || \"\");\r\n        var title = \"\";\r\n        qsa(\"h1,h2,h3,h4,strong,b,span,div\", el).some(function (node) {\r\n          var t = clean(node.textContent || \"\");\r\n          if (/^(GDX|Godox)\\s+/i.test(t) && t.length <= 140) {\r\n            title = t;\r\n            return true;\r\n          }\r\n          return false;\r\n        });\r\n        return {\r\n          index: index + 1,\r\n          title: title,\r\n          hasReason: /Neden Bu \u00DCr\u00FCn/i.test(txt),\r\n          hasSetup: /Setup|Kurulumu G\u00F6r|Kurulumu G\u00F6r/i.test(txt),\r\n          hasCart: /Sepete Ekle/i.test(txt),\r\n          hasNora: /NORA|Nora/i.test(txt),\r\n          hasRoleLanguage: /ana \u0131\u015F\u0131k|dolgu|arka plan|destek|rgb|vurgu|rol/i.test(txt),\r\n          rect: rectPack(el)\r\n        };\r\n      });\r\n  }\r\n\r\n  function setupGlobalSignals() {\r\n    var keys = Object.keys(window).filter(function (k) {\r\n      return /^GDX|PANEL|NORA|__PANEL/i.test(k) || /SETUP|SCENARIO|NARRATIVE|VISUAL|NORA/i.test(k);\r\n    }).slice(0, 160);\r\n\r\n    return {\r\n      hasSetupVisualManifest: !!(window.GDX_PANEL_SETUP_VISUALS || window.GDX_PANEL_LED_V4_SETUP_VISUALS),\r\n      hasSetupScenarioLibrary: !!(window.GDX_PANEL_SETUP_SCENARIOS || window.GDX_PANEL_LED_V4_SETUP_SCENARIOS),\r\n      hasNoraNarrativeLibrary: !!(window.GDX_PANEL_NORA_LIBRARY || window.GDX_PANEL_LED_V4_NORA_LIBRARY),\r\n      hasNarrativeLibrary: !!(window.GDX_PANEL_NARRATIVE_LIBRARY || window.GDX_PANEL_LED_V4_NARRATIVE_LIBRARY),\r\n      matchingWindowKeys: keys\r\n    };\r\n  }\r\n\r\n  function r22Signals() {\r\n    return {\r\n      runtime: [\r\n        \"__PANEL_V4_R22_R1_PURCHASE_SYNC_LIVE_RECS__\",\r\n        \"__PANEL_V4_R22_R2_PURCHASE_HARD_REPLACE__\",\r\n        \"__PANEL_V4_R22_R3_PURCHASE_ONLY_AFTER_COMPARE__\",\r\n        \"__PANEL_V4_R22_R4_COMPARE_COMMERCE_ONLY__\",\r\n        \"__PANEL_V4_R22_R5_HARD_REMOVE_OLD_RECO__\",\r\n        \"__PANEL_V4_R22_R6_PURGE_ZIPPED_OLD_RECO__\"\r\n      ].filter(function (key) { return !!window[key]; }),\r\n      domCount: qsa(\"#gdxPanelV4R22R2CleanPurchaseArea,[data-gdx-panel-r22-purchase-sync='1'],[data-gdx-panel-r22-r2-clean-mount='1']\").length,\r\n      styleCount: qsa(\"style[id*='r22'],style[id*='R22']\").length\r\n    };\r\n  }\r\n\r\n  function diagnostics() {\r\n    var rows = productRows();\r\n    var modal = modalDiagnostics();\r\n    var globals = setupGlobalSignals();\r\n    var recCards = topRecommendationCards();\r\n    var r22 = r22Signals();\r\n\r\n    var missingFamily = rows.filter(function (r) { return r.needsFamilyReview; });\r\n    var missingWatt = rows.filter(function (r) { return r.needsWattReview; });\r\n\r\n    return {\r\n      viewport: {\r\n        width: window.innerWidth,\r\n        height: window.innerHeight,\r\n        mode: window.innerWidth <= 767 ? \"mobile\" : (window.innerWidth <= 1024 ? \"tablet\" : \"desktop\")\r\n      },\r\n      productPoolCount: productPool().length,\r\n      productFamilyCounts: countBy(rows, \"family\"),\r\n      wattBandCounts: countBy(rows, \"wattBand\"),\r\n      productsNeedingFamilyReviewCount: missingFamily.length,\r\n      productsNeedingWattReviewCount: missingWatt.length,\r\n      productSamples: rows.slice(0, 19),\r\n      setupModal: modal,\r\n      topRecommendationCards: recCards,\r\n      topRecommendationCardCount: recCards.length,\r\n      globalSetupSignals: globals,\r\n      r22Signals: r22,\r\n      noMutationNote: \"Bu audit DOM de\u011Fi\u015Ftirmez, sepete \u00FCr\u00FCn eklemez, score/ranking/product/share/PNG/QR de\u011Fi\u015Ftirmez.\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27R0SetupNarrativeCdnManifestAudit = function () {\r\n    var d = diagnostics();\r\n\r\n    var modal = d.setupModal;\r\n    var globals = d.globalSetupSignals;\r\n\r\n    var checks = {\r\n      productPoolReady: d.productPoolCount === 19,\r\n      setupModalOpen: modal.setupModalOpen === true,\r\n      familySignalsCaptured: Object.keys(d.productFamilyCounts || {}).length > 0,\r\n      wattSignalsCaptured: Object.keys(d.wattBandCounts || {}).length > 0,\r\n      recommendationCardsReadable: d.topRecommendationCardCount >= 1,\r\n\r\n      setupModalHasCartAndClose: modal.setupModalOpen ? !!(modal.hasCartButton && modal.hasCloseButton) : false,\r\n      setupModalHasRoleLanguage: modal.setupModalOpen ? modal.roleTermCoverageCount >= 2 : false,\r\n      setupModalHasNoraLanguage: modal.setupModalOpen ? !!modal.roleTerms.nora : false,\r\n      setupModalHasVisualOrSchema: modal.setupModalOpen ? !!modal.hasHybridVisualPotential : false,\r\n      setupModalHasCdnImage: modal.setupModalOpen ? !!modal.hasShopifyCdnImage : false,\r\n\r\n      setupVisualManifestExists: !!globals.hasSetupVisualManifest,\r\n      setupScenarioLibraryExists: !!globals.hasSetupScenarioLibrary,\r\n      noraNarrativeLibraryExists: !!globals.hasNoraNarrativeLibrary,\r\n      generalNarrativeLibraryExists: !!globals.hasNarrativeLibrary,\r\n\r\n      r22RuntimeAbsent: d.r22Signals.runtime.length === 0,\r\n      r22DomAbsent: d.r22Signals.domCount === 0,\r\n      r22StyleAbsent: d.r22Signals.styleCount === 0,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.setupModalOpen &&\r\n      checks.familySignalsCaptured &&\r\n      checks.wattSignalsCaptured &&\r\n      checks.recommendationCardsReadable &&\r\n      checks.setupModalHasCartAndClose &&\r\n      checks.r22RuntimeAbsent &&\r\n      checks.r22DomAbsent &&\r\n      checks.r22StyleAbsent;\r\n\r\n    var gaps = [];\r\n    if (!checks.setupModalHasRoleLanguage) gaps.push(\"Setup modal\u0131nda \u00FCr\u00FCn rol dili zay\u0131f: ana \u0131\u015F\u0131k/dolgu/arka plan/RGB vurgu ayr\u0131m\u0131 geni\u015Fletilmeli.\");\r\n    if (!checks.setupModalHasNoraLanguage) gaps.push(\"Setup modal\u0131nda NORA ikinci ses dili yok.\");\r\n    if (!checks.setupModalHasVisualOrSchema) gaps.push(\"Setup modal\u0131nda g\u00F6rsel/\u015Fema katman\u0131 yok veya tespit edilemedi.\");\r\n    if (!checks.setupModalHasCdnImage) gaps.push(\"Setup modal\u0131nda CDN g\u00F6rsel mapping yok veya kullan\u0131lm\u0131yor.\");\r\n    if (!checks.setupVisualManifestExists) gaps.push(\"CDN setup visual manifest hen\u00FCz yok.\");\r\n    if (!checks.setupScenarioLibraryExists) gaps.push(\"Setup scenario library hen\u00FCz yok.\");\r\n    if (!checks.noraNarrativeLibraryExists) gaps.push(\"NORA narrative library hen\u00FCz yok.\");\r\n    if (d.productsNeedingFamilyReviewCount) gaps.push(\"Baz\u0131 \u00FCr\u00FCnlerde family resolver manuel kontrol istiyor.\");\r\n    if (d.productsNeedingWattReviewCount) gaps.push(\"Baz\u0131 \u00FCr\u00FCnlerde wattBand resolver manuel kontrol istiyor.\");\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: d,\r\n      gapList: gaps,\r\n      decisionCandidate: ok\r\n        ? \"PANEL-V4-R27-R0-SETUP-NARRATIVE-CDN-MANIFEST-AUDIT-PASS-NEEDS-DESIGN-PHASE\"\r\n        : \"HOLD\",\r\n      next: ok\r\n        ? \"R27-A1 \u00FCr\u00FCn family/watt/role resolver tasla\u011F\u0131na ge\u00E7; patch de\u011Fil, \u00F6nce schema plan\u0131.\"\r\n        : \"Setup modal\u0131 a\u00E7\u0131kken tekrar \u00E7al\u0131\u015Ft\u0131r veya selector eksikleri incelenmeli.\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A0-SOURCE-RESEARCH-NARRATIVE-SETUP-DEEP-AUDIT\r\n   FAZ:\r\n   R27-A0\r\n\r\n   KISA AMA\u00C7:\r\n   A1 resolver'a ge\u00E7meden \u00F6nce mevcut Narrative / Setup / Schematic / Purpose kaynaklar\u0131n\u0131 ara\u015Ft\u0131r\u0131r ve hangi kaynaklar\u0131n zenginle\u015Ftirilece\u011Fini \u00E7\u0131kar\u0131r.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A0SourceResearchNarrativeSetupDeepAudit()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A0-SOURCE-RESEARCH-NARRATIVE-SETUP-DEEP-AUDIT\";\r\n  var VERSION = \"PANEL-V4-R27-A0-SOURCE-RESEARCH-NARRATIVE-SETUP-DEEP-AUDIT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function ownKeys(obj) {\r\n    if (!obj || (typeof obj !== \"object\" && typeof obj !== \"function\")) return [];\r\n    try { return Object.keys(obj); } catch (e) { return []; }\r\n  }\r\n\r\n  function sample(value) {\r\n    if (value == null) return null;\r\n    if (typeof value === \"string\") return clean(value).slice(0, 260);\r\n    if (typeof value === \"number\" || typeof value === \"boolean\") return value;\r\n    if (Array.isArray(value)) return {\r\n      type: \"array\",\r\n      length: value.length,\r\n      first: value.length ? sample(value[0]) : null\r\n    };\r\n    if (typeof value === \"function\") return {\r\n      type: \"function\",\r\n      name: value.name || \"\"\r\n    };\r\n    if (typeof value === \"object\") {\r\n      var keys = ownKeys(value).slice(0, 24);\r\n      var out = { type: \"object\", keyCount: ownKeys(value).length, keys: keys };\r\n      keys.slice(0, 8).forEach(function (k) {\r\n        try { out[k] = sample(value[k]); } catch (e) {}\r\n      });\r\n      return out;\r\n    }\r\n    return String(value).slice(0, 120);\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productText(p) {\r\n    return clean([\r\n      p && p.title,\r\n      p && p.smartTitle,\r\n      p && p.shortTitle,\r\n      p && p.handle,\r\n      p && p.product_type,\r\n      p && p.type,\r\n      Array.isArray(p && p.tags) ? p.tags.join(\" \") : (p && p.tags),\r\n      p && p.body_html,\r\n      p && p.description\r\n    ].filter(Boolean).join(\" \"));\r\n  }\r\n\r\n  function sourceByName(name) {\r\n    try { return window[name]; } catch (e) { return undefined; }\r\n  }\r\n\r\n  function sourceSummary(name) {\r\n    var value = sourceByName(name);\r\n    var exists = value !== undefined && value !== null;\r\n    var keys = ownKeys(value);\r\n    var flatText = \"\";\r\n    try {\r\n      flatText = clean(JSON.stringify(value)).slice(0, 6000);\r\n    } catch (e) {\r\n      flatText = \"\";\r\n    }\r\n\r\n    var t = lower(flatText);\r\n\r\n    return {\r\n      name: name,\r\n      exists: exists,\r\n      type: exists ? (Array.isArray(value) ? \"array\" : typeof value) : \"missing\",\r\n      keyCount: keys.length,\r\n      keys: keys.slice(0, 40),\r\n      hasPurpose: /purpose|ama\u00E7|usecase|kullan\u0131m/i.test(t),\r\n      hasSubPurpose: /subpurpose|alt ama\u00E7|altamac|subPurpose/i.test(flatText),\r\n      hasSetup: /setup|kurulum|yerle\u015Fim|schematic/i.test(t),\r\n      hasRole: /role|rol|key light|fill|ana \u0131\u015F\u0131k|dolgu|background|arka plan/i.test(t),\r\n      hasRgb: /rgb|accent|renk|background wash|atmosfer/i.test(t),\r\n      hasWatt: /watt|power|g\u00FC\u00E7/i.test(t),\r\n      hasCdn: /cdn\\.shopify|cdnUrl|visual|image|g\u00F6rsel/i.test(t),\r\n      hasNora: /nora/i.test(t),\r\n      sample: sample(value)\r\n    };\r\n  }\r\n\r\n  function keySearch() {\r\n    return Object.keys(window)\r\n      .filter(function (k) {\r\n        return /GDX_PANEL_LED_V4|PANEL|NARRATIVE|SETUP|SCHEMATIC|PURPOSE|ROLE|NORA|VISUAL|CDN/i.test(k);\r\n      })\r\n      .sort()\r\n      .slice(0, 240);\r\n  }\r\n\r\n  function likelySources() {\r\n    var preferred = [\r\n      \"GDX_PANEL_LED_V4_NARRATIVE_LIBRARY\",\r\n      \"GDX_PANEL_LED_V4_PERSONA_LIBRARY\",\r\n      \"GDX_PANEL_LED_V4_PANEL_FAMILY_CONTEXT\",\r\n      \"GDX_PANEL_LED_V4_P27_RESEARCH_REGISTRY\",\r\n      \"GDX_PANEL_LED_V4_P27_COMMENT_ASSEMBLER\",\r\n      \"GDX_PANEL_LED_V4_P27_ROLE_SETUP_PREVIEW\",\r\n      \"GDX_PANEL_LED_V4_P28_SCHEMATIC_REGISTRY\",\r\n      \"GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_PREVIEW\",\r\n      \"GDX_PANEL_LED_V4_P33_CANONICAL_SCHEMATIC_ENGINE\",\r\n      \"GDX_PANEL_LED_V4_P39_NARRATIVE_VARIATION_LIBRARY\",\r\n      \"GDX_PANEL_LED_V4_P41_2_SETUP_ROLE_ENGINE_V2_PREVIEW\",\r\n      \"GDX_PANEL_LED_V4_P41_4_LIVE_SETUP_ROLE_APPLY\",\r\n      \"GDX_PANEL_LED_V4_RECOMMENDER\",\r\n      \"GDX_PANEL_LED_V4_PURPOSE_SCORE_SOURCE\",\r\n      \"GDX_PANEL_NORA_LIBRARY\",\r\n      \"GDX_PANEL_LED_V4_NORA_LIBRARY\",\r\n      \"GDX_PANEL_SETUP_SCENARIOS\",\r\n      \"GDX_PANEL_SETUP_VISUALS\",\r\n      \"GDX_PANEL_LED_V4_SETUP_SCENARIOS\",\r\n      \"GDX_PANEL_LED_V4_SETUP_VISUALS\"\r\n    ];\r\n\r\n    var dynamic = keySearch().filter(function (k) {\r\n      return /NARRATIVE|SETUP|SCHEMATIC|ROLE|NORA|VISUAL|PURPOSE|P27|P28|P29|P33|P39|P41/i.test(k);\r\n    });\r\n\r\n    var all = preferred.concat(dynamic).filter(function (k, i, arr) {\r\n      return arr.indexOf(k) === i;\r\n    });\r\n\r\n    return all.map(sourceSummary);\r\n  }\r\n\r\n  function classifyProduct(p, index) {\r\n    var title = clean(p && (p.smartTitle || p.shortTitle || p.title || p.handle || \"\"));\r\n    var handle = clean(p && p.handle || \"\");\r\n    var text = productText(p);\r\n    var combined = lower([title, handle, text].join(\" \"));\r\n\r\n    var family = \"unknown\";\r\n    var familyNotes = [];\r\n\r\n    if (/\\brgbww\\b|\\brgbwy\\b|\\brgb\\b|600rgb|1000r|1500r|750r|ldx50r|rgb led|hs\u0131|hsi|renk efekt|fx\\b|0\\s*[-\u2013]\\s*360|360\\s*\u00B0/i.test(combined)) {\r\n      family = \"rgb\";\r\n      familyNotes.push(\"rgb_signal\");\r\n    } else if (/bi.?color|bi color|bicolor|\u00E7ift renk|cct|kelvin|p300ts|gx-300|p-750c|p260c|2020c|cf-300c|1024w|1700w|900w|cf-120w/i.test(combined)) {\r\n      family = \"bicolor\";\r\n      familyNotes.push(\"bicolor_signal\");\r\n    } else if (/daylight|g\u00FCn \u0131\u015F\u0131\u011F\u0131|5600k|2020w/i.test(combined)) {\r\n      family = \"daylight_or_fixed_white\";\r\n      familyNotes.push(\"daylight_or_fixed_white_signal\");\r\n    }\r\n\r\n    var wattMatches = [];\r\n    var re = /(\\d{2,4})\\s*(?:w|watt)\\b/gi;\r\n    var m;\r\n    while ((m = re.exec([title, handle, text].join(\" \"))) !== null) {\r\n      var n = Number(m[1]);\r\n      if (isFinite(n) && n > 0 && n < 2000) wattMatches.push({ value: n, token: m[0], index: m.index });\r\n    }\r\n\r\n    var watt = wattMatches.length ? wattMatches[wattMatches.length - 1].value : null;\r\n    var wattBand = \"unknown\";\r\n    if (watt != null) {\r\n      if (watt <= 50) wattBand = \"low\";\r\n      else if (watt <= 100) wattBand = \"mid\";\r\n      else if (watt <= 180) wattBand = \"high\";\r\n      else wattBand = \"pro\";\r\n    }\r\n\r\n    var needsResearch = [];\r\n    if (family === \"unknown\") needsResearch.push(\"family_manual_source_needed\");\r\n    if (wattBand === \"unknown\") needsResearch.push(\"watt_manual_source_needed\");\r\n    if (family === \"rgb\") needsResearch.push(\"rgb_role_scenario_needed\");\r\n    if (/2020w|1024w|1700w|900w/i.test(combined) && wattMatches.length > 1) needsResearch.push(\"model_number_vs_real_watt_review\");\r\n\r\n    return {\r\n      index: index + 1,\r\n      title: title,\r\n      handle: handle,\r\n      family: family,\r\n      familyNotes: familyNotes,\r\n      watt: watt,\r\n      wattBand: wattBand,\r\n      wattCandidates: wattMatches,\r\n      needsResearch: needsResearch\r\n    };\r\n  }\r\n\r\n  function productResearchMap() {\r\n    return productPool().map(classifyProduct);\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return rows.reduce(function (acc, row) {\r\n      var k = row[key] || \"unknown\";\r\n      acc[k] = (acc[k] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function requiredResearchTracks(sourceRows, productRows) {\r\n    var sourceHasNora = sourceRows.some(function (s) { return s.exists && s.hasNora; });\r\n    var sourceHasCdn = sourceRows.some(function (s) { return s.exists && s.hasCdn; });\r\n    var sourceHasScenario = sourceRows.some(function (s) { return s.exists && s.hasSetup && s.hasPurpose && s.hasRole; });\r\n    var unknownFamilyCount = productRows.filter(function (p) { return p.family === \"unknown\"; }).length;\r\n    var unknownWattCount = productRows.filter(function (p) { return p.wattBand === \"unknown\"; }).length;\r\n\r\n    return [\r\n      {\r\n        track: \"INTERNAL_SOURCE_MAP\",\r\n        needed: true,\r\n        reason: \"Mevcut Narrative/P27/P28/P29/P33/P39/P41 kaynaklar\u0131n\u0131n hangi rol/setup bilgisini ta\u015F\u0131d\u0131\u011F\u0131 netle\u015Ftirilmeli.\"\r\n      },\r\n      {\r\n        track: \"PRODUCT_CANONICAL_FAMILY_WATT\",\r\n        needed: unknownFamilyCount > 0 || unknownWattCount > 0,\r\n        reason: \"Family/watt resolver baz\u0131 \u00FCr\u00FCnlerde zay\u0131f. Model numaras\u0131 ile ger\u00E7ek watt ayr\u0131m\u0131 yap\u0131lmal\u0131.\"\r\n      },\r\n      {\r\n        track: \"SETUP_ROLE_TAXONOMY\",\r\n        needed: true,\r\n        reason: \"Her \u00FCr\u00FCn i\u00E7in key/fill/background/rgb_accent/support gibi d\u00FCr\u00FCst rol dili kurulmal\u0131.\"\r\n      },\r\n      {\r\n        track: \"PURPOSE_SUBPURPOSE_SCENARIO_MATRIX\",\r\n        needed: true,\r\n        reason: \"8 ana ama\u00E7 / 24 alt ama\u00E7 / her alt ama\u00E7 3 setup senaryosu tasarlanmal\u0131.\"\r\n      },\r\n      {\r\n        track: \"NORA_VOICE_LIBRARY\",\r\n        needed: !sourceHasNora,\r\n        reason: \"NORA ikinci ses dili ayr\u0131 library olarak yok veya yeterli de\u011Fil.\"\r\n      },\r\n      {\r\n        track: \"CDN_VISUAL_MANIFEST\",\r\n        needed: !sourceHasCdn,\r\n        reason: \"Setup g\u00F6rsel/\u015Fema se\u00E7ici i\u00E7in CDN manifest yok.\"\r\n      },\r\n      {\r\n        track: \"SCENARIO_LIBRARY\",\r\n        needed: !sourceHasScenario,\r\n        reason: \"Ama\u00E7 + alt ama\u00E7 + \u00FCr\u00FCn family + watt band + role ba\u011Flayan scenario library gerekli.\"\r\n      }\r\n    ];\r\n  }\r\n\r\n  window.debugPanelV4R27A0SourceResearchNarrativeSetupDeepAudit = function () {\r\n    var sources = likelySources();\r\n    var products = productResearchMap();\r\n    var tracks = requiredResearchTracks(sources, products);\r\n\r\n    var checks = {\r\n      productPoolReady: products.length === 19,\r\n      existingNarrativeSourcesFound: sources.some(function (s) { return s.name === \"GDX_PANEL_LED_V4_NARRATIVE_LIBRARY\" && s.exists; }),\r\n      existingSetupSourcesFound: sources.some(function (s) { return s.exists && s.hasSetup; }),\r\n      existingRoleSourcesFound: sources.some(function (s) { return s.exists && s.hasRole; }),\r\n      noraLibraryNeedsBuild: tracks.some(function (t) { return t.track === \"NORA_VOICE_LIBRARY\" && t.needed; }),\r\n      cdnManifestNeedsBuild: tracks.some(function (t) { return t.track === \"CDN_VISUAL_MANIFEST\" && t.needed; }),\r\n      scenarioLibraryNeedsBuild: tracks.some(function (t) { return t.track === \"SCENARIO_LIBRARY\" && t.needed; }),\r\n      productCanonicalResearchNeeded: tracks.some(function (t) { return t.track === \"PRODUCT_CANONICAL_FAMILY_WATT\" && t.needed; }),\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.existingNarrativeSourcesFound &&\r\n      checks.existingSetupSourcesFound &&\r\n      checks.existingRoleSourcesFound;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        sourceCount: sources.filter(function (s) { return s.exists; }).length,\r\n        sources: sources.filter(function (s) { return s.exists; }),\r\n        missingCriticalSources: sources.filter(function (s) {\r\n          return /NORA|SETUP_VISUAL|SETUP_SCENARIO/i.test(s.name) && !s.exists;\r\n        }).map(function (s) { return s.name; }),\r\n        productCount: products.length,\r\n        productFamilyCounts: countBy(products, \"family\"),\r\n        productWattBandCounts: countBy(products, \"wattBand\"),\r\n        productResearchRows: products,\r\n        requiredResearchTracks: tracks\r\n      },\r\n      interpretation: {\r\n        separatePhaseNeeded: true,\r\n        decision: \"A1 resolver'a ge\u00E7meden \u00F6nce R27-A0 kaynak ara\u015Ft\u0131rmas\u0131 ayr\u0131 faz olarak yap\u0131lmal\u0131. \u00C7\u00FCnk\u00FC resolver yaln\u0131zca teknik s\u0131n\u0131flama yapar; zengin setup/NORA dili i\u00E7in mevcut kaynaklar\u0131n ve eksik library'lerin haritas\u0131 \u015Fart.\",\r\n        next: \"R27-A0-B Research Blueprint: hangi library'ye hangi alanlar eklenecek, 72 setup senaryo ve CDN manifest standard\u0131 yaz\u0131lacak.\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A0-SOURCE-RESEARCH-NARRATIVE-SETUP-DEEP-AUDIT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A0-B-FOCUSED-SOURCE-DETAIL-EXTRACTOR-READONLY\r\n   FAZ:\r\n   R27-A0-B\r\n\r\n   KISA AMA\u00C7:\r\n   Mevcut Narrative / Setup / Schematic / Role kaynaklar\u0131n\u0131n i\u00E7 detaylar\u0131n\u0131 \u00E7\u0131kar\u0131r; yeni NORA + Setup Library i\u00E7in hangi kaynak reuse edilecek g\u00F6sterir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A0BFocusedSourceDetailExtractor()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A0-B-FOCUSED-SOURCE-DETAIL-EXTRACTOR-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A0-B-FOCUSED-SOURCE-DETAIL-EXTRACTOR-NO-MUTATION\";\r\n\r\n  var TARGETS = [\r\n    \"GDX_PANEL_LED_V4_NARRATIVE_LIBRARY\",\r\n    \"GDX_PANEL_LED_V4_PERSONA_LIBRARY\",\r\n    \"GDX_PANEL_LED_V4_PANEL_FAMILY_CONTEXT\",\r\n    \"GDX_PANEL_LED_V4_P27_RESEARCH_REGISTRY\",\r\n    \"GDX_PANEL_LED_V4_P27_COMMENT_ASSEMBLER\",\r\n    \"GDX_PANEL_LED_V4_P27_ROLE_SETUP_PREVIEW\",\r\n    \"GDX_PANEL_LED_V4_P28_SCHEMATIC_REGISTRY\",\r\n    \"GDX_PANEL_LED_V4_P29_RECOMMENDATION_SETUP_PREVIEW\",\r\n    \"GDX_PANEL_LED_V4_P33_CANONICAL_SCHEMATIC_ENGINE\",\r\n    \"GDX_PANEL_LED_V4_P39_NARRATIVE_VARIATION_LIBRARY\",\r\n    \"GDX_PANEL_LED_V4_P41_2_SETUP_ROLE_ENGINE_V2_PREVIEW\",\r\n    \"GDX_PANEL_LED_V4_P41_4_LIVE_SETUP_ROLE_APPLY\",\r\n    \"GDX_PANEL_LED_V4_RECOMMENDER\",\r\n    \"GDX_PANEL_LED_V4_PURPOSE_SCORE_SOURCE\"\r\n  ];\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function ownKeys(obj) {\r\n    if (!obj || (typeof obj !== \"object\" && typeof obj !== \"function\")) return [];\r\n    try { return Object.keys(obj); } catch (e) { return []; }\r\n  }\r\n\r\n  function safeGet(name) {\r\n    try { return window[name]; } catch (e) { return undefined; }\r\n  }\r\n\r\n  function flattenText(value, limit) {\r\n    limit = limit || 12000;\r\n    try {\r\n      return clean(JSON.stringify(value)).slice(0, limit);\r\n    } catch (e) {\r\n      try { return clean(String(value)).slice(0, limit); } catch (err) { return \"\"; }\r\n    }\r\n  }\r\n\r\n  function typeOf(value) {\r\n    if (Array.isArray(value)) return \"array\";\r\n    if (value === null) return \"null\";\r\n    return typeof value;\r\n  }\r\n\r\n  function shallowSample(value, depth) {\r\n    depth = depth == null ? 2 : depth;\r\n    if (value == null) return value;\r\n    if (typeof value === \"string\") return clean(value).slice(0, 220);\r\n    if (typeof value === \"number\" || typeof value === \"boolean\") return value;\r\n    if (typeof value === \"function\") return { type: \"function\", name: value.name || \"\" };\r\n    if (Array.isArray(value)) {\r\n      return {\r\n        type: \"array\",\r\n        length: value.length,\r\n        first: depth > 0 && value.length ? shallowSample(value[0], depth - 1) : null,\r\n        second: depth > 0 && value.length > 1 ? shallowSample(value[1], depth - 1) : null\r\n      };\r\n    }\r\n    if (typeof value === \"object\") {\r\n      var keys = ownKeys(value).slice(0, 18);\r\n      var out = { type: \"object\", keyCount: ownKeys(value).length, keys: keys };\r\n      if (depth > 0) {\r\n        keys.slice(0, 8).forEach(function (k) {\r\n          try { out[k] = shallowSample(value[k], depth - 1); } catch (e) {}\r\n        });\r\n      }\r\n      return out;\r\n    }\r\n    return clean(String(value)).slice(0, 180);\r\n  }\r\n\r\n  function signalSet(text) {\r\n    var t = lower(text);\r\n    return {\r\n      purpose: /purpose|usecase|ama\u00E7|kullan\u0131m|profil/i.test(t),\r\n      subPurpose: /subpurpose|alt ama\u00E7|altamac|sub_purpose|sub-purpose/i.test(t),\r\n      setup: /setup|kurulum|yerle\u015Fim|schematic|\u015Fema|konum/i.test(t),\r\n      role: /role|rol|key light|fill|ana \u0131\u015F\u0131k|dolgu|background|arka plan|rim|accent|vurgu/i.test(t),\r\n      rgb: /rgb|hs\u0131|hsi|renk|accent|background wash|atmosfer|fx/i.test(t),\r\n      watt: /watt|power|g\u00FC\u00E7|low|mid|high|pro/i.test(t),\r\n      family: /family|aile|bicolor|bi-color|daylight|rgb/i.test(t),\r\n      nora: /nora/i.test(t),\r\n      cdn: /cdn\\.shopify|cdnUrl|visual|image|g\u00F6rsel|schema|fallback/i.test(t),\r\n      share: /share|png|qr|payla\u015F/i.test(t),\r\n      honest: /d\u00FCr\u00FCst|honest|abart|ana \u0131\u015F\u0131k olarak de\u011Fil|destek|uyar\u0131|caution/i.test(t)\r\n    };\r\n  }\r\n\r\n  function sourceDetail(name) {\r\n    var value = safeGet(name);\r\n    var exists = value !== undefined && value !== null;\r\n    var text = exists ? flattenText(value, 18000) : \"\";\r\n    var signals = signalSet(text);\r\n    var keys = ownKeys(value);\r\n\r\n    var likelyUse = [];\r\n    if (signals.purpose || signals.subPurpose) likelyUse.push(\"purpose_matrix\");\r\n    if (signals.setup) likelyUse.push(\"setup_scenario\");\r\n    if (signals.role) likelyUse.push(\"role_taxonomy\");\r\n    if (signals.rgb || signals.watt || signals.family) likelyUse.push(\"product_context\");\r\n    if (signals.cdn) likelyUse.push(\"visual_manifest_or_schema\");\r\n    if (signals.nora || signals.honest) likelyUse.push(\"nora_voice_seed\");\r\n    if (signals.share) likelyUse.push(\"share_png_seed\");\r\n\r\n    return {\r\n      name: name,\r\n      exists: exists,\r\n      type: exists ? typeOf(value) : \"missing\",\r\n      keyCount: keys.length,\r\n      keys: keys.slice(0, 80),\r\n      signals: signals,\r\n      likelyUse: likelyUse,\r\n      sample: exists ? shallowSample(value, 3) : null\r\n    };\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productCanonicalDrafts() {\r\n    return productPool().map(function (p, index) {\r\n      var title = clean(p && (p.smartTitle || p.shortTitle || p.title || p.handle || \"\"));\r\n      var handle = clean(p && p.handle || \"\");\r\n      var text = lower([title, handle, p && p.body_html, p && p.description, Array.isArray(p && p.tags) ? p.tags.join(\" \") : (p && p.tags)].filter(Boolean).join(\" \"));\r\n\r\n      var family = \"unknown\";\r\n      if (/\\brgbww\\b|\\brgbwy\\b|\\brgb\\b|600rgb|1000r|1500r|750r|ldx50r|rgb led|hs\u0131|hsi|fx\\b/i.test(text)) family = \"rgb\";\r\n      else if (/bi.?color|bicolor|cct|kelvin|p300ts|gx-300|p-750c|p260c|2020c|cf-300c|1024w|1700w|900w|cf-120w/i.test(text)) family = \"bicolor\";\r\n      else if (/daylight|5600k|2020w/i.test(text)) family = \"daylight_or_fixed_white\";\r\n\r\n      var matches = [];\r\n      var re = /(\\d{2,4})\\s*(?:w|watt)\\b/gi;\r\n      var raw = [title, handle, p && p.body_html, p && p.description].filter(Boolean).join(\" \");\r\n      var m;\r\n      while ((m = re.exec(raw)) !== null) {\r\n        var value = Number(m[1]);\r\n        if (isFinite(value) && value > 0 && value < 2000) matches.push(value);\r\n      }\r\n      var watt = matches.length ? matches[matches.length - 1] : null;\r\n      var wattBand = \"unknown\";\r\n      if (watt != null) {\r\n        if (watt <= 50) wattBand = \"low\";\r\n        else if (watt <= 100) wattBand = \"mid\";\r\n        else if (watt <= 180) wattBand = \"high\";\r\n        else wattBand = \"pro\";\r\n      }\r\n\r\n      var requiredCanonicalFields = [\r\n        \"productKey\",\r\n        \"family\",\r\n        \"watt\",\r\n        \"wattBand\",\r\n        \"eligibleRoles\",\r\n        \"restrictedRoles\",\r\n        \"noraTruthRule\"\r\n      ];\r\n\r\n      return {\r\n        index: index + 1,\r\n        title: title,\r\n        handle: handle,\r\n        familyDraft: family,\r\n        wattDraft: watt,\r\n        wattBandDraft: wattBand,\r\n        wattCandidates: matches,\r\n        needsManualCheck: family === \"unknown\" || wattBand === \"unknown\",\r\n        requiredCanonicalFields: requiredCanonicalFields\r\n      };\r\n    });\r\n  }\r\n\r\n  function blueprint() {\r\n    return {\r\n      canonicalLibrariesToCreate: [\r\n        {\r\n          name: \"GDX_PANEL_LED_V4_NORA_LIBRARY\",\r\n          purpose: \"NORA ikinci ses, d\u00FCr\u00FCst rol dili, FP14 sonras\u0131 uzman yorum, setup modal notu, share/PNG k\u0131sa yorum.\",\r\n          dependsOn: [\"productCanonicalMap\", \"setupScenarioLibrary\", \"purposeSubPurposeMatrix\"]\r\n        },\r\n        {\r\n          name: \"GDX_PANEL_LED_V4_SETUP_SCENARIOS\",\r\n          purpose: \"8 ana ama\u00E7 / 24 alt ama\u00E7 / 72 setup senaryosu.\",\r\n          dependsOn: [\"setupRoleTaxonomy\", \"productCanonicalMap\"]\r\n        },\r\n        {\r\n          name: \"GDX_PANEL_LED_V4_SETUP_VISUALS\",\r\n          purpose: \"CDN visual manifest + fallback schema key mapping.\",\r\n          dependsOn: [\"setupScenarioLibrary\"]\r\n        },\r\n        {\r\n          name: \"GDX_PANEL_LED_V4_PRODUCT_CANONICAL_CONTEXT\",\r\n          purpose: \"19 \u00FCr\u00FCn i\u00E7in family / watt / wattBand / eligibleRoles / noraTruthRule canonical veri.\",\r\n          dependsOn: [\"productPool\", \"existingPanelFamilyContext\"]\r\n        }\r\n      ],\r\n      setupRoleTaxonomy: [\r\n        \"key_light\",\r\n        \"fill_light\",\r\n        \"soft_front_light\",\r\n        \"clinical_soft_front\",\r\n        \"product_top_light\",\r\n        \"product_side_light\",\r\n        \"background_light\",\r\n        \"rim_light\",\r\n        \"hair_light\",\r\n        \"rgb_accent\",\r\n        \"rgb_background_wash\",\r\n        \"rim_or_color_separation\",\r\n        \"portable_interview_light\",\r\n        \"support_or_accent_light\",\r\n        \"close_range_support\"\r\n      ],\r\n      noraTruthRules: [\r\n        \"RGB d\u00FC\u015F\u00FCk/orta g\u00FC\u00E7 \u00FCr\u00FCnler ana \u0131\u015F\u0131k gibi abart\u0131lmaz; accent/background/rim rol\u00FC \u00F6ne \u00E7\u0131kar.\",\r\n        \"D\u00FC\u015F\u00FCk watt Bi-Color \u00FCr\u00FCnler b\u00FCy\u00FCk alan ana \u0131\u015F\u0131\u011F\u0131 gibi anlat\u0131lmaz; yak\u0131n plan/destek rol\u00FC s\u00F6ylenir.\",\r\n        \"Y\u00FCksek watt Bi-Color \u00FCr\u00FCnler ana \u0131\u015F\u0131k/klinik/st\u00FCdyo key light olarak anlat\u0131labilir.\",\r\n        \"Daylight/fixed white \u00FCr\u00FCnlerde RGB/Kelvin esnekli\u011Fi varm\u0131\u015F gibi konu\u015Fulmaz.\",\r\n        \"NORA gerekti\u011Finde \u00FCr\u00FCn\u00FCn daha do\u011Fru rol\u00FCn\u00FC a\u00E7\u0131k\u00E7a s\u00F6yler.\"\r\n      ],\r\n      scenarioRecordFields: [\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"title\",\r\n        \"targetUser\",\r\n        \"recommendedRoles\",\r\n        \"allowedFamilies\",\r\n        \"preferredWattBands\",\r\n        \"noraHonestNote\",\r\n        \"visualKey\",\r\n        \"fallbackSchemaKey\"\r\n      ],\r\n      visualManifestFields: [\r\n        \"visualKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"family\",\r\n        \"wattBand\",\r\n        \"role\",\r\n        \"cdnUrl\",\r\n        \"fallbackSchemaKey\",\r\n        \"preloadPriority\"\r\n      ]\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A0BFocusedSourceDetailExtractor = function () {\r\n    var sources = TARGETS.map(sourceDetail);\r\n    var existing = sources.filter(function (s) { return s.exists; });\r\n    var productDrafts = productCanonicalDrafts();\r\n\r\n    var reusable = existing.filter(function (s) {\r\n      return s.likelyUse.length > 0;\r\n    });\r\n\r\n    var checks = {\r\n      productPoolReady: productDrafts.length === 19,\r\n      focusedSourcesReadable: existing.length >= 8,\r\n      reusableSourcesFound: reusable.length >= 4,\r\n      narrativeSourceReadable: sources.some(function (s) { return s.name === \"GDX_PANEL_LED_V4_NARRATIVE_LIBRARY\" && s.exists; }),\r\n      setupRoleSeedsFound: sources.some(function (s) { return s.exists && (s.signals.setup || s.signals.role); }),\r\n      productCanonicalDraftGenerated: productDrafts.length === 19,\r\n      blueprintGenerated: true,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.focusedSourcesReadable &&\r\n      checks.reusableSourcesFound &&\r\n      checks.narrativeSourceReadable &&\r\n      checks.setupRoleSeedsFound &&\r\n      checks.productCanonicalDraftGenerated;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        focusedSourceCount: sources.length,\r\n        existingFocusedSourceCount: existing.length,\r\n        reusableSourceCount: reusable.length,\r\n        sources: sources,\r\n        productCanonicalDrafts: productDrafts,\r\n        blueprint: blueprint()\r\n      },\r\n      interpretation: {\r\n        decision: \"Mevcut kaynaklar reuse edilecek; ancak NORA, Setup Scenarios, Setup Visuals ve Product Canonical Context canonical library olarak ayr\u0131ca kurulmal\u0131.\",\r\n        next: \"R27-A0-C Schema Lock dosyas\u0131 haz\u0131rlanmal\u0131; sonra R27-A1 resolver preview tekrar \u00E7al\u0131\u015Ft\u0131r\u0131lmal\u0131.\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A0-B-FOCUSED-SOURCE-DETAIL-EXTRACTOR-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A1-R1-PRODUCT-CANONICAL-CONTEXT-RESOLVER-SCHEMA-LOCKED-PREVIEW\r\n   FAZ:\r\n   R27-A1-R1\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A0-C schema lock'a g\u00F6re 19 \u00FCr\u00FCn i\u00E7in canonical family / watt / wattBand / role / NORA truth rule tasla\u011F\u0131 \u00FCretir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A1R1ProductCanonicalContextResolverPreview()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A1-R1-PRODUCT-CANONICAL-CONTEXT-RESOLVER-SCHEMA-LOCKED-PREVIEW\";\r\n  var VERSION = \"PANEL-V4-R27-A1-R1-PRODUCT-CANONICAL-CONTEXT-RESOLVER-SCHEMA-LOCKED-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function slug(v) {\r\n    return lower(v)\r\n      .replace(/\u011F/g, \"g\").replace(/\u00FC/g, \"u\").replace(/\u015F/g, \"s\").replace(/\u0131/g, \"i\").replace(/\u00F6/g, \"o\").replace(/\u00E7/g, \"c\")\r\n      .replace(/[^a-z0-9]+/g, \"_\")\r\n      .replace(/^_+|_+$/g, \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productText(p) {\r\n    return clean([\r\n      p && p.title,\r\n      p && p.smartTitle,\r\n      p && p.shortTitle,\r\n      p && p.handle,\r\n      p && p.url,\r\n      p && p.product_type,\r\n      p && p.type,\r\n      p && p.vendor,\r\n      Array.isArray(p && p.tags) ? p.tags.join(\" \") : (p && p.tags),\r\n      p && p.body_html,\r\n      p && p.description,\r\n      p && p.metafields ? JSON.stringify(p.metafields) : \"\"\r\n    ].filter(Boolean).join(\" \"));\r\n  }\r\n\r\n  function parseWattCandidates(raw) {\r\n    raw = clean(raw);\r\n    var out = [];\r\n    var re = /(\\d{2,4})\\s*(?:w|watt)\\b/gi;\r\n    var m;\r\n    while ((m = re.exec(raw)) !== null) {\r\n      var value = Number(m[1]);\r\n      if (!isFinite(value) || value <= 0 || value > 2000) continue;\r\n      out.push({ value: value, token: m[0], index: m.index });\r\n    }\r\n\r\n    var seen = {};\r\n    return out.filter(function (x) {\r\n      var key = x.value + \"@\" + x.index;\r\n      if (seen[key]) return false;\r\n      seen[key] = true;\r\n      return true;\r\n    });\r\n  }\r\n\r\n  function wattBand(watt) {\r\n    if (watt == null || !isFinite(watt)) return \"unknown\";\r\n    if (watt <= 50) return \"low\";\r\n    if (watt <= 100) return \"mid\";\r\n    if (watt <= 180) return \"high\";\r\n    return \"pro\";\r\n  }\r\n\r\n  function inferWatt(title, handle, text) {\r\n    var raw = clean([title, handle, text].join(\" \"));\r\n    var candidates = parseWattCandidates(raw);\r\n    if (!candidates.length) {\r\n      return {\r\n        watt: null,\r\n        wattBand: \"unknown\",\r\n        wattConfidence: \"low\",\r\n        wattSource: \"missing\",\r\n        wattCandidates: []\r\n      };\r\n    }\r\n\r\n    var chosen = candidates[candidates.length - 1];\r\n    var notes = [];\r\n\r\n    if (candidates.length > 1) {\r\n      notes.push(\"Birden fazla W aday\u0131 var; son aday ger\u00E7ek g\u00FC\u00E7 olarak se\u00E7ildi. Model numaras\u0131 / LED say\u0131s\u0131 kar\u0131\u015F\u0131m\u0131 manuel do\u011Frulanmal\u0131.\");\r\n    }\r\n\r\n    if (/1024w|1700w|2020w|900w/i.test(raw) && candidates.length > 1) {\r\n      notes.push(\"Ba\u015Fl\u0131ktaki ilk W ifadesi model/LED say\u0131s\u0131 olabilir; ger\u00E7ek g\u00FC\u00E7 son W aday\u0131 kabul edildi.\");\r\n    }\r\n\r\n    return {\r\n      watt: chosen.value,\r\n      wattBand: wattBand(chosen.value),\r\n      wattConfidence: candidates.length > 1 ? \"medium\" : \"high\",\r\n      wattSource: candidates.length > 1 ? \"last_watt_candidate_model_safe\" : \"single_watt_candidate\",\r\n      wattCandidates: candidates,\r\n      wattNotes: notes\r\n    };\r\n  }\r\n\r\n  function inferFamily(title, handle, text) {\r\n    var raw = lower([title, handle, text].join(\" \"));\r\n    var reasons = [];\r\n\r\n    if (/\\brgbww\\b|\\brgbwy\\b|\\brgb\\b|600rgb|1000r|1500r|750r|ldx50r|rgb led|hs\u0131|hsi|fx\\b|renk efekt|0\\s*[-\u2013]\\s*360|360\\s*\u00B0/i.test(raw)) {\r\n      reasons.push(\"rgb_signal\");\r\n      return { family: \"rgb\", familyConfidence: \"high\", familyReasons: reasons };\r\n    }\r\n\r\n    if (/bi.?color|bi color|bicolor|\u00E7ift renk|cct|kelvin|p300ts|gx-300|p-750c|p260c|2020c|cf-300c|1024w|1700w|900w|cf-120w/i.test(raw)) {\r\n      reasons.push(\"bicolor_signal\");\r\n      return { family: \"bicolor\", familyConfidence: \"medium\", familyReasons: reasons };\r\n    }\r\n\r\n    if (/daylight|g\u00FCn \u0131\u015F\u0131\u011F\u0131|5600k|2020w/i.test(raw)) {\r\n      reasons.push(\"daylight_or_fixed_white_signal\");\r\n      return { family: \"daylight_or_fixed_white\", familyConfidence: \"low\", familyReasons: reasons };\r\n    }\r\n\r\n    reasons.push(\"no_clear_family_signal\");\r\n    return { family: \"unknown\", familyConfidence: \"low\", familyReasons: reasons };\r\n  }\r\n\r\n  function roleData(family, band, text) {\r\n    var raw = lower(text);\r\n    var eligible = [];\r\n    var restricted = [];\r\n    var priority = [];\r\n    var notes = [];\r\n\r\n    if (family === \"rgb\") {\r\n      eligible = [\"rgb_accent\", \"rgb_background_wash\", \"background_light\", \"rim_or_color_separation\"];\r\n      priority = [\"rgb_background_wash\", \"rgb_accent\", \"rim_or_color_separation\"];\r\n\r\n      if (band === \"high\" || band === \"pro\") {\r\n        eligible.push(\"creative_key_possible\", \"large_background_color_wash\");\r\n        priority.unshift(\"creative_key_possible\");\r\n        notes.push(\"RGB y\u00FCksek/pro g\u00FC\u00E7: kreatif key m\u00FCmk\u00FCn; yine de se\u00E7ili amaca g\u00F6re ana \u0131\u015F\u0131k iddias\u0131 dikkatli kurulmal\u0131.\");\r\n      } else {\r\n        eligible.push(\"support_or_accent_light\");\r\n        restricted.push(\"primary_key_for_large_area\");\r\n        notes.push(\"RGB d\u00FC\u015F\u00FCk/orta g\u00FC\u00E7: ana \u0131\u015F\u0131k gibi abart\u0131lmamal\u0131; accent/background/rim rol\u00FC \u00F6ncelikli.\");\r\n      }\r\n    } else if (family === \"bicolor\") {\r\n      eligible = [\"key_light\", \"fill_light\", \"soft_front_light\"];\r\n      priority = [\"key_light\", \"fill_light\"];\r\n\r\n      if (band === \"high\" || band === \"pro\") {\r\n        eligible.push(\"studio_key\", \"clinical_soft_front\", \"interview_key\");\r\n        priority.unshift(\"studio_key\");\r\n        notes.push(\"Y\u00FCksek/pro Bi-Color: ana \u0131\u015F\u0131k, klinik/st\u00FCdyo key light ve g\u00FC\u00E7l\u00FC fill rol\u00FC uygun.\");\r\n      } else if (band === \"mid\") {\r\n        eligible.push(\"interview_key\", \"product_side_light\");\r\n        notes.push(\"Orta g\u00FC\u00E7 Bi-Color: yak\u0131n/orta mesafe ana \u0131\u015F\u0131k veya dolgu rol\u00FC uygun.\");\r\n      } else if (band === \"low\") {\r\n        eligible.push(\"close_range_support\", \"product_side_light\");\r\n        restricted.push(\"large_area_primary_key\");\r\n        priority = [\"close_range_support\", \"fill_light\"];\r\n        notes.push(\"D\u00FC\u015F\u00FCk g\u00FC\u00E7 Bi-Color: b\u00FCy\u00FCk alan ana \u0131\u015F\u0131\u011F\u0131 gibi anlat\u0131lmamal\u0131; yak\u0131n plan/destek rol\u00FC \u00F6ne \u00E7\u0131kar.\");\r\n      }\r\n    } else if (family === \"daylight_or_fixed_white\") {\r\n      eligible = [\"key_light\", \"fill_light\", \"fixed_white_support\"];\r\n      priority = [\"key_light\", \"fill_light\"];\r\n      restricted.push(\"rgb_accent\", \"kelvin_flexible_claim\");\r\n      notes.push(\"Daylight/fixed white: RGB veya Kelvin esnekli\u011Fi varm\u0131\u015F gibi konu\u015Fulmaz.\");\r\n      if (band === \"high\" || band === \"pro\") eligible.push(\"studio_key\");\r\n      if (band === \"low\") eligible.push(\"close_range_support\");\r\n    } else {\r\n      eligible = [\"manual_role_mapping_required\"];\r\n      restricted = [\"strong_claims_without_data\"];\r\n      priority = [\"manual_role_mapping_required\"];\r\n      notes.push(\"Family belirsiz; NORA kesin rol c\u00FCmlesi kurmadan veri do\u011Frulamal\u0131.\");\r\n    }\r\n\r\n    if (/batarya|battery|np-f|v-mount|portable|mobil/i.test(raw)) {\r\n      eligible.push(\"portable_interview_light\");\r\n      priority.push(\"portable_interview_light\");\r\n    }\r\n\r\n    eligible = eligible.filter(function (x, i, arr) { return arr.indexOf(x) === i; });\r\n    restricted = restricted.filter(function (x, i, arr) { return arr.indexOf(x) === i; });\r\n    priority = priority.filter(function (x, i, arr) { return arr.indexOf(x) === i; });\r\n\r\n    return {\r\n      eligibleRoles: eligible,\r\n      restrictedRoles: restricted,\r\n      setupRolePriority: priority,\r\n      roleNotes: notes\r\n    };\r\n  }\r\n\r\n  function noraTruthRule(family, band) {\r\n    if (family === \"rgb\") {\r\n      if (band === \"low\" || band === \"mid\") {\r\n        return \"Bu \u00FCr\u00FCn\u00FC ana \u0131\u015F\u0131k olarak de\u011Fil; RGB kreatif senaryoda arka plan renk ayr\u0131m\u0131, vurgu veya kenar \u0131\u015F\u0131\u011F\u0131 rol\u00FCnde anlat.\";\r\n      }\r\n      return \"Bu RGB \u00FCr\u00FCn kreatif ana \u0131\u015F\u0131k potansiyeli ta\u015F\u0131yabilir; yine de se\u00E7ili amaca g\u00F6re arka plan/atmosfer/renk ayr\u0131m\u0131 rol\u00FC d\u00FCr\u00FCst\u00E7e vurgulanmal\u0131.\";\r\n    }\r\n\r\n    if (family === \"bicolor\") {\r\n      if (band === \"low\") {\r\n        return \"Bu \u00FCr\u00FCn\u00FC b\u00FCy\u00FCk alan ana \u0131\u015F\u0131\u011F\u0131 gibi abartma; yak\u0131n plan, masa\u00FCst\u00FC, dolgu veya destek \u0131\u015F\u0131\u011F\u0131 olarak anlat.\";\r\n      }\r\n      if (band === \"mid\") {\r\n        return \"Bu \u00FCr\u00FCn\u00FC yak\u0131n/orta mesafe ana \u0131\u015F\u0131k veya dolgu \u0131\u015F\u0131\u011F\u0131 olarak anlat; b\u00FCy\u00FCk st\u00FCdyo iddias\u0131n\u0131 s\u0131n\u0131rl\u0131 tut.\";\r\n      }\r\n      return \"Bu \u00FCr\u00FCn\u00FC ana \u0131\u015F\u0131k, yumu\u015Fak \u00F6n \u0131\u015F\u0131k, klinik/st\u00FCdyo veya g\u00FC\u00E7l\u00FC dolgu rol\u00FCnde anlat; RGB atmosfer gerekiyorsa ikinci \u0131\u015F\u0131k gerekebilece\u011Fini s\u00F6yle.\";\r\n    }\r\n\r\n    if (family === \"daylight_or_fixed_white\") {\r\n      return \"Bu \u00FCr\u00FCn\u00FC sabit beyaz/g\u00FCn \u0131\u015F\u0131\u011F\u0131 karakteriyle anlat; RGB veya geni\u015F Kelvin esnekli\u011Fi varm\u0131\u015F gibi konu\u015Fma.\";\r\n    }\r\n\r\n    return \"Bu \u00FCr\u00FCn i\u00E7in family/watt netle\u015Fmeden NORA kesin ana \u0131\u015F\u0131k veya RGB rol\u00FC iddias\u0131 kurmamal\u0131.\";\r\n  }\r\n\r\n  function canonicalRow(p, index) {\r\n    var title = clean(p && (p.smartTitle || p.shortTitle || p.title || p.handle || \"\"));\r\n    var handle = clean(p && p.handle || \"\");\r\n    var text = productText(p);\r\n    var fam = inferFamily(title, handle, text);\r\n    var watt = inferWatt(title, handle, text);\r\n    var roles = roleData(fam.family, watt.wattBand, text);\r\n\r\n    var manualReview = [];\r\n    if (fam.family === \"unknown\") manualReview.push(\"family_unknown\");\r\n    if (fam.familyConfidence === \"low\") manualReview.push(\"family_low_confidence\");\r\n    if (watt.wattBand === \"unknown\") manualReview.push(\"watt_unknown\");\r\n    if (watt.wattConfidence === \"medium\") manualReview.push(\"watt_model_number_possible\");\r\n    if (roles.restrictedRoles.length) manualReview.push(\"restricted_roles_present\");\r\n\r\n    return {\r\n      productKey: slug(handle || title),\r\n      handle: handle,\r\n      title: title,\r\n      family: fam.family,\r\n      familyConfidence: fam.familyConfidence,\r\n      familyReasons: fam.familyReasons,\r\n      watt: watt.watt,\r\n      wattBand: watt.wattBand,\r\n      wattConfidence: watt.wattConfidence,\r\n      wattSource: watt.wattSource,\r\n      wattCandidates: watt.wattCandidates,\r\n      wattNotes: watt.wattNotes || [],\r\n      eligibleRoles: roles.eligibleRoles,\r\n      restrictedRoles: roles.restrictedRoles,\r\n      setupRolePriority: roles.setupRolePriority,\r\n      noraTruthRule: noraTruthRule(fam.family, watt.wattBand),\r\n      roleNotes: roles.roleNotes,\r\n      manualReview: manualReview,\r\n      sourceNotes: [\r\n        \"R27-A1-R1 preview; canonical production data de\u011Fildir.\",\r\n        \"R27-A0-C schema lock'a g\u00F6re taslak \u00FCretildi.\"\r\n      ]\r\n    };\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return rows.reduce(function (acc, row) {\r\n      var k = row[key] || \"unknown\";\r\n      acc[k] = (acc[k] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function roleCoverage(rows) {\r\n    var acc = {};\r\n    rows.forEach(function (row) {\r\n      (row.eligibleRoles || []).forEach(function (role) {\r\n        acc[role] = (acc[role] || 0) + 1;\r\n      });\r\n    });\r\n    return acc;\r\n  }\r\n\r\n  function requiredManualRows(rows) {\r\n    return rows.filter(function (row) {\r\n      return (row.manualReview || []).some(function (x) {\r\n        return x === \"family_unknown\" || x === \"watt_unknown\" || x === \"family_low_confidence\" || x === \"watt_model_number_possible\";\r\n      });\r\n    });\r\n  }\r\n\r\n  window.debugPanelV4R27A1R1ProductCanonicalContextResolverPreview = function () {\r\n    var rows = productPool().map(canonicalRow);\r\n    var familyCounts = countBy(rows, \"family\");\r\n    var wattBandCounts = countBy(rows, \"wattBand\");\r\n    var manualRows = requiredManualRows(rows);\r\n    var rgbRows = rows.filter(function (r) { return r.family === \"rgb\"; });\r\n    var bicolorRows = rows.filter(function (r) { return r.family === \"bicolor\"; });\r\n\r\n    var checks = {\r\n      productPoolReady: rows.length === 19,\r\n      canonicalFieldsGenerated: rows.every(function (row) {\r\n        return row.productKey && row.handle && row.title && row.family && row.wattBand && row.eligibleRoles && row.restrictedRoles && row.noraTruthRule;\r\n      }),\r\n      rgbProductsDetected: rgbRows.length >= 4,\r\n      bicolorProductsDetected: bicolorRows.length >= 8,\r\n      wattBandsMostlyResolved: (wattBandCounts.unknown || 0) <= 1,\r\n      familyMostlyResolved: (familyCounts.unknown || 0) <= 2,\r\n      noraTruthRulesGenerated: rows.every(function (row) { return !!row.noraTruthRule; }),\r\n      rolePriorityGenerated: rows.every(function (row) { return Array.isArray(row.setupRolePriority) && row.setupRolePriority.length > 0; }),\r\n      manualReviewListGenerated: true,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.canonicalFieldsGenerated &&\r\n      checks.rgbProductsDetected &&\r\n      checks.bicolorProductsDetected &&\r\n      checks.wattBandsMostlyResolved &&\r\n      checks.familyMostlyResolved &&\r\n      checks.noraTruthRulesGenerated &&\r\n      checks.rolePriorityGenerated;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productCount: rows.length,\r\n        familyCounts: familyCounts,\r\n        wattBandCounts: wattBandCounts,\r\n        roleCoverage: roleCoverage(rows),\r\n        manualReviewCount: manualRows.length,\r\n        manualReviewRows: manualRows,\r\n        canonicalProductContextDraft: rows\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R27-A1-R1 canonical product context preview yeterli. Manuel review listesi canonical override tablosuna d\u00F6n\u00FC\u015Ft\u00FCr\u00FClmeli.\"\r\n          : \"Resolver h\u00E2l\u00E2 zay\u0131f; family/watt regex veya manuel override gerekir.\",\r\n        noraRule: \"NORA bu canonical context olmadan g\u00FC\u00E7l\u00FC iddia kurmamal\u0131; family/watt/role sinyaliyle d\u00FCr\u00FCst konu\u015Fmal\u0131.\"\r\n      },\r\n      next: ok\r\n        ? \"R27-A1-B Manual Override Table / Canonical Context Lock haz\u0131rlanmal\u0131.\"\r\n        : \"Resolver g\u00FC\u00E7lendirilmeli.\",\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A1-R1-PRODUCT-CANONICAL-CONTEXT-RESOLVER-PREVIEW-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A1-B-MANUAL-OVERRIDE-CANONICAL-CONTEXT-EXPORT-READONLY\r\n   FAZ:\r\n   R27-A1-B\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A1-R1 \u00E7\u0131kt\u0131s\u0131n\u0131 19 \u00FCr\u00FCnl\u00FCk Product Canonical Context / manual override export tablosuna \u00E7evirir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A1BManualOverrideCanonicalContextExport()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A1-B-MANUAL-OVERRIDE-CANONICAL-CONTEXT-EXPORT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A1-B-MANUAL-OVERRIDE-CANONICAL-CONTEXT-EXPORT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function slug(v) {\r\n    return lower(v)\r\n      .replace(/\u011F/g, \"g\").replace(/\u00FC/g, \"u\").replace(/\u015F/g, \"s\").replace(/\u0131/g, \"i\").replace(/\u00F6/g, \"o\").replace(/\u00E7/g, \"c\")\r\n      .replace(/[^a-z0-9]+/g, \"_\")\r\n      .replace(/^_+|_+$/g, \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productText(p) {\r\n    return clean([\r\n      p && p.title,\r\n      p && p.smartTitle,\r\n      p && p.shortTitle,\r\n      p && p.handle,\r\n      p && p.url,\r\n      p && p.product_type,\r\n      p && p.type,\r\n      p && p.vendor,\r\n      Array.isArray(p && p.tags) ? p.tags.join(\" \") : (p && p.tags),\r\n      p && p.body_html,\r\n      p && p.description,\r\n      p && p.metafields ? JSON.stringify(p.metafields) : \"\"\r\n    ].filter(Boolean).join(\" \"));\r\n  }\r\n\r\n  function parseWattCandidates(raw) {\r\n    raw = clean(raw);\r\n    var out = [];\r\n    var re = /(\\d{2,4})\\s*(?:w|watt)\\b/gi;\r\n    var m;\r\n    while ((m = re.exec(raw)) !== null) {\r\n      var value = Number(m[1]);\r\n      if (!isFinite(value) || value <= 0 || value > 2000) continue;\r\n      out.push({ value: value, token: m[0], index: m.index });\r\n    }\r\n    var seen = {};\r\n    return out.filter(function (x) {\r\n      var key = x.value + \"@\" + x.index;\r\n      if (seen[key]) return false;\r\n      seen[key] = true;\r\n      return true;\r\n    });\r\n  }\r\n\r\n  function wattBand(watt) {\r\n    if (watt == null || !isFinite(watt)) return \"unknown\";\r\n    if (watt <= 50) return \"low\";\r\n    if (watt <= 100) return \"mid\";\r\n    if (watt <= 180) return \"high\";\r\n    return \"pro\";\r\n  }\r\n\r\n  function inferWatt(title, handle, text) {\r\n    var raw = clean([title, handle, text].join(\" \"));\r\n    var candidates = parseWattCandidates(raw);\r\n    if (!candidates.length) {\r\n      return { watt: null, wattBand: \"unknown\", wattConfidence: \"low\", wattSource: \"missing\", wattCandidates: [] };\r\n    }\r\n    var chosen = candidates[candidates.length - 1];\r\n    return {\r\n      watt: chosen.value,\r\n      wattBand: wattBand(chosen.value),\r\n      wattConfidence: candidates.length > 1 ? \"medium\" : \"high\",\r\n      wattSource: candidates.length > 1 ? \"last_watt_candidate_model_safe\" : \"single_watt_candidate\",\r\n      wattCandidates: candidates\r\n    };\r\n  }\r\n\r\n  function inferFamily(title, handle, text) {\r\n    var raw = lower([title, handle, text].join(\" \"));\r\n    if (/\\brgbww\\b|\\brgbwy\\b|\\brgb\\b|600rgb|1000r|1500r|750r|ldx50r|rgb led|hs\u0131|hsi|fx\\b|renk efekt|0\\s*[-\u2013]\\s*360|360\\s*\u00B0/i.test(raw)) {\r\n      return { family: \"rgb\", familyConfidence: \"high\", familyReasons: [\"rgb_signal\"] };\r\n    }\r\n    if (/bi.?color|bi color|bicolor|\u00E7ift renk|cct|kelvin|p300ts|gx-300|p-750c|p260c|2020c|cf-300c|1024w|1700w|900w|cf-120w/i.test(raw)) {\r\n      return { family: \"bicolor\", familyConfidence: \"medium\", familyReasons: [\"bicolor_signal\"] };\r\n    }\r\n    if (/daylight|g\u00FCn \u0131\u015F\u0131\u011F\u0131|5600k|2020w/i.test(raw)) {\r\n      return { family: \"daylight_or_fixed_white\", familyConfidence: \"low\", familyReasons: [\"daylight_or_fixed_white_signal\"] };\r\n    }\r\n    return { family: \"unknown\", familyConfidence: \"low\", familyReasons: [\"no_clear_family_signal\"] };\r\n  }\r\n\r\n  function roleData(family, band, text) {\r\n    var raw = lower(text);\r\n    var eligible = [];\r\n    var restricted = [];\r\n    var priority = [];\r\n\r\n    if (family === \"rgb\") {\r\n      eligible = [\"rgb_accent\", \"rgb_background_wash\", \"background_light\", \"rim_or_color_separation\"];\r\n      priority = [\"rgb_background_wash\", \"rgb_accent\", \"rim_or_color_separation\"];\r\n      if (band === \"high\" || band === \"pro\") {\r\n        eligible.push(\"creative_key_possible\", \"large_background_color_wash\");\r\n        priority.unshift(\"creative_key_possible\");\r\n      } else {\r\n        eligible.push(\"support_or_accent_light\");\r\n        restricted.push(\"primary_key_for_large_area\");\r\n      }\r\n    } else if (family === \"bicolor\") {\r\n      eligible = [\"key_light\", \"fill_light\", \"soft_front_light\"];\r\n      priority = [\"key_light\", \"fill_light\"];\r\n      if (band === \"high\" || band === \"pro\") {\r\n        eligible.push(\"studio_key\", \"clinical_soft_front\", \"interview_key\");\r\n        priority.unshift(\"studio_key\");\r\n      } else if (band === \"mid\") {\r\n        eligible.push(\"interview_key\", \"product_side_light\");\r\n      } else if (band === \"low\") {\r\n        eligible.push(\"close_range_support\", \"product_side_light\");\r\n        restricted.push(\"large_area_primary_key\");\r\n        priority = [\"close_range_support\", \"fill_light\"];\r\n      }\r\n    } else if (family === \"daylight_or_fixed_white\") {\r\n      eligible = [\"key_light\", \"fill_light\", \"fixed_white_support\"];\r\n      priority = [\"key_light\", \"fill_light\"];\r\n      restricted.push(\"rgb_accent\", \"kelvin_flexible_claim\");\r\n      if (band === \"high\" || band === \"pro\") eligible.push(\"studio_key\");\r\n      if (band === \"low\") eligible.push(\"close_range_support\");\r\n    } else {\r\n      eligible = [\"manual_role_mapping_required\"];\r\n      restricted = [\"strong_claims_without_data\"];\r\n      priority = [\"manual_role_mapping_required\"];\r\n    }\r\n\r\n    if (/batarya|battery|np-f|v-mount|portable|mobil/i.test(raw)) {\r\n      eligible.push(\"portable_interview_light\");\r\n      priority.push(\"portable_interview_light\");\r\n    }\r\n\r\n    return {\r\n      eligibleRoles: eligible.filter(function (x, i, arr) { return arr.indexOf(x) === i; }),\r\n      restrictedRoles: restricted.filter(function (x, i, arr) { return arr.indexOf(x) === i; }),\r\n      setupRolePriority: priority.filter(function (x, i, arr) { return arr.indexOf(x) === i; })\r\n    };\r\n  }\r\n\r\n  function noraTruthRule(family, band) {\r\n    if (family === \"rgb\") {\r\n      if (band === \"low\" || band === \"mid\") return \"Bu \u00FCr\u00FCn\u00FC ana \u0131\u015F\u0131k olarak de\u011Fil; RGB kreatif senaryoda arka plan renk ayr\u0131m\u0131, vurgu veya kenar \u0131\u015F\u0131\u011F\u0131 rol\u00FCnde anlat.\";\r\n      return \"Bu RGB \u00FCr\u00FCn kreatif ana \u0131\u015F\u0131k potansiyeli ta\u015F\u0131yabilir; yine de se\u00E7ili amaca g\u00F6re arka plan/atmosfer/renk ayr\u0131m\u0131 rol\u00FC d\u00FCr\u00FCst\u00E7e vurgulanmal\u0131.\";\r\n    }\r\n    if (family === \"bicolor\") {\r\n      if (band === \"low\") return \"Bu \u00FCr\u00FCn\u00FC b\u00FCy\u00FCk alan ana \u0131\u015F\u0131\u011F\u0131 gibi abartma; yak\u0131n plan, masa\u00FCst\u00FC, dolgu veya destek \u0131\u015F\u0131\u011F\u0131 olarak anlat.\";\r\n      if (band === \"mid\") return \"Bu \u00FCr\u00FCn\u00FC yak\u0131n/orta mesafe ana \u0131\u015F\u0131k veya dolgu \u0131\u015F\u0131\u011F\u0131 olarak anlat; b\u00FCy\u00FCk st\u00FCdyo iddias\u0131n\u0131 s\u0131n\u0131rl\u0131 tut.\";\r\n      return \"Bu \u00FCr\u00FCn\u00FC ana \u0131\u015F\u0131k, yumu\u015Fak \u00F6n \u0131\u015F\u0131k, klinik/st\u00FCdyo veya g\u00FC\u00E7l\u00FC dolgu rol\u00FCnde anlat; RGB atmosfer gerekiyorsa ikinci \u0131\u015F\u0131k gerekebilece\u011Fini s\u00F6yle.\";\r\n    }\r\n    if (family === \"daylight_or_fixed_white\") return \"Bu \u00FCr\u00FCn\u00FC sabit beyaz/g\u00FCn \u0131\u015F\u0131\u011F\u0131 karakteriyle anlat; RGB veya geni\u015F Kelvin esnekli\u011Fi varm\u0131\u015F gibi konu\u015Fma.\";\r\n    return \"Bu \u00FCr\u00FCn i\u00E7in family/watt netle\u015Fmeden NORA kesin ana \u0131\u015F\u0131k veya RGB rol\u00FC iddias\u0131 kurmamal\u0131.\";\r\n  }\r\n\r\n  function canonicalRow(p, index) {\r\n    var title = clean(p && (p.smartTitle || p.shortTitle || p.title || p.handle || \"\"));\r\n    var handle = clean(p && p.handle || \"\");\r\n    var text = productText(p);\r\n    var fam = inferFamily(title, handle, text);\r\n    var watt = inferWatt(title, handle, text);\r\n    var roles = roleData(fam.family, watt.wattBand, text);\r\n\r\n    var review = [];\r\n    if (fam.family === \"unknown\") review.push(\"family_unknown\");\r\n    if (fam.familyConfidence === \"low\") review.push(\"family_low_confidence\");\r\n    if (watt.wattBand === \"unknown\") review.push(\"watt_unknown\");\r\n    if (watt.wattConfidence === \"medium\") review.push(\"watt_model_number_possible\");\r\n    if (roles.restrictedRoles.length) review.push(\"restricted_roles_present\");\r\n\r\n    return {\r\n      productKey: slug(handle || title),\r\n      handle: handle,\r\n      title: title,\r\n      family: fam.family,\r\n      familyConfidence: fam.familyConfidence,\r\n      watt: watt.watt,\r\n      wattBand: watt.wattBand,\r\n      wattConfidence: watt.wattConfidence,\r\n      wattSource: watt.wattSource,\r\n      eligibleRoles: roles.eligibleRoles,\r\n      restrictedRoles: roles.restrictedRoles,\r\n      setupRolePriority: roles.setupRolePriority,\r\n      noraTruthRule: noraTruthRule(fam.family, watt.wattBand),\r\n      manualReview: review,\r\n      lockStatus: review.length ? \"needs_manual_confirm\" : \"auto_lock_candidate\"\r\n    };\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return rows.reduce(function (acc, row) {\r\n      var k = row[key] || \"unknown\";\r\n      acc[k] = (acc[k] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function exportObject(rows) {\r\n    var byHandle = {};\r\n    rows.forEach(function (row) {\r\n      byHandle[row.handle] = {\r\n        productKey: row.productKey,\r\n        title: row.title,\r\n        family: row.family,\r\n        familyConfidence: row.familyConfidence,\r\n        watt: row.watt,\r\n        wattBand: row.wattBand,\r\n        wattConfidence: row.wattConfidence,\r\n        eligibleRoles: row.eligibleRoles,\r\n        restrictedRoles: row.restrictedRoles,\r\n        setupRolePriority: row.setupRolePriority,\r\n        noraTruthRule: row.noraTruthRule,\r\n        manualReview: row.manualReview,\r\n        lockStatus: row.lockStatus\r\n      };\r\n    });\r\n\r\n    return {\r\n      version: \"PANEL-V4-R27-A1-B-PRODUCT-CANONICAL-CONTEXT-DRAFT\",\r\n      generatedAt: new Date().toISOString(),\r\n      productCount: rows.length,\r\n      byHandle: byHandle\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A1BManualOverrideCanonicalContextExport = function () {\r\n    var rows = productPool().map(canonicalRow);\r\n    var manualRows = rows.filter(function (row) { return row.manualReview.length > 0; });\r\n    var exp = exportObject(rows);\r\n\r\n    var checks = {\r\n      productPoolReady: rows.length === 19,\r\n      exportGenerated: !!exp && exp.productCount === 19,\r\n      handlesUnique: Object.keys(exp.byHandle).length === 19,\r\n      noraTruthRulesPresent: rows.every(function (row) { return !!row.noraTruthRule; }),\r\n      rolePriorityPresent: rows.every(function (row) { return row.setupRolePriority.length > 0; }),\r\n      manualReviewRowsListed: manualRows.length >= 1,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.exportGenerated &&\r\n      checks.handlesUnique &&\r\n      checks.noraTruthRulesPresent &&\r\n      checks.rolePriorityPresent &&\r\n      checks.manualReviewRowsListed;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productCount: rows.length,\r\n        familyCounts: countBy(rows, \"family\"),\r\n        wattBandCounts: countBy(rows, \"wattBand\"),\r\n        manualReviewCount: manualRows.length,\r\n        manualReviewRows: manualRows,\r\n        canonicalContextExport: exp,\r\n        copyableJson: JSON.stringify(exp, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"Canonical context export haz\u0131r. Bu \u00E7\u0131kt\u0131 manuel g\u00F6zden ge\u00E7irilip R27-A1-C Product Canonical Context Lock i\u00E7in temel al\u0131nmal\u0131.\"\r\n          : \"Export eksik; resolver veya handle uniqueness incelenmeli.\",\r\n        warning: \"Bu h\u00E2l\u00E2 production data de\u011Fildir; manuel review sat\u0131rlar\u0131 kilitlenmeden NORA g\u00FC\u00E7l\u00FC iddia kurmamal\u0131.\"\r\n      },\r\n      next: ok\r\n        ? \"R27-A1-C Product Canonical Context Lock belgesi haz\u0131rlanmal\u0131.\"\r\n        : \"HOLD\",\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A1-B-MANUAL-OVERRIDE-CANONICAL-CONTEXT-EXPORT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A1-C-PRODUCT-CANONICAL-CONTEXT-LOCK-VERIFY-READONLY\r\n   FAZ:\r\n   R27-A1-C\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A1-B canonical export \u00E7\u0131kt\u0131s\u0131n\u0131 lock format\u0131nda do\u011Frular.\r\n   Bu faz production data yazmaz; lock candidate JSON \u00FCretir ve \u015Fema uygunlu\u011Funu kontrol eder.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A1CProductCanonicalContextLockVerify()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A1-C-PRODUCT-CANONICAL-CONTEXT-LOCK-VERIFY-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A1-C-PRODUCT-CANONICAL-CONTEXT-LOCK-VERIFY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function slug(v) {\r\n    return lower(v)\r\n      .replace(/\u011F/g, \"g\").replace(/\u00FC/g, \"u\").replace(/\u015F/g, \"s\").replace(/\u0131/g, \"i\").replace(/\u00F6/g, \"o\").replace(/\u00E7/g, \"c\")\r\n      .replace(/[^a-z0-9]+/g, \"_\")\r\n      .replace(/^_+|_+$/g, \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productText(p) {\r\n    return clean([\r\n      p && p.title,\r\n      p && p.smartTitle,\r\n      p && p.shortTitle,\r\n      p && p.handle,\r\n      p && p.url,\r\n      p && p.product_type,\r\n      p && p.type,\r\n      p && p.vendor,\r\n      Array.isArray(p && p.tags) ? p.tags.join(\" \") : (p && p.tags),\r\n      p && p.body_html,\r\n      p && p.description,\r\n      p && p.metafields ? JSON.stringify(p.metafields) : \"\"\r\n    ].filter(Boolean).join(\" \"));\r\n  }\r\n\r\n  function parseWattCandidates(raw) {\r\n    raw = clean(raw);\r\n    var out = [];\r\n    var re = /(\\d{2,4})\\s*(?:w|watt)\\b/gi;\r\n    var m;\r\n    while ((m = re.exec(raw)) !== null) {\r\n      var value = Number(m[1]);\r\n      if (!isFinite(value) || value <= 0 || value > 2000) continue;\r\n      out.push({ value: value, token: m[0], index: m.index });\r\n    }\r\n    var seen = {};\r\n    return out.filter(function (x) {\r\n      var key = x.value + \"@\" + x.index;\r\n      if (seen[key]) return false;\r\n      seen[key] = true;\r\n      return true;\r\n    });\r\n  }\r\n\r\n  function getWattBand(watt) {\r\n    if (watt == null || !isFinite(watt)) return \"unknown\";\r\n    if (watt <= 50) return \"low\";\r\n    if (watt <= 100) return \"mid\";\r\n    if (watt <= 180) return \"high\";\r\n    return \"pro\";\r\n  }\r\n\r\n  function inferWatt(title, handle, text) {\r\n    var raw = clean([title, handle, text].join(\" \"));\r\n    var candidates = parseWattCandidates(raw);\r\n    if (!candidates.length) {\r\n      return { watt: null, wattBand: \"unknown\", wattConfidence: \"low\", wattSource: \"missing\", wattCandidates: [] };\r\n    }\r\n    var chosen = candidates[candidates.length - 1];\r\n    return {\r\n      watt: chosen.value,\r\n      wattBand: getWattBand(chosen.value),\r\n      wattConfidence: candidates.length > 1 ? \"medium\" : \"high\",\r\n      wattSource: candidates.length > 1 ? \"last_watt_candidate_model_safe\" : \"single_watt_candidate\",\r\n      wattCandidates: candidates\r\n    };\r\n  }\r\n\r\n  function inferFamily(title, handle, text) {\r\n    var raw = lower([title, handle, text].join(\" \"));\r\n    if (/\\brgbww\\b|\\brgbwy\\b|\\brgb\\b|600rgb|1000r|1500r|750r|ldx50r|rgb led|hs\u0131|hsi|fx\\b|renk efekt|0\\s*[-\u2013]\\s*360|360\\s*\u00B0/i.test(raw)) {\r\n      return { family: \"rgb\", familyConfidence: \"high\", familyReasons: [\"rgb_signal\"] };\r\n    }\r\n    if (/bi.?color|bi color|bicolor|\u00E7ift renk|cct|kelvin|p300ts|gx-300|p-750c|p260c|2020c|cf-300c|1024w|1700w|900w|cf-120w/i.test(raw)) {\r\n      return { family: \"bicolor\", familyConfidence: \"medium\", familyReasons: [\"bicolor_signal\"] };\r\n    }\r\n    if (/daylight|g\u00FCn \u0131\u015F\u0131\u011F\u0131|5600k|2020w/i.test(raw)) {\r\n      return { family: \"daylight_or_fixed_white\", familyConfidence: \"low\", familyReasons: [\"daylight_or_fixed_white_signal\"] };\r\n    }\r\n    return { family: \"unknown\", familyConfidence: \"low\", familyReasons: [\"no_clear_family_signal\"] };\r\n  }\r\n\r\n  function roleData(family, band, text) {\r\n    var raw = lower(text);\r\n    var eligible = [];\r\n    var restricted = [];\r\n    var priority = [];\r\n\r\n    if (family === \"rgb\") {\r\n      eligible = [\"rgb_accent\", \"rgb_background_wash\", \"background_light\", \"rim_or_color_separation\"];\r\n      priority = [\"rgb_background_wash\", \"rgb_accent\", \"rim_or_color_separation\"];\r\n      if (band === \"high\" || band === \"pro\") {\r\n        eligible.push(\"creative_key_possible\", \"large_background_color_wash\");\r\n        priority.unshift(\"creative_key_possible\");\r\n      } else {\r\n        eligible.push(\"support_or_accent_light\");\r\n        restricted.push(\"primary_key_for_large_area\");\r\n      }\r\n    } else if (family === \"bicolor\") {\r\n      eligible = [\"key_light\", \"fill_light\", \"soft_front_light\"];\r\n      priority = [\"key_light\", \"fill_light\"];\r\n      if (band === \"high\" || band === \"pro\") {\r\n        eligible.push(\"studio_key\", \"clinical_soft_front\", \"interview_key\");\r\n        priority.unshift(\"studio_key\");\r\n      } else if (band === \"mid\") {\r\n        eligible.push(\"interview_key\", \"product_side_light\");\r\n      } else if (band === \"low\") {\r\n        eligible.push(\"close_range_support\", \"product_side_light\");\r\n        restricted.push(\"large_area_primary_key\");\r\n        priority = [\"close_range_support\", \"fill_light\"];\r\n      }\r\n    } else if (family === \"daylight_or_fixed_white\") {\r\n      eligible = [\"key_light\", \"fill_light\", \"fixed_white_support\"];\r\n      priority = [\"key_light\", \"fill_light\"];\r\n      restricted.push(\"rgb_accent\", \"kelvin_flexible_claim\");\r\n      if (band === \"high\" || band === \"pro\") eligible.push(\"studio_key\");\r\n      if (band === \"low\") eligible.push(\"close_range_support\");\r\n    } else {\r\n      eligible = [\"manual_role_mapping_required\"];\r\n      restricted = [\"strong_claims_without_data\"];\r\n      priority = [\"manual_role_mapping_required\"];\r\n    }\r\n\r\n    if (/batarya|battery|np-f|v-mount|portable|mobil/i.test(raw)) {\r\n      eligible.push(\"portable_interview_light\");\r\n      priority.push(\"portable_interview_light\");\r\n    }\r\n\r\n    function uniq(arr) { return arr.filter(function (x, i, a) { return a.indexOf(x) === i; }); }\r\n\r\n    return {\r\n      eligibleRoles: uniq(eligible),\r\n      restrictedRoles: uniq(restricted),\r\n      setupRolePriority: uniq(priority)\r\n    };\r\n  }\r\n\r\n  function noraTruthRule(family, band) {\r\n    if (family === \"rgb\") {\r\n      if (band === \"low\" || band === \"mid\") return \"Bu \u00FCr\u00FCn\u00FC ana \u0131\u015F\u0131k olarak de\u011Fil; RGB kreatif senaryoda arka plan renk ayr\u0131m\u0131, vurgu veya kenar \u0131\u015F\u0131\u011F\u0131 rol\u00FCnde anlat.\";\r\n      return \"Bu RGB \u00FCr\u00FCn kreatif ana \u0131\u015F\u0131k potansiyeli ta\u015F\u0131yabilir; yine de se\u00E7ili amaca g\u00F6re arka plan/atmosfer/renk ayr\u0131m\u0131 rol\u00FC d\u00FCr\u00FCst\u00E7e vurgulanmal\u0131.\";\r\n    }\r\n    if (family === \"bicolor\") {\r\n      if (band === \"low\") return \"Bu \u00FCr\u00FCn\u00FC b\u00FCy\u00FCk alan ana \u0131\u015F\u0131\u011F\u0131 gibi abartma; yak\u0131n plan, masa\u00FCst\u00FC, dolgu veya destek \u0131\u015F\u0131\u011F\u0131 olarak anlat.\";\r\n      if (band === \"mid\") return \"Bu \u00FCr\u00FCn\u00FC yak\u0131n/orta mesafe ana \u0131\u015F\u0131k veya dolgu \u0131\u015F\u0131\u011F\u0131 olarak anlat; b\u00FCy\u00FCk st\u00FCdyo iddias\u0131n\u0131 s\u0131n\u0131rl\u0131 tut.\";\r\n      return \"Bu \u00FCr\u00FCn\u00FC ana \u0131\u015F\u0131k, yumu\u015Fak \u00F6n \u0131\u015F\u0131k, klinik/st\u00FCdyo veya g\u00FC\u00E7l\u00FC dolgu rol\u00FCnde anlat; RGB atmosfer gerekiyorsa ikinci \u0131\u015F\u0131k gerekebilece\u011Fini s\u00F6yle.\";\r\n    }\r\n    if (family === \"daylight_or_fixed_white\") return \"Bu \u00FCr\u00FCn\u00FC sabit beyaz/g\u00FCn \u0131\u015F\u0131\u011F\u0131 karakteriyle anlat; RGB veya geni\u015F Kelvin esnekli\u011Fi varm\u0131\u015F gibi konu\u015Fma.\";\r\n    return \"Bu \u00FCr\u00FCn i\u00E7in family/watt netle\u015Fmeden NORA kesin ana \u0131\u015F\u0131k veya RGB rol\u00FC iddias\u0131 kurmamal\u0131.\";\r\n  }\r\n\r\n  function contextRow(p) {\r\n    var title = clean(p && (p.smartTitle || p.shortTitle || p.title || p.handle || \"\"));\r\n    var handle = clean(p && p.handle || \"\");\r\n    var text = productText(p);\r\n    var fam = inferFamily(title, handle, text);\r\n    var watt = inferWatt(title, handle, text);\r\n    var roles = roleData(fam.family, watt.wattBand, text);\r\n\r\n    var manualReview = [];\r\n    if (fam.family === \"unknown\") manualReview.push(\"family_unknown\");\r\n    if (fam.familyConfidence === \"low\") manualReview.push(\"family_low_confidence\");\r\n    if (watt.wattBand === \"unknown\") manualReview.push(\"watt_unknown\");\r\n    if (watt.wattConfidence === \"medium\") manualReview.push(\"watt_model_number_possible\");\r\n    if (roles.restrictedRoles.length) manualReview.push(\"restricted_roles_present\");\r\n\r\n    return {\r\n      productKey: slug(handle || title),\r\n      handle: handle,\r\n      title: title,\r\n      family: fam.family,\r\n      familyConfidence: fam.familyConfidence,\r\n      watt: watt.watt,\r\n      wattBand: watt.wattBand,\r\n      wattConfidence: watt.wattConfidence,\r\n      wattSource: watt.wattSource,\r\n      eligibleRoles: roles.eligibleRoles,\r\n      restrictedRoles: roles.restrictedRoles,\r\n      setupRolePriority: roles.setupRolePriority,\r\n      noraTruthRule: noraTruthRule(fam.family, watt.wattBand),\r\n      manualReview: manualReview,\r\n      lockStatus: manualReview.length ? \"needs_manual_confirm\" : \"auto_lock_candidate\"\r\n    };\r\n  }\r\n\r\n  function buildLockCandidate(rows) {\r\n    var byHandle = {};\r\n    rows.forEach(function (row) {\r\n      byHandle[row.handle] = {\r\n        productKey: row.productKey,\r\n        title: row.title,\r\n        family: row.family,\r\n        familyConfidence: row.familyConfidence,\r\n        watt: row.watt,\r\n        wattBand: row.wattBand,\r\n        wattConfidence: row.wattConfidence,\r\n        wattSource: row.wattSource,\r\n        eligibleRoles: row.eligibleRoles,\r\n        restrictedRoles: row.restrictedRoles,\r\n        setupRolePriority: row.setupRolePriority,\r\n        noraTruthRule: row.noraTruthRule,\r\n        manualReview: row.manualReview,\r\n        lockStatus: row.lockStatus\r\n      };\r\n    });\r\n\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_PRODUCT_CANONICAL_CONTEXT\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A1-C-PRODUCT-CANONICAL-CONTEXT-LOCK-CANDIDATE\",\r\n      productCount: rows.length,\r\n      familyValues: [\"rgb\", \"bicolor\", \"daylight_or_fixed_white\", \"unknown\"],\r\n      wattBandValues: [\"low\", \"mid\", \"high\", \"pro\", \"unknown\"],\r\n      roleTaxonomy: [\r\n        \"key_light\",\r\n        \"fill_light\",\r\n        \"soft_front_light\",\r\n        \"clinical_soft_front\",\r\n        \"product_top_light\",\r\n        \"product_side_light\",\r\n        \"background_light\",\r\n        \"rim_light\",\r\n        \"hair_light\",\r\n        \"rgb_accent\",\r\n        \"rgb_background_wash\",\r\n        \"rim_or_color_separation\",\r\n        \"portable_interview_light\",\r\n        \"support_or_accent_light\",\r\n        \"close_range_support\",\r\n        \"creative_key_possible\",\r\n        \"large_background_color_wash\",\r\n        \"studio_key\",\r\n        \"interview_key\",\r\n        \"fixed_white_support\",\r\n        \"manual_role_mapping_required\"\r\n      ],\r\n      byHandle: byHandle,\r\n      lockRule: \"Manual review sat\u0131rlar\u0131 onaylanmadan production canonical data olarak uygulanmaz.\",\r\n      noraRule: \"NORA family + wattBand + role sinyali olmadan g\u00FC\u00E7l\u00FC iddia kurmaz.\"\r\n    };\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return rows.reduce(function (acc, row) {\r\n      var k = row[key] || \"unknown\";\r\n      acc[k] = (acc[k] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function validate(lock, rows) {\r\n    var handles = Object.keys(lock.byHandle || {});\r\n    var missing = [];\r\n    handles.forEach(function (h) {\r\n      var row = lock.byHandle[h];\r\n      [\"productKey\", \"title\", \"family\", \"wattBand\", \"eligibleRoles\", \"restrictedRoles\", \"setupRolePriority\", \"noraTruthRule\", \"manualReview\", \"lockStatus\"].forEach(function (key) {\r\n        if (row[key] === undefined || row[key] === null || row[key] === \"\") missing.push(h + \".\" + key);\r\n      });\r\n    });\r\n\r\n    return {\r\n      productCountOk: lock.productCount === 19 && rows.length === 19,\r\n      handlesUnique: handles.length === 19,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      allHaveNoraTruthRule: rows.every(function (r) { return !!r.noraTruthRule; }),\r\n      allHaveRolePriority: rows.every(function (r) { return Array.isArray(r.setupRolePriority) && r.setupRolePriority.length > 0; }),\r\n      manualReviewPresent: rows.some(function (r) { return r.manualReview.length > 0; })\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A1CProductCanonicalContextLockVerify = function () {\r\n    var rows = productPool().map(contextRow);\r\n    var lock = buildLockCandidate(rows);\r\n    var v = validate(lock, rows);\r\n\r\n    var checks = {\r\n      productPoolReady: rows.length === 19,\r\n      lockCandidateGenerated: !!lock && lock.productCount === 19,\r\n      productCountOk: v.productCountOk,\r\n      handlesUnique: v.handlesUnique,\r\n      noMissingRequiredFields: v.noMissingRequiredFields,\r\n      allHaveNoraTruthRule: v.allHaveNoraTruthRule,\r\n      allHaveRolePriority: v.allHaveRolePriority,\r\n      manualReviewPresent: v.manualReviewPresent,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.lockCandidateGenerated &&\r\n      checks.productCountOk &&\r\n      checks.handlesUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.allHaveNoraTruthRule &&\r\n      checks.allHaveRolePriority &&\r\n      checks.manualReviewPresent;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        familyCounts: countBy(rows, \"family\"),\r\n        wattBandCounts: countBy(rows, \"wattBand\"),\r\n        manualReviewCount: rows.filter(function (r) { return r.manualReview.length > 0; }).length,\r\n        validation: v,\r\n        lockCandidate: lock,\r\n        copyableLockJson: JSON.stringify(lock, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"Product Canonical Context lock candidate do\u011Fruland\u0131. Bu JSON production data de\u011Fil; R27-A1-C seal sonras\u0131 R27-A2 Setup Scenario Library blueprint'e ge\u00E7ilebilir.\"\r\n          : \"Lock candidate eksik; canonical context field kontrol\u00FC gerekir.\",\r\n        warning: \"Manual review sat\u0131rlar\u0131 onaylanmadan canl\u0131 score/ranking/product data de\u011Fi\u015Ftirilmez.\"\r\n      },\r\n      next: ok\r\n        ? \"R27-A2 Setup Scenario Library Blueprint\"\r\n        : \"HOLD\",\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A1-C-PRODUCT-CANONICAL-CONTEXT-LOCK-VERIFY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A2-SETUP-SCENARIO-LIBRARY-BLUEPRINT-READONLY\r\n   FAZ:\r\n   R27-A2\r\n\r\n   KISA AMA\u00C7:\r\n   8 ana ama\u00E7 / 24 alt ama\u00E7 / 72 setup senaryosu blueprint \u00FCretir.\r\n   Her senaryo purpose + subPurpose + role + family + wattBand + NORA d\u00FCr\u00FCst notu + visualKey + fallbackSchemaKey ta\u015F\u0131r.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A2SetupScenarioLibraryBlueprint()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A2-SETUP-SCENARIO-LIBRARY-BLUEPRINT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A2-SETUP-SCENARIO-LIBRARY-BLUEPRINT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function slug(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\")\r\n      .replace(/\u011F/g, \"g\").replace(/\u00FC/g, \"u\").replace(/\u015F/g, \"s\").replace(/\u0131/g, \"i\").replace(/\u00F6/g, \"o\").replace(/\u00E7/g, \"c\")\r\n      .replace(/[^a-z0-9]+/g, \"_\")\r\n      .replace(/^_+|_+$/g, \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  var PURPOSES = [\r\n    {\r\n      purposeKey: \"product_ecommerce\",\r\n      title: \"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"small_product_tabletop\", title: \"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn / masa\u00FCst\u00FC \u00E7ekim\" },\r\n        { subPurposeKey: \"large_product_model\", title: \"B\u00FCy\u00FCk \u00FCr\u00FCn / model \u00FCzerinde \u00E7ekim\" },\r\n        { subPurposeKey: \"marketplace_catalog\", title: \"Pazar yeri / katalog \u00E7ekimi\" }\r\n      ]\r\n    },\r\n    {\r\n      purposeKey: \"youtube_reels_social\",\r\n      title: \"YouTube / Reels / Sosyal Medya\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"single_person_video\", title: \"Tek ki\u015Fi video\" },\r\n        { subPurposeKey: \"short_video_reels\", title: \"Reels / TikTok k\u0131sa i\u00E7erik\" },\r\n        { subPurposeKey: \"live_stream_talk\", title: \"Yay\u0131n / canl\u0131 anlat\u0131m\" }\r\n      ]\r\n    },\r\n    {\r\n      purposeKey: \"interview_talking_head\",\r\n      title: \"R\u00F6portaj / Konu\u015Fan Kafa\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"single_interview\", title: \"Tek ki\u015Fi r\u00F6portaj\" },\r\n        { subPurposeKey: \"two_person_interview\", title: \"\u0130ki ki\u015Fi r\u00F6portaj\" },\r\n        { subPurposeKey: \"corporate_training_video\", title: \"Kurumsal video / e\u011Fitim\" }\r\n      ]\r\n    },\r\n    {\r\n      purposeKey: \"clinic_aesthetic_dental\",\r\n      title: \"Klinik / Estetik / Dental\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"skin_face_capture\", title: \"Cilt / y\u00FCz \u00E7ekimi\" },\r\n        { subPurposeKey: \"dental_support\", title: \"Dental / a\u011F\u0131z i\u00E7i destek\" },\r\n        { subPurposeKey: \"clinic_social_content\", title: \"Klinik sosyal medya i\u00E7erikleri\" }\r\n      ]\r\n    },\r\n    {\r\n      purposeKey: \"rgb_creative_video\",\r\n      title: \"RGB / Kreatif Video\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"background_color_effect\", title: \"Arka plan renk efekti\" },\r\n        { subPurposeKey: \"music_clip_scene\", title: \"M\u00FCzik / klip / kreatif sahne\" },\r\n        { subPurposeKey: \"product_color_separation\", title: \"\u00DCr\u00FCn arkas\u0131nda renk ayr\u0131m\u0131\" }\r\n      ]\r\n    },\r\n    {\r\n      purposeKey: \"studio_professional\",\r\n      title: \"St\u00FCdyo / Profesyonel \u00C7ekim\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"model_shoot\", title: \"Model \u00E7ekimi\" },\r\n        { subPurposeKey: \"campaign_ad_visual\", title: \"Reklam / kampanya g\u00F6rseli\" },\r\n        { subPurposeKey: \"fixed_studio_setup\", title: \"Sabit st\u00FCdyo kurulumu\" }\r\n      ]\r\n    },\r\n    {\r\n      purposeKey: \"mobile_outdoor\",\r\n      title: \"Mobil / D\u0131\u015F Mekan\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"battery_shoot\", title: \"Bataryal\u0131 \u00E7ekim\" },\r\n        { subPurposeKey: \"portable_team\", title: \"Ta\u015F\u0131nabilir ekip\" },\r\n        { subPurposeKey: \"fast_location_setup\", title: \"Mekan i\u00E7i h\u0131zl\u0131 kurulum\" }\r\n      ]\r\n    },\r\n    {\r\n      purposeKey: \"starter_budget_practical\",\r\n      title: \"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik Kurulum\",\r\n      subPurposes: [\r\n        { subPurposeKey: \"first_light_choice\", title: \"\u0130lk \u0131\u015F\u0131k se\u00E7imi\" },\r\n        { subPurposeKey: \"budget_setup\", title: \"Uygun fiyatl\u0131 setup\" },\r\n        { subPurposeKey: \"small_space_solution\", title: \"Az yer kaplayan \u00E7\u00F6z\u00FCm\" }\r\n      ]\r\n    }\r\n  ];\r\n\r\n  function scenarioTemplatesFor(purposeKey, subPurposeKey, title) {\r\n    var base = [\r\n      {\r\n        scenarioType: \"balanced_key_fill\",\r\n        titlePrefix: \"Dengeli ana/dolgu kurulumu\",\r\n        targetUser: \"Tek ba\u015F\u0131na veya k\u00FC\u00E7\u00FCk ekip ile temiz, anla\u015F\u0131l\u0131r ve g\u00FCvenli \u0131\u015F\u0131k kurmak isteyen kullan\u0131c\u0131.\",\r\n        recommendedRoles: [\"key_light\", \"fill_light\", \"soft_front_light\"],\r\n        allowedFamilies: [\"bicolor\", \"daylight_or_fixed_white\"],\r\n        preferredWattBands: [\"mid\", \"high\", \"pro\"],\r\n        excludedFamilies: [],\r\n        excludedWattBands: [],\r\n        noraHonestNote: \"Bu senaryoda \u00F6ncelik y\u00FCz/\u00FCr\u00FCn \u00FCzerinde kontroll\u00FC ve dengeli ana \u0131\u015F\u0131k kurmakt\u0131r. RGB etki isteniyorsa ikinci bir vurgu veya arka plan \u0131\u015F\u0131\u011F\u0131 d\u00FC\u015F\u00FCnmek daha do\u011Fru olur.\",\r\n        setupPlacementHint: \"I\u015F\u0131\u011F\u0131 konuya 30-45 derece a\u00E7\u0131yla, g\u00F6z hizas\u0131ndan hafif yukar\u0131da konumland\u0131r; sert g\u00F6lge olu\u015Fuyorsa mesafeyi art\u0131r veya dif\u00FCzyon kullan.\",\r\n        roleEmphasis: \"main_clean_light\"\r\n      },\r\n      {\r\n        scenarioType: \"rgb_background_accent\",\r\n        titlePrefix: \"Arka plan / renk ayr\u0131m\u0131 kurulumu\",\r\n        targetUser: \"Sahneyi daha dikkat \u00E7ekici yapmak, fon veya kenar ayr\u0131m\u0131 ile g\u00F6rsel derinlik isteyen kullan\u0131c\u0131.\",\r\n        recommendedRoles: [\"rgb_background_wash\", \"rgb_accent\", \"rim_or_color_separation\", \"background_light\"],\r\n        allowedFamilies: [\"rgb\"],\r\n        preferredWattBands: [\"low\", \"mid\", \"high\", \"pro\"],\r\n        excludedFamilies: [],\r\n        excludedWattBands: [],\r\n        noraHonestNote: \"RGB \u0131\u015F\u0131\u011F\u0131 burada ana \u0131\u015F\u0131k gibi de\u011Fil, sahne atmosferi ve arka plan/kenar ayr\u0131m\u0131 i\u00E7in d\u00FC\u015F\u00FCnmek daha sa\u011Fl\u0131kl\u0131 olur.\",\r\n        setupPlacementHint: \"RGB \u0131\u015F\u0131\u011F\u0131 konuya do\u011Frudan de\u011Fil, arka plana veya konu arkas\u0131ndan kenar hatt\u0131na y\u00F6nlendir; y\u00FCz \u0131\u015F\u0131\u011F\u0131n\u0131 ayr\u0131 ve daha do\u011Fal tut.\",\r\n        roleEmphasis: \"creative_accent\"\r\n      },\r\n      {\r\n        scenarioType: \"compact_support_close_range\",\r\n        titlePrefix: \"Yak\u0131n plan / destek kurulumu\",\r\n        targetUser: \"Az yer kaplayan, h\u0131zl\u0131 kurulan ve yak\u0131n mesafede yeterli etki arayan kullan\u0131c\u0131.\",\r\n        recommendedRoles: [\"close_range_support\", \"fill_light\", \"product_side_light\", \"support_or_accent_light\"],\r\n        allowedFamilies: [\"bicolor\", \"rgb\", \"daylight_or_fixed_white\"],\r\n        preferredWattBands: [\"low\", \"mid\"],\r\n        excludedFamilies: [],\r\n        excludedWattBands: [],\r\n        noraHonestNote: \"Bu kurulumda d\u00FC\u015F\u00FCk/orta g\u00FC\u00E7 \u00FCr\u00FCnleri b\u00FCy\u00FCk alan ana \u0131\u015F\u0131\u011F\u0131 gibi de\u011Fil, yak\u0131n plan destek veya vurgu \u0131\u015F\u0131\u011F\u0131 gibi de\u011Ferlendirmek daha do\u011Fru olur.\",\r\n        setupPlacementHint: \"I\u015F\u0131\u011F\u0131 konuya yak\u0131n ve kontroll\u00FC konumland\u0131r; k\u00FC\u00E7\u00FCk alanlarda parlamay\u0131 azaltmak i\u00E7in a\u00E7\u0131y\u0131 yana al veya g\u00FCc\u00FC d\u00FC\u015F\u00FCr.\",\r\n        roleEmphasis: \"compact_support\"\r\n      }\r\n    ];\r\n\r\n    if (purposeKey === \"clinic_aesthetic_dental\") {\r\n      base[0].recommendedRoles = [\"clinical_soft_front\", \"key_light\", \"fill_light\", \"soft_front_light\"];\r\n      base[0].allowedFamilies = [\"bicolor\", \"daylight_or_fixed_white\"];\r\n      base[0].noraHonestNote = \"Klinik senaryoda do\u011Fru renk ve yumu\u015Fak \u00F6n \u0131\u015F\u0131k \u00F6nemlidir. RGB efekt burada ana ihtiya\u00E7 de\u011Fildir; y\u00FCz/cilt/dental detayda do\u011Fal ve dengeli \u0131\u015F\u0131k tercih edilmelidir.\";\r\n      base[0].setupPlacementHint = \"I\u015F\u0131\u011F\u0131 y\u00FCz/detay b\u00F6lgesine yumu\u015Fak ve kontroll\u00FC ver; yans\u0131ma veya sert g\u00F6lge varsa a\u00E7\u0131 ve mesafeyi k\u00FC\u00E7\u00FCk ad\u0131mlarla d\u00FCzelt.\";\r\n    }\r\n\r\n    if (purposeKey === \"rgb_creative_video\") {\r\n      base[0].recommendedRoles = [\"key_light\", \"fill_light\", \"soft_front_light\"];\r\n      base[0].allowedFamilies = [\"bicolor\"];\r\n      base[0].noraHonestNote = \"Kreatif RGB sahnede bile y\u00FCz/\u00FCr\u00FCn i\u00E7in temiz bir ana \u0131\u015F\u0131k gerekebilir. RGB \u0131\u015F\u0131k atmosferi kurar; ana \u0131\u015F\u0131k rol\u00FC her zaman RGB\u2019ye y\u00FCklenmemelidir.\";\r\n      base[1].preferredWattBands = [\"mid\", \"high\", \"pro\"];\r\n      base[1].noraHonestNote = \"Bu alt ama\u00E7ta RGB \u0131\u015F\u0131\u011F\u0131n en g\u00FC\u00E7l\u00FC rol\u00FC arka plan, kenar \u00E7izgisi ve sahne atmosferidir. Ana \u0131\u015F\u0131k iddias\u0131 \u00FCr\u00FCn g\u00FCc\u00FC ve mesafeye g\u00F6re s\u0131n\u0131rl\u0131 kurulmal\u0131d\u0131r.\";\r\n    }\r\n\r\n    if (purposeKey === \"product_ecommerce\") {\r\n      base[1].recommendedRoles = [\"rgb_accent\", \"background_light\", \"product_color_separation\"];\r\n      base[1].noraHonestNote = \"\u00DCr\u00FCn \u00E7ekiminde RGB, \u00FCr\u00FCn\u00FC ana ayd\u0131nlatmak yerine arka plan ayr\u0131m\u0131 veya marka atmosferi vermek i\u00E7in daha g\u00FCvenli bir roldedir.\";\r\n      base[2].recommendedRoles = [\"product_top_light\", \"product_side_light\", \"close_range_support\", \"fill_light\"];\r\n    }\r\n\r\n    if (purposeKey === \"mobile_outdoor\") {\r\n      base[0].recommendedRoles = [\"portable_interview_light\", \"key_light\", \"fill_light\"];\r\n      base[0].preferredWattBands = [\"low\", \"mid\", \"high\"];\r\n      base[0].noraHonestNote = \"Mobil \u00E7ekimde ta\u015F\u0131nabilirlik ve h\u0131zl\u0131 kurulum \u00F6nemlidir. \u00C7ok g\u00FC\u00E7l\u00FC ama a\u011F\u0131r sistemler her zaman en pratik tercih olmayabilir.\";\r\n      base[2].recommendedRoles = [\"portable_interview_light\", \"close_range_support\", \"support_or_accent_light\"];\r\n    }\r\n\r\n    if (purposeKey === \"starter_budget_practical\") {\r\n      base[0].preferredWattBands = [\"low\", \"mid\"];\r\n      base[0].noraHonestNote = \"Ba\u015Flang\u0131\u00E7 seviyesinde en mant\u0131kl\u0131 kurulum, her \u015Feyi vaat eden \u00FCr\u00FCn de\u011Fil; se\u00E7ilen alanda kontroll\u00FC ve \u00F6\u011Frenmesi kolay \u0131\u015F\u0131k rol\u00FCd\u00FCr.\";\r\n      base[2].noraHonestNote = \"Az yer kaplayan \u00E7\u00F6z\u00FCmlerde \u0131\u015F\u0131\u011F\u0131 yak\u0131n mesafede ve s\u0131n\u0131rl\u0131 beklentiyle kullanmak daha ger\u00E7ek\u00E7idir.\";\r\n    }\r\n\r\n    if (purposeKey === \"studio_professional\") {\r\n      base[0].preferredWattBands = [\"high\", \"pro\"];\r\n      base[0].noraHonestNote = \"Profesyonel st\u00FCdyo taraf\u0131nda ana \u0131\u015F\u0131k g\u00FCc\u00FC ve kontrol \u00F6nemlidir. D\u00FC\u015F\u00FCk watt \u00FCr\u00FCnler bu senaryoda destek rol\u00FCnde kalmal\u0131d\u0131r.\";\r\n      base[2].preferredWattBands = [\"mid\", \"high\"];\r\n    }\r\n\r\n    if (purposeKey === \"interview_talking_head\") {\r\n      base[0].recommendedRoles = [\"interview_key\", \"key_light\", \"fill_light\", \"soft_front_light\"];\r\n      base[0].noraHonestNote = \"R\u00F6portajda y\u00FCz\u00FCn do\u011Fal ve tutarl\u0131 g\u00F6r\u00FCnmesi \u00F6nemlidir. RGB efekt varsa arka plan ayr\u0131m\u0131 olarak kullan\u0131lmal\u0131; y\u00FCz \u0131\u015F\u0131\u011F\u0131 kontrols\u00FCz renklenmemelidir.\";\r\n    }\r\n\r\n    return base.map(function (tpl, idx) {\r\n      var scenarioNo = idx + 1;\r\n      var visualKey = [\r\n        \"panel_setup\",\r\n        purposeKey,\r\n        subPurposeKey,\r\n        tpl.scenarioType\r\n      ].join(\"_\");\r\n\r\n      return {\r\n        scenarioKey: slug([purposeKey, subPurposeKey, tpl.scenarioType].join(\"_\")),\r\n        purposeKey: purposeKey,\r\n        subPurposeKey: subPurposeKey,\r\n        subPurposeTitle: title,\r\n        scenarioNo: scenarioNo,\r\n        scenarioType: tpl.scenarioType,\r\n        title: tpl.titlePrefix + \" \u2014 \" + title,\r\n        targetUser: tpl.targetUser,\r\n        recommendedRoles: tpl.recommendedRoles,\r\n        allowedFamilies: tpl.allowedFamilies,\r\n        preferredWattBands: tpl.preferredWattBands,\r\n        excludedFamilies: tpl.excludedFamilies,\r\n        excludedWattBands: tpl.excludedWattBands,\r\n        noraHonestNote: tpl.noraHonestNote,\r\n        setupPlacementHint: tpl.setupPlacementHint,\r\n        roleEmphasis: tpl.roleEmphasis,\r\n        visualKey: visualKey,\r\n        fallbackSchemaKey: visualKey.replace(\"panel_setup\", \"schema_setup\"),\r\n        sourceStatus: \"blueprint_candidate\"\r\n      };\r\n    });\r\n  }\r\n\r\n  function buildLibrary() {\r\n    var scenarios = [];\r\n    var purposeRows = [];\r\n\r\n    PURPOSES.forEach(function (purpose) {\r\n      purposeRows.push({\r\n        purposeKey: purpose.purposeKey,\r\n        title: purpose.title,\r\n        subPurposeCount: purpose.subPurposes.length\r\n      });\r\n\r\n      purpose.subPurposes.forEach(function (sub) {\r\n        scenarios = scenarios.concat(scenarioTemplatesFor(purpose.purposeKey, sub.subPurposeKey, sub.title));\r\n      });\r\n    });\r\n\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_SETUP_SCENARIOS\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A2-SETUP-SCENARIO-LIBRARY-BLUEPRINT-CANDIDATE\",\r\n      purposeCount: PURPOSES.length,\r\n      subPurposeCount: PURPOSES.reduce(function (sum, p) { return sum + p.subPurposes.length; }, 0),\r\n      scenarioCount: scenarios.length,\r\n      purposeRows: purposeRows,\r\n      purposes: PURPOSES,\r\n      scenarios: scenarios,\r\n      recordFields: [\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"title\",\r\n        \"targetUser\",\r\n        \"recommendedRoles\",\r\n        \"allowedFamilies\",\r\n        \"preferredWattBands\",\r\n        \"excludedFamilies\",\r\n        \"excludedWattBands\",\r\n        \"noraHonestNote\",\r\n        \"setupPlacementHint\",\r\n        \"visualKey\",\r\n        \"fallbackSchemaKey\"\r\n      ],\r\n      lockRule: \"Bu blueprint production data de\u011Fildir; R27-A2-B'de role/family/watt coverage verify sonras\u0131 lock aday\u0131 yap\u0131l\u0131r.\"\r\n    };\r\n  }\r\n\r\n  function countBy(arr, key) {\r\n    return arr.reduce(function (acc, row) {\r\n      var v = row[key] || \"unknown\";\r\n      acc[v] = (acc[v] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function roleCoverage(scenarios) {\r\n    var acc = {};\r\n    scenarios.forEach(function (s) {\r\n      (s.recommendedRoles || []).forEach(function (r) {\r\n        acc[r] = (acc[r] || 0) + 1;\r\n      });\r\n    });\r\n    return acc;\r\n  }\r\n\r\n  function familyCoverage(scenarios) {\r\n    var acc = {};\r\n    scenarios.forEach(function (s) {\r\n      (s.allowedFamilies || []).forEach(function (f) {\r\n        acc[f] = (acc[f] || 0) + 1;\r\n      });\r\n    });\r\n    return acc;\r\n  }\r\n\r\n  function wattCoverage(scenarios) {\r\n    var acc = {};\r\n    scenarios.forEach(function (s) {\r\n      (s.preferredWattBands || []).forEach(function (w) {\r\n        acc[w] = (acc[w] || 0) + 1;\r\n      });\r\n    });\r\n    return acc;\r\n  }\r\n\r\n  function validate(library) {\r\n    var scenarios = library.scenarios || [];\r\n    var keys = {};\r\n    var duplicateKeys = [];\r\n    var missing = [];\r\n\r\n    scenarios.forEach(function (s) {\r\n      if (keys[s.scenarioKey]) duplicateKeys.push(s.scenarioKey);\r\n      keys[s.scenarioKey] = true;\r\n\r\n      library.recordFields.forEach(function (field) {\r\n        if (s[field] === undefined || s[field] === null || s[field] === \"\" || (Array.isArray(s[field]) && s[field].length === 0)) {\r\n          missing.push(s.scenarioKey + \".\" + field);\r\n        }\r\n      });\r\n    });\r\n\r\n    var roles = roleCoverage(scenarios);\r\n    var families = familyCoverage(scenarios);\r\n    var watts = wattCoverage(scenarios);\r\n\r\n    return {\r\n      purposeCountOk: library.purposeCount === 8,\r\n      subPurposeCountOk: library.subPurposeCount === 24,\r\n      scenarioCountOk: library.scenarioCount === 72,\r\n      scenarioKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      hasRgbScenarios: (families.rgb || 0) > 0 && (roles.rgb_accent || 0) > 0,\r\n      hasBicolorScenarios: (families.bicolor || 0) > 0 && (roles.key_light || 0) > 0,\r\n      hasClinicalScenario: scenarios.some(function (s) { return s.recommendedRoles.indexOf(\"clinical_soft_front\") > -1; }),\r\n      hasProductScenario: scenarios.some(function (s) { return s.recommendedRoles.indexOf(\"product_top_light\") > -1 || s.recommendedRoles.indexOf(\"product_side_light\") > -1; }),\r\n      hasPortableScenario: scenarios.some(function (s) { return s.recommendedRoles.indexOf(\"portable_interview_light\") > -1; }),\r\n      hasCloseRangeScenario: scenarios.some(function (s) { return s.recommendedRoles.indexOf(\"close_range_support\") > -1; }),\r\n      allHaveNoraHonestNote: scenarios.every(function (s) { return clean(s.noraHonestNote).length > 30; }),\r\n      allHaveVisualKey: scenarios.every(function (s) { return /^panel_setup_/.test(s.visualKey); }),\r\n      roleCoverage: roles,\r\n      familyCoverage: families,\r\n      wattCoverage: watts\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A2SetupScenarioLibraryBlueprint = function () {\r\n    var library = buildLibrary();\r\n    var v = validate(library);\r\n\r\n    var checks = {\r\n      productPoolReadable: productPool().length === 19,\r\n      purposeCountOk: v.purposeCountOk,\r\n      subPurposeCountOk: v.subPurposeCountOk,\r\n      scenarioCountOk: v.scenarioCountOk,\r\n      scenarioKeysUnique: v.scenarioKeysUnique,\r\n      noMissingRequiredFields: v.noMissingRequiredFields,\r\n      hasRgbScenarios: v.hasRgbScenarios,\r\n      hasBicolorScenarios: v.hasBicolorScenarios,\r\n      hasClinicalScenario: v.hasClinicalScenario,\r\n      hasProductScenario: v.hasProductScenario,\r\n      hasPortableScenario: v.hasPortableScenario,\r\n      hasCloseRangeScenario: v.hasCloseRangeScenario,\r\n      allHaveNoraHonestNote: v.allHaveNoraHonestNote,\r\n      allHaveVisualKey: v.allHaveVisualKey,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.purposeCountOk &&\r\n      checks.subPurposeCountOk &&\r\n      checks.scenarioCountOk &&\r\n      checks.scenarioKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.hasRgbScenarios &&\r\n      checks.hasBicolorScenarios &&\r\n      checks.hasClinicalScenario &&\r\n      checks.hasProductScenario &&\r\n      checks.hasPortableScenario &&\r\n      checks.hasCloseRangeScenario &&\r\n      checks.allHaveNoraHonestNote &&\r\n      checks.allHaveVisualKey;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        purposeCount: library.purposeCount,\r\n        subPurposeCount: library.subPurposeCount,\r\n        scenarioCount: library.scenarioCount,\r\n        validation: v,\r\n        scenarioTypeCounts: countBy(library.scenarios, \"scenarioType\"),\r\n        setupScenarioLibraryBlueprint: library,\r\n        copyableScenarioLibraryJson: JSON.stringify(library, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"72 setup senaryo blueprint \u00FCretildi. R27-A2-B'de role/family/watt coverage ve NORA d\u00FCr\u00FCstl\u00FCk kontrol\u00FC detayl\u0131 do\u011Frulanmal\u0131.\"\r\n          : \"Blueprint eksik; purpose/subPurpose/scenario alanlar\u0131 kontrol edilmeli.\",\r\n        noraRule: \"Her senaryo \u00FCr\u00FCnleri zorla satmak i\u00E7in de\u011Fil, do\u011Fru \u0131\u015F\u0131k rol\u00FCn\u00FC d\u00FCr\u00FCst\u00E7e anlatmak i\u00E7in kullan\u0131lacak.\"\r\n      },\r\n      next: ok\r\n        ? \"R27-A2-B Setup Scenario Coverage Verify\"\r\n        : \"HOLD\",\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A2-SETUP-SCENARIO-LIBRARY-BLUEPRINT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A2-R1-SETUP-SCENARIO-BLUEPRINT-OPTIONAL-EMPTY-ARRAY-FIX\r\n   FAZ:\r\n   R27-A2-R1\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A2 audit i\u00E7inde excludedFamilies / excludedWattBands alanlar\u0131n\u0131n bo\u015F array olmas\u0131n\u0131 hata sayan false-positive kontrol\u00FC d\u00FCzeltir.\r\n   Bu alanlar schema'da zorunlu alan olarak bulunabilir; fakat her senaryoda d\u0131\u015Flanan family/wattBand olmak zorunda de\u011Fildir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A2R1SetupScenarioBlueprintOptionalEmptyArrayFix()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A2-R1-SETUP-SCENARIO-BLUEPRINT-OPTIONAL-EMPTY-ARRAY-FIX\";\r\n  var VERSION = \"PANEL-V4-R27-A2-R1-SETUP-SCENARIO-BLUEPRINT-OPTIONAL-EMPTY-ARRAY-FIX-NO-MUTATION\";\r\n\r\n  var previous = window.debugPanelV4R27A2SetupScenarioLibraryBlueprint;\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function isAllowedOptionalEmptyArrayMissing(item) {\r\n    item = clean(item);\r\n    return (\r\n      /\\.excludedFamilies$/.test(item) ||\r\n      /\\.excludedWattBands$/.test(item)\r\n    );\r\n  }\r\n\r\n  window.debugPanelV4R27A2R1SetupScenarioBlueprintOptionalEmptyArrayFix = function () {\r\n    var base = typeof previous === \"function\" ? previous() : null;\r\n\r\n    if (!base || !base.diagnostics || !base.diagnostics.validation) {\r\n      return {\r\n        phase: PHASE,\r\n        version: VERSION,\r\n        ok: false,\r\n        checks: {\r\n          previousR27A2Found: false,\r\n          noCartMutationByThisAudit: true,\r\n          noDomMutationByThisAudit: true,\r\n          noScoreMutationByThisAudit: true,\r\n          noRankingMutationByThisAudit: true,\r\n          noProductMutationByThisAudit: true,\r\n          noPriceFormatterTouchByThisAudit: true,\r\n          noSharePngQrMutationByThisAudit: true\r\n        },\r\n        diagnostics: {\r\n          reason: \"\u00D6nce R27-A2 blueprint fonksiyonu y\u00FCklenmi\u015F olmal\u0131.\"\r\n        },\r\n        sealCandidate: \"HOLD\"\r\n      };\r\n    }\r\n\r\n    var validation = base.diagnostics.validation || {};\r\n    var originalMissing = Array.isArray(validation.missingRequiredFields)\r\n      ? validation.missingRequiredFields.slice()\r\n      : [];\r\n\r\n    var allowedOptionalEmptyArrayMissings = originalMissing.filter(isAllowedOptionalEmptyArrayMissing);\r\n    var criticalMissingRequiredFields = originalMissing.filter(function (item) {\r\n      return !isAllowedOptionalEmptyArrayMissing(item);\r\n    });\r\n\r\n    var fixedValidation = {};\r\n    Object.keys(validation).forEach(function (key) {\r\n      fixedValidation[key] = validation[key];\r\n    });\r\n\r\n    fixedValidation.originalNoMissingRequiredFields = validation.noMissingRequiredFields;\r\n    fixedValidation.originalMissingRequiredFields = originalMissing;\r\n    fixedValidation.allowedOptionalEmptyArrayMissings = allowedOptionalEmptyArrayMissings;\r\n    fixedValidation.criticalMissingRequiredFields = criticalMissingRequiredFields;\r\n    fixedValidation.noMissingRequiredFields = criticalMissingRequiredFields.length === 0;\r\n\r\n    var checks = {};\r\n    Object.keys(base.checks || {}).forEach(function (key) {\r\n      checks[key] = base.checks[key];\r\n    });\r\n\r\n    checks.previousR27A2Found = true;\r\n    checks.optionalEmptyArrayFalsePositiveFixed = allowedOptionalEmptyArrayMissings.length > 0;\r\n    checks.noMissingRequiredFields = criticalMissingRequiredFields.length === 0;\r\n\r\n    checks.noCartMutationByThisAudit = true;\r\n    checks.noDomMutationByThisAudit = true;\r\n    checks.noScoreMutationByThisAudit = true;\r\n    checks.noRankingMutationByThisAudit = true;\r\n    checks.noProductMutationByThisAudit = true;\r\n    checks.noPriceFormatterTouchByThisAudit = true;\r\n    checks.noSharePngQrMutationByThisAudit = true;\r\n\r\n    var ok =\r\n      checks.purposeCountOk &&\r\n      checks.subPurposeCountOk &&\r\n      checks.scenarioCountOk &&\r\n      checks.scenarioKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.hasRgbScenarios &&\r\n      checks.hasBicolorScenarios &&\r\n      checks.hasClinicalScenario &&\r\n      checks.hasProductScenario &&\r\n      checks.hasPortableScenario &&\r\n      checks.hasCloseRangeScenario &&\r\n      checks.allHaveNoraHonestNote &&\r\n      checks.allHaveVisualKey;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: base.diagnostics.productPoolCount,\r\n        purposeCount: base.diagnostics.purposeCount,\r\n        subPurposeCount: base.diagnostics.subPurposeCount,\r\n        scenarioCount: base.diagnostics.scenarioCount,\r\n        scenarioTypeCounts: base.diagnostics.scenarioTypeCounts,\r\n        validation: fixedValidation,\r\n        setupScenarioLibraryBlueprint: base.diagnostics.setupScenarioLibraryBlueprint,\r\n        copyableScenarioLibraryJson: base.diagnostics.copyableScenarioLibraryJson\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R27-A2 blueprint ge\u00E7erli. excludedFamilies / excludedWattBands bo\u015F array alanlar\u0131 schema a\u00E7\u0131s\u0131ndan ge\u00E7erli optional bo\u015F alanlard\u0131r; \u00FCretim hatas\u0131 de\u011Fildir.\"\r\n          : \"R27-A2 blueprint i\u00E7inde kritik eksik alan var; criticalMissingRequiredFields incelenmeli.\",\r\n        note: \"Bu patch DOM, \u00FCr\u00FCn, score, ranking, fiyat, sepet, share, PNG veya QR de\u011Fi\u015Ftirmez.\"\r\n      },\r\n      next: ok\r\n        ? \"R27-A2-B Setup Scenario Coverage Verify\"\r\n        : \"HOLD\",\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A2-R1-SETUP-SCENARIO-BLUEPRINT-OPTIONAL-EMPTY-ARRAY-FIX-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A2-B-SETUP-SCENARIO-COVERAGE-VERIFY-READONLY\r\n   FAZ:\r\n   R27-A2-B\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A2/R1 taraf\u0131ndan \u00FCretilen 72 setup senaryosunun role / family / wattBand / NORA d\u00FCr\u00FCstl\u00FCk / visualKey coverage do\u011Frulamas\u0131n\u0131 yapar.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A2BSetupScenarioCoverageVerify()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A2-B-SETUP-SCENARIO-COVERAGE-VERIFY-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A2-B-SETUP-SCENARIO-COVERAGE-VERIFY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getBaseResult() {\r\n    if (typeof window.debugPanelV4R27A2R1SetupScenarioBlueprintOptionalEmptyArrayFix === \"function\") {\r\n      return window.debugPanelV4R27A2R1SetupScenarioBlueprintOptionalEmptyArrayFix();\r\n    }\r\n    if (typeof window.debugPanelV4R27A2SetupScenarioLibraryBlueprint === \"function\") {\r\n      return window.debugPanelV4R27A2SetupScenarioLibraryBlueprint();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getLibrary(base) {\r\n    return base &&\r\n      base.diagnostics &&\r\n      base.diagnostics.setupScenarioLibraryBlueprint\r\n      ? base.diagnostics.setupScenarioLibraryBlueprint\r\n      : null;\r\n  }\r\n\r\n  function countScenarioRoles(scenarios) {\r\n    var out = {};\r\n    (scenarios || []).forEach(function (s) {\r\n      (s.recommendedRoles || []).forEach(function (role) {\r\n        out[role] = (out[role] || 0) + 1;\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function countScenarioFamilies(scenarios) {\r\n    var out = {};\r\n    (scenarios || []).forEach(function (s) {\r\n      (s.allowedFamilies || []).forEach(function (family) {\r\n        out[family] = (out[family] || 0) + 1;\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function countScenarioWatts(scenarios) {\r\n    var out = {};\r\n    (scenarios || []).forEach(function (s) {\r\n      (s.preferredWattBands || []).forEach(function (band) {\r\n        out[band] = (out[band] || 0) + 1;\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function countBy(scenarios, key) {\r\n    return (scenarios || []).reduce(function (acc, s) {\r\n      var v = s[key] || \"unknown\";\r\n      acc[v] = (acc[v] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function groupBySubPurpose(scenarios) {\r\n    var out = {};\r\n    (scenarios || []).forEach(function (s) {\r\n      var key = s.purposeKey + \"::\" + s.subPurposeKey;\r\n      if (!out[key]) out[key] = [];\r\n      out[key].push(s);\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function unique(arr) {\r\n    var seen = {};\r\n    return (arr || []).filter(function (x) {\r\n      x = clean(x);\r\n      if (!x || seen[x]) return false;\r\n      seen[x] = true;\r\n      return true;\r\n    });\r\n  }\r\n\r\n  function verifyThreeScenarioTypesPerSubPurpose(scenarios) {\r\n    var groups = groupBySubPurpose(scenarios);\r\n    var bad = [];\r\n    Object.keys(groups).forEach(function (key) {\r\n      var types = unique(groups[key].map(function (s) { return s.scenarioType; }));\r\n      if (\r\n        groups[key].length !== 3 ||\r\n        types.indexOf(\"balanced_key_fill\") === -1 ||\r\n        types.indexOf(\"rgb_background_accent\") === -1 ||\r\n        types.indexOf(\"compact_support_close_range\") === -1\r\n      ) {\r\n        bad.push({ groupKey: key, count: groups[key].length, scenarioTypes: types });\r\n      }\r\n    });\r\n    return { ok: bad.length === 0 && Object.keys(groups).length === 24, badGroups: bad, groupCount: Object.keys(groups).length };\r\n  }\r\n\r\n  function honestNoteSignals(scenarios) {\r\n    var missing = [];\r\n    var hasRgbHonesty = false;\r\n    var hasLowPowerHonesty = false;\r\n    var hasClinicalHonesty = false;\r\n    var hasProfessionalHonesty = false;\r\n\r\n    (scenarios || []).forEach(function (s) {\r\n      var note = lower(s.noraHonestNote || \"\");\r\n      if (!note || note.length < 30) missing.push(s.scenarioKey);\r\n\r\n      if (/rgb/.test(note) && (/ana \u0131\u015F\u0131k gibi de\u011Fil|ana \u0131\u015F\u0131k|arka plan|atmosfer|renk ayr\u0131m\u0131|vurgu/.test(note))) {\r\n        hasRgbHonesty = true;\r\n      }\r\n      if (/d\u00FC\u015F\u00FCk|orta g\u00FC\u00E7|yak\u0131n plan|destek|b\u00FCy\u00FCk alan/.test(note)) {\r\n        hasLowPowerHonesty = true;\r\n      }\r\n      if (/klinik|cilt|dental|do\u011Fal|yumu\u015Fak \u00F6n \u0131\u015F\u0131k/.test(note)) {\r\n        hasClinicalHonesty = true;\r\n      }\r\n      if (/profesyonel|st\u00FCdyo|ana \u0131\u015F\u0131k g\u00FCc\u00FC|d\u00FC\u015F\u00FCk watt/.test(note)) {\r\n        hasProfessionalHonesty = true;\r\n      }\r\n    });\r\n\r\n    return {\r\n      missingNoraHonestNotes: missing,\r\n      hasRgbHonesty: hasRgbHonesty,\r\n      hasLowPowerHonesty: hasLowPowerHonesty,\r\n      hasClinicalHonesty: hasClinicalHonesty,\r\n      hasProfessionalHonesty: hasProfessionalHonesty\r\n    };\r\n  }\r\n\r\n  function visualKeySignals(scenarios) {\r\n    var bad = [];\r\n    var keys = {};\r\n    var duplicates = [];\r\n\r\n    (scenarios || []).forEach(function (s) {\r\n      var key = clean(s.visualKey || \"\");\r\n      if (!/^panel_setup_/.test(key)) bad.push(s.scenarioKey + \".visualKey\");\r\n      if (keys[key]) duplicates.push(key);\r\n      keys[key] = true;\r\n\r\n      var fallback = clean(s.fallbackSchemaKey || \"\");\r\n      if (!/^schema_setup_/.test(fallback)) bad.push(s.scenarioKey + \".fallbackSchemaKey\");\r\n    });\r\n\r\n    return {\r\n      visualKeysOk: bad.length === 0,\r\n      badVisualFields: bad,\r\n      visualKeysUnique: duplicates.length === 0,\r\n      duplicateVisualKeys: duplicates\r\n    };\r\n  }\r\n\r\n  function requiredCoveragePass(coverage) {\r\n    return !!(\r\n      coverage.roles.key_light &&\r\n      coverage.roles.fill_light &&\r\n      coverage.roles.rgb_accent &&\r\n      coverage.roles.rgb_background_wash &&\r\n      coverage.roles.close_range_support &&\r\n      coverage.roles.clinical_soft_front &&\r\n      coverage.roles.portable_interview_light &&\r\n      coverage.roles.product_side_light &&\r\n      coverage.families.bicolor &&\r\n      coverage.families.rgb &&\r\n      coverage.families.daylight_or_fixed_white &&\r\n      coverage.watts.low &&\r\n      coverage.watts.mid &&\r\n      coverage.watts.high &&\r\n      coverage.watts.pro\r\n    );\r\n  }\r\n\r\n  window.debugPanelV4R27A2BSetupScenarioCoverageVerify = function () {\r\n    var base = getBaseResult();\r\n    var library = getLibrary(base);\r\n    var scenarios = library && Array.isArray(library.scenarios) ? library.scenarios : [];\r\n\r\n    var roles = countScenarioRoles(scenarios);\r\n    var families = countScenarioFamilies(scenarios);\r\n    var watts = countScenarioWatts(scenarios);\r\n    var threeTypes = verifyThreeScenarioTypesPerSubPurpose(scenarios);\r\n    var noteSignals = honestNoteSignals(scenarios);\r\n    var visualSignals = visualKeySignals(scenarios);\r\n\r\n    var coverage = {\r\n      roles: roles,\r\n      families: families,\r\n      watts: watts\r\n    };\r\n\r\n    var checks = {\r\n      previousR27A2R1Found: !!base && base.phase === \"PANEL-V4-R27-A2-R1-SETUP-SCENARIO-BLUEPRINT-OPTIONAL-EMPTY-ARRAY-FIX\",\r\n      baseOk: !!base && base.ok === true,\r\n      libraryReadable: !!library,\r\n      productPoolReadable: productPool().length === 19,\r\n      purposeCountOk: library && library.purposeCount === 8,\r\n      subPurposeCountOk: library && library.subPurposeCount === 24,\r\n      scenarioCountOk: scenarios.length === 72,\r\n      everySubPurposeHasThreeScenarioTypes: threeTypes.ok,\r\n      requiredRoleFamilyWattCoverageOk: requiredCoveragePass(coverage),\r\n      noraHonestyCoverageOk:\r\n        noteSignals.missingNoraHonestNotes.length === 0 &&\r\n        noteSignals.hasRgbHonesty &&\r\n        noteSignals.hasLowPowerHonesty &&\r\n        noteSignals.hasClinicalHonesty &&\r\n        noteSignals.hasProfessionalHonesty,\r\n      visualKeysOk: visualSignals.visualKeysOk,\r\n      visualKeysUnique: visualSignals.visualKeysUnique,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.baseOk &&\r\n      checks.libraryReadable &&\r\n      checks.purposeCountOk &&\r\n      checks.subPurposeCountOk &&\r\n      checks.scenarioCountOk &&\r\n      checks.everySubPurposeHasThreeScenarioTypes &&\r\n      checks.requiredRoleFamilyWattCoverageOk &&\r\n      checks.noraHonestyCoverageOk &&\r\n      checks.visualKeysOk &&\r\n      checks.visualKeysUnique;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        purposeCount: library ? library.purposeCount : 0,\r\n        subPurposeCount: library ? library.subPurposeCount : 0,\r\n        scenarioCount: scenarios.length,\r\n        scenarioTypeCounts: countBy(scenarios, \"scenarioType\"),\r\n        coverage: coverage,\r\n        threeScenarioTypesPerSubPurpose: threeTypes,\r\n        noraHonestNoteSignals: noteSignals,\r\n        visualKeySignals: visualSignals,\r\n        setupScenarioLibraryBlueprint: library,\r\n        copyableScenarioLibraryJson: library ? JSON.stringify(library, null, 2) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"72 setup senaryosu role/family/watt/NORA/visual coverage a\u00E7\u0131s\u0131ndan do\u011Fruland\u0131.\"\r\n          : \"Coverage eksik; diagnostics i\u00E7indeki role/family/watt/NORA/visual alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A2-C Setup Scenario Library Lock\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A2-B-SETUP-SCENARIO-COVERAGE-VERIFY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A2-C-SETUP-SCENARIO-LIBRARY-LOCK-VERIFY-READONLY\r\n   FAZ:\r\n   R27-A2-C\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A2-B coverage PASS olan 72 senaryo blueprint'ini setup scenario library lock candidate olarak do\u011Frular.\r\n   Production data yazmaz; copyableLockJson \u00FCretir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A2-C-SETUP-SCENARIO-LIBRARY-LOCK-VERIFY-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A2-C-SETUP-SCENARIO-LIBRARY-LOCK-VERIFY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getCoverageResult() {\r\n    if (typeof window.debugPanelV4R27A2BSetupScenarioCoverageVerify === \"function\") {\r\n      return window.debugPanelV4R27A2BSetupScenarioCoverageVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getLibrary(res) {\r\n    return res &&\r\n      res.diagnostics &&\r\n      res.diagnostics.setupScenarioLibraryBlueprint\r\n      ? res.diagnostics.setupScenarioLibraryBlueprint\r\n      : null;\r\n  }\r\n\r\n  function validateLock(lock) {\r\n    var scenarios = lock && Array.isArray(lock.scenarios) ? lock.scenarios : [];\r\n    var keys = {};\r\n    var duplicateScenarioKeys = [];\r\n    var missing = [];\r\n\r\n    scenarios.forEach(function (s) {\r\n      if (keys[s.scenarioKey]) duplicateScenarioKeys.push(s.scenarioKey);\r\n      keys[s.scenarioKey] = true;\r\n\r\n      [\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"title\",\r\n        \"targetUser\",\r\n        \"recommendedRoles\",\r\n        \"allowedFamilies\",\r\n        \"preferredWattBands\",\r\n        \"noraHonestNote\",\r\n        \"setupPlacementHint\",\r\n        \"visualKey\",\r\n        \"fallbackSchemaKey\"\r\n      ].forEach(function (field) {\r\n        var value = s[field];\r\n        if (value === undefined || value === null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n          missing.push(s.scenarioKey + \".\" + field);\r\n        }\r\n      });\r\n    });\r\n\r\n    var subPurposeGroups = {};\r\n    scenarios.forEach(function (s) {\r\n      var g = s.purposeKey + \"::\" + s.subPurposeKey;\r\n      if (!subPurposeGroups[g]) subPurposeGroups[g] = [];\r\n      subPurposeGroups[g].push(s.scenarioType);\r\n    });\r\n\r\n    var badGroups = [];\r\n    Object.keys(subPurposeGroups).forEach(function (g) {\r\n      var types = subPurposeGroups[g];\r\n      if (\r\n        types.length !== 3 ||\r\n        types.indexOf(\"balanced_key_fill\") === -1 ||\r\n        types.indexOf(\"rgb_background_accent\") === -1 ||\r\n        types.indexOf(\"compact_support_close_range\") === -1\r\n      ) {\r\n        badGroups.push({ groupKey: g, scenarioTypes: types });\r\n      }\r\n    });\r\n\r\n    return {\r\n      libraryNameOk: lock && lock.libraryName === \"GDX_PANEL_LED_V4_SETUP_SCENARIOS\",\r\n      purposeCountOk: lock && lock.purposeCount === 8,\r\n      subPurposeCountOk: lock && lock.subPurposeCount === 24,\r\n      scenarioCountOk: lock && lock.scenarioCount === 72 && scenarios.length === 72,\r\n      scenarioKeysUnique: duplicateScenarioKeys.length === 0,\r\n      duplicateScenarioKeys: duplicateScenarioKeys,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      eachSubPurposeHasThreeScenarioTypes: badGroups.length === 0 && Object.keys(subPurposeGroups).length === 24,\r\n      badSubPurposeGroups: badGroups,\r\n      copyReady: !!lock && scenarios.length === 72\r\n    };\r\n  }\r\n\r\n  function buildLockCandidate(library, coverageResult) {\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_SETUP_SCENARIOS\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A2-C-SETUP-SCENARIO-LIBRARY-LOCK-CANDIDATE\",\r\n      productPoolCountAtVerify: productPool().length,\r\n      purposeCount: library.purposeCount,\r\n      subPurposeCount: library.subPurposeCount,\r\n      scenarioCount: library.scenarioCount,\r\n      purposeRows: library.purposeRows,\r\n      purposes: library.purposes,\r\n      scenarios: library.scenarios,\r\n      coverage: coverageResult && coverageResult.diagnostics ? coverageResult.diagnostics.coverage : null,\r\n      scenarioTypeCounts: coverageResult && coverageResult.diagnostics ? coverageResult.diagnostics.scenarioTypeCounts : null,\r\n      noraRule: \"Her senaryo \u00FCr\u00FCnleri zorla satmak i\u00E7in de\u011Fil, do\u011Fru \u0131\u015F\u0131k rol\u00FCn\u00FC d\u00FCr\u00FCst\u00E7e anlatmak i\u00E7in kullan\u0131lacak.\",\r\n      lockRule: \"Bu JSON production data de\u011Fildir; R27-A2-C seal sonras\u0131 R27-A3 NORA Voice Library Blueprint'e girdi olarak kullan\u0131lacakt\u0131r.\",\r\n      noTouch: [\r\n        \"score\",\r\n        \"ranking\",\r\n        \"productPool\",\r\n        \"priceFormat\",\r\n        \"cart\",\r\n        \"commerce\",\r\n        \"share\",\r\n        \"PNG\",\r\n        \"QR\"\r\n      ]\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify = function () {\r\n    var coverage = getCoverageResult();\r\n    var library = getLibrary(coverage);\r\n    var lock = library ? buildLockCandidate(library, coverage) : null;\r\n    var validation = validateLock(lock);\r\n\r\n    var checks = {\r\n      previousR27A2BFound: !!coverage,\r\n      previousR27A2BOk: !!coverage && coverage.ok === true,\r\n      libraryReadable: !!library,\r\n      lockCandidateGenerated: !!lock,\r\n      productPoolReadable: productPool().length === 19,\r\n      libraryNameOk: validation.libraryNameOk,\r\n      purposeCountOk: validation.purposeCountOk,\r\n      subPurposeCountOk: validation.subPurposeCountOk,\r\n      scenarioCountOk: validation.scenarioCountOk,\r\n      scenarioKeysUnique: validation.scenarioKeysUnique,\r\n      noMissingRequiredFields: validation.noMissingRequiredFields,\r\n      eachSubPurposeHasThreeScenarioTypes: validation.eachSubPurposeHasThreeScenarioTypes,\r\n      copyReady: validation.copyReady,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A2BOk &&\r\n      checks.libraryReadable &&\r\n      checks.lockCandidateGenerated &&\r\n      checks.libraryNameOk &&\r\n      checks.purposeCountOk &&\r\n      checks.subPurposeCountOk &&\r\n      checks.scenarioCountOk &&\r\n      checks.scenarioKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.eachSubPurposeHasThreeScenarioTypes &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        validation: validation,\r\n        lockCandidate: lock,\r\n        copyableLockJson: lock ? JSON.stringify(lock, null, 2) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"Setup Scenario Library lock candidate do\u011Fruland\u0131. R27-A2 hatt\u0131 kilitlenebilir.\"\r\n          : \"Lock candidate eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A3 NORA Voice Library Blueprint\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A2-C-SETUP-SCENARIO-LIBRARY-LOCK-VERIFY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A3-NORA-VOICE-LIBRARY-BLUEPRINT-READONLY\r\n   FAZ:\r\n   R27-A3\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A2-C ile kilitlenen 72 setup senaryosuna ba\u011Flanacak NORA Voice Library blueprint \u00FCretir.\r\n   Production data yazmaz; NORA tone / forbidden claims / slot template coverage do\u011Frular.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A3NoraVoiceLibraryBlueprint()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A3-NORA-VOICE-LIBRARY-BLUEPRINT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A3-NORA-VOICE-LIBRARY-BLUEPRINT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function getA2CLockResult() {\r\n    if (typeof window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify === \"function\") {\r\n      return window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getScenarioLock(a2c) {\r\n    return a2c && a2c.diagnostics && a2c.diagnostics.lockCandidate ? a2c.diagnostics.lockCandidate : null;\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  var SLOT_TEMPLATES = {\r\n    noraShortNote: {\r\n      slot: \"noraShortNote\",\r\n      target: \"\u00D6neri kart\u0131 k\u0131sa NORA notu\",\r\n      maxChars: 180,\r\n      template: \"Bu \u00FCr\u00FCn\u00FC se\u00E7ti\u011Fin kullan\u0131mda {primaryRole} rol\u00FCnde d\u00FC\u015F\u00FCnmek daha do\u011Fru olur; as\u0131l avantaj\u0131 {roleBenefit} taraf\u0131nda.\"\r\n    },\r\n    noraExpertComment: {\r\n      slot: \"noraExpertComment\",\r\n      target: \"FP14 sonras\u0131 Uzman Yorumu\",\r\n      maxChars: 520,\r\n      template: \"Teknik skor tek ba\u015F\u0131na karar de\u011Fildir. Bu \u00FCr\u00FCn {family} yap\u0131s\u0131 ve {wattBand} g\u00FC\u00E7 band\u0131yla {primaryRole} rol\u00FCne daha yak\u0131n duruyor. {honestCaution}\"\r\n    },\r\n    noraSetupNote: {\r\n      slot: \"noraSetupNote\",\r\n      target: \"Kurulumu G\u00F6r modal\u0131\",\r\n      maxChars: 620,\r\n      template: \"{setupPlacementHint} Bu kurulumda \u00FCr\u00FCn\u00FC {primaryRole} gibi konumland\u0131r; {honestCaution}\"\r\n    },\r\n    noraCaution: {\r\n      slot: \"noraCaution\",\r\n      target: \"D\u00FCr\u00FCst uyar\u0131\",\r\n      maxChars: 260,\r\n      template: \"{restrictedRoleWarning}\"\r\n    },\r\n    noraRoleTruth: {\r\n      slot: \"noraRoleTruth\",\r\n      target: \"\u00DCr\u00FCn rol do\u011Frusu\",\r\n      maxChars: 280,\r\n      template: \"Bu modelin bu senaryodaki en do\u011Fru rol\u00FC {primaryRole}; her ko\u015Fulda ana \u0131\u015F\u0131k gibi d\u00FC\u015F\u00FCn\u00FClmemeli.\"\r\n    },\r\n    noraAlternativeUse: {\r\n      slot: \"noraAlternativeUse\",\r\n      target: \"Alternatif kullan\u0131m \u00F6nerisi\",\r\n      maxChars: 360,\r\n      template: \"Ana \u0131\u015F\u0131k ihtiyac\u0131n g\u00FC\u00E7l\u00FCyse daha y\u00FCksek watt Bi-Color bir model; atmosfer/renk ayr\u0131m\u0131 istiyorsan RGB rol\u00FC daha mant\u0131kl\u0131 olur.\"\r\n    },\r\n    noraShareSummary: {\r\n      slot: \"noraShareSummary\",\r\n      target: \"Payla\u015F\u0131m metni\",\r\n      maxChars: 260,\r\n      template: \"Bu se\u00E7imde NORA\u2019n\u0131n yorumu: \u00FCr\u00FCn se\u00E7ilen amaca g\u00F6re {primaryRole} rol\u00FCnde daha anlaml\u0131.\"\r\n    },\r\n    noraPngSummary: {\r\n      slot: \"noraPngSummary\",\r\n      target: \"PNG/share-card k\u0131sa sonu\u00E7\",\r\n      maxChars: 150,\r\n      template: \"NORA: {primaryRole} i\u00E7in dengeli tercih.\"\r\n    }\r\n  };\r\n\r\n  var FORBIDDEN_CLAIMS = [\r\n    \"kesinlikle en iyi\",\r\n    \"her kullan\u0131m i\u00E7in ideal\",\r\n    \"profesyonel sonu\u00E7 garantiler\",\r\n    \"rakipsiz\",\r\n    \"bunu almal\u0131s\u0131n\",\r\n    \"stokta kesin vard\u0131r\",\r\n    \"en m\u00FCkemmel\",\r\n    \"garantili sonu\u00E7\",\r\n    \"her senaryoda ana \u0131\u015F\u0131k\"\r\n  ];\r\n\r\n  var TONE_TAGS = [\r\n    \"honest\",\r\n    \"warm\",\r\n    \"technical_grounded\",\r\n    \"scenario_aware\",\r\n    \"no_pressure\",\r\n    \"role_truth\",\r\n    \"no_overpromise\"\r\n  ];\r\n\r\n  function roleBenefit(role) {\r\n    role = clean(role);\r\n    var map = {\r\n      key_light: \"y\u00FCz veya \u00FCr\u00FCn \u00FCzerinde ana ayd\u0131nlatmay\u0131 kurmak\",\r\n      fill_light: \"g\u00F6lgeleri yumu\u015Fatmak\",\r\n      soft_front_light: \"daha yumu\u015Fak ve temiz \u00F6n \u0131\u015F\u0131k vermek\",\r\n      clinical_soft_front: \"cilt/y\u00FCz/dental detaylarda do\u011Fal ve kontroll\u00FC \u0131\u015F\u0131k sa\u011Flamak\",\r\n      product_top_light: \"\u00FCr\u00FCn y\u00FCzeyini kontroll\u00FC \u015Fekilde g\u00F6stermek\",\r\n      product_side_light: \"\u00FCr\u00FCn formunu ve dokusunu ortaya \u00E7\u0131karmak\",\r\n      background_light: \"fonu ay\u0131rmak\",\r\n      rgb_accent: \"renk vurgusu vermek\",\r\n      rgb_background_wash: \"arka plana renk atmosferi kurmak\",\r\n      rim_or_color_separation: \"konuyu arka plandan ay\u0131rmak\",\r\n      portable_interview_light: \"h\u0131zl\u0131 ve ta\u015F\u0131nabilir kurulum yapmak\",\r\n      support_or_accent_light: \"destek veya vurgu \u0131\u015F\u0131\u011F\u0131 olarak tamamlay\u0131c\u0131 rol almak\",\r\n      close_range_support: \"yak\u0131n planda pratik destek sa\u011Flamak\"\r\n    };\r\n    return map[role] || \"se\u00E7ili senaryoda daha kontroll\u00FC \u0131\u015F\u0131k rol\u00FC kurmak\";\r\n  }\r\n\r\n  function honestCautionFor(scenario) {\r\n    var roles = scenario.recommendedRoles || [];\r\n    var families = scenario.allowedFamilies || [];\r\n    var watts = scenario.preferredWattBands || [];\r\n\r\n    if (families.indexOf(\"rgb\") > -1 && (roles.indexOf(\"rgb_background_wash\") > -1 || roles.indexOf(\"rgb_accent\") > -1)) {\r\n      return \"RGB taraf\u0131n\u0131 ana \u0131\u015F\u0131k gibi de\u011Fil, arka plan/kenar ayr\u0131m\u0131 ve atmosfer i\u00E7in kullanmak daha sa\u011Fl\u0131kl\u0131 olur.\";\r\n    }\r\n    if (watts.indexOf(\"low\") > -1 && roles.indexOf(\"close_range_support\") > -1) {\r\n      return \"D\u00FC\u015F\u00FCk g\u00FC\u00E7 band\u0131nda bu \u00FCr\u00FCn\u00FC b\u00FCy\u00FCk alan ana \u0131\u015F\u0131\u011F\u0131 gibi abartmamak gerekir; yak\u0131n plan veya destek rol\u00FC daha do\u011Fru olur.\";\r\n    }\r\n    if (roles.indexOf(\"clinical_soft_front\") > -1) {\r\n      return \"Klinik/dental kullan\u0131mda renk efekti de\u011Fil, do\u011Fal ve yumu\u015Fak \u00F6n \u0131\u015F\u0131k \u00F6nceliklidir.\";\r\n    }\r\n    if (watts.indexOf(\"high\") > -1 || watts.indexOf(\"pro\") > -1) {\r\n      return \"Bu g\u00FC\u00E7 band\u0131 ana \u0131\u015F\u0131k i\u00E7in daha g\u00FCvenli olabilir; yine de mesafe, yumu\u015Fatma ve kullan\u0131m amac\u0131 belirleyicidir.\";\r\n    }\r\n    return \"Bu yorumu \u00FCr\u00FCn\u00FCn rol\u00FC ve se\u00E7ili senaryo ile s\u0131n\u0131rl\u0131 d\u00FC\u015F\u00FCnmek gerekir.\";\r\n  }\r\n\r\n  function primaryRole(scenario) {\r\n    return (scenario.recommendedRoles && scenario.recommendedRoles[0]) || \"support_or_accent_light\";\r\n  }\r\n\r\n  function renderTemplate(tpl, scenario) {\r\n    var role = primaryRole(scenario);\r\n    var family = (scenario.allowedFamilies || [])[0] || \"panel_led\";\r\n    var wattBand = (scenario.preferredWattBands || [])[0] || \"unknown\";\r\n\r\n    return clean(tpl\r\n      .replace(/\\{primaryRole\\}/g, role)\r\n      .replace(/\\{family\\}/g, family)\r\n      .replace(/\\{wattBand\\}/g, wattBand)\r\n      .replace(/\\{roleBenefit\\}/g, roleBenefit(role))\r\n      .replace(/\\{setupPlacementHint\\}/g, scenario.setupPlacementHint || \"\")\r\n      .replace(/\\{honestCaution\\}/g, honestCautionFor(scenario))\r\n      .replace(/\\{restrictedRoleWarning\\}/g, honestCautionFor(scenario)));\r\n  }\r\n\r\n  function buildEntry(scenario) {\r\n    var slots = {};\r\n    Object.keys(SLOT_TEMPLATES).forEach(function (slotKey) {\r\n      var slot = SLOT_TEMPLATES[slotKey];\r\n      slots[slotKey] = {\r\n        target: slot.target,\r\n        maxChars: slot.maxChars,\r\n        text: renderTemplate(slot.template, scenario)\r\n      };\r\n    });\r\n\r\n    return {\r\n      voiceKey: \"nora_voice_\" + scenario.scenarioKey,\r\n      scenarioKey: scenario.scenarioKey,\r\n      purposeKey: scenario.purposeKey,\r\n      subPurposeKey: scenario.subPurposeKey,\r\n      scenarioType: scenario.scenarioType,\r\n      toneTags: TONE_TAGS.slice(),\r\n      forbiddenClaims: FORBIDDEN_CLAIMS.slice(),\r\n      primaryRole: primaryRole(scenario),\r\n      roleBenefit: roleBenefit(primaryRole(scenario)),\r\n      honestCaution: honestCautionFor(scenario),\r\n      slots: slots,\r\n      sourceStatus: \"blueprint_candidate\"\r\n    };\r\n  }\r\n\r\n  function buildLibrary(scenarioLock) {\r\n    var scenarios = scenarioLock && Array.isArray(scenarioLock.scenarios) ? scenarioLock.scenarios : [];\r\n    var entries = scenarios.map(buildEntry);\r\n\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_NORA_LIBRARY\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A3-NORA-VOICE-LIBRARY-BLUEPRINT-CANDIDATE\",\r\n      scenarioCount: scenarios.length,\r\n      entryCount: entries.length,\r\n      slotKeys: Object.keys(SLOT_TEMPLATES),\r\n      toneTags: TONE_TAGS.slice(),\r\n      forbiddenClaims: FORBIDDEN_CLAIMS.slice(),\r\n      characterLock: {\r\n        honest: true,\r\n        warm: true,\r\n        noPressure: true,\r\n        noOverpromise: true,\r\n        roleTruthFirst: true,\r\n        noStockPromise: true,\r\n        noGuaranteedResult: true\r\n      },\r\n      entries: entries,\r\n      lockRule: \"Bu blueprint production copy de\u011Fildir; R27-A3-B coverage verify sonras\u0131 lock aday\u0131 yap\u0131l\u0131r.\"\r\n    };\r\n  }\r\n\r\n  function validate(library) {\r\n    var entries = library && Array.isArray(library.entries) ? library.entries : [];\r\n    var missingSlots = [];\r\n    var forbiddenHits = [];\r\n    var overLength = [];\r\n    var missingTruth = [];\r\n    var keys = {};\r\n    var duplicateKeys = [];\r\n\r\n    entries.forEach(function (entry) {\r\n      if (keys[entry.voiceKey]) duplicateKeys.push(entry.voiceKey);\r\n      keys[entry.voiceKey] = true;\r\n\r\n      Object.keys(SLOT_TEMPLATES).forEach(function (slotKey) {\r\n        var slot = entry.slots && entry.slots[slotKey];\r\n        if (!slot || !clean(slot.text)) {\r\n          missingSlots.push(entry.voiceKey + \".\" + slotKey);\r\n          return;\r\n        }\r\n\r\n        if (clean(slot.text).length > Number(slot.maxChars || 9999)) {\r\n          overLength.push(entry.voiceKey + \".\" + slotKey);\r\n        }\r\n\r\n        var txt = lower(slot.text);\r\n        FORBIDDEN_CLAIMS.forEach(function (claim) {\r\n          if (txt.indexOf(lower(claim)) > -1) forbiddenHits.push(entry.voiceKey + \".\" + slotKey + \":\" + claim);\r\n        });\r\n      });\r\n\r\n      var combined = lower(JSON.stringify(entry));\r\n      if (!/ana \u0131\u015F\u0131k|destek|arka plan|vurgu|rol|rgb|g\u00FC\u00E7|d\u00FC\u015F\u00FCk|klinik|yumu\u015Fak|senaryo/.test(combined)) {\r\n        missingTruth.push(entry.voiceKey);\r\n      }\r\n    });\r\n\r\n    return {\r\n      entryCountOk: entries.length === 72,\r\n      voiceKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      allSlotsPresent: missingSlots.length === 0,\r\n      missingSlots: missingSlots,\r\n      noForbiddenClaims: forbiddenHits.length === 0,\r\n      forbiddenHits: forbiddenHits,\r\n      slotLengthsOk: overLength.length === 0,\r\n      overLength: overLength,\r\n      roleTruthCoverageOk: missingTruth.length === 0,\r\n      missingTruth: missingTruth,\r\n      characterLockOk: !!(library && library.characterLock && library.characterLock.honest && library.characterLock.noPressure && library.characterLock.roleTruthFirst)\r\n    };\r\n  }\r\n\r\n  function coverage(library) {\r\n    var entries = library && Array.isArray(library.entries) ? library.entries : [];\r\n    var scenarioTypeCounts = {};\r\n    var roleCounts = {};\r\n    var slotCoverage = {};\r\n\r\n    entries.forEach(function (entry) {\r\n      scenarioTypeCounts[entry.scenarioType] = (scenarioTypeCounts[entry.scenarioType] || 0) + 1;\r\n      roleCounts[entry.primaryRole] = (roleCounts[entry.primaryRole] || 0) + 1;\r\n      Object.keys(entry.slots || {}).forEach(function (slotKey) {\r\n        slotCoverage[slotKey] = (slotCoverage[slotKey] || 0) + 1;\r\n      });\r\n    });\r\n\r\n    return {\r\n      scenarioTypeCounts: scenarioTypeCounts,\r\n      primaryRoleCounts: roleCounts,\r\n      slotCoverage: slotCoverage\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A3NoraVoiceLibraryBlueprint = function () {\r\n    var a2c = getA2CLockResult();\r\n    var scenarioLock = getScenarioLock(a2c);\r\n    var library = buildLibrary(scenarioLock);\r\n    var v = validate(library);\r\n\r\n    var checks = {\r\n      previousR27A2CFound: !!a2c,\r\n      previousR27A2COk: !!a2c && a2c.ok === true,\r\n      scenarioLockReadable: !!scenarioLock,\r\n      productPoolReadable: productPool().length === 19,\r\n      noraLibraryGenerated: !!library,\r\n      entryCountOk: v.entryCountOk,\r\n      voiceKeysUnique: v.voiceKeysUnique,\r\n      allSlotsPresent: v.allSlotsPresent,\r\n      noForbiddenClaims: v.noForbiddenClaims,\r\n      slotLengthsOk: v.slotLengthsOk,\r\n      roleTruthCoverageOk: v.roleTruthCoverageOk,\r\n      characterLockOk: v.characterLockOk,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A2COk &&\r\n      checks.scenarioLockReadable &&\r\n      checks.noraLibraryGenerated &&\r\n      checks.entryCountOk &&\r\n      checks.voiceKeysUnique &&\r\n      checks.allSlotsPresent &&\r\n      checks.noForbiddenClaims &&\r\n      checks.slotLengthsOk &&\r\n      checks.roleTruthCoverageOk &&\r\n      checks.characterLockOk;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        scenarioCount: scenarioLock ? scenarioLock.scenarioCount : 0,\r\n        validation: v,\r\n        coverage: coverage(library),\r\n        noraVoiceLibraryBlueprint: library,\r\n        copyableNoraLibraryJson: JSON.stringify(library, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"NORA Voice Library blueprint 72 senaryo i\u00E7in \u00FCretildi ve temel d\u00FCr\u00FCstl\u00FCk/slot/forbidden claim kontrol\u00FCnden ge\u00E7ti.\"\r\n          : \"NORA blueprint eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A3-B NORA Voice Coverage Verify\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A3-NORA-VOICE-LIBRARY-BLUEPRINT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A3-B-NORA-VOICE-COVERAGE-VERIFY-READONLY\r\n   FAZ:\r\n   R27-A3-B\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A3 NORA Voice Library blueprint'ini slot coverage, role truth, forbidden claim, tone tag ve senaryo kapsam\u0131 a\u00E7\u0131s\u0131ndan do\u011Frular.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A3BNoraVoiceCoverageVerify()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A3-B-NORA-VOICE-COVERAGE-VERIFY-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A3-B-NORA-VOICE-COVERAGE-VERIFY-NO-MUTATION\";\r\n\r\n  var REQUIRED_SLOTS = [\r\n    \"noraShortNote\",\r\n    \"noraExpertComment\",\r\n    \"noraSetupNote\",\r\n    \"noraCaution\",\r\n    \"noraRoleTruth\",\r\n    \"noraAlternativeUse\",\r\n    \"noraShareSummary\",\r\n    \"noraPngSummary\"\r\n  ];\r\n\r\n  var REQUIRED_TONE_TAGS = [\r\n    \"honest\",\r\n    \"warm\",\r\n    \"technical_grounded\",\r\n    \"scenario_aware\",\r\n    \"no_pressure\",\r\n    \"role_truth\",\r\n    \"no_overpromise\"\r\n  ];\r\n\r\n  var FORBIDDEN = [\r\n    \"kesinlikle en iyi\",\r\n    \"her kullan\u0131m i\u00E7in ideal\",\r\n    \"profesyonel sonu\u00E7 garantiler\",\r\n    \"rakipsiz\",\r\n    \"bunu almal\u0131s\u0131n\",\r\n    \"stokta kesin vard\u0131r\",\r\n    \"en m\u00FCkemmel\",\r\n    \"garantili sonu\u00E7\",\r\n    \"her senaryoda ana \u0131\u015F\u0131k\"\r\n  ];\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getA3Result() {\r\n    if (typeof window.debugPanelV4R27A3NoraVoiceLibraryBlueprint === \"function\") {\r\n      return window.debugPanelV4R27A3NoraVoiceLibraryBlueprint();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getLibrary(a3) {\r\n    return a3 && a3.diagnostics && a3.diagnostics.noraVoiceLibraryBlueprint\r\n      ? a3.diagnostics.noraVoiceLibraryBlueprint\r\n      : null;\r\n  }\r\n\r\n  function countBy(entries, key) {\r\n    return (entries || []).reduce(function (acc, entry) {\r\n      var v = entry[key] || \"unknown\";\r\n      acc[v] = (acc[v] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function slotCoverage(entries) {\r\n    var out = {};\r\n    (entries || []).forEach(function (entry) {\r\n      REQUIRED_SLOTS.forEach(function (slotKey) {\r\n        if (entry.slots && entry.slots[slotKey] && clean(entry.slots[slotKey].text)) {\r\n          out[slotKey] = (out[slotKey] || 0) + 1;\r\n        }\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function validateSlots(entries) {\r\n    var missing = [];\r\n    var empty = [];\r\n    var overLength = [];\r\n\r\n    (entries || []).forEach(function (entry) {\r\n      REQUIRED_SLOTS.forEach(function (slotKey) {\r\n        var slot = entry.slots && entry.slots[slotKey];\r\n        if (!slot) {\r\n          missing.push(entry.voiceKey + \".\" + slotKey);\r\n          return;\r\n        }\r\n        if (!clean(slot.text)) empty.push(entry.voiceKey + \".\" + slotKey);\r\n        if (slot.maxChars && clean(slot.text).length > Number(slot.maxChars)) {\r\n          overLength.push({\r\n            field: entry.voiceKey + \".\" + slotKey,\r\n            length: clean(slot.text).length,\r\n            maxChars: Number(slot.maxChars)\r\n          });\r\n        }\r\n      });\r\n    });\r\n\r\n    return {\r\n      missingSlots: missing,\r\n      emptySlots: empty,\r\n      overLength: overLength,\r\n      allSlotsPresent: missing.length === 0 && empty.length === 0,\r\n      slotLengthsOk: overLength.length === 0\r\n    };\r\n  }\r\n\r\n  function validateForbidden(entries) {\r\n    var hits = [];\r\n    (entries || []).forEach(function (entry) {\r\n      var allText = lower(JSON.stringify(entry.slots || {}));\r\n      FORBIDDEN.forEach(function (claim) {\r\n        if (allText.indexOf(lower(claim)) > -1) {\r\n          hits.push({ voiceKey: entry.voiceKey, claim: claim });\r\n        }\r\n      });\r\n    });\r\n\r\n    return {\r\n      forbiddenHits: hits,\r\n      noForbiddenClaims: hits.length === 0\r\n    };\r\n  }\r\n\r\n  function validateTone(entries, library) {\r\n    var missingToneEntries = [];\r\n    (entries || []).forEach(function (entry) {\r\n      var tags = entry.toneTags || [];\r\n      var missing = REQUIRED_TONE_TAGS.filter(function (tag) {\r\n        return tags.indexOf(tag) === -1;\r\n      });\r\n      if (missing.length) missingToneEntries.push({ voiceKey: entry.voiceKey, missing: missing });\r\n    });\r\n\r\n    var libraryTags = library && Array.isArray(library.toneTags) ? library.toneTags : [];\r\n    var libraryMissing = REQUIRED_TONE_TAGS.filter(function (tag) {\r\n      return libraryTags.indexOf(tag) === -1;\r\n    });\r\n\r\n    return {\r\n      toneTagsOk: missingToneEntries.length === 0 && libraryMissing.length === 0,\r\n      missingToneEntries: missingToneEntries,\r\n      libraryMissingToneTags: libraryMissing\r\n    };\r\n  }\r\n\r\n  function roleTruthSignals(entries) {\r\n    var missing = [];\r\n    var rgbHonesty = 0;\r\n    var lowPowerHonesty = 0;\r\n    var roleTruth = 0;\r\n    var supportTruth = 0;\r\n    var clinicalTruth = 0;\r\n\r\n    (entries || []).forEach(function (entry) {\r\n      var txt = lower(JSON.stringify(entry.slots || {}) + \" \" + (entry.honestCaution || \"\") + \" \" + (entry.primaryRole || \"\"));\r\n      var hasTruth = /ana \u0131\u015F\u0131k|destek|arka plan|vurgu|rol|rgb|g\u00FC\u00E7|d\u00FC\u015F\u00FCk|klinik|yumu\u015Fak|senaryo/.test(txt);\r\n\r\n      if (!hasTruth) missing.push(entry.voiceKey);\r\n      if (/rgb/.test(txt) && /arka plan|atmosfer|renk ayr\u0131m\u0131|vurgu|ana \u0131\u015F\u0131k gibi de\u011Fil/.test(txt)) rgbHonesty += 1;\r\n      if (/d\u00FC\u015F\u00FCk|orta g\u00FC\u00E7|yak\u0131n plan|destek|b\u00FCy\u00FCk alan/.test(txt)) lowPowerHonesty += 1;\r\n      if (/rol|ana \u0131\u015F\u0131k|destek|fill|key|background|accent|vurgu/.test(txt)) roleTruth += 1;\r\n      if (/destek|support|accent|vurgu|arka plan/.test(txt)) supportTruth += 1;\r\n      if (/klinik|cilt|dental|yumu\u015Fak \u00F6n \u0131\u015F\u0131k|do\u011Fal/.test(txt)) clinicalTruth += 1;\r\n    });\r\n\r\n    return {\r\n      roleTruthCoverageOk: missing.length === 0,\r\n      missingRoleTruth: missing,\r\n      rgbHonestyCount: rgbHonesty,\r\n      lowPowerHonestyCount: lowPowerHonesty,\r\n      roleTruthCount: roleTruth,\r\n      supportTruthCount: supportTruth,\r\n      clinicalTruthCount: clinicalTruth,\r\n      hasRgbHonesty: rgbHonesty > 0,\r\n      hasLowPowerHonesty: lowPowerHonesty > 0,\r\n      hasSupportTruth: supportTruth > 0,\r\n      hasClinicalTruth: clinicalTruth > 0\r\n    };\r\n  }\r\n\r\n  function scenarioCoverage(entries) {\r\n    var scenarioTypeCounts = countBy(entries, \"scenarioType\");\r\n    var purposeCounts = countBy(entries, \"purposeKey\");\r\n    var subPurposeKeys = {};\r\n    var duplicateScenarioKeys = [];\r\n    var duplicateVoiceKeys = [];\r\n    var scenarioKeys = {};\r\n    var voiceKeys = {};\r\n\r\n    (entries || []).forEach(function (entry) {\r\n      var sp = entry.purposeKey + \"::\" + entry.subPurposeKey;\r\n      subPurposeKeys[sp] = (subPurposeKeys[sp] || 0) + 1;\r\n\r\n      if (scenarioKeys[entry.scenarioKey]) duplicateScenarioKeys.push(entry.scenarioKey);\r\n      scenarioKeys[entry.scenarioKey] = true;\r\n\r\n      if (voiceKeys[entry.voiceKey]) duplicateVoiceKeys.push(entry.voiceKey);\r\n      voiceKeys[entry.voiceKey] = true;\r\n    });\r\n\r\n    var badSubPurposeGroups = [];\r\n    Object.keys(subPurposeKeys).forEach(function (key) {\r\n      if (subPurposeKeys[key] !== 3) badSubPurposeGroups.push({ groupKey: key, count: subPurposeKeys[key] });\r\n    });\r\n\r\n    return {\r\n      scenarioTypeCounts: scenarioTypeCounts,\r\n      purposeCounts: purposeCounts,\r\n      subPurposeGroupCount: Object.keys(subPurposeKeys).length,\r\n      badSubPurposeGroups: badSubPurposeGroups,\r\n      duplicateScenarioKeys: duplicateScenarioKeys,\r\n      duplicateVoiceKeys: duplicateVoiceKeys,\r\n      scenarioCoverageOk:\r\n        scenarioTypeCounts.balanced_key_fill === 24 &&\r\n        scenarioTypeCounts.rgb_background_accent === 24 &&\r\n        scenarioTypeCounts.compact_support_close_range === 24 &&\r\n        Object.keys(purposeCounts).length === 8 &&\r\n        Object.keys(subPurposeKeys).length === 24 &&\r\n        badSubPurposeGroups.length === 0 &&\r\n        duplicateScenarioKeys.length === 0 &&\r\n        duplicateVoiceKeys.length === 0\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A3BNoraVoiceCoverageVerify = function () {\r\n    var a3 = getA3Result();\r\n    var library = getLibrary(a3);\r\n    var entries = library && Array.isArray(library.entries) ? library.entries : [];\r\n\r\n    var slots = validateSlots(entries);\r\n    var forbidden = validateForbidden(entries);\r\n    var tone = validateTone(entries, library);\r\n    var truth = roleTruthSignals(entries);\r\n    var scenarios = scenarioCoverage(entries);\r\n    var slotCounts = slotCoverage(entries);\r\n\r\n    var allSlotCoverage72 = REQUIRED_SLOTS.every(function (slotKey) {\r\n      return slotCounts[slotKey] === 72;\r\n    });\r\n\r\n    var checks = {\r\n      previousR27A3Found: !!a3,\r\n      previousR27A3Ok: !!a3 && a3.ok === true,\r\n      noraLibraryReadable: !!library,\r\n      productPoolReadable: productPool().length === 19,\r\n      entryCountOk: entries.length === 72,\r\n      scenarioCoverageOk: scenarios.scenarioCoverageOk,\r\n      allSlotsPresent: slots.allSlotsPresent,\r\n      allSlotCoverage72: allSlotCoverage72,\r\n      slotLengthsOk: slots.slotLengthsOk,\r\n      noForbiddenClaims: forbidden.noForbiddenClaims,\r\n      toneTagsOk: tone.toneTagsOk,\r\n      roleTruthCoverageOk: truth.roleTruthCoverageOk,\r\n      hasRgbHonesty: truth.hasRgbHonesty,\r\n      hasLowPowerHonesty: truth.hasLowPowerHonesty,\r\n      hasSupportTruth: truth.hasSupportTruth,\r\n      hasClinicalTruth: truth.hasClinicalTruth,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A3Ok &&\r\n      checks.noraLibraryReadable &&\r\n      checks.entryCountOk &&\r\n      checks.scenarioCoverageOk &&\r\n      checks.allSlotsPresent &&\r\n      checks.allSlotCoverage72 &&\r\n      checks.slotLengthsOk &&\r\n      checks.noForbiddenClaims &&\r\n      checks.toneTagsOk &&\r\n      checks.roleTruthCoverageOk &&\r\n      checks.hasRgbHonesty &&\r\n      checks.hasLowPowerHonesty &&\r\n      checks.hasSupportTruth &&\r\n      checks.hasClinicalTruth;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        entryCount: entries.length,\r\n        scenarioCoverage: scenarios,\r\n        slotCoverage: slotCounts,\r\n        slotValidation: slots,\r\n        forbiddenValidation: forbidden,\r\n        toneValidation: tone,\r\n        roleTruthSignals: truth,\r\n        noraVoiceLibraryBlueprint: library,\r\n        copyableNoraLibraryJson: library ? JSON.stringify(library, null, 2) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"NORA Voice Library blueprint coverage do\u011Fruland\u0131. R27-A3-C lock verify a\u015Famas\u0131na ge\u00E7ilebilir.\"\r\n          : \"NORA coverage eksik; diagnostics alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A3-C NORA Voice Library Lock Verify\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A3-B-NORA-VOICE-COVERAGE-VERIFY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A3-C-NORA-VOICE-LIBRARY-LOCK-VERIFY-READONLY\r\n   FAZ:\r\n   R27-A3-C\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A3-B coverage PASS olan NORA Voice Library blueprint'i lock candidate olarak do\u011Frular.\r\n   Production data yazmaz; copyableLockJson \u00FCretir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A3-C-NORA-VOICE-LIBRARY-LOCK-VERIFY-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A3-C-NORA-VOICE-LIBRARY-LOCK-VERIFY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getCoverageResult() {\r\n    if (typeof window.debugPanelV4R27A3BNoraVoiceCoverageVerify === \"function\") {\r\n      return window.debugPanelV4R27A3BNoraVoiceCoverageVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getLibrary(res) {\r\n    return res && res.diagnostics && res.diagnostics.noraVoiceLibraryBlueprint\r\n      ? res.diagnostics.noraVoiceLibraryBlueprint\r\n      : null;\r\n  }\r\n\r\n  function buildLockCandidate(library, coverageResult) {\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_NORA_LIBRARY\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A3-C-NORA-VOICE-LIBRARY-LOCK-CANDIDATE\",\r\n      productPoolCountAtVerify: productPool().length,\r\n      scenarioCount: library.scenarioCount,\r\n      entryCount: library.entryCount,\r\n      slotKeys: library.slotKeys,\r\n      toneTags: library.toneTags,\r\n      forbiddenClaims: library.forbiddenClaims,\r\n      characterLock: library.characterLock,\r\n      entries: library.entries,\r\n      coverage: coverageResult && coverageResult.diagnostics ? {\r\n        scenarioCoverage: coverageResult.diagnostics.scenarioCoverage,\r\n        slotCoverage: coverageResult.diagnostics.slotCoverage,\r\n        roleTruthSignals: coverageResult.diagnostics.roleTruthSignals,\r\n        forbiddenValidation: coverageResult.diagnostics.forbiddenValidation,\r\n        toneValidation: coverageResult.diagnostics.toneValidation\r\n      } : null,\r\n      lockRule: \"Bu JSON production copy de\u011Fildir; R27-A3-C seal sonras\u0131 R27-A4 CDN Visual Manifest Blueprint'e girdi olarak kullan\u0131lacakt\u0131r.\",\r\n      noTouch: [\r\n        \"score\",\r\n        \"ranking\",\r\n        \"productPool\",\r\n        \"priceFormat\",\r\n        \"cart\",\r\n        \"commerce\",\r\n        \"share\",\r\n        \"PNG\",\r\n        \"QR\"\r\n      ]\r\n    };\r\n  }\r\n\r\n  function validateLock(lock) {\r\n    var entries = lock && Array.isArray(lock.entries) ? lock.entries : [];\r\n    var voiceKeys = {};\r\n    var duplicateVoiceKeys = [];\r\n    var missing = [];\r\n\r\n    entries.forEach(function (entry) {\r\n      if (voiceKeys[entry.voiceKey]) duplicateVoiceKeys.push(entry.voiceKey);\r\n      voiceKeys[entry.voiceKey] = true;\r\n\r\n      [\r\n        \"voiceKey\",\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"scenarioType\",\r\n        \"toneTags\",\r\n        \"forbiddenClaims\",\r\n        \"primaryRole\",\r\n        \"roleBenefit\",\r\n        \"honestCaution\",\r\n        \"slots\"\r\n      ].forEach(function (field) {\r\n        var value = entry[field];\r\n        if (value === undefined || value === null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n          missing.push(entry.voiceKey + \".\" + field);\r\n        }\r\n      });\r\n\r\n      [\r\n        \"noraShortNote\",\r\n        \"noraExpertComment\",\r\n        \"noraSetupNote\",\r\n        \"noraCaution\",\r\n        \"noraRoleTruth\",\r\n        \"noraAlternativeUse\",\r\n        \"noraShareSummary\",\r\n        \"noraPngSummary\"\r\n      ].forEach(function (slotKey) {\r\n        var slot = entry.slots && entry.slots[slotKey];\r\n        if (!slot || !clean(slot.text)) missing.push(entry.voiceKey + \".slots.\" + slotKey);\r\n      });\r\n    });\r\n\r\n    return {\r\n      libraryNameOk: lock && lock.libraryName === \"GDX_PANEL_LED_V4_NORA_LIBRARY\",\r\n      scenarioCountOk: lock && lock.scenarioCount === 72,\r\n      entryCountOk: lock && lock.entryCount === 72 && entries.length === 72,\r\n      voiceKeysUnique: duplicateVoiceKeys.length === 0,\r\n      duplicateVoiceKeys: duplicateVoiceKeys,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      characterLockOk: !!(lock && lock.characterLock && lock.characterLock.honest && lock.characterLock.noPressure && lock.characterLock.noOverpromise && lock.characterLock.roleTruthFirst),\r\n      copyReady: !!lock && entries.length === 72\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify = function () {\r\n    var coverage = getCoverageResult();\r\n    var library = getLibrary(coverage);\r\n    var lock = library ? buildLockCandidate(library, coverage) : null;\r\n    var validation = validateLock(lock);\r\n\r\n    var checks = {\r\n      previousR27A3BFound: !!coverage,\r\n      previousR27A3BOk: !!coverage && coverage.ok === true,\r\n      noraLibraryReadable: !!library,\r\n      lockCandidateGenerated: !!lock,\r\n      productPoolReadable: productPool().length === 19,\r\n      libraryNameOk: validation.libraryNameOk,\r\n      scenarioCountOk: validation.scenarioCountOk,\r\n      entryCountOk: validation.entryCountOk,\r\n      voiceKeysUnique: validation.voiceKeysUnique,\r\n      noMissingRequiredFields: validation.noMissingRequiredFields,\r\n      characterLockOk: validation.characterLockOk,\r\n      copyReady: validation.copyReady,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A3BOk &&\r\n      checks.noraLibraryReadable &&\r\n      checks.lockCandidateGenerated &&\r\n      checks.libraryNameOk &&\r\n      checks.scenarioCountOk &&\r\n      checks.entryCountOk &&\r\n      checks.voiceKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.characterLockOk &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        validation: validation,\r\n        lockCandidate: lock,\r\n        copyableLockJson: lock ? JSON.stringify(lock, null, 2) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"NORA Voice Library lock candidate do\u011Fruland\u0131. R27-A3 hatt\u0131 kilitlenebilir.\"\r\n          : \"NORA lock candidate eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A4 CDN Visual Manifest Blueprint\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A3-C-NORA-VOICE-LIBRARY-LOCK-VERIFY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A4-CDN-VISUAL-MANIFEST-BLUEPRINT-READONLY\r\n   FAZ:\r\n   R27-A4\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A2-C setup scenario lock + R27-A3-C NORA lock \u00FCzerinden CDN Visual Manifest blueprint \u00FCretir.\r\n   Ger\u00E7ek CDN URL zorunlu de\u011Fildir; bu faz visualKey / fallbackSchemaKey / lazy-load / preloadPriority / aspectRatio / altText standard\u0131n\u0131 do\u011Frular.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A4CdnVisualManifestBlueprint()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A4-CDN-VISUAL-MANIFEST-BLUEPRINT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A4-CDN-VISUAL-MANIFEST-BLUEPRINT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function slug(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\")\r\n      .replace(/\u011F/g, \"g\").replace(/\u00FC/g, \"u\").replace(/\u015F/g, \"s\").replace(/\u0131/g, \"i\").replace(/\u00F6/g, \"o\").replace(/\u00E7/g, \"c\")\r\n      .replace(/[^a-z0-9]+/g, \"_\")\r\n      .replace(/^_+|_+$/g, \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getA2CLockResult() {\r\n    if (typeof window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify === \"function\") {\r\n      return window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getA3CLockResult() {\r\n    if (typeof window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify === \"function\") {\r\n      return window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getScenarioLock(a2c) {\r\n    return a2c && a2c.diagnostics && a2c.diagnostics.lockCandidate ? a2c.diagnostics.lockCandidate : null;\r\n  }\r\n\r\n  function getNoraLock(a3c) {\r\n    return a3c && a3c.diagnostics && a3c.diagnostics.lockCandidate ? a3c.diagnostics.lockCandidate : null;\r\n  }\r\n\r\n  function first(arr, fallback) {\r\n    return Array.isArray(arr) && arr.length ? arr[0] : fallback;\r\n  }\r\n\r\n  function visualRecordForScenario(scenario) {\r\n    var family = first(scenario.allowedFamilies, \"mixed\");\r\n    var wattBand = first(scenario.preferredWattBands, \"mixed\");\r\n    var role = first(scenario.recommendedRoles, \"setup_role\");\r\n    var baseKey = [\r\n      \"panel_setup\",\r\n      scenario.purposeKey,\r\n      scenario.subPurposeKey,\r\n      family,\r\n      wattBand,\r\n      role\r\n    ].map(slug).join(\"_\");\r\n\r\n    var preloadPriority = \"none\";\r\n    if (scenario.scenarioType === \"balanced_key_fill\") preloadPriority = \"low\";\r\n\r\n    return {\r\n      visualKey: baseKey,\r\n      scenarioKey: scenario.scenarioKey,\r\n      purposeKey: scenario.purposeKey,\r\n      subPurposeKey: scenario.subPurposeKey,\r\n      scenarioType: scenario.scenarioType,\r\n      family: family,\r\n      wattBand: wattBand,\r\n      role: role,\r\n      cdnUrl: \"\",\r\n      cdnStatus: \"placeholder_pending_upload\",\r\n      fallbackSchemaKey: \"schema_\" + baseKey,\r\n      preloadPriority: preloadPriority,\r\n      loadMode: \"lazy_on_setup_modal_open\",\r\n      aspectRatio: \"4:3\",\r\n      altText: clean(\"Panel LED setup g\u00F6rseli \u2014 \" + (scenario.subPurposeTitle || scenario.subPurposeKey) + \" / \" + role),\r\n      sourceStatus: \"blueprint_candidate\"\r\n    };\r\n  }\r\n\r\n  function buildManifest(scenarioLock, noraLock) {\r\n    var scenarios = scenarioLock && Array.isArray(scenarioLock.scenarios) ? scenarioLock.scenarios : [];\r\n    var visuals = scenarios.map(visualRecordForScenario);\r\n\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_SETUP_VISUALS\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A4-CDN-VISUAL-MANIFEST-BLUEPRINT-CANDIDATE\",\r\n      scenarioCount: scenarios.length,\r\n      visualCount: visuals.length,\r\n      productPoolCountAtVerify: productPool().length,\r\n      linkedSetupScenarioLibrary: scenarioLock ? scenarioLock.version : \"\",\r\n      linkedNoraVoiceLibrary: noraLock ? noraLock.version : \"\",\r\n      performanceRules: {\r\n        noBase64Images: true,\r\n        noHiddenBulkImagesInDom: true,\r\n        manifestOnlyAtBoot: true,\r\n        lazyLoadOnSetupModalOpen: true,\r\n        optionalLowPriorityPreloadForPrimaryScenario: true\r\n      },\r\n      visualKeyPattern: \"panel_setup_{purpose}_{subpurpose}_{family}_{wattBand}_{role}\",\r\n      fallbackSchemaPattern: \"schema_panel_setup_{purpose}_{subpurpose}_{family}_{wattBand}_{role}\",\r\n      recordFields: [\r\n        \"visualKey\",\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"scenarioType\",\r\n        \"family\",\r\n        \"wattBand\",\r\n        \"role\",\r\n        \"cdnUrl\",\r\n        \"cdnStatus\",\r\n        \"fallbackSchemaKey\",\r\n        \"preloadPriority\",\r\n        \"loadMode\",\r\n        \"aspectRatio\",\r\n        \"altText\"\r\n      ],\r\n      visuals: visuals,\r\n      lockRule: \"Bu blueprint ger\u00E7ek CDN URL listesi de\u011Fildir. CDN URL'leri R27-A4-B/A4-C a\u015Famas\u0131nda doldurulacak; fallback schema her zaman haz\u0131r kalacakt\u0131r.\"\r\n    };\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return (rows || []).reduce(function (acc, row) {\r\n      var v = row[key] || \"unknown\";\r\n      acc[v] = (acc[v] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function validate(manifest) {\r\n    var visuals = manifest && Array.isArray(manifest.visuals) ? manifest.visuals : [];\r\n    var keys = {};\r\n    var duplicateKeys = [];\r\n    var missing = [];\r\n    var badVisualKeys = [];\r\n    var badFallbacks = [];\r\n    var badLoadModes = [];\r\n    var badAlt = [];\r\n\r\n    visuals.forEach(function (v) {\r\n      if (keys[v.visualKey]) duplicateKeys.push(v.visualKey);\r\n      keys[v.visualKey] = true;\r\n\r\n      manifest.recordFields.forEach(function (field) {\r\n        var value = v[field];\r\n\r\n        /* cdnUrl blueprint a\u015Famas\u0131nda bo\u015F olabilir; cdnStatus bunu a\u00E7\u0131k\u00E7a ta\u015F\u0131r. */\r\n        if (field === \"cdnUrl\") return;\r\n\r\n        if (value === undefined || value === null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n          missing.push(v.visualKey + \".\" + field);\r\n        }\r\n      });\r\n\r\n      if (!/^panel_setup_/.test(v.visualKey)) badVisualKeys.push(v.visualKey);\r\n      if (!/^schema_panel_setup_/.test(v.fallbackSchemaKey)) badFallbacks.push(v.visualKey);\r\n      if (v.loadMode !== \"lazy_on_setup_modal_open\") badLoadModes.push(v.visualKey);\r\n      if (!clean(v.altText) || clean(v.altText).length < 20) badAlt.push(v.visualKey);\r\n    });\r\n\r\n    var familyCounts = countBy(visuals, \"family\");\r\n    var wattCounts = countBy(visuals, \"wattBand\");\r\n    var roleCounts = countBy(visuals, \"role\");\r\n    var scenarioTypeCounts = countBy(visuals, \"scenarioType\");\r\n\r\n    return {\r\n      scenarioCountOk: manifest && manifest.scenarioCount === 72,\r\n      visualCountOk: manifest && manifest.visualCount === 72 && visuals.length === 72,\r\n      visualKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      visualKeyPatternOk: badVisualKeys.length === 0,\r\n      badVisualKeys: badVisualKeys,\r\n      fallbackSchemaKeysOk: badFallbacks.length === 0,\r\n      badFallbacks: badFallbacks,\r\n      loadModeOk: badLoadModes.length === 0,\r\n      badLoadModes: badLoadModes,\r\n      altTextOk: badAlt.length === 0,\r\n      badAltText: badAlt,\r\n      cdnUrlOptionalAtBlueprint: visuals.every(function (v) { return v.cdnStatus === \"placeholder_pending_upload\"; }),\r\n      performanceRulesOk: !!(manifest && manifest.performanceRules && manifest.performanceRules.noBase64Images && manifest.performanceRules.noHiddenBulkImagesInDom && manifest.performanceRules.manifestOnlyAtBoot && manifest.performanceRules.lazyLoadOnSetupModalOpen),\r\n      hasBicolorVisuals: !!familyCounts.bicolor,\r\n      hasRgbVisuals: !!familyCounts.rgb,\r\n      hasDaylightVisuals: !!familyCounts.daylight_or_fixed_white,\r\n      hasLowMidHighProCoverage: !!(wattCounts.low && wattCounts.mid && wattCounts.high && wattCounts.pro),\r\n      hasBalancedRgbCompactScenarioTypes: !!(scenarioTypeCounts.balanced_key_fill && scenarioTypeCounts.rgb_background_accent && scenarioTypeCounts.compact_support_close_range),\r\n      familyCounts: familyCounts,\r\n      wattCounts: wattCounts,\r\n      roleCounts: roleCounts,\r\n      scenarioTypeCounts: scenarioTypeCounts\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A4CdnVisualManifestBlueprint = function () {\r\n    var a2c = getA2CLockResult();\r\n    var a3c = getA3CLockResult();\r\n    var scenarioLock = getScenarioLock(a2c);\r\n    var noraLock = getNoraLock(a3c);\r\n    var manifest = buildManifest(scenarioLock, noraLock);\r\n    var v = validate(manifest);\r\n\r\n    var checks = {\r\n      previousR27A2CFound: !!a2c,\r\n      previousR27A2COk: !!a2c && a2c.ok === true,\r\n      previousR27A3CFound: !!a3c,\r\n      previousR27A3COk: !!a3c && a3c.ok === true,\r\n      scenarioLockReadable: !!scenarioLock,\r\n      noraLockReadable: !!noraLock,\r\n      productPoolReadable: productPool().length === 19,\r\n      manifestGenerated: !!manifest,\r\n      scenarioCountOk: v.scenarioCountOk,\r\n      visualCountOk: v.visualCountOk,\r\n      visualKeysUnique: v.visualKeysUnique,\r\n      noMissingRequiredFields: v.noMissingRequiredFields,\r\n      visualKeyPatternOk: v.visualKeyPatternOk,\r\n      fallbackSchemaKeysOk: v.fallbackSchemaKeysOk,\r\n      loadModeOk: v.loadModeOk,\r\n      altTextOk: v.altTextOk,\r\n      cdnUrlOptionalAtBlueprint: v.cdnUrlOptionalAtBlueprint,\r\n      performanceRulesOk: v.performanceRulesOk,\r\n      hasBicolorVisuals: v.hasBicolorVisuals,\r\n      hasRgbVisuals: v.hasRgbVisuals,\r\n      hasDaylightVisuals: v.hasDaylightVisuals,\r\n      hasLowMidHighProCoverage: v.hasLowMidHighProCoverage,\r\n      hasBalancedRgbCompactScenarioTypes: v.hasBalancedRgbCompactScenarioTypes,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A2COk &&\r\n      checks.previousR27A3COk &&\r\n      checks.scenarioLockReadable &&\r\n      checks.noraLockReadable &&\r\n      checks.manifestGenerated &&\r\n      checks.scenarioCountOk &&\r\n      checks.visualCountOk &&\r\n      checks.visualKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.visualKeyPatternOk &&\r\n      checks.fallbackSchemaKeysOk &&\r\n      checks.loadModeOk &&\r\n      checks.altTextOk &&\r\n      checks.cdnUrlOptionalAtBlueprint &&\r\n      checks.performanceRulesOk &&\r\n      checks.hasBicolorVisuals &&\r\n      checks.hasRgbVisuals &&\r\n      checks.hasDaylightVisuals &&\r\n      checks.hasLowMidHighProCoverage &&\r\n      checks.hasBalancedRgbCompactScenarioTypes;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        validation: v,\r\n        cdnVisualManifestBlueprint: manifest,\r\n        copyableVisualManifestJson: JSON.stringify(manifest, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"CDN Visual Manifest blueprint \u00FCretildi. Ger\u00E7ek CDN URL alanlar\u0131 bu fazda bo\u015F kalabilir; fallback schema ve lazy-load standard\u0131 do\u011Fruland\u0131.\"\r\n          : \"Visual manifest blueprint eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A4-B CDN Visual Manifest Coverage Verify\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A4-CDN-VISUAL-MANIFEST-BLUEPRINT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A4-R1-CDN-VISUAL-MANIFEST-KEY-COVERAGE-FIX-READONLY\r\n   FAZ:\r\n   R27-A4-R1\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A4 blueprint i\u00E7indeki 3 sorunu d\u00FCzeltir:\r\n   1) visualKey duplicate false/HOLD\r\n   2) Daylight coverage false\r\n   3) low/mid/high/pro coverage false\r\n\r\n   K\u00D6K NEDEN:\r\n   \u0130lk A4 blueprint visualKey i\u00E7inde scenarioType ta\u015F\u0131m\u0131yordu.\r\n   Ayr\u0131ca family/watt coverage sadece ilk family / ilk wattBand \u00FCzerinden say\u0131l\u0131yordu.\r\n   Oysa bir scenario birden fazla allowedFamilies ve preferredWattBands ta\u015F\u0131yabilir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A4R1CdnVisualManifestKeyCoverageFix()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A4-R1-CDN-VISUAL-MANIFEST-KEY-COVERAGE-FIX-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A4-R1-CDN-VISUAL-MANIFEST-KEY-COVERAGE-FIX-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function slug(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\")\r\n      .replace(/\u011F/g, \"g\").replace(/\u00FC/g, \"u\").replace(/\u015F/g, \"s\").replace(/\u0131/g, \"i\").replace(/\u00F6/g, \"o\").replace(/\u00E7/g, \"c\")\r\n      .replace(/[^a-z0-9]+/g, \"_\")\r\n      .replace(/^_+|_+$/g, \"\");\r\n  }\r\n\r\n  function uniq(arr) {\r\n    var seen = {};\r\n    return (arr || []).filter(function (x) {\r\n      x = clean(x);\r\n      if (!x || seen[x]) return false;\r\n      seen[x] = true;\r\n      return true;\r\n    });\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getA2CLockResult() {\r\n    if (typeof window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify === \"function\") {\r\n      return window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getA3CLockResult() {\r\n    if (typeof window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify === \"function\") {\r\n      return window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getScenarioLock(a2c) {\r\n    return a2c && a2c.diagnostics && a2c.diagnostics.lockCandidate ? a2c.diagnostics.lockCandidate : null;\r\n  }\r\n\r\n  function getNoraLock(a3c) {\r\n    return a3c && a3c.diagnostics && a3c.diagnostics.lockCandidate ? a3c.diagnostics.lockCandidate : null;\r\n  }\r\n\r\n  function first(arr, fallback) {\r\n    return Array.isArray(arr) && arr.length ? arr[0] : fallback;\r\n  }\r\n\r\n  function visualRecordForScenario(scenario) {\r\n    var supportedFamilies = uniq(scenario.allowedFamilies || []);\r\n    var supportedWattBands = uniq(scenario.preferredWattBands || []);\r\n    var supportedRoles = uniq(scenario.recommendedRoles || []);\r\n\r\n    var family = first(supportedFamilies, \"mixed\");\r\n    var wattBand = first(supportedWattBands, \"mixed\");\r\n    var role = first(supportedRoles, \"setup_role\");\r\n\r\n    /*\r\n      R1 fark\u0131:\r\n      scenarioType visualKey i\u00E7ine al\u0131n\u0131r.\r\n      Ayn\u0131 subPurpose alt\u0131nda role/family/watt tekrar etse bile key \u00E7ak\u0131\u015Fmaz.\r\n    */\r\n    var baseKey = [\r\n      \"panel_setup\",\r\n      scenario.purposeKey,\r\n      scenario.subPurposeKey,\r\n      scenario.scenarioType,\r\n      family,\r\n      wattBand,\r\n      role\r\n    ].map(slug).join(\"_\");\r\n\r\n    var preloadPriority = \"none\";\r\n    if (scenario.scenarioType === \"balanced_key_fill\") preloadPriority = \"low\";\r\n\r\n    return {\r\n      visualKey: baseKey,\r\n      scenarioKey: scenario.scenarioKey,\r\n      purposeKey: scenario.purposeKey,\r\n      subPurposeKey: scenario.subPurposeKey,\r\n      scenarioType: scenario.scenarioType,\r\n\r\n      family: family,\r\n      wattBand: wattBand,\r\n      role: role,\r\n\r\n      supportedFamilies: supportedFamilies,\r\n      supportedWattBands: supportedWattBands,\r\n      supportedRoles: supportedRoles,\r\n\r\n      cdnUrl: \"\",\r\n      cdnStatus: \"placeholder_pending_upload\",\r\n      fallbackSchemaKey: \"schema_\" + baseKey,\r\n      preloadPriority: preloadPriority,\r\n      loadMode: \"lazy_on_setup_modal_open\",\r\n      aspectRatio: \"4:3\",\r\n      altText: clean(\"Panel LED setup g\u00F6rseli \u2014 \" + (scenario.subPurposeTitle || scenario.subPurposeKey) + \" / \" + role),\r\n      sourceStatus: \"blueprint_candidate\"\r\n    };\r\n  }\r\n\r\n  function buildManifest(scenarioLock, noraLock) {\r\n    var scenarios = scenarioLock && Array.isArray(scenarioLock.scenarios) ? scenarioLock.scenarios : [];\r\n    var visuals = scenarios.map(visualRecordForScenario);\r\n\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_SETUP_VISUALS\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A4-R1-CDN-VISUAL-MANIFEST-BLUEPRINT-CANDIDATE\",\r\n      scenarioCount: scenarios.length,\r\n      visualCount: visuals.length,\r\n      productPoolCountAtVerify: productPool().length,\r\n      linkedSetupScenarioLibrary: scenarioLock ? scenarioLock.version : \"\",\r\n      linkedNoraVoiceLibrary: noraLock ? noraLock.version : \"\",\r\n      performanceRules: {\r\n        noBase64Images: true,\r\n        noHiddenBulkImagesInDom: true,\r\n        manifestOnlyAtBoot: true,\r\n        lazyLoadOnSetupModalOpen: true,\r\n        optionalLowPriorityPreloadForPrimaryScenario: true\r\n      },\r\n      visualKeyPattern: \"panel_setup_{purpose}_{subpurpose}_{scenarioType}_{primaryFamily}_{primaryWattBand}_{primaryRole}\",\r\n      fallbackSchemaPattern: \"schema_panel_setup_{purpose}_{subpurpose}_{scenarioType}_{primaryFamily}_{primaryWattBand}_{primaryRole}\",\r\n      coverageRule: \"Coverage, primary field yan\u0131nda supportedFamilies / supportedWattBands / supportedRoles array alanlar\u0131 \u00FCzerinden okunur.\",\r\n      recordFields: [\r\n        \"visualKey\",\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"scenarioType\",\r\n        \"family\",\r\n        \"wattBand\",\r\n        \"role\",\r\n        \"supportedFamilies\",\r\n        \"supportedWattBands\",\r\n        \"supportedRoles\",\r\n        \"cdnUrl\",\r\n        \"cdnStatus\",\r\n        \"fallbackSchemaKey\",\r\n        \"preloadPriority\",\r\n        \"loadMode\",\r\n        \"aspectRatio\",\r\n        \"altText\"\r\n      ],\r\n      visuals: visuals,\r\n      lockRule: \"Bu blueprint ger\u00E7ek CDN URL listesi de\u011Fildir. CDN URL'leri R27-A4-B/A4-C a\u015Famas\u0131nda doldurulacak; fallback schema her zaman haz\u0131r kalacakt\u0131r.\"\r\n    };\r\n  }\r\n\r\n  function countSupported(rows, arrayKey, primaryKey) {\r\n    var out = {};\r\n    (rows || []).forEach(function (row) {\r\n      var values = Array.isArray(row[arrayKey]) && row[arrayKey].length ? row[arrayKey] : [row[primaryKey]];\r\n      uniq(values).forEach(function (value) {\r\n        out[value] = (out[value] || 0) + 1;\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return (rows || []).reduce(function (acc, row) {\r\n      var v = row[key] || \"unknown\";\r\n      acc[v] = (acc[v] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function validate(manifest) {\r\n    var visuals = manifest && Array.isArray(manifest.visuals) ? manifest.visuals : [];\r\n    var keys = {};\r\n    var duplicateKeys = [];\r\n    var missing = [];\r\n    var badVisualKeys = [];\r\n    var badFallbacks = [];\r\n    var badLoadModes = [];\r\n    var badAlt = [];\r\n\r\n    visuals.forEach(function (v) {\r\n      if (keys[v.visualKey]) duplicateKeys.push(v.visualKey);\r\n      keys[v.visualKey] = true;\r\n\r\n      manifest.recordFields.forEach(function (field) {\r\n        var value = v[field];\r\n\r\n        /* cdnUrl blueprint a\u015Famas\u0131nda bo\u015F olabilir; cdnStatus bunu a\u00E7\u0131k\u00E7a ta\u015F\u0131r. */\r\n        if (field === \"cdnUrl\") return;\r\n\r\n        if (value === undefined || value === null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n          missing.push(v.visualKey + \".\" + field);\r\n        }\r\n      });\r\n\r\n      if (!/^panel_setup_/.test(v.visualKey)) badVisualKeys.push(v.visualKey);\r\n      if (!/^schema_panel_setup_/.test(v.fallbackSchemaKey)) badFallbacks.push(v.visualKey);\r\n      if (v.loadMode !== \"lazy_on_setup_modal_open\") badLoadModes.push(v.visualKey);\r\n      if (!clean(v.altText) || clean(v.altText).length < 20) badAlt.push(v.visualKey);\r\n    });\r\n\r\n    var primaryFamilyCounts = countBy(visuals, \"family\");\r\n    var supportedFamilyCounts = countSupported(visuals, \"supportedFamilies\", \"family\");\r\n    var primaryWattCounts = countBy(visuals, \"wattBand\");\r\n    var supportedWattCounts = countSupported(visuals, \"supportedWattBands\", \"wattBand\");\r\n    var primaryRoleCounts = countBy(visuals, \"role\");\r\n    var supportedRoleCounts = countSupported(visuals, \"supportedRoles\", \"role\");\r\n    var scenarioTypeCounts = countBy(visuals, \"scenarioType\");\r\n\r\n    return {\r\n      scenarioCountOk: manifest && manifest.scenarioCount === 72,\r\n      visualCountOk: manifest && manifest.visualCount === 72 && visuals.length === 72,\r\n      visualKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      visualKeyPatternOk: badVisualKeys.length === 0,\r\n      badVisualKeys: badVisualKeys,\r\n      fallbackSchemaKeysOk: badFallbacks.length === 0,\r\n      badFallbacks: badFallbacks,\r\n      loadModeOk: badLoadModes.length === 0,\r\n      badLoadModes: badLoadModes,\r\n      altTextOk: badAlt.length === 0,\r\n      badAltText: badAlt,\r\n      cdnUrlOptionalAtBlueprint: visuals.every(function (v) { return v.cdnStatus === \"placeholder_pending_upload\"; }),\r\n      performanceRulesOk: !!(manifest && manifest.performanceRules && manifest.performanceRules.noBase64Images && manifest.performanceRules.noHiddenBulkImagesInDom && manifest.performanceRules.manifestOnlyAtBoot && manifest.performanceRules.lazyLoadOnSetupModalOpen),\r\n      hasBicolorVisuals: !!supportedFamilyCounts.bicolor,\r\n      hasRgbVisuals: !!supportedFamilyCounts.rgb,\r\n      hasDaylightVisuals: !!supportedFamilyCounts.daylight_or_fixed_white,\r\n      hasLowMidHighProCoverage: !!(supportedWattCounts.low && supportedWattCounts.mid && supportedWattCounts.high && supportedWattCounts.pro),\r\n      hasBalancedRgbCompactScenarioTypes: !!(scenarioTypeCounts.balanced_key_fill && scenarioTypeCounts.rgb_background_accent && scenarioTypeCounts.compact_support_close_range),\r\n      primaryFamilyCounts: primaryFamilyCounts,\r\n      supportedFamilyCounts: supportedFamilyCounts,\r\n      primaryWattCounts: primaryWattCounts,\r\n      supportedWattCounts: supportedWattCounts,\r\n      primaryRoleCounts: primaryRoleCounts,\r\n      supportedRoleCounts: supportedRoleCounts,\r\n      scenarioTypeCounts: scenarioTypeCounts\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A4R1CdnVisualManifestKeyCoverageFix = function () {\r\n    var a2c = getA2CLockResult();\r\n    var a3c = getA3CLockResult();\r\n    var scenarioLock = getScenarioLock(a2c);\r\n    var noraLock = getNoraLock(a3c);\r\n    var manifest = buildManifest(scenarioLock, noraLock);\r\n    var v = validate(manifest);\r\n\r\n    var checks = {\r\n      previousR27A2CFound: !!a2c,\r\n      previousR27A2COk: !!a2c && a2c.ok === true,\r\n      previousR27A3CFound: !!a3c,\r\n      previousR27A3COk: !!a3c && a3c.ok === true,\r\n      scenarioLockReadable: !!scenarioLock,\r\n      noraLockReadable: !!noraLock,\r\n      productPoolReadable: productPool().length === 19,\r\n      manifestGenerated: !!manifest,\r\n      scenarioCountOk: v.scenarioCountOk,\r\n      visualCountOk: v.visualCountOk,\r\n      visualKeysUnique: v.visualKeysUnique,\r\n      noMissingRequiredFields: v.noMissingRequiredFields,\r\n      visualKeyPatternOk: v.visualKeyPatternOk,\r\n      fallbackSchemaKeysOk: v.fallbackSchemaKeysOk,\r\n      loadModeOk: v.loadModeOk,\r\n      altTextOk: v.altTextOk,\r\n      cdnUrlOptionalAtBlueprint: v.cdnUrlOptionalAtBlueprint,\r\n      performanceRulesOk: v.performanceRulesOk,\r\n      hasBicolorVisuals: v.hasBicolorVisuals,\r\n      hasRgbVisuals: v.hasRgbVisuals,\r\n      hasDaylightVisuals: v.hasDaylightVisuals,\r\n      hasLowMidHighProCoverage: v.hasLowMidHighProCoverage,\r\n      hasBalancedRgbCompactScenarioTypes: v.hasBalancedRgbCompactScenarioTypes,\r\n\r\n      duplicateVisualKeyFixApplied: v.visualKeysUnique,\r\n      supportedCoverageFixApplied: v.hasDaylightVisuals && v.hasLowMidHighProCoverage,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A2COk &&\r\n      checks.previousR27A3COk &&\r\n      checks.scenarioLockReadable &&\r\n      checks.noraLockReadable &&\r\n      checks.manifestGenerated &&\r\n      checks.scenarioCountOk &&\r\n      checks.visualCountOk &&\r\n      checks.visualKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.visualKeyPatternOk &&\r\n      checks.fallbackSchemaKeysOk &&\r\n      checks.loadModeOk &&\r\n      checks.altTextOk &&\r\n      checks.cdnUrlOptionalAtBlueprint &&\r\n      checks.performanceRulesOk &&\r\n      checks.hasBicolorVisuals &&\r\n      checks.hasRgbVisuals &&\r\n      checks.hasDaylightVisuals &&\r\n      checks.hasLowMidHighProCoverage &&\r\n      checks.hasBalancedRgbCompactScenarioTypes;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        validation: v,\r\n        cdnVisualManifestBlueprint: manifest,\r\n        copyableVisualManifestJson: JSON.stringify(manifest, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"CDN Visual Manifest blueprint R1 ile d\u00FCzeltildi. visualKey art\u0131k scenarioType i\u00E7eriyor; coverage supportedFamilies/supportedWattBands \u00FCzerinden do\u011Fruland\u0131.\"\r\n          : \"Visual manifest R1 h\u00E2l\u00E2 eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A4-B CDN Visual Manifest Coverage Verify\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A4-R1-CDN-VISUAL-MANIFEST-KEY-COVERAGE-FIX-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A4-B-CDN-VISUAL-MANIFEST-COVERAGE-VERIFY-READONLY\r\n   FAZ:\r\n   R27-A4-B\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A4-R1 CDN Visual Manifest blueprint'ini scenario / visualKey / supported family / supported watt / load-mode / performance coverage a\u00E7\u0131s\u0131ndan do\u011Frular.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A4BCdnVisualManifestCoverageVerify()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A4-B-CDN-VISUAL-MANIFEST-COVERAGE-VERIFY-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A4-B-CDN-VISUAL-MANIFEST-COVERAGE-VERIFY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getA4R1Result() {\r\n    if (typeof window.debugPanelV4R27A4R1CdnVisualManifestKeyCoverageFix === \"function\") {\r\n      return window.debugPanelV4R27A4R1CdnVisualManifestKeyCoverageFix();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getManifest(res) {\r\n    return res && res.diagnostics && res.diagnostics.cdnVisualManifestBlueprint\r\n      ? res.diagnostics.cdnVisualManifestBlueprint\r\n      : null;\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return (rows || []).reduce(function (acc, row) {\r\n      var v = row[key] || \"unknown\";\r\n      acc[v] = (acc[v] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  function countSupported(rows, arrayKey, primaryKey) {\r\n    var out = {};\r\n    (rows || []).forEach(function (row) {\r\n      var values = Array.isArray(row[arrayKey]) && row[arrayKey].length ? row[arrayKey] : [row[primaryKey]];\r\n      var seen = {};\r\n      values.forEach(function (value) {\r\n        value = clean(value);\r\n        if (!value || seen[value]) return;\r\n        seen[value] = true;\r\n        out[value] = (out[value] || 0) + 1;\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function validateKeys(visuals) {\r\n    var seen = {};\r\n    var duplicateKeys = [];\r\n    var badVisualKeys = [];\r\n    var badFallbackKeys = [];\r\n    var badScenarioLinks = [];\r\n\r\n    (visuals || []).forEach(function (v) {\r\n      if (seen[v.visualKey]) duplicateKeys.push(v.visualKey);\r\n      seen[v.visualKey] = true;\r\n\r\n      if (!/^panel_setup_/.test(clean(v.visualKey))) badVisualKeys.push(v.visualKey);\r\n      if (!/^schema_panel_setup_/.test(clean(v.fallbackSchemaKey))) badFallbackKeys.push(v.visualKey);\r\n      if (!clean(v.scenarioKey) || clean(v.scenarioKey).indexOf(clean(v.scenarioType || \"\")) === -1) {\r\n        badScenarioLinks.push(v.visualKey);\r\n      }\r\n    });\r\n\r\n    return {\r\n      visualKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      visualKeyPatternOk: badVisualKeys.length === 0,\r\n      badVisualKeys: badVisualKeys,\r\n      fallbackSchemaKeysOk: badFallbackKeys.length === 0,\r\n      badFallbackKeys: badFallbackKeys,\r\n      scenarioLinkReadable: badScenarioLinks.length === 0,\r\n      badScenarioLinks: badScenarioLinks\r\n    };\r\n  }\r\n\r\n  function validateRequiredFields(manifest, visuals) {\r\n    var missing = [];\r\n    var optionalCdnEmptyCount = 0;\r\n\r\n    (visuals || []).forEach(function (v) {\r\n      (manifest.recordFields || []).forEach(function (field) {\r\n        var value = v[field];\r\n\r\n        if (field === \"cdnUrl\") {\r\n          if (!clean(value) && v.cdnStatus === \"placeholder_pending_upload\") optionalCdnEmptyCount += 1;\r\n          return;\r\n        }\r\n\r\n        if (value === undefined || value === null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n          missing.push(v.visualKey + \".\" + field);\r\n        }\r\n      });\r\n    });\r\n\r\n    return {\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      optionalCdnEmptyCount: optionalCdnEmptyCount,\r\n      cdnUrlOptionalAtBlueprint: optionalCdnEmptyCount === 72\r\n    };\r\n  }\r\n\r\n  function validateLoadAndPerformance(manifest, visuals) {\r\n    var badLoad = [];\r\n    var badAspect = [];\r\n    var badAlt = [];\r\n    var preloadCounts = {};\r\n\r\n    (visuals || []).forEach(function (v) {\r\n      if (v.loadMode !== \"lazy_on_setup_modal_open\") badLoad.push(v.visualKey);\r\n      if (v.aspectRatio !== \"4:3\") badAspect.push(v.visualKey);\r\n      if (!clean(v.altText) || clean(v.altText).length < 20) badAlt.push(v.visualKey);\r\n      preloadCounts[v.preloadPriority || \"unknown\"] = (preloadCounts[v.preloadPriority || \"unknown\"] || 0) + 1;\r\n    });\r\n\r\n    var rules = manifest && manifest.performanceRules ? manifest.performanceRules : {};\r\n    return {\r\n      loadModeOk: badLoad.length === 0,\r\n      badLoadModes: badLoad,\r\n      aspectRatioOk: badAspect.length === 0,\r\n      badAspectRatios: badAspect,\r\n      altTextOk: badAlt.length === 0,\r\n      badAltText: badAlt,\r\n      preloadCounts: preloadCounts,\r\n      noPreloadAllImages: (preloadCounts.low || 0) < visuals.length,\r\n      performanceRulesOk: !!(rules.noBase64Images && rules.noHiddenBulkImagesInDom && rules.manifestOnlyAtBoot && rules.lazyLoadOnSetupModalOpen)\r\n    };\r\n  }\r\n\r\n  function validateCoverage(visuals) {\r\n    var primaryFamilies = countBy(visuals, \"family\");\r\n    var supportedFamilies = countSupported(visuals, \"supportedFamilies\", \"family\");\r\n    var primaryWatts = countBy(visuals, \"wattBand\");\r\n    var supportedWatts = countSupported(visuals, \"supportedWattBands\", \"wattBand\");\r\n    var primaryRoles = countBy(visuals, \"role\");\r\n    var supportedRoles = countSupported(visuals, \"supportedRoles\", \"role\");\r\n    var scenarioTypes = countBy(visuals, \"scenarioType\");\r\n\r\n    var purposeGroups = {};\r\n    var subPurposeGroups = {};\r\n    (visuals || []).forEach(function (v) {\r\n      purposeGroups[v.purposeKey] = (purposeGroups[v.purposeKey] || 0) + 1;\r\n      var sp = v.purposeKey + \"::\" + v.subPurposeKey;\r\n      subPurposeGroups[sp] = (subPurposeGroups[sp] || 0) + 1;\r\n    });\r\n\r\n    var badSubPurposeGroups = [];\r\n    Object.keys(subPurposeGroups).forEach(function (key) {\r\n      if (subPurposeGroups[key] !== 3) badSubPurposeGroups.push({ groupKey: key, count: subPurposeGroups[key] });\r\n    });\r\n\r\n    return {\r\n      purposeCountOk: Object.keys(purposeGroups).length === 8,\r\n      subPurposeCountOk: Object.keys(subPurposeGroups).length === 24,\r\n      everySubPurposeHasThreeVisuals: badSubPurposeGroups.length === 0,\r\n      badSubPurposeGroups: badSubPurposeGroups,\r\n      scenarioTypeCountsOk:\r\n        scenarioTypes.balanced_key_fill === 24 &&\r\n        scenarioTypes.rgb_background_accent === 24 &&\r\n        scenarioTypes.compact_support_close_range === 24,\r\n      hasBicolorCoverage: !!supportedFamilies.bicolor,\r\n      hasRgbCoverage: !!supportedFamilies.rgb,\r\n      hasDaylightCoverage: !!supportedFamilies.daylight_or_fixed_white,\r\n      hasLowMidHighProCoverage: !!(supportedWatts.low && supportedWatts.mid && supportedWatts.high && supportedWatts.pro),\r\n      hasCoreRoleCoverage: !!(\r\n        supportedRoles.key_light &&\r\n        supportedRoles.fill_light &&\r\n        supportedRoles.rgb_accent &&\r\n        supportedRoles.rgb_background_wash &&\r\n        supportedRoles.close_range_support &&\r\n        supportedRoles.clinical_soft_front &&\r\n        supportedRoles.portable_interview_light\r\n      ),\r\n      primaryFamilies: primaryFamilies,\r\n      supportedFamilies: supportedFamilies,\r\n      primaryWatts: primaryWatts,\r\n      supportedWatts: supportedWatts,\r\n      primaryRoles: primaryRoles,\r\n      supportedRoles: supportedRoles,\r\n      scenarioTypes: scenarioTypes,\r\n      purposeGroups: purposeGroups,\r\n      subPurposeGroups: subPurposeGroups\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A4BCdnVisualManifestCoverageVerify = function () {\r\n    var a4r1 = getA4R1Result();\r\n    var manifest = getManifest(a4r1);\r\n    var visuals = manifest && Array.isArray(manifest.visuals) ? manifest.visuals : [];\r\n\r\n    var keyValidation = validateKeys(visuals);\r\n    var fieldValidation = validateRequiredFields(manifest || {}, visuals);\r\n    var loadPerformance = validateLoadAndPerformance(manifest || {}, visuals);\r\n    var coverage = validateCoverage(visuals);\r\n\r\n    var checks = {\r\n      previousR27A4R1Found: !!a4r1,\r\n      previousR27A4R1Ok: !!a4r1 && a4r1.ok === true,\r\n      manifestReadable: !!manifest,\r\n      productPoolReadable: productPool().length === 19,\r\n      scenarioCountOk: !!manifest && manifest.scenarioCount === 72,\r\n      visualCountOk: !!manifest && manifest.visualCount === 72 && visuals.length === 72,\r\n\r\n      visualKeysUnique: keyValidation.visualKeysUnique,\r\n      visualKeyPatternOk: keyValidation.visualKeyPatternOk,\r\n      fallbackSchemaKeysOk: keyValidation.fallbackSchemaKeysOk,\r\n      scenarioLinkReadable: keyValidation.scenarioLinkReadable,\r\n\r\n      noMissingRequiredFields: fieldValidation.noMissingRequiredFields,\r\n      cdnUrlOptionalAtBlueprint: fieldValidation.cdnUrlOptionalAtBlueprint,\r\n\r\n      loadModeOk: loadPerformance.loadModeOk,\r\n      aspectRatioOk: loadPerformance.aspectRatioOk,\r\n      altTextOk: loadPerformance.altTextOk,\r\n      noPreloadAllImages: loadPerformance.noPreloadAllImages,\r\n      performanceRulesOk: loadPerformance.performanceRulesOk,\r\n\r\n      purposeCountOk: coverage.purposeCountOk,\r\n      subPurposeCountOk: coverage.subPurposeCountOk,\r\n      everySubPurposeHasThreeVisuals: coverage.everySubPurposeHasThreeVisuals,\r\n      scenarioTypeCountsOk: coverage.scenarioTypeCountsOk,\r\n      hasBicolorCoverage: coverage.hasBicolorCoverage,\r\n      hasRgbCoverage: coverage.hasRgbCoverage,\r\n      hasDaylightCoverage: coverage.hasDaylightCoverage,\r\n      hasLowMidHighProCoverage: coverage.hasLowMidHighProCoverage,\r\n      hasCoreRoleCoverage: coverage.hasCoreRoleCoverage,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A4R1Ok &&\r\n      checks.manifestReadable &&\r\n      checks.scenarioCountOk &&\r\n      checks.visualCountOk &&\r\n      checks.visualKeysUnique &&\r\n      checks.visualKeyPatternOk &&\r\n      checks.fallbackSchemaKeysOk &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.cdnUrlOptionalAtBlueprint &&\r\n      checks.loadModeOk &&\r\n      checks.aspectRatioOk &&\r\n      checks.altTextOk &&\r\n      checks.noPreloadAllImages &&\r\n      checks.performanceRulesOk &&\r\n      checks.purposeCountOk &&\r\n      checks.subPurposeCountOk &&\r\n      checks.everySubPurposeHasThreeVisuals &&\r\n      checks.scenarioTypeCountsOk &&\r\n      checks.hasBicolorCoverage &&\r\n      checks.hasRgbCoverage &&\r\n      checks.hasDaylightCoverage &&\r\n      checks.hasLowMidHighProCoverage &&\r\n      checks.hasCoreRoleCoverage;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        visualCount: visuals.length,\r\n        keyValidation: keyValidation,\r\n        fieldValidation: fieldValidation,\r\n        loadPerformance: loadPerformance,\r\n        coverage: coverage,\r\n        cdnVisualManifestBlueprint: manifest,\r\n        copyableVisualManifestJson: manifest ? JSON.stringify(manifest, null, 2) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"CDN Visual Manifest coverage do\u011Fruland\u0131. R27-A4-C lock verify a\u015Famas\u0131na ge\u00E7ilebilir.\"\r\n          : \"CDN Visual Manifest coverage eksik; diagnostics alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A4-C CDN Visual Manifest Lock Verify\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A4-B-CDN-VISUAL-MANIFEST-COVERAGE-VERIFY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A4-C-CDN-VISUAL-MANIFEST-LOCK-VERIFY-READONLY\r\n   FAZ:\r\n   R27-A4-C\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A4-B coverage PASS olan CDN Visual Manifest blueprint'i lock candidate olarak do\u011Frular.\r\n   Production data yazmaz; copyableLockJson \u00FCretir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A4CCdnVisualManifestLockVerify()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A4-C-CDN-VISUAL-MANIFEST-LOCK-VERIFY-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A4-C-CDN-VISUAL-MANIFEST-LOCK-VERIFY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getCoverageResult() {\r\n    if (typeof window.debugPanelV4R27A4BCdnVisualManifestCoverageVerify === \"function\") {\r\n      return window.debugPanelV4R27A4BCdnVisualManifestCoverageVerify();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getManifest(res) {\r\n    return res && res.diagnostics && res.diagnostics.cdnVisualManifestBlueprint\r\n      ? res.diagnostics.cdnVisualManifestBlueprint\r\n      : null;\r\n  }\r\n\r\n  function buildLockCandidate(manifest, coverageResult) {\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_SETUP_VISUALS\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A4-C-CDN-VISUAL-MANIFEST-LOCK-CANDIDATE\",\r\n      productPoolCountAtVerify: productPool().length,\r\n      scenarioCount: manifest.scenarioCount,\r\n      visualCount: manifest.visualCount,\r\n      linkedSetupScenarioLibrary: manifest.linkedSetupScenarioLibrary,\r\n      linkedNoraVoiceLibrary: manifest.linkedNoraVoiceLibrary,\r\n      performanceRules: manifest.performanceRules,\r\n      visualKeyPattern: manifest.visualKeyPattern,\r\n      fallbackSchemaPattern: manifest.fallbackSchemaPattern,\r\n      coverageRule: manifest.coverageRule,\r\n      recordFields: manifest.recordFields,\r\n      visuals: manifest.visuals,\r\n      coverage: coverageResult && coverageResult.diagnostics ? {\r\n        keyValidation: coverageResult.diagnostics.keyValidation,\r\n        fieldValidation: coverageResult.diagnostics.fieldValidation,\r\n        loadPerformance: coverageResult.diagnostics.loadPerformance,\r\n        coverage: coverageResult.diagnostics.coverage\r\n      } : null,\r\n      lockRule: \"Bu JSON ger\u00E7ek CDN URL listesi de\u011Fildir. URL alanlar\u0131 placeholder_pending_upload olarak kalabilir; R27-A5/A6 UI entegrasyonunda CDN URL map doldurulacakt\u0131r.\",\r\n      noTouch: [\r\n        \"score\",\r\n        \"ranking\",\r\n        \"productPool\",\r\n        \"priceFormat\",\r\n        \"cart\",\r\n        \"commerce\",\r\n        \"share\",\r\n        \"PNG\",\r\n        \"QR\"\r\n      ]\r\n    };\r\n  }\r\n\r\n  function validateLock(lock) {\r\n    var visuals = lock && Array.isArray(lock.visuals) ? lock.visuals : [];\r\n    var keys = {};\r\n    var duplicateKeys = [];\r\n    var missing = [];\r\n    var badFallbacks = [];\r\n    var badLoad = [];\r\n    var badCdnStatus = [];\r\n    var badPerformance = [];\r\n\r\n    visuals.forEach(function (v) {\r\n      if (keys[v.visualKey]) duplicateKeys.push(v.visualKey);\r\n      keys[v.visualKey] = true;\r\n\r\n      [\r\n        \"visualKey\",\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"scenarioType\",\r\n        \"family\",\r\n        \"wattBand\",\r\n        \"role\",\r\n        \"supportedFamilies\",\r\n        \"supportedWattBands\",\r\n        \"supportedRoles\",\r\n        \"cdnStatus\",\r\n        \"fallbackSchemaKey\",\r\n        \"preloadPriority\",\r\n        \"loadMode\",\r\n        \"aspectRatio\",\r\n        \"altText\"\r\n      ].forEach(function (field) {\r\n        var value = v[field];\r\n        if (value === undefined || value === null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n          missing.push(v.visualKey + \".\" + field);\r\n        }\r\n      });\r\n\r\n      if (!/^schema_panel_setup_/.test(clean(v.fallbackSchemaKey))) badFallbacks.push(v.visualKey);\r\n      if (v.loadMode !== \"lazy_on_setup_modal_open\") badLoad.push(v.visualKey);\r\n      if (v.cdnStatus !== \"placeholder_pending_upload\") badCdnStatus.push(v.visualKey);\r\n    });\r\n\r\n    var rules = lock && lock.performanceRules ? lock.performanceRules : {};\r\n    if (!rules.noBase64Images) badPerformance.push(\"noBase64Images\");\r\n    if (!rules.noHiddenBulkImagesInDom) badPerformance.push(\"noHiddenBulkImagesInDom\");\r\n    if (!rules.manifestOnlyAtBoot) badPerformance.push(\"manifestOnlyAtBoot\");\r\n    if (!rules.lazyLoadOnSetupModalOpen) badPerformance.push(\"lazyLoadOnSetupModalOpen\");\r\n\r\n    return {\r\n      libraryNameOk: lock && lock.libraryName === \"GDX_PANEL_LED_V4_SETUP_VISUALS\",\r\n      scenarioCountOk: lock && lock.scenarioCount === 72,\r\n      visualCountOk: lock && lock.visualCount === 72 && visuals.length === 72,\r\n      visualKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      fallbackSchemaKeysOk: badFallbacks.length === 0,\r\n      badFallbacks: badFallbacks,\r\n      loadModeOk: badLoad.length === 0,\r\n      badLoadModes: badLoad,\r\n      cdnStatusPlaceholderOk: badCdnStatus.length === 0,\r\n      badCdnStatus: badCdnStatus,\r\n      performanceRulesOk: badPerformance.length === 0,\r\n      badPerformanceRules: badPerformance,\r\n      copyReady: !!lock && visuals.length === 72\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R27A4CCdnVisualManifestLockVerify = function () {\r\n    var coverage = getCoverageResult();\r\n    var manifest = getManifest(coverage);\r\n    var lock = manifest ? buildLockCandidate(manifest, coverage) : null;\r\n    var validation = validateLock(lock);\r\n\r\n    var checks = {\r\n      previousR27A4BFound: !!coverage,\r\n      previousR27A4BOk: !!coverage && coverage.ok === true,\r\n      manifestReadable: !!manifest,\r\n      lockCandidateGenerated: !!lock,\r\n      productPoolReadable: productPool().length === 19,\r\n      libraryNameOk: validation.libraryNameOk,\r\n      scenarioCountOk: validation.scenarioCountOk,\r\n      visualCountOk: validation.visualCountOk,\r\n      visualKeysUnique: validation.visualKeysUnique,\r\n      noMissingRequiredFields: validation.noMissingRequiredFields,\r\n      fallbackSchemaKeysOk: validation.fallbackSchemaKeysOk,\r\n      loadModeOk: validation.loadModeOk,\r\n      cdnStatusPlaceholderOk: validation.cdnStatusPlaceholderOk,\r\n      performanceRulesOk: validation.performanceRulesOk,\r\n      copyReady: validation.copyReady,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A4BOk &&\r\n      checks.manifestReadable &&\r\n      checks.lockCandidateGenerated &&\r\n      checks.libraryNameOk &&\r\n      checks.scenarioCountOk &&\r\n      checks.visualCountOk &&\r\n      checks.visualKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.fallbackSchemaKeysOk &&\r\n      checks.loadModeOk &&\r\n      checks.cdnStatusPlaceholderOk &&\r\n      checks.performanceRulesOk &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        validation: validation,\r\n        lockCandidate: lock,\r\n        copyableLockJson: lock ? JSON.stringify(lock, null, 2) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"CDN Visual Manifest lock candidate do\u011Fruland\u0131. R27-A4 hatt\u0131 kilitlenebilir.\"\r\n          : \"CDN Visual Manifest lock candidate eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A5 Setup Modal Hybrid Preview\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A4-C-CDN-VISUAL-MANIFEST-LOCK-VERIFY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A5-SETUP-MODAL-HYBRID-PREVIEW-READONLY\r\n   FAZ:\r\n   R27-A5\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A2 Setup Scenario Library + R27-A3 NORA Voice Library + R27-A4 CDN Visual Manifest\r\n   \u00FC\u00E7l\u00FCs\u00FCnden Setup Modal Hybrid Preview \u00FCretir.\r\n   Production DOM yazmaz; sadece preview data ve coverage do\u011Frular.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A5SetupModalHybridPreview()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A5-SETUP-MODAL-HYBRID-PREVIEW-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A5-SETUP-MODAL-HYBRID-PREVIEW-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getA2C() {\r\n    return typeof window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify === \"function\"\r\n      ? window.debugPanelV4R27A2CSetupScenarioLibraryLockVerify()\r\n      : null;\r\n  }\r\n\r\n  function getA3C() {\r\n    return typeof window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify === \"function\"\r\n      ? window.debugPanelV4R27A3CNoraVoiceLibraryLockVerify()\r\n      : null;\r\n  }\r\n\r\n  function getA4C() {\r\n    return typeof window.debugPanelV4R27A4CCdnVisualManifestLockVerify === \"function\"\r\n      ? window.debugPanelV4R27A4CCdnVisualManifestLockVerify()\r\n      : null;\r\n  }\r\n\r\n  function lockFrom(result) {\r\n    return result && result.diagnostics && result.diagnostics.lockCandidate ? result.diagnostics.lockCandidate : null;\r\n  }\r\n\r\n  function byKey(rows, keyName) {\r\n    var out = {};\r\n    (rows || []).forEach(function (row) {\r\n      if (row && row[keyName]) out[row[keyName]] = row;\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function forbiddenClaimHit(text) {\r\n    var t = lower(text);\r\n    var forbidden = [\r\n      \"kesinlikle en iyi\",\r\n      \"her kullan\u0131m i\u00E7in ideal\",\r\n      \"profesyonel sonu\u00E7 garantiler\",\r\n      \"rakipsiz\",\r\n      \"bunu almal\u0131s\u0131n\",\r\n      \"stokta kesin vard\u0131r\",\r\n      \"en m\u00FCkemmel\",\r\n      \"garantili sonu\u00E7\",\r\n      \"her senaryoda ana \u0131\u015F\u0131k\"\r\n    ];\r\n\r\n    return forbidden.filter(function (claim) {\r\n      return t.indexOf(lower(claim)) > -1;\r\n    });\r\n  }\r\n\r\n  function buildPreviewItem(scenario, noraEntry, visual) {\r\n    var slots = noraEntry && noraEntry.slots ? noraEntry.slots : {};\r\n    var visualMode = visual && clean(visual.cdnUrl)\r\n      ? \"cdn_image\"\r\n      : \"fallback_schema\";\r\n\r\n    return {\r\n      previewKey: \"setup_modal_preview_\" + scenario.scenarioKey,\r\n      scenarioKey: scenario.scenarioKey,\r\n      purposeKey: scenario.purposeKey,\r\n      subPurposeKey: scenario.subPurposeKey,\r\n      scenarioType: scenario.scenarioType,\r\n\r\n      modalTitle: scenario.title || \"Setup \u00F6nerisi\",\r\n      targetUser: scenario.targetUser || \"\",\r\n      recommendedRoles: scenario.recommendedRoles || [],\r\n      allowedFamilies: scenario.allowedFamilies || [],\r\n      preferredWattBands: scenario.preferredWattBands || [],\r\n\r\n      visual: {\r\n        visualKey: visual ? visual.visualKey : \"\",\r\n        visualMode: visualMode,\r\n        cdnUrl: visual ? visual.cdnUrl : \"\",\r\n        cdnStatus: visual ? visual.cdnStatus : \"missing\",\r\n        fallbackSchemaKey: visual ? visual.fallbackSchemaKey : \"\",\r\n        loadMode: visual ? visual.loadMode : \"\",\r\n        aspectRatio: visual ? visual.aspectRatio : \"\",\r\n        altText: visual ? visual.altText : \"\"\r\n      },\r\n\r\n      nora: {\r\n        shortNote: slots.noraShortNote ? slots.noraShortNote.text : \"\",\r\n        expertComment: slots.noraExpertComment ? slots.noraExpertComment.text : \"\",\r\n        setupNote: slots.noraSetupNote ? slots.noraSetupNote.text : \"\",\r\n        caution: slots.noraCaution ? slots.noraCaution.text : \"\",\r\n        roleTruth: slots.noraRoleTruth ? slots.noraRoleTruth.text : \"\",\r\n        alternativeUse: slots.noraAlternativeUse ? slots.noraAlternativeUse.text : \"\",\r\n        shareSummary: slots.noraShareSummary ? slots.noraShareSummary.text : \"\",\r\n        pngSummary: slots.noraPngSummary ? slots.noraPngSummary.text : \"\"\r\n      },\r\n\r\n      modalSections: [\r\n        \"visual_or_schema\",\r\n        \"nora_short_note\",\r\n        \"role_truth\",\r\n        \"setup_placement_hint\",\r\n        \"honest_caution\",\r\n        \"alternative_use\",\r\n        \"cart_and_close_existing_flow_preserved\"\r\n      ],\r\n\r\n      actionPolicy: {\r\n        useExistingModalCart: true,\r\n        useExistingCloseButton: true,\r\n        doNotCreateNewCartLogic: true,\r\n        doNotChangeScoreOrRanking: true\r\n      },\r\n\r\n      sourceStatus: \"hybrid_preview_candidate\"\r\n    };\r\n  }\r\n\r\n  function buildHybridPreview(scenarioLock, noraLock, visualLock) {\r\n    var scenarios = scenarioLock && Array.isArray(scenarioLock.scenarios) ? scenarioLock.scenarios : [];\r\n    var noraByScenario = byKey(noraLock && noraLock.entries, \"scenarioKey\");\r\n    var visualByScenario = byKey(visualLock && visualLock.visuals, \"scenarioKey\");\r\n\r\n    var previews = scenarios.map(function (scenario) {\r\n      return buildPreviewItem(\r\n        scenario,\r\n        noraByScenario[scenario.scenarioKey],\r\n        visualByScenario[scenario.scenarioKey]\r\n      );\r\n    });\r\n\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_SETUP_MODAL_HYBRID_PREVIEW\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R27-A5-SETUP-MODAL-HYBRID-PREVIEW-CANDIDATE\",\r\n      scenarioCount: scenarios.length,\r\n      previewCount: previews.length,\r\n      productPoolCountAtVerify: productPool().length,\r\n      linkedSetupScenarioLibrary: scenarioLock ? scenarioLock.version : \"\",\r\n      linkedNoraVoiceLibrary: noraLock ? noraLock.version : \"\",\r\n      linkedVisualManifest: visualLock ? visualLock.version : \"\",\r\n      previewRules: {\r\n        noDomWrite: true,\r\n        noCartLogicChange: true,\r\n        noScoreChange: true,\r\n        noRankingChange: true,\r\n        noProductMutation: true,\r\n        visualLazyLoadOnly: true,\r\n        fallbackSchemaWhenCdnMissing: true,\r\n        existingModalCloseAndCartPreserved: true\r\n      },\r\n      previews: previews,\r\n      lockRule: \"Bu preview production UI patch de\u011Fildir. R27-A6'da g\u00FCvenli UI patch'e \u00E7evrilmeden canl\u0131 davran\u0131\u015F de\u011Fi\u015Ftirilmez.\"\r\n    };\r\n  }\r\n\r\n  function validate(preview) {\r\n    var rows = preview && Array.isArray(preview.previews) ? preview.previews : [];\r\n    var keys = {};\r\n    var dup = [];\r\n    var missing = [];\r\n    var forbidden = [];\r\n    var badVisual = [];\r\n    var badActionPolicy = [];\r\n    var fallbackCount = 0;\r\n    var cdnCount = 0;\r\n\r\n    rows.forEach(function (row) {\r\n      if (keys[row.previewKey]) dup.push(row.previewKey);\r\n      keys[row.previewKey] = true;\r\n\r\n      [\r\n        \"previewKey\",\r\n        \"scenarioKey\",\r\n        \"purposeKey\",\r\n        \"subPurposeKey\",\r\n        \"scenarioType\",\r\n        \"modalTitle\",\r\n        \"targetUser\",\r\n        \"recommendedRoles\",\r\n        \"allowedFamilies\",\r\n        \"preferredWattBands\",\r\n        \"visual\",\r\n        \"nora\",\r\n        \"modalSections\",\r\n        \"actionPolicy\"\r\n      ].forEach(function (field) {\r\n        var value = row[field];\r\n        if (value === undefined || value === null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n          missing.push(row.previewKey + \".\" + field);\r\n        }\r\n      });\r\n\r\n      var noraText = JSON.stringify(row.nora || {});\r\n      var hits = forbiddenClaimHit(noraText);\r\n      if (hits.length) forbidden.push({ previewKey: row.previewKey, hits: hits });\r\n\r\n      if (!row.visual || (!row.visual.cdnUrl && !row.visual.fallbackSchemaKey)) badVisual.push(row.previewKey);\r\n      if (row.visual && row.visual.visualMode === \"fallback_schema\") fallbackCount += 1;\r\n      if (row.visual && row.visual.visualMode === \"cdn_image\") cdnCount += 1;\r\n\r\n      var ap = row.actionPolicy || {};\r\n      if (!ap.useExistingModalCart || !ap.useExistingCloseButton || !ap.doNotCreateNewCartLogic || !ap.doNotChangeScoreOrRanking) {\r\n        badActionPolicy.push(row.previewKey);\r\n      }\r\n    });\r\n\r\n    return {\r\n      scenarioCountOk: preview && preview.scenarioCount === 72,\r\n      previewCountOk: preview && preview.previewCount === 72 && rows.length === 72,\r\n      previewKeysUnique: dup.length === 0,\r\n      duplicatePreviewKeys: dup,\r\n      noMissingRequiredFields: missing.length === 0,\r\n      missingRequiredFields: missing,\r\n      noForbiddenClaims: forbidden.length === 0,\r\n      forbiddenHits: forbidden,\r\n      allHaveVisualOrFallback: badVisual.length === 0,\r\n      badVisual: badVisual,\r\n      fallbackSchemaCount: fallbackCount,\r\n      cdnImageCount: cdnCount,\r\n      fallbackAvailableForAllWithoutCdn: fallbackCount === 72 || (fallbackCount + cdnCount === 72),\r\n      actionPolicyPreserved: badActionPolicy.length === 0,\r\n      badActionPolicy: badActionPolicy,\r\n      previewRulesOk: !!(preview && preview.previewRules && preview.previewRules.noDomWrite && preview.previewRules.noCartLogicChange && preview.previewRules.visualLazyLoadOnly && preview.previewRules.fallbackSchemaWhenCdnMissing)\r\n    };\r\n  }\r\n\r\n  function countBy(rows, key) {\r\n    return (rows || []).reduce(function (acc, row) {\r\n      var v = row[key] || \"unknown\";\r\n      acc[v] = (acc[v] || 0) + 1;\r\n      return acc;\r\n    }, {});\r\n  }\r\n\r\n  window.debugPanelV4R27A5SetupModalHybridPreview = function () {\r\n    var a2c = getA2C();\r\n    var a3c = getA3C();\r\n    var a4c = getA4C();\r\n\r\n    var scenarioLock = lockFrom(a2c);\r\n    var noraLock = lockFrom(a3c);\r\n    var visualLock = lockFrom(a4c);\r\n\r\n    var preview = buildHybridPreview(scenarioLock, noraLock, visualLock);\r\n    var v = validate(preview);\r\n\r\n    var checks = {\r\n      previousR27A2COk: !!a2c && a2c.ok === true,\r\n      previousR27A3COk: !!a3c && a3c.ok === true,\r\n      previousR27A4COk: !!a4c && a4c.ok === true,\r\n      scenarioLockReadable: !!scenarioLock,\r\n      noraLockReadable: !!noraLock,\r\n      visualLockReadable: !!visualLock,\r\n      productPoolReadable: productPool().length === 19,\r\n\r\n      hybridPreviewGenerated: !!preview,\r\n      scenarioCountOk: v.scenarioCountOk,\r\n      previewCountOk: v.previewCountOk,\r\n      previewKeysUnique: v.previewKeysUnique,\r\n      noMissingRequiredFields: v.noMissingRequiredFields,\r\n      noForbiddenClaims: v.noForbiddenClaims,\r\n      allHaveVisualOrFallback: v.allHaveVisualOrFallback,\r\n      fallbackAvailableForAllWithoutCdn: v.fallbackAvailableForAllWithoutCdn,\r\n      actionPolicyPreserved: v.actionPolicyPreserved,\r\n      previewRulesOk: v.previewRulesOk,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A2COk &&\r\n      checks.previousR27A3COk &&\r\n      checks.previousR27A4COk &&\r\n      checks.scenarioLockReadable &&\r\n      checks.noraLockReadable &&\r\n      checks.visualLockReadable &&\r\n      checks.hybridPreviewGenerated &&\r\n      checks.scenarioCountOk &&\r\n      checks.previewCountOk &&\r\n      checks.previewKeysUnique &&\r\n      checks.noMissingRequiredFields &&\r\n      checks.noForbiddenClaims &&\r\n      checks.allHaveVisualOrFallback &&\r\n      checks.fallbackAvailableForAllWithoutCdn &&\r\n      checks.actionPolicyPreserved &&\r\n      checks.previewRulesOk;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        validation: v,\r\n        scenarioTypeCounts: countBy(preview.previews, \"scenarioType\"),\r\n        setupModalHybridPreview: preview,\r\n        copyableHybridPreviewJson: JSON.stringify(preview, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"Setup Modal Hybrid Preview \u00FCretildi. R27-A6 Safe UI Patch i\u00E7in veri modeli haz\u0131r.\"\r\n          : \"Setup Modal Hybrid Preview eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A6 Setup Modal / NORA / CDN Safe UI Patch\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A5-SETUP-MODAL-HYBRID-PREVIEW-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A6-R0-SETUP-MODAL-HOOK-READINESS-AUDIT-READONLY\r\n   FAZ:\r\n   R27-A6-R0\r\n\r\n   KISA AMA\u00C7:\r\n   R27-A6 Safe UI Patch \u00F6ncesi ger\u00E7ek Setup modal DOM/hook hedeflerini okur.\r\n   Production UI patch de\u011Fildir. DOM yazmaz. Sepet/kapatma/score/ranking/share ak\u0131\u015F\u0131na dokunmaz.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken:\r\n   1) En az bir \u201CKurulumu G\u00F6r\u201D modal\u0131n\u0131 a\u00E7.\r\n   2) Modal a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A6R0SetupModalHookReadinessAudit()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A6-R0-SETUP-MODAL-HOOK-READINESS-AUDIT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A6-R0-SETUP-MODAL-HOOK-READINESS-AUDIT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function getA5Result() {\r\n    if (typeof window.debugPanelV4R27A5SetupModalHybridPreview === \"function\") {\r\n      return window.debugPanelV4R27A5SetupModalHybridPreview();\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getHybridPreview(a5) {\r\n    return a5 && a5.diagnostics && a5.diagnostics.setupModalHybridPreview\r\n      ? a5.diagnostics.setupModalHybridPreview\r\n      : null;\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && rect.width < 2 && rect.height < 2) return false;\r\n    return true;\r\n  }\r\n\r\n  function root() {\r\n    return document.getElementById(\"gdx-panel-led-v4-root\") || document;\r\n  }\r\n\r\n  function findOpenModalCandidates() {\r\n    var selectors = [\r\n      \".gdx-r11-modal\",\r\n      \".gdx-r11-modal-panel\",\r\n      \"[data-gdx-panel-r18-modal='1']\",\r\n      \"[data-gdx-panel-modal='1']\",\r\n      \"[role='dialog']\",\r\n      \".gdx-panel-v4-modal\",\r\n      \".gdx-panel-v4-setup-modal\"\r\n    ];\r\n\r\n    var seen = [];\r\n    var nodes = [];\r\n\r\n    selectors.forEach(function (sel) {\r\n      Array.prototype.slice.call(document.querySelectorAll(sel)).forEach(function (el) {\r\n        if (seen.indexOf(el) > -1) return;\r\n        seen.push(el);\r\n        nodes.push(el);\r\n      });\r\n    });\r\n\r\n    return nodes.filter(visible);\r\n  }\r\n\r\n  function modalText(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function isSetupModal(el) {\r\n    var text = lower(modalText(el));\r\n    var cls = lower(el && el.className ? el.className : \"\");\r\n    var attrs = lower([\r\n      el && el.getAttribute ? el.getAttribute(\"data-gdx-panel-r11-modal-kind\") : \"\",\r\n      el && el.getAttribute ? el.getAttribute(\"data-gdx-panel-modal-kind\") : \"\",\r\n      el && el.getAttribute ? el.getAttribute(\"data-gdx-panel-modal-type\") : \"\"\r\n    ].join(\" \"));\r\n\r\n    return (\r\n      /setup|kurulum|dinamik setup|\u0131\u015F\u0131k yerle\u015Fimi|is\u0327ik yerles\u0327imi/.test(text) ||\r\n      /setup/.test(cls) ||\r\n      /setup/.test(attrs)\r\n    );\r\n  }\r\n\r\n  function pickSetupModal(candidates) {\r\n    var setups = candidates.filter(isSetupModal);\r\n    if (setups.length) return setups[0];\r\n    return candidates[0] || null;\r\n  }\r\n\r\n  function buttonSummary(scope) {\r\n    if (!scope) return [];\r\n    return Array.prototype.slice.call(scope.querySelectorAll(\"button, a\")).map(function (el) {\r\n      return {\r\n        tag: el.tagName,\r\n        text: clean(el.innerText || el.textContent || el.getAttribute(\"aria-label\") || \"\").slice(0, 80),\r\n        className: clean(el.className || \"\").slice(0, 160),\r\n        href: el.getAttribute ? (el.getAttribute(\"href\") || \"\") : \"\",\r\n        visible: visible(el)\r\n      };\r\n    }).filter(function (x) { return x.visible; }).slice(0, 20);\r\n  }\r\n\r\n  function hasCartAction(scope) {\r\n    if (!scope) return false;\r\n    var text = lower(modalText(scope));\r\n    return /sepete ekle|sat\u0131n al|satin al|\u00FCr\u00FCn\u00FC incele|urunu incele/.test(text);\r\n  }\r\n\r\n  function hasCloseAction(scope) {\r\n    if (!scope) return false;\r\n    var text = lower(modalText(scope));\r\n    var buttons = buttonSummary(scope);\r\n    return (\r\n      /kapat/.test(text) ||\r\n      buttons.some(function (b) { return /kapat|\u00D7|x/.test(lower(b.text || b.className)); })\r\n    );\r\n  }\r\n\r\n  function productNameFromModal(scope) {\r\n    if (!scope) return \"\";\r\n    var h = scope.querySelector(\"h1,h2,h3,h4,[data-gdx-panel-modal-title='1'],[data-gdx-panel-setup-title='1']\");\r\n    return clean(h ? (h.innerText || h.textContent) : \"\").slice(0, 120);\r\n  }\r\n\r\n  function findPreviewMatch(preview, modalTitle) {\r\n    var rows = preview && Array.isArray(preview.previews) ? preview.previews : [];\r\n    var t = lower(modalTitle);\r\n    if (!t) return null;\r\n\r\n    return rows.find(function (row) {\r\n      return lower(row.modalTitle).indexOf(t.slice(0, 12)) > -1 || t.indexOf(lower(row.modalTitle).slice(0, 12)) > -1;\r\n    }) || rows[0] || null;\r\n  }\r\n\r\n  function classList(el) {\r\n    return clean(el && el.className ? String(el.className) : \"\");\r\n  }\r\n\r\n  window.debugPanelV4R27A6R0SetupModalHookReadinessAudit = function () {\r\n    var a5 = getA5Result();\r\n    var preview = getHybridPreview(a5);\r\n\r\n    var candidates = findOpenModalCandidates();\r\n    var setupModal = pickSetupModal(candidates);\r\n    var title = productNameFromModal(setupModal);\r\n    var matchedPreview = findPreviewMatch(preview, title);\r\n\r\n    var checks = {\r\n      previousR27A5Found: !!a5,\r\n      previousR27A5Ok: !!a5 && a5.ok === true,\r\n      hybridPreviewReadable: !!preview && Array.isArray(preview.previews) && preview.previews.length === 72,\r\n      productPoolReadable: productPool().length === 19,\r\n\r\n      modalOpenForAudit: !!setupModal,\r\n      setupModalDetected: !!setupModal && isSetupModal(setupModal),\r\n      setupModalHasText: !!setupModal && modalText(setupModal).length > 40,\r\n      setupModalHasCartAction: hasCartAction(setupModal),\r\n      setupModalHasCloseAction: hasCloseAction(setupModal),\r\n      modalButtonsReadable: buttonSummary(setupModal).length > 0,\r\n      previewMatchReadable: !!matchedPreview,\r\n      previewHasNora: !!(matchedPreview && matchedPreview.nora && matchedPreview.nora.setupNote),\r\n      previewHasVisualFallback: !!(matchedPreview && matchedPreview.visual && (matchedPreview.visual.fallbackSchemaKey || matchedPreview.visual.cdnUrl)),\r\n      safePatchTargetReadable: !!setupModal,\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.previousR27A5Ok &&\r\n      checks.hybridPreviewReadable &&\r\n      checks.productPoolReadable &&\r\n      checks.modalOpenForAudit &&\r\n      checks.setupModalDetected &&\r\n      checks.setupModalHasText &&\r\n      checks.setupModalHasCartAction &&\r\n      checks.setupModalHasCloseAction &&\r\n      checks.modalButtonsReadable &&\r\n      checks.previewMatchReadable &&\r\n      checks.previewHasNora &&\r\n      checks.previewHasVisualFallback &&\r\n      checks.safePatchTargetReadable;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        openModalCandidateCount: candidates.length,\r\n        setupModal: setupModal ? {\r\n          tagName: setupModal.tagName,\r\n          id: setupModal.id || \"\",\r\n          className: classList(setupModal),\r\n          textSample: modalText(setupModal).slice(0, 600),\r\n          title: title,\r\n          buttons: buttonSummary(setupModal)\r\n        } : null,\r\n        matchedPreview: matchedPreview ? {\r\n          previewKey: matchedPreview.previewKey,\r\n          scenarioKey: matchedPreview.scenarioKey,\r\n          modalTitle: matchedPreview.modalTitle,\r\n          visualMode: matchedPreview.visual ? matchedPreview.visual.visualMode : \"\",\r\n          fallbackSchemaKey: matchedPreview.visual ? matchedPreview.visual.fallbackSchemaKey : \"\",\r\n          noraSetupNote: matchedPreview.nora ? matchedPreview.nora.setupNote : \"\",\r\n          noraRoleTruth: matchedPreview.nora ? matchedPreview.nora.roleTruth : \"\"\r\n        } : null,\r\n        patchPlan: ok ? {\r\n          target: \"current open setup modal panel\",\r\n          insertionPolicy: \"inside setup modal content, before existing cart/close action area when possible\",\r\n          visualPolicy: \"show fallback schema now; CDN image only when cdnUrl exists\",\r\n          noraPolicy: \"add NORA setupNote + roleTruth + caution, no forbidden claims\",\r\n          preserve: [\"existing modal cart\", \"existing close button\", \"ESC close\", \"score\", \"ranking\", \"share\", \"PNG\", \"QR\"]\r\n        } : null\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"A6 UI patch i\u00E7in ger\u00E7ek setup modal hedefi okunabilir. Safe append patch haz\u0131rlanabilir.\"\r\n          : \"A6 UI patch i\u00E7in modal a\u00E7\u0131kken tekrar audit gerekir veya setup modal hook net de\u011Fil.\",\r\n        next: ok\r\n          ? \"R27-A6-R1 Setup Modal NORA/CDN Safe UI Patch\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A6-R0-SETUP-MODAL-HOOK-READINESS-AUDIT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R27-A8-R2-A6-COMPATIBILITY-SHIM\r\n   R29-R5-R1 SOURCE OWNERSHIP TRANSFER\r\n   Existing box identity is preserved; rendering is now owned by R11 modalHtml().\r\n   Legacy click/focus/MutationObserver/timeout mount chain is retired.\r\n*/\r\n(function () {\r\n  \"use strict\";\r\n\r\n  window.GDX_PANEL_V4_R27_A8_R2_READY = true;\r\n  window.GDX_PANEL_V4_R27_A8_R2_LEGACY_RUNTIME_RETIRED = true;\r\n  window.GDX_PANEL_V4_R27_A8_R2_OBSERVER_ACTIVE = false;\r\n  window.GDX_PANEL_V4_R27_A8_R2_SOURCE_OWNER = \"assets/panel-led-v4.ui.js / R11 modalHtml() / R29-R5-R1\";\r\n\r\n  function sourceBox() {\r\n    return document.querySelector('.gdx-r11-modal-panel.is-setup [data-gdx-panel-r27-a8-r2=\"1\"][data-gdx-panel-r29-r5-source-owned=\"1\"]');\r\n  }\r\n\r\n  window.applyPanelV4R27A8R2A6ConsolidatedSingleNoraMount = function () {\r\n    return !!sourceBox();\r\n  };\r\n\r\n  window.debugPanelV4R27A8R2A6ConsolidatedSingleNoraMount = function () {\r\n    var box = sourceBox();\r\n    var panel = document.querySelector('.gdx-r11-modal-panel.is-setup');\r\n    var boxes = panel ? panel.querySelectorAll('[data-gdx-panel-r27-a8-r2=\"1\"]') : [];\r\n    var checks = {\r\n      compatibilityShimReady:true,\r\n      legacyRuntimeRetired:true,\r\n      legacyObserverNotInstalled:window.GDX_PANEL_V4_R27_A8_R2_OBSERVER_ACTIVE !== true,\r\n      sourceOwnedBoxPresent:!!box,\r\n      exactlyOneNoraBoxInSetupPanel:boxes.length === 1,\r\n      noCartMutationByThisShim:true,\r\n      noScoreMutationByThisShim:true,\r\n      noRankingMutationByThisShim:true,\r\n      noProductMutationByThisShim:true,\r\n      noPriceFormatterTouchByThisShim:true,\r\n      noSharePngQrMutationByThisShim:true\r\n    };\r\n    var failed = Object.keys(checks).filter(function(key){ return checks[key] !== true; });\r\n    return {\r\n      phase:'PANEL-V4-R27-A8-R2-COMPATIBILITY-SHIM-R29-R5-R1',\r\n      version:'PANEL-V4-R27-A8-R2-SOURCE-OWNERSHIP-COMPATIBILITY-V1',\r\n      ok:failed.length === 0,\r\n      checks:checks,\r\n      diagnostics:{sourceOwner:window.GDX_PANEL_V4_R27_A8_R2_SOURCE_OWNER,failed:failed}\r\n    };\r\n  };\r\n})();\r\n\r\n\r\n/* PANEL-V4-R27-A8-R3-REPLACEMENT-REGRESSION-SMOKE-READONLY\r\n   FAZ:\r\n   R27-A8-R3\r\n\r\n   AMA\u00C7:\r\n   R27-A8-R2 full replacement sonras\u0131 eski A6 zincirinin runtime/DOM/style olarak kalmad\u0131\u011F\u0131n\u0131,\r\n   tek NORA mount davran\u0131\u015F\u0131n\u0131n ve cart/close ak\u0131\u015F\u0131n\u0131n korundu\u011Funu readonly do\u011Frular.\r\n   Bu test NORA kutusu olu\u015Fturmaz; yaln\u0131z mevcut DOM/runtime durumunu okur.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   1) Sayfay\u0131 yenile.\r\n   2) Panel motoru a\u00E7.\r\n   3) Kurulumu G\u00F6r modal\u0131n\u0131 a\u00E7.\r\n   4) NORA kutusu g\u00F6r\u00FCn\u00FCrken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n   5) Manuel olarak scroll/tutulma olmad\u0131\u011F\u0131n\u0131 do\u011Frula.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R27A8R3ReplacementRegressionSmoke()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R27-A8-R3-REPLACEMENT-REGRESSION-SMOKE-READONLY\";\r\n  var VERSION = \"PANEL-V4-R27-A8-R3-REPLACEMENT-REGRESSION-SMOKE-NO-MUTATION\";\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(value) {\r\n    return clean(value).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && (rect.width < 4 || rect.height < 4)) return false;\r\n    return true;\r\n  }\r\n\r\n  function inViewport(el) {\r\n    if (!visible(el) || !el.getBoundingClientRect) return false;\r\n    var r = el.getBoundingClientRect();\r\n    var vw = window.innerWidth || document.documentElement.clientWidth || 0;\r\n    var vh = window.innerHeight || document.documentElement.clientHeight || 0;\r\n    return r.bottom > 0 && r.right > 0 && r.top < vh && r.left < vw && r.width > 120 && r.height > 40;\r\n  }\r\n\r\n  function all(sel, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function setupPanel() {\r\n    var panels = all(\".gdx-r11-modal-panel.is-setup\").filter(visible);\r\n    for (var i = 0; i < panels.length; i += 1) {\r\n      var t = lower(text(panels[i]).slice(0, 2800));\r\n      if (/dinamik setup/.test(t) && /gdx|panel led|250w|150w|120w|80w|60w|rgb|bi-color|bicolor/.test(t)) return panels[i];\r\n    }\r\n    return panels[0] || null;\r\n  }\r\n\r\n  function parentModal(panel) {\r\n    if (!panel) return null;\r\n    return panel.closest(\".gdx-r11-modal\") || panel.closest(\"[role='dialog']\") || panel;\r\n  }\r\n\r\n  function mainPanel() {\r\n    return document.querySelector(\"#gdxPanelV4Shell .gdx-panel-v4-panel\") || document.getElementById(\"gdxPanelV4Shell\") || null;\r\n  }\r\n\r\n  function rect(el) {\r\n    if (!el || !el.getBoundingClientRect) return null;\r\n    var r = el.getBoundingClientRect();\r\n    return {\r\n      top: Math.round(r.top),\r\n      left: Math.round(r.left),\r\n      width: Math.round(r.width),\r\n      height: Math.round(r.height),\r\n      bottom: Math.round(r.bottom),\r\n      right: Math.round(r.right)\r\n    };\r\n  }\r\n\r\n  function functionExists(name) {\r\n    try { return typeof window[name] === \"function\"; } catch (e) { return false; }\r\n  }\r\n\r\n  function flagExists(name) {\r\n    try { return !!window[name]; } catch (e) { return false; }\r\n  }\r\n\r\n  function styleExists(id) {\r\n    return !!document.getElementById(id);\r\n  }\r\n\r\n  function buttonList(scope) {\r\n    if (!scope) return [];\r\n    return all(\"button,a\", scope).filter(visible).map(function (el) {\r\n      return {\r\n        tag: el.tagName,\r\n        text: clean(el.innerText || el.textContent || el.getAttribute(\"aria-label\") || \"\"),\r\n        className: clean(el.className || \"\"),\r\n        href: el.getAttribute ? (el.getAttribute(\"href\") || \"\") : \"\"\r\n      };\r\n    });\r\n  }\r\n\r\n  function horizontalOverflowOk(el) {\r\n    if (!el) return false;\r\n    return el.scrollWidth <= el.clientWidth + 8;\r\n  }\r\n\r\n  window.debugPanelV4R27A8R3ReplacementRegressionSmoke = function () {\r\n    var panel = setupPanel();\r\n    var modal = parentModal(panel);\r\n    var mp = mainPanel();\r\n\r\n    var noraBoxes = all('[data-gdx-panel-r27-a8-r2=\"1\"]');\r\n    var noraInPanel = panel ? noraBoxes.filter(function (box) { return panel.contains(box); }) : [];\r\n    var visibleNoraInPanel = noraInPanel.filter(visible);\r\n    var viewportNoraInPanel = noraInPanel.filter(inViewport);\r\n    var visibleNoraOutsidePanel = panel ? noraBoxes.filter(function (box) { return !panel.contains(box) && visible(box); }) : noraBoxes.filter(visible);\r\n    var visibleNoraInMainPanelOutside = mp ? noraBoxes.filter(function (box) {\r\n      return mp.contains(box) && !(panel && panel.contains(box)) && visible(box);\r\n    }) : [];\r\n\r\n    var oldDataAttrs = all('[data-gdx-panel-r27-a6-r1=\"1\"],[data-gdx-panel-r27-a6-r2-scope],[data-gdx-panel-r27-a6-r3=\"1\"],[data-gdx-panel-r27-a6-r4=\"1\"],[data-gdx-panel-r27-a6-r5=\"1\"]');\r\n    var visibleOldDataAttrs = oldDataAttrs.filter(visible);\r\n\r\n    var legacyFunctions = {\r\n      r1Apply: functionExists(\"applyPanelV4R27A6R1SetupModalNoraCdnSafeUiPatch\"),\r\n      r1Debug: functionExists(\"debugPanelV4R27A6R1SetupModalNoraCdnSafeUiPatch\"),\r\n      r2Apply: functionExists(\"applyPanelV4R27A6R2StrictSetupModalScopeFix\"),\r\n      r2Debug: functionExists(\"debugPanelV4R27A6R2StrictSetupModalScopeFix\"),\r\n      r3Apply: functionExists(\"applyPanelV4R27A6R3StrictSetupModalReinjectFix\"),\r\n      r3Debug: functionExists(\"debugPanelV4R27A6R3StrictSetupModalReinjectFix\"),\r\n      r4Apply: functionExists(\"applyPanelV4R27A6R4StrictSetupModalTopMountVisibleFix\"),\r\n      r4Debug: functionExists(\"debugPanelV4R27A6R4StrictSetupModalTopMountVisibleFix\"),\r\n      r5Apply: functionExists(\"applyPanelV4R27A6R5SingleSetupModalNoraBoxDedupFix\"),\r\n      r5Debug: functionExists(\"debugPanelV4R27A6R5SingleSetupModalNoraBoxDedupFix\"),\r\n      r6Debug: functionExists(\"debugPanelV4R27A6R6VisualRegressionCartCloseSmoke\"),\r\n      r7Apply: functionExists(\"applyPanelV4R27A6R7AutoMountOnSetupModalOpenFix\"),\r\n      r7Debug: functionExists(\"debugPanelV4R27A6R7AutoMountOnSetupModalOpenFix\"),\r\n      a7Debug: functionExists(\"debugPanelV4R27A7FinalRegressionSmokeVisualApproval\")\r\n    };\r\n\r\n    var legacyFlags = {\r\n      r1: flagExists(\"GDX_PANEL_V4_R27_A6_R1_READY\"),\r\n      r2: flagExists(\"GDX_PANEL_V4_R27_A6_R2_READY\"),\r\n      r3: flagExists(\"GDX_PANEL_V4_R27_A6_R3_READY\"),\r\n      r4: flagExists(\"GDX_PANEL_V4_R27_A6_R4_READY\"),\r\n      r5: flagExists(\"GDX_PANEL_V4_R27_A6_R5_READY\"),\r\n      r7: flagExists(\"GDX_PANEL_V4_R27_A6_R7_READY\")\r\n    };\r\n\r\n    var legacyStyles = {\r\n      r1: styleExists(\"gdxPanelV4R27A6R1Style\"),\r\n      r2: styleExists(\"gdxPanelV4R27A6R2ScopeStyle\"),\r\n      r3: styleExists(\"gdxPanelV4R27A6R3Style\"),\r\n      r4: styleExists(\"gdxPanelV4R27A6R4Style\"),\r\n      r5: styleExists(\"gdxPanelV4R27A6R5Style\"),\r\n      r7: styleExists(\"gdxPanelV4R27A6R7AutoMountStyle\")\r\n    };\r\n\r\n    var buttons = buttonList(panel);\r\n    var cartButtons = buttons.filter(function (b) {\r\n      return /sepete ekle|sepete eklendi|sat\u0131n al|satin al|\u00FCr\u00FCn\u00FC incele|urunu incele/.test(lower(b.text));\r\n    });\r\n    var closeButtons = buttons.filter(function (b) {\r\n      return /kapat|\u00D7|x/.test(lower(b.text || b.className));\r\n    });\r\n\r\n    var box = visibleNoraInPanel[0] || noraInPanel[0] || null;\r\n    var panelText = lower(text(panel));\r\n\r\n    var legacyFunctionCount = Object.keys(legacyFunctions).filter(function (k) { return legacyFunctions[k]; }).length;\r\n    var legacyFlagCount = Object.keys(legacyFlags).filter(function (k) { return legacyFlags[k]; }).length;\r\n    var legacyStyleCount = Object.keys(legacyStyles).filter(function (k) { return legacyStyles[k]; }).length;\r\n\r\n    var checks = {\r\n      replacementSmokeRan: true,\r\n      productPoolReady: productPool().length === 19,\r\n\r\n      setupPanelDetected: !!panel,\r\n      setupModalDetected: !!modal,\r\n\r\n      consolidatedRuntimeReady: flagExists(\"GDX_PANEL_V4_R27_A8_R2_READY\"),\r\n      consolidatedApplyReady: functionExists(\"applyPanelV4R27A8R2A6ConsolidatedSingleNoraMount\"),\r\n      consolidatedDebugReady: functionExists(\"debugPanelV4R27A8R2A6ConsolidatedSingleNoraMount\"),\r\n      consolidatedStylePresent: styleExists(\"gdxPanelV4R27A8R2Style\"),\r\n\r\n      legacyA6FunctionsAbsent: legacyFunctionCount === 0,\r\n      legacyA6ReadyFlagsAbsent: legacyFlagCount === 0,\r\n      legacyA6StylesAbsent: legacyStyleCount === 0,\r\n      oldA6DomAttrsAbsentOrHidden: visibleOldDataAttrs.length === 0,\r\n\r\n      exactlyOneNoraBoxInSetupPanel: noraInPanel.length === 1,\r\n      noraBoxVisibleInSetupPanel: visibleNoraInPanel.length === 1,\r\n      noraBoxVisibleInViewport: viewportNoraInPanel.length === 1,\r\n      noVisibleNoraBoxOutsideSetupPanel: visibleNoraOutsidePanel.length === 0,\r\n      mainPanelHasNoVisibleNoraBox: visibleNoraInMainPanelOutside.length === 0,\r\n\r\n      noraTitleVisible: box ? /nora kurulum yorumu/.test(lower(text(box))) : false,\r\n      noraHasVisualFallback: box ? /fallback setup \u015Femas\u0131|ana \u0131\u015F\u0131k|konu \\/ \u00FCr\u00FCn|fon \\/ ayr\u0131m/.test(lower(text(box))) : false,\r\n      noraHasRoleTruth: box ? /rol do\u011Frusu/.test(lower(text(box))) : false,\r\n      noraHasHonestCaution: box ? /d\u00FCr\u00FCst uyar\u0131/.test(lower(text(box))) : false,\r\n      noraNoForbiddenClaims:\r\n        !box || !/kesinlikle en iyi|her kullan\u0131m i\u00E7in ideal|profesyonel sonu\u00E7 garantiler|rakipsiz|bunu almal\u0131s\u0131n|stokta kesin vard\u0131r|en m\u00FCkemmel|garantili sonu\u00E7|her senaryoda ana \u0131\u015F\u0131k/.test(lower(text(box))),\r\n\r\n      existingCartActionStillPresent: cartButtons.length > 0 || /sepete ekle|sepete eklendi|sat\u0131n al|satin al|\u00FCr\u00FCn\u00FC incele|urunu incele/.test(panelText),\r\n      existingCloseActionStillPresent: closeButtons.length > 0 || /kapat/.test(panelText),\r\n\r\n      noHorizontalOverflowInModal: horizontalOverflowOk(modal),\r\n      noHorizontalOverflowInSetupPanel: horizontalOverflowOk(panel),\r\n\r\n      noCartMutationByThisAudit: true,\r\n      noDomMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.setupPanelDetected &&\r\n      checks.setupModalDetected &&\r\n      checks.consolidatedRuntimeReady &&\r\n      checks.consolidatedApplyReady &&\r\n      checks.consolidatedDebugReady &&\r\n      checks.consolidatedStylePresent &&\r\n      checks.legacyA6FunctionsAbsent &&\r\n      checks.legacyA6ReadyFlagsAbsent &&\r\n      checks.legacyA6StylesAbsent &&\r\n      checks.oldA6DomAttrsAbsentOrHidden &&\r\n      checks.exactlyOneNoraBoxInSetupPanel &&\r\n      checks.noraBoxVisibleInSetupPanel &&\r\n      checks.noVisibleNoraBoxOutsideSetupPanel &&\r\n      checks.mainPanelHasNoVisibleNoraBox &&\r\n      checks.noraTitleVisible &&\r\n      checks.noraHasVisualFallback &&\r\n      checks.noraHasRoleTruth &&\r\n      checks.noraHasHonestCaution &&\r\n      checks.noraNoForbiddenClaims &&\r\n      checks.existingCartActionStillPresent &&\r\n      checks.existingCloseActionStillPresent &&\r\n      checks.noHorizontalOverflowInModal &&\r\n      checks.noHorizontalOverflowInSetupPanel;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        productPoolCount: productPool().length,\r\n        noraBoxTotalCount: noraBoxes.length,\r\n        noraInSetupPanelCount: noraInPanel.length,\r\n        visibleNoraInSetupPanelCount: visibleNoraInPanel.length,\r\n        viewportVisibleNoraInSetupPanelCount: viewportNoraInPanel.length,\r\n        visibleNoraOutsideSetupPanelCount: visibleNoraOutsidePanel.length,\r\n        visibleMainPanelOutsideNoraCount: visibleNoraInMainPanelOutside.length,\r\n        oldA6DomAttrCount: oldDataAttrs.length,\r\n        visibleOldA6DomAttrCount: visibleOldDataAttrs.length,\r\n        legacyFunctions: legacyFunctions,\r\n        legacyFunctionCount: legacyFunctionCount,\r\n        legacyFlags: legacyFlags,\r\n        legacyFlagCount: legacyFlagCount,\r\n        legacyStyles: legacyStyles,\r\n        legacyStyleCount: legacyStyleCount,\r\n        cartButtonCount: cartButtons.length,\r\n        closeButtonCount: closeButtons.length,\r\n        modalRect: rect(modal),\r\n        setupPanelRect: rect(panel),\r\n        noraRect: rect(box),\r\n        noraTextSample: box ? text(box).slice(0, 900) : \"\",\r\n        setupPanelTextSample: panel ? text(panel).slice(0, 900) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"Replacement regression PASS. Eski A6 runtime/style/function zinciri yok; tek konsolide NORA mount \u00E7al\u0131\u015F\u0131yor.\"\r\n          : \"Replacement regression HOLD. diagnostics i\u00E7inde legacy veya g\u00F6r\u00FCn\u00FCrl\u00FCk alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R27-A8 FINAL SEAL / R27 FINAL SEAL\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R27-A8-R3-REPLACEMENT-REGRESSION-SMOKE-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R28-R0-CURRENT-SELECTION-ARCHITECTURE-READINESS-AUDIT-READONLY\r\n   FAZ:\r\n   R28-R0\r\n\r\n   AMA\u00C7:\r\n   R28 8 ana ama\u00E7 + 24 alt ama\u00E7 canl\u0131 UI entegrasyonu \u00F6ncesi mevcut se\u00E7im sistemini,\r\n   R27 kilitli library'leri ve ge\u00E7i\u015F gereksinimlerini readonly analiz eder.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R0CurrentSelectionArchitectureReadinessAudit()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R0-CURRENT-SELECTION-ARCHITECTURE-READINESS-AUDIT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R28-R0-CURRENT-SELECTION-ARCHITECTURE-READINESS-AUDIT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function all(sel, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && (rect.width < 4 || rect.height < 4)) return false;\r\n    return true;\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function callSafe(fnName) {\r\n    var before = elementCount();\r\n    var res = null;\r\n    var ok = false;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (typeof window[fnName] === \"function\") {\r\n        res = window[fnName]();\r\n        ok = !!(res && res.ok === true);\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (e) {\r\n      error = e && e.message ? e.message : String(e);\r\n    }\r\n\r\n    var after = elementCount();\r\n    return {\r\n      exists: typeof window[fnName] === \"function\",\r\n      ok: ok,\r\n      elementDelta: after - before,\r\n      error: error,\r\n      result: res\r\n    };\r\n  }\r\n\r\n  function extractScenarioLock(a2c) {\r\n    return a2c && a2c.result && a2c.result.diagnostics && a2c.result.diagnostics.lockCandidate\r\n      ? a2c.result.diagnostics.lockCandidate\r\n      : null;\r\n  }\r\n\r\n  function countPurposeScenarioRows(lock) {\r\n    var rows = lock && Array.isArray(lock.scenarios) ? lock.scenarios : [];\r\n    var purposes = {};\r\n    var subPurposes = {};\r\n    var scenarioTypes = {};\r\n\r\n    rows.forEach(function (row) {\r\n      if (row.purposeKey) purposes[row.purposeKey] = (purposes[row.purposeKey] || 0) + 1;\r\n      if (row.purposeKey && row.subPurposeKey) subPurposes[row.purposeKey + \"::\" + row.subPurposeKey] = (subPurposes[row.purposeKey + \"::\" + row.subPurposeKey] || 0) + 1;\r\n      if (row.scenarioType) scenarioTypes[row.scenarioType] = (scenarioTypes[row.scenarioType] || 0) + 1;\r\n    });\r\n\r\n    return {\r\n      scenarioCount: rows.length,\r\n      purposeCount: Object.keys(purposes).length,\r\n      subPurposeCount: Object.keys(subPurposes).length,\r\n      purposeScenarioCounts: purposes,\r\n      subPurposeScenarioCounts: subPurposes,\r\n      scenarioTypeCounts: scenarioTypes\r\n    };\r\n  }\r\n\r\n  function currentSelectionButtons() {\r\n    var root = document.getElementById(\"gdxPanelV4Shell\") || document.getElementById(\"gdx-panel-led-v4-root\") || document;\r\n    var candidates = all(\"button,a,[role='button']\", root).filter(visible).map(function (el) {\r\n      var t = text(el);\r\n      var cls = clean(el.className || \"\");\r\n      var attrs = [\r\n        el.getAttribute ? el.getAttribute(\"data-purpose\") : \"\",\r\n        el.getAttribute ? el.getAttribute(\"data-usecase\") : \"\",\r\n        el.getAttribute ? el.getAttribute(\"data-gdx-purpose\") : \"\",\r\n        el.getAttribute ? el.getAttribute(\"data-gdx-usecase\") : \"\"\r\n      ].map(clean).filter(Boolean);\r\n\r\n      return {\r\n        text: t,\r\n        className: cls,\r\n        attrs: attrs,\r\n        score: (\r\n          /\u00FCr\u00FCn|urun|reels|youtube|r\u00F6portaj|roportaj|klinik|dental|rgb|st\u00FCdyo|studyo|mobil|ba\u015Flang\u0131\u00E7|baslangic|b\u00FCt\u00E7e|butce|kreatif|vlog|yay\u0131n|yayin|model/i.test(t) ? 2 : 0\r\n        ) + (\r\n          /purpose|usecase|scenario|ama\u00E7|amac/i.test(cls + \" \" + attrs.join(\" \")) ? 3 : 0\r\n        )\r\n      };\r\n    });\r\n\r\n    var likely = candidates.filter(function (x) {\r\n      return x.score >= 2 && x.text.length >= 2 && x.text.length <= 80;\r\n    });\r\n\r\n    var unique = {};\r\n    likely.forEach(function (x) {\r\n      unique[lower(x.text)] = x;\r\n    });\r\n\r\n    return {\r\n      visibleButtonCount: candidates.length,\r\n      likelyPurposeButtonCount: Object.keys(unique).length,\r\n      likelyPurposeButtons: Object.keys(unique).map(function (k) { return unique[k]; }).slice(0, 80)\r\n    };\r\n  }\r\n\r\n  function currentSelectedSignals() {\r\n    var body = lower(document.body ? document.body.innerText || \"\" : \"\");\r\n    var selectedHints = [];\r\n\r\n    [\r\n      \"i\u00E7erik\", \"icerik\", \"y\u00FCz\", \"yuz\", \"ana \u0131\u015F\u0131k\", \"ana isik\", \"rgb\", \"kreatif\",\r\n      \"\u00FCr\u00FCn\", \"urun\", \"klinik\", \"dental\", \"r\u00F6portaj\", \"roportaj\", \"mobil\", \"st\u00FCdyo\", \"studyo\"\r\n    ].forEach(function (kw) {\r\n      if (body.indexOf(kw) > -1) selectedHints.push(kw);\r\n    });\r\n\r\n    return {\r\n      selectedHints: selectedHints.slice(0, 40),\r\n      hasSetupModalLanguage: /dinamik setup|nora kurulum yorumu/.test(body),\r\n      hasPurposeLanguage: /kullan\u0131m amac\u0131|kullanim amaci|ama\u00E7|amac|senaryo|alt ama\u00E7|alt amac/.test(body)\r\n    };\r\n  }\r\n\r\n  function r27A8Signals() {\r\n    return {\r\n      consolidatedReady: !!window.GDX_PANEL_V4_R27_A8_R2_READY,\r\n      consolidatedApplyReady: typeof window.applyPanelV4R27A8R2A6ConsolidatedSingleNoraMount === \"function\",\r\n      consolidatedDebugReady: typeof window.debugPanelV4R27A8R2A6ConsolidatedSingleNoraMount === \"function\",\r\n      oldA6FunctionLeak:\r\n        typeof window.debugPanelV4R27A6R1SetupModalNoraCdnSafeUiPatch === \"function\" ||\r\n        typeof window.debugPanelV4R27A6R2StrictSetupModalScopeFix === \"function\" ||\r\n        typeof window.debugPanelV4R27A6R3StrictSetupModalReinjectFix === \"function\" ||\r\n        typeof window.debugPanelV4R27A6R4StrictSetupModalTopMountVisibleFix === \"function\" ||\r\n        typeof window.debugPanelV4R27A6R5SingleSetupModalNoraBoxDedupFix === \"function\"\r\n    };\r\n  }\r\n\r\n  function targetPurposeModel() {\r\n    return [\r\n      {\r\n        purposeKey: \"product_ecommerce\",\r\n        title: \"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\r\n        subPurposes: [\"small_product_tabletop\", \"large_product_model\", \"marketplace_catalog\"]\r\n      },\r\n      {\r\n        purposeKey: \"youtube_reels_social\",\r\n        title: \"YouTube / Reels / Sosyal Medya\",\r\n        subPurposes: [\"single_person_video\", \"reels_tiktok_short\", \"live_stream_talk\"]\r\n      },\r\n      {\r\n        purposeKey: \"interview_talking_head\",\r\n        title: \"R\u00F6portaj / Konu\u015Fan Kafa\",\r\n        subPurposes: [\"single_interview\", \"two_person_interview\", \"corporate_training\"]\r\n      },\r\n      {\r\n        purposeKey: \"clinic_aesthetic_dental\",\r\n        title: \"Klinik / Estetik / Dental\",\r\n        subPurposes: [\"skin_face_shoot\", \"dental_support\", \"clinic_social_content\"]\r\n      },\r\n      {\r\n        purposeKey: \"rgb_creative_video\",\r\n        title: \"RGB / Kreatif Video\",\r\n        subPurposes: [\"background_color_effect\", \"music_clip_creative_scene\", \"product_color_separation\"]\r\n      },\r\n      {\r\n        purposeKey: \"studio_professional\",\r\n        title: \"St\u00FCdyo / Profesyonel \u00C7ekim\",\r\n        subPurposes: [\"model_shoot\", \"ad_campaign_visual\", \"fixed_studio_setup\"]\r\n      },\r\n      {\r\n        purposeKey: \"mobile_outdoor\",\r\n        title: \"Mobil / D\u0131\u015F Mekan\",\r\n        subPurposes: [\"battery_shoot\", \"portable_team\", \"fast_location_setup\"]\r\n      },\r\n      {\r\n        purposeKey: \"starter_budget_practical\",\r\n        title: \"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik Kurulum\",\r\n        subPurposes: [\"first_light_choice\", \"budget_setup\", \"compact_solution\"]\r\n      }\r\n    ];\r\n  }\r\n\r\n  window.debugPanelV4R28R0CurrentSelectionArchitectureReadinessAudit = function () {\r\n    var before = elementCount();\r\n\r\n    var a2c = callSafe(\"debugPanelV4R27A2CSetupScenarioLibraryLockVerify\");\r\n    var a3c = callSafe(\"debugPanelV4R27A3CNoraVoiceLibraryLockVerify\");\r\n    var a4c = callSafe(\"debugPanelV4R27A4CCdnVisualManifestLockVerify\");\r\n    var a8r2 = callSafe(\"debugPanelV4R27A8R2A6ConsolidatedSingleNoraMount\");\r\n\r\n    var scenarioLock = extractScenarioLock(a2c);\r\n    var scenarioCounts = countPurposeScenarioRows(scenarioLock);\r\n    var selectionButtons = currentSelectionButtons();\r\n    var selectedSignals = currentSelectedSignals();\r\n    var target = targetPurposeModel();\r\n    var r27Signals = r27A8Signals();\r\n\r\n    var after = elementCount();\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n      productPoolReady: productPool().length === 19,\r\n\r\n      r27SetupScenarioLockReadable: !!scenarioLock,\r\n      r27SetupScenarioCount72: scenarioCounts.scenarioCount === 72,\r\n      r27PurposeCount8: scenarioCounts.purposeCount === 8,\r\n      r27SubPurposeCount24: scenarioCounts.subPurposeCount === 24,\r\n\r\n      r27NoraLockOk: a3c.ok === true,\r\n      r27VisualManifestLockOk: a4c.ok === true,\r\n      r27A8ConsolidatedNoraOk: a8r2.ok === true || r27Signals.consolidatedReady === true,\r\n      oldA6RuntimeLeakAbsent: !r27Signals.oldA6FunctionLeak,\r\n\r\n      currentSelectionButtonsReadable: selectionButtons.visibleButtonCount > 0,\r\n      currentLikelyPurposeButtonsReadable: selectionButtons.likelyPurposeButtonCount > 0,\r\n      targetPurposeModelReady: target.length === 8 && target.reduce(function (sum, p) { return sum + p.subPurposes.length; }, 0) === 24,\r\n\r\n      needsLive8x24UiPatch: true,\r\n      needsResolverBridge: true,\r\n      needsSharePngDeepLinkParityAuditLater: true,\r\n\r\n      noDomMutationByThisAudit: after === before,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.r27SetupScenarioLockReadable &&\r\n      checks.r27SetupScenarioCount72 &&\r\n      checks.r27PurposeCount8 &&\r\n      checks.r27SubPurposeCount24 &&\r\n      checks.r27NoraLockOk &&\r\n      checks.r27VisualManifestLockOk &&\r\n      checks.r27A8ConsolidatedNoraOk &&\r\n      checks.oldA6RuntimeLeakAbsent &&\r\n      checks.targetPurposeModelReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: productPool().length,\r\n        r27FunctionCalls: {\r\n          a2c: { exists: a2c.exists, ok: a2c.ok, elementDelta: a2c.elementDelta, error: a2c.error },\r\n          a3c: { exists: a3c.exists, ok: a3c.ok, elementDelta: a3c.elementDelta, error: a3c.error },\r\n          a4c: { exists: a4c.exists, ok: a4c.ok, elementDelta: a4c.elementDelta, error: a4c.error },\r\n          a8r2: { exists: a8r2.exists, ok: a8r2.ok, elementDelta: a8r2.elementDelta, error: a8r2.error }\r\n        },\r\n        scenarioCounts: scenarioCounts,\r\n        currentSelectionButtons: selectionButtons,\r\n        selectedSignals: selectedSignals,\r\n        r27A8Signals: r27Signals,\r\n        targetPurposeModel: target,\r\n        transitionDecision: {\r\n          currentUiNeeds8x24LiveSelection: true,\r\n          nextPhase: \"R28-R1 8x24 Selection UI Blueprint\",\r\n          implementationStyle: \"source-level or minimal safe patch after blueprint, not blind append\"\r\n        }\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R0 PASS. R27 kilitli library'ler ve A8 konsolide NORA mount haz\u0131r; 8x24 canl\u0131 selection blueprint'e ge\u00E7ilebilir.\"\r\n          : \"R28-R0 HOLD. Eksik R27 lock veya runtime s\u0131z\u0131nt\u0131s\u0131 var; diagnostics incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R1 8x24 Selection UI Blueprint\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R0-CURRENT-SELECTION-ARCHITECTURE-READINESS-AUDIT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R28-R1-8X24-SELECTION-UI-BLUEPRINT-READONLY\r\n   FAZ:\r\n   R28-R1\r\n\r\n   AMA\u00C7:\r\n   8 ana ama\u00E7 + 24 alt ama\u00E7 canl\u0131 UI i\u00E7in blueprint \u00FCretir.\r\n   R27 Setup Scenario Library ile 1:1 uyumu do\u011Frular.\r\n   Bu dosya DOM yazmaz, UI patch de\u011Fildir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R1SelectionUiBlueprint()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R1-8X24-SELECTION-UI-BLUEPRINT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R28-R1-8X24-SELECTION-UI-BLUEPRINT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function all(sel, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && (rect.width < 4 || rect.height < 4)) return false;\r\n    return true;\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function callSafe(fnName) {\r\n    var before = elementCount();\r\n    var res = null;\r\n    var ok = false;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (typeof window[fnName] === \"function\") {\r\n        res = window[fnName]();\r\n        ok = !!(res && res.ok === true);\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (e) {\r\n      error = e && e.message ? e.message : String(e);\r\n    }\r\n\r\n    var after = elementCount();\r\n    return {\r\n      exists: typeof window[fnName] === \"function\",\r\n      ok: ok,\r\n      elementDelta: after - before,\r\n      error: error,\r\n      result: res\r\n    };\r\n  }\r\n\r\n  function scenarioLockFromA2C() {\r\n    var res = callSafe(\"debugPanelV4R27A2CSetupScenarioLibraryLockVerify\");\r\n    var lock = res && res.result && res.result.diagnostics && res.result.diagnostics.lockCandidate\r\n      ? res.result.diagnostics.lockCandidate\r\n      : null;\r\n    return { call: res, lock: lock };\r\n  }\r\n\r\n  function targetPurposeModel() {\r\n    return [\r\n      {\r\n        purposeKey: \"product_ecommerce\",\r\n        title: \"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\r\n        shortTitle: \"\u00DCr\u00FCn / E-Ticaret\",\r\n        icon: \"product\",\r\n        description: \"\u00DCr\u00FCn, katalog, pazar yeri ve model \u00FCzerinde sat\u0131\u015F g\u00F6rselleri i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"small_product_tabletop\", title: \"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn / masa\u00FCst\u00FC \u00E7ekim\", shortTitle: \"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn\", intentHint: \"Masa\u00FCst\u00FC \u00FCr\u00FCn, tak\u0131, aksesuar, k\u00FC\u00E7\u00FCk obje\", priorityRole: \"product_top_light\" },\r\n          { subPurposeKey: \"large_product_model\", title: \"B\u00FCy\u00FCk \u00FCr\u00FCn / model \u00FCzerinde \u00E7ekim\", shortTitle: \"B\u00FCy\u00FCk \u00FCr\u00FCn / model\", intentHint: \"\u00C7anta, k\u0131yafet, b\u00FCy\u00FCk \u00FCr\u00FCn veya model \u00FCzerinde \u00FCr\u00FCn\", priorityRole: \"key_light\" },\r\n          { subPurposeKey: \"marketplace_catalog\", title: \"Pazar yeri / katalog \u00E7ekimi\", shortTitle: \"Katalog\", intentHint: \"Trendyol, Hepsiburada, Amazon, beyaz fon katalog\", priorityRole: \"soft_front_light\" }\r\n        ]\r\n      },\r\n      {\r\n        purposeKey: \"youtube_reels_social\",\r\n        title: \"YouTube / Reels / Sosyal Medya\",\r\n        shortTitle: \"YouTube / Reels\",\r\n        icon: \"content\",\r\n        description: \"Tek ki\u015Fi i\u00E7erik, k\u0131sa video, yay\u0131n ve konu\u015Fmal\u0131 i\u00E7erikler i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"single_person_video\", title: \"Tek ki\u015Fi video\", shortTitle: \"Tek ki\u015Fi video\", intentHint: \"YouTube, anlat\u0131m, e\u011Fitim, podcast, webinar\", priorityRole: \"key_light\" },\r\n          { subPurposeKey: \"reels_tiktok_short\", title: \"Reels / TikTok k\u0131sa i\u00E7erik\", shortTitle: \"Reels / TikTok\", intentHint: \"K\u0131sa dikey video, h\u0131zl\u0131 sosyal medya \u00FCretimi\", priorityRole: \"portable_interview_light\" },\r\n          { subPurposeKey: \"live_stream_talk\", title: \"Yay\u0131n / canl\u0131 anlat\u0131m\", shortTitle: \"Canl\u0131 yay\u0131n\", intentHint: \"Canl\u0131 yay\u0131n, masa ba\u015F\u0131 anlat\u0131m, streaming\", priorityRole: \"soft_front_light\" }\r\n        ]\r\n      },\r\n      {\r\n        purposeKey: \"interview_talking_head\",\r\n        title: \"R\u00F6portaj / Konu\u015Fan Kafa\",\r\n        shortTitle: \"R\u00F6portaj\",\r\n        icon: \"interview\",\r\n        description: \"Tek ki\u015Fi, iki ki\u015Fi ve kurumsal konu\u015Fmal\u0131 video d\u00FCzenleri i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"single_interview\", title: \"Tek ki\u015Fi r\u00F6portaj\", shortTitle: \"Tek ki\u015Fi\", intentHint: \"Bir ki\u015Fi konu\u015Fma, r\u00F6portaj, kurumsal tan\u0131t\u0131m\", priorityRole: \"interview_key\" },\r\n          { subPurposeKey: \"two_person_interview\", title: \"\u0130ki ki\u015Fi r\u00F6portaj\", shortTitle: \"\u0130ki ki\u015Fi\", intentHint: \"Kar\u015F\u0131l\u0131kl\u0131 r\u00F6portaj, iki ki\u015Fi konu\u015Fma\", priorityRole: \"key_light\" },\r\n          { subPurposeKey: \"corporate_training\", title: \"Kurumsal video / e\u011Fitim\", shortTitle: \"Kurumsal e\u011Fitim\", intentHint: \"Kurumsal e\u011Fitim, ders, a\u00E7\u0131klama videosu\", priorityRole: \"soft_front_light\" }\r\n        ]\r\n      },\r\n      {\r\n        purposeKey: \"clinic_aesthetic_dental\",\r\n        title: \"Klinik / Estetik / Dental\",\r\n        shortTitle: \"Klinik / Dental\",\r\n        icon: \"clinic\",\r\n        description: \"Cilt, y\u00FCz, dental destek ve klinik sosyal medya i\u00E7erikleri i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"skin_face_shoot\", title: \"Cilt / y\u00FCz \u00E7ekimi\", shortTitle: \"Cilt / y\u00FCz\", intentHint: \"Cilt, y\u00FCz, estetik \u00F6ncesi/sonras\u0131 i\u00E7erik\", priorityRole: \"clinical_soft_front\" },\r\n          { subPurposeKey: \"dental_support\", title: \"Dental / a\u011F\u0131z i\u00E7i destek\", shortTitle: \"Dental destek\", intentHint: \"Dental klinik, a\u011F\u0131z i\u00E7i destek, di\u015F g\u00F6rseli\", priorityRole: \"clinical_soft_front\" },\r\n          { subPurposeKey: \"clinic_social_content\", title: \"Klinik sosyal medya i\u00E7erikleri\", shortTitle: \"Klinik sosyal\", intentHint: \"Klinik reels, uzman anlat\u0131m\u0131, sosyal medya videosu\", priorityRole: \"soft_front_light\" }\r\n        ]\r\n      },\r\n      {\r\n        purposeKey: \"rgb_creative_video\",\r\n        title: \"RGB / Kreatif Video\",\r\n        shortTitle: \"RGB Kreatif\",\r\n        icon: \"rgb\",\r\n        description: \"Renkli arka plan, atmosfer, klip ve kreatif ayr\u0131m \u0131\u015F\u0131klar\u0131 i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"background_color_effect\", title: \"Arka plan renk efekti\", shortTitle: \"Arka plan renk\", intentHint: \"Fon rengi, atmosfer, RGB arka plan\", priorityRole: \"rgb_background_wash\" },\r\n          { subPurposeKey: \"music_clip_creative_scene\", title: \"M\u00FCzik / klip / kreatif sahne\", shortTitle: \"Klip / kreatif\", intentHint: \"Klip, m\u00FCzik videosu, kreatif sahne\", priorityRole: \"rgb_accent\" },\r\n          { subPurposeKey: \"product_color_separation\", title: \"\u00DCr\u00FCn arkas\u0131nda renk ayr\u0131m\u0131\", shortTitle: \"\u00DCr\u00FCn renk ayr\u0131m\u0131\", intentHint: \"\u00DCr\u00FCn\u00FC fondan ay\u0131ran renk \u00E7izgisi veya kenar \u0131\u015F\u0131\u011F\u0131\", priorityRole: \"rim_or_color_separation\" }\r\n        ]\r\n      },\r\n      {\r\n        purposeKey: \"studio_professional\",\r\n        title: \"St\u00FCdyo / Profesyonel \u00C7ekim\",\r\n        shortTitle: \"St\u00FCdyo\",\r\n        icon: \"studio\",\r\n        description: \"Model, kampanya ve sabit st\u00FCdyo \u0131\u015F\u0131k d\u00FCzenleri i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"model_shoot\", title: \"Model \u00E7ekimi\", shortTitle: \"Model\", intentHint: \"Model, moda, portre, geni\u015F setup\", priorityRole: \"key_light\" },\r\n          { subPurposeKey: \"ad_campaign_visual\", title: \"Reklam / kampanya g\u00F6rseli\", shortTitle: \"Kampanya\", intentHint: \"Reklam, kampanya, profesyonel g\u00F6rsel \u00FCretim\", priorityRole: \"key_light\" },\r\n          { subPurposeKey: \"fixed_studio_setup\", title: \"Sabit st\u00FCdyo kurulumu\", shortTitle: \"Sabit st\u00FCdyo\", intentHint: \"S\u00FCrekli kullan\u0131lan st\u00FCdyo \u0131\u015F\u0131k d\u00FCzeni\", priorityRole: \"fill_light\" }\r\n        ]\r\n      },\r\n      {\r\n        purposeKey: \"mobile_outdoor\",\r\n        title: \"Mobil / D\u0131\u015F Mekan\",\r\n        shortTitle: \"Mobil\",\r\n        icon: \"mobile\",\r\n        description: \"Ta\u015F\u0131nabilir ekip, d\u0131\u015F mekan ve h\u0131zl\u0131 kurulum gerektiren \u00E7ekimler i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"battery_shoot\", title: \"Bataryal\u0131 \u00E7ekim\", shortTitle: \"Bataryal\u0131\", intentHint: \"Prizsiz ortam, bataryal\u0131 kullan\u0131m ihtiyac\u0131\", priorityRole: \"portable_interview_light\" },\r\n          { subPurposeKey: \"portable_team\", title: \"Ta\u015F\u0131nabilir ekip\", shortTitle: \"Ta\u015F\u0131nabilir\", intentHint: \"Az ekip, h\u0131zl\u0131 ta\u015F\u0131ma, sahada kullan\u0131m\", priorityRole: \"close_range_support\" },\r\n          { subPurposeKey: \"fast_location_setup\", title: \"Mekan i\u00E7i h\u0131zl\u0131 kurulum\", shortTitle: \"H\u0131zl\u0131 kurulum\", intentHint: \"Mekan i\u00E7inde h\u0131zl\u0131 kurulup toplanan \u00E7ekimler\", priorityRole: \"support_or_accent_light\" }\r\n        ]\r\n      },\r\n      {\r\n        purposeKey: \"starter_budget_practical\",\r\n        title: \"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik Kurulum\",\r\n        shortTitle: \"Ba\u015Flang\u0131\u00E7\",\r\n        icon: \"starter\",\r\n        description: \"\u0130lk \u0131\u015F\u0131k, uygun b\u00FCt\u00E7e ve az yer kaplayan pratik \u00E7\u00F6z\u00FCmler i\u00E7in.\",\r\n        subPurposes: [\r\n          { subPurposeKey: \"first_light_choice\", title: \"\u0130lk \u0131\u015F\u0131k se\u00E7imi\", shortTitle: \"\u0130lk \u0131\u015F\u0131k\", intentHint: \"\u0130lk panel LED, temel setup, ba\u015Flang\u0131\u00E7\", priorityRole: \"soft_front_light\" },\r\n          { subPurposeKey: \"budget_setup\", title: \"Uygun fiyatl\u0131 setup\", shortTitle: \"B\u00FCt\u00E7e setup\", intentHint: \"Fiyat/performans, ekonomik \u00E7\u00F6z\u00FCm\", priorityRole: \"support_or_accent_light\" },\r\n          { subPurposeKey: \"compact_solution\", title: \"Az yer kaplayan \u00E7\u00F6z\u00FCm\", shortTitle: \"Kompakt \u00E7\u00F6z\u00FCm\", intentHint: \"K\u00FC\u00E7\u00FCk oda, dar masa, az yer kaplayan kurulum\", priorityRole: \"close_range_support\" }\r\n        ]\r\n      }\r\n    ];\r\n  }\r\n\r\n  function flattenModel(model) {\r\n    var out = [];\r\n    model.forEach(function (purpose, pIndex) {\r\n      purpose.subPurposes.forEach(function (sub, sIndex) {\r\n        out.push({\r\n          purposeKey: purpose.purposeKey,\r\n          purposeTitle: purpose.title,\r\n          purposeShortTitle: purpose.shortTitle,\r\n          purposeIcon: purpose.icon,\r\n          purposeIndex: pIndex + 1,\r\n          subPurposeKey: sub.subPurposeKey,\r\n          subPurposeTitle: sub.title,\r\n          subPurposeShortTitle: sub.shortTitle,\r\n          subPurposeIndex: sIndex + 1,\r\n          intentHint: sub.intentHint,\r\n          priorityRole: sub.priorityRole,\r\n          selectionKey: purpose.purposeKey + \"::\" + sub.subPurposeKey\r\n        });\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function scenarioIndex(lock) {\r\n    var rows = lock && Array.isArray(lock.scenarios) ? lock.scenarios : [];\r\n    var index = {};\r\n    rows.forEach(function (row) {\r\n      var key = row.purposeKey + \"::\" + row.subPurposeKey;\r\n      if (!index[key]) index[key] = [];\r\n      index[key].push(row);\r\n    });\r\n    return index;\r\n  }\r\n\r\n  function validateBlueprint(model, flat, scenarioIdx) {\r\n    var missingScenarioGroups = [];\r\n    var badScenarioCounts = [];\r\n    var duplicateKeys = [];\r\n    var keys = {};\r\n    var roleMissing = [];\r\n    var emptyTitles = [];\r\n\r\n    flat.forEach(function (row) {\r\n      if (keys[row.selectionKey]) duplicateKeys.push(row.selectionKey);\r\n      keys[row.selectionKey] = true;\r\n\r\n      if (!row.purposeTitle || !row.subPurposeTitle || !row.intentHint) emptyTitles.push(row.selectionKey);\r\n      if (!row.priorityRole) roleMissing.push(row.selectionKey);\r\n\r\n      var scenarios = scenarioIdx[row.selectionKey] || [];\r\n      if (!scenarios.length) missingScenarioGroups.push(row.selectionKey);\r\n      if (scenarios.length !== 3) badScenarioCounts.push({ selectionKey: row.selectionKey, count: scenarios.length });\r\n    });\r\n\r\n    return {\r\n      purposeCountOk: model.length === 8,\r\n      subPurposeCountOk: flat.length === 24,\r\n      selectionKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      allHaveTitlesAndHints: emptyTitles.length === 0,\r\n      emptyTitles: emptyTitles,\r\n      allHavePriorityRole: roleMissing.length === 0,\r\n      roleMissing: roleMissing,\r\n      everySelectionHasScenarioGroup: missingScenarioGroups.length === 0,\r\n      missingScenarioGroups: missingScenarioGroups,\r\n      everySelectionHasThreeScenarioTypes: badScenarioCounts.length === 0,\r\n      badScenarioCounts: badScenarioCounts\r\n    };\r\n  }\r\n\r\n  function buildBlueprint(model, flat, scenarioIdx) {\r\n    return {\r\n      libraryName: \"GDX_PANEL_LED_V4_8X24_SELECTION_UI_BLUEPRINT\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R28-R1-8X24-SELECTION-UI-BLUEPRINT-CANDIDATE\",\r\n      purposeCount: model.length,\r\n      subPurposeCount: flat.length,\r\n      uiRules: {\r\n        desktop: {\r\n          layout: \"8 main purpose cards + selected purpose sub-purpose dock\",\r\n          behavior: \"click main purpose -> show 3 sub purposes; click sub purpose -> set active selection\"\r\n        },\r\n        mobile: {\r\n          layout: \"compact horizontal/accordion main purpose selector + sub purpose chips\",\r\n          behavior: \"tap main purpose -> reveal 3 sub purpose chips\"\r\n        },\r\n        noTouch: [\r\n          \"score math\",\r\n          \"ranking math\",\r\n          \"product pool\",\r\n          \"price formatter\",\r\n          \"cart logic\",\r\n          \"share\",\r\n          \"PNG\",\r\n          \"QR\"\r\n        ]\r\n      },\r\n      resolverRules: {\r\n        activeStateKeys: [\"activePurposeKey\", \"activeSubPurposeKey\", \"activeSelectionKey\"],\r\n        selectionKeyFormat: \"purposeKey::subPurposeKey\",\r\n        scenarioLookup: \"GDX_PANEL_LED_V4_SETUP_SCENARIOS by purposeKey + subPurposeKey\",\r\n        noraLookup: \"GDX_PANEL_LED_V4_NORA_LIBRARY by scenarioKey\",\r\n        visualLookup: \"GDX_PANEL_LED_V4_SETUP_VISUALS by scenarioKey\",\r\n        recommenderBridge: \"next phase; do not alter ranking in R28-R1\"\r\n      },\r\n      mainPurposes: model,\r\n      flatSelections: flat.map(function (row) {\r\n        var scenarios = scenarioIdx[row.selectionKey] || [];\r\n        return {\r\n          purposeKey: row.purposeKey,\r\n          subPurposeKey: row.subPurposeKey,\r\n          selectionKey: row.selectionKey,\r\n          purposeTitle: row.purposeTitle,\r\n          subPurposeTitle: row.subPurposeTitle,\r\n          intentHint: row.intentHint,\r\n          priorityRole: row.priorityRole,\r\n          linkedScenarioCount: scenarios.length,\r\n          linkedScenarioKeys: scenarios.map(function (s) { return s.scenarioKey; }),\r\n          linkedScenarioTypes: scenarios.map(function (s) { return s.scenarioType; })\r\n        };\r\n      })\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R28R1SelectionUiBlueprint = function () {\r\n    var before = elementCount();\r\n    var scenarioResult = scenarioLockFromA2C();\r\n    var lock = scenarioResult.lock;\r\n    var idx = scenarioIndex(lock);\r\n\r\n    var model = targetPurposeModel();\r\n    var flat = flattenModel(model);\r\n    var validation = validateBlueprint(model, flat, idx);\r\n    var blueprint = buildBlueprint(model, flat, idx);\r\n\r\n    var after = elementCount();\r\n\r\n    var checks = {\r\n      blueprintGenerated: !!blueprint,\r\n      productPoolReady: productPool().length === 19,\r\n      r27ScenarioLockReadable: !!lock,\r\n      r27ScenarioCallOk: scenarioResult.call.ok === true,\r\n      purposeCountOk: validation.purposeCountOk,\r\n      subPurposeCountOk: validation.subPurposeCountOk,\r\n      selectionKeysUnique: validation.selectionKeysUnique,\r\n      allHaveTitlesAndHints: validation.allHaveTitlesAndHints,\r\n      allHavePriorityRole: validation.allHavePriorityRole,\r\n      everySelectionHasScenarioGroup: validation.everySelectionHasScenarioGroup,\r\n      everySelectionHasThreeScenarioTypes: validation.everySelectionHasThreeScenarioTypes,\r\n      uiRulesPresent: !!(blueprint.uiRules && blueprint.uiRules.desktop && blueprint.uiRules.mobile),\r\n      resolverRulesPresent: !!(blueprint.resolverRules && blueprint.resolverRules.activeStateKeys),\r\n      copyReady: !!blueprint && flat.length === 24,\r\n\r\n      noDomMutationByThisAudit: after === before,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.blueprintGenerated &&\r\n      checks.productPoolReady &&\r\n      checks.r27ScenarioLockReadable &&\r\n      checks.r27ScenarioCallOk &&\r\n      checks.purposeCountOk &&\r\n      checks.subPurposeCountOk &&\r\n      checks.selectionKeysUnique &&\r\n      checks.allHaveTitlesAndHints &&\r\n      checks.allHavePriorityRole &&\r\n      checks.everySelectionHasScenarioGroup &&\r\n      checks.everySelectionHasThreeScenarioTypes &&\r\n      checks.uiRulesPresent &&\r\n      checks.resolverRulesPresent &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: productPool().length,\r\n        scenarioCall: {\r\n          exists: scenarioResult.call.exists,\r\n          ok: scenarioResult.call.ok,\r\n          elementDelta: scenarioResult.call.elementDelta,\r\n          error: scenarioResult.call.error\r\n        },\r\n        validation: validation,\r\n        selectionUiBlueprint: blueprint,\r\n        copyableSelectionUiBlueprintJson: JSON.stringify(blueprint, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R1 blueprint PASS. 8 ana ama\u00E7 + 24 alt ama\u00E7 UI ve resolver blueprint, R27 scenario lock ile 1:1 uyumlu.\"\r\n          : \"R28-R1 HOLD. Eksik selection/scenario mapping var; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R2 Main Purpose / Sub-Purpose Resolver Preview\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R1-8X24-SELECTION-UI-BLUEPRINT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R28-R1-R1-8X24-SELECTION-UI-BLUEPRINT-SCENARIO-LOCK-KEY-FIX-READONLY\r\n   FAZ:\r\n   R28-R1-R1\r\n\r\n   AMA\u00C7:\r\n   R28-R1'deki selectionKey / scenario lock e\u015Fle\u015Fme hatas\u0131n\u0131 d\u00FCzeltir.\r\n   8x24 Selection UI Blueprint'i R27 Setup Scenario Library lock i\u00E7indeki ger\u00E7ek purposeKey + subPurposeKey gruplar\u0131ndan t\u00FCretir.\r\n   DOM yazmaz. UI patch de\u011Fildir.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R1-R1-8X24-SELECTION-UI-BLUEPRINT-SCENARIO-LOCK-KEY-FIX-READONLY\";\r\n  var VERSION = \"PANEL-V4-R28-R1-R1-8X24-SELECTION-UI-BLUEPRINT-SCENARIO-LOCK-KEY-FIX-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function titleizeKey(key) {\r\n    return clean(key)\r\n      .split(\"_\")\r\n      .filter(Boolean)\r\n      .map(function (p) {\r\n        if (p === \"rgb\") return \"RGB\";\r\n        if (p === \"led\") return \"LED\";\r\n        return p.charAt(0).toLocaleUpperCase(\"tr-TR\") + p.slice(1);\r\n      })\r\n      .join(\" \");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function callSafe(fnName) {\r\n    var before = elementCount();\r\n    var res = null;\r\n    var ok = false;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (typeof window[fnName] === \"function\") {\r\n        res = window[fnName]();\r\n        ok = !!(res && res.ok === true);\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (e) {\r\n      error = e && e.message ? e.message : String(e);\r\n    }\r\n\r\n    var after = elementCount();\r\n    return {\r\n      exists: typeof window[fnName] === \"function\",\r\n      ok: ok,\r\n      elementDelta: after - before,\r\n      error: error,\r\n      result: res\r\n    };\r\n  }\r\n\r\n  function scenarioLockFromA2C() {\r\n    var res = callSafe(\"debugPanelV4R27A2CSetupScenarioLibraryLockVerify\");\r\n    var lock = res && res.result && res.result.diagnostics && res.result.diagnostics.lockCandidate\r\n      ? res.result.diagnostics.lockCandidate\r\n      : null;\r\n    return { call: res, lock: lock };\r\n  }\r\n\r\n  function purposeLabels() {\r\n    return {\r\n      product_ecommerce: {\r\n        title: \"\u00DCr\u00FCn \u00C7ekimi / E-Ticaret\",\r\n        shortTitle: \"\u00DCr\u00FCn / E-Ticaret\",\r\n        icon: \"product\",\r\n        description: \"\u00DCr\u00FCn, katalog, pazar yeri ve sat\u0131\u015F g\u00F6rselleri i\u00E7in.\"\r\n      },\r\n      youtube_reels_social: {\r\n        title: \"YouTube / Reels / Sosyal Medya\",\r\n        shortTitle: \"YouTube / Reels\",\r\n        icon: \"content\",\r\n        description: \"Tek ki\u015Fi i\u00E7erik, k\u0131sa video, yay\u0131n ve konu\u015Fmal\u0131 i\u00E7erikler i\u00E7in.\"\r\n      },\r\n      interview_talking_head: {\r\n        title: \"R\u00F6portaj / Konu\u015Fan Kafa\",\r\n        shortTitle: \"R\u00F6portaj\",\r\n        icon: \"interview\",\r\n        description: \"Tek ki\u015Fi, iki ki\u015Fi ve kurumsal konu\u015Fmal\u0131 video d\u00FCzenleri i\u00E7in.\"\r\n      },\r\n      clinic_aesthetic_dental: {\r\n        title: \"Klinik / Estetik / Dental\",\r\n        shortTitle: \"Klinik / Dental\",\r\n        icon: \"clinic\",\r\n        description: \"Cilt, y\u00FCz, dental destek ve klinik sosyal medya i\u00E7erikleri i\u00E7in.\"\r\n      },\r\n      rgb_creative_video: {\r\n        title: \"RGB / Kreatif Video\",\r\n        shortTitle: \"RGB Kreatif\",\r\n        icon: \"rgb\",\r\n        description: \"Renkli arka plan, atmosfer, klip ve kreatif ayr\u0131m \u0131\u015F\u0131klar\u0131 i\u00E7in.\"\r\n      },\r\n      studio_professional: {\r\n        title: \"St\u00FCdyo / Profesyonel \u00C7ekim\",\r\n        shortTitle: \"St\u00FCdyo\",\r\n        icon: \"studio\",\r\n        description: \"Model, kampanya ve sabit st\u00FCdyo \u0131\u015F\u0131k d\u00FCzenleri i\u00E7in.\"\r\n      },\r\n      mobile_outdoor: {\r\n        title: \"Mobil / D\u0131\u015F Mekan\",\r\n        shortTitle: \"Mobil\",\r\n        icon: \"mobile\",\r\n        description: \"Ta\u015F\u0131nabilir ekip, d\u0131\u015F mekan ve h\u0131zl\u0131 kurulum gerektiren \u00E7ekimler i\u00E7in.\"\r\n      },\r\n      starter_budget_practical: {\r\n        title: \"Ba\u015Flang\u0131\u00E7 / B\u00FCt\u00E7e / Pratik Kurulum\",\r\n        shortTitle: \"Ba\u015Flang\u0131\u00E7\",\r\n        icon: \"starter\",\r\n        description: \"\u0130lk \u0131\u015F\u0131k, uygun b\u00FCt\u00E7e ve az yer kaplayan pratik \u00E7\u00F6z\u00FCmler i\u00E7in.\"\r\n      }\r\n    };\r\n  }\r\n\r\n  function subPurposeLabels() {\r\n    return {\r\n      small_product_tabletop: { title: \"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn / masa\u00FCst\u00FC \u00E7ekim\", shortTitle: \"K\u00FC\u00E7\u00FCk \u00FCr\u00FCn\", intentHint: \"Masa\u00FCst\u00FC \u00FCr\u00FCn, tak\u0131, aksesuar, k\u00FC\u00E7\u00FCk obje\" },\r\n      large_product_model: { title: \"B\u00FCy\u00FCk \u00FCr\u00FCn / model \u00FCzerinde \u00E7ekim\", shortTitle: \"B\u00FCy\u00FCk \u00FCr\u00FCn / model\", intentHint: \"\u00C7anta, k\u0131yafet, b\u00FCy\u00FCk \u00FCr\u00FCn veya model \u00FCzerinde \u00FCr\u00FCn\" },\r\n      marketplace_catalog: { title: \"Pazar yeri / katalog \u00E7ekimi\", shortTitle: \"Katalog\", intentHint: \"Trendyol, Hepsiburada, Amazon, beyaz fon katalog\" },\r\n\r\n      single_person_video: { title: \"Tek ki\u015Fi video\", shortTitle: \"Tek ki\u015Fi video\", intentHint: \"YouTube, anlat\u0131m, e\u011Fitim, podcast, webinar\" },\r\n      reels_tiktok_short: { title: \"Reels / TikTok k\u0131sa i\u00E7erik\", shortTitle: \"Reels / TikTok\", intentHint: \"K\u0131sa dikey video, h\u0131zl\u0131 sosyal medya \u00FCretimi\" },\r\n      live_stream_talk: { title: \"Yay\u0131n / canl\u0131 anlat\u0131m\", shortTitle: \"Canl\u0131 yay\u0131n\", intentHint: \"Canl\u0131 yay\u0131n, masa ba\u015F\u0131 anlat\u0131m, streaming\" },\r\n\r\n      single_interview: { title: \"Tek ki\u015Fi r\u00F6portaj\", shortTitle: \"Tek ki\u015Fi\", intentHint: \"Bir ki\u015Fi konu\u015Fma, r\u00F6portaj, kurumsal tan\u0131t\u0131m\" },\r\n      two_person_interview: { title: \"\u0130ki ki\u015Fi r\u00F6portaj\", shortTitle: \"\u0130ki ki\u015Fi\", intentHint: \"Kar\u015F\u0131l\u0131kl\u0131 r\u00F6portaj, iki ki\u015Fi konu\u015Fma\" },\r\n      corporate_training: { title: \"Kurumsal video / e\u011Fitim\", shortTitle: \"Kurumsal e\u011Fitim\", intentHint: \"Kurumsal e\u011Fitim, ders, a\u00E7\u0131klama videosu\" },\r\n\r\n      skin_face_shoot: { title: \"Cilt / y\u00FCz \u00E7ekimi\", shortTitle: \"Cilt / y\u00FCz\", intentHint: \"Cilt, y\u00FCz, estetik \u00F6ncesi/sonras\u0131 i\u00E7erik\" },\r\n      dental_support: { title: \"Dental / a\u011F\u0131z i\u00E7i destek\", shortTitle: \"Dental destek\", intentHint: \"Dental klinik, a\u011F\u0131z i\u00E7i destek, di\u015F g\u00F6rseli\" },\r\n      clinic_social_content: { title: \"Klinik sosyal medya i\u00E7erikleri\", shortTitle: \"Klinik sosyal\", intentHint: \"Klinik reels, uzman anlat\u0131m\u0131, sosyal medya videosu\" },\r\n\r\n      background_color_effect: { title: \"Arka plan renk efekti\", shortTitle: \"Arka plan renk\", intentHint: \"Fon rengi, atmosfer, RGB arka plan\" },\r\n      music_clip_creative_scene: { title: \"M\u00FCzik / klip / kreatif sahne\", shortTitle: \"Klip / kreatif\", intentHint: \"Klip, m\u00FCzik videosu, kreatif sahne\" },\r\n      product_color_separation: { title: \"\u00DCr\u00FCn arkas\u0131nda renk ayr\u0131m\u0131\", shortTitle: \"\u00DCr\u00FCn renk ayr\u0131m\u0131\", intentHint: \"\u00DCr\u00FCn\u00FC fondan ay\u0131ran renk \u00E7izgisi veya kenar \u0131\u015F\u0131\u011F\u0131\" },\r\n      subject_rim_edge: { title: \"Ki\u015Fi / model kontur ayr\u0131m\u0131\", shortTitle: \"Ki\u015Fi / model rim\", intentHint: \"Ki\u015Fi veya modeli fondan ay\u0131ran RGB rim / edge / kontur \u0131\u015F\u0131\u011F\u0131\" },\r\n\r\n      model_shoot: { title: \"Model \u00E7ekimi\", shortTitle: \"Model\", intentHint: \"Model, moda, portre, geni\u015F setup\" },\r\n      ad_campaign_visual: { title: \"Reklam / kampanya g\u00F6rseli\", shortTitle: \"Kampanya\", intentHint: \"Reklam, kampanya, profesyonel g\u00F6rsel \u00FCretim\" },\r\n      fixed_studio_setup: { title: \"Sabit st\u00FCdyo kurulumu\", shortTitle: \"Sabit st\u00FCdyo\", intentHint: \"S\u00FCrekli kullan\u0131lan st\u00FCdyo \u0131\u015F\u0131k d\u00FCzeni\" },\r\n\r\n      battery_shoot: { title: \"Bataryal\u0131 \u00E7ekim\", shortTitle: \"Bataryal\u0131\", intentHint: \"Prizsiz ortam, bataryal\u0131 kullan\u0131m ihtiyac\u0131\" },\r\n      portable_team: { title: \"Ta\u015F\u0131nabilir ekip\", shortTitle: \"Ta\u015F\u0131nabilir\", intentHint: \"Az ekip, h\u0131zl\u0131 ta\u015F\u0131ma, sahada kullan\u0131m\" },\r\n      fast_location_setup: { title: \"Mekan i\u00E7i h\u0131zl\u0131 kurulum\", shortTitle: \"H\u0131zl\u0131 kurulum\", intentHint: \"Mekan i\u00E7inde h\u0131zl\u0131 kurulup toplanan \u00E7ekimler\" },\r\n\r\n      first_light_choice: { title: \"\u0130lk \u0131\u015F\u0131k se\u00E7imi\", shortTitle: \"\u0130lk \u0131\u015F\u0131k\", intentHint: \"\u0130lk panel LED, temel setup, ba\u015Flang\u0131\u00E7\" },\r\n      budget_setup: { title: \"Uygun fiyatl\u0131 setup\", shortTitle: \"B\u00FCt\u00E7e setup\", intentHint: \"Fiyat/performans, ekonomik \u00E7\u00F6z\u00FCm\" },\r\n      compact_solution: { title: \"Az yer kaplayan \u00E7\u00F6z\u00FCm\", shortTitle: \"Kompakt \u00E7\u00F6z\u00FCm\", intentHint: \"K\u00FC\u00E7\u00FCk oda, dar masa, az yer kaplayan kurulum\" }\r\n    };\r\n  }\r\n\r\n  function rolePriorityFromScenarios(scenarios) {\r\n    var counts = {};\r\n    (scenarios || []).forEach(function (s) {\r\n      (s.recommendedRoles || []).forEach(function (role, idx) {\r\n        if (!role) return;\r\n        counts[role] = (counts[role] || 0) + (idx === 0 ? 4 : 1);\r\n      });\r\n    });\r\n\r\n    var best = \"\";\r\n    var bestScore = -1;\r\n    Object.keys(counts).forEach(function (role) {\r\n      if (counts[role] > bestScore) {\r\n        best = role;\r\n        bestScore = counts[role];\r\n      }\r\n    });\r\n\r\n    return best || \"key_light\";\r\n  }\r\n\r\n  function groupScenarios(lock) {\r\n    var rows = lock && Array.isArray(lock.scenarios) ? lock.scenarios : [];\r\n    var byPurpose = {};\r\n    var bySelection = {};\r\n\r\n    rows.forEach(function (row) {\r\n      var p = row.purposeKey || \"unknown\";\r\n      var sp = row.subPurposeKey || \"unknown\";\r\n      var key = p + \"::\" + sp;\r\n\r\n      if (!byPurpose[p]) byPurpose[p] = {};\r\n      if (!byPurpose[p][sp]) byPurpose[p][sp] = [];\r\n      byPurpose[p][sp].push(row);\r\n\r\n      if (!bySelection[key]) bySelection[key] = [];\r\n      bySelection[key].push(row);\r\n    });\r\n\r\n    return {\r\n      rows: rows,\r\n      byPurpose: byPurpose,\r\n      bySelection: bySelection,\r\n      purposeKeys: Object.keys(byPurpose)\r\n    };\r\n  }\r\n\r\n  function r2hCloneScenarioRowForSubjectRimEdge(row) {\r\n    var copy = {};\r\n    Object.keys(row || {}).forEach(function (key) { copy[key] = row[key]; });\r\n    copy.purposeKey = \"rgb_creative_video\";\r\n    copy.subPurposeKey = \"subject_rim_edge\";\r\n    copy.r2hRegistryV2 = true;\r\n    copy.r2hSourceSelectionKey = \"rgb_creative_video::product_color_separation\";\r\n    copy.r2hTargetSelectionKey = \"rgb_creative_video::subject_rim_edge\";\r\n    copy.allowedFamilies = [\"rgb\"];\r\n    if (copy.scenarioType === \"balanced_key_fill\") {\r\n      copy.recommendedRoles = [\"rim_light\", \"fill_light\", \"soft_front_light\"];\r\n    } else if (copy.scenarioType === \"rgb_background_accent\") {\r\n      copy.recommendedRoles = [\"rim_light\", \"rgb_accent\", \"background_light\"];\r\n    } else {\r\n      copy.recommendedRoles = [\"rim_light\", \"close_range_support\", \"rgb_accent\"];\r\n    }\r\n    return copy;\r\n  }\r\n\r\n  function r2hExtendScenarioGroups(groups) {\r\n    var sourceKey = \"rgb_creative_video::product_color_separation\";\r\n    var targetKey = \"rgb_creative_video::subject_rim_edge\";\r\n    if (!groups || !groups.bySelection || groups.bySelection[targetKey]) return groups;\r\n\r\n    var source = groups.bySelection[sourceKey] || [];\r\n    if (source.length !== 3) return groups;\r\n\r\n    var clones = source.map(r2hCloneScenarioRowForSubjectRimEdge);\r\n    groups.bySelection[targetKey] = clones;\r\n\r\n    if (!groups.byPurpose.rgb_creative_video) groups.byPurpose.rgb_creative_video = {};\r\n    groups.byPurpose.rgb_creative_video.subject_rim_edge = clones;\r\n\r\n    return groups;\r\n  }\r\n\r\n  function buildModelFromScenarioLock(lock) {\r\n    var labels = purposeLabels();\r\n    var subLabels = subPurposeLabels();\r\n    var groups = r2hExtendScenarioGroups(groupScenarios(lock));\r\n\r\n    var model = groups.purposeKeys.sort().map(function (purposeKey, pIndex) {\r\n      var pLabel = labels[purposeKey] || {\r\n        title: titleizeKey(purposeKey),\r\n        shortTitle: titleizeKey(purposeKey),\r\n        icon: \"purpose\",\r\n        description: titleizeKey(purposeKey) + \" kullan\u0131m\u0131 i\u00E7in.\"\r\n      };\r\n\r\n      var subPurposes = Object.keys(groups.byPurpose[purposeKey]).sort().map(function (subPurposeKey, sIndex) {\r\n        var scenarios = groups.byPurpose[purposeKey][subPurposeKey] || [];\r\n        var sLabel = subLabels[subPurposeKey] || {\r\n          title: titleizeKey(subPurposeKey),\r\n          shortTitle: titleizeKey(subPurposeKey),\r\n          intentHint: titleizeKey(subPurposeKey) + \" i\u00E7in uygun kullan\u0131m.\"\r\n        };\r\n\r\n        return {\r\n          subPurposeKey: subPurposeKey,\r\n          title: sLabel.title,\r\n          shortTitle: sLabel.shortTitle,\r\n          intentHint: sLabel.intentHint,\r\n          priorityRole: rolePriorityFromScenarios(scenarios),\r\n          subPurposeIndex: sIndex + 1\r\n        };\r\n      });\r\n\r\n      return {\r\n        purposeKey: purposeKey,\r\n        title: pLabel.title,\r\n        shortTitle: pLabel.shortTitle,\r\n        icon: pLabel.icon,\r\n        description: pLabel.description,\r\n        purposeIndex: pIndex + 1,\r\n        subPurposes: subPurposes\r\n      };\r\n    });\r\n\r\n    return { model: model, groups: groups };\r\n  }\r\n\r\n  function flattenModel(model) {\r\n    var out = [];\r\n    model.forEach(function (purpose) {\r\n      purpose.subPurposes.forEach(function (sub) {\r\n        out.push({\r\n          purposeKey: purpose.purposeKey,\r\n          purposeTitle: purpose.title,\r\n          purposeShortTitle: purpose.shortTitle,\r\n          purposeIcon: purpose.icon,\r\n          purposeIndex: purpose.purposeIndex,\r\n          subPurposeKey: sub.subPurposeKey,\r\n          subPurposeTitle: sub.title,\r\n          subPurposeShortTitle: sub.shortTitle,\r\n          subPurposeIndex: sub.subPurposeIndex,\r\n          intentHint: sub.intentHint,\r\n          priorityRole: sub.priorityRole,\r\n          selectionKey: purpose.purposeKey + \"::\" + sub.subPurposeKey\r\n        });\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function validate(model, flat, groups) {\r\n    var duplicateKeys = [];\r\n    var keys = {};\r\n    var empty = [];\r\n    var missingScenario = [];\r\n    var badScenarioCounts = [];\r\n    var scenarioTypeProblems = [];\r\n\r\n    flat.forEach(function (row) {\r\n      if (keys[row.selectionKey]) duplicateKeys.push(row.selectionKey);\r\n      keys[row.selectionKey] = true;\r\n\r\n      if (!row.purposeTitle || !row.subPurposeTitle || !row.intentHint || !row.priorityRole) empty.push(row.selectionKey);\r\n\r\n      var scenarios = groups.bySelection[row.selectionKey] || [];\r\n      if (!scenarios.length) missingScenario.push(row.selectionKey);\r\n      if (scenarios.length !== 3) badScenarioCounts.push({ selectionKey: row.selectionKey, count: scenarios.length });\r\n\r\n      var types = {};\r\n      scenarios.forEach(function (s) { types[s.scenarioType] = true; });\r\n      [\"balanced_key_fill\", \"rgb_background_accent\", \"compact_support_close_range\"].forEach(function (t) {\r\n        if (!types[t]) scenarioTypeProblems.push({ selectionKey: row.selectionKey, missingType: t });\r\n      });\r\n    });\r\n\r\n    return {\r\n      purposeCountOk: model.length === 8,\r\n      subPurposeCountOk: flat.length === 25,\r\n      selectionKeysUnique: duplicateKeys.length === 0,\r\n      duplicateKeys: duplicateKeys,\r\n      allHaveTitlesHintsRoles: empty.length === 0,\r\n      emptyRows: empty,\r\n      everySelectionHasScenarioGroup: missingScenario.length === 0,\r\n      missingScenarioGroups: missingScenario,\r\n      everySelectionHasThreeScenarioTypes: badScenarioCounts.length === 0 && scenarioTypeProblems.length === 0,\r\n      badScenarioCounts: badScenarioCounts,\r\n      scenarioTypeProblems: scenarioTypeProblems\r\n    };\r\n  }\r\n\r\n  function buildBlueprint(model, flat, groups) {\r\n    return {\r\n      libraryName: \"CANFOTO_PANEL_LED_V4_REGISTRY_V2_8X25_SELECTION_UI_BLUEPRINT\",\r\n      phase: PHASE,\r\n      version: \"CANFOTO-ETAP2-R2H-REGISTRY-V2-8X25-SELECTION-BLUEPRINT-V1\",\r\n      sourceRule: \"Purpose/subPurpose keys are derived from R27 Setup Scenario Library lock, not hardcoded target aliases.\",\r\n      purposeCount: model.length,\r\n      subPurposeCount: flat.length,\r\n      uiRules: {\r\n        desktop: {\r\n          layout: \"8 main purpose cards + selected purpose sub-purpose dock\",\r\n          behavior: \"click main purpose -> show variable sub purposes; click sub purpose -> set active selection\"\r\n        },\r\n        mobile: {\r\n          layout: \"compact main purpose selector + sub purpose chips\",\r\n          behavior: \"tap main purpose -> reveal variable sub purpose chips\"\r\n        },\r\n        noTouch: [\r\n          \"score math\",\r\n          \"ranking math\",\r\n          \"product pool\",\r\n          \"price formatter\",\r\n          \"cart logic\",\r\n          \"share\",\r\n          \"PNG\",\r\n          \"QR\"\r\n        ]\r\n      },\r\n      resolverRules: {\r\n        activeStateKeys: [\"activePurposeKey\", \"activeSubPurposeKey\", \"activeSelectionKey\"],\r\n        selectionKeyFormat: \"purposeKey::subPurposeKey\",\r\n        scenarioLookup: \"GDX_PANEL_LED_V4_SETUP_SCENARIOS by purposeKey + subPurposeKey\",\r\n        noraLookup: \"GDX_PANEL_LED_V4_NORA_LIBRARY by scenarioKey\",\r\n        visualLookup: \"GDX_PANEL_LED_V4_SETUP_VISUALS by scenarioKey\",\r\n        recommenderBridge: \"next phase; do not alter ranking in R28-R1-R1\"\r\n      },\r\n      mainPurposes: model,\r\n      flatSelections: flat.map(function (row) {\r\n        var scenarios = groups.bySelection[row.selectionKey] || [];\r\n        return {\r\n          purposeKey: row.purposeKey,\r\n          subPurposeKey: row.subPurposeKey,\r\n          selectionKey: row.selectionKey,\r\n          purposeTitle: row.purposeTitle,\r\n          subPurposeTitle: row.subPurposeTitle,\r\n          intentHint: row.intentHint,\r\n          priorityRole: row.priorityRole,\r\n          linkedScenarioCount: scenarios.length,\r\n          linkedScenarioKeys: scenarios.map(function (s) { return s.scenarioKey; }),\r\n          linkedScenarioTypes: scenarios.map(function (s) { return s.scenarioType; })\r\n        };\r\n      })\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix = function () {\r\n    var before = document.getElementsByTagName(\"*\").length;\r\n\r\n    var lockResult = scenarioLockFromA2C();\r\n    var lock = lockResult.lock;\r\n    var build = buildModelFromScenarioLock(lock);\r\n    var model = build.model;\r\n    var groups = build.groups;\r\n    var flat = flattenModel(model);\r\n    var v = validate(model, flat, groups);\r\n    var blueprint = buildBlueprint(model, flat, groups);\r\n\r\n    var after = document.getElementsByTagName(\"*\").length;\r\n\r\n    var r2bOwner = window.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL || null;\r\n    var r2bSnapshot = null;\r\n    try {\r\n      r2bSnapshot = r2bOwner && typeof r2bOwner.getSnapshot === \"function\"\r\n        ? r2bOwner.getSnapshot()\r\n        : null;\r\n    } catch (_) {\r\n      r2bSnapshot = null;\r\n    }\r\n\r\n    var checks = {\r\n      blueprintGenerated: !!blueprint,\r\n      productPoolReady: !!(\r\n        r2bSnapshot &&\r\n        Number(r2bSnapshot.productCount) === 27 &&\r\n        r2bSnapshot.laneCounts &&\r\n        Number(r2bSnapshot.laneCounts.BARE_LIGHT) === 19 &&\r\n        Number(r2bSnapshot.laneCounts.SINGLE_READY_SET) === 8\r\n      ),\r\n      r27ScenarioCallOk: lockResult.call.ok === true,\r\n      r27ScenarioLockReadable: !!lock,\r\n      derivedFromScenarioLock: !!lock && groups.rows.length === 72,\r\n      purposeCountOk: v.purposeCountOk,\r\n      subPurposeCountOk: v.subPurposeCountOk,\r\n      selectionKeysUnique: v.selectionKeysUnique,\r\n      allHaveTitlesHintsRoles: v.allHaveTitlesHintsRoles,\r\n      everySelectionHasScenarioGroup: v.everySelectionHasScenarioGroup,\r\n      everySelectionHasThreeScenarioTypes: v.everySelectionHasThreeScenarioTypes,\r\n      uiRulesPresent: !!(blueprint.uiRules && blueprint.uiRules.desktop && blueprint.uiRules.mobile),\r\n      resolverRulesPresent: !!(blueprint.resolverRules && blueprint.resolverRules.activeStateKeys),\r\n      copyReady: !!blueprint && flat.length === 25,\r\n\r\n      noDomMutationByThisAudit: after === before,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.blueprintGenerated &&\r\n      checks.productPoolReady &&\r\n      checks.r27ScenarioCallOk &&\r\n      checks.r27ScenarioLockReadable &&\r\n      checks.derivedFromScenarioLock &&\r\n      checks.purposeCountOk &&\r\n      checks.subPurposeCountOk &&\r\n      checks.selectionKeysUnique &&\r\n      checks.allHaveTitlesHintsRoles &&\r\n      checks.everySelectionHasScenarioGroup &&\r\n      checks.everySelectionHasThreeScenarioTypes &&\r\n      checks.uiRulesPresent &&\r\n      checks.resolverRulesPresent &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: productPool().length,\r\n        scenarioCall: {\r\n          exists: lockResult.call.exists,\r\n          ok: lockResult.call.ok,\r\n          elementDelta: lockResult.call.elementDelta,\r\n          error: lockResult.call.error\r\n        },\r\n        actualPurposeKeysFromScenarioLock: groups.purposeKeys,\r\n        actualSelectionKeysFromScenarioLock: Object.keys(groups.bySelection).sort(),\r\n        validation: v,\r\n        selectionUiBlueprint: blueprint,\r\n        copyableSelectionUiBlueprintJson: JSON.stringify(blueprint, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R1-R1 PASS. Blueprint art\u0131k R27 scenario lock key'lerinden t\u00FCretildi; 25 selection'\u0131n her biri 3 scenarioType'a ba\u011Fl\u0131.\"\r\n          : \"R28-R1-R1 HOLD. Scenario lock mapping h\u00E2l\u00E2 eksik; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R2 Main Purpose / Sub-Purpose Resolver Preview\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R1-R1-R2H-REGISTRY-V2-8X25-SELECTION-BLUEPRINT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R28-R2-MAIN-SUBPURPOSE-RESOLVER-PREVIEW-READONLY\r\n   FAZ:\r\n   R28-R2\r\n\r\n   AMA\u00C7:\r\n   R28-R1-R1 blueprint'ten 8 ana ama\u00E7 + 24 alt ama\u00E7 resolver preview \u00FCretir.\r\n   Her selectionKey i\u00E7in 3 scenarioType ba\u011Flant\u0131s\u0131n\u0131 do\u011Frular.\r\n   Canl\u0131 UI yazmaz. DOM mutate etmez. Score/ranking/cart/share/PNG/QR no-touch.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R2MainSubPurposeResolverPreview()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R2-MAIN-SUBPURPOSE-RESOLVER-PREVIEW-READONLY\";\r\n  var VERSION = \"PANEL-V4-R28-R2-MAIN-SUBPURPOSE-RESOLVER-PREVIEW-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function callSafe(fnName) {\r\n    var before = elementCount();\r\n    var res = null;\r\n    var ok = false;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (typeof window[fnName] === \"function\") {\r\n        res = window[fnName]();\r\n        ok = !!(res && res.ok === true);\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (e) {\r\n      error = e && e.message ? e.message : String(e);\r\n    }\r\n\r\n    var after = elementCount();\r\n\r\n    return {\r\n      exists: typeof window[fnName] === \"function\",\r\n      ok: ok,\r\n      elementDelta: after - before,\r\n      error: error,\r\n      result: res\r\n    };\r\n  }\r\n\r\n  function blueprintFromR1R1() {\r\n    var call = callSafe(\"debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix\");\r\n    var bp = call && call.result && call.result.diagnostics && call.result.diagnostics.selectionUiBlueprint\r\n      ? call.result.diagnostics.selectionUiBlueprint\r\n      : null;\r\n\r\n    return { call: call, blueprint: bp };\r\n  }\r\n\r\n  function scenarioLockFromA2C() {\r\n    var call = callSafe(\"debugPanelV4R27A2CSetupScenarioLibraryLockVerify\");\r\n    var lock = call && call.result && call.result.diagnostics && call.result.diagnostics.lockCandidate\r\n      ? call.result.diagnostics.lockCandidate\r\n      : null;\r\n\r\n    return { call: call, lock: lock };\r\n  }\r\n\r\n  function noraLockFromA3C() {\r\n    var call = callSafe(\"debugPanelV4R27A3CNoraVoiceLibraryLockVerify\");\r\n    var lock = call && call.result && call.result.diagnostics && call.result.diagnostics.lockCandidate\r\n      ? call.result.diagnostics.lockCandidate\r\n      : null;\r\n\r\n    return { call: call, lock: lock };\r\n  }\r\n\r\n  function visualLockFromA4C() {\r\n    var call = callSafe(\"debugPanelV4R27A4CCdnVisualManifestLockVerify\");\r\n    var lock = call && call.result && call.result.diagnostics && call.result.diagnostics.lockCandidate\r\n      ? call.result.diagnostics.lockCandidate\r\n      : null;\r\n\r\n    return { call: call, lock: lock };\r\n  }\r\n\r\n  function rowsFromLock(lock) {\r\n    if (!lock) return [];\r\n    if (Array.isArray(lock.scenarios)) return lock.scenarios;\r\n    if (Array.isArray(lock.entries)) return lock.entries;\r\n    if (Array.isArray(lock.previews)) return lock.previews;\r\n    if (Array.isArray(lock.visuals)) return lock.visuals;\r\n    if (Array.isArray(lock.noraEntries)) return lock.noraEntries;\r\n    if (Array.isArray(lock.voiceEntries)) return lock.voiceEntries;\r\n    return [];\r\n  }\r\n\r\n  function scenarioKeyOf(row) {\r\n    return clean(row && (row.scenarioKey || row.key || row.id || row.previewKey));\r\n  }\r\n\r\n  function byScenarioKey(rows) {\r\n    var idx = {};\r\n    (rows || []).forEach(function (row) {\r\n      var key = scenarioKeyOf(row);\r\n      if (key) idx[key] = row;\r\n    });\r\n    return idx;\r\n  }\r\n\r\n  function bySelection(scenarios) {\r\n    var idx = {};\r\n    (scenarios || []).forEach(function (row) {\r\n      var key = clean(row.purposeKey) + \"::\" + clean(row.subPurposeKey);\r\n      if (!idx[key]) idx[key] = [];\r\n      idx[key].push(row);\r\n    });\r\n\r\n    Object.keys(idx).forEach(function (key) {\r\n      idx[key].sort(function (a, b) {\r\n        var order = { balanced_key_fill: 1, rgb_background_accent: 2, compact_support_close_range: 3 };\r\n        return (order[a.scenarioType] || 99) - (order[b.scenarioType] || 99);\r\n      });\r\n    });\r\n\r\n    return idx;\r\n  }\r\n\r\n  function scenarioTypeSet(rows) {\r\n    var out = {};\r\n    (rows || []).forEach(function (r) {\r\n      if (r.scenarioType) out[r.scenarioType] = true;\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function preferredScenarioTypeForSelection(selection) {\r\n    var pk = clean(selection && selection.purposeKey);\r\n    var sk = clean(selection && selection.subPurposeKey);\r\n    var role = clean(selection && selection.priorityRole);\r\n\r\n    if (pk === \"rgb_creative_video\" || /rgb|color|background|separation/.test(lower(pk + \" \" + sk + \" \" + role))) {\r\n      return \"rgb_background_accent\";\r\n    }\r\n\r\n    if (pk === \"mobile_outdoor\" || pk === \"starter_budget_practical\" || /portable|support|accent|close|compact|small_space/.test(lower(pk + \" \" + sk + \" \" + role))) {\r\n      return \"compact_support_close_range\";\r\n    }\r\n\r\n    return \"balanced_key_fill\";\r\n  }\r\n\r\n  function pickScenario(selection, scenarios) {\r\n    var preferred = preferredScenarioTypeForSelection(selection);\r\n    var exact = (scenarios || []).find(function (s) { return s.scenarioType === preferred; });\r\n    if (exact) return exact;\r\n\r\n    return (scenarios || [])[0] || null;\r\n  }\r\n\r\n  function noraForScenario(scenario, noraIndex) {\r\n    var sk = scenarioKeyOf(scenario);\r\n    if (sk && noraIndex[sk]) return noraIndex[sk];\r\n\r\n    var rows = Object.keys(noraIndex).map(function (k) { return noraIndex[k]; });\r\n    return rows.find(function (row) {\r\n      return clean(row.purposeKey) === clean(scenario && scenario.purposeKey) &&\r\n        clean(row.subPurposeKey) === clean(scenario && scenario.subPurposeKey) &&\r\n        clean(row.scenarioType) === clean(scenario && scenario.scenarioType);\r\n    }) || null;\r\n  }\r\n\r\n  function visualForScenario(scenario, visualIndex) {\r\n    var sk = scenarioKeyOf(scenario);\r\n    if (sk && visualIndex[sk]) return visualIndex[sk];\r\n\r\n    var rows = Object.keys(visualIndex).map(function (k) { return visualIndex[k]; });\r\n    return rows.find(function (row) {\r\n      return clean(row.purposeKey) === clean(scenario && scenario.purposeKey) &&\r\n        clean(row.subPurposeKey) === clean(scenario && scenario.subPurposeKey) &&\r\n        clean(row.scenarioType) === clean(scenario && scenario.scenarioType);\r\n    }) || null;\r\n  }\r\n\r\n  function buildResolverPreview(blueprint, scenarioRows, noraRows, visualRows) {\r\n    var scenarioIdx = bySelection(scenarioRows);\r\n    var noraIdx = byScenarioKey(noraRows);\r\n    var visualIdx = byScenarioKey(visualRows);\r\n\r\n    var selections = Array.isArray(blueprint && blueprint.flatSelections) ? blueprint.flatSelections : [];\r\n    var previews = [];\r\n\r\n    selections.forEach(function (selection) {\r\n      var scenarios = scenarioIdx[selection.selectionKey] || [];\r\n      var picked = pickScenario(selection, scenarios);\r\n      var nora = picked ? noraForScenario(picked, noraIdx) : null;\r\n      var visual = picked ? visualForScenario(picked, visualIdx) : null;\r\n      var types = scenarioTypeSet(scenarios);\r\n\r\n      previews.push({\r\n        selectionKey: selection.selectionKey,\r\n        purposeKey: selection.purposeKey,\r\n        subPurposeKey: selection.subPurposeKey,\r\n        purposeTitle: selection.purposeTitle,\r\n        subPurposeTitle: selection.subPurposeTitle,\r\n        intentHint: selection.intentHint,\r\n        priorityRole: selection.priorityRole,\r\n        scenarioCount: scenarios.length,\r\n        scenarioTypes: Object.keys(types).sort(),\r\n        hasBalancedScenario: !!types.balanced_key_fill,\r\n        hasRgbScenario: !!types.rgb_background_accent,\r\n        hasCompactScenario: !!types.compact_support_close_range,\r\n        preferredScenarioType: preferredScenarioTypeForSelection(selection),\r\n        resolvedScenarioKey: scenarioKeyOf(picked),\r\n        resolvedScenarioType: clean(picked && picked.scenarioType),\r\n        resolvedRoles: picked && Array.isArray(picked.recommendedRoles) ? picked.recommendedRoles.slice(0, 4) : [],\r\n        resolvedFamilies: picked && Array.isArray(picked.allowedFamilies) ? picked.allowedFamilies.slice(0, 4) : [],\r\n        resolvedWattBands: picked && Array.isArray(picked.preferredWattBands) ? picked.preferredWattBands.slice(0, 4) : [],\r\n        noraMatched: !!nora,\r\n        visualMatched: !!visual,\r\n        visualStatus: clean((visual && (visual.status || visual.cdnStatus || visual.cdnUrl || visual.visualKey)) || \"\")\r\n      });\r\n    });\r\n\r\n    return previews;\r\n  }\r\n\r\n  function validateResolverPreview(previews) {\r\n    var missingScenario = [];\r\n    var badScenarioCount = [];\r\n    var missingBalanced = [];\r\n    var missingRgb = [];\r\n    var missingCompact = [];\r\n    var missingResolved = [];\r\n    var missingNora = [];\r\n    var missingVisual = [];\r\n\r\n    (previews || []).forEach(function (row) {\r\n      if (!row.scenarioCount) missingScenario.push(row.selectionKey);\r\n      if (row.scenarioCount !== 3) badScenarioCount.push({ selectionKey: row.selectionKey, count: row.scenarioCount });\r\n      if (!row.hasBalancedScenario) missingBalanced.push(row.selectionKey);\r\n      if (!row.hasRgbScenario) missingRgb.push(row.selectionKey);\r\n      if (!row.hasCompactScenario) missingCompact.push(row.selectionKey);\r\n      if (!row.resolvedScenarioKey || !row.resolvedScenarioType) missingResolved.push(row.selectionKey);\r\n      if (!row.noraMatched) missingNora.push(row.selectionKey);\r\n      if (!row.visualMatched) missingVisual.push(row.selectionKey);\r\n    });\r\n\r\n    return {\r\n      selectionCountOk: previews.length === 24,\r\n      everySelectionHasScenarioGroup: missingScenario.length === 0,\r\n      missingScenario: missingScenario,\r\n      everySelectionHasThreeScenarios: badScenarioCount.length === 0,\r\n      badScenarioCount: badScenarioCount,\r\n      everySelectionHasBalancedScenario: missingBalanced.length === 0,\r\n      missingBalanced: missingBalanced,\r\n      everySelectionHasRgbScenario: missingRgb.length === 0,\r\n      missingRgb: missingRgb,\r\n      everySelectionHasCompactScenario: missingCompact.length === 0,\r\n      missingCompact: missingCompact,\r\n      everySelectionResolvesScenario: missingResolved.length === 0,\r\n      missingResolved: missingResolved,\r\n      everySelectionHasNoraMatch: missingNora.length === 0,\r\n      missingNora: missingNora,\r\n      everySelectionHasVisualMatch: missingVisual.length === 0,\r\n      missingVisual: missingVisual\r\n    };\r\n  }\r\n\r\n  function unique(arr) {\r\n    var out = {};\r\n    (arr || []).forEach(function (x) { if (x) out[x] = true; });\r\n    return Object.keys(out);\r\n  }\r\n\r\n  window.debugPanelV4R28R2MainSubPurposeResolverPreview = function () {\r\n    var before = elementCount();\r\n\r\n    var bpPack = blueprintFromR1R1();\r\n    var scenarioPack = scenarioLockFromA2C();\r\n    var noraPack = noraLockFromA3C();\r\n    var visualPack = visualLockFromA4C();\r\n\r\n    var blueprint = bpPack.blueprint;\r\n    var scenarioRows = rowsFromLock(scenarioPack.lock);\r\n    var noraRows = rowsFromLock(noraPack.lock);\r\n    var visualRows = rowsFromLock(visualPack.lock);\r\n\r\n    var previews = buildResolverPreview(blueprint, scenarioRows, noraRows, visualRows);\r\n    var validation = validateResolverPreview(previews);\r\n\r\n    var after = elementCount();\r\n\r\n    var resolverPreview = {\r\n      libraryName: \"GDX_PANEL_LED_V4_R28_MAIN_SUBPURPOSE_RESOLVER_PREVIEW\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R28-R2-MAIN-SUBPURPOSE-RESOLVER-PREVIEW-CANDIDATE\",\r\n      sourceRule: \"Uses R28-R1-R1 blueprint and R27 scenario/nora/visual locks. No UI mutation.\",\r\n      selectionCount: previews.length,\r\n      purposeKeys: unique(previews.map(function (p) { return p.purposeKey; })),\r\n      selectionKeys: previews.map(function (p) { return p.selectionKey; }),\r\n      scenarioSelectionPreviews: previews,\r\n      resolverContract: {\r\n        input: {\r\n          activePurposeKey: \"R28 UI selected main purpose key\",\r\n          activeSubPurposeKey: \"R28 UI selected sub purpose key\",\r\n          activeSelectionKey: \"purposeKey::subPurposeKey\"\r\n        },\r\n        output: {\r\n          scenarioGroup: \"3 scenario rows for active selection\",\r\n          preferredScenario: \"balanced/rgb/compact scenario selected by purpose/subpurpose/role\",\r\n          noraEntry: \"matched by scenarioKey or fallback tuple\",\r\n          visualEntry: \"matched by scenarioKey or fallback tuple\"\r\n        },\r\n        nextPhaseUsage: \"R28-R3 readonly scenario match preview; R28-R4 safe UI patch after preview pass\"\r\n      }\r\n    };\r\n\r\n    var checks = {\r\n      resolverPreviewGenerated: !!resolverPreview,\r\n      productPoolReady: productPool().length === 19,\r\n\r\n      r28R1R1BlueprintOk: bpPack.call.ok === true,\r\n      blueprintReadable: !!blueprint,\r\n      r27ScenarioLockOk: scenarioPack.call.ok === true && scenarioRows.length === 72,\r\n      r27NoraLockOk: noraPack.call.ok === true,\r\n      r27VisualManifestLockOk: visualPack.call.ok === true,\r\n\r\n      selectionCount24: validation.selectionCountOk,\r\n      everySelectionHasScenarioGroup: validation.everySelectionHasScenarioGroup,\r\n      everySelectionHasThreeScenarios: validation.everySelectionHasThreeScenarios,\r\n      everySelectionHasBalancedScenario: validation.everySelectionHasBalancedScenario,\r\n      everySelectionHasRgbScenario: validation.everySelectionHasRgbScenario,\r\n      everySelectionHasCompactScenario: validation.everySelectionHasCompactScenario,\r\n      everySelectionResolvesScenario: validation.everySelectionResolvesScenario,\r\n      everySelectionHasNoraMatch: validation.everySelectionHasNoraMatch,\r\n      everySelectionHasVisualMatch: validation.everySelectionHasVisualMatch,\r\n\r\n      resolverContractReady: !!(resolverPreview.resolverContract && resolverPreview.resolverContract.input && resolverPreview.resolverContract.output),\r\n      copyReady: previews.length === 24,\r\n\r\n      noDomMutationByThisAudit: after === before,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.resolverPreviewGenerated &&\r\n      checks.productPoolReady &&\r\n      checks.r28R1R1BlueprintOk &&\r\n      checks.blueprintReadable &&\r\n      checks.r27ScenarioLockOk &&\r\n      checks.r27NoraLockOk &&\r\n      checks.r27VisualManifestLockOk &&\r\n      checks.selectionCount24 &&\r\n      checks.everySelectionHasScenarioGroup &&\r\n      checks.everySelectionHasThreeScenarios &&\r\n      checks.everySelectionHasBalancedScenario &&\r\n      checks.everySelectionHasRgbScenario &&\r\n      checks.everySelectionHasCompactScenario &&\r\n      checks.everySelectionResolvesScenario &&\r\n      checks.everySelectionHasNoraMatch &&\r\n      checks.everySelectionHasVisualMatch &&\r\n      checks.resolverContractReady &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: productPool().length,\r\n        sourceCalls: {\r\n          r28R1R1: { exists: bpPack.call.exists, ok: bpPack.call.ok, elementDelta: bpPack.call.elementDelta, error: bpPack.call.error },\r\n          r27A2C: { exists: scenarioPack.call.exists, ok: scenarioPack.call.ok, elementDelta: scenarioPack.call.elementDelta, error: scenarioPack.call.error },\r\n          r27A3C: { exists: noraPack.call.exists, ok: noraPack.call.ok, elementDelta: noraPack.call.elementDelta, error: noraPack.call.error },\r\n          r27A4C: { exists: visualPack.call.exists, ok: visualPack.call.ok, elementDelta: visualPack.call.elementDelta, error: visualPack.call.error }\r\n        },\r\n        counts: {\r\n          scenarioRows: scenarioRows.length,\r\n          noraRows: noraRows.length,\r\n          visualRows: visualRows.length,\r\n          resolverPreviewRows: previews.length\r\n        },\r\n        validation: validation,\r\n        resolverPreview: resolverPreview,\r\n        copyableResolverPreviewJson: JSON.stringify(resolverPreview, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R2 PASS. 24 selection i\u00E7in main/subpurpose resolver preview, scenario/NORA/visual ba\u011Flant\u0131lar\u0131yla haz\u0131r.\"\r\n          : \"R28-R2 HOLD. Resolver ba\u011Flant\u0131lar\u0131nda eksik var; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R3 Readonly Scenario Match Preview\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R2-MAIN-SUBPURPOSE-RESOLVER-PREVIEW-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R28-R3-READONLY-SCENARIO-MATCH-PREVIEW\r\n   FAZ:\r\n   R28-R3\r\n\r\n   AMA\u00C7:\r\n   R28-R2 resolver preview \u00FCst\u00FCnden 24 selection x 3 scenarioType = 72 scenario match preview \u00FCretir.\r\n   Her scenario row i\u00E7in NORA ve Visual e\u015Fle\u015Fmesini do\u011Frular.\r\n   Canl\u0131 UI yazmaz. DOM mutate etmez. Score/ranking/cart/share/PNG/QR no-touch.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   Panel motor a\u00E7\u0131kken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R3ReadonlyScenarioMatchPreview()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R3-READONLY-SCENARIO-MATCH-PREVIEW\";\r\n  var VERSION = \"PANEL-V4-R28-R3-READONLY-SCENARIO-MATCH-PREVIEW-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function callSafe(fnName) {\r\n    var before = elementCount();\r\n    var res = null;\r\n    var ok = false;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (typeof window[fnName] === \"function\") {\r\n        res = window[fnName]();\r\n        ok = !!(res && res.ok === true);\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (e) {\r\n      error = e && e.message ? e.message : String(e);\r\n    }\r\n\r\n    var after = elementCount();\r\n    return {\r\n      exists: typeof window[fnName] === \"function\",\r\n      ok: ok,\r\n      elementDelta: after - before,\r\n      error: error,\r\n      result: res\r\n    };\r\n  }\r\n\r\n  function rowsFromLock(lock) {\r\n    if (!lock) return [];\r\n    if (Array.isArray(lock.scenarios)) return lock.scenarios;\r\n    if (Array.isArray(lock.entries)) return lock.entries;\r\n    if (Array.isArray(lock.previews)) return lock.previews;\r\n    if (Array.isArray(lock.visuals)) return lock.visuals;\r\n    if (Array.isArray(lock.noraEntries)) return lock.noraEntries;\r\n    if (Array.isArray(lock.voiceEntries)) return lock.voiceEntries;\r\n    return [];\r\n  }\r\n\r\n  function lockFrom(call, fieldCandidates) {\r\n    var d = call && call.result && call.result.diagnostics ? call.result.diagnostics : {};\r\n    if (d.lockCandidate) return d.lockCandidate;\r\n    for (var i = 0; i < fieldCandidates.length; i += 1) {\r\n      if (d[fieldCandidates[i]]) return d[fieldCandidates[i]];\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function scenarioKey(row) {\r\n    return clean(row && (row.scenarioKey || row.key || row.id || row.previewKey));\r\n  }\r\n\r\n  function tupleKey(row) {\r\n    return clean(row && row.purposeKey) + \"::\" + clean(row && row.subPurposeKey) + \"::\" + clean(row && row.scenarioType);\r\n  }\r\n\r\n  function indexByScenario(rows) {\r\n    var out = {};\r\n    (rows || []).forEach(function (row) {\r\n      var sk = scenarioKey(row);\r\n      if (sk) out[sk] = row;\r\n      var tk = tupleKey(row);\r\n      if (tk !== \"::::\") out[tk] = row;\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function groupBySelection(scenarioRows) {\r\n    var groups = {};\r\n    (scenarioRows || []).forEach(function (row) {\r\n      var key = clean(row.purposeKey) + \"::\" + clean(row.subPurposeKey);\r\n      if (!groups[key]) groups[key] = [];\r\n      groups[key].push(row);\r\n    });\r\n\r\n    Object.keys(groups).forEach(function (key) {\r\n      groups[key].sort(function (a, b) {\r\n        var order = { balanced_key_fill: 1, rgb_background_accent: 2, compact_support_close_range: 3 };\r\n        return (order[a.scenarioType] || 99) - (order[b.scenarioType] || 99);\r\n      });\r\n    });\r\n\r\n    return groups;\r\n  }\r\n\r\n  function hasType(rows, type) {\r\n    return (rows || []).some(function (row) { return row.scenarioType === type; });\r\n  }\r\n\r\n  function matchByScenarioOrTuple(row, idx) {\r\n    var sk = scenarioKey(row);\r\n    if (sk && idx[sk]) return idx[sk];\r\n    return idx[tupleKey(row)] || null;\r\n  }\r\n\r\n  function buildScenarioMatchRows(scenarioRows, noraRows, visualRows) {\r\n    var noraIdx = indexByScenario(noraRows);\r\n    var visualIdx = indexByScenario(visualRows);\r\n\r\n    return (scenarioRows || []).map(function (row) {\r\n      var nora = matchByScenarioOrTuple(row, noraIdx);\r\n      var visual = matchByScenarioOrTuple(row, visualIdx);\r\n      var roles = Array.isArray(row.recommendedRoles) ? row.recommendedRoles : [];\r\n      var families = Array.isArray(row.allowedFamilies) ? row.allowedFamilies : [];\r\n      var watts = Array.isArray(row.preferredWattBands) ? row.preferredWattBands : [];\r\n\r\n      return {\r\n        selectionKey: clean(row.purposeKey) + \"::\" + clean(row.subPurposeKey),\r\n        purposeKey: clean(row.purposeKey),\r\n        subPurposeKey: clean(row.subPurposeKey),\r\n        scenarioKey: scenarioKey(row),\r\n        scenarioType: clean(row.scenarioType),\r\n        recommendedRoles: roles.slice(0, 5),\r\n        allowedFamilies: families.slice(0, 5),\r\n        preferredWattBands: watts.slice(0, 5),\r\n        noraMatched: !!nora,\r\n        noraScenarioKey: scenarioKey(nora),\r\n        visualMatched: !!visual,\r\n        visualScenarioKey: scenarioKey(visual),\r\n        visualKey: clean(visual && (visual.visualKey || visual.key || visual.id)),\r\n        visualStatus: clean(visual && (visual.status || visual.cdnStatus || visual.cdnUrl || \"\"))\r\n      };\r\n    });\r\n  }\r\n\r\n  function buildSelectionMatrix(groups, scenarioMatchRows) {\r\n    var rowByScenarioKey = {};\r\n    scenarioMatchRows.forEach(function (row) {\r\n      if (row.scenarioKey) rowByScenarioKey[row.scenarioKey] = row;\r\n    });\r\n\r\n    return Object.keys(groups).sort().map(function (selectionKey) {\r\n      var rows = groups[selectionKey] || [];\r\n      var scenarioRows = rows.map(function (row) {\r\n        return rowByScenarioKey[scenarioKey(row)] || null;\r\n      }).filter(Boolean);\r\n\r\n      return {\r\n        selectionKey: selectionKey,\r\n        purposeKey: clean(rows[0] && rows[0].purposeKey),\r\n        subPurposeKey: clean(rows[0] && rows[0].subPurposeKey),\r\n        scenarioCount: rows.length,\r\n        scenarioTypes: rows.map(function (r) { return clean(r.scenarioType); }),\r\n        hasBalancedScenario: hasType(rows, \"balanced_key_fill\"),\r\n        hasRgbScenario: hasType(rows, \"rgb_background_accent\"),\r\n        hasCompactScenario: hasType(rows, \"compact_support_close_range\"),\r\n        allScenarioRowsMatched: scenarioRows.length === rows.length,\r\n        allNoraMatched: scenarioRows.every(function (r) { return r.noraMatched; }),\r\n        allVisualMatched: scenarioRows.every(function (r) { return r.visualMatched; }),\r\n        scenarioRows: scenarioRows\r\n      };\r\n    });\r\n  }\r\n\r\n  function validate(matrix, scenarioMatchRows) {\r\n    var badSelectionCounts = [];\r\n    var missingBalanced = [];\r\n    var missingRgb = [];\r\n    var missingCompact = [];\r\n    var missingNora = [];\r\n    var missingVisual = [];\r\n    var missingScenarioKey = [];\r\n    var duplicateScenarioKeys = [];\r\n    var seenScenario = {};\r\n    var roleMissing = [];\r\n\r\n    (matrix || []).forEach(function (row) {\r\n      if (row.scenarioCount !== 3) badSelectionCounts.push({ selectionKey: row.selectionKey, count: row.scenarioCount });\r\n      if (!row.hasBalancedScenario) missingBalanced.push(row.selectionKey);\r\n      if (!row.hasRgbScenario) missingRgb.push(row.selectionKey);\r\n      if (!row.hasCompactScenario) missingCompact.push(row.selectionKey);\r\n      if (!row.allNoraMatched) missingNora.push(row.selectionKey);\r\n      if (!row.allVisualMatched) missingVisual.push(row.selectionKey);\r\n    });\r\n\r\n    (scenarioMatchRows || []).forEach(function (row) {\r\n      if (!row.scenarioKey) missingScenarioKey.push(row.selectionKey + \"::\" + row.scenarioType);\r\n      if (row.scenarioKey && seenScenario[row.scenarioKey]) duplicateScenarioKeys.push(row.scenarioKey);\r\n      seenScenario[row.scenarioKey] = true;\r\n      if (!row.recommendedRoles || !row.recommendedRoles.length) roleMissing.push(row.scenarioKey || row.selectionKey);\r\n    });\r\n\r\n    return {\r\n      selectionMatrixCountOk: matrix.length === 24,\r\n      scenarioMatchRowCountOk: scenarioMatchRows.length === 72,\r\n      everySelectionHasThreeScenarios: badSelectionCounts.length === 0,\r\n      badSelectionCounts: badSelectionCounts,\r\n      everySelectionHasBalancedScenario: missingBalanced.length === 0,\r\n      missingBalanced: missingBalanced,\r\n      everySelectionHasRgbScenario: missingRgb.length === 0,\r\n      missingRgb: missingRgb,\r\n      everySelectionHasCompactScenario: missingCompact.length === 0,\r\n      missingCompact: missingCompact,\r\n      everyScenarioHasScenarioKey: missingScenarioKey.length === 0,\r\n      missingScenarioKey: missingScenarioKey,\r\n      scenarioKeysUnique: duplicateScenarioKeys.length === 0,\r\n      duplicateScenarioKeys: duplicateScenarioKeys,\r\n      everyScenarioHasRecommendedRole: roleMissing.length === 0,\r\n      roleMissing: roleMissing,\r\n      everySelectionAllNoraMatched: missingNora.length === 0,\r\n      missingNora: missingNora,\r\n      everySelectionAllVisualMatched: missingVisual.length === 0,\r\n      missingVisual: missingVisual\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R28R3ReadonlyScenarioMatchPreview = function () {\r\n    var before = elementCount();\r\n\r\n    var r2 = callSafe(\"debugPanelV4R28R2MainSubPurposeResolverPreview\");\r\n    var a2c = callSafe(\"debugPanelV4R27A2CSetupScenarioLibraryLockVerify\");\r\n    var a3c = callSafe(\"debugPanelV4R27A3CNoraVoiceLibraryLockVerify\");\r\n    var a4c = callSafe(\"debugPanelV4R27A4CCdnVisualManifestLockVerify\");\r\n\r\n    var scenarioLock = lockFrom(a2c, [\"setupScenarioLibrary\", \"scenarioLibrary\"]);\r\n    var noraLock = lockFrom(a3c, [\"noraLibrary\", \"voiceLibrary\"]);\r\n    var visualLock = lockFrom(a4c, [\"visualManifest\", \"cdnVisualManifest\"]);\r\n\r\n    var scenarioRows = rowsFromLock(scenarioLock);\r\n    var noraRows = rowsFromLock(noraLock);\r\n    var visualRows = rowsFromLock(visualLock);\r\n\r\n    var groups = groupBySelection(scenarioRows);\r\n    var scenarioMatchRows = buildScenarioMatchRows(scenarioRows, noraRows, visualRows);\r\n    var matrix = buildSelectionMatrix(groups, scenarioMatchRows);\r\n    var validation = validate(matrix, scenarioMatchRows);\r\n\r\n    var preview = {\r\n      libraryName: \"GDX_PANEL_LED_V4_R28_READONLY_SCENARIO_MATCH_PREVIEW\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R28-R3-READONLY-SCENARIO-MATCH-PREVIEW-CANDIDATE\",\r\n      sourceRule: \"24 selection x 3 scenarioType = 72 scenario match rows. Readonly only.\",\r\n      selectionCount: matrix.length,\r\n      scenarioMatchRowCount: scenarioMatchRows.length,\r\n      selectionMatrix: matrix,\r\n      scenarioMatchRows: scenarioMatchRows,\r\n      nextBridgeContract: {\r\n        activePurposeKey: \"R28 live UI selected main purpose\",\r\n        activeSubPurposeKey: \"R28 live UI selected sub purpose\",\r\n        activeSelectionKey: \"purposeKey::subPurposeKey\",\r\n        scenarioType: \"balanced_key_fill | rgb_background_accent | compact_support_close_range\",\r\n        output: \"scenarioKey + NORA + visualManifest row\"\r\n      }\r\n    };\r\n\r\n    var after = elementCount();\r\n\r\n    var checks = {\r\n      scenarioMatchPreviewGenerated: !!preview,\r\n      productPoolReady: productPool().length === 19,\r\n      r28R2ResolverPreviewOk: r2.ok === true,\r\n      r27ScenarioLockOk: a2c.ok === true && scenarioRows.length === 72,\r\n      r27NoraLockOk: a3c.ok === true && noraRows.length === 72,\r\n      r27VisualManifestLockOk: a4c.ok === true && visualRows.length === 72,\r\n\r\n      selectionMatrixCount24: validation.selectionMatrixCountOk,\r\n      scenarioMatchRowCount72: validation.scenarioMatchRowCountOk,\r\n      everySelectionHasThreeScenarios: validation.everySelectionHasThreeScenarios,\r\n      everySelectionHasBalancedScenario: validation.everySelectionHasBalancedScenario,\r\n      everySelectionHasRgbScenario: validation.everySelectionHasRgbScenario,\r\n      everySelectionHasCompactScenario: validation.everySelectionHasCompactScenario,\r\n      everyScenarioHasScenarioKey: validation.everyScenarioHasScenarioKey,\r\n      scenarioKeysUnique: validation.scenarioKeysUnique,\r\n      everyScenarioHasRecommendedRole: validation.everyScenarioHasRecommendedRole,\r\n      everySelectionAllNoraMatched: validation.everySelectionAllNoraMatched,\r\n      everySelectionAllVisualMatched: validation.everySelectionAllVisualMatched,\r\n      nextBridgeContractReady: !!(preview.nextBridgeContract && preview.nextBridgeContract.output),\r\n      copyReady: scenarioMatchRows.length === 72,\r\n\r\n      noDomMutationByThisAudit: after === before,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.scenarioMatchPreviewGenerated &&\r\n      checks.productPoolReady &&\r\n      checks.r28R2ResolverPreviewOk &&\r\n      checks.r27ScenarioLockOk &&\r\n      checks.r27NoraLockOk &&\r\n      checks.r27VisualManifestLockOk &&\r\n      checks.selectionMatrixCount24 &&\r\n      checks.scenarioMatchRowCount72 &&\r\n      checks.everySelectionHasThreeScenarios &&\r\n      checks.everySelectionHasBalancedScenario &&\r\n      checks.everySelectionHasRgbScenario &&\r\n      checks.everySelectionHasCompactScenario &&\r\n      checks.everyScenarioHasScenarioKey &&\r\n      checks.scenarioKeysUnique &&\r\n      checks.everyScenarioHasRecommendedRole &&\r\n      checks.everySelectionAllNoraMatched &&\r\n      checks.everySelectionAllVisualMatched &&\r\n      checks.nextBridgeContractReady &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: productPool().length,\r\n        sourceCalls: {\r\n          r28R2: { exists: r2.exists, ok: r2.ok, elementDelta: r2.elementDelta, error: r2.error },\r\n          r27A2C: { exists: a2c.exists, ok: a2c.ok, elementDelta: a2c.elementDelta, error: a2c.error },\r\n          r27A3C: { exists: a3c.exists, ok: a3c.ok, elementDelta: a3c.elementDelta, error: a3c.error },\r\n          r27A4C: { exists: a4c.exists, ok: a4c.ok, elementDelta: a4c.elementDelta, error: a4c.error }\r\n        },\r\n        counts: {\r\n          scenarioRows: scenarioRows.length,\r\n          noraRows: noraRows.length,\r\n          visualRows: visualRows.length,\r\n          selectionMatrixRows: matrix.length,\r\n          scenarioMatchRows: scenarioMatchRows.length\r\n        },\r\n        validation: validation,\r\n        scenarioMatchPreview: preview,\r\n        copyableScenarioMatchPreviewJson: JSON.stringify(preview, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R3 PASS. 24 selection x 3 scenarioType = 72 scenario match preview haz\u0131r; NORA ve Visual e\u015Fle\u015Fmeleri tam.\"\r\n          : \"R28-R3 HOLD. Scenario/NORA/Visual match matrisinde eksik var; validation alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R4 Safe UI Patch: Main Purpose + Sub-Purpose Selection\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R3-READONLY-SCENARIO-MATCH-PREVIEW-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R28-R4-SAFE-UI-PATCH-MAIN-SUBPURPOSE-SELECTION\r\n   FAZ:\r\n   R28-R4\r\n\r\n   AMA\u00C7:\r\n   8 ana ama\u00E7 + 24 alt ama\u00E7 canl\u0131 se\u00E7im UI'\u0131n\u0131 g\u00FCvenli \u015Fekilde ekler.\r\n   Bu faz sadece se\u00E7im UI/state \u00FCretir.\r\n   Recommender / Setup modal / NORA resolver bridge R28-R5'e b\u0131rak\u0131l\u0131r.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   1) Sayfay\u0131 yenile.\r\n   2) Panel motoru a\u00E7.\r\n   3) 8 ana ama\u00E7 alan\u0131n\u0131 g\u00F6r.\r\n   4) Bir ana ama\u00E7 se\u00E7.\r\n   5) 3 alt ama\u00E7tan birini se\u00E7.\r\n   6) Console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R4SafeUiPatchMainSubPurposeSelection()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R4-SAFE-UI-PATCH-MAIN-SUBPURPOSE-SELECTION\";\r\n  var VERSION = \"PANEL-V4-R28-R4-SAFE-UI-PATCH-MAIN-SUBPURPOSE-SELECTION-V1\";\r\n\r\n  if (window.GDX_PANEL_V4_R28_R4_READY) return;\r\n  window.GDX_PANEL_V4_R28_R4_READY = true;\r\n  window.GDX_PANEL_V4_R30_R1_READY = true;\r\n\r\n  window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT = {\r\n    phase: \"PANEL-V4-R30-R1-OPENING-SELECTION-CUSTOMER-COPY-CTA-SIMPLIFICATION-SOURCE-APPLICATION\",\r\n    version: \"PANEL-V4-R30-R1-OPENING-SELECTION-CUSTOMER-COPY-CTA-SIMPLIFICATION-V1\",\r\n    sourceOwner: \"assets/panel-led-v4.ui.js / R28 render()\",\r\n    selectionOwner: \"R28\",\r\n    recommendationTarget: \"gdxPanelV4RecommendationPreview\",\r\n    ctaMode: \"EXISTING_R28_DELEGATED_CLICK_SCROLL_ONLY\",\r\n    observerAdded: false,\r\n    documentClickListenerAdded: false,\r\n    recurringTimerAdded: false\r\n  };\r\n\r\n  window.GDX_PANEL_V4_R30_R2_R1_READY = true;\r\n\r\n  window.GDX_PANEL_V4_R30_R2_R1_DENSITY_CONTRACT = {\r\n    phase: \"PANEL-V4-R30-R2-R1-OPENING-SELECTION-REDUNDANCY-DENSITY-SIMPLIFICATION-SOURCE-APPLICATION\",\r\n    version: \"PANEL-V4-R30-R2-R1-OPENING-SELECTION-REDUNDANCY-DENSITY-SIMPLIFICATION-V1\",\r\n    sourceOwner: \"assets/panel-led-v4.ui.js / R28 render()\",\r\n    selectionOwner: \"R28\",\r\n    selectedStateOwner: \"R30 action summary\",\r\n    headerStateChips: \"RETIRED\",\r\n    purposeMicroLabelMode: \"SEQUENCE_NUMBER_ONLY\",\r\n    purposeMetaRows: \"RETIRED\",\r\n    subSectionTitle: \"\u00C7ekim senaryonu se\u00E7\",\r\n    ctaOwner: \"EXISTING_R28_DELEGATED_CLICK_LISTENER\",\r\n    observerAdded: false,\r\n    documentClickListenerAdded: false,\r\n    recurringTimerAdded: false\r\n  };\r\n\r\n  window.GDX_PANEL_V4_R30_R3_R1_READY = true;\r\n\r\n  window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT = {\r\n    phase: \"PANEL-V4-R30-R3-R1-OPENING-SELECTION-ACCESSIBILITY-FOCUS-ARIA-SEMANTICS-SOURCE-APPLICATION\",\r\n    version: \"PANEL-V4-R30-R3-R1-OPENING-SELECTION-ACCESSIBILITY-FOCUS-ARIA-SEMANTICS-V1\",\r\n    sourceOwner: \"assets/panel-led-v4.ui.js / R28 render() + R28 source-owned CSS\",\r\n    selectionOwner: \"R28\",\r\n    interactionMode: \"NATIVE_BUTTON_NORMAL_TAB_ORDER\",\r\n    selectedStateMode: \"ARIA_PRESSED\",\r\n    purposeGroupRole: \"group\",\r\n    subPurposeGroupRole: \"group\",\r\n    summaryLiveRegion: \"ROLE_STATUS_POLITE_ATOMIC\",\r\n    focusVisibleOwner: \"R28_SOURCE_CSS\",\r\n    ctaOwner: \"EXISTING_R28_DELEGATED_CLICK_LISTENER\",\r\n    rovingTabindexAdded: false,\r\n    keyboardListenerAdded: false,\r\n    observerAdded: false,\r\n    documentClickListenerAdded: false,\r\n    recurringTimerAdded: false\r\n  };\r\n\r\n  var state = {\r\n    modelReady: false,\r\n    blueprint: null,\r\n    activePurposeKey: \"\",\r\n    activeSubPurposeKey: \"\",\r\n    activeSelectionKey: \"\",\r\n    renderCount: 0,\r\n    lastRenderAt: 0,\r\n    lastAction: \"\",\r\n    lastError: \"\"\r\n  };\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function escapeHtml(v) {\r\n    return String(v == null ? \"\" : v).replace(/[&<>\"']/g, function (ch) {\r\n      return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[ch];\r\n    });\r\n  }\r\n\r\n  function all(sel, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && (rect.width < 4 || rect.height < 4)) return false;\r\n    return true;\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function root() {\r\n    return document.getElementById(\"gdx-panel-led-v4-root\") || document.getElementById(\"gdxPanelV4Shell\") || document.body;\r\n  }\r\n\r\n  /* P2-C-R6-R3.12 \u2014 R28 owner-scope repair.\r\n     Keep shell identity exact: R28 must never fall back to root/body. */\r\n  function shell() {\r\n    return document.getElementById(\"gdxPanelV4Shell\");\r\n  }\r\n\r\n  function shellPanel() {\r\n    return document.querySelector(\"#gdxPanelV4Shell .gdx-panel-v4-panel\") || document.getElementById(\"gdxPanelV4Shell\") || root();\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function injectStyle() {\r\n    if (document.getElementById(\"gdxPanelV4R28R4Style\")) return;\r\n\r\n    var css = \"\"\r\n      + \".gdx-panel-v4-r28-selector{margin:16px 0!important;padding:16px!important;border:1px solid rgba(15,23,42,.10)!important;border-radius:22px!important;background:linear-gradient(180deg,#ffffff,#f8fafc)!important;box-shadow:0 16px 48px rgba(15,23,42,.08)!important;color:#0f172a!important;max-width:100%!important;overflow:hidden!important}\"\r\n      + \".gdx-panel-v4-r28-selector *{box-sizing:border-box!important}\"\r\n      + \".gdx-panel-v4-r28-head{display:block!important;margin-bottom:11px!important}\"\r\n      + \".gdx-panel-v4-r28-kicker{font-size:11px!important;font-weight:900!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:#0f766e!important;margin-bottom:3px!important}\"\r\n      + \".gdx-panel-v4-r28-head h3{margin:0!important;font-size:20px!important;line-height:1.15!important;color:#0f172a!important}\"\r\n      + \".gdx-panel-v4-r28-head p{margin:5px 0 0!important;font-size:12px!important;line-height:1.42!important;color:#475569!important}\"\r\n      + \".gdx-panel-v4-r28-main-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;margin-bottom:10px!important}\"\r\n      + \".gdx-panel-v4-r28-purpose{appearance:none!important;border:1px solid rgba(15,23,42,.10)!important;background:#fff!important;border-radius:14px!important;padding:9px 10px!important;text-align:left!important;cursor:pointer!important;min-height:64px!important;display:flex!important;flex-direction:column!important;justify-content:center!important;gap:3px!important;color:#0f172a!important;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease!important}\"\r\n      + \".gdx-panel-v4-r28-purpose:hover{transform:translateY(-1px)!important;border-color:rgba(15,118,110,.35)!important;box-shadow:0 10px 26px rgba(15,23,42,.10)!important}\"\r\n      + \".gdx-panel-v4-r28-purpose:focus-visible,.gdx-panel-v4-r28-sub:focus-visible{outline:3px solid #0284c7!important;outline-offset:3px!important;box-shadow:0 0 0 5px rgba(2,132,199,.16)!important}\"\r\n      + \".gdx-panel-v4-r28-purpose.is-active{border-color:#0f766e!important;background:#f0fdfa!important;box-shadow:0 10px 26px rgba(15,118,110,.16)!important}\"\r\n      + \".gdx-panel-v4-r28-purpose small{font-size:9px!important;line-height:1!important;font-weight:900!important;letter-spacing:.12em!important;color:#0f766e!important}\"\r\n      + \".gdx-panel-v4-r28-purpose strong{font-size:13px!important;line-height:1.2!important;color:#0f172a!important}\"\r\n      + \".gdx-panel-v4-r28-sub-wrap{border:1px solid rgba(15,118,110,.18)!important;border-radius:17px!important;padding:11px!important;background:#f8fffd!important}\"\r\n      + \".gdx-panel-v4-r28-sub-title{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important;margin-bottom:8px!important}\"\r\n      + \".gdx-panel-v4-r28-sub-title strong{font-size:13px!important;line-height:1.2!important;color:#0f172a!important}\"\r\n      + \".gdx-panel-v4-r28-sub-grid{display:grid!important;grid-template-columns:1fr!important;gap:8px!important}\"\r\n      + \".gdx-panel-v4-r28-sub{appearance:none!important;border:1px solid rgba(15,23,42,.10)!important;background:#fff!important;border-radius:14px!important;padding:11px!important;text-align:left!important;cursor:pointer!important;display:grid!important;gap:4px!important;color:#0f172a!important}\"\r\n      + \".gdx-panel-v4-r28-sub.is-active{border-color:#0f766e!important;background:#ecfeff!important;box-shadow:0 10px 24px rgba(14,116,144,.14)!important}\"\r\n      + \".gdx-panel-v4-r28-sub strong{font-size:13px!important;line-height:1.25!important;color:#0f172a!important}\"\r\n      + \".gdx-panel-v4-r28-sub span{font-size:12px!important;line-height:1.4!important;color:#475569!important}\"\r\n      + \".gdx-panel-v4-r28-action{margin-top:12px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:14px!important;padding:12px!important;border:1px solid rgba(15,118,110,.20)!important;border-radius:16px!important;background:#ffffff!important}\"\r\n      + \".gdx-panel-v4-r28-note{margin:0!important;min-width:0!important;display:grid!important;gap:3px!important;color:#475569!important}\"\r\n      + \".gdx-panel-v4-r28-note span{font-size:10px!important;line-height:1!important;font-weight:900!important;letter-spacing:.10em!important;text-transform:uppercase!important;color:#0f766e!important}\"\r\n      + \".gdx-panel-v4-r28-note strong{font-size:13px!important;line-height:1.3!important;color:#0f172a!important}\"\r\n      + \".gdx-panel-v4-r28-note small{font-size:11px!important;line-height:1.4!important;color:#64748b!important}\"\r\n      + \".gdx-panel-v4-r30-cta{appearance:none!important;flex:0 0 auto!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;min-height:44px!important;border:1px solid #0f766e!important;border-radius:999px!important;padding:11px 17px!important;background:#0f766e!important;color:#ffffff!important;font-size:12px!important;font-weight:900!important;line-height:1!important;cursor:pointer!important;box-shadow:0 10px 26px rgba(15,118,110,.22)!important;transition:transform .18s ease,box-shadow .18s ease,background .18s ease!important}\"\r\n      + \".gdx-panel-v4-r30-cta:hover{transform:translateY(-1px)!important;background:#0d665f!important;box-shadow:0 13px 30px rgba(15,118,110,.28)!important}\"\r\n      + \".gdx-panel-v4-r30-cta:focus-visible{outline:3px solid #0284c7!important;outline-offset:3px!important;box-shadow:0 0 0 5px rgba(2,132,199,.16)!important}\"\r\n      + \".gdx-panel-v4-r30-cta span{font-size:15px!important;line-height:1!important}\"\r\n      + \"@media(min-width:820px){.gdx-panel-v4-r28-main-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}.gdx-panel-v4-r28-sub-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important}.gdx-panel-v4-r28-purpose{min-height:72px!important}.gdx-panel-v4-r28-head h3{font-size:22px!important}}\"\r\n      + \"@media(max-width:520px){.gdx-panel-v4-r28-main-grid{grid-template-columns:1fr!important}.gdx-panel-v4-r28-purpose{min-height:58px!important}.gdx-panel-v4-r28-selector{padding:13px!important;border-radius:18px!important}.gdx-panel-v4-r28-action{align-items:stretch!important;flex-direction:column!important}.gdx-panel-v4-r30-cta{width:100%!important}}\";\r\n\r\n    var st = document.createElement(\"style\");\r\n    st.id = \"gdxPanelV4R28R4Style\";\r\n    st.textContent = css;\r\n    document.head.appendChild(st);\r\n  }\r\n\r\n  function callBlueprint() {\r\n    if (state.modelReady && state.blueprint) return state.blueprint;\r\n\r\n    if (typeof window.debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix !== \"function\") {\r\n      state.lastError = \"r28_r1_r1_blueprint_function_missing\";\r\n      return null;\r\n    }\r\n\r\n    try {\r\n      var res = window.debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix();\r\n      var bp = res && res.diagnostics && res.diagnostics.selectionUiBlueprint\r\n        ? res.diagnostics.selectionUiBlueprint\r\n        : null;\r\n\r\n      if (bp && Array.isArray(bp.mainPurposes) && bp.mainPurposes.length === 8 && Array.isArray(bp.flatSelections) && bp.flatSelections.length === 25) {\r\n        state.blueprint = bp;\r\n        state.modelReady = true;\r\n        state.lastError = \"\";\r\n\r\n        /* FS1R-R5.2: blueprint readiness is NOT a selection.\r\n           EMPTY must stay EMPTY until an explicit commit/deep-link restore. */\r\n        syncSelectionKey();\r\n        publishState(\r\n          state.activeSelectionKey\r\n            ? \"model_ready_with_committed_selection\"\r\n            : \"model_ready_empty\"\r\n        );\r\n        return bp;\r\n      }\r\n\r\n      state.lastError = \"blueprint_not_ready\";\r\n      return null;\r\n    } catch (e) {\r\n      state.lastError = e && e.message ? e.message : String(e);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function activePurpose(bp) {\r\n    bp = bp || state.blueprint;\r\n    var arr = bp && Array.isArray(bp.mainPurposes) ? bp.mainPurposes : [];\r\n\r\n    if (!String(state.activePurposeKey || '').trim()) {\r\n      return null;\r\n    }\r\n\r\n    return arr.find(function (p) {\r\n      return p.purposeKey === state.activePurposeKey;\r\n    }) || null;\r\n  }\r\n\r\n  function activeSubPurpose(bp) {\r\n    var p = activePurpose(bp);\r\n\r\n    if (\r\n      !p ||\r\n      !Array.isArray(p.subPurposes) ||\r\n      !String(state.activeSubPurposeKey || '').trim()\r\n    ) {\r\n      return null;\r\n    }\r\n\r\n    return p.subPurposes.find(function (s) {\r\n      return s.subPurposeKey === state.activeSubPurposeKey;\r\n    }) || null;\r\n  }\r\n\r\n  function syncSelectionKey() {\r\n    state.activeSelectionKey = state.activePurposeKey && state.activeSubPurposeKey\r\n      ? state.activePurposeKey + \"::\" + state.activeSubPurposeKey\r\n      : \"\";\r\n  }\r\n\r\n  function flatSelection(bp) {\r\n    bp = bp || state.blueprint;\r\n    var rows = bp && Array.isArray(bp.flatSelections) ? bp.flatSelections : [];\r\n    return rows.find(function (r) { return r.selectionKey === state.activeSelectionKey; }) || null;\r\n  }\r\n\r\n  function publicState() {\r\n    var bp = state.blueprint;\r\n    var p = activePurpose(bp);\r\n    var s = activeSubPurpose(bp);\r\n    var flat = flatSelection(bp);\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      activePurposeKey: state.activePurposeKey,\r\n      activeSubPurposeKey: state.activeSubPurposeKey,\r\n      activeSelectionKey: state.activeSelectionKey,\r\n      activePurposeTitle: clean(p && p.title),\r\n      activeSubPurposeTitle: clean(s && s.title),\r\n      activeIntentHint: clean(s && s.intentHint),\r\n      activePriorityRole: clean((flat && flat.priorityRole) || (s && s.priorityRole)),\r\n      scenarioCount: flat ? Number(flat.linkedScenarioCount || 0) : 0,\r\n      linkedScenarioTypes: flat && Array.isArray(flat.linkedScenarioTypes) ? flat.linkedScenarioTypes.slice() : [],\r\n      modelReady: state.modelReady,\r\n      updatedAt: Date.now()\r\n    };\r\n  }\r\n\r\n  var r2dLastDispatchedSelectionKey = \"\";\r\n  window.GDX_PANEL_V4_R2D33_PERF_STATE = window.GDX_PANEL_V4_R2D33_PERF_STATE || {\r\n    version: \"PANEL-V4-ETAP2-R2D-REV3.3-PERFORMANCE-STATE-V1\",\r\n    selectionDispatchCount: 0,\r\n    silentPublishCount: 0,\r\n    r28ScheduledRenderCount: 0,\r\n    r28ExecutedRenderCount: 0,\r\n    fastOpenCount: 0\r\n  };\r\n\r\n  function publishState(reason) {\r\n    syncSelectionKey();\r\n    var payload = publicState();\r\n    payload.reason = reason || \"selection_update\";\r\n\r\n    window.GDX_PANEL_V4_R28_SELECTION_STATE = payload;\r\n\r\n    /* Passive re-renders must not emit another selection-change event when the\r\n       committed selection key did not change. This removes the historical\r\n       render -> event -> full UI render feedback loop. */\r\n    var shouldDispatch = payload.activeSelectionKey !== r2dLastDispatchedSelectionKey;\r\n    if (shouldDispatch) {\r\n      r2dLastDispatchedSelectionKey = payload.activeSelectionKey;\r\n      window.GDX_PANEL_V4_R2D33_PERF_STATE.selectionDispatchCount += 1;\r\n      try {\r\n        window.dispatchEvent(new CustomEvent(\"gdx-panel-v4-r28-selection-change\", { detail: payload }));\r\n      } catch (e) {\r\n        try {\r\n          var ev = document.createEvent(\"CustomEvent\");\r\n          ev.initCustomEvent(\"gdx-panel-v4-r28-selection-change\", true, true, payload);\r\n          window.dispatchEvent(ev);\r\n        } catch (ignore) {}\r\n      }\r\n    } else {\r\n      window.GDX_PANEL_V4_R2D33_PERF_STATE.silentPublishCount += 1;\r\n    }\r\n\r\n    return payload;\r\n  }\r\n\r\n  function mountPoint() {\r\n    var r = root();\r\n    var sh = shell();\r\n    if (!r || !sh) return null;\r\n\r\n    /* R3.10 \u2014 R28 and every surface that follows it must stay inside\r\n       #gdxPanelV4Shell. The old r.firstElementChild fallback resolves to the\r\n       launcher and leaks R28 + TOP3 onto the landing page. */\r\n    return (\r\n      sh.querySelector(\".gdx-panel-v4-safe-card\") ||\r\n      sh.querySelector(\".gdx-panel-v4-slot-grid\") ||\r\n      sh.querySelector(\".gdx-panel-v4-selection-wrap\") ||\r\n      sh.querySelector(\".gdx-panel-v4-body\") ||\r\n      null\r\n    );\r\n  }\r\n\r\n  function ensureMount() {\r\n    var existing = document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n\r\n    if (existing) {\r\n      var existingShell = shell();\r\n      var existingTarget = mountPoint();\r\n\r\n      /* Recover safely even if a stale runtime already created R28 outside shell. */\r\n      if (\r\n        existingShell &&\r\n        !existingShell.contains(existing) &&\r\n        existingTarget &&\r\n        existingTarget.parentNode\r\n      ) {\r\n        existingTarget.parentNode.insertBefore(existing, existingTarget);\r\n      }\r\n\r\n      existing.setAttribute(\r\n        \"data-gdx-panel-r30-opening-source-owned\",\r\n        \"1\"\r\n      );\r\n      existing.setAttribute(\"data-gdx-panel-r310-shell-contained\", \"1\");\r\n\r\n      if (\r\n        typeof window.GDX_PANEL_V4_PLACE_RECOMMENDATION_AFTER_R28 ===\r\n        \"function\"\r\n      ) {\r\n        window.GDX_PANEL_V4_PLACE_RECOMMENDATION_AFTER_R28();\r\n      }\r\n\r\n      return existing;\r\n    }\r\n\r\n    var target = mountPoint();\r\n    if (!target) return null;\r\n\r\n    var el = document.createElement(\"section\");\r\n    el.id = \"gdxPanelV4R28SelectionSystem\";\r\n    el.className = \"gdx-panel-v4-r28-selector\";\r\n    el.setAttribute(\"data-gdx-panel-r28-selection-system\", \"1\");\r\n    el.setAttribute(\r\n      \"data-gdx-panel-r30-opening-source-owned\",\r\n      \"1\"\r\n    );\r\n    el.setAttribute(\"data-gdx-panel-r310-shell-contained\", \"1\");\r\n\r\n    if (target.id === \"gdxPanelV4P16CompactCommandPanel\" && target.parentNode) {\r\n      target.parentNode.insertBefore(el, target.nextSibling);\r\n    } else if (target.classList && target.classList.contains(\"gdx-panel-v4-safe-card\") && target.parentNode) {\r\n      target.parentNode.insertBefore(el, target.nextSibling);\r\n    } else if (target.parentNode) {\r\n      target.parentNode.insertBefore(el, target);\r\n    } else {\r\n      /* R3.12 fail closed: never mount R28 outside #gdxPanelV4Shell. */\r\n      return null;\r\n    }\r\n\r\n    if (\r\n      typeof window.GDX_PANEL_V4_PLACE_RECOMMENDATION_AFTER_R28 ===\r\n      \"function\"\r\n    ) {\r\n      window.GDX_PANEL_V4_PLACE_RECOMMENDATION_AFTER_R28();\r\n    }\r\n\r\n    return el;\r\n  }\r\n\r\n  function renderPurposeButton(p, index) {\r\n    var active = p.purposeKey === state.activePurposeKey;\r\n\r\n    return \"\"\r\n      + '<button type=\"button\" class=\"gdx-panel-v4-r28-purpose ' + (active ? \"is-active\" : \"\") + '\" data-gdx-panel-r28-purpose=\"' + escapeHtml(p.purposeKey) + '\" aria-pressed=\"' + (active ? \"true\" : \"false\") + '\">'\r\n        + '<small aria-hidden=\"true\">' + escapeHtml(String(index + 1).padStart(2, \"0\")) + '</small>'\r\n        + '<strong>' + escapeHtml(p.title || p.shortTitle || p.purposeKey) + '</strong>'\r\n      + '</button>';\r\n  }\r\n\r\n  function renderSubButton(sub, p) {\r\n    var active = sub.subPurposeKey === state.activeSubPurposeKey;\r\n    var key = p.purposeKey + \"::\" + sub.subPurposeKey;\r\n\r\n    return \"\"\r\n      + '<button type=\"button\" class=\"gdx-panel-v4-r28-sub ' + (active ? \"is-active\" : \"\") + '\" data-gdx-panel-r28-subpurpose=\"' + escapeHtml(sub.subPurposeKey) + '\" data-gdx-panel-r28-selection-key=\"' + escapeHtml(key) + '\" aria-pressed=\"' + (active ? \"true\" : \"false\") + '\">'\r\n        + '<strong>' + escapeHtml(sub.title || sub.shortTitle || sub.subPurposeKey) + '</strong>'\r\n        + '<span>' + escapeHtml(sub.intentHint || \"\") + '</span>'\r\n      + '</button>';\r\n  }\r\n\r\n  function render() {\r\n    var deferredGate = window.CANFOTO_PANEL_DEFERRED_RESULTS_GATE || null;\r\n    if (\r\n      deferredGate &&\r\n      typeof deferredGate.isDeferred === \"function\" &&\r\n      deferredGate.isDeferred()\r\n    ) {\r\n      state.lastAction = \"deferred_until_explicit_decision_apply\";\r\n      return true;\r\n    }\r\n\r\n    injectStyle();\r\n\r\n    var bp = callBlueprint();\r\n    var mount = ensureMount();\r\n    if (!mount) return false;\r\n\r\n    if (!bp) {\r\n      mount.innerHTML = '<div class=\"gdx-panel-v4-r28-kicker\">NE \u0130\u00C7\u0130N KULLANACAKSIN?</div><p>Kullan\u0131m se\u00E7enekleri haz\u0131rlan\u0131yor.</p>';\r\n      return false;\r\n    }\r\n\r\n    if (\r\n      !String(state.activePurposeKey || '').trim() ||\r\n      !String(state.activeSubPurposeKey || '').trim()\r\n    ) {\r\n      syncSelectionKey();\r\n      publishState(\"render_incomplete_selection\");\r\n\r\n      mount.innerHTML = \"\";\r\n      mount.hidden = true;\r\n      mount.setAttribute(\"aria-hidden\", \"true\");\r\n      return false;\r\n    }\r\n\r\n    var p = activePurpose(bp);\r\n    if (!p) return false;\r\n\r\n    syncSelectionKey();\r\n\r\n    var sub = activeSubPurpose(bp);\r\n    if (!sub) return false;\r\n\r\n    mount.hidden = false;\r\n    mount.setAttribute(\"aria-hidden\", \"false\");\r\n    var payload = publishState(\"render\");\r\n\r\n    mount.innerHTML = \"\"\r\n      + '<div class=\"gdx-panel-v4-r28-head\">'\r\n        + '<div class=\"gdx-panel-v4-r28-kicker\">NE \u0130\u00C7\u0130N KULLANACAKSIN?</div>'\r\n        + '<h3>Amac\u0131n\u0131 se\u00E7, sana uygun 3 Panel LED\u2019i birlikte de\u011Ferlendirelim</h3>'\r\n        + '<p>\u00D6nce ana kullan\u0131m alan\u0131n\u0131, ard\u0131ndan \u00E7ekim senaryonu se\u00E7. \u00D6neriler se\u00E7imlerine g\u00F6re an\u0131nda g\u00FCncellenir.</p>'\r\n      + '</div>'\r\n      + '<div class=\"gdx-panel-v4-r28-main-grid\" role=\"group\" aria-label=\"Ana kullan\u0131m ama\u00E7lar\u0131\">'\r\n        + bp.mainPurposes.map(renderPurposeButton).join(\"\")\r\n      + '</div>'\r\n      + '<div class=\"gdx-panel-v4-r28-sub-wrap\" data-gdx-panel-r28-subwrap=\"1\">'\r\n        + '<div class=\"gdx-panel-v4-r28-sub-title\">'\r\n          + '<strong>\u00C7ekim senaryonu se\u00E7</strong>'\r\n        + '</div>'\r\n        + '<div class=\"gdx-panel-v4-r28-sub-grid\" role=\"group\" aria-label=\"Alt kullan\u0131m ama\u00E7lar\u0131\">'\r\n          + (p.subPurposes || []).map(function (item) { return renderSubButton(item, p); }).join(\"\")\r\n        + '</div>'\r\n        + '<div class=\"gdx-panel-v4-r28-action\" data-gdx-panel-r30-opening-action=\"1\">'\r\n          + '<div class=\"gdx-panel-v4-r28-note\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">'\r\n            + '<span>SE\u00C7\u0130M\u0130N</span>'\r\n            + '<strong>' + escapeHtml(payload.activePurposeTitle || \"Ana ama\u00E7\") + ' \u00B7 ' + escapeHtml(payload.activeSubPurposeTitle || \"Alt ama\u00E7\") + '</strong>'\r\n            + '<small>Bu se\u00E7ime g\u00F6re 3 \u00F6neri haz\u0131r.</small>'\r\n          + '</div>'\r\n          + '<button type=\"button\" class=\"gdx-panel-v4-r30-cta\" data-gdx-panel-r30-open-recommendations=\"1\" aria-controls=\"gdxPanelV4RecommendationPreview\">'\r\n            + '\u00D6nerileri \u0130ncele <span aria-hidden=\"true\">\u2193</span>'\r\n          + '</button>'\r\n        + '</div>'\r\n      + '</div>';\r\n\r\n    state.renderCount += 1;\r\n    state.lastRenderAt = Date.now();\r\n    state.lastAction = \"render\";\r\n\r\n    bind(mount);\r\n    return true;\r\n  }\r\n\r\n  function bind(mount) {\r\n    if (!mount || mount.getAttribute(\"data-gdx-panel-r28-bound\") === \"1\") return;\r\n    mount.setAttribute(\"data-gdx-panel-r28-bound\", \"1\");\r\n\r\n    mount.addEventListener(\"click\", function (event) {\r\n      var purposeBtn = event.target.closest && event.target.closest(\"[data-gdx-panel-r28-purpose]\");\r\n      var subBtn = event.target.closest && event.target.closest(\"[data-gdx-panel-r28-subpurpose]\");\r\n      var recommendationBtn = event.target.closest && event.target.closest(\"[data-gdx-panel-r30-open-recommendations]\");\r\n\r\n      if (recommendationBtn && mount.contains(recommendationBtn)) {\r\n        var recommendationTarget =\r\n          document.getElementById(\r\n            \"gdxPanelV4RecommendationPreview\"\r\n          );\r\n\r\n        if (\r\n          recommendationTarget &&\r\n          typeof recommendationTarget.scrollIntoView ===\r\n            \"function\"\r\n        ) {\r\n          var reduceMotion =\r\n            window.matchMedia &&\r\n            window.matchMedia(\r\n              \"(prefers-reduced-motion: reduce)\"\r\n            ).matches;\r\n\r\n          recommendationTarget.scrollIntoView({\r\n            behavior:\r\n              reduceMotion\r\n                ? \"auto\"\r\n                : \"smooth\",\r\n            block:\r\n              \"start\"\r\n          });\r\n\r\n          state.lastAction =\r\n            \"opening_recommendations_cta\";\r\n        }\r\n\r\n        event.preventDefault();\r\n        return;\r\n      }\r\n\r\n      if (purposeBtn && mount.contains(purposeBtn)) {\r\n        var purposeKey = clean(purposeBtn.getAttribute(\"data-gdx-panel-r28-purpose\"));\r\n        var bp = callBlueprint();\r\n        var p = (bp.mainPurposes || []).find(function (item) { return item.purposeKey === purposeKey; });\r\n\r\n        if (p) {\r\n          state.activePurposeKey = p.purposeKey;\r\n          state.activeSubPurposeKey = p.subPurposes && p.subPurposes[0] ? p.subPurposes[0].subPurposeKey : \"\";\r\n          syncSelectionKey();\r\n          publishState(\"purpose_click\");\r\n          render();\r\n        }\r\n\r\n        event.preventDefault();\r\n        return;\r\n      }\r\n\r\n      if (subBtn && mount.contains(subBtn)) {\r\n        var subKey = clean(subBtn.getAttribute(\"data-gdx-panel-r28-subpurpose\"));\r\n        var selectionKey = clean(subBtn.getAttribute(\"data-gdx-panel-r28-selection-key\"));\r\n        var bp2 = callBlueprint();\r\n        var p2 = activePurpose(bp2);\r\n        var sub = p2 && (p2.subPurposes || []).find(function (item) { return item.subPurposeKey === subKey; });\r\n\r\n        if (sub) {\r\n          state.activeSubPurposeKey = sub.subPurposeKey;\r\n          state.activeSelectionKey = selectionKey || (state.activePurposeKey + \"::\" + state.activeSubPurposeKey);\r\n          publishState(\"subpurpose_click\");\r\n          render();\r\n        }\r\n\r\n        event.preventDefault();\r\n      }\r\n    });\r\n  }\r\n\r\n  var r2dR28RenderRaf = 0;\r\n  function scheduleRender(reason) {\r\n    if (r2dR28RenderRaf) return;\r\n    window.GDX_PANEL_V4_R2D33_PERF_STATE.r28ScheduledRenderCount += 1;\r\n    var raf = window.requestAnimationFrame || function(fn){ return window.setTimeout(fn, 0); };\r\n    r2dR28RenderRaf = raf(function () {\r\n      r2dR28RenderRaf = 0;\r\n      window.GDX_PANEL_V4_R2D33_PERF_STATE.r28ExecutedRenderCount += 1;\r\n      render();\r\n    });\r\n  }\r\n\r\n  document.addEventListener(\"click\", function (event) {\r\n    var sh = document.getElementById(\"gdxPanelV4Shell\");\r\n    if (sh && sh.hidden) return;\r\n\r\n    /* R32 modal owns its own pending interactions. Do not make every modal\r\n       click rebuild R28 three more times in the background. */\r\n    if (event.target && event.target.closest && event.target.closest(\".gdx-uxr3-layer\")) return;\r\n\r\n    var relevant = event.target && event.target.closest\r\n      ? event.target.closest(\"#gdxPanelV4R28SelectionSystem,[data-gdx-panel-r30-open-recommendations]\")\r\n      : null;\r\n    if (relevant) scheduleRender(\"relevant_click\");\r\n  }, true);\r\n\r\n  window.addEventListener(\"gdx-panel-v4-r28-selection-change\", function () {\r\n    scheduleRender(\"selection_change\");\r\n  });\r\n\r\n  scheduleRender(\"boot\");\r\n\r\n  window.applyPanelV4R28R4SafeUiPatchMainSubPurposeSelection = render;\r\n\r\n  window.getPanelV4R28SelectionState = function () {\r\n    return publishState(\"manual_read\");\r\n  };\r\n\r\n  window.setPanelV4R28Selection = function (purposeKey, subPurposeKey) {\r\n    var bp = callBlueprint();\r\n    if (!bp) return null;\r\n\r\n    var p = (bp.mainPurposes || []).find(function (item) { return item.purposeKey === purposeKey; });\r\n    if (!p) return null;\r\n\r\n    var s = (p.subPurposes || []).find(function (item) { return item.subPurposeKey === subPurposeKey; }) || p.subPurposes[0];\r\n    if (!s) return null;\r\n\r\n    state.activePurposeKey = p.purposeKey;\r\n    state.activeSubPurposeKey = s.subPurposeKey;\r\n    syncSelectionKey();\r\n    render();\r\n    return publishState(\"manual_set\");\r\n  };\r\n\r\n  window.debugPanelV4R28R4SafeUiPatchMainSubPurposeSelection = function () {\r\n    var before = document.getElementsByTagName(\"*\").length;\r\n\r\n    var applyOk = render();\r\n\r\n    var bp = callBlueprint();\r\n    var mount = document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n    var purposeButtons = all(\"[data-gdx-panel-r28-purpose]\", mount);\r\n    var subButtons = all(\"[data-gdx-panel-r28-subpurpose]\", mount);\r\n    var activePurposeButtons = purposeButtons.filter(function (b) { return b.classList.contains(\"is-active\"); });\r\n    var activeSubButtons = subButtons.filter(function (b) { return b.classList.contains(\"is-active\"); });\r\n    var publicPayload = publishState(\"debug\");\r\n\r\n    var after = document.getElementsByTagName(\"*\").length;\r\n\r\n    var checks = {\r\n      safeUiPatchReady: true,\r\n      productPoolReady: productPool().length === 19,\r\n      r28R1R1BlueprintReadable: !!bp,\r\n      mountCreated: !!mount,\r\n      mountVisible: visible(mount),\r\n      mainPurposeButtonCount8: purposeButtons.length === 8,\r\n      currentSubPurposeButtonCountMatchesModel: !!(bp && activePurpose(bp) && subButtons.length === activePurpose(bp).subPurposes.length),\r\n      exactlyOneActivePurpose: activePurposeButtons.length === 1,\r\n      exactlyOneActiveSubPurpose: activeSubButtons.length === 1,\r\n      activeSelectionStatePublished: !!(window.GDX_PANEL_V4_R28_SELECTION_STATE && window.GDX_PANEL_V4_R28_SELECTION_STATE.activeSelectionKey),\r\n      activeSelectionKeyHasDelimiter: /::/.test(publicPayload.activeSelectionKey || \"\"),\r\n      activeSelectionHasScenarioCount3: Number(publicPayload.scenarioCount || 0) === 3,\r\n      getSelectionStateApiReady: typeof window.getPanelV4R28SelectionState === \"function\",\r\n      setSelectionApiReady: typeof window.setPanelV4R28Selection === \"function\",\r\n      noCartMutationByThisPatch: true,\r\n      noScoreMutationByThisPatch: true,\r\n      noRankingMutationByThisPatch: true,\r\n      noProductMutationByThisPatch: true,\r\n      noPriceFormatterTouchByThisPatch: true,\r\n      noSharePngQrMutationByThisPatch: true\r\n    };\r\n\r\n    var ok =\r\n      checks.safeUiPatchReady &&\r\n      checks.productPoolReady &&\r\n      checks.r28R1R1BlueprintReadable &&\r\n      checks.mountCreated &&\r\n      checks.mountVisible &&\r\n      checks.mainPurposeButtonCount8 &&\r\n      checks.currentSubPurposeButtonCountMatchesModel &&\r\n      checks.exactlyOneActivePurpose &&\r\n      checks.exactlyOneActiveSubPurpose &&\r\n      checks.activeSelectionStatePublished &&\r\n      checks.activeSelectionKeyHasDelimiter &&\r\n      checks.activeSelectionHasScenarioCount3 &&\r\n      checks.getSelectionStateApiReady &&\r\n      checks.setSelectionApiReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        elementDeltaDuringDebug: after - before,\r\n        applyOkDuringDebug: applyOk,\r\n        productPoolCount: productPool().length,\r\n        renderState: {\r\n          modelReady: state.modelReady,\r\n          renderCount: state.renderCount,\r\n          lastRenderAt: state.lastRenderAt,\r\n          lastAction: state.lastAction,\r\n          lastError: state.lastError\r\n        },\r\n        purposeButtonCount: purposeButtons.length,\r\n        subPurposeButtonCount: subButtons.length,\r\n        activePurposeButtonText: activePurposeButtons[0] ? text(activePurposeButtons[0]) : \"\",\r\n        activeSubPurposeButtonText: activeSubButtons[0] ? text(activeSubButtons[0]) : \"\",\r\n        publicSelectionState: publicPayload,\r\n        mountTextSample: mount ? text(mount).slice(0, 900) : \"\"\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R4 PASS candidate. 8 ana ama\u00E7 + aktif 3 alt ama\u00E7 canl\u0131 UI ve selection state \u00E7al\u0131\u015F\u0131yor. Resolver/recommender bridge R28-R5'e b\u0131rak\u0131ld\u0131.\"\r\n          : \"R28-R4 HOLD. UI mount veya selection state do\u011Frulanamad\u0131; diagnostics incelenmeli.\",\r\n        next: ok\r\n          ? \"Manual visual approval, then R28-R4 seal and R28-R5 resolver bridge\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R4-SAFE-UI-PATCH-MAIN-SUBPURPOSE-SELECTION-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n\r\n  window.debugPanelV4R30R1OpeningSelectionCustomerCopyCtaSimplification =\r\n    function () {\r\n      var before =\r\n        document.getElementsByTagName(\"*\").length;\r\n\r\n      var productsBefore =\r\n        JSON.stringify(\r\n          productPool().map(function (product, index) {\r\n            return {\r\n              index: index,\r\n              key: clean(\r\n                product &&\r\n                (\r\n                  product.key ||\r\n                  product.handle ||\r\n                  product.id ||\r\n                  product.title\r\n                )\r\n              ),\r\n              title: clean(\r\n                product &&\r\n                product.title\r\n              ),\r\n              price:\r\n                product &&\r\n                product.price\r\n            };\r\n          })\r\n        );\r\n\r\n      var mount =\r\n        document.getElementById(\r\n          \"gdxPanelV4R28SelectionSystem\"\r\n        );\r\n\r\n      var recommendation =\r\n        document.getElementById(\r\n          \"gdxPanelV4RecommendationPreview\"\r\n        );\r\n\r\n      var grid =\r\n        recommendation &&\r\n        recommendation.querySelector(\r\n          \".gdx-r11-grid\"\r\n        );\r\n\r\n      var cards =\r\n        grid\r\n          ? all(\r\n              \".gdx-r11-card\",\r\n              grid\r\n            )\r\n          : [];\r\n\r\n      var purposeButtons =\r\n        all(\r\n          \"[data-gdx-panel-r28-purpose]\",\r\n          mount\r\n        );\r\n\r\n      var subButtons =\r\n        all(\r\n          \"[data-gdx-panel-r28-subpurpose]\",\r\n          mount\r\n        );\r\n\r\n      var activePurposeButtons =\r\n        purposeButtons.filter(function (button) {\r\n          return (\r\n            button.classList.contains(\r\n              \"is-active\"\r\n            ) ||\r\n            button.getAttribute(\r\n              \"aria-pressed\"\r\n            ) === \"true\"\r\n          );\r\n        });\r\n\r\n      var activeSubButtons =\r\n        subButtons.filter(function (button) {\r\n          return (\r\n            button.classList.contains(\r\n              \"is-active\"\r\n            ) ||\r\n            button.getAttribute(\r\n              \"aria-pressed\"\r\n            ) === \"true\"\r\n          );\r\n        });\r\n\r\n      var kicker =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-kicker\"\r\n        );\r\n\r\n      var heading =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-head h3\"\r\n        );\r\n\r\n      var lead =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-head p\"\r\n        );\r\n\r\n      var stateBox =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-state\"\r\n        );\r\n\r\n      var action =\r\n        mount &&\r\n        mount.querySelector(\r\n          '[data-gdx-panel-r30-opening-action=\"1\"]'\r\n        );\r\n\r\n      var note =\r\n        action &&\r\n        action.querySelector(\r\n          \".gdx-panel-v4-r28-note\"\r\n        );\r\n\r\n      var ctaButtons =\r\n        all(\r\n          \"[data-gdx-panel-r30-open-recommendations]\",\r\n          mount\r\n        );\r\n\r\n      var cta =\r\n        ctaButtons[0] ||\r\n        null;\r\n\r\n      var selection =\r\n        window.GDX_PANEL_V4_R28_SELECTION_STATE ||\r\n        {};\r\n\r\n      var mountText =\r\n        text(mount);\r\n\r\n      var forbiddenVisiblePatterns = [\r\n        /R28-R5/i,\r\n        /Bu fazda/i,\r\n        /Aktif se\u00E7im:/i,\r\n        /Bu patch/i,\r\n        /selection state/i,\r\n        /sat\u0131n alma, fiyat, skor, payla\u015F\u0131m ve PNG/i,\r\n        /\\b[a-z0-9_]+::[a-z0-9_]+\\b/i\r\n      ];\r\n\r\n      var visibleLeakHits =\r\n        forbiddenVisiblePatterns.filter(function (regex) {\r\n          return regex.test(\r\n            mountText\r\n          );\r\n        }).map(function (regex) {\r\n          return String(regex);\r\n        });\r\n\r\n      var purposeTitle =\r\n        clean(\r\n          selection.activePurposeTitle\r\n        );\r\n\r\n      var subPurposeTitle =\r\n        clean(\r\n          selection.activeSubPurposeTitle\r\n        );\r\n\r\n      var noteText =\r\n        text(note);\r\n\r\n      var productsAfter =\r\n        JSON.stringify(\r\n          productPool().map(function (product, index) {\r\n            return {\r\n              index: index,\r\n              key: clean(\r\n                product &&\r\n                (\r\n                  product.key ||\r\n                  product.handle ||\r\n                  product.id ||\r\n                  product.title\r\n                )\r\n              ),\r\n              title: clean(\r\n                product &&\r\n                product.title\r\n              ),\r\n              price:\r\n                product &&\r\n                product.price\r\n            };\r\n          })\r\n        );\r\n\r\n      var after =\r\n        document.getElementsByTagName(\"*\").length;\r\n\r\n      var checks = {\r\n        auditRan:\r\n          true,\r\n\r\n        r30R1RuntimeReady:\r\n          window.GDX_PANEL_V4_R30_R1_READY ===\r\n          true,\r\n\r\n        sourceContractReady:\r\n          !!(\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT &&\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT\r\n              .sourceOwner ===\r\n                \"assets/panel-led-v4.ui.js / R28 render()\"\r\n          ),\r\n\r\n        productPoolReady:\r\n          productPool().length === 19,\r\n\r\n        exactlyOneSelectionMount:\r\n          all(\r\n            \"#gdxPanelV4R28SelectionSystem\"\r\n          ).length === 1,\r\n\r\n        sourceOwnershipMarkerReady:\r\n          !!(\r\n            mount &&\r\n            mount.getAttribute(\r\n              \"data-gdx-panel-r30-opening-source-owned\"\r\n            ) === \"1\"\r\n          ),\r\n\r\n        purposeButtonCount8:\r\n          purposeButtons.length === 8,\r\n\r\n        currentSubPurposeButtonCount3:\r\n          subButtons.length === 3,\r\n\r\n        exactlyOneActivePurpose:\r\n          activePurposeButtons.length === 1,\r\n\r\n        exactlyOneActiveSubPurpose:\r\n          activeSubButtons.length === 1,\r\n\r\n        selectionStateReadable:\r\n          !!clean(\r\n            selection.activeSelectionKey\r\n          ),\r\n\r\n        customerPurposeTitlesReady:\r\n          !!(\r\n            purposeTitle &&\r\n            subPurposeTitle\r\n          ),\r\n\r\n        customerKickerApplied:\r\n          text(kicker) ===\r\n            \"NE \u0130\u00C7\u0130N KULLANACAKSIN?\",\r\n\r\n        customerHeadingApplied:\r\n          text(heading) ===\r\n            \"Amac\u0131n\u0131 se\u00E7, sana uygun 3 Panel LED\u2019i birlikte de\u011Ferlendirelim\",\r\n\r\n        customerLeadApplied:\r\n          text(lead) ===\r\n            \"\u00D6nce ana kullan\u0131m alan\u0131n\u0131, ard\u0131ndan \u00E7ekim senaryonu se\u00E7. \u00D6neriler se\u00E7imlerine g\u00F6re an\u0131nda g\u00FCncellenir.\",\r\n\r\n        customerStateChipsPreserved:\r\n          !!(\r\n            stateBox &&\r\n            text(stateBox).indexOf(\r\n              purposeTitle\r\n            ) > -1 &&\r\n            text(stateBox).indexOf(\r\n              subPurposeTitle\r\n            ) > -1\r\n          ),\r\n\r\n        customerSelectionSummaryReady:\r\n          !!(\r\n            note &&\r\n            noteText.indexOf(\r\n              purposeTitle\r\n            ) > -1 &&\r\n            noteText.indexOf(\r\n              subPurposeTitle\r\n            ) > -1 &&\r\n            noteText.indexOf(\r\n              \"Bu se\u00E7ime g\u00F6re 3 \u00F6neri haz\u0131r.\"\r\n            ) > -1\r\n          ),\r\n\r\n        rawSelectionKeyNotVisible:\r\n          !/\\b[a-z0-9_]+::[a-z0-9_]+\\b/i.test(\r\n            mountText\r\n          ),\r\n\r\n        noTechnicalOpeningCopy:\r\n          visibleLeakHits.length === 0,\r\n\r\n        exactlyOneOpeningPrimaryCta:\r\n          ctaButtons.length === 1,\r\n\r\n        openingPrimaryCtaTextReady:\r\n          text(cta) ===\r\n            \"\u00D6nerileri \u0130ncele \u2193\",\r\n\r\n        openingPrimaryCtaTargetReady:\r\n          !!(\r\n            cta &&\r\n            cta.getAttribute(\r\n              \"aria-controls\"\r\n            ) ===\r\n              \"gdxPanelV4RecommendationPreview\" &&\r\n            recommendation\r\n          ),\r\n\r\n        openingPrimaryCtaUsesExistingDelegation:\r\n          !!(\r\n            mount &&\r\n            mount.getAttribute(\r\n              \"data-gdx-panel-r28-bound\"\r\n            ) === \"1\" &&\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT &&\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT\r\n              .ctaMode ===\r\n                \"EXISTING_R28_DELEGATED_CLICK_SCROLL_ONLY\"\r\n          ),\r\n\r\n        recommendationAfterSelection:\r\n          !!(\r\n            mount &&\r\n            recommendation &&\r\n            (\r\n              mount.compareDocumentPosition(\r\n                recommendation\r\n              ) &\r\n              Node.DOCUMENT_POSITION_FOLLOWING\r\n            )\r\n          ),\r\n\r\n        currentR11GridDetected:\r\n          !!grid,\r\n\r\n        recommendationCardCount3:\r\n          cards.length === 3,\r\n\r\n        recommendationNoraPreserved:\r\n          !!(\r\n            recommendation &&\r\n            recommendation.querySelector(\r\n              '[data-gdx-panel-r29-nora-context=\"1\"]'\r\n            )\r\n          ),\r\n\r\n        noSecondSelectionSystemAdded:\r\n          true,\r\n\r\n        noNewObserverByR30R1:\r\n          true,\r\n\r\n        noNewDocumentClickListenerByR30R1:\r\n          true,\r\n\r\n        noRecurringTimerByR30R1:\r\n          true,\r\n\r\n        noDomMutationByThisAudit:\r\n          before === after,\r\n\r\n        noProductOrderMutationByThisAudit:\r\n          productsBefore ===\r\n          productsAfter,\r\n\r\n        noScoreMutationByThisAudit:\r\n          true,\r\n\r\n        noRankingMutationByThisAudit:\r\n          true,\r\n\r\n        noProductMutationByThisAudit:\r\n          true,\r\n\r\n        noPriceFormatterTouchByThisAudit:\r\n          true,\r\n\r\n        noCartMutationByThisAudit:\r\n          true,\r\n\r\n        noCommerceMutationByThisAudit:\r\n          true,\r\n\r\n        noSetupFlowMutationByThisAudit:\r\n          true,\r\n\r\n        noSharePngQrMutationByThisAudit:\r\n          true\r\n      };\r\n\r\n      var failed =\r\n        Object.keys(checks).filter(function (key) {\r\n          return checks[key] !== true;\r\n        });\r\n\r\n      var result = {\r\n        phase:\r\n          \"PANEL-V4-R30-R1-OPENING-SELECTION-CUSTOMER-COPY-CTA-SIMPLIFICATION-SOURCE-APPLICATION\",\r\n\r\n        version:\r\n          \"PANEL-V4-R30-R1-OPENING-SELECTION-CUSTOMER-COPY-CTA-SIMPLIFICATION-V1\",\r\n\r\n        ok:\r\n          failed.length === 0,\r\n\r\n        checks:\r\n          checks,\r\n\r\n        diagnostics: {\r\n          currentSelection: {\r\n            activeSelectionKey:\r\n              clean(\r\n                selection.activeSelectionKey\r\n              ),\r\n            purposeTitle:\r\n              purposeTitle,\r\n            subPurposeTitle:\r\n              subPurposeTitle\r\n          },\r\n\r\n          visibleCopy: {\r\n            kicker:\r\n              text(kicker),\r\n            heading:\r\n              text(heading),\r\n            lead:\r\n              text(lead),\r\n            state:\r\n              text(stateBox),\r\n            selectionSummary:\r\n              noteText,\r\n            cta:\r\n              text(cta)\r\n          },\r\n\r\n          openingStructure: {\r\n            purposeButtonCount:\r\n              purposeButtons.length,\r\n            subPurposeButtonCount:\r\n              subButtons.length,\r\n            ctaCount:\r\n              ctaButtons.length,\r\n            recommendationGrid:\r\n              !!grid,\r\n            recommendationCardCount:\r\n              cards.length,\r\n            recommendationAfterSelection:\r\n              checks.recommendationAfterSelection\r\n          },\r\n\r\n          visibleLeakHits:\r\n            visibleLeakHits,\r\n\r\n          ownership: {\r\n            sourceOwner:\r\n              \"assets/panel-led-v4.ui.js / R28 render()\",\r\n            selectionOwner:\r\n              \"R28\",\r\n            ctaListener:\r\n              \"existing mount delegated click listener\",\r\n            recommendationOwner:\r\n              \"R11\",\r\n            secondSelectionSystem:\r\n              false\r\n          },\r\n\r\n          failed:\r\n            failed\r\n        },\r\n\r\n        interpretation: {\r\n          decision:\r\n            failed.length === 0\r\n              ? \"R30-R1 TECHNICAL PASS. A\u00E7\u0131l\u0131\u015F se\u00E7im alan\u0131ndaki teknik metinler ve raw se\u00E7im anahtar\u0131 kald\u0131r\u0131ld\u0131; m\u00FC\u015Fteri-facing kopya ve tek \u00D6nerileri \u0130ncele CTA\u2019s\u0131 ayn\u0131 R28 source owner i\u00E7inde uyguland\u0131.\"\r\n              : \"R30-R1 HOLD. M\u00FC\u015Fteri kopyas\u0131, tek CTA, R28 se\u00E7im yap\u0131s\u0131 veya recommendation continuity incelenmeli.\",\r\n\r\n          next:\r\n            failed.length === 0\r\n              ? \"Masa\u00FCst\u00FC ve mobil manuel a\u00E7\u0131l\u0131\u015F/CTA kontrol\u00FC\"\r\n              : \"HOLD\"\r\n        },\r\n\r\n        sealCandidate:\r\n          failed.length === 0\r\n            ? \"PANEL-V4-R30-R1-OPENING-SELECTION-CUSTOMER-COPY-CTA-SIMPLIFICATION-TECHNICAL-PASS-CANDIDATE\"\r\n            : \"HOLD\"\r\n      };\r\n\r\n      if (\r\n        window.console &&\r\n        typeof window.console.log ===\r\n          \"function\"\r\n      ) {\r\n        window.console.log(\r\n          \"R30-R1 OPENING CUSTOMER COPY + CTA SIMPLIFICATION:\",\r\n          result\r\n        );\r\n      }\r\n\r\n      return result;\r\n    };\r\n\r\n  window.debugPanelV4R30R2R1OpeningSelectionRedundancyDensitySimplification =\r\n    function () {\r\n      var elementCountBefore =\r\n        document.querySelectorAll(\"*\").length;\r\n\r\n      var productsBefore =\r\n        JSON.stringify(\r\n          productPool().map(function (product, index) {\r\n            return {\r\n              index: index,\r\n              key: clean(\r\n                product &&\r\n                (\r\n                  product.key ||\r\n                  product.handle ||\r\n                  product.id ||\r\n                  product.title\r\n                )\r\n              ),\r\n              title: clean(\r\n                product &&\r\n                product.title\r\n              ),\r\n              price:\r\n                product &&\r\n                product.price\r\n            };\r\n          })\r\n        );\r\n\r\n      var mount =\r\n        document.getElementById(\r\n          \"gdxPanelV4R28SelectionSystem\"\r\n        );\r\n\r\n      var recommendation =\r\n        document.getElementById(\r\n          \"gdxPanelV4RecommendationPreview\"\r\n        );\r\n\r\n      var selection =\r\n        window.GDX_PANEL_V4_R28_SELECTION_STATE ||\r\n        {};\r\n\r\n      var purposeTitle =\r\n        clean(\r\n          selection.activePurposeTitle\r\n        );\r\n\r\n      var subPurposeTitle =\r\n        clean(\r\n          selection.activeSubPurposeTitle\r\n        );\r\n\r\n      var purposeButtons =\r\n        all(\r\n          \"[data-gdx-panel-r28-purpose]\",\r\n          mount\r\n        );\r\n\r\n      var subButtons =\r\n        all(\r\n          \"[data-gdx-panel-r28-subpurpose]\",\r\n          mount\r\n        );\r\n\r\n      var activePurposeButtons =\r\n        purposeButtons.filter(function (button) {\r\n          return (\r\n            button.classList.contains(\r\n              \"is-active\"\r\n            ) ||\r\n            button.getAttribute(\r\n              \"aria-pressed\"\r\n            ) === \"true\"\r\n          );\r\n        });\r\n\r\n      var activeSubButtons =\r\n        subButtons.filter(function (button) {\r\n          return (\r\n            button.classList.contains(\r\n              \"is-active\"\r\n            ) ||\r\n            button.getAttribute(\r\n              \"aria-pressed\"\r\n            ) === \"true\"\r\n          );\r\n        });\r\n\r\n      var stateBoxes =\r\n        all(\r\n          \".gdx-panel-v4-r28-state\",\r\n          mount\r\n        );\r\n\r\n      var purposeMicroLabels =\r\n        purposeButtons.map(function (button) {\r\n          return button.querySelector(\r\n            \"small\"\r\n          );\r\n        }).filter(Boolean);\r\n\r\n      var purposeMetaRows =\r\n        all(\r\n          \".gdx-panel-v4-r28-purpose em\",\r\n          mount\r\n        );\r\n\r\n      var subTitle =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-sub-title strong\"\r\n        );\r\n\r\n      var action =\r\n        mount &&\r\n        mount.querySelector(\r\n          '[data-gdx-panel-r30-opening-action=\"1\"]'\r\n        );\r\n\r\n      var summary =\r\n        action &&\r\n        action.querySelector(\r\n          \".gdx-panel-v4-r28-note\"\r\n        );\r\n\r\n      var ctaButtons =\r\n        all(\r\n          \"[data-gdx-panel-r30-open-recommendations]\",\r\n          mount\r\n        );\r\n\r\n      var grid =\r\n        recommendation &&\r\n        recommendation.querySelector(\r\n          \".gdx-r11-grid\"\r\n        );\r\n\r\n      var recommendationCards =\r\n        grid\r\n          ? all(\r\n              \".gdx-r11-card\",\r\n              grid\r\n            )\r\n          : [];\r\n\r\n      function phraseCount(haystack, needle) {\r\n        var source =\r\n          clean(haystack).toLocaleLowerCase(\r\n            \"tr-TR\"\r\n          );\r\n\r\n        var term =\r\n          clean(needle).toLocaleLowerCase(\r\n            \"tr-TR\"\r\n          );\r\n\r\n        if (!source || !term) return 0;\r\n\r\n        var count = 0;\r\n        var index = 0;\r\n\r\n        while (\r\n          (index = source.indexOf(\r\n            term,\r\n            index\r\n          )) > -1\r\n        ) {\r\n          count += 1;\r\n          index += term.length;\r\n        }\r\n\r\n        return count;\r\n      }\r\n\r\n      var mountText =\r\n        text(mount);\r\n\r\n      var purposeOccurrenceCount =\r\n        phraseCount(\r\n          mountText,\r\n          purposeTitle\r\n        );\r\n\r\n      var subPurposeOccurrenceCount =\r\n        phraseCount(\r\n          mountText,\r\n          subPurposeTitle\r\n        );\r\n\r\n      var microLabelTexts =\r\n        purposeMicroLabels.map(text);\r\n\r\n      var sequenceLabelsReady =\r\n        microLabelTexts.length === 8 &&\r\n        microLabelTexts.every(function (label, index) {\r\n          return label ===\r\n            String(index + 1).padStart(\r\n              2,\r\n              \"0\"\r\n            );\r\n        });\r\n\r\n      var hasMixedLanguageMicroLabel =\r\n        microLabelTexts.some(function (label) {\r\n          return (\r\n            /[A-Za-z\u00C7\u011E\u0130\u00D6\u015E\u00DC]/.test(\r\n              label\r\n            ) ||\r\n            /\u00B7/.test(label)\r\n          );\r\n        });\r\n\r\n      var actionRect =\r\n        action &&\r\n        action.getBoundingClientRect\r\n          ? action.getBoundingClientRect()\r\n          : null;\r\n\r\n      var mountRect =\r\n        mount &&\r\n        mount.getBoundingClientRect\r\n          ? mount.getBoundingClientRect()\r\n          : null;\r\n\r\n      var actionOffsetWithinMount =\r\n        actionRect &&\r\n        mountRect\r\n          ? Math.round(\r\n              actionRect.top -\r\n              mountRect.top\r\n            )\r\n          : null;\r\n\r\n      var desktopOrTablet =\r\n        window.innerWidth > 520;\r\n\r\n      var productsAfter =\r\n        JSON.stringify(\r\n          productPool().map(function (product, index) {\r\n            return {\r\n              index: index,\r\n              key: clean(\r\n                product &&\r\n                (\r\n                  product.key ||\r\n                  product.handle ||\r\n                  product.id ||\r\n                  product.title\r\n                )\r\n              ),\r\n              title: clean(\r\n                product &&\r\n                product.title\r\n              ),\r\n              price:\r\n                product &&\r\n                product.price\r\n            };\r\n          })\r\n        );\r\n\r\n      var elementCountAfter =\r\n        document.querySelectorAll(\"*\").length;\r\n\r\n      var checks = {\r\n        auditRan:\r\n          true,\r\n\r\n        r30R2R1RuntimeReady:\r\n          window.GDX_PANEL_V4_R30_R2_R1_READY ===\r\n          true,\r\n\r\n        densityContractReady:\r\n          !!(\r\n            window.GDX_PANEL_V4_R30_R2_R1_DENSITY_CONTRACT &&\r\n            window.GDX_PANEL_V4_R30_R2_R1_DENSITY_CONTRACT\r\n              .selectedStateOwner ===\r\n                \"R30 action summary\"\r\n          ),\r\n\r\n        exactlyOneSelectionMount:\r\n          all(\r\n            \"#gdxPanelV4R28SelectionSystem\"\r\n          ).length === 1,\r\n\r\n        purposeButtonCount8:\r\n          purposeButtons.length === 8,\r\n\r\n        currentSubPurposeButtonCount3:\r\n          subButtons.length === 3,\r\n\r\n        exactlyOneActivePurpose:\r\n          activePurposeButtons.length === 1,\r\n\r\n        exactlyOneActiveSubPurpose:\r\n          activeSubButtons.length === 1,\r\n\r\n        selectionTitlesReadable:\r\n          !!(\r\n            purposeTitle &&\r\n            subPurposeTitle\r\n          ),\r\n\r\n        headerStateChipsRetired:\r\n          stateBoxes.length === 0,\r\n\r\n        actionSummaryRemainsSingleSelectionSummary:\r\n          !!(\r\n            summary &&\r\n            text(summary).indexOf(\r\n              purposeTitle\r\n            ) > -1 &&\r\n            text(summary).indexOf(\r\n              subPurposeTitle\r\n            ) > -1\r\n          ),\r\n\r\n        selectedPurposeVisibleOnlyInActiveCardAndSummary:\r\n          purposeOccurrenceCount === 2,\r\n\r\n        selectedSubPurposeVisibleOnlyInActiveCardAndSummary:\r\n          subPurposeOccurrenceCount === 2,\r\n\r\n        purposeMicroLabelsSequenceOnly:\r\n          sequenceLabelsReady,\r\n\r\n        noMixedLanguagePurposeMicroLabels:\r\n          !hasMixedLanguageMicroLabel,\r\n\r\n        repeatedPurposeMetaRowsRetired:\r\n          purposeMetaRows.length === 0,\r\n\r\n        repeatedThreeSubPurposeCopyRetired:\r\n          phraseCount(\r\n            mountText,\r\n            \"3 alt ama\u00E7\"\r\n          ) === 0,\r\n\r\n        subSectionTitleCustomerActionReady:\r\n          text(subTitle) ===\r\n            \"\u00C7ekim senaryonu se\u00E7\",\r\n\r\n        exactlyOneOpeningCta:\r\n          ctaButtons.length === 1,\r\n\r\n        openingCtaUsesExistingDelegation:\r\n          !!(\r\n            mount &&\r\n            mount.getAttribute(\r\n              \"data-gdx-panel-r28-bound\"\r\n            ) === \"1\" &&\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT &&\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT\r\n              .ctaMode ===\r\n                \"EXISTING_R28_DELEGATED_CLICK_SCROLL_ONLY\"\r\n          ),\r\n\r\n        desktopTabletActionOffsetCompact:\r\n          !desktopOrTablet ||\r\n          (\r\n            typeof actionOffsetWithinMount ===\r\n              \"number\" &&\r\n            actionOffsetWithinMount <= 520\r\n          ),\r\n\r\n        recommendationAfterSelection:\r\n          !!(\r\n            mount &&\r\n            recommendation &&\r\n            (\r\n              mount.compareDocumentPosition(\r\n                recommendation\r\n              ) &\r\n              Node.DOCUMENT_POSITION_FOLLOWING\r\n            )\r\n          ),\r\n\r\n        currentR11GridDetected:\r\n          !!grid,\r\n\r\n        recommendationCardCount3:\r\n          recommendationCards.length === 3,\r\n\r\n        recommendationNoraPreserved:\r\n          !!(\r\n            recommendation &&\r\n            recommendation.querySelector(\r\n              '[data-gdx-panel-r29-nora-context=\"1\"]'\r\n            )\r\n          ),\r\n\r\n        noSecondSelectionSummaryAdded:\r\n          all(\r\n            \".gdx-panel-v4-r28-note\",\r\n            mount\r\n          ).length === 1,\r\n\r\n        noSecondOpeningCtaAdded:\r\n          ctaButtons.length === 1,\r\n\r\n        noNewObserverByR30R2R1:\r\n          true,\r\n\r\n        noNewDocumentClickListenerByR30R2R1:\r\n          true,\r\n\r\n        noRecurringTimerByR30R2R1:\r\n          true,\r\n\r\n        noDomMutationByThisAudit:\r\n          elementCountBefore ===\r\n          elementCountAfter,\r\n\r\n        noProductOrderMutationByThisAudit:\r\n          productsBefore ===\r\n          productsAfter,\r\n\r\n        noScoreMutationByThisAudit:\r\n          true,\r\n\r\n        noRankingMutationByThisAudit:\r\n          true,\r\n\r\n        noProductMutationByThisAudit:\r\n          true,\r\n\r\n        noPriceFormatterTouchByThisAudit:\r\n          true,\r\n\r\n        noCartMutationByThisAudit:\r\n          true,\r\n\r\n        noCommerceMutationByThisAudit:\r\n          true,\r\n\r\n        noSetupFlowMutationByThisAudit:\r\n          true,\r\n\r\n        noSharePngQrMutationByThisAudit:\r\n          true\r\n      };\r\n\r\n      var failed =\r\n        Object.keys(checks).filter(function (key) {\r\n          return checks[key] !== true;\r\n        });\r\n\r\n      var result = {\r\n        phase:\r\n          \"PANEL-V4-R30-R2-R1-OPENING-SELECTION-REDUNDANCY-DENSITY-SIMPLIFICATION-SOURCE-APPLICATION\",\r\n\r\n        version:\r\n          \"PANEL-V4-R30-R2-R1-OPENING-SELECTION-REDUNDANCY-DENSITY-SIMPLIFICATION-V1\",\r\n\r\n        ok:\r\n          failed.length === 0,\r\n\r\n        checks:\r\n          checks,\r\n\r\n        diagnostics: {\r\n          currentSelection: {\r\n            activeSelectionKey:\r\n              clean(\r\n                selection.activeSelectionKey\r\n              ),\r\n            purposeTitle:\r\n              purposeTitle,\r\n            subPurposeTitle:\r\n              subPurposeTitle\r\n          },\r\n\r\n          repetition: {\r\n            purposeOccurrenceCount:\r\n              purposeOccurrenceCount,\r\n            subPurposeOccurrenceCount:\r\n              subPurposeOccurrenceCount,\r\n            headerStateBoxCount:\r\n              stateBoxes.length,\r\n            purposeMetaRowCount:\r\n              purposeMetaRows.length,\r\n            threeSubPurposeTextCount:\r\n              phraseCount(\r\n                mountText,\r\n                \"3 alt ama\u00E7\"\r\n              )\r\n          },\r\n\r\n          compactLabels: {\r\n            values:\r\n              microLabelTexts,\r\n            sequenceLabelsReady:\r\n              sequenceLabelsReady,\r\n            hasMixedLanguageMicroLabel:\r\n              hasMixedLanguageMicroLabel,\r\n            subSectionTitle:\r\n              text(subTitle)\r\n          },\r\n\r\n          geometry: {\r\n            viewportWidth:\r\n              window.innerWidth,\r\n            viewportHeight:\r\n              window.innerHeight,\r\n            mountHeight:\r\n              mountRect\r\n                ? Math.round(\r\n                    mountRect.height\r\n                  )\r\n                : null,\r\n            actionOffsetWithinMount:\r\n              actionOffsetWithinMount\r\n          },\r\n\r\n          continuity: {\r\n            ctaCount:\r\n              ctaButtons.length,\r\n            recommendationAfterSelection:\r\n              checks.recommendationAfterSelection,\r\n            recommendationCardCount:\r\n              recommendationCards.length,\r\n            recommendationNora:\r\n              checks.recommendationNoraPreserved\r\n          },\r\n\r\n          ownership: {\r\n            sourceOwner:\r\n              \"assets/panel-led-v4.ui.js / R28 render()\",\r\n            selectedStateOwner:\r\n              \"R30 action summary\",\r\n            interactionOwner:\r\n              \"R28 purpose/sub-purpose buttons\",\r\n            ctaOwner:\r\n              \"existing R28 delegated click listener\",\r\n            recommendationOwner:\r\n              \"R11\"\r\n          },\r\n\r\n          failed:\r\n            failed\r\n        },\r\n\r\n        interpretation: {\r\n          decision:\r\n            failed.length === 0\r\n              ? \"R30-R2-R1 TECHNICAL PASS. \u00DCst se\u00E7im chip'leri, tekrar eden 3 alt ama\u00E7 sat\u0131rlar\u0131 ve karma dil mikro etiketleri kald\u0131r\u0131ld\u0131; tek se\u00E7im \u00F6zeti, tek CTA ve 8x3 se\u00E7im davran\u0131\u015F\u0131 korundu.\"\r\n              : \"R30-R2-R1 HOLD. Tekrar azaltma, kompakt kartlar, tek se\u00E7im \u00F6zeti veya recommendation continuity incelenmeli.\",\r\n\r\n          next:\r\n            failed.length === 0\r\n              ? \"Masa\u00FCst\u00FC ve mobil manuel yo\u011Funluk/okunabilirlik kontrol\u00FC\"\r\n              : \"HOLD\"\r\n        },\r\n\r\n        sealCandidate:\r\n          failed.length === 0\r\n            ? \"PANEL-V4-R30-R2-R1-OPENING-SELECTION-REDUNDANCY-DENSITY-SIMPLIFICATION-TECHNICAL-PASS-CANDIDATE\"\r\n            : \"HOLD\"\r\n      };\r\n\r\n      if (\r\n        window.console &&\r\n        typeof window.console.log ===\r\n          \"function\"\r\n      ) {\r\n        window.console.log(\r\n          \"R30-R2-R1 OPENING REDUNDANCY + DENSITY SIMPLIFICATION:\",\r\n          result\r\n        );\r\n      }\r\n\r\n      return result;\r\n    };\r\n\r\n  window.debugPanelV4R30R3R1OpeningSelectionAccessibilityFocusAriaSemantics =\r\n    function () {\r\n      var elementCountBefore =\r\n        document.querySelectorAll(\"*\").length;\r\n\r\n      var activeElementBefore =\r\n        document.activeElement;\r\n\r\n      var scrollXBefore =\r\n        window.scrollX;\r\n\r\n      var scrollYBefore =\r\n        window.scrollY;\r\n\r\n      var productsBefore =\r\n        JSON.stringify(\r\n          productPool().map(function (product, index) {\r\n            return {\r\n              index: index,\r\n              key: clean(\r\n                product &&\r\n                (\r\n                  product.key ||\r\n                  product.handle ||\r\n                  product.id ||\r\n                  product.title\r\n                )\r\n              ),\r\n              title: clean(\r\n                product &&\r\n                product.title\r\n              ),\r\n              price:\r\n                product &&\r\n                product.price\r\n            };\r\n          })\r\n        );\r\n\r\n      var mount =\r\n        document.getElementById(\r\n          \"gdxPanelV4R28SelectionSystem\"\r\n        );\r\n\r\n      var recommendation =\r\n        document.getElementById(\r\n          \"gdxPanelV4RecommendationPreview\"\r\n        );\r\n\r\n      var purposeGrid =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-main-grid\"\r\n        );\r\n\r\n      var subGrid =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-sub-grid\"\r\n        );\r\n\r\n      var purposeButtons =\r\n        all(\r\n          \"[data-gdx-panel-r28-purpose]\",\r\n          mount\r\n        );\r\n\r\n      var subButtons =\r\n        all(\r\n          \"[data-gdx-panel-r28-subpurpose]\",\r\n          mount\r\n        );\r\n\r\n      var ctaButtons =\r\n        all(\r\n          \"[data-gdx-panel-r30-open-recommendations]\",\r\n          mount\r\n        );\r\n\r\n      var cta =\r\n        ctaButtons[0] ||\r\n        null;\r\n\r\n      var summary =\r\n        mount &&\r\n        mount.querySelector(\r\n          \".gdx-panel-v4-r28-note\"\r\n        );\r\n\r\n      var selection =\r\n        window.GDX_PANEL_V4_R28_SELECTION_STATE ||\r\n        {};\r\n\r\n      var style =\r\n        document.getElementById(\r\n          \"gdxPanelV4R28R4Style\"\r\n        );\r\n\r\n      var styleSource =\r\n        clean(\r\n          style &&\r\n          style.textContent\r\n        );\r\n\r\n      function row(button) {\r\n        var rect =\r\n          button &&\r\n          button.getBoundingClientRect\r\n            ? button.getBoundingClientRect()\r\n            : null;\r\n\r\n        return {\r\n          tag:\r\n            clean(\r\n              button &&\r\n              button.tagName\r\n            ).toLowerCase(),\r\n\r\n          type:\r\n            clean(\r\n              button &&\r\n              button.getAttribute(\r\n                \"type\"\r\n              )\r\n            ).toLowerCase(),\r\n\r\n          ariaPressed:\r\n            clean(\r\n              button &&\r\n              button.getAttribute(\r\n                \"aria-pressed\"\r\n              )\r\n            ),\r\n\r\n          tabIndex:\r\n            button\r\n              ? button.tabIndex\r\n              : -1,\r\n\r\n          disabled:\r\n            !!(\r\n              button &&\r\n              button.disabled\r\n            ),\r\n\r\n          width:\r\n            rect\r\n              ? Math.round(rect.width)\r\n              : 0,\r\n\r\n          height:\r\n            rect\r\n              ? Math.round(rect.height)\r\n              : 0,\r\n\r\n          name:\r\n            text(button)\r\n        };\r\n      }\r\n\r\n      var purposeRows =\r\n        purposeButtons.map(row);\r\n\r\n      var subRows =\r\n        subButtons.map(row);\r\n\r\n      var ctaRows =\r\n        ctaButtons.map(row);\r\n\r\n      var allRows =\r\n        purposeRows\r\n          .concat(subRows)\r\n          .concat(ctaRows);\r\n\r\n      var activePurposeCount =\r\n        purposeRows.filter(function (item) {\r\n          return item.ariaPressed ===\r\n            \"true\";\r\n        }).length;\r\n\r\n      var activeSubCount =\r\n        subRows.filter(function (item) {\r\n          return item.ariaPressed ===\r\n            \"true\";\r\n        }).length;\r\n\r\n      var purposeFocusRule =\r\n        styleSource.indexOf(\r\n          \".gdx-panel-v4-r28-purpose:focus-visible\"\r\n        ) > -1;\r\n\r\n      var subFocusRule =\r\n        styleSource.indexOf(\r\n          \".gdx-panel-v4-r28-sub:focus-visible\"\r\n        ) > -1;\r\n\r\n      var ctaFocusRule =\r\n        styleSource.indexOf(\r\n          \".gdx-panel-v4-r30-cta:focus-visible\"\r\n        ) > -1;\r\n\r\n      var summaryRole =\r\n        clean(\r\n          summary &&\r\n          summary.getAttribute(\r\n            \"role\"\r\n          )\r\n        );\r\n\r\n      var summaryLive =\r\n        clean(\r\n          summary &&\r\n          summary.getAttribute(\r\n            \"aria-live\"\r\n          )\r\n        );\r\n\r\n      var summaryAtomic =\r\n        clean(\r\n          summary &&\r\n          summary.getAttribute(\r\n            \"aria-atomic\"\r\n          )\r\n        );\r\n\r\n      var purposeGroupRole =\r\n        clean(\r\n          purposeGrid &&\r\n          purposeGrid.getAttribute(\r\n            \"role\"\r\n          )\r\n        );\r\n\r\n      var subGroupRole =\r\n        clean(\r\n          subGrid &&\r\n          subGrid.getAttribute(\r\n            \"role\"\r\n          )\r\n        );\r\n\r\n      var gridLabels = {\r\n        purpose:\r\n          clean(\r\n            purposeGrid &&\r\n            purposeGrid.getAttribute(\r\n              \"aria-label\"\r\n            )\r\n          ),\r\n\r\n        subPurpose:\r\n          clean(\r\n            subGrid &&\r\n            subGrid.getAttribute(\r\n              \"aria-label\"\r\n            )\r\n          )\r\n      };\r\n\r\n      var allTapTargetsReady =\r\n        allRows.every(function (item) {\r\n          return (\r\n            item.width >= 44 &&\r\n            item.height >= 44\r\n          );\r\n        });\r\n\r\n      var allNativeButtons =\r\n        allRows.every(function (item) {\r\n          return item.tag ===\r\n            \"button\";\r\n        });\r\n\r\n      var allTypeButton =\r\n        allRows.every(function (item) {\r\n          return item.type ===\r\n            \"button\";\r\n        });\r\n\r\n      var allTabbable =\r\n        allRows.every(function (item) {\r\n          return (\r\n            item.tabIndex >= 0 &&\r\n            item.disabled === false\r\n          );\r\n        });\r\n\r\n      var recommendationGrid =\r\n        recommendation &&\r\n        recommendation.querySelector(\r\n          \".gdx-r11-grid\"\r\n        );\r\n\r\n      var recommendationCards =\r\n        recommendationGrid\r\n          ? all(\r\n              \".gdx-r11-card\",\r\n              recommendationGrid\r\n            )\r\n          : [];\r\n\r\n      var productsAfter =\r\n        JSON.stringify(\r\n          productPool().map(function (product, index) {\r\n            return {\r\n              index: index,\r\n              key: clean(\r\n                product &&\r\n                (\r\n                  product.key ||\r\n                  product.handle ||\r\n                  product.id ||\r\n                  product.title\r\n                )\r\n              ),\r\n              title: clean(\r\n                product &&\r\n                product.title\r\n              ),\r\n              price:\r\n                product &&\r\n                product.price\r\n            };\r\n          })\r\n        );\r\n\r\n      var elementCountAfter =\r\n        document.querySelectorAll(\"*\").length;\r\n\r\n      var checks = {\r\n        auditRan:\r\n          true,\r\n\r\n        r30R3R1RuntimeReady:\r\n          window.GDX_PANEL_V4_R30_R3_R1_READY ===\r\n          true,\r\n\r\n        accessibilityContractReady:\r\n          !!(\r\n            window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT &&\r\n            window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT\r\n              .interactionMode ===\r\n                \"NATIVE_BUTTON_NORMAL_TAB_ORDER\" &&\r\n            window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT\r\n              .summaryLiveRegion ===\r\n                \"ROLE_STATUS_POLITE_ATOMIC\"\r\n          ),\r\n\r\n        exactlyOneSelectionMount:\r\n          all(\r\n            \"#gdxPanelV4R28SelectionSystem\"\r\n          ).length === 1,\r\n\r\n        purposeButtonCount8:\r\n          purposeRows.length === 8,\r\n\r\n        currentSubPurposeButtonCount3:\r\n          subRows.length === 3,\r\n\r\n        exactlyOneOpeningCta:\r\n          ctaRows.length === 1,\r\n\r\n        allControlsNativeButtons:\r\n          allNativeButtons,\r\n\r\n        allControlsTypeButton:\r\n          allTypeButton,\r\n\r\n        allControlsKeyboardTabbable:\r\n          allTabbable,\r\n\r\n        allTapTargetsAtLeast44:\r\n          allTapTargetsReady,\r\n\r\n        purposeGridRoleGroup:\r\n          purposeGroupRole ===\r\n            \"group\",\r\n\r\n        subPurposeGridRoleGroup:\r\n          subGroupRole ===\r\n            \"group\",\r\n\r\n        purposeGridLabelPreserved:\r\n          gridLabels.purpose ===\r\n            \"Ana kullan\u0131m ama\u00E7lar\u0131\",\r\n\r\n        subPurposeGridLabelPreserved:\r\n          gridLabels.subPurpose ===\r\n            \"Alt kullan\u0131m ama\u00E7lar\u0131\",\r\n\r\n        allPurposeButtonsHaveAriaPressed:\r\n          purposeRows.every(function (item) {\r\n            return (\r\n              item.ariaPressed ===\r\n                \"true\" ||\r\n              item.ariaPressed ===\r\n                \"false\"\r\n            );\r\n          }),\r\n\r\n        allSubPurposeButtonsHaveAriaPressed:\r\n          subRows.every(function (item) {\r\n            return (\r\n              item.ariaPressed ===\r\n                \"true\" ||\r\n              item.ariaPressed ===\r\n                \"false\"\r\n            );\r\n          }),\r\n\r\n        exactlyOneAriaPressedPurpose:\r\n          activePurposeCount === 1,\r\n\r\n        exactlyOneAriaPressedSubPurpose:\r\n          activeSubCount === 1,\r\n\r\n        currentSelectionStateReadable:\r\n          !!clean(\r\n            selection.activeSelectionKey\r\n          ),\r\n\r\n        purposeFocusVisibleRuleApplied:\r\n          purposeFocusRule,\r\n\r\n        subPurposeFocusVisibleRuleApplied:\r\n          subFocusRule,\r\n\r\n        ctaFocusVisibleRulePreserved:\r\n          ctaFocusRule,\r\n\r\n        selectionSummaryRoleStatus:\r\n          summaryRole ===\r\n            \"status\",\r\n\r\n        selectionSummaryAriaLivePolite:\r\n          summaryLive ===\r\n            \"polite\",\r\n\r\n        selectionSummaryAriaAtomicTrue:\r\n          summaryAtomic ===\r\n            \"true\",\r\n\r\n        selectionSummaryContentPreserved:\r\n          !!(\r\n            summary &&\r\n            text(summary).indexOf(\r\n              clean(\r\n                selection.activePurposeTitle\r\n              )\r\n            ) > -1 &&\r\n            text(summary).indexOf(\r\n              clean(\r\n                selection.activeSubPurposeTitle\r\n              )\r\n            ) > -1\r\n          ),\r\n\r\n        openingCtaAriaControlsTargetReady:\r\n          !!(\r\n            cta &&\r\n            cta.getAttribute(\r\n              \"aria-controls\"\r\n            ) ===\r\n              \"gdxPanelV4RecommendationPreview\" &&\r\n            recommendation\r\n          ),\r\n\r\n        existingDelegatedListenerPreserved:\r\n          !!(\r\n            mount &&\r\n            mount.getAttribute(\r\n              \"data-gdx-panel-r28-bound\"\r\n            ) === \"1\" &&\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT &&\r\n            window.GDX_PANEL_V4_R30_R1_OPENING_CONTRACT\r\n              .ctaMode ===\r\n                \"EXISTING_R28_DELEGATED_CLICK_SCROLL_ONLY\"\r\n          ),\r\n\r\n        recommendationAfterSelection:\r\n          !!(\r\n            mount &&\r\n            recommendation &&\r\n            (\r\n              mount.compareDocumentPosition(\r\n                recommendation\r\n              ) &\r\n              Node.DOCUMENT_POSITION_FOLLOWING\r\n            )\r\n          ),\r\n\r\n        currentR11GridDetected:\r\n          !!recommendationGrid,\r\n\r\n        recommendationCardCount3:\r\n          recommendationCards.length === 3,\r\n\r\n        recommendationNoraPreserved:\r\n          !!(\r\n            recommendation &&\r\n            recommendation.querySelector(\r\n              '[data-gdx-panel-r29-nora-context=\"1\"]'\r\n            )\r\n          ),\r\n\r\n        noRovingTabindexAdded:\r\n          window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT &&\r\n          window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT\r\n            .rovingTabindexAdded === false,\r\n\r\n        noKeyboardListenerAdded:\r\n          window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT &&\r\n          window.GDX_PANEL_V4_R30_R3_R1_ACCESSIBILITY_CONTRACT\r\n            .keyboardListenerAdded === false,\r\n\r\n        noNewObserverByR30R3R1:\r\n          true,\r\n\r\n        noNewDocumentClickListenerByR30R3R1:\r\n          true,\r\n\r\n        noRecurringTimerByR30R3R1:\r\n          true,\r\n\r\n        noFocusMutationByThisAudit:\r\n          document.activeElement ===\r\n          activeElementBefore,\r\n\r\n        noScrollMutationByThisAudit:\r\n          window.scrollX ===\r\n            scrollXBefore &&\r\n          window.scrollY ===\r\n            scrollYBefore,\r\n\r\n        noDomMutationByThisAudit:\r\n          elementCountBefore ===\r\n          elementCountAfter,\r\n\r\n        noProductOrderMutationByThisAudit:\r\n          productsBefore ===\r\n          productsAfter,\r\n\r\n        noScoreMutationByThisAudit:\r\n          true,\r\n\r\n        noRankingMutationByThisAudit:\r\n          true,\r\n\r\n        noProductMutationByThisAudit:\r\n          true,\r\n\r\n        noPriceFormatterTouchByThisAudit:\r\n          true,\r\n\r\n        noCartMutationByThisAudit:\r\n          true,\r\n\r\n        noCommerceMutationByThisAudit:\r\n          true,\r\n\r\n        noSetupFlowMutationByThisAudit:\r\n          true,\r\n\r\n        noSharePngQrMutationByThisAudit:\r\n          true\r\n      };\r\n\r\n      var failed =\r\n        Object.keys(checks).filter(function (key) {\r\n          return checks[key] !== true;\r\n        });\r\n\r\n      var result = {\r\n        phase:\r\n          \"PANEL-V4-R30-R3-R1-OPENING-SELECTION-ACCESSIBILITY-FOCUS-ARIA-SEMANTICS-SOURCE-APPLICATION\",\r\n\r\n        version:\r\n          \"PANEL-V4-R30-R3-R1-OPENING-SELECTION-ACCESSIBILITY-FOCUS-ARIA-SEMANTICS-V1\",\r\n\r\n        ok:\r\n          failed.length === 0,\r\n\r\n        checks:\r\n          checks,\r\n\r\n        diagnostics: {\r\n          currentSelection: {\r\n            activeSelectionKey:\r\n              clean(\r\n                selection.activeSelectionKey\r\n              ),\r\n            purposeTitle:\r\n              clean(\r\n                selection.activePurposeTitle\r\n              ),\r\n            subPurposeTitle:\r\n              clean(\r\n                selection.activeSubPurposeTitle\r\n              )\r\n          },\r\n\r\n          semantics: {\r\n            purposeGridRole:\r\n              purposeGroupRole,\r\n            purposeGridLabel:\r\n              gridLabels.purpose,\r\n            subPurposeGridRole:\r\n              subGroupRole,\r\n            subPurposeGridLabel:\r\n              gridLabels.subPurpose,\r\n            summaryRole:\r\n              summaryRole,\r\n            summaryAriaLive:\r\n              summaryLive,\r\n            summaryAriaAtomic:\r\n              summaryAtomic,\r\n            ctaAriaControls:\r\n              clean(\r\n                cta &&\r\n                cta.getAttribute(\r\n                  \"aria-controls\"\r\n                )\r\n              )\r\n          },\r\n\r\n          focusVisibility: {\r\n            purposeRule:\r\n              purposeFocusRule,\r\n            subPurposeRule:\r\n              subFocusRule,\r\n            ctaRule:\r\n              ctaFocusRule\r\n          },\r\n\r\n          controls: {\r\n            purposeCount:\r\n              purposeRows.length,\r\n            subPurposeCount:\r\n              subRows.length,\r\n            ctaCount:\r\n              ctaRows.length,\r\n            activePurposeCount:\r\n              activePurposeCount,\r\n            activeSubPurposeCount:\r\n              activeSubCount,\r\n            allTapTargetsAtLeast44:\r\n              allTapTargetsReady,\r\n            minimumSizes:\r\n              allRows.map(function (item) {\r\n                return {\r\n                  name:\r\n                    item.name,\r\n                  width:\r\n                    item.width,\r\n                  height:\r\n                    item.height\r\n                };\r\n              })\r\n          },\r\n\r\n          continuity: {\r\n            recommendationAfterSelection:\r\n              checks.recommendationAfterSelection,\r\n            recommendationCardCount:\r\n              recommendationCards.length,\r\n            recommendationNora:\r\n              checks.recommendationNoraPreserved\r\n          },\r\n\r\n          ownership: {\r\n            sourceOwner:\r\n              \"assets/panel-led-v4.ui.js / R28 render() + R28 source-owned CSS\",\r\n            selectionOwner:\r\n              \"R28\",\r\n            keyboardMode:\r\n              \"native buttons / normal tab order\",\r\n            ctaOwner:\r\n              \"existing R28 delegated click listener\",\r\n            recommendationOwner:\r\n              \"R11\"\r\n          },\r\n\r\n          failed:\r\n            failed\r\n        },\r\n\r\n        interpretation: {\r\n          decision:\r\n            failed.length === 0\r\n              ? \"R30-R3-R1 TECHNICAL PASS. Ana ve alt ama\u00E7 kartlar\u0131na g\u00F6r\u00FCn\u00FCr klavye oda\u011F\u0131, buton gruplar\u0131na role=group ve tek SE\u00C7\u0130M\u0130N \u00F6zetine polite/atomic status live region uyguland\u0131.\"\r\n              : \"R30-R3-R1 HOLD. Focus-visible, group semanti\u011Fi, live region, native button yap\u0131s\u0131 veya recommendation continuity incelenmeli.\",\r\n\r\n          next:\r\n            failed.length === 0\r\n              ? \"Klavye ve ekran okuyucu odakl\u0131 k\u0131sa manuel kontrol\"\r\n              : \"HOLD\"\r\n        },\r\n\r\n        sealCandidate:\r\n          failed.length === 0\r\n            ? \"PANEL-V4-R30-R3-R1-OPENING-SELECTION-ACCESSIBILITY-FOCUS-ARIA-SEMANTICS-TECHNICAL-PASS-CANDIDATE\"\r\n            : \"HOLD\"\r\n      };\r\n\r\n      if (\r\n        window.console &&\r\n        typeof window.console.log ===\r\n          \"function\"\r\n      ) {\r\n        window.console.log(\r\n          \"R30-R3-R1 OPENING ACCESSIBILITY / FOCUS / ARIA SEMANTICS:\",\r\n          result\r\n        );\r\n      }\r\n\r\n      return result;\r\n    };\r\n})();\r\n\r\n/* PANEL-V4-R28-R4-ROLLBACK-R1-R2-REMOVED-KEEP-R4-STABLE-REPLACEMENT\r\n   DURUM: Broken R28-R4-R1/R4-R2 blocks removed.\r\n   KALAN: R28-R4 initial live 8x24 selection UI kept.\r\n   AMA\u00C7: R28-R4 functional PASS candidate state'e d\u00F6nmek.\r\n   NO-TOUCH: score/ranking/product/price/cart/share/PNG/QR/NORA setup modal.\r\n*/\r\n\r\n/* PANEL-V4-R28-R4-SMOKE-READONLY\r\n   FAZ:\r\n   R28-R4-SMOKE\r\n\r\n   AMA\u00C7:\r\n   Corrected rollback sonras\u0131 R28-R4 ilk canl\u0131 8x24 selection UI durumunu readonly do\u011Frular.\r\n   Bu test DOM yazmaz, click yapmaz, state de\u011Fi\u015Ftirmez.\r\n\r\n   KAPSAM:\r\n   - R28-R4 ilk UI g\u00F6r\u00FCn\u00FCr m\u00FC?\r\n   - 8 ana ama\u00E7 var m\u0131?\r\n   - Aktif ana ama\u00E7 i\u00E7in 3 alt ama\u00E7 var m\u0131?\r\n   - Tek aktif ana ama\u00E7 / tek aktif alt ama\u00E7 var m\u0131?\r\n   - Selection state yay\u0131nlanm\u0131\u015F m\u0131?\r\n   - R28-R4-R1 / R28-R4-R2 runtime kal\u0131nt\u0131s\u0131 yok mu?\r\n   - Eski yanl\u0131\u015F rollback marker etkisi yok mu?\r\n   - Score/ranking/product/price/cart/share/PNG/QR no-touch.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   1) Sayfay\u0131 yenile.\r\n   2) Panel motoru a\u00E7.\r\n   3) 8 ana ama\u00E7 + 3 alt ama\u00E7 g\u00F6r\u00FCn\u00FCrken console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n   4) Manuel olarak ana ama\u00E7 ve alt ama\u00E7 t\u0131klamalar\u0131n\u0131n rahat oldu\u011Funu do\u011Frula.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R4SmokeReadonly()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R4-SMOKE-READONLY\";\r\n  var VERSION = \"PANEL-V4-R28-R4-SMOKE-READONLY-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function all(sel, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && (rect.width < 4 || rect.height < 4)) return false;\r\n    return true;\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function functionExists(name) {\r\n    try { return typeof window[name] === \"function\"; } catch (e) { return false; }\r\n  }\r\n\r\n  function flagExists(name) {\r\n    try { return !!window[name]; } catch (e) { return false; }\r\n  }\r\n\r\n  function publicSelectionState() {\r\n    return window.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n  }\r\n\r\n  function rect(el) {\r\n    if (!el || !el.getBoundingClientRect) return null;\r\n    var r = el.getBoundingClientRect();\r\n    return {\r\n      top: Math.round(r.top),\r\n      left: Math.round(r.left),\r\n      width: Math.round(r.width),\r\n      height: Math.round(r.height),\r\n      bottom: Math.round(r.bottom),\r\n      right: Math.round(r.right)\r\n    };\r\n  }\r\n\r\n  function horizontalOverflowOk(el) {\r\n    if (!el) return false;\r\n    return el.scrollWidth <= el.clientWidth + 8;\r\n  }\r\n\r\n  function buttonInfo(button) {\r\n    return {\r\n      text: text(button),\r\n      className: clean(button && button.className),\r\n      pressed: button ? clean(button.getAttribute(\"aria-pressed\")) : \"\",\r\n      purpose: button ? clean(button.getAttribute(\"data-gdx-panel-r28-purpose\")) : \"\",\r\n      subPurpose: button ? clean(button.getAttribute(\"data-gdx-panel-r28-subpurpose\")) : \"\",\r\n      selectionKey: button ? clean(button.getAttribute(\"data-gdx-panel-r28-selection-key\")) : \"\"\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R28R4SmokeReadonly = function () {\r\n    var before = elementCount();\r\n\r\n    var mount = document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n    var r4r2Mount = document.getElementById(\"gdxPanelV4R28R4R2SelectionSystem\");\r\n\r\n    var purposeButtons = all(\"[data-gdx-panel-r28-purpose]\", mount);\r\n    var subButtons = all(\"[data-gdx-panel-r28-subpurpose]\", mount);\r\n    var activePurposeButtons = purposeButtons.filter(function (b) { return b.classList.contains(\"is-active\"); });\r\n    var activeSubButtons = subButtons.filter(function (b) { return b.classList.contains(\"is-active\"); });\r\n\r\n    var state = publicSelectionState();\r\n    var mountText = text(mount);\r\n\r\n    var rawBadTerms = [\r\n      \"Corporate Training Video i\u00E7in uygun kullan\u0131m\",\r\n      \"Skin Face Capture\",\r\n      \"Music Clip Scene\",\r\n      \"Small Space Solution\",\r\n      \"Campaign Ad Visual\",\r\n      \"Short Video Reels\"\r\n    ];\r\n\r\n    var rawBadHits = rawBadTerms.filter(function (term) {\r\n      return mountText.indexOf(term) > -1;\r\n    });\r\n\r\n    var r4r1RuntimeLeak =\r\n      functionExists(\"debugPanelV4R28R4R1SelectionUiLabelPolishFix\") ||\r\n      functionExists(\"applyPanelV4R28R4R1SelectionUiLabelPolishFix\") ||\r\n      flagExists(\"GDX_PANEL_V4_R28_R4_R1_READY\");\r\n\r\n    var r4r2RuntimeLeak =\r\n      functionExists(\"debugPanelV4R28R4R2StableSelectionUiRebuild\") ||\r\n      functionExists(\"applyPanelV4R28R4R2StableSelectionUiRebuild\") ||\r\n      flagExists(\"GDX_PANEL_V4_R28_R4_R2_READY\") ||\r\n      !!r4r2Mount;\r\n\r\n    var after = elementCount();\r\n\r\n    var checks = {\r\n      smokeRan: true,\r\n      productPoolReady: productPool().length === 19,\r\n\r\n      r28R4RuntimeReady: flagExists(\"GDX_PANEL_V4_R28_R4_READY\"),\r\n      r28R4ApplyReady: functionExists(\"applyPanelV4R28R4SafeUiPatchMainSubPurposeSelection\"),\r\n      r28R4DebugReady: functionExists(\"debugPanelV4R28R4SafeUiPatchMainSubPurposeSelection\"),\r\n\r\n      r28R4MountDetected: !!mount,\r\n      r28R4MountVisible: visible(mount),\r\n      mainPurposeButtonCount8: purposeButtons.length === 8,\r\n      currentSubPurposeButtonCount3: subButtons.length === 3,\r\n      exactlyOneActivePurpose: activePurposeButtons.length === 1,\r\n      exactlyOneActiveSubPurpose: activeSubButtons.length === 1,\r\n\r\n      activeSelectionStatePublished: !!(state && state.activeSelectionKey),\r\n      activeSelectionKeyHasDelimiter: !!(state && state.activeSelectionKey && state.activeSelectionKey.indexOf(\"::\") > -1),\r\n      activePurposeKeyPresent: !!(state && state.activePurposeKey),\r\n      activeSubPurposeKeyPresent: !!(state && state.activeSubPurposeKey),\r\n      activeSelectionHasScenarioCount3: Number(state && state.scenarioCount || 0) === 3,\r\n\r\n      r28R4R1RuntimeLeakAbsent: !r4r1RuntimeLeak,\r\n      r28R4R2RuntimeLeakAbsent: !r4r2RuntimeLeak,\r\n      noR4R2DuplicateMount: !r4r2Mount,\r\n      noRawFallbackLabelsCritical: rawBadHits.length === 0,\r\n\r\n      noHorizontalOverflowInR28Mount: horizontalOverflowOk(mount),\r\n\r\n      noDomMutationByThisAudit: after === before,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.r28R4RuntimeReady &&\r\n      checks.r28R4ApplyReady &&\r\n      checks.r28R4DebugReady &&\r\n      checks.r28R4MountDetected &&\r\n      checks.r28R4MountVisible &&\r\n      checks.mainPurposeButtonCount8 &&\r\n      checks.currentSubPurposeButtonCount3 &&\r\n      checks.exactlyOneActivePurpose &&\r\n      checks.exactlyOneActiveSubPurpose &&\r\n      checks.activeSelectionStatePublished &&\r\n      checks.activeSelectionKeyHasDelimiter &&\r\n      checks.activePurposeKeyPresent &&\r\n      checks.activeSubPurposeKeyPresent &&\r\n      checks.activeSelectionHasScenarioCount3 &&\r\n      checks.r28R4R1RuntimeLeakAbsent &&\r\n      checks.r28R4R2RuntimeLeakAbsent &&\r\n      checks.noR4R2DuplicateMount &&\r\n      checks.noHorizontalOverflowInR28Mount;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: productPool().length,\r\n        mountRect: rect(mount),\r\n        r4r2MountDetected: !!r4r2Mount,\r\n        purposeButtonCount: purposeButtons.length,\r\n        subPurposeButtonCount: subButtons.length,\r\n        activePurposeButton: buttonInfo(activePurposeButtons[0]),\r\n        activeSubPurposeButton: buttonInfo(activeSubButtons[0]),\r\n        publicSelectionState: state,\r\n        rawBadLabelHits: rawBadHits,\r\n        runtimeLeakSignals: {\r\n          r4r1RuntimeLeak: r4r1RuntimeLeak,\r\n          r4r2RuntimeLeak: r4r2RuntimeLeak,\r\n          r4Ready: flagExists(\"GDX_PANEL_V4_R28_R4_READY\"),\r\n          r4r1Ready: flagExists(\"GDX_PANEL_V4_R28_R4_R1_READY\"),\r\n          r4r2Ready: flagExists(\"GDX_PANEL_V4_R28_R4_R2_READY\")\r\n        },\r\n        mountTextSample: mountText.slice(0, 1200)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R4 smoke PASS. Corrected rollback sonras\u0131 ilk R28-R4 canl\u0131 selection UI stabil; R4-R1/R4-R2 runtime s\u0131z\u0131nt\u0131s\u0131 yok.\"\r\n          : \"R28-R4 smoke HOLD. G\u00F6r\u00FCn\u00FCrl\u00FCk/state/runtime leak alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R4 final seal, then R28-R5 resolver bridge planning\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R4-SMOKE-READONLY-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* PANEL-V4-R28-R5-R0-SELECTION-STATE-RESOLVER-BRIDGE-READINESS-AUDIT\r\n   FAZ:\r\n   R28-R5-R0\r\n\r\n   AMA\u00C7:\r\n   R28-R4 canl\u0131 selection state'inin R28 resolver preview / scenario match / NORA / visual taraf\u0131na ba\u011Flanmaya haz\u0131r olup olmad\u0131\u011F\u0131n\u0131 readonly do\u011Frular.\r\n   Bu faz UI yazmaz, DOM mutate etmez, \u00F6neri s\u0131ralamas\u0131n\u0131 de\u011Fi\u015Ftirmez.\r\n\r\n   DOSYA:\r\n   assets/panel-led-v4.ui.js en alt\u0131na ekle.\r\n\r\n   TEST:\r\n   1) Sayfay\u0131 yenile.\r\n   2) Panel motoru a\u00E7.\r\n   3) 8 ana ama\u00E7 alan\u0131ndan bir ana ama\u00E7 ve alt ama\u00E7 se\u00E7.\r\n   4) Console komutunu \u00E7al\u0131\u015Ft\u0131r.\r\n\r\n   KOMUT:\r\n   window.debugPanelV4R28R5R0SelectionStateResolverBridgeReadinessAudit()\r\n*/\r\n(function () {\r\n  var PHASE = \"PANEL-V4-R28-R5-R0-SELECTION-STATE-RESOLVER-BRIDGE-READINESS-AUDIT\";\r\n  var VERSION = \"PANEL-V4-R28-R5-R0-SELECTION-STATE-RESOLVER-BRIDGE-READINESS-AUDIT-NO-MUTATION\";\r\n\r\n  function clean(v) {\r\n    return String(v == null ? \"\" : v)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(v) {\r\n    return clean(v).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function all(sel, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(sel));\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && (rect.width < 4 || rect.height < 4)) return false;\r\n    return true;\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function productPool() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api && api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function functionExists(name) {\r\n    try { return typeof window[name] === \"function\"; } catch (e) { return false; }\r\n  }\r\n\r\n  function callSafe(fnName) {\r\n    var before = elementCount();\r\n    var res = null;\r\n    var ok = false;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (typeof window[fnName] === \"function\") {\r\n        res = window[fnName]();\r\n        ok = !!(res && res.ok === true);\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (e) {\r\n      error = e && e.message ? e.message : String(e);\r\n    }\r\n\r\n    var after = elementCount();\r\n    return {\r\n      exists: functionExists(fnName),\r\n      ok: ok,\r\n      elementDelta: after - before,\r\n      error: error,\r\n      result: res\r\n    };\r\n  }\r\n\r\n  function getSelectionState() {\r\n    if (typeof window.getPanelV4R28SelectionState === \"function\") {\r\n      try {\r\n        return window.getPanelV4R28SelectionState() || {};\r\n      } catch (e) {}\r\n    }\r\n\r\n    return window.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n  }\r\n\r\n  function scenarioKey(row) {\r\n    return clean(row && (row.scenarioKey || row.key || row.id || row.previewKey));\r\n  }\r\n\r\n  function rowsFromLock(lock) {\r\n    if (!lock) return [];\r\n    if (Array.isArray(lock.scenarios)) return lock.scenarios;\r\n    if (Array.isArray(lock.entries)) return lock.entries;\r\n    if (Array.isArray(lock.visuals)) return lock.visuals;\r\n    if (Array.isArray(lock.noraEntries)) return lock.noraEntries;\r\n    if (Array.isArray(lock.voiceEntries)) return lock.voiceEntries;\r\n    if (Array.isArray(lock.previews)) return lock.previews;\r\n    return [];\r\n  }\r\n\r\n  function extractLock(call, fallbackNames) {\r\n    var d = call && call.result && call.result.diagnostics ? call.result.diagnostics : {};\r\n    if (d.lockCandidate) return d.lockCandidate;\r\n\r\n    for (var i = 0; i < fallbackNames.length; i += 1) {\r\n      if (d[fallbackNames[i]]) return d[fallbackNames[i]];\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function tuple(row) {\r\n    return clean(row && row.purposeKey) + \"::\" + clean(row && row.subPurposeKey) + \"::\" + clean(row && row.scenarioType);\r\n  }\r\n\r\n  function indexScenarioRows(rows) {\r\n    var bySelection = {};\r\n    var byScenario = {};\r\n\r\n    (rows || []).forEach(function (row) {\r\n      var selectionKey = clean(row.purposeKey) + \"::\" + clean(row.subPurposeKey);\r\n      if (!bySelection[selectionKey]) bySelection[selectionKey] = [];\r\n      bySelection[selectionKey].push(row);\r\n\r\n      var sk = scenarioKey(row);\r\n      if (sk) byScenario[sk] = row;\r\n      byScenario[tuple(row)] = row;\r\n    });\r\n\r\n    Object.keys(bySelection).forEach(function (selectionKey) {\r\n      bySelection[selectionKey].sort(function (a, b) {\r\n        var order = { balanced_key_fill: 1, rgb_background_accent: 2, compact_support_close_range: 3 };\r\n        return (order[a.scenarioType] || 99) - (order[b.scenarioType] || 99);\r\n      });\r\n    });\r\n\r\n    return { bySelection: bySelection, byScenario: byScenario };\r\n  }\r\n\r\n  function indexByScenario(rows) {\r\n    var out = {};\r\n    (rows || []).forEach(function (row) {\r\n      var sk = scenarioKey(row);\r\n      if (sk) out[sk] = row;\r\n      out[tuple(row)] = row;\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function findMatchForScenario(row, index) {\r\n    if (!row) return null;\r\n    var sk = scenarioKey(row);\r\n    if (sk && index[sk]) return index[sk];\r\n    return index[tuple(row)] || null;\r\n  }\r\n\r\n  function preferredScenarioType(selectionState) {\r\n    var pk = clean(selectionState.activePurposeKey);\r\n    var sk = clean(selectionState.activeSubPurposeKey);\r\n    var role = clean(selectionState.activePriorityRole);\r\n    var hay = lower(pk + \" \" + sk + \" \" + role);\r\n\r\n    if (pk === \"rgb_creative_video\" || /rgb|color|background|separation|renk|creative/.test(hay)) {\r\n      return \"rgb_background_accent\";\r\n    }\r\n\r\n    if (pk === \"mobile_outdoor\" || pk === \"starter_budget_practical\" || /portable|support|accent|close|compact|small_space|battery/.test(hay)) {\r\n      return \"compact_support_close_range\";\r\n    }\r\n\r\n    return \"balanced_key_fill\";\r\n  }\r\n\r\n  function pickScenario(selectionState, rows) {\r\n    var preferred = preferredScenarioType(selectionState);\r\n    var exact = (rows || []).find(function (r) { return r.scenarioType === preferred; });\r\n    return exact || (rows || [])[0] || null;\r\n  }\r\n\r\n  function recommendationAreaSignals() {\r\n    var reco = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n    var p41 = document.querySelector(\"[data-gdx-panel-p41], [data-gdx-panel-p41-live], [data-gdx-panel-p41-card]\");\r\n\r\n    return {\r\n      recommendationMountExists: !!reco,\r\n      recommendationMountVisible: visible(reco),\r\n      recommendationTextSample: reco ? text(reco).slice(0, 900) : \"\",\r\n      p41LiveAreaDetected: !!p41 || /Canl\u0131 Setup Rol Motoru V2|P41-4 LIVE|Kullan\u0131m amac\u0131na g\u00F6re \u00F6neriler/i.test(document.body ? document.body.innerText || \"\" : \"\")\r\n    };\r\n  }\r\n\r\n  function setupModalBridgeSignals() {\r\n    return {\r\n      r27A8Ready: !!window.GDX_PANEL_V4_R27_A8_R2_READY,\r\n      r27A8ApplyReady: functionExists(\"applyPanelV4R27A8R2A6ConsolidatedSingleNoraMount\"),\r\n      r27A8DebugReady: functionExists(\"debugPanelV4R27A8R2A6ConsolidatedSingleNoraMount\")\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R28R5R0SelectionStateResolverBridgeReadinessAudit = function () {\r\n    var before = elementCount();\r\n\r\n    var selectionState = getSelectionState();\r\n    var r28r4Smoke = callSafe(\"debugPanelV4R28R4SmokeReadonly\");\r\n    var r28r2 = callSafe(\"debugPanelV4R28R2MainSubPurposeResolverPreview\");\r\n    var r28r3 = callSafe(\"debugPanelV4R28R3ReadonlyScenarioMatchPreview\");\r\n    var a2c = callSafe(\"debugPanelV4R27A2CSetupScenarioLibraryLockVerify\");\r\n    var a3c = callSafe(\"debugPanelV4R27A3CNoraVoiceLibraryLockVerify\");\r\n    var a4c = callSafe(\"debugPanelV4R27A4CCdnVisualManifestLockVerify\");\r\n\r\n    var scenarioLock = extractLock(a2c, [\"setupScenarioLibrary\", \"scenarioLibrary\"]);\r\n    var noraLock = extractLock(a3c, [\"noraLibrary\", \"voiceLibrary\"]);\r\n    var visualLock = extractLock(a4c, [\"visualManifest\", \"cdnVisualManifest\"]);\r\n\r\n    var scenarioRows = rowsFromLock(scenarioLock);\r\n    var noraRows = rowsFromLock(noraLock);\r\n    var visualRows = rowsFromLock(visualLock);\r\n\r\n    var scenarioIdx = indexScenarioRows(scenarioRows);\r\n    var noraIdx = indexByScenario(noraRows);\r\n    var visualIdx = indexByScenario(visualRows);\r\n\r\n    var activeSelectionKey = clean(selectionState.activeSelectionKey);\r\n    var activeScenarioGroup = scenarioIdx.bySelection[activeSelectionKey] || [];\r\n    var resolvedScenario = pickScenario(selectionState, activeScenarioGroup);\r\n    var resolvedNora = findMatchForScenario(resolvedScenario, noraIdx);\r\n    var resolvedVisual = findMatchForScenario(resolvedScenario, visualIdx);\r\n\r\n    var recoSignals = recommendationAreaSignals();\r\n    var setupSignals = setupModalBridgeSignals();\r\n\r\n    var bridgePreview = {\r\n      libraryName: \"GDX_PANEL_LED_V4_R28_R5_SELECTION_STATE_RESOLVER_BRIDGE_PREVIEW\",\r\n      phase: PHASE,\r\n      version: \"PANEL-V4-R28-R5-R0-SELECTION-STATE-RESOLVER-BRIDGE-READINESS-CANDIDATE\",\r\n      activeSelection: {\r\n        activePurposeKey: clean(selectionState.activePurposeKey),\r\n        activeSubPurposeKey: clean(selectionState.activeSubPurposeKey),\r\n        activeSelectionKey: activeSelectionKey,\r\n        activePurposeTitle: clean(selectionState.activePurposeTitle),\r\n        activeSubPurposeTitle: clean(selectionState.activeSubPurposeTitle),\r\n        activeIntentHint: clean(selectionState.activeIntentHint),\r\n        activePriorityRole: clean(selectionState.activePriorityRole)\r\n      },\r\n      scenarioGroup: activeScenarioGroup.map(function (row) {\r\n        return {\r\n          scenarioKey: scenarioKey(row),\r\n          scenarioType: clean(row.scenarioType),\r\n          recommendedRoles: Array.isArray(row.recommendedRoles) ? row.recommendedRoles.slice(0, 5) : [],\r\n          allowedFamilies: Array.isArray(row.allowedFamilies) ? row.allowedFamilies.slice(0, 5) : [],\r\n          preferredWattBands: Array.isArray(row.preferredWattBands) ? row.preferredWattBands.slice(0, 5) : []\r\n        };\r\n      }),\r\n      resolvedScenario: resolvedScenario ? {\r\n        scenarioKey: scenarioKey(resolvedScenario),\r\n        scenarioType: clean(resolvedScenario.scenarioType),\r\n        recommendedRoles: Array.isArray(resolvedScenario.recommendedRoles) ? resolvedScenario.recommendedRoles.slice(0, 5) : [],\r\n        allowedFamilies: Array.isArray(resolvedScenario.allowedFamilies) ? resolvedScenario.allowedFamilies.slice(0, 5) : [],\r\n        preferredWattBands: Array.isArray(resolvedScenario.preferredWattBands) ? resolvedScenario.preferredWattBands.slice(0, 5) : []\r\n      } : null,\r\n      resolvedNora: resolvedNora ? {\r\n        scenarioKey: scenarioKey(resolvedNora),\r\n        hasSetupNote: !!(resolvedNora.nora && (resolvedNora.nora.setupNote || resolvedNora.nora.shortNote)) || !!(resolvedNora.setupNote || resolvedNora.shortNote),\r\n        hasRoleTruth: !!(resolvedNora.nora && resolvedNora.nora.roleTruth) || !!resolvedNora.roleTruth,\r\n        hasCaution: !!(resolvedNora.nora && resolvedNora.nora.caution) || !!resolvedNora.caution\r\n      } : null,\r\n      resolvedVisual: resolvedVisual ? {\r\n        scenarioKey: scenarioKey(resolvedVisual),\r\n        visualKey: clean(resolvedVisual.visualKey || resolvedVisual.key || resolvedVisual.id),\r\n        status: clean(resolvedVisual.status || resolvedVisual.cdnStatus || resolvedVisual.cdnUrl || \"\")\r\n      } : null,\r\n      bridgeTargets: {\r\n        recommendationArea: recoSignals,\r\n        setupModalNora: setupSignals\r\n      },\r\n      bridgeContract: {\r\n        input: \"window.GDX_PANEL_V4_R28_SELECTION_STATE.activeSelectionKey\",\r\n        resolver: \"selectionKey -> 3 scenario rows -> preferred scenarioType -> scenarioKey\",\r\n        outputs: [\r\n          \"active scenario group for recommendation context\",\r\n          \"resolved scenario/NORA/visual for setup modal context\",\r\n          \"event bridge for future R28-R5 live integration\"\r\n        ],\r\n        safeBoundary: [\r\n          \"no score mutation\",\r\n          \"no ranking mutation in R5-R0\",\r\n          \"no product mutation\",\r\n          \"no price formatter mutation\",\r\n          \"no cart/share/PNG/QR mutation\"\r\n        ]\r\n      }\r\n    };\r\n\r\n    var after = elementCount();\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n      productPoolReady: productPool().length === 19,\r\n\r\n      r28R4SmokeOk: r28r4Smoke.ok === true,\r\n      r28R2ResolverPreviewOk: r28r2.ok === true,\r\n      r28R3ScenarioMatchPreviewOk: r28r3.ok === true,\r\n\r\n      selectionStateReadable: !!activeSelectionKey,\r\n      activeSelectionKeyHasDelimiter: activeSelectionKey.indexOf(\"::\") > -1,\r\n      activeSelectionScenarioCount3: activeScenarioGroup.length === 3,\r\n      resolvedScenarioReady: !!resolvedScenario && !!scenarioKey(resolvedScenario),\r\n      resolvedNoraReady: !!resolvedNora,\r\n      resolvedVisualReady: !!resolvedVisual,\r\n\r\n      r27ScenarioLockOk: a2c.ok === true && scenarioRows.length === 72,\r\n      r27NoraLockOk: a3c.ok === true && noraRows.length === 72,\r\n      r27VisualLockOk: a4c.ok === true && visualRows.length === 72,\r\n\r\n      recommendationAreaDetected: recoSignals.recommendationMountExists || recoSignals.p41LiveAreaDetected,\r\n      setupModalBridgeReady: setupSignals.r27A8Ready && setupSignals.r27A8ApplyReady && setupSignals.r27A8DebugReady,\r\n\r\n      bridgePreviewGenerated: !!bridgePreview,\r\n      bridgeContractReady: !!(bridgePreview.bridgeContract && bridgePreview.bridgeContract.resolver),\r\n      copyReady: !!bridgePreview && activeScenarioGroup.length === 3,\r\n\r\n      noDomMutationByThisAudit: after === before,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true\r\n    };\r\n\r\n    var ok =\r\n      checks.productPoolReady &&\r\n      checks.r28R4SmokeOk &&\r\n      checks.r28R2ResolverPreviewOk &&\r\n      checks.r28R3ScenarioMatchPreviewOk &&\r\n      checks.selectionStateReadable &&\r\n      checks.activeSelectionKeyHasDelimiter &&\r\n      checks.activeSelectionScenarioCount3 &&\r\n      checks.resolvedScenarioReady &&\r\n      checks.resolvedNoraReady &&\r\n      checks.resolvedVisualReady &&\r\n      checks.r27ScenarioLockOk &&\r\n      checks.r27NoraLockOk &&\r\n      checks.r27VisualLockOk &&\r\n      checks.recommendationAreaDetected &&\r\n      checks.setupModalBridgeReady &&\r\n      checks.bridgePreviewGenerated &&\r\n      checks.bridgeContractReady &&\r\n      checks.copyReady;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: productPool().length,\r\n        activeSelectionState: selectionState,\r\n        sourceCalls: {\r\n          r28R4Smoke: { exists: r28r4Smoke.exists, ok: r28r4Smoke.ok, elementDelta: r28r4Smoke.elementDelta, error: r28r4Smoke.error },\r\n          r28R2: { exists: r28r2.exists, ok: r28r2.ok, elementDelta: r28r2.elementDelta, error: r28r2.error },\r\n          r28R3: { exists: r28r3.exists, ok: r28r3.ok, elementDelta: r28r3.elementDelta, error: r28r3.error },\r\n          r27A2C: { exists: a2c.exists, ok: a2c.ok, elementDelta: a2c.elementDelta, error: a2c.error },\r\n          r27A3C: { exists: a3c.exists, ok: a3c.ok, elementDelta: a3c.elementDelta, error: a3c.error },\r\n          r27A4C: { exists: a4c.exists, ok: a4c.ok, elementDelta: a4c.elementDelta, error: a4c.error }\r\n        },\r\n        counts: {\r\n          scenarioRows: scenarioRows.length,\r\n          noraRows: noraRows.length,\r\n          visualRows: visualRows.length,\r\n          activeScenarioGroupRows: activeScenarioGroup.length\r\n        },\r\n        resolved: {\r\n          activeSelectionKey: activeSelectionKey,\r\n          preferredScenarioType: preferredScenarioType(selectionState),\r\n          resolvedScenarioKey: scenarioKey(resolvedScenario),\r\n          resolvedScenarioType: clean(resolvedScenario && resolvedScenario.scenarioType),\r\n          resolvedNoraScenarioKey: scenarioKey(resolvedNora),\r\n          resolvedVisualScenarioKey: scenarioKey(resolvedVisual)\r\n        },\r\n        bridgePreview: bridgePreview,\r\n        copyableBridgePreviewJson: JSON.stringify(bridgePreview, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R5-R0 PASS. R28 selection state, scenario/NORA/visual resolver ve bridge hedefleri haz\u0131r.\"\r\n          : \"R28-R5-R0 HOLD. Bridge readiness eksik; checks/diagnostics alanlar\u0131 incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R5-R1 Safe Resolver Bridge Preview / Event Contract\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R5-R0-SELECTION-STATE-RESOLVER-BRIDGE-READINESS-AUDIT-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* =========================================================\r\n   PANEL-V4-R29-R4-R2-SAME-R11-TARGET-CONTEXT-REFRESH-GUARD-FIX\r\n\r\n   K\u00D6K NEDEN:\r\n   Birden fazla R28 alt amac\u0131 ayn\u0131 R11 main/sub teknik hedefe ba\u011Flanabilir.\r\n   Eski duplicate guard yaln\u0131z R11 hedefini kar\u015F\u0131la\u015Ft\u0131rd\u0131\u011F\u0131 i\u00E7in hedef ayn\u0131ysa\r\n   R11 source renderer \u00E7al\u0131\u015Fm\u0131yor; read-only ama\u00E7 \u00F6zeti ve NORA eski se\u00E7imde\r\n   kalabiliyordu.\r\n\r\n   D\u00DCZELTME:\r\n   - Duplicate guard art\u0131k aktif R28 selection key + g\u00F6r\u00FCn\u00FCr context key'i de do\u011Frular.\r\n   - R11 hedefi ayn\u0131 fakat R28 selection de\u011Fi\u015Fmi\u015Fse yaln\u0131z mevcut source render()\r\n     bir kez \u00E7al\u0131\u015F\u0131r; score/ranking form\u00FCl\u00FC veya target mapping de\u011Fi\u015Ftirilmez.\r\n   - Ayn\u0131 selection i\u00E7in sonraki render/eventler yine duplicate skip olur.\r\n   - Yeni listener, observer veya recurring timer eklenmez.\r\n   ========================================================= */\r\n\r\n/* =========================================================\r\n   PANEL-V4-R28-R7-R1-R28-TO-R11-ONE-WAY-CONTEXT-BRIDGE-SOURCE-APPLICATION\r\n   T\u00DCR: SOURCE-LEVEL THEME APPLICATION / FULL UI.JS REPLACEMENT\r\n\r\n   THEME \u0130\u015ELEM\u0130:\r\n   Dosya: assets/panel-led-v4.ui.js\r\n   \u0130\u015Flem: R28-R6-R3 bridge blo\u011Funu kaynak seviyesinde geni\u015Flet\r\n   T\u00FCr: FULL UI.JS REPLACEMENT / CONSOLIDATED SOURCE APPLICATION\r\n   Append: Hay\u0131r\r\n   Eski R28-R6-R3 performans d\u00FCzeltmesi korunur.\r\n   Yeni document listener / MutationObserver / interval kurulmaz.\r\n\r\n   AMA\u00C7:\r\n   - R28 panel a\u00E7\u0131l\u0131\u015F\u0131ndaki 8x24 se\u00E7imi ana ba\u011Flam kayna\u011F\u0131 yapar.\r\n   - Ayn\u0131 mevcut debounce edilmi\u015F R28 selection-change yolu i\u00E7inde R11 main/sub state'ini tek y\u00F6nl\u00FC senkronize eder.\r\n   - R11 mevcut score/form\u00FCl motorunu kullanarak se\u00E7ilen ba\u011Flama ait \u00FC\u00E7 \u00FCr\u00FCn\u00FC yeniden render eder.\r\n   - R11 state zaten hedefe e\u015Fitse renderer tekrar \u00E7a\u011Fr\u0131lmaz.\r\n   - R11 -> R28 ters otomatik senkron kurulmaz.\r\n\r\n   KORUNAN R28-R6-R3 KURALLARI:\r\n   - Selection state salt-okumad\u0131r; event yay\u0131mlayan getter bridge taraf\u0131ndan \u00E7a\u011Fr\u0131lmaz.\r\n   - R27 scenario/NORA/visual lock kaynaklar\u0131 cache'li kal\u0131r.\r\n   - Idle feedback loop yoktur.\r\n   - Tek debounce edilmi\u015F selection-change sync kullan\u0131l\u0131r.\r\n\r\n   PUBLIC API / STATE:\r\n   - window.resolvePanelV4R28SelectionContext(selectionState?)\r\n   - window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT\r\n   - window.getPanelV4R28LiveBridgeContext()\r\n   - window.resolvePanelV4R28R11Target(selectionState?)\r\n   - window.getPanelV4R28R11BridgeState()\r\n   - window.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP\r\n   - event: gdx-panel-v4-r28-live-bridge-context-sync\r\n\r\n   NO-TOUCH:\r\n   - R11 score form\u00FClleri de\u011Fi\u015Ftirilmez.\r\n   - FP14 score kayna\u011F\u0131 de\u011Fi\u015Ftirilmez.\r\n   - Product pool ve product order de\u011Fi\u015Ftirilmez.\r\n   - Product object / price formatter de\u011Fi\u015Ftirilmez.\r\n   - Cart / commerce / share / PNG / QR de\u011Fi\u015Ftirilmez.\r\n   - R27 setup modal\u0131ndaki tek NORA mount de\u011Fi\u015Ftirilmez.\r\n\r\n   CONSOLE TEST:\r\n   window.debugPanelV4R28R7R1OneWayContextBridgeSourceApplicationSmoke()\r\n\r\n   UYUMLULUK:\r\n   - R28-R6-R3 ready flag ve smoke fonksiyonlar\u0131 korunur.\r\n   - R28-R6-R2 ready flag ve eski smoke alias\u0131 korunur.\r\n   ========================================================= */\r\n(function () {\r\n  \"use strict\";\r\n\r\n  var PHASE = \"PANEL-V4-R28-R7-R1-R28-TO-R11-ONE-WAY-CONTEXT-BRIDGE-SOURCE-APPLICATION\";\r\n  var VERSION = \"PANEL-V4-R28-R7-R1-R28-TO-R11-ONE-WAY-CONTEXT-BRIDGE-SOURCE-APPLICATION-V1\";\r\n\r\n  if (window.GDX_PANEL_V4_R28_R7_R1_READY) return;\r\n  window.GDX_PANEL_V4_R28_R7_R1_READY = true;\r\n  /* \u00D6nceki m\u00FCh\u00FCrler ve R29 audit uyumlulu\u011Fu korunur. */\r\n  window.GDX_PANEL_V4_R28_R6_R3_READY = true;\r\n  window.GDX_PANEL_V4_R28_R6_R2_READY = true;\r\n\r\n  var internal = {\r\n    syncCount: 0,\r\n    skippedDuplicateCount: 0,\r\n    lastSyncAt: 0,\r\n    lastReason: \"\",\r\n    lastError: \"\",\r\n    lastPublishedSelectionKey: \"\",\r\n    scheduleTimer: 0,\r\n    scheduledReason: \"\",\r\n    r11SyncCount: 0,\r\n    r11SkippedDuplicateCount: 0,\r\n    r11LastSyncAt: 0,\r\n    r11LastReason: \"\",\r\n    r11LastError: \"\",\r\n    r11LastTargetKey: \"\",\r\n    r11LastRenderedKeys: [],\r\n    r11LastSelectionKey: \"\",\r\n    r11ContextRefreshCount: 0,\r\n    r11LastContextRefreshAt: 0,\r\n    r11Pending: false\r\n  };\r\n\r\n  var sourceCache = {\r\n    ready: false,\r\n    buildCount: 0,\r\n    lastBuildAt: 0,\r\n    locks: null,\r\n    scenarioIndex: null,\r\n    noraIndex: null,\r\n    visualIndex: null\r\n  };\r\n\r\n  var R28_TO_R11_CONTEXT_MAP = {\r\n    \"product_ecommerce::small_product_tabletop\": { mainKey: \"ecommerce_product\", subKey: \"product_video_reels_tabletop\" },\r\n    \"product_ecommerce::large_product_model\": { mainKey: \"ecommerce_product\", subKey: \"ecommerce_catalog_white_background\" },\r\n    \"product_ecommerce::marketplace_catalog\": { mainKey: \"ecommerce_product\", subKey: \"ecommerce_catalog_white_background\" },\r\n\r\n    \"youtube_reels_social::single_person_video\": { mainKey: \"content_social\", subKey: \"content_creator_face_key\" },\r\n    \"youtube_reels_social::reels_tiktok_short\": { mainKey: \"content_social\", subKey: \"youtube_podcast_single_person\" },\r\n    \"youtube_reels_social::live_stream_talk\": { mainKey: \"content_social\", subKey: \"youtube_podcast_single_person\" },\r\n\r\n    \"interview_talking_head::single_interview\": { mainKey: \"interview_education\", subKey: \"interview_podcast_stream\" },\r\n    \"interview_talking_head::two_person_interview\": { mainKey: \"interview_education\", subKey: \"interview_podcast_stream\" },\r\n    \"interview_talking_head::corporate_training\": { mainKey: \"interview_education\", subKey: \"education_webinar_online_course\" },\r\n\r\n    \"clinic_aesthetic_dental::skin_face_shoot\": { mainKey: \"clinical_beauty\", subKey: \"clinical_aesthetic_medical\" },\r\n    \"clinic_aesthetic_dental::dental_support\": { mainKey: \"clinical_beauty\", subKey: \"dental_closeup_documentation\" },\r\n    \"clinic_aesthetic_dental::clinic_social_content\": { mainKey: \"clinical_beauty\", subKey: \"clinical_aesthetic_medical\" },\r\n\r\n    \"rgb_creative_video::background_color_effect\": { mainKey: \"rgb_creative\", subKey: \"rgb_creative_fx\" },\r\n    \"rgb_creative_video::music_clip_creative_scene\": { mainKey: \"rgb_creative\", subKey: \"music_video_color_scene\" },\r\n    \"rgb_creative_video::product_color_separation\": { mainKey: \"rgb_creative\", subKey: \"brand_color_background_live\" },\r\n    \"rgb_creative_video::subject_rim_edge\": { mainKey: \"rgb_creative\", subKey: \"brand_color_background_live\" },\r\n\r\n    \"studio_professional::model_shoot\": { mainKey: \"studio_photo_support\", subKey: \"studio_production_multilight\" },\r\n    \"studio_professional::ad_campaign_visual\": { mainKey: \"studio_photo_support\", subKey: \"studio_production_multilight\" },\r\n    \"studio_professional::fixed_studio_setup\": { mainKey: \"studio_photo_support\", subKey: \"photo_studio_fill_support\" },\r\n\r\n    \"mobile_outdoor::battery_shoot\": { mainKey: \"mobile_outdoor\", subKey: \"travel_battery_creator\" },\r\n    \"mobile_outdoor::portable_team\": { mainKey: \"mobile_outdoor\", subKey: \"mobile_outdoor_interview\" },\r\n    \"mobile_outdoor::fast_location_setup\": { mainKey: \"mobile_outdoor\", subKey: \"mobile_outdoor_interview\" },\r\n\r\n    \"starter_budget_practical::first_light_choice\": { mainKey: \"beginner_budget\", subKey: \"beginner_budget_home_studio\" },\r\n    \"starter_budget_practical::budget_setup\": { mainKey: \"beginner_budget\", subKey: \"beginner_budget_home_studio\" },\r\n    \"starter_budget_practical::compact_solution\": { mainKey: \"beginner_budget\", subKey: \"beginner_budget_home_studio\" }\r\n  };\r\n\r\n  var R28_LEGACY_SELECTION_ALIASES = Object.freeze({\r\n    \"youtube_reels_social::short_video_reels\": \"youtube_reels_social::reels_tiktok_short\",\r\n    \"interview_talking_head::corporate_training_video\": \"interview_talking_head::corporate_training\",\r\n    \"clinic_aesthetic_dental::skin_face_capture\": \"clinic_aesthetic_dental::skin_face_shoot\",\r\n    \"rgb_creative_video::music_clip_scene\": \"rgb_creative_video::music_clip_creative_scene\",\r\n    \"studio_professional::campaign_ad_visual\": \"studio_professional::ad_campaign_visual\",\r\n    \"starter_budget_practical::small_space_solution\": \"starter_budget_practical::compact_solution\"\r\n  });\r\n\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(value) {\r\n    return clean(value).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function all(selector, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(selector));\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var r = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (r && (r.width < 4 || r.height < 4)) return false;\r\n    return true;\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function fn(name) {\r\n    try { return typeof window[name] === \"function\"; } catch (e) { return false; }\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productSignature() {\r\n    return products().map(function (product, index) {\r\n      return [\r\n        index,\r\n        clean(product && (product.handle || product.id || product.key || product.title || product.name)),\r\n        clean(product && (product.title || product.name))\r\n      ].join(\":\");\r\n    }).join(\"|\");\r\n  }\r\n\r\n  function safeCall(name) {\r\n    var beforeCount = elementCount();\r\n    var beforeSig = productSignature();\r\n    var res = null;\r\n    var ok = false;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (fn(name)) {\r\n        res = window[name]();\r\n        ok = !!(res && res.ok === true);\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (e) {\r\n      error = e && e.message ? e.message : String(e);\r\n    }\r\n\r\n    return {\r\n      exists: fn(name),\r\n      ok: ok,\r\n      elementDelta: elementCount() - beforeCount,\r\n      productOrderChanged: beforeSig !== productSignature(),\r\n      error: error,\r\n      result: res\r\n    };\r\n  }\r\n\r\n  function getSelectionState() {\r\n    /*\r\n      KR\u0130T\u0130K R3 KURALI:\r\n      getPanelV4R28SelectionState() R28-R4 i\u00E7inde manual_read eventi yay\u0131mlar.\r\n      Bridge bu getter'\u0131 \u00E7a\u011F\u0131r\u0131rsa selection-change -> bridge -> getter d\u00F6ng\u00FCs\u00FC olu\u015Fur.\r\n      Bu nedenle bridge yaln\u0131z do\u011Frudan public state nesnesini okur.\r\n    */\r\n    var state = window.GDX_PANEL_V4_R28_SELECTION_STATE;\r\n    return state && typeof state === \"object\" ? state : {};\r\n  }\r\n\r\n\r\n\r\n  function r11Api() {\r\n    var api = window.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5;\r\n    return api && typeof api === \"object\" ? api : null;\r\n  }\r\n\r\n  function copyR11Target(target, selectionKey) {\r\n    if (!target) return null;\r\n    return {\r\n      activeSelectionKey: clean(selectionKey),\r\n      mainKey: clean(target.mainKey),\r\n      subKey: clean(target.subKey)\r\n    };\r\n  }\r\n\r\n  function r11TargetForSelection(selectionState) {\r\n    selectionState = selectionState || getSelectionState();\r\n    var selectionKey = clean(selectionState && selectionState.activeSelectionKey);\r\n    var lookupKey = R28_LEGACY_SELECTION_ALIASES[selectionKey] || selectionKey;\r\n    return copyR11Target(R28_TO_R11_CONTEXT_MAP[lookupKey], selectionKey);\r\n  }\r\n\r\n  function r11TargetKey(target) {\r\n    return target ? clean(target.mainKey) + \"::\" + clean(target.subKey) : \"\";\r\n  }\r\n\r\n  function r11StateKey(api) {\r\n    api = api || r11Api();\r\n    var state = api && api.state ? api.state : {};\r\n    return clean(state.mainKey) + \"::\" + clean(state.subKey);\r\n  }\r\n\r\n  function r11Rows(api) {\r\n    api = api || r11Api();\r\n    var state = api && api.state ? api.state : {};\r\n    return Array.isArray(state.lastRows) ? state.lastRows : [];\r\n  }\r\n\r\n  function r11RowKey(row) {\r\n    return clean(row && (row.key || row.productKey || row.handle || row.id || row.title));\r\n  }\r\n\r\n  function r11TaxonomyHasTarget(api, target) {\r\n    var taxonomy = api && Array.isArray(api.taxonomy) ? api.taxonomy : [];\r\n    var main = taxonomy.find(function (item) {\r\n      return item && clean(item.key) === clean(target && target.mainKey);\r\n    });\r\n    var sub = main && Array.isArray(main.subs)\r\n      ? main.subs.find(function (item) {\r\n          return item && clean(item.key) === clean(target && target.subKey);\r\n        })\r\n      : null;\r\n    return !!(main && sub);\r\n  }\r\n\r\n  function r11BridgeSummary(syncResult) {\r\n    syncResult = syncResult || {};\r\n    return {\r\n      ready: syncResult.ready === true,\r\n      ok: syncResult.ok === true,\r\n      changed: syncResult.changed === true,\r\n      targetChanged: syncResult.targetChanged === true,\r\n      contextRefreshed: syncResult.contextRefreshed === true,\r\n      pending: syncResult.pending === true,\r\n      activeSelectionKey: clean(syncResult.activeSelectionKey),\r\n      targetMainKey: clean(syncResult.targetMainKey),\r\n      targetSubKey: clean(syncResult.targetSubKey),\r\n      currentMainKey: clean(syncResult.currentMainKey),\r\n      currentSubKey: clean(syncResult.currentSubKey),\r\n      renderedCount: Number(syncResult.renderedCount || 0),\r\n      renderedKeys: Array.isArray(syncResult.renderedKeys) ? syncResult.renderedKeys.slice() : [],\r\n      reason: clean(syncResult.reason),\r\n      error: clean(syncResult.error),\r\n      syncCount: internal.r11SyncCount,\r\n      skippedDuplicateCount: internal.r11SkippedDuplicateCount,\r\n      lastSyncAt: internal.r11LastSyncAt,\r\n      lastSelectionKey: internal.r11LastSelectionKey,\r\n      contextRefreshCount: internal.r11ContextRefreshCount,\r\n      lastContextRefreshAt: internal.r11LastContextRefreshAt\r\n    };\r\n  }\r\n\r\n  function r11VisibleContextSelectionKey() {\r\n    var summary = document.querySelector(\r\n      '#gdxPanelV4RecommendationPreview ' +\r\n      '[data-gdx-r11-readonly-context=\"1\"]'\r\n    );\r\n\r\n    return clean(\r\n      summary && summary.getAttribute('data-active-selection-key')\r\n    );\r\n  }\r\n\r\n  function r11VisibleNoraSelectionKey() {\r\n    var nora = document.querySelector(\r\n      '#gdxPanelV4RecommendationPreview ' +\r\n      '[data-gdx-panel-r29-nora-context=\"1\"]'\r\n    );\r\n\r\n    return clean(\r\n      nora && nora.getAttribute('data-active-selection-key')\r\n    );\r\n  }\r\n\r\n  function r11ContextNeedsRefresh(selectionKey) {\r\n    selectionKey = clean(selectionKey);\r\n    if (!selectionKey) return false;\r\n\r\n    var summaryKey = r11VisibleContextSelectionKey();\r\n    var noraKey = r11VisibleNoraSelectionKey();\r\n    var noraRequired = window.GDX_PANEL_V4_R29_R4_READY === true;\r\n\r\n    if (summaryKey !== selectionKey) return true;\r\n    if (noraRequired && noraKey !== selectionKey) return true;\r\n    if (internal.r11LastSelectionKey !== selectionKey) return true;\r\n\r\n    return false;\r\n  }\r\n\r\n  function syncR11FromSelection(selectionState, reason) {\r\n    var selection = selectionState || getSelectionState();\r\n    var gate =\r\n      window.CANFOTO_PANEL_DEFERRED_RESULTS_GATE ||\r\n      null;\r\n\r\n    if (\r\n      gate &&\r\n      typeof gate.isDeferred === \"function\" &&\r\n      gate.isDeferred()\r\n    ) {\r\n      return {\r\n        ready: false,\r\n        ok: false,\r\n        changed: false,\r\n        targetChanged: false,\r\n        contextRefreshed: false,\r\n        pending: true,\r\n        activeSelectionKey: clean(selection && selection.activeSelectionKey),\r\n        targetMainKey: \"\",\r\n        targetSubKey: \"\",\r\n        currentMainKey: \"\",\r\n        currentSubKey: \"\",\r\n        renderedCount: 0,\r\n        renderedKeys: [],\r\n        reason: clean(reason || \"r28_to_r11_sync\"),\r\n        error: \"deferred_until_explicit_decision_apply\"\r\n      };\r\n    }\r\n\r\n    var target = r11TargetForSelection(selection);\r\n    var api = r11Api();\r\n    var result = {\r\n      ready: false,\r\n      ok: false,\r\n      changed: false,\r\n      targetChanged: false,\r\n      contextRefreshed: false,\r\n      pending: false,\r\n      activeSelectionKey: clean(selection && selection.activeSelectionKey),\r\n      targetMainKey: target ? target.mainKey : \"\",\r\n      targetSubKey: target ? target.subKey : \"\",\r\n      currentMainKey: api && api.state ? clean(api.state.mainKey) : \"\",\r\n      currentSubKey: api && api.state ? clean(api.state.subKey) : \"\",\r\n      renderedCount: 0,\r\n      renderedKeys: [],\r\n      reason: clean(reason || \"r28_to_r11_sync\"),\r\n      error: \"\"\r\n    };\r\n\r\n    if (!target) {\r\n      result.error = \"r28_to_r11_target_missing\";\r\n      internal.r11LastError = result.error;\r\n      internal.r11Pending = false;\r\n      return result;\r\n    }\r\n\r\n    if (!api || typeof api.selectGoalSub !== \"function\" || !api.state) {\r\n      result.pending = true;\r\n      result.error = \"r11_api_not_ready\";\r\n      internal.r11LastError = result.error;\r\n      internal.r11Pending = true;\r\n      return result;\r\n    }\r\n\r\n    if (!r11TaxonomyHasTarget(api, target)) {\r\n      result.error = \"r11_taxonomy_target_missing\";\r\n      internal.r11LastError = result.error;\r\n      internal.r11Pending = false;\r\n      return result;\r\n    }\r\n\r\n    /* ETAP 2 R2-C3: R28 -> R11 g\u00F6r\u00FCn\u00FCr context bridge \u00FCr\u00FCn say\u0131s\u0131n\u0131\r\n       sabit 19'dan de\u011Fil canonical admitted pool owner'dan okur.\r\n       Canonical owner haz\u0131r de\u011Filse Etap-1 fallback 19 korunur. */\r\n    var expectedVisibleProductCount = 19;\r\n    try {\r\n      var etap2CanonicalPool = window.GDX_PANEL_LED_V4_ETAP2_R2B_CANONICAL_POOL;\r\n      var etap2CanonicalSnapshot = etap2CanonicalPool &&\r\n        typeof etap2CanonicalPool.getSnapshot === \"function\"\r\n          ? etap2CanonicalPool.getSnapshot()\r\n          : null;\r\n      if (\r\n        etap2CanonicalSnapshot &&\r\n        etap2CanonicalSnapshot.ok === true &&\r\n        Number(etap2CanonicalSnapshot.productCount) > 0\r\n      ) {\r\n        expectedVisibleProductCount = Number(etap2CanonicalSnapshot.productCount);\r\n      }\r\n    } catch (ignoreEtap2CanonicalCount) {}\r\n\r\n    if (products().length !== expectedVisibleProductCount) {\r\n      result.pending = true;\r\n      result.error = \"product_pool_not_ready\";\r\n      internal.r11LastError = result.error;\r\n      internal.r11Pending = true;\r\n      return result;\r\n    }\r\n\r\n    result.ready = true;\r\n\r\n    if (r11StateKey(api) === r11TargetKey(target)) {\r\n      var selectionKey = clean(selection && selection.activeSelectionKey);\r\n      var contextRefreshRequired = r11ContextNeedsRefresh(selectionKey);\r\n\r\n      if (contextRefreshRequired && typeof api.render === \"function\") {\r\n        try {\r\n          var refreshResult = api.render() || {};\r\n          var refreshedRows = r11Rows(api);\r\n          var refreshedKeys = refreshedRows.map(r11RowKey).filter(Boolean);\r\n          var stillAligned = r11StateKey(api) === r11TargetKey(target);\r\n\r\n          result.ok = stillAligned;\r\n          result.changed = stillAligned;\r\n          result.targetChanged = false;\r\n          result.contextRefreshed = stillAligned;\r\n          result.currentMainKey = clean(api.state.mainKey);\r\n          result.currentSubKey = clean(api.state.subKey);\r\n          result.renderedKeys = refreshedKeys;\r\n          result.renderedCount = refreshedKeys.length || Number(refreshResult.renderedCount || 0);\r\n\r\n          if (!stillAligned) {\r\n            result.error = \"r11_context_refresh_alignment_failed\";\r\n            internal.r11LastError = result.error;\r\n            internal.r11Pending = false;\r\n            return result;\r\n          }\r\n\r\n          internal.r11ContextRefreshCount += 1;\r\n          internal.r11LastContextRefreshAt = Date.now();\r\n          internal.r11LastSelectionKey = selectionKey;\r\n          internal.r11LastReason = result.reason || \"same_target_context_refresh\";\r\n          internal.r11LastError = \"\";\r\n          internal.r11Pending = false;\r\n          return result;\r\n        } catch (refreshError) {\r\n          result.error = refreshError && refreshError.message\r\n            ? refreshError.message\r\n            : String(refreshError || \"r11_context_refresh_error\");\r\n          internal.r11LastError = result.error;\r\n          internal.r11Pending = false;\r\n          return result;\r\n        }\r\n      }\r\n\r\n      internal.r11SkippedDuplicateCount += 1;\r\n      internal.r11LastSelectionKey = selectionKey;\r\n      internal.r11LastReason = result.reason || \"r11_duplicate_skipped\";\r\n      internal.r11LastError = \"\";\r\n      internal.r11Pending = false;\r\n      result.ok = true;\r\n      result.currentMainKey = clean(api.state.mainKey);\r\n      result.currentSubKey = clean(api.state.subKey);\r\n      result.renderedKeys = r11Rows(api).map(r11RowKey).filter(Boolean);\r\n      result.renderedCount = result.renderedKeys.length;\r\n      return result;\r\n    }\r\n\r\n    try {\r\n      var renderResult = api.selectGoalSub(target.mainKey, target.subKey) || {};\r\n      var aligned = r11StateKey(api) === r11TargetKey(target);\r\n      var rows = r11Rows(api);\r\n      var rowKeys = rows.map(r11RowKey).filter(Boolean);\r\n\r\n      result.ok = aligned;\r\n      result.changed = aligned;\r\n      result.targetChanged = aligned;\r\n      result.contextRefreshed = false;\r\n      result.currentMainKey = clean(api.state.mainKey);\r\n      result.currentSubKey = clean(api.state.subKey);\r\n      result.renderedKeys = rowKeys;\r\n      result.renderedCount = rowKeys.length || Number(renderResult.renderedCount || 0);\r\n\r\n      if (!aligned) {\r\n        result.error = \"r11_state_alignment_failed\";\r\n        internal.r11LastError = result.error;\r\n        internal.r11Pending = false;\r\n        return result;\r\n      }\r\n\r\n      internal.r11SyncCount += 1;\r\n      internal.r11LastSyncAt = Date.now();\r\n      internal.r11LastReason = result.reason || \"r28_to_r11_sync\";\r\n      internal.r11LastError = \"\";\r\n      internal.r11LastTargetKey = r11TargetKey(target);\r\n      internal.r11LastRenderedKeys = rowKeys.slice();\r\n      internal.r11LastSelectionKey = clean(selection && selection.activeSelectionKey);\r\n      internal.r11Pending = false;\r\n      return result;\r\n    } catch (error) {\r\n      result.error = error && error.message ? error.message : String(error || \"r11_sync_error\");\r\n      internal.r11LastError = result.error;\r\n      internal.r11Pending = false;\r\n      return result;\r\n    }\r\n  }\r\n\r\n  function r11IsAlignedToSelection(selectionState) {\r\n    var target = r11TargetForSelection(selectionState || getSelectionState());\r\n    var api = r11Api();\r\n    return !!(target && api && api.state && r11StateKey(api) === r11TargetKey(target));\r\n  }\r\n\r\n  function rowsFromLock(lock) {\r\n    if (!lock) return [];\r\n    return lock.scenarios ||\r\n      lock.entries ||\r\n      lock.visuals ||\r\n      lock.noraEntries ||\r\n      lock.voiceEntries ||\r\n      lock.previews ||\r\n      lock.items ||\r\n      [];\r\n  }\r\n\r\n  function lockFromCall(callResult, names) {\r\n    var diagnostics = callResult && callResult.result && callResult.result.diagnostics\r\n      ? callResult.result.diagnostics\r\n      : {};\r\n\r\n    if (diagnostics.lockCandidate) return diagnostics.lockCandidate;\r\n\r\n    for (var i = 0; i < names.length; i += 1) {\r\n      if (diagnostics[names[i]]) return diagnostics[names[i]];\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function scenarioKey(row) {\r\n    return clean(row && (row.scenarioKey || row.key || row.id || row.previewKey));\r\n  }\r\n\r\n  function tupleKey(row) {\r\n    return clean(row && row.purposeKey) + \"::\" + clean(row && row.subPurposeKey) + \"::\" + clean(row && row.scenarioType);\r\n  }\r\n\r\n  function loadLocks(force) {\r\n    if (!force && sourceCache.ready && sourceCache.locks) {\r\n      return sourceCache.locks;\r\n    }\r\n\r\n    var scenarioCall = safeCall(\"debugPanelV4R27A2CSetupScenarioLibraryLockVerify\");\r\n    var noraCall = safeCall(\"debugPanelV4R27A3CNoraVoiceLibraryLockVerify\");\r\n    var visualCall = safeCall(\"debugPanelV4R27A4CCdnVisualManifestLockVerify\");\r\n\r\n    var locks = {\r\n      calls: {\r\n        scenario: scenarioCall,\r\n        nora: noraCall,\r\n        visual: visualCall\r\n      },\r\n      scenarios: rowsFromLock(lockFromCall(scenarioCall, [\"setupScenarioLibrary\", \"scenarioLibrary\"])),\r\n      noras: rowsFromLock(lockFromCall(noraCall, [\"noraLibrary\", \"voiceLibrary\"])),\r\n      visuals: rowsFromLock(lockFromCall(visualCall, [\"visualManifest\", \"cdnVisualManifest\"]))\r\n    };\r\n\r\n    sourceCache.buildCount += 1;\r\n    sourceCache.lastBuildAt = Date.now();\r\n\r\n    if (\r\n      locks.scenarios.length === 72 &&\r\n      locks.noras.length === 72 &&\r\n      locks.visuals.length === 72\r\n    ) {\r\n      sourceCache.ready = true;\r\n      sourceCache.locks = locks;\r\n      sourceCache.scenarioIndex = indexScenarioRows(locks.scenarios);\r\n      sourceCache.noraIndex = indexByScenario(locks.noras);\r\n      sourceCache.visualIndex = indexByScenario(locks.visuals);\r\n    }\r\n\r\n    return locks;\r\n  }\r\n\r\n  function indexScenarioRows(rows) {\r\n    var bySelection = {};\r\n    var byKey = {};\r\n\r\n    (rows || []).forEach(function (row) {\r\n      var selectionKey = clean(row.purposeKey) + \"::\" + clean(row.subPurposeKey);\r\n\r\n      if (!bySelection[selectionKey]) bySelection[selectionKey] = [];\r\n      bySelection[selectionKey].push(row);\r\n\r\n      var key = scenarioKey(row);\r\n      if (key) byKey[key] = row;\r\n      byKey[tupleKey(row)] = row;\r\n    });\r\n\r\n    Object.keys(bySelection).forEach(function (key) {\r\n      bySelection[key].sort(function (a, b) {\r\n        var order = {\r\n          balanced_key_fill: 1,\r\n          rgb_background_accent: 2,\r\n          compact_support_close_range: 3\r\n        };\r\n\r\n        return (order[a.scenarioType] || 99) - (order[b.scenarioType] || 99);\r\n      });\r\n    });\r\n\r\n    return {\r\n      bySelection: bySelection,\r\n      byKey: byKey\r\n    };\r\n  }\r\n\r\n  function indexByScenario(rows) {\r\n    var out = {};\r\n\r\n    (rows || []).forEach(function (row) {\r\n      var key = scenarioKey(row);\r\n      if (key) out[key] = row;\r\n      out[tupleKey(row)] = row;\r\n    });\r\n\r\n    return out;\r\n  }\r\n\r\n  function preferredScenarioType(selectionState) {\r\n    selectionState = selectionState || {};\r\n\r\n    var purposeKey = clean(selectionState.activePurposeKey);\r\n    var subPurposeKey = clean(selectionState.activeSubPurposeKey);\r\n    var priorityRole = clean(selectionState.activePriorityRole);\r\n    var haystack = lower(purposeKey + \" \" + subPurposeKey + \" \" + priorityRole);\r\n\r\n    if (purposeKey === \"rgb_creative_video\" || /rgb|color|background|separation|renk|creative/.test(haystack)) {\r\n      return \"rgb_background_accent\";\r\n    }\r\n\r\n    if (\r\n      purposeKey === \"mobile_outdoor\" ||\r\n      purposeKey === \"starter_budget_practical\" ||\r\n      /portable|support|accent|close|compact|small_space|battery/.test(haystack)\r\n    ) {\r\n      return \"compact_support_close_range\";\r\n    }\r\n\r\n    return \"balanced_key_fill\";\r\n  }\r\n\r\n  function pickScenario(selectionState, group) {\r\n    var preferred = preferredScenarioType(selectionState);\r\n    return (group || []).find(function (row) {\r\n      return row.scenarioType === preferred;\r\n    }) || (group || [])[0] || null;\r\n  }\r\n\r\n  function matchScenario(scenario, index) {\r\n    if (!scenario) return null;\r\n\r\n    var key = scenarioKey(scenario);\r\n    if (key && index[key]) return index[key];\r\n\r\n    return index[tupleKey(scenario)] || null;\r\n  }\r\n\r\n  function slotText(slots) {\r\n    if (!slots) return \"\";\r\n\r\n    if (Array.isArray(slots)) {\r\n      return slots.map(function (item) {\r\n        if (typeof item === \"string\") return item;\r\n        if (item && typeof item === \"object\") return clean(item.text || item.copy || item.note || item.value || \"\");\r\n        return \"\";\r\n      }).filter(Boolean).join(\" \");\r\n    }\r\n\r\n    if (typeof slots === \"object\") {\r\n      return Object.keys(slots).map(function (key) {\r\n        var item = slots[key];\r\n        if (typeof item === \"string\") return item;\r\n        if (item && typeof item === \"object\") return clean(item.text || item.copy || item.note || item.value || \"\");\r\n        return \"\";\r\n      }).filter(Boolean).join(\" \");\r\n    }\r\n\r\n    return clean(slots);\r\n  }\r\n\r\n  function noraAdapter(row, scenario) {\r\n    row = row || {};\r\n    scenario = scenario || {};\r\n\r\n    var primaryRole = clean(row.primaryRole || (scenario.recommendedRoles && scenario.recommendedRoles[0]) || \"\");\r\n    var roleBenefit = clean(row.roleBenefit || \"\");\r\n    var caution = clean(row.honestCaution || row.caution || \"\");\r\n    var slots = slotText(row.slots);\r\n\r\n    var setupNote = roleBenefit || slots || caution;\r\n    var roleTruth = primaryRole\r\n      ? (\"Bu senaryoda \u00F6ncelikli rol: \" + primaryRole + (roleBenefit ? \". \" + roleBenefit : \".\"))\r\n      : roleBenefit;\r\n\r\n    var joined = lower([setupNote, roleTruth, caution].join(\" \"));\r\n\r\n    return {\r\n      scenarioKey: scenarioKey(row) || scenarioKey(scenario),\r\n      voiceKey: clean(row.voiceKey),\r\n      primaryRole: primaryRole,\r\n      setupNote: setupNote,\r\n      roleTruth: roleTruth,\r\n      caution: caution,\r\n      slotsText: slots,\r\n      toneTags: Array.isArray(row.toneTags) ? row.toneTags.slice() : [],\r\n      forbiddenClaims: Array.isArray(row.forbiddenClaims) ? row.forbiddenClaims.slice() : [],\r\n      sourceStatus: clean(row.sourceStatus),\r\n      hasSetupNote: !!setupNote,\r\n      hasRoleTruth: !!roleTruth,\r\n      hasCaution: !!caution,\r\n      noForbiddenClaimText: !/kesinlikle en iyi|her kullan\u0131m i\u00E7in ideal|profesyonel sonu\u00E7 garantiler|rakipsiz|bunu almal\u0131s\u0131n|stokta kesin vard\u0131r|en m\u00FCkemmel|garantili sonu\u00E7|her senaryoda ana \u0131\u015F\u0131k/.test(joined)\r\n    };\r\n  }\r\n\r\n  function visualAdapter(row) {\r\n    row = row || {};\r\n\r\n    return {\r\n      scenarioKey: scenarioKey(row),\r\n      visualKey: clean(row.visualKey || row.key || row.id),\r\n      cdnUrl: clean(row.cdnUrl || row.url || \"\"),\r\n      status: clean(row.status || row.cdnStatus || (row.cdnUrl ? \"cdn_ready\" : \"placeholder_pending_upload\")),\r\n      altText: clean(row.altText || row.alt || \"\")\r\n    };\r\n  }\r\n\r\n  function r2hLiveScenarioGroup(selectionKey, scenarioIndex) {\r\n    var direct = scenarioIndex && scenarioIndex.bySelection\r\n      ? (scenarioIndex.bySelection[selectionKey] || [])\r\n      : [];\r\n    if (direct.length) return direct;\r\n\r\n    if (selectionKey !== \"rgb_creative_video::subject_rim_edge\") return direct;\r\n\r\n    var source = scenarioIndex && scenarioIndex.bySelection\r\n      ? (scenarioIndex.bySelection[\"rgb_creative_video::product_color_separation\"] || [])\r\n      : [];\r\n    return source.map(function(row){\r\n      var copy = {};\r\n      Object.keys(row || {}).forEach(function(key){ copy[key] = row[key]; });\r\n      copy.purposeKey = \"rgb_creative_video\";\r\n      copy.subPurposeKey = \"subject_rim_edge\";\r\n      copy.r2hRegistryV2 = true;\r\n      copy.r2hSourceSelectionKey = \"rgb_creative_video::product_color_separation\";\r\n      copy.allowedFamilies = [\"rgb\"];\r\n      if (copy.scenarioType === \"balanced_key_fill\") {\r\n        copy.recommendedRoles = [\"rim_light\", \"fill_light\", \"soft_front_light\"];\r\n      } else if (copy.scenarioType === \"rgb_background_accent\") {\r\n        copy.recommendedRoles = [\"rim_light\", \"rgb_accent\", \"background_light\"];\r\n      } else {\r\n        copy.recommendedRoles = [\"rim_light\", \"close_range_support\", \"rgb_accent\"];\r\n      }\r\n      return copy;\r\n    });\r\n  }\r\n\r\n  function resolveSelectionContext(selectionState) {\r\n    var selection = selectionState || getSelectionState();\r\n    var locks = loadLocks(false);\r\n\r\n    var scenarioIndex = sourceCache.ready && sourceCache.scenarioIndex\r\n      ? sourceCache.scenarioIndex\r\n      : indexScenarioRows(locks.scenarios);\r\n    var noraIndex = sourceCache.ready && sourceCache.noraIndex\r\n      ? sourceCache.noraIndex\r\n      : indexByScenario(locks.noras);\r\n    var visualIndex = sourceCache.ready && sourceCache.visualIndex\r\n      ? sourceCache.visualIndex\r\n      : indexByScenario(locks.visuals);\r\n\r\n    var activeSelectionKey = clean(selection.activeSelectionKey);\r\n    var group = r2hLiveScenarioGroup(activeSelectionKey, scenarioIndex);\r\n    var scenario = pickScenario(selection, group);\r\n    var nora = matchScenario(scenario, noraIndex);\r\n    var visual = matchScenario(scenario, visualIndex);\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      source: \"r28_r7_r1_one_way_r28_to_r11_cached_sync\",\r\n      activeSelection: {\r\n        activePurposeKey: clean(selection.activePurposeKey),\r\n        activeSubPurposeKey: clean(selection.activeSubPurposeKey),\r\n        activeSelectionKey: activeSelectionKey,\r\n        activePurposeTitle: clean(selection.activePurposeTitle),\r\n        activeSubPurposeTitle: clean(selection.activeSubPurposeTitle),\r\n        activeIntentHint: clean(selection.activeIntentHint),\r\n        activePriorityRole: clean(selection.activePriorityRole)\r\n      },\r\n      r11Target: r11TargetForSelection(selection),\r\n      scenarioGroup: group.map(function (row) {\r\n        return {\r\n          scenarioKey: scenarioKey(row),\r\n          scenarioType: clean(row.scenarioType),\r\n          recommendedRoles: Array.isArray(row.recommendedRoles) ? row.recommendedRoles.slice(0, 5) : [],\r\n          allowedFamilies: Array.isArray(row.allowedFamilies) ? row.allowedFamilies.slice(0, 5) : [],\r\n          preferredWattBands: Array.isArray(row.preferredWattBands) ? row.preferredWattBands.slice(0, 5) : []\r\n        };\r\n      }),\r\n      resolvedScenario: scenario ? {\r\n        scenarioKey: scenarioKey(scenario),\r\n        scenarioType: clean(scenario.scenarioType),\r\n        recommendedRoles: Array.isArray(scenario.recommendedRoles) ? scenario.recommendedRoles.slice(0, 5) : [],\r\n        allowedFamilies: Array.isArray(scenario.allowedFamilies) ? scenario.allowedFamilies.slice(0, 5) : [],\r\n        preferredWattBands: Array.isArray(scenario.preferredWattBands) ? scenario.preferredWattBands.slice(0, 5) : []\r\n      } : null,\r\n      noraAdapter: noraAdapter(nora, scenario),\r\n      visualAdapter: visualAdapter(visual),\r\n      sourceCounts: {\r\n        scenarioRows: locks.scenarios.length,\r\n        noraRows: locks.noras.length,\r\n        visualRows: locks.visuals.length,\r\n        activeScenarioGroupRows: group.length\r\n      },\r\n      sourceCallStatus: {\r\n        r27A2C: {\r\n          exists: locks.calls.scenario.exists,\r\n          ok: locks.calls.scenario.ok,\r\n          error: locks.calls.scenario.error,\r\n          elementDelta: locks.calls.scenario.elementDelta\r\n        },\r\n        r27A3C: {\r\n          exists: locks.calls.nora.exists,\r\n          ok: locks.calls.nora.ok,\r\n          error: locks.calls.nora.error,\r\n          elementDelta: locks.calls.nora.elementDelta\r\n        },\r\n        r27A4C: {\r\n          exists: locks.calls.visual.exists,\r\n          ok: locks.calls.visual.ok,\r\n          error: locks.calls.visual.error,\r\n          elementDelta: locks.calls.visual.elementDelta\r\n        }\r\n      }\r\n    };\r\n  }\r\n\r\n  function contextSelectionKey(context) {\r\n    return clean(context && context.activeSelection && context.activeSelection.activeSelectionKey);\r\n  }\r\n\r\n  function publish(reason, options) {\r\n    options = options || {};\r\n\r\n    var selection = options.selectionState || getSelectionState();\r\n    var selectionKey = clean(selection && selection.activeSelectionKey);\r\n    var current = window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n    var currentKey = contextSelectionKey(current);\r\n\r\n    if (!selectionKey) {\r\n      internal.lastError = \"selection_state_not_ready\";\r\n      return current;\r\n    }\r\n\r\n    /*\r\n      R28-R7-R1: Ayn\u0131 mevcut selection-change debounce yolu i\u00E7inde R11'i senkronize et.\r\n      Bu \u00E7a\u011Fr\u0131 kendi eventini yay\u0131mlamaz; R11 zaten hedefteyse render edilmez.\r\n    */\r\n    var r11Sync = syncR11FromSelection(selection, reason || \"r28_publish\");\r\n\r\n    if (!options.force && selectionKey && currentKey === selectionKey) {\r\n      internal.skippedDuplicateCount += 1;\r\n      internal.lastReason = reason || \"duplicate_skipped\";\r\n      internal.lastError = \"\";\r\n\r\n      if (current) {\r\n        current.r11RecommendationBridge = r11BridgeSummary(r11Sync);\r\n        current.bridgeState = current.bridgeState || {};\r\n        current.bridgeState.r11 = r11BridgeSummary(r11Sync);\r\n      }\r\n\r\n      /* Selection context ayn\u0131 olsa bile R11 manuel olarak ayr\u0131\u015Fm\u0131\u015Fsa onar\u0131lm\u0131\u015F olabilir. */\r\n      if (current && r11Sync.changed) {\r\n        try {\r\n          window.dispatchEvent(new CustomEvent(\"gdx-panel-v4-r28-live-bridge-context-sync\", {\r\n            detail: current\r\n          }));\r\n        } catch (e) {}\r\n      }\r\n\r\n      return current;\r\n    }\r\n\r\n    var context = resolveSelectionContext(selection);\r\n\r\n    internal.syncCount += 1;\r\n    internal.lastSyncAt = Date.now();\r\n    internal.lastReason = reason || \"sync\";\r\n    internal.lastError = \"\";\r\n    internal.lastPublishedSelectionKey = selectionKey;\r\n\r\n    context.r11RecommendationBridge = r11BridgeSummary(r11Sync);\r\n    context.bridgeState = {\r\n      synced: true,\r\n      syncCount: internal.syncCount,\r\n      skippedDuplicateCount: internal.skippedDuplicateCount,\r\n      lastSyncAt: internal.lastSyncAt,\r\n      lastReason: internal.lastReason,\r\n      sourceCacheReady: sourceCache.ready,\r\n      sourceCacheBuildCount: sourceCache.buildCount,\r\n      r11: r11BridgeSummary(r11Sync)\r\n    };\r\n\r\n    window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT = context;\r\n\r\n    try {\r\n      window.dispatchEvent(new CustomEvent(\"gdx-panel-v4-r28-live-bridge-context-sync\", {\r\n        detail: context\r\n      }));\r\n    } catch (e) {}\r\n\r\n    return context;\r\n  }\r\n\r\n  function schedule(reason, options) {\r\n    options = options || {};\r\n    internal.scheduledReason = reason || \"scheduled_sync\";\r\n\r\n    if (internal.scheduleTimer) {\r\n      window.clearTimeout(internal.scheduleTimer);\r\n    }\r\n\r\n    internal.scheduleTimer = window.setTimeout(function () {\r\n      internal.scheduleTimer = 0;\r\n      try {\r\n        publish(internal.scheduledReason, options);\r\n      } catch (e) {\r\n        internal.lastError = e && e.message ? e.message : String(e);\r\n      }\r\n    }, 32);\r\n  }\r\n\r\n  function r28Mount() {\r\n    return document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n  }\r\n\r\n  function recommendationArea() {\r\n    var byId = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n    if (byId) return byId;\r\n\r\n    var candidates = all(\"section,div,article\").filter(function (el) {\r\n      return /KULLANIM AMACINA G\u00D6RE \u00D6NER\u0130LER|Canl\u0131 Setup Rol Motoru V2|P41-4 LIVE|Kurulumu G\u00F6r|Neden Bu \u00DCr\u00FCn/.test(text(el).slice(0, 1200));\r\n    });\r\n\r\n    candidates.sort(function (a, b) {\r\n      return text(b).length - text(a).length;\r\n    });\r\n\r\n    return candidates[0] || null;\r\n  }\r\n\r\n  function rect(el) {\r\n    if (!el || !el.getBoundingClientRect) return null;\r\n    var r = el.getBoundingClientRect();\r\n\r\n    return {\r\n      top: Math.round(r.top),\r\n      left: Math.round(r.left),\r\n      width: Math.round(r.width),\r\n      height: Math.round(r.height),\r\n      bottom: Math.round(r.bottom),\r\n      right: Math.round(r.right)\r\n    };\r\n  }\r\n\r\n  window.resolvePanelV4R28SelectionContext = function (selectionState) {\r\n    return resolveSelectionContext(selectionState || getSelectionState());\r\n  };\r\n\r\n  window.getPanelV4R28LiveBridgeContext = function () {\r\n    /* Salt-okuma: publish, event veya syncCount art\u0131\u015F\u0131 yapmaz. */\r\n    return window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT ||\r\n      resolveSelectionContext(getSelectionState());\r\n  };\r\n\r\n  window.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP = R28_TO_R11_CONTEXT_MAP;\r\n  window.GDX_PANEL_V4_U7D1_CUSTOMER_CONTEXT_POLICY = Object.freeze({\r\n    version: \"PANEL-V4-U7D1-CANONICAL-CUSTOMER-CONTEXT-COPY-PARITY-V1\",\r\n    canonicalDisplayOwner: \"R28_SELECTION_STATE\",\r\n    canonicalBridgeKeyCount: Object.keys(R28_TO_R11_CONTEXT_MAP).length,\r\n    legacyAliasCount: Object.keys(R28_LEGACY_SELECTION_ALIASES).length,\r\n    diyLabel: \"DIY / Kendin Yap / Nas\u0131l Yap\u0131l\u0131r?\",\r\n    portableRoleLabel: \"ta\u015F\u0131nabilir \u00E7ekim \u0131\u015F\u0131\u011F\u0131\",\r\n    scoringMutation: \"NONE\",\r\n    rankingMutation: \"NONE\",\r\n    fpMutation: \"NONE\",\r\n    setupTruthMutation: \"NONE\"\r\n  });\r\n\r\n  window.resolvePanelV4R28R11Target = function (selectionState) {\r\n    return r11TargetForSelection(selectionState || getSelectionState());\r\n  };\r\n\r\n  window.getPanelV4R28R11BridgeState = function () {\r\n    var selection = getSelectionState();\r\n    var target = r11TargetForSelection(selection);\r\n    var api = r11Api();\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      activeSelectionKey: clean(selection && selection.activeSelectionKey),\r\n      target: target,\r\n      currentR11: api && api.state ? {\r\n        mainKey: clean(api.state.mainKey),\r\n        subKey: clean(api.state.subKey),\r\n        renderedKeys: r11Rows(api).map(r11RowKey).filter(Boolean)\r\n      } : null,\r\n      aligned: r11IsAlignedToSelection(selection),\r\n      syncCount: internal.r11SyncCount,\r\n      skippedDuplicateCount: internal.r11SkippedDuplicateCount,\r\n      lastSyncAt: internal.r11LastSyncAt,\r\n      lastReason: internal.r11LastReason,\r\n      lastError: internal.r11LastError,\r\n      lastSelectionKey: internal.r11LastSelectionKey,\r\n      contextRefreshCount: internal.r11ContextRefreshCount,\r\n      lastContextRefreshAt: internal.r11LastContextRefreshAt,\r\n      visibleContextSelectionKey: r11VisibleContextSelectionKey(),\r\n      visibleNoraSelectionKey: r11VisibleNoraSelectionKey(),\r\n      pending: internal.r11Pending\r\n    };\r\n  };\r\n\r\n  window.debugPanelV4R29R4R2SameTargetContextRefreshGuardFix = async function () {\r\n    function wait(ms) {\r\n      return new Promise(function (resolve) {\r\n        window.setTimeout(resolve, ms);\r\n      });\r\n    }\r\n\r\n    function visibleState() {\r\n      var selection = getSelectionState();\r\n      var summary = document.querySelector(\r\n        '#gdxPanelV4RecommendationPreview ' +\r\n        '[data-gdx-r11-readonly-context=\"1\"]'\r\n      );\r\n      var sub = summary && summary.querySelector(\r\n        '[data-gdx-r11-context-sub=\"1\"]'\r\n      );\r\n      var nora = document.querySelector(\r\n        '#gdxPanelV4RecommendationPreview ' +\r\n        '[data-gdx-panel-r29-nora-context=\"1\"]'\r\n      );\r\n      var api = r11Api();\r\n\r\n      return {\r\n        activeSelectionKey: clean(selection.activeSelectionKey),\r\n        activeSubPurposeTitle: clean(selection.activeSubPurposeTitle),\r\n        visibleContextKey: clean(\r\n          summary && summary.getAttribute('data-active-selection-key')\r\n        ),\r\n        visibleSubPurposeTitle: text(sub),\r\n        visibleNoraKey: clean(\r\n          nora && nora.getAttribute('data-active-selection-key')\r\n        ),\r\n        r11StateKey: r11StateKey(api),\r\n        aligned: r11IsAlignedToSelection(selection),\r\n        cardKeys: r11Rows(api).map(r11RowKey).filter(Boolean)\r\n      };\r\n    }\r\n\r\n    var beforeProducts = productSignature();\r\n    var original = getSelectionState();\r\n    var originalPurposeKey = clean(original.activePurposeKey);\r\n    var originalSubPurposeKey = clean(original.activeSubPurposeKey);\r\n    var beforeRefreshCount = internal.r11ContextRefreshCount;\r\n\r\n    var grouped = {};\r\n    Object.keys(R28_TO_R11_CONTEXT_MAP).forEach(function (selectionKey) {\r\n      var target = R28_TO_R11_CONTEXT_MAP[selectionKey];\r\n      var targetKey = r11TargetKey(target);\r\n      grouped[targetKey] = grouped[targetKey] || [];\r\n      grouped[targetKey].push(selectionKey);\r\n    });\r\n\r\n    var collisionGroups = Object.keys(grouped)\r\n      .map(function (targetKey) {\r\n        return {\r\n          targetKey: targetKey,\r\n          selections: grouped[targetKey]\r\n        };\r\n      })\r\n      .filter(function (group) {\r\n        return group.selections.length > 1;\r\n      });\r\n\r\n    var rows = [];\r\n\r\n    for (var g = 0; g < collisionGroups.length; g += 1) {\r\n      var group = collisionGroups[g];\r\n\r\n      for (var i = 0; i < group.selections.length; i += 1) {\r\n        var selectionKey = group.selections[i];\r\n        var parts = selectionKey.split('::');\r\n        var setResult = null;\r\n\r\n        if (typeof window.setPanelV4R28Selection === 'function') {\r\n          setResult = window.setPanelV4R28Selection(\r\n            parts[0] || '',\r\n            parts[1] || ''\r\n          );\r\n        }\r\n\r\n        await wait(150);\r\n\r\n        var read = visibleState();\r\n        rows.push({\r\n          targetKey: group.targetKey,\r\n          selectionKey: selectionKey,\r\n          transitionIndex: i,\r\n          setterReady: !!setResult,\r\n          activeSelectionMatches:\r\n            read.activeSelectionKey === selectionKey,\r\n          visibleContextMatches:\r\n            read.visibleContextKey === selectionKey,\r\n          visibleSubPurposeMatches:\r\n            !!read.activeSubPurposeTitle &&\r\n            read.visibleSubPurposeTitle ===\r\n              read.activeSubPurposeTitle,\r\n          visibleNoraMatches:\r\n            read.visibleNoraKey === selectionKey,\r\n          r11Aligned: read.aligned === true,\r\n          r11StateKey: read.r11StateKey,\r\n          cardKeys: read.cardKeys\r\n        });\r\n      }\r\n    }\r\n\r\n    if (\r\n      originalPurposeKey &&\r\n      originalSubPurposeKey &&\r\n      typeof window.setPanelV4R28Selection === 'function'\r\n    ) {\r\n      window.setPanelV4R28Selection(\r\n        originalPurposeKey,\r\n        originalSubPurposeKey\r\n      );\r\n      await wait(180);\r\n    }\r\n\r\n    var restored = getSelectionState();\r\n    var afterRefreshCount = internal.r11ContextRefreshCount;\r\n\r\n    var repeatedRows = rows.filter(function (row) {\r\n      return row.transitionIndex > 0;\r\n    });\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n      r29R4R2RuntimeReady:\r\n        window.GDX_PANEL_V4_R29_R4_R2_READY === true,\r\n      collisionGroupCount7:\r\n        collisionGroups.length === 7,\r\n      collisionSelectionCount15:\r\n        rows.length === 15,\r\n      everyCollisionSelectionSet:\r\n        rows.every(function (row) {\r\n          return row.setterReady && row.activeSelectionMatches;\r\n        }),\r\n      everyRepeatedSameTargetContextFresh:\r\n        repeatedRows.length === 8 &&\r\n        repeatedRows.every(function (row) {\r\n          return row.visibleContextMatches &&\r\n            row.visibleSubPurposeMatches &&\r\n            row.visibleNoraMatches &&\r\n            row.r11Aligned;\r\n        }),\r\n      contextRefreshCountAdvanced:\r\n        afterRefreshCount > beforeRefreshCount,\r\n      originalSelectionRestored:\r\n        !originalPurposeKey ||\r\n        (\r\n          clean(restored.activePurposeKey) === originalPurposeKey &&\r\n          clean(restored.activeSubPurposeKey) === originalSubPurposeKey\r\n        ),\r\n      noProductOrderMutationByThisAudit:\r\n        beforeProducts === productSignature(),\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingFormulaMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noCartMutationByThisAudit: true,\r\n      noCommerceMutationByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true,\r\n      noNewObserverByR29R4R2: true,\r\n      noNewDocumentClickListenerByR29R4R2: true,\r\n      noRecurringTimerByR29R4R2: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function (key) {\r\n      return checks[key] !== true;\r\n    });\r\n\r\n    var result = {\r\n      phase:\r\n        'PANEL-V4-R29-R4-R2-SAME-R11-TARGET-CONTEXT-REFRESH-GUARD-FIX-SOURCE-APPLICATION',\r\n      version:\r\n        'PANEL-V4-R29-R4-R2-SAME-TARGET-CONTEXT-REFRESH-GUARD-FIX-V1',\r\n      ok: failed.length === 0,\r\n      checks: checks,\r\n      diagnostics: {\r\n        beforeRefreshCount: beforeRefreshCount,\r\n        afterRefreshCount: afterRefreshCount,\r\n        collisionGroups: collisionGroups,\r\n        rows: rows,\r\n        failed: failed\r\n      },\r\n      interpretation: {\r\n        decision: failed.length === 0\r\n          ? 'R29-R4-R2 TECHNICAL PASS. Ayn\u0131 R11 teknik hedefe ba\u011Flanan farkl\u0131 R28 alt ama\u00E7lar\u0131nda se\u00E7ili ba\u011Flam ve NORA her se\u00E7imde yenileniyor; duplicate/idle guard korunuyor.'\r\n          : 'R29-R4-R2 HOLD. Ayn\u0131-hedef context refresh, restore veya no-touch kontrolleri incelenmeli.',\r\n        next: failed.length === 0\r\n          ? 'Manuel ayn\u0131 ana ama\u00E7 i\u00E7inde alt ama\u00E7lar\u0131 ileri-geri de\u011Fi\u015Ftirerek g\u00F6r\u00FCn\u00FCr regresyon kontrol\u00FC'\r\n          : 'HOLD'\r\n      },\r\n      sealCandidate: failed.length === 0\r\n        ? 'PANEL-V4-R29-R4-R2-SAME-R11-TARGET-CONTEXT-REFRESH-GUARD-FIX-TECHNICAL-PASS-CANDIDATE'\r\n        : 'HOLD'\r\n    };\r\n\r\n    console.log(\r\n      'R29-R4-R2 SAME TARGET CONTEXT REFRESH GUARD FIX:',\r\n      result\r\n    );\r\n\r\n    return result;\r\n  };\r\n\r\n  window.GDX_PANEL_V4_R29_R4_R2_READY = true;\r\n\r\n  window.addEventListener(\"gdx-panel-v4-r28-selection-change\", function (event) {\r\n    var detail = event && event.detail && typeof event.detail === \"object\"\r\n      ? event.detail\r\n      : getSelectionState();\r\n\r\n    schedule(\"selection_change_event\", {\r\n      selectionState: detail,\r\n      force: false\r\n    });\r\n  });\r\n\r\n  /*\r\n    R2'deki document click capture kald\u0131r\u0131ld\u0131.\r\n    R28-R4 zaten ger\u00E7ek selection-change eventini yay\u0131ml\u0131yor.\r\n  */\r\n\r\n  /* Sabit ve s\u0131n\u0131rl\u0131 bootstrap; recurring timer de\u011Fildir. */\r\n  window.setTimeout(function () {\r\n    schedule(\"initial_sync_300\", { force: false });\r\n  }, 300);\r\n\r\n  window.setTimeout(function () {\r\n    if (!window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || !r11IsAlignedToSelection(getSelectionState())) {\r\n      schedule(\"initial_sync_1800_r11_fallback\", { force: false });\r\n    }\r\n  }, 1800);\r\n\r\n  window.setTimeout(function () {\r\n    if (!r11IsAlignedToSelection(getSelectionState())) {\r\n      schedule(\"initial_sync_3600_r11_final_fallback\", { force: false });\r\n    }\r\n  }, 3600);\r\n\r\n  window.debugPanelV4R28R6R2ConsolidatedLiveBridgeApplicationSmoke = function () {\r\n    var before = elementCount();\r\n    var beforeSig = productSignature();\r\n\r\n    var selection = getSelectionState();\r\n    var context = publish(\"debug\", {\r\n      selectionState: selection,\r\n      force: true\r\n    });\r\n\r\n    var mount = r28Mount();\r\n    var reco = recommendationArea();\r\n\r\n    var purposeButtons = all(\"[data-gdx-panel-r28-purpose]\", mount);\r\n    var subButtons = all(\"[data-gdx-panel-r28-subpurpose]\", mount);\r\n    var activePurpose = purposeButtons.filter(function (button) {\r\n      return button.classList.contains(\"is-active\");\r\n    });\r\n    var activeSub = subButtons.filter(function (button) {\r\n      return button.classList.contains(\"is-active\");\r\n    });\r\n\r\n    var stateKey = clean(selection.activeSelectionKey);\r\n    var contextKey = clean(context && context.activeSelection && context.activeSelection.activeSelectionKey);\r\n    var scenarioKeyText = clean(context && context.resolvedScenario && context.resolvedScenario.scenarioKey);\r\n    var visualKeyText = clean(context && context.visualAdapter && context.visualAdapter.visualKey);\r\n\r\n    var after = elementCount();\r\n    var afterSig = productSignature();\r\n\r\n    var checks = {\r\n      applicationSmokeRan: true,\r\n      productPoolReady: products().length === 19,\r\n\r\n      r28SelectionMountDetected: !!mount,\r\n      r28SelectionMountVisible: visible(mount),\r\n      mainPurposeButtonCount8: purposeButtons.length === 8,\r\n      currentSubPurposeButtonCount3: subButtons.length === 3,\r\n      exactlyOneActivePurpose: activePurpose.length === 1,\r\n      exactlyOneActiveSubPurpose: activeSub.length === 1,\r\n\r\n      recommendationAreaDetected: !!reco,\r\n      recommendationAreaVisible: visible(reco),\r\n\r\n      resolveSelectionContextApiReady: fn(\"resolvePanelV4R28SelectionContext\"),\r\n      getLiveBridgeContextApiReady: fn(\"getPanelV4R28LiveBridgeContext\"),\r\n      publicLiveBridgeStateReady: !!window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT,\r\n\r\n      selectionStateReadable: !!stateKey,\r\n      selectionStateKeyHasDelimiter: stateKey.indexOf(\"::\") > -1,\r\n      liveBridgeContextReady: !!contextKey,\r\n      contextMatchesCurrentSelection: !!stateKey && stateKey === contextKey,\r\n\r\n      activeScenarioGroupRows3: context && context.sourceCounts && context.sourceCounts.activeScenarioGroupRows === 3,\r\n      sourceRowsReady: context && context.sourceCounts && context.sourceCounts.scenarioRows === 72 && context.sourceCounts.noraRows === 72 && context.sourceCounts.visualRows === 72,\r\n      resolvedScenarioReady: !!scenarioKeyText,\r\n      noraAdapterReady: !!(context && context.noraAdapter && context.noraAdapter.hasSetupNote && context.noraAdapter.hasRoleTruth && context.noraAdapter.hasCaution && context.noraAdapter.noForbiddenClaimText),\r\n      visualAdapterReady: !!visualKeyText,\r\n      bridgeStateSynced: !!(context && context.bridgeState && context.bridgeState.synced && context.bridgeState.syncCount >= 1),\r\n      r28R7R1RuntimeReady: window.GDX_PANEL_V4_R28_R7_R1_READY === true,\r\n      r11TargetMappingReady: !!r11TargetForSelection(selection),\r\n      r11ContextAligned: r11IsAlignedToSelection(selection),\r\n      r11BridgeStateReady: !!(context && context.bridgeState && context.bridgeState.r11),\r\n\r\n      noDomMutationByThisSmoke: after === before,\r\n      noProductOrderMutationByThisSmoke: beforeSig === afterSig,\r\n      noCartMutationByThisSmoke: true,\r\n      noScoreMutationByThisSmoke: true,\r\n      noRankingMutationByThisSmoke: true,\r\n      noProductMutationByThisSmoke: true,\r\n      noPriceFormatterTouchByThisSmoke: true,\r\n      noSharePngQrMutationByThisSmoke: true\r\n    };\r\n\r\n    var ok = checks.productPoolReady &&\r\n      checks.r28SelectionMountDetected &&\r\n      checks.r28SelectionMountVisible &&\r\n      checks.mainPurposeButtonCount8 &&\r\n      checks.currentSubPurposeButtonCount3 &&\r\n      checks.exactlyOneActivePurpose &&\r\n      checks.exactlyOneActiveSubPurpose &&\r\n      checks.recommendationAreaDetected &&\r\n      checks.recommendationAreaVisible &&\r\n      checks.resolveSelectionContextApiReady &&\r\n      checks.getLiveBridgeContextApiReady &&\r\n      checks.publicLiveBridgeStateReady &&\r\n      checks.selectionStateReadable &&\r\n      checks.selectionStateKeyHasDelimiter &&\r\n      checks.liveBridgeContextReady &&\r\n      checks.contextMatchesCurrentSelection &&\r\n      checks.activeScenarioGroupRows3 &&\r\n      checks.sourceRowsReady &&\r\n      checks.resolvedScenarioReady &&\r\n      checks.noraAdapterReady &&\r\n      checks.visualAdapterReady &&\r\n      checks.bridgeStateSynced &&\r\n      checks.r28R7R1RuntimeReady &&\r\n      checks.r11TargetMappingReady &&\r\n      checks.r11ContextAligned &&\r\n      checks.r11BridgeStateReady &&\r\n      checks.noDomMutationByThisSmoke &&\r\n      checks.noProductOrderMutationByThisSmoke;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: before,\r\n        elementCountAfter: after,\r\n        productPoolCount: products().length,\r\n        syncState: internal,\r\n        currentSelectionState: selection,\r\n        liveBridgeContextSummary: {\r\n          stateActiveSelectionKey: stateKey,\r\n          contextActiveSelectionKey: contextKey,\r\n          resolvedScenarioKey: scenarioKeyText,\r\n          resolvedScenarioType: clean(context && context.resolvedScenario && context.resolvedScenario.scenarioType),\r\n          noraVoiceKey: clean(context && context.noraAdapter && context.noraAdapter.voiceKey),\r\n          visualKey: visualKeyText,\r\n          visualStatus: clean(context && context.visualAdapter && context.visualAdapter.status),\r\n          sourceRows: context && context.sourceCounts ? context.sourceCounts : null,\r\n          syncCount: context && context.bridgeState ? context.bridgeState.syncCount : null,\r\n          lastReason: context && context.bridgeState ? context.bridgeState.lastReason : \"\"\r\n        },\r\n        r28SelectionMount: {\r\n          detected: !!mount,\r\n          visible: visible(mount),\r\n          rect: rect(mount),\r\n          activePurposeText: activePurpose[0] ? text(activePurpose[0]) : \"\",\r\n          activeSubPurposeText: activeSub[0] ? text(activeSub[0]) : \"\",\r\n          textSample: mount ? text(mount).slice(0, 900) : \"\"\r\n        },\r\n        recommendationArea: {\r\n          detected: !!reco,\r\n          visible: visible(reco),\r\n          rect: rect(reco),\r\n          textSample: reco ? text(reco).slice(0, 900) : \"\"\r\n        },\r\n        liveBridgeContext: context,\r\n        copyableLiveBridgeContextJson: JSON.stringify(context, null, 2)\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R28-R6-R3 APPLICATION PASS. Feedback loop kald\u0131r\u0131ld\u0131; public bridge, cache ve no-touch guard temiz.\"\r\n          : \"R28-R6-R3 APPLICATION HOLD. Checks/diagnostics incelenmeli.\",\r\n        next: ok\r\n          ? \"R28-R6-R3 idle/click regression smoke\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R28-R6-R3-LIVE-BRIDGE-FEEDBACK-LOOP-REMOVAL-CACHED-SYNC-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n\r\n  window.debugPanelV4R28R6R3FeedbackLoopRemovalCachedSyncSmoke = function () {\r\n    var beforeElements = elementCount();\r\n    var beforeSig = productSignature();\r\n    var beforeSync = internal.syncCount;\r\n    var beforeSkipped = internal.skippedDuplicateCount;\r\n    var beforeCacheBuild = sourceCache.buildCount;\r\n    var beforeContext = window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n    var readBefore = internal.syncCount;\r\n\r\n    /* Public getter'\u0131n ger\u00E7ekten salt-okuma oldu\u011Funu do\u011Frula. */\r\n    for (var i = 0; i < 12; i += 1) {\r\n      window.getPanelV4R28LiveBridgeContext();\r\n    }\r\n\r\n    var readAfter = internal.syncCount;\r\n    var idleSelectionEvents = 0;\r\n    var onSelection = function () { idleSelectionEvents += 1; };\r\n\r\n    window.addEventListener(\"gdx-panel-v4-r28-selection-change\", onSelection);\r\n\r\n    return new Promise(function (resolve) {\r\n      window.setTimeout(function () {\r\n        window.removeEventListener(\"gdx-panel-v4-r28-selection-change\", onSelection);\r\n\r\n        var selection = getSelectionState();\r\n        var context = window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n        var selectionKey = clean(selection.activeSelectionKey);\r\n        var contextKey = contextSelectionKey(context);\r\n        var afterElements = elementCount();\r\n        var afterSig = productSignature();\r\n        var syncDelta = internal.syncCount - beforeSync;\r\n        var cacheBuildDelta = sourceCache.buildCount - beforeCacheBuild;\r\n\r\n        var checks = {\r\n          r3RuntimeReady: window.GDX_PANEL_V4_R28_R6_R3_READY === true,\r\n          productPoolReady: products().length === 19,\r\n          selectionStateReadable: !!selectionKey,\r\n          publicContextReady: !!contextKey,\r\n          contextMatchesCurrentSelection: !!selectionKey && selectionKey === contextKey,\r\n          pureGetterNoSyncMutation: readAfter === readBefore,\r\n          idleSelectionEventCountZero: idleSelectionEvents === 0,\r\n          idleBridgeSyncDeltaZero: syncDelta === 0,\r\n          sourceCacheReady: sourceCache.ready === true,\r\n          sourceCacheBuiltOnceOrStable: sourceCache.buildCount >= 1 && cacheBuildDelta === 0,\r\n          duplicateGuardReady: typeof internal.skippedDuplicateCount === \"number\",\r\n          noDocumentClickCaptureBridge: true,\r\n          noDomMutationByThisSmoke: afterElements === beforeElements,\r\n          noProductOrderMutationByThisSmoke: afterSig === beforeSig,\r\n          noCartMutationByThisSmoke: true,\r\n          noScoreMutationByThisSmoke: true,\r\n          noRankingMutationByThisSmoke: true,\r\n          noProductMutationByThisSmoke: true,\r\n          noPriceFormatterTouchByThisSmoke: true,\r\n          noSharePngQrMutationByThisSmoke: true\r\n        };\r\n\r\n        var ok = checks.r3RuntimeReady &&\r\n          checks.productPoolReady &&\r\n          checks.selectionStateReadable &&\r\n          checks.publicContextReady &&\r\n          checks.contextMatchesCurrentSelection &&\r\n          checks.pureGetterNoSyncMutation &&\r\n          checks.idleSelectionEventCountZero &&\r\n          checks.idleBridgeSyncDeltaZero &&\r\n          checks.sourceCacheReady &&\r\n          checks.sourceCacheBuiltOnceOrStable &&\r\n          checks.noDomMutationByThisSmoke &&\r\n          checks.noProductOrderMutationByThisSmoke;\r\n\r\n        resolve({\r\n          phase: PHASE,\r\n          version: VERSION,\r\n          ok: !!ok,\r\n          checks: checks,\r\n          diagnostics: {\r\n            idleWindowMs: 2400,\r\n            idleSelectionEventCount: idleSelectionEvents,\r\n            idleBridgeSyncDelta: syncDelta,\r\n            getterSyncDelta: readAfter - readBefore,\r\n            syncCountBefore: beforeSync,\r\n            syncCountAfter: internal.syncCount,\r\n            skippedDuplicateCountBefore: beforeSkipped,\r\n            skippedDuplicateCountAfter: internal.skippedDuplicateCount,\r\n            sourceCache: {\r\n              ready: sourceCache.ready,\r\n              buildCountBefore: beforeCacheBuild,\r\n              buildCountAfter: sourceCache.buildCount,\r\n              buildDelta: cacheBuildDelta,\r\n              lastBuildAt: sourceCache.lastBuildAt,\r\n              scenarioRows: sourceCache.locks ? sourceCache.locks.scenarios.length : 0,\r\n              noraRows: sourceCache.locks ? sourceCache.locks.noras.length : 0,\r\n              visualRows: sourceCache.locks ? sourceCache.locks.visuals.length : 0\r\n            },\r\n            selectionKey: selectionKey,\r\n            contextKey: contextKey,\r\n            contextBeforePresent: !!beforeContext,\r\n            internalState: {\r\n              syncCount: internal.syncCount,\r\n              skippedDuplicateCount: internal.skippedDuplicateCount,\r\n              lastSyncAt: internal.lastSyncAt,\r\n              lastReason: internal.lastReason,\r\n              lastError: internal.lastError,\r\n              lastPublishedSelectionKey: internal.lastPublishedSelectionKey\r\n            }\r\n          },\r\n          interpretation: {\r\n            decision: ok\r\n              ? \"R28-R6-R3 TECHNICAL PASS. Idle feedback loop yok, getter salt-okuma, source locks cache'li ve no-touch guard temiz.\"\r\n              : \"R28-R6-R3 HOLD. Idle event/sync, getter mutation veya cache kontrolleri incelenmeli.\",\r\n            next: ok\r\n              ? \"Manuel ama\u00E7/alt ama\u00E7 t\u0131klama regresyonu ve g\u00F6rsel ak\u0131c\u0131l\u0131k g\u00F6zlemi\"\r\n              : \"HOLD\"\r\n          },\r\n          sealCandidate: ok\r\n            ? \"PANEL-V4-R28-R6-R3-LIVE-BRIDGE-FEEDBACK-LOOP-REMOVAL-CACHED-SYNC-TECHNICAL-PASS-CANDIDATE\"\r\n            : \"HOLD\"\r\n        });\r\n      }, 2400);\r\n    });\r\n  };\r\n\r\n  window.debugPanelV4R28R7R1OneWayContextBridgeSourceApplicationSmoke = function () {\r\n    var beforeElements = elementCount();\r\n    var beforeProducts = productSignature();\r\n    var selection = getSelectionState();\r\n    var selectionSnapshot = JSON.stringify(selection || {});\r\n    var target = r11TargetForSelection(selection);\r\n    var api = r11Api();\r\n    var beforeBridgeSync = internal.syncCount;\r\n    var beforeR11Sync = internal.r11SyncCount;\r\n    var beforeR11Skipped = internal.r11SkippedDuplicateCount;\r\n    var beforeContext = window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n    var beforeContextKey = contextSelectionKey(beforeContext);\r\n    var beforeR11StateKey = r11StateKey(api);\r\n    var selectionEvents = 0;\r\n    var liveBridgeEvents = 0;\r\n\r\n    var onSelection = function () { selectionEvents += 1; };\r\n    var onBridge = function () { liveBridgeEvents += 1; };\r\n\r\n    window.addEventListener(\"gdx-panel-v4-r28-selection-change\", onSelection);\r\n    window.addEventListener(\"gdx-panel-v4-r28-live-bridge-context-sync\", onBridge);\r\n\r\n    /* Sa\u011Fl\u0131kl\u0131 durumda context ve R11 zaten ayn\u0131 hedefte; bu \u00E7a\u011Fr\u0131 duplicate guard ile no-op olmal\u0131d\u0131r. */\r\n    publish(\"r28_r7_r1_duplicate_guard_probe\", {\r\n      selectionState: selection,\r\n      force: false\r\n    });\r\n\r\n    var afterProbeBridgeSync = internal.syncCount;\r\n    var afterProbeR11Sync = internal.r11SyncCount;\r\n    var afterProbeR11Skipped = internal.r11SkippedDuplicateCount;\r\n\r\n    return new Promise(function (resolve) {\r\n      window.setTimeout(function () {\r\n        window.removeEventListener(\"gdx-panel-v4-r28-selection-change\", onSelection);\r\n        window.removeEventListener(\"gdx-panel-v4-r28-live-bridge-context-sync\", onBridge);\r\n\r\n        var currentSelection = getSelectionState();\r\n        var currentTarget = r11TargetForSelection(currentSelection);\r\n        var currentApi = r11Api();\r\n        var currentContext = window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n        var currentRows = r11Rows(currentApi);\r\n        var currentKeys = currentRows.map(r11RowKey).filter(Boolean);\r\n        var afterElements = elementCount();\r\n        var afterProducts = productSignature();\r\n\r\n        var checks = {\r\n          applicationSmokeRan: true,\r\n          r28R7R1RuntimeReady: window.GDX_PANEL_V4_R28_R7_R1_READY === true,\r\n          r28R6R3CompatibilityReady: window.GDX_PANEL_V4_R28_R6_R3_READY === true,\r\n          productPoolReady: products().length === 19,\r\n          mappingHas25Selections: Object.keys(R28_TO_R11_CONTEXT_MAP).length === 25,\r\n          selectionStateReadable: !!clean(currentSelection && currentSelection.activeSelectionKey),\r\n          contextMatchesCurrentSelection: contextSelectionKey(currentContext) === clean(currentSelection && currentSelection.activeSelectionKey),\r\n          activeTargetReady: !!currentTarget,\r\n          r11ApiReady: !!(currentApi && typeof currentApi.selectGoalSub === \"function\" && currentApi.state),\r\n          r11TaxonomyTargetReady: !!(currentApi && currentTarget && r11TaxonomyHasTarget(currentApi, currentTarget)),\r\n          r11StateMatchesMappedTarget: !!(currentTarget && r11StateKey(currentApi) === r11TargetKey(currentTarget)),\r\n          r11RenderedRows3: currentRows.length === 3,\r\n          r11RenderedKeysUnique: currentKeys.length === 3 && new Set(currentKeys).size === 3,\r\n          liveContextCarriesR11BridgeState: !!(currentContext && currentContext.bridgeState && currentContext.bridgeState.r11),\r\n\r\n          duplicateProbeDidNotRepublishContext: afterProbeBridgeSync === beforeBridgeSync,\r\n          duplicateProbeDidNotRerenderR11: afterProbeR11Sync === beforeR11Sync,\r\n          duplicateGuardCountAdvanced: afterProbeR11Skipped > beforeR11Skipped,\r\n\r\n          idleSelectionEventCountZero: selectionEvents === 0,\r\n          idleBridgeEventCountZero: liveBridgeEvents === 0,\r\n          idleBridgeSyncDeltaZero: internal.syncCount === afterProbeBridgeSync,\r\n          idleR11SyncDeltaZero: internal.r11SyncCount === afterProbeR11Sync,\r\n\r\n          r28SelectionNotMutatedByBridge: JSON.stringify(currentSelection || {}) === selectionSnapshot,\r\n          noReverseR11ToR28SyncInstalled: true,\r\n          existingSingleDebouncedR28PathReused: true,\r\n          noNewDocumentClickListenerByR7: true,\r\n          noNewObserverByR7: true,\r\n          noRecurringTimerByR7: true,\r\n\r\n          noDomMutationByThisSmoke: afterElements === beforeElements,\r\n          noProductOrderMutationByThisSmoke: afterProducts === beforeProducts,\r\n          noScoreFormulaMutationByThisSmoke: true,\r\n          noFp14SourceMutationByThisSmoke: true,\r\n          noProductMutationByThisSmoke: true,\r\n          noPriceFormatterTouchByThisSmoke: true,\r\n          noCartMutationByThisSmoke: true,\r\n          noCommerceMutationByThisSmoke: true,\r\n          noSharePngQrMutationByThisSmoke: true\r\n        };\r\n\r\n        var failed = Object.keys(checks).filter(function (key) {\r\n          return checks[key] !== true;\r\n        });\r\n\r\n        var result = {\r\n          phase: PHASE,\r\n          version: VERSION,\r\n          ok: failed.length === 0,\r\n          checks: checks,\r\n          diagnostics: {\r\n            currentSelection: currentSelection,\r\n            mappedTarget: currentTarget,\r\n            currentR11: currentApi && currentApi.state ? {\r\n              mainKey: clean(currentApi.state.mainKey),\r\n              subKey: clean(currentApi.state.subKey),\r\n              renderedKeys: currentKeys\r\n            } : null,\r\n            liveContextKey: contextSelectionKey(currentContext),\r\n            bridgeState: currentContext && currentContext.bridgeState ? currentContext.bridgeState : null,\r\n            duplicateProbe: {\r\n              contextSyncBefore: beforeBridgeSync,\r\n              contextSyncAfter: afterProbeBridgeSync,\r\n              r11SyncBefore: beforeR11Sync,\r\n              r11SyncAfter: afterProbeR11Sync,\r\n              r11SkippedBefore: beforeR11Skipped,\r\n              r11SkippedAfter: afterProbeR11Skipped,\r\n              r11StateBefore: beforeR11StateKey,\r\n              contextKeyBefore: beforeContextKey\r\n            },\r\n            idleWindowMs: 2400,\r\n            idleSelectionEventCount: selectionEvents,\r\n            idleLiveBridgeEventCount: liveBridgeEvents,\r\n            internalState: {\r\n              syncCount: internal.syncCount,\r\n              skippedDuplicateCount: internal.skippedDuplicateCount,\r\n              r11SyncCount: internal.r11SyncCount,\r\n              r11SkippedDuplicateCount: internal.r11SkippedDuplicateCount,\r\n              r11LastSyncAt: internal.r11LastSyncAt,\r\n              r11LastReason: internal.r11LastReason,\r\n              r11LastError: internal.r11LastError,\r\n              r11LastTargetKey: internal.r11LastTargetKey,\r\n              r11LastRenderedKeys: internal.r11LastRenderedKeys.slice(),\r\n              r11Pending: internal.r11Pending\r\n            },\r\n            elementCountBefore: beforeElements,\r\n            elementCountAfter: afterElements,\r\n            failed: failed\r\n          },\r\n          interpretation: {\r\n            decision: failed.length === 0\r\n              ? \"R28-R7-R1 TECHNICAL PASS. R28 selection tek y\u00F6nl\u00FC olarak R11 \u00F6neri ba\u011Flam\u0131n\u0131 y\u00F6netiyor; duplicate/idle guard temiz ve core sistemler korunuyor.\"\r\n              : \"R28-R7-R1 HOLD. Context alignment, duplicate/idle guard veya no-touch kontrolleri incelenmeli.\",\r\n            next: failed.length === 0\r\n              ? \"Manuel 8 ana ama\u00E7 / 24 alt ama\u00E7 R11 kart de\u011Fi\u015Fimi ve scroll ak\u0131c\u0131l\u0131\u011F\u0131 g\u00F6zlemi\"\r\n              : \"HOLD\"\r\n          },\r\n          sealCandidate: failed.length === 0\r\n            ? \"PANEL-V4-R28-R7-R1-R28-TO-R11-ONE-WAY-CONTEXT-BRIDGE-SOURCE-APPLICATION-TECHNICAL-PASS-CANDIDATE\"\r\n            : \"HOLD\"\r\n        };\r\n\r\n        console.log(\"R28-R7-R1 ONE-WAY CONTEXT BRIDGE SOURCE APPLICATION:\", result);\r\n        resolve(result);\r\n      }, 2400);\r\n    });\r\n  };\r\n\r\n})();\r\n\r\n/* =========================================================\r\n   PANEL-V4-R29-R0-R1-CURRENT-R28-R6-R2-NORA-READINESS-AUDIT-READONLY\r\n\r\n   FAZ:\r\n   R29-R0-R1 \u2014 Current R28-R6-R2 NORA Second Voice Readiness Audit\r\n\r\n   T\u00DCR:\r\n   CONSOLE AUDIT / READONLY\r\n   BU B\u0130R VISIBLE UI APPLICATION DE\u011E\u0130LD\u0130R.\r\n\r\n   THEME \u0130\u015ELEM\u0130:\r\n   Dosya: assets/panel-led-v4.ui.js\r\n   \u0130\u015Flem: DOSYANIN EN ALTINA EKLE\r\n   T\u00FCr: APPEND\r\n   Full replacement: Hay\u0131r\r\n   Mevcut kod silinecek mi: Hay\u0131r\r\n\r\n   NEDEN R0-R1:\r\n   \u00D6nceki R29-R0 tasla\u011F\u0131 art\u0131k kullan\u0131lmamas\u0131 gereken\r\n   debugPanelV4R28R6R1FunctionalRollupSmokeSelfContainedPublicRestore()\r\n   ba\u011F\u0131ml\u0131l\u0131\u011F\u0131 ta\u015F\u0131yordu.\r\n\r\n   Bu g\u00FCncel audit:\r\n   - R28-R6-R2 kal\u0131c\u0131 application public API/state yap\u0131s\u0131n\u0131 yaln\u0131z okur.\r\n   - R28-R6-R1 restore/test fonksiyonunu \u00E7a\u011F\u0131rmaz.\r\n   - Public bridge'i onarmaya veya yeniden publish etmeye \u00E7al\u0131\u015Fmaz.\r\n   - UI / setup modal / score / ranking / product / price / cart / share / PNG / QR de\u011Fi\u015Ftirmez.\r\n\r\n   TEST ALANI:\r\n   1) Panel a\u00E7\u0131l\u0131\u015F\u0131ndaki R28 se\u00E7im alan\u0131:\r\n      8 ana ama\u00E7 + aktif 3 alt ama\u00E7.\r\n   2) \u00DCr\u00FCn havuzu alt\u0131ndaki mevcut \u00F6neri alan\u0131:\r\n      \"Kullan\u0131m Amac\u0131na G\u00F6re \u00D6neriler\" alan\u0131 g\u00F6r\u00FCn\u00FCr kalmal\u0131.\r\n   3) Setup modal\u0131n\u0131 a\u00E7mak zorunlu de\u011Fildir.\r\n\r\n   CONSOLE KOMUTU:\r\n   window.debugPanelV4R29R0R1CurrentR28R6R2NoraReadinessAudit()\r\n   ========================================================= */\r\n(function () {\r\n  \"use strict\";\r\n\r\n  var PHASE = \"PANEL-V4-R29-R0-R1-CURRENT-R28-R6-R2-NORA-READINESS-AUDIT-READONLY\";\r\n  var VERSION = \"PANEL-V4-R29-R0-R1-CURRENT-R28-R6-R2-NORA-READINESS-AUDIT-NO-DOM-MUTATION-V1\";\r\n\r\n  if (window.GDX_PANEL_V4_R29_R0_R1_READY) return;\r\n  window.GDX_PANEL_V4_R29_R0_R1_READY = true;\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function lower(value) {\r\n    return clean(value).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function all(selector, scope) {\r\n    return Array.prototype.slice.call((scope || document).querySelectorAll(selector));\r\n  }\r\n\r\n  function text(el) {\r\n    return clean((el && (el.innerText || el.textContent)) || \"\");\r\n  }\r\n\r\n  function visible(el) {\r\n    if (!el) return false;\r\n    var st = window.getComputedStyle ? window.getComputedStyle(el) : null;\r\n    var rect = el.getBoundingClientRect ? el.getBoundingClientRect() : null;\r\n\r\n    if (el.hidden) return false;\r\n    if (st && (st.display === \"none\" || st.visibility === \"hidden\" || Number(st.opacity) === 0)) return false;\r\n    if (rect && (rect.width < 4 || rect.height < 4)) return false;\r\n\r\n    return true;\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function fn(name) {\r\n    try {\r\n      return typeof window[name] === \"function\";\r\n    } catch (error) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productSignature() {\r\n    return products().map(function (product, index) {\r\n      return [\r\n        index,\r\n        clean(product && (product.handle || product.id || product.key || product.title || product.name)),\r\n        clean(product && (product.title || product.name))\r\n      ].join(\":\");\r\n    }).join(\"|\");\r\n  }\r\n\r\n  function safeReadonlyCall(name) {\r\n    var beforeCount = elementCount();\r\n    var beforeSig = productSignature();\r\n    var result = null;\r\n    var error = \"\";\r\n\r\n    try {\r\n      if (fn(name)) {\r\n        result = window[name]();\r\n      } else {\r\n        error = \"missing\";\r\n      }\r\n    } catch (caught) {\r\n      error = caught && caught.message ? caught.message : String(caught);\r\n    }\r\n\r\n    return {\r\n      exists: fn(name),\r\n      ok: !!(result && result.ok === true),\r\n      elementDelta: elementCount() - beforeCount,\r\n      productOrderChanged: beforeSig !== productSignature(),\r\n      error: error,\r\n      result: result\r\n    };\r\n  }\r\n\r\n  function selectionState() {\r\n    if (fn(\"getPanelV4R28SelectionState\")) {\r\n      try {\r\n        return window.getPanelV4R28SelectionState() || {};\r\n      } catch (error) {}\r\n    }\r\n\r\n    return window.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n  }\r\n\r\n  function liveContext() {\r\n    /*\r\n       Bilerek getPanelV4R28LiveBridgeContext() \u00E7a\u011Fr\u0131lm\u0131yor.\r\n       \u00C7\u00FCnk\u00FC mevcut implementation bu \u00E7a\u011Fr\u0131da publish/sync yap\u0131yor.\r\n       Readonly audit yaln\u0131z mevcut public state'i okur.\r\n    */\r\n    return window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || {};\r\n  }\r\n\r\n  function rowsFromLock(lock) {\r\n    if (!lock) return [];\r\n\r\n    return lock.scenarios ||\r\n      lock.entries ||\r\n      lock.noraEntries ||\r\n      lock.voiceEntries ||\r\n      lock.previews ||\r\n      lock.items ||\r\n      [];\r\n  }\r\n\r\n  function lockFromCall(callResult, names) {\r\n    var diagnostics = callResult && callResult.result && callResult.result.diagnostics\r\n      ? callResult.result.diagnostics\r\n      : {};\r\n\r\n    if (diagnostics.lockCandidate) return diagnostics.lockCandidate;\r\n\r\n    for (var i = 0; i < names.length; i += 1) {\r\n      if (diagnostics[names[i]]) return diagnostics[names[i]];\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function scenarioKey(row) {\r\n    return clean(row && (row.scenarioKey || row.key || row.id || row.previewKey));\r\n  }\r\n\r\n  function r28Mount() {\r\n    return document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n  }\r\n\r\n  function recommendationArea() {\r\n    var byId = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n    if (byId) return byId;\r\n\r\n    var candidates = all(\"section,div,article\").filter(function (el) {\r\n      return /KULLANIM AMACINA G\u00D6RE \u00D6NER\u0130LER|Canl\u0131 Setup Rol Motoru V2|P41-4 LIVE|Kurulumu G\u00F6r|Neden Bu \u00DCr\u00FCn/.test(text(el).slice(0, 1200));\r\n    });\r\n\r\n    candidates.sort(function (a, b) {\r\n      return text(b).length - text(a).length;\r\n    });\r\n\r\n    return candidates[0] || null;\r\n  }\r\n\r\n  function rect(el) {\r\n    if (!el || !el.getBoundingClientRect) return null;\r\n    var value = el.getBoundingClientRect();\r\n\r\n    return {\r\n      top: Math.round(value.top),\r\n      left: Math.round(value.left),\r\n      width: Math.round(value.width),\r\n      height: Math.round(value.height),\r\n      bottom: Math.round(value.bottom),\r\n      right: Math.round(value.right)\r\n    };\r\n  }\r\n\r\n  function hasForbiddenClaim(value) {\r\n    return /kesinlikle en iyi|her kullan\u0131m i\u00E7in ideal|profesyonel sonu\u00E7 garantiler|rakipsiz|bunu almal\u0131s\u0131n|stokta kesin vard\u0131r|en m\u00FCkemmel|garantili sonu\u00E7|her senaryoda ana \u0131\u015F\u0131k/.test(lower(value));\r\n  }\r\n\r\n  function hasRawRoleKey(value) {\r\n    return /key_light|fill_light|soft_front_light|close_range_support|portable_interview_light|rgb_background_wash|support_or_accent_light|product_side_light|clinical_soft_front|rim_or_color_separation|rgb_accent|background_light|hair_light|rim_light|product_top_light/.test(clean(value));\r\n  }\r\n\r\n  function setupModalInfrastructureReady() {\r\n    return !!window.GDX_PANEL_V4_R27_A8_R2_READY ||\r\n      fn(\"applyPanelV4R27A8R2A6ConsolidatedSingleNoraMount\") ||\r\n      fn(\"debugPanelV4R27A8R2A6ConsolidatedSingleNoraMount\");\r\n  }\r\n\r\n  window.debugPanelV4R29R0R1CurrentR28R6R2NoraReadinessAudit = function () {\r\n    var beforeCount = elementCount();\r\n    var beforeSig = productSignature();\r\n\r\n    var selection = selectionState();\r\n    var context = liveContext();\r\n    var mount = r28Mount();\r\n    var reco = recommendationArea();\r\n\r\n    var noraVerify = safeReadonlyCall(\"debugPanelV4R27A3CNoraVoiceLibraryLockVerify\");\r\n    var noraLock = lockFromCall(noraVerify, [\"noraLibrary\", \"voiceLibrary\"]);\r\n    var noraRows = rowsFromLock(noraLock);\r\n\r\n    var adapter = context && context.noraAdapter ? context.noraAdapter : {};\r\n    var activeNoraText = [\r\n      adapter.setupNote,\r\n      adapter.roleTruth,\r\n      adapter.caution,\r\n      adapter.slotsText\r\n    ].map(clean).join(\" \");\r\n\r\n    var purposeButtons = all(\"[data-gdx-panel-r28-purpose]\", mount);\r\n    var subPurposeButtons = all(\"[data-gdx-panel-r28-subpurpose]\", mount);\r\n\r\n    var activePurposeButtons = purposeButtons.filter(function (button) {\r\n      return button.classList.contains(\"is-active\");\r\n    });\r\n\r\n    var activeSubPurposeButtons = subPurposeButtons.filter(function (button) {\r\n      return button.classList.contains(\"is-active\");\r\n    });\r\n\r\n    var topKeyCounts = {};\r\n    noraRows.forEach(function (row) {\r\n      Object.keys(row || {}).forEach(function (key) {\r\n        topKeyCounts[key] = (topKeyCounts[key] || 0) + 1;\r\n      });\r\n    });\r\n\r\n    var sampleRows = noraRows.slice(0, 10).map(function (row) {\r\n      return {\r\n        scenarioKey: scenarioKey(row),\r\n        primaryRole: clean(row.primaryRole),\r\n        roleBenefit: clean(row.roleBenefit),\r\n        honestCaution: clean(row.honestCaution),\r\n        sourceStatus: clean(row.sourceStatus),\r\n        toneTags: Array.isArray(row.toneTags) ? row.toneTags.slice() : [],\r\n        forbiddenClaimsCount: Array.isArray(row.forbiddenClaims) ? row.forbiddenClaims.length : 0,\r\n        hasSlots: !!row.slots\r\n      };\r\n    });\r\n\r\n    var afterCount = elementCount();\r\n    var afterSig = productSignature();\r\n\r\n    var stateKey = clean(selection.activeSelectionKey);\r\n    var contextKey = clean(context && context.activeSelection && context.activeSelection.activeSelectionKey);\r\n\r\n    var checks = {\r\n      auditRan: true,\r\n\r\n      currentR28R6R2ApplicationReady: !!window.GDX_PANEL_V4_R28_R6_R2_READY,\r\n      r28R6R2SmokeFunctionPresent: fn(\"debugPanelV4R28R6R2ConsolidatedLiveBridgeApplicationSmoke\"),\r\n      resolveSelectionContextApiReady: fn(\"resolvePanelV4R28SelectionContext\"),\r\n      getLiveBridgeContextApiReady: fn(\"getPanelV4R28LiveBridgeContext\"),\r\n      publicLiveBridgeStateReady: !!window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT,\r\n\r\n      productPoolReady: products().length === 19,\r\n\r\n      r28SelectionMountDetected: !!mount,\r\n      r28SelectionMountVisible: visible(mount),\r\n      mainPurposeButtonCount8: purposeButtons.length === 8,\r\n      currentSubPurposeButtonCount3: subPurposeButtons.length === 3,\r\n      exactlyOneActivePurpose: activePurposeButtons.length === 1,\r\n      exactlyOneActiveSubPurpose: activeSubPurposeButtons.length === 1,\r\n\r\n      recommendationAreaDetected: !!reco,\r\n      recommendationAreaVisible: visible(reco),\r\n\r\n      selectionStateReadable: !!stateKey,\r\n      selectionStateKeyHasDelimiter: stateKey.indexOf(\"::\") > -1,\r\n      liveBridgeContextReady: !!contextKey,\r\n      contextMatchesCurrentSelection: !!stateKey && stateKey === contextKey,\r\n      bridgeStateSynced: !!(context && context.bridgeState && context.bridgeState.synced && context.bridgeState.syncCount >= 1),\r\n\r\n      activeScenarioGroupRows3: !!(context && context.sourceCounts && context.sourceCounts.activeScenarioGroupRows === 3),\r\n      sourceRowsReady: !!(\r\n        context &&\r\n        context.sourceCounts &&\r\n        context.sourceCounts.scenarioRows === 72 &&\r\n        context.sourceCounts.noraRows === 72 &&\r\n        context.sourceCounts.visualRows === 72\r\n      ),\r\n      resolvedScenarioReady: !!(context && context.resolvedScenario && context.resolvedScenario.scenarioKey),\r\n      noraAdapterReady: !!(\r\n        adapter &&\r\n        adapter.hasSetupNote &&\r\n        adapter.hasRoleTruth &&\r\n        adapter.hasCaution &&\r\n        adapter.noForbiddenClaimText\r\n      ),\r\n      visualAdapterReady: !!(context && context.visualAdapter && context.visualAdapter.visualKey),\r\n\r\n      r27NoraLockVerifyFunctionPresent: noraVerify.exists,\r\n      r27NoraLockOk: noraVerify.ok === true,\r\n      r27NoraLockNoDomMutation: noraVerify.elementDelta === 0,\r\n      r27NoraLockNoProductOrderMutation: noraVerify.productOrderChanged === false,\r\n      noraRows72: noraRows.length === 72,\r\n      everyNoraRowHasCoreFields: noraRows.length === 72 && noraRows.every(function (row) {\r\n        return !!(\r\n          scenarioKey(row) &&\r\n          clean(row.primaryRole) &&\r\n          clean(row.roleBenefit) &&\r\n          clean(row.honestCaution) &&\r\n          row.slots\r\n        );\r\n      }),\r\n      noraToneTagsPresent: noraRows.length === 72 && noraRows.every(function (row) {\r\n        return Array.isArray(row.toneTags) &&\r\n          row.toneTags.indexOf(\"honest\") > -1 &&\r\n          row.toneTags.indexOf(\"no_overpromise\") > -1;\r\n      }),\r\n      noraForbiddenClaimsGuardPresent: noraRows.length === 72 && noraRows.every(function (row) {\r\n        return Array.isArray(row.forbiddenClaims) && row.forbiddenClaims.length > 0;\r\n      }),\r\n\r\n      activeNoraNoForbiddenClaims: !hasForbiddenClaim(activeNoraText),\r\n      activeNoraRawRoleKeysDetected: hasRawRoleKey(activeNoraText),\r\n      noraHumanReadableRoleAdapterNeeded: hasRawRoleKey(activeNoraText),\r\n      noraConciseCopyAdapterNeeded: clean(adapter.slotsText).length > 360 || activeNoraText.length > 700,\r\n\r\n      r27A8SetupModalInfrastructureReady: setupModalInfrastructureReady(),\r\n\r\n      noDomMutationByThisAudit: afterCount === beforeCount,\r\n      noProductOrderMutationByThisAudit: beforeSig === afterSig,\r\n      noCartMutationByThisAudit: true,\r\n      noScoreMutationByThisAudit: true,\r\n      noRankingMutationByThisAudit: true,\r\n      noProductMutationByThisAudit: true,\r\n      noPriceFormatterTouchByThisAudit: true,\r\n      noSharePngQrMutationByThisAudit: true,\r\n\r\n      legacyR28R6R1RestoreNotCalled: true\r\n    };\r\n\r\n    var ok = checks.currentR28R6R2ApplicationReady &&\r\n      checks.r28R6R2SmokeFunctionPresent &&\r\n      checks.resolveSelectionContextApiReady &&\r\n      checks.getLiveBridgeContextApiReady &&\r\n      checks.publicLiveBridgeStateReady &&\r\n      checks.productPoolReady &&\r\n      checks.r28SelectionMountDetected &&\r\n      checks.r28SelectionMountVisible &&\r\n      checks.mainPurposeButtonCount8 &&\r\n      checks.currentSubPurposeButtonCount3 &&\r\n      checks.exactlyOneActivePurpose &&\r\n      checks.exactlyOneActiveSubPurpose &&\r\n      checks.recommendationAreaDetected &&\r\n      checks.recommendationAreaVisible &&\r\n      checks.selectionStateReadable &&\r\n      checks.selectionStateKeyHasDelimiter &&\r\n      checks.liveBridgeContextReady &&\r\n      checks.contextMatchesCurrentSelection &&\r\n      checks.bridgeStateSynced &&\r\n      checks.activeScenarioGroupRows3 &&\r\n      checks.sourceRowsReady &&\r\n      checks.resolvedScenarioReady &&\r\n      checks.noraAdapterReady &&\r\n      checks.visualAdapterReady &&\r\n      checks.r27NoraLockVerifyFunctionPresent &&\r\n      checks.r27NoraLockOk &&\r\n      checks.r27NoraLockNoDomMutation &&\r\n      checks.r27NoraLockNoProductOrderMutation &&\r\n      checks.noraRows72 &&\r\n      checks.everyNoraRowHasCoreFields &&\r\n      checks.noraToneTagsPresent &&\r\n      checks.noraForbiddenClaimsGuardPresent &&\r\n      checks.activeNoraNoForbiddenClaims &&\r\n      checks.r27A8SetupModalInfrastructureReady &&\r\n      checks.noDomMutationByThisAudit &&\r\n      checks.noProductOrderMutationByThisAudit;\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: !!ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        elementCountBefore: beforeCount,\r\n        elementCountAfter: afterCount,\r\n        productPoolCount: products().length,\r\n        currentSelectionState: selection,\r\n        liveBridgeContextSummary: {\r\n          stateActiveSelectionKey: stateKey,\r\n          contextActiveSelectionKey: contextKey,\r\n          resolvedScenarioKey: clean(context && context.resolvedScenario && context.resolvedScenario.scenarioKey),\r\n          resolvedScenarioType: clean(context && context.resolvedScenario && context.resolvedScenario.scenarioType),\r\n          noraVoiceKey: clean(adapter.voiceKey),\r\n          visualKey: clean(context && context.visualAdapter && context.visualAdapter.visualKey),\r\n          visualStatus: clean(context && context.visualAdapter && context.visualAdapter.status),\r\n          sourceCounts: context && context.sourceCounts ? context.sourceCounts : null,\r\n          bridgeState: context && context.bridgeState ? context.bridgeState : null\r\n        },\r\n        activeNoraAdapter: {\r\n          primaryRole: clean(adapter.primaryRole),\r\n          setupNote: clean(adapter.setupNote),\r\n          roleTruth: clean(adapter.roleTruth),\r\n          caution: clean(adapter.caution),\r\n          slotsTextSample: clean(adapter.slotsText).slice(0, 900),\r\n          rawRoleKeysDetected: hasRawRoleKey(activeNoraText),\r\n          forbiddenClaimDetected: hasForbiddenClaim(activeNoraText),\r\n          activeNoraTextLength: activeNoraText.length\r\n        },\r\n        r27NoraLockVerify: {\r\n          exists: noraVerify.exists,\r\n          ok: noraVerify.ok,\r\n          elementDelta: noraVerify.elementDelta,\r\n          productOrderChanged: noraVerify.productOrderChanged,\r\n          error: noraVerify.error\r\n        },\r\n        noraLibraryShape: {\r\n          rowCount: noraRows.length,\r\n          topKeyCounts: topKeyCounts,\r\n          sampleRows: sampleRows\r\n        },\r\n        r28SelectionMount: {\r\n          detected: !!mount,\r\n          visible: visible(mount),\r\n          rect: rect(mount),\r\n          activePurposeText: activePurposeButtons[0] ? text(activePurposeButtons[0]) : \"\",\r\n          activeSubPurposeText: activeSubPurposeButtons[0] ? text(activeSubPurposeButtons[0]) : \"\",\r\n          textSample: mount ? text(mount).slice(0, 900) : \"\"\r\n        },\r\n        recommendationArea: {\r\n          detected: !!reco,\r\n          visible: visible(reco),\r\n          rect: rect(reco),\r\n          textSample: reco ? text(reco).slice(0, 900) : \"\"\r\n        },\r\n        auditCorrection: {\r\n          oldDependencyRemoved: \"debugPanelV4R28R6R1FunctionalRollupSmokeSelfContainedPublicRestore\",\r\n          currentSourceOfTruth: \"window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT\",\r\n          noAutoRepairOrPublish: true\r\n        }\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R29-R0-R1 TECHNICAL PASS. G\u00FCncel R28-R6-R2 public bridge ve R27 NORA kaynaklar\u0131 R29 i\u00E7in haz\u0131r. Raw role/copy durumu R29-R1 ve R29-R2 preview fazlar\u0131nda ele al\u0131nmal\u0131.\"\r\n          : \"R29-R0-R1 HOLD. G\u00FCncel R28-R6-R2 readiness veya R27 NORA kaynak kontrollerinden biri eksik; checks/diagnostics incelenmeli.\",\r\n        next: ok\r\n          ? \"R29-R1 HUMAN-READABLE ROLE LABEL ADAPTER PREVIEW / READONLY\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R29-R0-R1-CURRENT-R28-R6-R2-NORA-READINESS-AUDIT-TECHNICAL-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n  };\r\n})();\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 R29-R2 NORA CONCISE SECOND VOICE COPY PREVIEW / READONLY\r\n\r\n   PHASE:\r\n   PANEL-V4-R29-R2-NORA-CONCISE-SECOND-VOICE-COPY-PREVIEW-READONLY\r\n\r\n   TYPE:\r\n   CONSOLE AUDIT / READONLY PREVIEW\r\n\r\n   THEME APPLICATION:\r\n   - File: assets/panel-led-v4.ui.js\r\n   - Operation: APPEND at end of file\r\n   - Full replacement: NO\r\n   - Visible UI mutation: NO\r\n   - Event listener / observer / interval: NO\r\n   - Score / ranking / product / price / cart / share / PNG / QR mutation: NO\r\n\r\n   PURPOSE:\r\n   - Reads the current R28-R6-R3 cached live bridge context.\r\n   - Converts active NORA role copy into concise Turkish customer language.\r\n   - Removes raw role keys and repeated sentences.\r\n   - Produces preview only; does not mount or publish visible UI state.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var PHASE = \"PANEL-V4-R29-R2-NORA-CONCISE-SECOND-VOICE-COPY-PREVIEW-READONLY\";\r\n  var VERSION = \"PANEL-V4-R29-R2-NORA-CONCISE-SECOND-VOICE-COPY-PREVIEW-NO-DOM-MUTATION-V1\";\r\n\r\n  if (window.GDX_PANEL_V4_R29_R2_READY) return;\r\n  window.GDX_PANEL_V4_R29_R2_READY = true;\r\n\r\n  var ROLE_LABELS_TR = Object.freeze({\r\n    key_light: \"ana \u0131\u015F\u0131k\",\r\n    main_light: \"ana \u0131\u015F\u0131k\",\r\n    fill_light: \"dolgu \u0131\u015F\u0131\u011F\u0131\",\r\n    soft_front_light: \"yumu\u015Fak \u00F6n \u0131\u015F\u0131k\",\r\n    clinical_soft_front: \"klinik/y\u00FCz odakl\u0131 yumu\u015Fak \u00F6n \u0131\u015F\u0131k\",\r\n    dental_detail_light: \"dental detay destek \u0131\u015F\u0131\u011F\u0131\",\r\n    product_top_light: \"\u00FCr\u00FCn \u00FCst \u0131\u015F\u0131\u011F\u0131\",\r\n    product_side_light: \"\u00FCr\u00FCn yan \u0131\u015F\u0131\u011F\u0131\",\r\n    product_front_light: \"\u00FCr\u00FCn \u00F6n \u0131\u015F\u0131\u011F\u0131\",\r\n    background_light: \"arka plan \u0131\u015F\u0131\u011F\u0131\",\r\n    rim_light: \"kontur \u0131\u015F\u0131\u011F\u0131\",\r\n    hair_light: \"sa\u00E7/kontur \u0131\u015F\u0131\u011F\u0131\",\r\n    rgb_accent: \"renk vurgu \u0131\u015F\u0131\u011F\u0131\",\r\n    rgb_background_wash: \"RGB arka plan renk \u0131\u015F\u0131\u011F\u0131\",\r\n    rim_or_color_separation: \"renk/kontur ayr\u0131m\u0131\",\r\n    portable_interview_light: \"ta\u015F\u0131nabilir \u00E7ekim \u0131\u015F\u0131\u011F\u0131\",\r\n    support_or_accent_light: \"destek/vurgu \u0131\u015F\u0131\u011F\u0131\",\r\n    close_range_support: \"yak\u0131n plan destek \u0131\u015F\u0131\u011F\u0131\",\r\n    product_color_separation: \"\u00FCr\u00FCn arka plan renk ayr\u0131m\u0131\",\r\n    interview_key: \"r\u00F6portaj ana \u0131\u015F\u0131\u011F\u0131\",\r\n    interview_key_light: \"r\u00F6portaj ana \u0131\u015F\u0131\u011F\u0131\",\r\n    product_top_key: \"\u00FCr\u00FCn \u00FCst ana \u0131\u015F\u0131\u011F\u0131\",\r\n    wide_area_key_light: \"geni\u015F alan ana \u0131\u015F\u0131\u011F\u0131\",\r\n    studio_key_light: \"st\u00FCdyo ana \u0131\u015F\u0131\u011F\u0131\",\r\n    model_key_light: \"model \u00E7ekimi ana \u0131\u015F\u0131\u011F\u0131\",\r\n    two_person_key_light: \"iki ki\u015Filik r\u00F6portaj ana \u0131\u015F\u0131\u011F\u0131\",\r\n    broadcast_key_light: \"yay\u0131n ana \u0131\u015F\u0131\u011F\u0131\",\r\n    portable_key_light: \"ta\u015F\u0131nabilir ana \u0131\u015F\u0131k\",\r\n    location_key_light: \"mekan \u00E7ekimi ana \u0131\u015F\u0131\u011F\u0131\",\r\n    tabletop_key_light: \"masa\u00FCst\u00FC \u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131\",\r\n    catalog_key_light: \"katalog \u00E7ekimi ana \u0131\u015F\u0131\u011F\u0131\",\r\n    ecommerce_key_light: \"e-ticaret \u00FCr\u00FCn ana \u0131\u015F\u0131\u011F\u0131\",\r\n    creative_key_light: \"kreatif ana \u0131\u015F\u0131k\",\r\n    effect_light: \"efekt \u0131\u015F\u0131\u011F\u0131\",\r\n    accent_light: \"vurgu \u0131\u015F\u0131\u011F\u0131\",\r\n    color_separation_light: \"renk ayr\u0131m \u0131\u015F\u0131\u011F\u0131\",\r\n    product_background_light: \"\u00FCr\u00FCn arka plan \u0131\u015F\u0131\u011F\u0131\",\r\n    face_light: \"y\u00FCz \u0131\u015F\u0131\u011F\u0131\",\r\n    beauty_light: \"g\u00FCzellik/y\u00FCz \u0131\u015F\u0131\u011F\u0131\",\r\n    clinical_fill_light: \"klinik dolgu \u0131\u015F\u0131\u011F\u0131\",\r\n    dental_fill_light: \"dental dolgu \u0131\u015F\u0131\u011F\u0131\",\r\n    ambient_light: \"ortam \u0131\u015F\u0131\u011F\u0131\",\r\n    practical_light: \"pratik destek \u0131\u015F\u0131\u011F\u0131\",\r\n    overhead_light: \"\u00FCst \u0131\u015F\u0131k\",\r\n    side_light: \"yan \u0131\u015F\u0131k\",\r\n    front_light: \"\u00F6n \u0131\u015F\u0131k\",\r\n    back_light: \"arka \u0131\u015F\u0131k\",\r\n    secondary_light: \"yard\u0131mc\u0131 \u0131\u015F\u0131k\",\r\n    support_light: \"destek \u0131\u015F\u0131\u011F\u0131\",\r\n    low_power_key_light: \"d\u00FC\u015F\u00FCk g\u00FC\u00E7l\u00FC ana \u0131\u015F\u0131k\",\r\n    high_power_key_light: \"y\u00FCksek g\u00FC\u00E7l\u00FC ana \u0131\u015F\u0131k\",\r\n    fixed_studio_key_light: \"sabit st\u00FCdyo ana \u0131\u015F\u0131\u011F\u0131\"\r\n  });\r\n\r\n  function clean(value) {\r\n    return String(value || \"\").replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function lower(value) {\r\n    return clean(value).toLocaleLowerCase(\"tr-TR\");\r\n  }\r\n\r\n  function escapeRegExp(value) {\r\n    return String(value).replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n  }\r\n\r\n  function elementCount() {\r\n    return document.getElementsByTagName(\"*\").length;\r\n  }\r\n\r\n  function productSignature() {\r\n    var api = window.GDX_PANEL_LED_V4;\r\n    var products = api && api.state && Array.isArray(api.state.products)\r\n      ? api.state.products\r\n      : [];\r\n\r\n    return products.map(function (product) {\r\n      return clean(product && (product.key || product.handle || product.id || product.title));\r\n    }).join(\"||\");\r\n  }\r\n\r\n  function selectionState() {\r\n    return window.GDX_PANEL_V4_R28_SELECTION_STATE || null;\r\n  }\r\n\r\n  function liveContext() {\r\n    return window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n  }\r\n\r\n  function roleLabel(roleKey) {\r\n    return ROLE_LABELS_TR[clean(roleKey)] || \"\";\r\n  }\r\n\r\n  function roleKeysFromContext(context) {\r\n    var keys = [];\r\n    var adapter = context && context.noraAdapter ? context.noraAdapter : {};\r\n    var scenario = context && context.resolvedScenario ? context.resolvedScenario : {};\r\n\r\n    if (clean(adapter.primaryRole)) keys.push(clean(adapter.primaryRole));\r\n\r\n    (Array.isArray(scenario.recommendedRoles) ? scenario.recommendedRoles : []).forEach(function (key) {\r\n      key = clean(key);\r\n      if (key && keys.indexOf(key) === -1) keys.push(key);\r\n    });\r\n\r\n    return keys;\r\n  }\r\n\r\n  function humanizeRoleKeys(value, roleKeys) {\r\n    var output = clean(value);\r\n\r\n    (roleKeys || []).slice().sort(function (a, b) {\r\n      return b.length - a.length;\r\n    }).forEach(function (key) {\r\n      var label = roleLabel(key);\r\n      if (!label) return;\r\n      output = output.replace(new RegExp(\"\\\\b\" + escapeRegExp(key) + \"\\\\b\", \"g\"), label);\r\n    });\r\n\r\n    return clean(output);\r\n  }\r\n\r\n  function ensureSentence(value) {\r\n    value = clean(value);\r\n    if (!value) return \"\";\r\n    value = value.charAt(0).toLocaleUpperCase(\"tr-TR\") + value.slice(1);\r\n    if (!/[.!?\u2026]$/.test(value)) value += \".\";\r\n    return value;\r\n  }\r\n\r\n  function concise(value, maxChars) {\r\n    value = clean(value);\r\n    maxChars = Number(maxChars || 170);\r\n    if (!value || value.length <= maxChars) return ensureSentence(value);\r\n\r\n    var sentences = value.match(/[^.!?\u2026]+[.!?\u2026]?/g) || [value];\r\n    var out = \"\";\r\n\r\n    sentences.some(function (sentence) {\r\n      sentence = ensureSentence(sentence);\r\n      var next = clean(out + \" \" + sentence);\r\n      if (next.length > maxChars) return true;\r\n      out = next;\r\n      return false;\r\n    });\r\n\r\n    if (out) return out;\r\n\r\n    var clipped = value.slice(0, Math.max(40, maxChars - 1));\r\n    clipped = clipped.replace(/\\s+\\S*$/, \"\").replace(/[,:;\\-]+$/, \"\");\r\n    return ensureSentence(clipped);\r\n  }\r\n\r\n  function normalizedSentence(value) {\r\n    return lower(value)\r\n      .replace(/[.!?\u2026,:;()\"'\u2019\u201C\u201D\\-]/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function isDuplicate(value, accepted) {\r\n    var normalized = normalizedSentence(value);\r\n    if (!normalized) return true;\r\n\r\n    return (accepted || []).some(function (existing) {\r\n      var other = normalizedSentence(existing);\r\n      if (!other) return false;\r\n      if (normalized === other) return true;\r\n      if (normalized.length >= 45 && other.indexOf(normalized) > -1) return true;\r\n      if (other.length >= 45 && normalized.indexOf(other) > -1) return true;\r\n      return false;\r\n    });\r\n  }\r\n\r\n  function pushUnique(target, value) {\r\n    value = clean(value);\r\n    if (!value || isDuplicate(value, target)) return false;\r\n    target.push(value);\r\n    return true;\r\n  }\r\n\r\n  function fallbackCaution(scenarioType) {\r\n    if (scenarioType === \"rgb_background_accent\") {\r\n      return \"RGB taraf\u0131n\u0131 ana \u0131\u015F\u0131k gibi de\u011Fil, arka plan ve kenar ayr\u0131m\u0131 i\u00E7in kullanmak daha sa\u011Fl\u0131kl\u0131 olur.\";\r\n    }\r\n\r\n    if (scenarioType === \"compact_support_close_range\") {\r\n      return \"Bu rol\u00FC geni\u015F alan ana \u0131\u015F\u0131\u011F\u0131 gibi de\u011Fil, yak\u0131n mesafede kontroll\u00FC destek olarak de\u011Ferlendirmek daha ger\u00E7ek\u00E7idir.\";\r\n    }\r\n\r\n    return \"Teknik skor tek ba\u015F\u0131na karar de\u011Fildir; \u0131\u015F\u0131\u011F\u0131n rol\u00FC, mesafe ve kurulum bi\u00E7imi birlikte de\u011Ferlendirilmelidir.\";\r\n  }\r\n\r\n  function fallbackSetupTip(scenarioType) {\r\n    if (scenarioType === \"rgb_background_accent\") {\r\n      return \"RGB \u0131\u015F\u0131\u011F\u0131 arka plana veya konu arkas\u0131ndaki kenar hatt\u0131na y\u00F6nlendir; y\u00FCz \u0131\u015F\u0131\u011F\u0131n\u0131 ayr\u0131 ve do\u011Fal tut.\";\r\n    }\r\n\r\n    if (scenarioType === \"compact_support_close_range\") {\r\n      return \"I\u015F\u0131\u011F\u0131 yak\u0131n ve kontroll\u00FC konumland\u0131r; parlamay\u0131 azaltmak i\u00E7in a\u00E7\u0131y\u0131 yana al veya g\u00FCc\u00FC d\u00FC\u015F\u00FCr.\";\r\n    }\r\n\r\n    return \"I\u015F\u0131\u011F\u0131 konuya 30\u201345 derece a\u00E7\u0131yla ve g\u00F6z hizas\u0131n\u0131n hafif \u00FCzerinde konumland\u0131r.\";\r\n  }\r\n\r\n  function alternativeLine(scenarioType) {\r\n    if (scenarioType === \"rgb_background_accent\") {\r\n      return \"Ana \u0131\u015F\u0131k ihtiyac\u0131 i\u00E7in ayr\u0131 bir Bi-Color veya do\u011Fal beyaz \u0131\u015F\u0131k d\u00FC\u015F\u00FCn.\";\r\n    }\r\n\r\n    if (scenarioType === \"compact_support_close_range\") {\r\n      return \"Daha geni\u015F alan veya daha uzun mesafe gerekiyorsa daha y\u00FCksek g\u00FC\u00E7l\u00FC bir ana \u0131\u015F\u0131k d\u00FC\u015F\u00FCn.\";\r\n    }\r\n\r\n    return \"Renkli atmosfer gerekiyorsa ana \u0131\u015F\u0131\u011F\u0131 de\u011Fi\u015Ftirmek yerine ayr\u0131 bir RGB vurgu \u0131\u015F\u0131\u011F\u0131 d\u00FC\u015F\u00FCn.\";\r\n  }\r\n\r\n  function hasForbiddenClaim(value) {\r\n    return /kesinlikle en iyi|her kullan\u0131m i\u00E7in ideal|profesyonel sonu\u00E7 garantiler|rakipsiz|bunu almal\u0131s\u0131n|stokta kesin vard\u0131r|en m\u00FCkemmel|garantili sonu\u00E7|her senaryoda ana \u0131\u015F\u0131k/.test(lower(value));\r\n  }\r\n\r\n  function containsRawRoleKey(value, roleKeys) {\r\n    var source = clean(value);\r\n    return (roleKeys || []).some(function (key) {\r\n      return new RegExp(\"\\\\b\" + escapeRegExp(key) + \"\\\\b\").test(source);\r\n    });\r\n  }\r\n\r\n  function buildPreview(context) {\r\n    context = context || {};\r\n\r\n    var adapter = context.noraAdapter || {};\r\n    var scenario = context.resolvedScenario || {};\r\n    var active = context.activeSelection || {};\r\n    var scenarioType = clean(scenario.scenarioType);\r\n    var roleKeys = roleKeysFromContext(context);\r\n    var primaryRoleKey = clean(adapter.primaryRole || roleKeys[0]);\r\n    var primaryRoleLabel = roleLabel(primaryRoleKey);\r\n\r\n    var lines = [];\r\n    var comment = primaryRoleLabel\r\n      ? \"Bu kullan\u0131mda \u0131\u015F\u0131\u011F\u0131 \" + primaryRoleLabel + \" rol\u00FCnde d\u00FC\u015F\u00FCnmek daha do\u011Fru.\"\r\n      : \"Bu kullan\u0131mda \u0131\u015F\u0131\u011F\u0131n ger\u00E7ek rol\u00FCn\u00FC kurulum bi\u00E7imiyle birlikte de\u011Ferlendirmek daha do\u011Fru.\";\r\n\r\n    pushUnique(lines, concise(comment, 150));\r\n\r\n    var rawCaution = humanizeRoleKeys(adapter.caution, roleKeys) || fallbackCaution(scenarioType);\r\n    pushUnique(lines, concise(rawCaution, 190));\r\n\r\n    var rawSetup = humanizeRoleKeys(adapter.setupNote, roleKeys);\r\n    var setupTip = rawSetup && !isDuplicate(rawSetup, lines)\r\n      ? \"Kurulum oda\u011F\u0131: \" + rawSetup.replace(/[.!?\u2026]+$/, \"\") + \".\"\r\n      : fallbackSetupTip(scenarioType);\r\n    pushUnique(lines, concise(setupTip, 185));\r\n\r\n    pushUnique(lines, concise(alternativeLine(scenarioType), 175));\r\n\r\n    var blocks = [\r\n      { key: \"comment\", label: \"NORA\u2019n\u0131n yorumu\", text: lines[0] || \"\" },\r\n      { key: \"caution\", label: \"Dikkat\", text: lines[1] || \"\" },\r\n      { key: \"setupTip\", label: \"Kurulum ipucu\", text: lines[2] || \"\" },\r\n      { key: \"alternative\", label: \"Alternatif d\u00FC\u015F\u00FCn\", text: lines[3] || \"\" }\r\n    ].filter(function (block) {\r\n      return !!clean(block.text);\r\n    });\r\n\r\n    return {\r\n      activeSelectionKey: clean(active.activeSelectionKey),\r\n      activePurposeTitle: clean(active.activePurposeTitle),\r\n      activeSubPurposeTitle: clean(active.activeSubPurposeTitle),\r\n      scenarioKey: clean(scenario.scenarioKey),\r\n      scenarioType: scenarioType,\r\n      primaryRoleKey: primaryRoleKey,\r\n      primaryRoleLabelTr: primaryRoleLabel,\r\n      roleKeys: roleKeys,\r\n      blocks: blocks,\r\n      compactText: blocks.map(function (block) {\r\n        return block.label + \": \" + block.text;\r\n      }).join(\" \"),\r\n      policy: {\r\n        maxBlocks: 4,\r\n        visibleUiApplication: false,\r\n        sourceMutation: false,\r\n        rawRoleKeysAllowed: false,\r\n        forbiddenClaimsAllowed: false\r\n      }\r\n    };\r\n  }\r\n\r\n  window.debugPanelV4R29R2NoraConciseSecondVoiceCopyPreview = function () {\r\n    var beforeCount = elementCount();\r\n    var beforeSig = productSignature();\r\n    var beforePublicState = window.GDX_PANEL_V4_R29_SECOND_VOICE_CONTEXT;\r\n\r\n    var selection = selectionState();\r\n    var context = liveContext();\r\n    var preview = buildPreview(context);\r\n    var blocks = preview.blocks || [];\r\n    var texts = blocks.map(function (block) { return clean(block.text); });\r\n    var mappedRoleKeys = preview.roleKeys.filter(function (key) { return !!roleLabel(key); });\r\n    var unmappedRoleKeys = preview.roleKeys.filter(function (key) { return !roleLabel(key); });\r\n\r\n    var afterCount = elementCount();\r\n    var afterSig = productSignature();\r\n\r\n    var checks = {\r\n      previewRan: true,\r\n      currentR28R6R3ApplicationReady: window.GDX_PANEL_V4_R28_R6_R3_READY === true,\r\n      previousR29R1FunctionPresent: typeof window.debugPanelV4R29R1HumanReadableRoleLabelAdapterPreview === \"function\",\r\n      productPoolReady: !!(window.GDX_PANEL_LED_V4 && window.GDX_PANEL_LED_V4.state && Array.isArray(window.GDX_PANEL_LED_V4.state.products) && window.GDX_PANEL_LED_V4.state.products.length === 19),\r\n      selectionStateReadable: !!(selection && clean(selection.activeSelectionKey)),\r\n      publicLiveBridgeStateReady: !!context,\r\n      contextMatchesCurrentSelection: !!(\r\n        selection && context && context.activeSelection &&\r\n        clean(selection.activeSelectionKey) &&\r\n        clean(selection.activeSelectionKey) === clean(context.activeSelection.activeSelectionKey)\r\n      ),\r\n      primaryRolePresent: !!clean(preview.primaryRoleKey),\r\n      primaryRoleHumanReadable: !!clean(preview.primaryRoleLabelTr),\r\n      interviewKeyExplicitlyMapped: roleLabel(\"interview_key\") === \"r\u00F6portaj ana \u0131\u015F\u0131\u011F\u0131\",\r\n      activeRoleMappingComplete: preview.roleKeys.length > 0 && mappedRoleKeys.length === preview.roleKeys.length && unmappedRoleKeys.length === 0,\r\n      conciseBlocksPresent: blocks.length >= 3 && blocks.length <= 4,\r\n      maxFourBlocks: blocks.length <= 4,\r\n      everyBlockHasLabelAndText: blocks.length > 0 && blocks.every(function (block) {\r\n        return !!clean(block.label) && !!clean(block.text);\r\n      }),\r\n      everyBlockWithinLengthGuard: blocks.every(function (block) {\r\n        return clean(block.text).length <= 200;\r\n      }),\r\n      noRawRoleKeysInPreview: !containsRawRoleKey(preview.compactText, preview.roleKeys),\r\n      noForbiddenClaimsInPreview: !hasForbiddenClaim(preview.compactText),\r\n      noDuplicateCopyBlocks: texts.every(function (text, index) {\r\n        return !isDuplicate(text, texts.slice(0, index));\r\n      }),\r\n      previewOnlyNoPublicApplicationStateCreated: beforePublicState === window.GDX_PANEL_V4_R29_SECOND_VOICE_CONTEXT,\r\n      noDomMutationByThisPreview: afterCount === beforeCount,\r\n      noProductOrderMutationByThisPreview: afterSig === beforeSig,\r\n      noCartMutationByThisPreview: true,\r\n      noScoreMutationByThisPreview: true,\r\n      noRankingMutationByThisPreview: true,\r\n      noProductMutationByThisPreview: true,\r\n      noPriceFormatterTouchByThisPreview: true,\r\n      noSharePngQrMutationByThisPreview: true\r\n    };\r\n\r\n    var required = [\r\n      \"previewRan\",\r\n      \"currentR28R6R3ApplicationReady\",\r\n      \"previousR29R1FunctionPresent\",\r\n      \"productPoolReady\",\r\n      \"selectionStateReadable\",\r\n      \"publicLiveBridgeStateReady\",\r\n      \"contextMatchesCurrentSelection\",\r\n      \"primaryRolePresent\",\r\n      \"primaryRoleHumanReadable\",\r\n      \"interviewKeyExplicitlyMapped\",\r\n      \"activeRoleMappingComplete\",\r\n      \"conciseBlocksPresent\",\r\n      \"maxFourBlocks\",\r\n      \"everyBlockHasLabelAndText\",\r\n      \"everyBlockWithinLengthGuard\",\r\n      \"noRawRoleKeysInPreview\",\r\n      \"noForbiddenClaimsInPreview\",\r\n      \"noDuplicateCopyBlocks\",\r\n      \"previewOnlyNoPublicApplicationStateCreated\",\r\n      \"noDomMutationByThisPreview\",\r\n      \"noProductOrderMutationByThisPreview\",\r\n      \"noCartMutationByThisPreview\",\r\n      \"noScoreMutationByThisPreview\",\r\n      \"noRankingMutationByThisPreview\",\r\n      \"noProductMutationByThisPreview\",\r\n      \"noPriceFormatterTouchByThisPreview\",\r\n      \"noSharePngQrMutationByThisPreview\"\r\n    ];\r\n\r\n    var failed = required.filter(function (key) { return checks[key] !== true; });\r\n    var ok = failed.length === 0;\r\n\r\n    var result = {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: ok,\r\n      checks: checks,\r\n      diagnostics: {\r\n        currentSelection: selection ? {\r\n          activeSelectionKey: clean(selection.activeSelectionKey),\r\n          activePurposeTitle: clean(selection.activePurposeTitle),\r\n          activeSubPurposeTitle: clean(selection.activeSubPurposeTitle)\r\n        } : null,\r\n        activeConcisePreview: preview,\r\n        mappingCoverage: {\r\n          activeRoleKeyCount: preview.roleKeys.length,\r\n          mappedRoleKeyCount: mappedRoleKeys.length,\r\n          unmappedRoleKeyCount: unmappedRoleKeys.length,\r\n          mappedRoleKeys: mappedRoleKeys,\r\n          unmappedRoleKeys: unmappedRoleKeys,\r\n          interviewKeyCorrectionApplied: true\r\n        },\r\n        copyMetrics: {\r\n          blockCount: blocks.length,\r\n          blockCharacterCounts: blocks.map(function (block) {\r\n            return { key: block.key, chars: clean(block.text).length };\r\n          }),\r\n          compactTextChars: clean(preview.compactText).length\r\n        },\r\n        elementCountBefore: beforeCount,\r\n        elementCountAfter: afterCount,\r\n        productPoolCount: window.GDX_PANEL_LED_V4 && window.GDX_PANEL_LED_V4.state && Array.isArray(window.GDX_PANEL_LED_V4.state.products)\r\n          ? window.GDX_PANEL_LED_V4.state.products.length\r\n          : 0\r\n      },\r\n      interpretation: {\r\n        decision: ok\r\n          ? \"R29-R2 TECHNICAL PASS. NORA ikinci ses kopyas\u0131 k\u0131sa, insan-readable, tekrars\u0131z ve preview-only \u00FCretildi.\"\r\n          : \"R29-R2 HOLD. Mapping, tekrar, uzunluk veya no-touch kontrolleri incelenmeli.\",\r\n        next: ok\r\n          ? \"R29-R3 NORA UI INJECTION TARGET / OWNERSHIP PLANNING READONLY\"\r\n          : \"HOLD\"\r\n      },\r\n      sealCandidate: ok\r\n        ? \"PANEL-V4-R29-R2-NORA-CONCISE-SECOND-VOICE-COPY-PREVIEW-TECHNICAL-PASS-CANDIDATE\"\r\n        : \"HOLD\"\r\n    };\r\n\r\n    console.log(\"R29-R2 NORA CONCISE SECOND VOICE COPY PREVIEW:\", result);\r\n    return result;\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 R29-R3\r\n   NORA VISIBLE UI MOUNT / PLACEMENT PLANNING \u2014 READONLY\r\n\r\n   TYPE:\r\n   CONSOLE AUDIT / READONLY PLACEMENT PLAN\r\n   THIS IS NOT A VISIBLE UI APPLICATION.\r\n\r\n   THEME OPERATION:\r\n   File: assets/panel-led-v4.ui.js\r\n   Operation: APPEND TO THE END\r\n   Full replacement: No\r\n   Existing code deletion: No\r\n\r\n   SAFETY:\r\n   - No DOM write.\r\n   - No visible NORA mount.\r\n   - No event listener / observer / interval.\r\n   - No score / ranking / product / price / cart / share / PNG / QR mutation.\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var PHASE =\r\n    \"PANEL-V4-R29-R3-NORA-VISIBLE-UI-MOUNT-PLACEMENT-PLANNING-READONLY\";\r\n  var VERSION =\r\n    \"PANEL-V4-R29-R3-NORA-VISIBLE-UI-MOUNT-PLACEMENT-PLANNING-NO-DOM-MUTATION-V1\";\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function visible(element) {\r\n    if (!element) return false;\r\n    if (element.hidden) return false;\r\n\r\n    var style = window.getComputedStyle\r\n      ? window.getComputedStyle(element)\r\n      : null;\r\n    var rect = element.getBoundingClientRect\r\n      ? element.getBoundingClientRect()\r\n      : null;\r\n\r\n    if (\r\n      style &&\r\n      (\r\n        style.display === \"none\" ||\r\n        style.visibility === \"hidden\" ||\r\n        Number(style.opacity) === 0\r\n      )\r\n    ) {\r\n      return false;\r\n    }\r\n\r\n    if (rect && rect.width < 2 && rect.height < 2) return false;\r\n    return true;\r\n  }\r\n\r\n  function rectPack(element) {\r\n    if (!element || !element.getBoundingClientRect) return null;\r\n    var rect = element.getBoundingClientRect();\r\n\r\n    return {\r\n      top: Math.round(rect.top),\r\n      left: Math.round(rect.left),\r\n      width: Math.round(rect.width),\r\n      height: Math.round(rect.height),\r\n      bottom: Math.round(rect.bottom),\r\n      right: Math.round(rect.right)\r\n    };\r\n  }\r\n\r\n  function products() {\r\n    var api = window.GDX_PANEL_LED_V4 || {};\r\n    var state = api.state || {};\r\n    return Array.isArray(state.products) ? state.products : [];\r\n  }\r\n\r\n  function productSnapshot() {\r\n    try {\r\n      return JSON.stringify(\r\n        products().map(function (product) {\r\n          return {\r\n            key:\r\n              product &&\r\n              (\r\n                product.key ||\r\n                product.handle ||\r\n                product.id ||\r\n                product.title\r\n              ),\r\n            title: product && product.title,\r\n            price: product && product.price,\r\n            available: product && product.available\r\n          };\r\n        })\r\n      );\r\n    } catch (error) {\r\n      return \"PRODUCT_SNAPSHOT_ERROR\";\r\n    }\r\n  }\r\n\r\n  function currentSelection() {\r\n    return window.GDX_PANEL_V4_R28_SELECTION_STATE || null;\r\n  }\r\n\r\n  function currentContext() {\r\n    try {\r\n      if (\r\n        typeof window.getPanelV4R28LiveBridgeContext === \"function\"\r\n      ) {\r\n        return window.getPanelV4R28LiveBridgeContext() || null;\r\n      }\r\n    } catch (ignore) {}\r\n\r\n    return window.GDX_PANEL_V4_R28_LIVE_BRIDGE_CONTEXT || null;\r\n  }\r\n\r\n  function concisePreviewResult() {\r\n    if (\r\n      typeof window.debugPanelV4R29R2NoraConciseSecondVoiceCopyPreview !==\r\n      \"function\"\r\n    ) {\r\n      return null;\r\n    }\r\n\r\n    try {\r\n      return (\r\n        window.debugPanelV4R29R2NoraConciseSecondVoiceCopyPreview() ||\r\n        null\r\n      );\r\n    } catch (error) {\r\n      return {\r\n        ok: false,\r\n        error: error && error.message\r\n          ? error.message\r\n          : String(error || \"R29-R2 preview error\")\r\n      };\r\n    }\r\n  }\r\n\r\n  function setupPanel() {\r\n    return (\r\n      document.querySelector(\".gdx-r11-modal-panel.is-setup\") ||\r\n      document.querySelector(\r\n        '[data-gdx-r11-modal-type=\"setup\"] .gdx-r11-modal-panel'\r\n      ) ||\r\n      document.querySelector(\r\n        '.gdx-r11-modal [data-gdx-r11-modal-type=\"setup\"]'\r\n      )\r\n    );\r\n  }\r\n\r\n  function parentModal(panel) {\r\n    return panel\r\n      ? (\r\n          panel.closest(\".gdx-r11-modal\") ||\r\n          panel.closest('[data-gdx-r11-modal=\"1\"]')\r\n        )\r\n      : null;\r\n  }\r\n\r\n  function firstDirectOrNested(parent, selector) {\r\n    return parent ? parent.querySelector(selector) : null;\r\n  }\r\n\r\n  window.debugPanelV4R29R3NoraVisibleUiMountPlacementPlanningReadonly =\r\n    function () {\r\n      var elementCountBefore = document.querySelectorAll(\"*\").length;\r\n      var productBefore = productSnapshot();\r\n\r\n      var root = document.getElementById(\"gdx-panel-led-v4-root\");\r\n      var selectionMount =\r\n        document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n      var recommendation =\r\n        document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n      var recommendationGrid = firstDirectOrNested(\r\n        recommendation,\r\n        \".gdx-panel-v4-reco-grid\"\r\n      );\r\n      var result =\r\n        document.getElementById(\"gdxPanelV4ResultPreview\");\r\n      var resultExpert = result\r\n        ? result.querySelector(\r\n            \".gdx-panel-v4-expert,[data-gdx-panel-p27],.gdx-p27-block\"\r\n          )\r\n        : null;\r\n      var liveSetup =\r\n        document.getElementById(\"gdxPanelV4P41LiveSetupRolePanel\");\r\n\r\n      var openSetupPanel = setupPanel();\r\n      var openSetupModal = parentModal(openSetupPanel);\r\n      var existingSetupNora = openSetupPanel\r\n        ? openSetupPanel.querySelector(\r\n            '[data-gdx-panel-r27-a8-r2=\"1\"]'\r\n          )\r\n        : null;\r\n\r\n      var existingRecoNora = recommendation\r\n        ? recommendation.querySelector(\r\n            '[data-gdx-panel-r29-second-voice=\"1\"],' +\r\n            '[data-gdx-panel-nora-second-voice=\"1\"]'\r\n          )\r\n        : null;\r\n\r\n      var selection = currentSelection();\r\n      var context = currentContext();\r\n      var r29r2 = concisePreviewResult();\r\n      var concise =\r\n        r29r2 &&\r\n        r29r2.diagnostics &&\r\n        r29r2.diagnostics.activeConcisePreview\r\n          ? r29r2.diagnostics.activeConcisePreview\r\n          : null;\r\n\r\n      var selectionKey = clean(\r\n        selection && selection.activeSelectionKey\r\n      );\r\n      var contextKey = clean(\r\n        context &&\r\n        context.activeSelection &&\r\n        context.activeSelection.activeSelectionKey\r\n          ? context.activeSelection.activeSelectionKey\r\n          : context && context.activeSelectionKey\r\n      );\r\n\r\n      var recommendationCandidate = {\r\n        key: \"recommendation_context_header\",\r\n        targetSelector: \"#gdxPanelV4RecommendationPreview\",\r\n        insertBeforeSelector:\r\n          \"#gdxPanelV4RecommendationPreview .gdx-panel-v4-reco-grid\",\r\n        exists: !!recommendation,\r\n        visible: visible(recommendation),\r\n        gridExists: !!recommendationGrid,\r\n        duplicateNoraExists: !!existingRecoNora,\r\n        owner: \"assets/panel-led-v4.ui.js / renderRecommendationPanel\",\r\n        intendedCopyScope:\r\n          \"Se\u00E7ili ana ama\u00E7 + alt ama\u00E7 i\u00E7in k\u0131sa NORA ikinci sesi\",\r\n        implementationRule:\r\n          \"Runtime append/observer de\u011Fil; \u00F6neri renderer kaynak \u00E7\u0131kt\u0131s\u0131nda tek blok\",\r\n        risk: \"LOW_TO_MEDIUM_RENDER_OWNERSHIP_REQUIRED\",\r\n        recommended: !!(\r\n          recommendation &&\r\n          visible(recommendation) &&\r\n          recommendationGrid &&\r\n          !existingRecoNora\r\n        )\r\n      };\r\n\r\n      var setupCandidate = {\r\n        key: \"existing_setup_modal_nora_box\",\r\n        targetSelector:\r\n          '.gdx-r11-modal-panel.is-setup [data-gdx-panel-r27-a8-r2=\"1\"]',\r\n        setupPanelOpenNow: !!openSetupPanel,\r\n        setupModalOpenNow: !!openSetupModal,\r\n        existingNoraBoxDetectedNow: !!existingSetupNora,\r\n        runtimeInfrastructureReady:\r\n          typeof window.applyPanelV4R27A8R2A6ConsolidatedSingleNoraMount ===\r\n          \"function\",\r\n        owner: \"R27-A8 consolidated setup NORA mount\",\r\n        intendedCopyScope:\r\n          \"\u00DCr\u00FCn ve setup \u00F6zelindeki NORA kurulumu\",\r\n        implementationRule:\r\n          \"\u0130kinci kutu ekleme; R29-R5'te mevcut kutunun i\u00E7eri\u011Fini kontroll\u00FC k\u0131salt/senkronize et\",\r\n        risk: \"HIGH_IF_DUPLICATED_LOW_IF_EXISTING_BOX_REUSED\",\r\n        recommendedAsPrimary: false,\r\n        reservedForR29R5: true\r\n      };\r\n\r\n      var resultCandidate = {\r\n        key: \"fp14_result_expert_area\",\r\n        targetSelector:\r\n          \"#gdxPanelV4ResultPreview .gdx-panel-v4-expert, \" +\r\n          \"#gdxPanelV4ResultPreview [data-gdx-panel-p27]\",\r\n        resultExists: !!result,\r\n        resultVisible: visible(result),\r\n        expertTargetExists: !!resultExpert,\r\n        owner: \"compare result / expert narrative\",\r\n        intendedCopyScope:\r\n          \"\u0130ki se\u00E7ili \u00FCr\u00FCn\u00FCn genel F/P sonucuna ba\u011Fl\u0131 uzman sesi\",\r\n        mismatchRisk:\r\n          \"R29 k\u0131sa NORA metni kullan\u0131m amac\u0131 state'ine ba\u011Fl\u0131; FP14 ise iki \u00FCr\u00FCn kar\u015F\u0131la\u015Ft\u0131rmas\u0131na ba\u011Fl\u0131\",\r\n        risk: \"HIGH_CONTEXT_OWNERSHIP_MISMATCH\",\r\n        recommendedAsPrimary: false\r\n      };\r\n\r\n      var openingCandidate = {\r\n        key: \"after_r28_selection_system\",\r\n        targetSelector: \"#gdxPanelV4R28SelectionSystem\",\r\n        exists: !!selectionMount,\r\n        visible: visible(selectionMount),\r\n        owner: \"R28 selection opening layer\",\r\n        intendedCopyScope:\r\n          \"Se\u00E7imden hemen sonra k\u0131sa NORA y\u00F6nlendirmesi\",\r\n        roadmapConflict:\r\n          \"R30 a\u00E7\u0131l\u0131\u015F ekran\u0131 CTA/sadele\u015Ftirme faz\u0131na erken m\u00FCdahale riski\",\r\n        risk: \"MEDIUM_OPENING_DENSITY_AND_R30_SCOPE_CONFLICT\",\r\n        recommendedAsPrimary: false\r\n      };\r\n\r\n      var placementPlan = {\r\n        primary: {\r\n          key: \"recommendation_context_header\",\r\n          reason:\r\n            \"NORA metni se\u00E7ili kullan\u0131m amac\u0131 ve \u00F6neri ba\u011Flam\u0131na aittir. \" +\r\n            \"\u00D6neri alan\u0131 g\u00F6r\u00FCn\u00FCr, \u00FC\u00E7 kart\u0131n kaynak sahibidir ve FP14/commerce/share ba\u011Flam\u0131ndan ayr\u0131d\u0131r.\",\r\n          sourceOwner:\r\n            \"assets/panel-led-v4.ui.js / renderRecommendationPanel\",\r\n          mountContract:\r\n            \"\u00D6neri ba\u015Fl\u0131\u011F\u0131/ba\u011Flam alan\u0131ndan sonra, .gdx-panel-v4-reco-grid \u00F6ncesinde tek blok\",\r\n          updateContract:\r\n            \"R28 live bridge context de\u011Fi\u015Fti\u011Finde mevcut \u00F6neri renderer ak\u0131\u015F\u0131yla yeniden \u00FCret\",\r\n          forbidden:\r\n            [\r\n              \"MutationObserver\",\r\n              \"document-level click listener\",\r\n              \"setInterval\",\r\n              \"ayr\u0131 ikinci NORA kutusu\",\r\n              \"innerHTML ile sonradan t\u00FCm \u00F6neri alan\u0131n\u0131 rewrite\",\r\n              \"score/ranking/product/price/cart/share mutation\"\r\n            ]\r\n        },\r\n        secondary: {\r\n          key: \"existing_setup_modal_nora_box\",\r\n          phase: \"R29-R5\",\r\n          rule:\r\n            \"Yeni kutu ekleme; mevcut R27-A8 kutusunu kullan ve k\u0131sa kopyay\u0131 setup ba\u011Flam\u0131na g\u00F6re senkronize et.\"\r\n        },\r\n        rejectedAsFirstMount: [\r\n          {\r\n            key: \"fp14_result_expert_area\",\r\n            reason:\r\n              \"Kar\u015F\u0131la\u015Ft\u0131rma sonucu ile kullan\u0131m amac\u0131 state'i farkl\u0131 kaynak sahipli\u011Fine sahiptir.\"\r\n          },\r\n          {\r\n            key: \"after_r28_selection_system\",\r\n            reason:\r\n              \"A\u00E7\u0131l\u0131\u015F yo\u011Funlu\u011Fu ve R30 kapsam\u0131yla \u00E7ak\u0131\u015F\u0131r.\"\r\n          }\r\n        ]\r\n      };\r\n\r\n      var elementCountAfter = document.querySelectorAll(\"*\").length;\r\n      var productAfter = productSnapshot();\r\n\r\n      var checks = {\r\n        auditRan: true,\r\n        productPoolReady: products().length === 19,\r\n        selectionStateReadable: !!selectionKey,\r\n        publicLiveBridgeContextReady: !!context,\r\n        contextMatchesCurrentSelection:\r\n          !!selectionKey && selectionKey === contextKey,\r\n        r29R2ConcisePreviewReady: !!concise,\r\n\r\n        r28SelectionMountDetected: !!selectionMount,\r\n        recommendationAreaDetected: !!recommendation,\r\n        recommendationAreaVisible: visible(recommendation),\r\n        recommendationGridDetected: !!recommendationGrid,\r\n\r\n        primaryRecommendationTargetReady:\r\n          recommendationCandidate.recommended === true,\r\n        noExistingRecommendationNoraDuplicate:\r\n          recommendationCandidate.duplicateNoraExists === false,\r\n\r\n        setupExistingNoraInfrastructureReady:\r\n          setupCandidate.runtimeInfrastructureReady === true,\r\n        setupSecondBoxMustNotBeAdded: true,\r\n        setupIntegrationDeferredToR29R5: true,\r\n\r\n        fp14ResultNotPrimaryTarget: true,\r\n        openingSelectionNotPrimaryTarget: true,\r\n        sourceLevelRendererIntegrationRequired: true,\r\n        noRuntimeObserverNeeded: true,\r\n        noDocumentClickListenerNeeded: true,\r\n\r\n        noDomMutationByThisAudit:\r\n          elementCountBefore === elementCountAfter,\r\n        noProductOrderMutationByThisAudit:\r\n          productBefore === productAfter,\r\n        noScoreMutationByThisAudit: true,\r\n        noRankingMutationByThisAudit: true,\r\n        noProductMutationByThisAudit: true,\r\n        noPriceFormatterTouchByThisAudit: true,\r\n        noCartMutationByThisAudit: true,\r\n        noSharePngQrMutationByThisAudit: true\r\n      };\r\n\r\n      var failed = Object.keys(checks).filter(function (key) {\r\n        return checks[key] !== true;\r\n      });\r\n      var ok = failed.length === 0;\r\n\r\n      var resultPayload = {\r\n        phase: PHASE,\r\n        version: VERSION,\r\n        ok: ok,\r\n        checks: checks,\r\n        diagnostics: {\r\n          currentSelection: {\r\n            selectionKey: selectionKey,\r\n            contextKey: contextKey,\r\n            purposeTitle: clean(\r\n              selection && selection.activePurposeTitle\r\n            ),\r\n            subPurposeTitle: clean(\r\n              selection && selection.activeSubPurposeTitle\r\n            )\r\n          },\r\n          concisePreview: concise,\r\n          candidates: {\r\n            recommendation: recommendationCandidate,\r\n            setupModal: setupCandidate,\r\n            fp14Result: resultCandidate,\r\n            openingSelection: openingCandidate\r\n          },\r\n          existingAreas: {\r\n            root: {\r\n              exists: !!root,\r\n              rect: rectPack(root)\r\n            },\r\n            selection: {\r\n              exists: !!selectionMount,\r\n              visible: visible(selectionMount),\r\n              rect: rectPack(selectionMount)\r\n            },\r\n            recommendation: {\r\n              exists: !!recommendation,\r\n              visible: visible(recommendation),\r\n              rect: rectPack(recommendation),\r\n              gridRect: rectPack(recommendationGrid)\r\n            },\r\n            result: {\r\n              exists: !!result,\r\n              visible: visible(result),\r\n              rect: rectPack(result)\r\n            },\r\n            liveSetup: {\r\n              exists: !!liveSetup,\r\n              visible: visible(liveSetup),\r\n              rect: rectPack(liveSetup)\r\n            },\r\n            setupModal: {\r\n              open: !!openSetupModal,\r\n              setupPanelDetected: !!openSetupPanel,\r\n              existingNoraDetected: !!existingSetupNora,\r\n              modalRect: rectPack(openSetupModal),\r\n              panelRect: rectPack(openSetupPanel),\r\n              noraRect: rectPack(existingSetupNora)\r\n            }\r\n          },\r\n          placementPlan: placementPlan,\r\n          elementCountBefore: elementCountBefore,\r\n          elementCountAfter: elementCountAfter,\r\n          failed: failed\r\n        },\r\n        interpretation: {\r\n          decision: ok\r\n            ? \"R29-R3 TECHNICAL PASS. \u0130lk g\u00F6r\u00FCn\u00FCr NORA mount i\u00E7in g\u00FCvenli hedef \u00F6neri alan\u0131ndaki context header'd\u0131r. Setup modal\u0131nda ikinci kutu eklenmeyecek; mevcut R27-A8 kutusu R29-R5'te yeniden kullan\u0131lacakt\u0131r.\"\r\n            : \"R29-R3 HOLD. \u00D6neri mount, context, concise preview veya no-touch kontrolleri incelenmeli.\",\r\n          next: ok\r\n            ? \"R29-R4 GUARDED NORA RECOMMENDATION CONTEXT HEADER VISIBLE UI APPLICATION PLANNING\"\r\n            : \"HOLD\"\r\n        },\r\n        sealCandidate: ok\r\n          ? \"PANEL-V4-R29-R3-NORA-VISIBLE-UI-MOUNT-PLACEMENT-PLANNING-TECHNICAL-PASS-CANDIDATE\"\r\n          : \"HOLD\"\r\n      };\r\n\r\n      console.log(\r\n        \"R29-R3 NORA VISIBLE UI MOUNT PLACEMENT PLANNING:\",\r\n        resultPayload\r\n      );\r\n\r\n      return resultPayload;\r\n    };\r\n})(window, document);\r\n\r\n/* =========================================================\r\nPANEL LED V4 \u2014 R30A-R4-R2-P2\r\nRECOMMENDATION CARD COMMERCE ROW\r\nPERSISTENT APPEND-ONLY SOURCE PATCH\r\n\r\nFILE:\r\nassets/panel-led-v4.ui.js\r\n\r\nLOCATION:\r\nAppend this entire block to the VERY END of the file.\r\n\r\nDO NOT:\r\n- Delete existing source\r\n- Replace the file\r\n- Merge this inside another IIFE\r\n- Change price text or formatter\r\n- Recreate cart buttons\r\n- Change variant IDs\r\n- Add listeners, observers or timers\r\n\r\nVISUAL CONTRACT:\r\n- Existing upper price is visually placed below Setup.\r\n- Existing price stays left.\r\n- Existing direct-add cart button stays right.\r\n- Existing Setup button remains full width above them.\r\n========================================================= */\r\n(function () {\r\n  \"use strict\";\r\n\r\n  var PHASE =\r\n    \"PANEL-V4-R30A-R4-R2-P2-RECOMMENDATION-CARD-COMMERCE-ROW-PERSISTENT\";\r\n\r\n  var VERSION =\r\n    \"PANEL-V4-R30A-R4-R2-P2-APPEND-ONLY-CSS-GRID-V1\";\r\n\r\n  var STYLE_ID =\r\n    \"gdx-panel-v4-r30a-r4-r2-p2-commerce-row\";\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value)\r\n      .replace(/\\u00a0/g, \" \")\r\n      .replace(/\\u202f/g, \" \")\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function qsa(selector, root) {\r\n    try {\r\n      return Array.prototype.slice.call(\r\n        (root || document).querySelectorAll(selector)\r\n      );\r\n    } catch (ignore) {\r\n      return [];\r\n    }\r\n  }\r\n\r\n  function visible(node) {\r\n    if (!node || node.hidden) return false;\r\n\r\n    var style = window.getComputedStyle\r\n      ? window.getComputedStyle(node)\r\n      : null;\r\n\r\n    var rect = node.getBoundingClientRect\r\n      ? node.getBoundingClientRect()\r\n      : null;\r\n\r\n    if (\r\n      style &&\r\n      (\r\n        style.display === \"none\" ||\r\n        style.visibility === \"hidden\" ||\r\n        Number(style.opacity) === 0\r\n      )\r\n    ) {\r\n      return false;\r\n    }\r\n\r\n    return !rect ||\r\n      (\r\n        rect.width > 2 &&\r\n        rect.height > 2\r\n      );\r\n  }\r\n\r\n  function recommendationCards() {\r\n    return qsa(\r\n      \"#gdxPanelV4RecommendationPreview \" +\r\n      \".gdx-r11-card[data-gdx-r11-card]\"\r\n    ).filter(visible).slice(0, 3);\r\n  }\r\n\r\n  function ensureStyle() {\r\n    var existing =\r\n      document.getElementById(STYLE_ID);\r\n\r\n    if (existing) {\r\n      return existing;\r\n    }\r\n\r\n    var style =\r\n      document.createElement(\"style\");\r\n\r\n    style.id =\r\n      STYLE_ID;\r\n\r\n    style.setAttribute(\r\n      \"data-gdx-panel-r30a-r4-r2-p2\",\r\n      \"1\"\r\n    );\r\n\r\n    style.textContent = `\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]{\r\n  display:grid !important;\r\n  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;\r\n  grid-template-areas:\r\n    \"cardtop cardtop\"\r\n    \"title title\"\r\n    \"tags tags\"\r\n    \"middle middle\"\r\n    \"primary reason\"\r\n    \"setup setup\"\r\n    \"price cart\" !important;\r\n  column-gap:10px !important;\r\n  align-content:start !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-card-top{\r\n  grid-area:cardtop !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> h4{\r\n  grid-area:title !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-tags{\r\n  grid-area:tags !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-mid{\r\n  grid-area:middle !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-actions{\r\n  display:contents !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-actions\r\n> .gdx-r11-btn.primary{\r\n  grid-area:primary !important;\r\n  width:100% !important;\r\n  margin-top:18px !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-actions\r\n> .gdx-r11-btn.ghost{\r\n  grid-area:reason !important;\r\n  width:100% !important;\r\n  margin-top:18px !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-actions\r\n> .gdx-r11-btn.setup{\r\n  grid-area:setup !important;\r\n  width:100% !important;\r\n  margin-top:10px !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-price{\r\n  grid-area:price !important;\r\n  display:flex !important;\r\n  align-items:center !important;\r\n  justify-content:flex-start !important;\r\n  min-width:0 !important;\r\n  min-height:46px !important;\r\n  margin:14px 0 0 !important;\r\n  padding:0 14px !important;\r\n  border:1px solid rgba(250,204,21,.35) !important;\r\n  border-radius:16px !important;\r\n  background:rgba(250,204,21,.07) !important;\r\n  color:#f8fafc !important;\r\n  font-size:17px !important;\r\n  font-weight:950 !important;\r\n  line-height:1.2 !important;\r\n  white-space:normal !important;\r\n  overflow-wrap:anywhere !important;\r\n  box-sizing:border-box !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-actions\r\n> [data-gdx-panel-r17-r2-direct-add=\"1\"]{\r\n  grid-area:cart !important;\r\n  width:100% !important;\r\n  min-width:0 !important;\r\n  min-height:46px !important;\r\n  margin:14px 0 0 !important;\r\n  padding:12px 14px !important;\r\n  align-self:stretch !important;\r\n  justify-self:stretch !important;\r\n  flex:none !important;\r\n  box-sizing:border-box !important;\r\n}\r\n\r\n@media(max-width:520px){\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]{\r\n    grid-template-columns:minmax(112px,.88fr) minmax(142px,1.12fr) !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-price{\r\n    padding:0 11px !important;\r\n    font-size:15px !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-actions\r\n  > [data-gdx-panel-r17-r2-direct-add=\"1\"]{\r\n    padding:11px 10px !important;\r\n    font-size:14px !important;\r\n  }\r\n}\r\n`;\r\n\r\n    document.head.appendChild(style);\r\n\r\n    return style;\r\n  }\r\n\r\n  function audit() {\r\n    var cards =\r\n      recommendationCards();\r\n\r\n    var rows =\r\n      cards.map(function (card, index) {\r\n        var price =\r\n          card.querySelector(\r\n            \":scope > .gdx-r11-price\"\r\n          );\r\n\r\n        var actions =\r\n          card.querySelector(\r\n            \":scope > .gdx-r11-actions\"\r\n          );\r\n\r\n        var cart =\r\n          actions &&\r\n          actions.querySelector(\r\n            ':scope > [data-gdx-panel-r17-r2-direct-add=\"1\"]'\r\n          );\r\n\r\n        var setup =\r\n          actions &&\r\n          actions.querySelector(\r\n            ':scope > [data-gdx-r11-action=\"setup\"]'\r\n          );\r\n\r\n        var priceRect =\r\n          price &&\r\n          price.getBoundingClientRect();\r\n\r\n        var cartRect =\r\n          cart &&\r\n          cart.getBoundingClientRect();\r\n\r\n        var setupRect =\r\n          setup &&\r\n          setup.getBoundingClientRect();\r\n\r\n        return {\r\n          index: index + 1,\r\n          card: card,\r\n          price: price,\r\n          cart: cart,\r\n          setup: setup,\r\n          priceText: clean(\r\n            price && price.textContent\r\n          ),\r\n          cartText: clean(\r\n            cart && cart.textContent\r\n          ),\r\n          variantId: clean(\r\n            cart &&\r\n            cart.getAttribute(\r\n              \"data-gdx-panel-variant-id\"\r\n            )\r\n          ),\r\n          productKey: clean(\r\n            cart &&\r\n            cart.getAttribute(\r\n              \"data-gdx-panel-product-key\"\r\n            )\r\n          ),\r\n          sameRow:\r\n            !!(\r\n              priceRect &&\r\n              cartRect &&\r\n              Math.abs(\r\n                priceRect.top -\r\n                cartRect.top\r\n              ) <= 3\r\n            ),\r\n          belowSetup:\r\n            !!(\r\n              priceRect &&\r\n              cartRect &&\r\n              setupRect &&\r\n              priceRect.top >=\r\n                setupRect.bottom + 8 &&\r\n              cartRect.top >=\r\n                setupRect.bottom + 8\r\n            ),\r\n          priceLeftOfCart:\r\n            !!(\r\n              priceRect &&\r\n              cartRect &&\r\n              priceRect.left <\r\n                cartRect.left\r\n            )\r\n        };\r\n      });\r\n\r\n    var purposeButtons =\r\n      qsa(\r\n        \"#gdxPanelV4R28SelectionSystem \" +\r\n        \"[data-gdx-panel-r28-purpose]\"\r\n      );\r\n\r\n    var subPurposeButtons =\r\n      qsa(\r\n        \"#gdxPanelV4R28SelectionSystem \" +\r\n        \"[data-gdx-panel-r28-subpurpose]\"\r\n      );\r\n\r\n    var noraContext =\r\n      document.querySelector(\r\n        \"#gdxPanelV4RecommendationPreview \" +\r\n        '[data-gdx-panel-r29-nora-context=\"1\"]'\r\n      );\r\n\r\n    var styleOwners =\r\n      qsa(\"#\" + STYLE_ID);\r\n\r\n    var checks = {\r\n      r30AR4SourceReady:\r\n        window.GDX_PANEL_V4_R30A_R4_READY ===\r\n          true,\r\n\r\n      persistentPatchReady:\r\n        window.GDX_PANEL_V4_R30A_R4_R2_P2_READY ===\r\n          true,\r\n\r\n      exactlyOneStyleOwner:\r\n        styleOwners.length === 1,\r\n\r\n      recommendationCardCount3:\r\n        cards.length === 3,\r\n\r\n      priceNodeCount3:\r\n        rows.filter(function (row) {\r\n          return !!row.price;\r\n        }).length === 3,\r\n\r\n      exactlyOnePricePerCard:\r\n        cards.every(function (card) {\r\n          return card.querySelectorAll(\r\n            \":scope > .gdx-r11-price\"\r\n          ).length === 1;\r\n        }),\r\n\r\n      directCartButtonCount3:\r\n        rows.filter(function (row) {\r\n          return !!row.cart;\r\n        }).length === 3,\r\n\r\n      exactlyOneDirectCartPerCard:\r\n        cards.every(function (card) {\r\n          return card.querySelectorAll(\r\n            ':scope > .gdx-r11-actions ' +\r\n            '> [data-gdx-panel-r17-r2-direct-add=\"1\"]'\r\n          ).length === 1;\r\n        }),\r\n\r\n      setupButtonCount3:\r\n        rows.filter(function (row) {\r\n          return !!row.setup;\r\n        }).length === 3,\r\n\r\n      allPricesPresent:\r\n        rows.every(function (row) {\r\n          return !!row.priceText;\r\n        }),\r\n\r\n      allVariantIdsPresent:\r\n        rows.every(function (row) {\r\n          return !!row.variantId;\r\n        }),\r\n\r\n      allProductKeysPresent:\r\n        rows.every(function (row) {\r\n          return !!row.productKey;\r\n        }),\r\n\r\n      priceAndCartSameRow:\r\n        rows.every(function (row) {\r\n          return row.sameRow;\r\n        }),\r\n\r\n      commerceRowBelowSetup:\r\n        rows.every(function (row) {\r\n          return row.belowSetup;\r\n        }),\r\n\r\n      priceLeftCartRight:\r\n        rows.every(function (row) {\r\n          return row.priceLeftOfCart;\r\n        }),\r\n\r\n      mainPurposeButtonCount8:\r\n        purposeButtons.length === 8,\r\n\r\n      currentSubPurposeButtonCount3:\r\n        subPurposeButtons.length === 3,\r\n\r\n      recommendationNoraContextPresent:\r\n        !!noraContext,\r\n\r\n      noExpertPersonaApplied:\r\n        qsa(\r\n          '[data-gdx-panel-r29v-persona],' +\r\n          '[data-gdx-panel-nora-persona],' +\r\n          '[data-gdx-panel-nora-visual-persona]'\r\n        ).length === 0,\r\n\r\n      cartLogicOwnerPreserved:\r\n        rows.every(function (row) {\r\n          return (\r\n            row.cart &&\r\n            row.cart.getAttribute(\r\n              \"data-gdx-panel-r17-r2-direct-add\"\r\n            ) === \"1\"\r\n          );\r\n        }),\r\n\r\n      noNewListenerByPatch:\r\n        true,\r\n\r\n      noObserverByPatch:\r\n        true,\r\n\r\n      noTimerByPatch:\r\n        true,\r\n\r\n      noScoreMutationByPatch:\r\n        true,\r\n\r\n      noRankingMutationByPatch:\r\n        true,\r\n\r\n      noProductMutationByPatch:\r\n        true,\r\n\r\n      noCartWriteByAudit:\r\n        true,\r\n\r\n      noSetupMutationByPatch:\r\n        true,\r\n\r\n      noNoraTextMutationByPatch:\r\n        true,\r\n\r\n      noSharePngQrMutationByPatch:\r\n        true\r\n    };\r\n\r\n    var failed =\r\n      Object.keys(checks)\r\n        .filter(function (key) {\r\n          return checks[key] !== true;\r\n        });\r\n\r\n    return {\r\n      phase:\r\n        PHASE,\r\n\r\n      version:\r\n        VERSION,\r\n\r\n      ok:\r\n        failed.length === 0,\r\n\r\n      checks:\r\n        checks,\r\n\r\n      diagnostics: {\r\n        failed:\r\n          failed,\r\n\r\n        cards:\r\n          rows.map(function (row) {\r\n            return {\r\n              index: row.index,\r\n              priceText: row.priceText,\r\n              cartText: row.cartText,\r\n              variantId: row.variantId,\r\n              productKey: row.productKey,\r\n              sameRow: row.sameRow,\r\n              belowSetup: row.belowSetup,\r\n              priceLeftOfCart:\r\n                row.priceLeftOfCart\r\n            };\r\n          }),\r\n\r\n        styleOwnerCount:\r\n          styleOwners.length,\r\n\r\n        purposeButtonCount:\r\n          purposeButtons.length,\r\n\r\n        subPurposeButtonCount:\r\n          subPurposeButtons.length\r\n      },\r\n\r\n      interpretation: {\r\n        decision:\r\n          failed.length === 0\r\n            ? \"R30A-R4-R2-P2 PASS. The persistent append-only CSS owner places the existing price left and existing direct-add cart button right below Setup across all three cards, while preserving 8\u00D73 and NORA context.\"\r\n            : \"R30A-R4-R2-P2 HOLD. Review the failed geometry or source-readiness checks.\",\r\n\r\n        next:\r\n          failed.length === 0\r\n            ? \"Manual desktop/mobile/cart verification, then final seal.\"\r\n            : \"HOLD\"\r\n      },\r\n\r\n      sealCandidate:\r\n        failed.length === 0\r\n          ? \"PANEL-V4-R30A-R4-R2-P2-COMMERCE-ROW-PERSISTENT-APPEND-PASS-CANDIDATE\"\r\n          : \"HOLD\"\r\n    };\r\n  }\r\n\r\n  ensureStyle();\r\n\r\n  window.GDX_PANEL_V4_R30A_R4_R2_P2_READY =\r\n    true;\r\n\r\n  window.GDX_PANEL_V4_R30A_R4_R2_P2_CONTRACT = {\r\n    phase: PHASE,\r\n    version: VERSION,\r\n    styleId: STYLE_ID,\r\n    mode: \"append_only_css_grid\",\r\n    priceOwner: \"existing_gdx_r11_price\",\r\n    cartOwner: \"existing_r17_r2_direct_add\",\r\n    maximumStyleOwners: 1,\r\n    listenersAdded: 0,\r\n    observersAdded: 0,\r\n    timersAdded: 0,\r\n    scoreMutation: false,\r\n    rankingMutation: false,\r\n    productMutation: false,\r\n    cartLogicMutation: false,\r\n    setupMutation: false,\r\n    noraMutation: false,\r\n    shareMutation: false\r\n  };\r\n\r\n  window\r\n    .debugPanelV4R30AR4R2P2CommerceRowPersistent =\r\n      audit;\r\n\r\n  window\r\n    .removePanelV4R30AR4R2P2CommerceRowStyle =\r\n      function () {\r\n        var node =\r\n          document.getElementById(\r\n            STYLE_ID\r\n          );\r\n\r\n        if (node) {\r\n          node.remove();\r\n        }\r\n\r\n        return {\r\n          phase: PHASE,\r\n          removed:\r\n            !document.getElementById(\r\n              STYLE_ID\r\n            ),\r\n          note:\r\n            \"Source patch remains in the file and will recreate the style on the next page load.\"\r\n        };\r\n      };\r\n})()\r\n\r\n/* =========================================================\r\nPANEL LED V4 \u2014 R30A-R4-R2-R1-P2\r\nCOMPACT PRODUCT TITLE PERSISTENT MICRO PATCH\r\n\r\nFILE:\r\nassets/panel-led-v4.ui.js\r\n\r\nACTION:\r\nAPPEND ONLY \u2014 paste at the absolute end of the file.\r\n\r\nPURPOSE:\r\n- Reduce unnecessary product-title height.\r\n- Reduce product-title font size.\r\n- Limit title to maximum two lines.\r\n- Keep current commerce-row layout.\r\n\r\nNO:\r\n- listener\r\n- observer\r\n- timer\r\n- DOM relocation\r\n- score/ranking/product/cart/setup/NORA/share mutation\r\n========================================================= */\r\n;(function () {\r\n  \"use strict\";\r\n\r\n  var STYLE_ID =\r\n    \"gdx-panel-v4-r30a-r4-r2-r1-p2-compact-title\";\r\n\r\n  if (document.getElementById(STYLE_ID)) {\r\n    window.GDX_PANEL_V4_R30A_R4_R2_R1_P2_READY = true;\r\n    return;\r\n  }\r\n\r\n  var style =\r\n    document.createElement(\"style\");\r\n\r\n  style.id =\r\n    STYLE_ID;\r\n\r\n  style.setAttribute(\r\n    \"data-gdx-panel-r30a-r4-r2-r1-p2\",\r\n    \"1\"\r\n  );\r\n\r\n  style.textContent = `\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> h4{\r\n  min-height:0 !important;\r\n  max-height:48px !important;\r\n  margin:4px 0 10px !important;\r\n  padding:0 !important;\r\n  font-size:20px !important;\r\n  line-height:1.16 !important;\r\n  font-weight:900 !important;\r\n  letter-spacing:-.025em !important;\r\n  display:-webkit-box !important;\r\n  -webkit-box-orient:vertical !important;\r\n  -webkit-line-clamp:2 !important;\r\n  overflow:hidden !important;\r\n  text-overflow:ellipsis !important;\r\n  align-self:start !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-tags{\r\n  margin-top:0 !important;\r\n  margin-bottom:14px !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-price{\r\n  white-space:nowrap !important;\r\n  overflow-wrap:normal !important;\r\n  font-size:18px !important;\r\n  letter-spacing:-.015em !important;\r\n}\r\n\r\n@media(max-width:520px){\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > h4{\r\n    max-height:44px !important;\r\n    margin:3px 0 9px !important;\r\n    font-size:18px !important;\r\n    line-height:1.18 !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-price{\r\n    font-size:15px !important;\r\n  }\r\n}\r\n`;\r\n\r\n  document.head.appendChild(style);\r\n\r\n  window.GDX_PANEL_V4_R30A_R4_R2_R1_P2_READY = true;\r\n})()\r\n\r\n/* =========================================================\r\nPANEL LED V4 \u2014 R30A-R4-R2-R1-R3\r\nUPPER SPACE / COMPACT GRID TRACK CORRECTION\r\nPERSISTENT APPEND-ONLY MICRO PATCH\r\n\r\nFILE:\r\nassets/panel-led-v4.ui.js\r\n\r\nACTION:\r\nAPPEND ONLY \u2014 paste this entire block at the absolute end.\r\n\r\nROOT CAUSE FIXED:\r\n- R21 compact-card style applies gap:10px!important.\r\n- After the recommendation card became CSS Grid, that gap was\r\n  distributed between every card row.\r\n- The previous title patch changed only h4/tags and did not reset\r\n  grid row gaps or define which row absorbs equal-height free space.\r\n- Base R11 also keeps card-top margin-bottom and tags min-height.\r\n\r\nTHIS PATCH:\r\n- Removes the old compact-title style owner from the runtime.\r\n- Resets recommendation-card grid gap.\r\n- Forces compact max-content rows at the top.\r\n- Sends equal-height free space into the middle product/score row.\r\n- Compacts card-top, title and tag spacing.\r\n- Preserves the price-left / cart-right commerce row.\r\n\r\nNO:\r\n- full replacement\r\n- listener\r\n- observer\r\n- timer\r\n- DOM relocation\r\n- score/ranking/product/cart/setup/NORA/share mutation\r\n========================================================= */\r\n;(function () {\r\n  \"use strict\";\r\n\r\n  var OLD_STYLE_ID =\r\n    \"gdx-panel-v4-r30a-r4-r2-r1-p2-compact-title\";\r\n\r\n  var STYLE_ID =\r\n    \"gdx-panel-v4-r30a-r4-r2-r1-r3-upper-space-compact-grid\";\r\n\r\n  var oldStyle =\r\n    document.getElementById(OLD_STYLE_ID);\r\n\r\n  if (oldStyle) {\r\n    oldStyle.remove();\r\n  }\r\n\r\n  if (document.getElementById(STYLE_ID)) {\r\n    window.GDX_PANEL_V4_R30A_R4_R2_R1_R3_READY = true;\r\n    return;\r\n  }\r\n\r\n  var style =\r\n    document.createElement(\"style\");\r\n\r\n  style.id =\r\n    STYLE_ID;\r\n\r\n  style.setAttribute(\r\n    \"data-gdx-panel-r30a-r4-r2-r1-r3\",\r\n    \"1\"\r\n  );\r\n\r\n  style.textContent = `\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]{\r\n  gap:0 10px !important;\r\n  row-gap:0 !important;\r\n  grid-template-rows:\r\n    max-content\r\n    max-content\r\n    max-content\r\n    minmax(0,1fr)\r\n    max-content\r\n    max-content\r\n    max-content !important;\r\n  align-content:stretch !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-card-top{\r\n  margin-bottom:4px !important;\r\n  align-self:start !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> h4{\r\n  min-height:0 !important;\r\n  height:auto !important;\r\n  max-height:42px !important;\r\n  margin:0 0 6px !important;\r\n  padding:0 !important;\r\n  font-size:18px !important;\r\n  line-height:1.18 !important;\r\n  font-weight:900 !important;\r\n  letter-spacing:-.025em !important;\r\n  display:-webkit-box !important;\r\n  -webkit-box-orient:vertical !important;\r\n  -webkit-line-clamp:2 !important;\r\n  overflow:hidden !important;\r\n  text-overflow:ellipsis !important;\r\n  align-self:start !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-tags{\r\n  min-height:0 !important;\r\n  margin:0 0 10px !important;\r\n  align-self:start !important;\r\n}\r\n\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-mid{\r\n  min-height:0 !important;\r\n  align-self:stretch !important;\r\n}\r\n\r\n@media(max-width:520px){\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-card-top{\r\n    margin-bottom:3px !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > h4{\r\n    max-height:40px !important;\r\n    margin:0 0 5px !important;\r\n    font-size:17px !important;\r\n    line-height:1.18 !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-tags{\r\n    margin-bottom:9px !important;\r\n  }\r\n}\r\n`;\r\n\r\n  document.head.appendChild(style);\r\n\r\n  window.GDX_PANEL_V4_R30A_R4_R2_R1_R3_READY =\r\n    true;\r\n\r\n  window.GDX_PANEL_V4_R30A_R4_R2_R1_R3_CONTRACT = {\r\n    mode: \"append_only_css_grid_track_correction\",\r\n    oldStyleRemoved: OLD_STYLE_ID,\r\n    styleId: STYLE_ID,\r\n    cardRowGap: 0,\r\n    compactTitleDesktopPx: 18,\r\n    compactTitleMobilePx: 17,\r\n    titleMaxLines: 2,\r\n    freeSpaceOwner: \"middle_product_score_row\",\r\n    priceCartCommerceRowPreserved: true,\r\n    listenersAdded: 0,\r\n    observersAdded: 0,\r\n    timersAdded: 0,\r\n    scoreMutation: false,\r\n    rankingMutation: false,\r\n    productMutation: false,\r\n    cartMutation: false,\r\n    setupMutation: false,\r\n    noraMutation: false,\r\n    shareMutation: false\r\n  };\r\n})()\r\n\r\n/* =========================================================\r\nPANEL LED V4 \u2014 R30A-R4-R2-R1-R4\r\nFINAL CONSOLIDATED TITLE COMPACTION + PRICE CENTERING\r\nPERSISTENT APPEND-ONLY PATCH\r\n\r\nFILE:\r\nassets/panel-led-v4.ui.js\r\n\r\nACTION:\r\nAPPEND ONLY \u2014 paste at the absolute end of the file.\r\n\r\nCONFIRMED DIAGNOSTIC:\r\n- P2 commerce-row style is active.\r\n- Old compact-title style is not active.\r\n- R3 upper-space style is not active.\r\n\r\nTHIS PATCH:\r\n1. Removes any stale compact-title / R3 style owner if present.\r\n2. Creates one final style owner.\r\n3. Removes title min-height / empty block.\r\n4. Compacts title, tags and upper spacing.\r\n5. Centers the price horizontally and vertically.\r\n6. Matches price box height with Sepete Ekle.\r\n7. Preserves the existing commerce row and cart logic.\r\n\r\nNO:\r\n- full replacement\r\n- DOM relocation\r\n- listener\r\n- observer\r\n- timer\r\n- score/ranking/product/cart/setup/NORA/share mutation\r\n========================================================= */\r\n;(function () {\r\n  \"use strict\";\r\n\r\n  var OLD_STYLE_IDS = [\r\n    \"gdx-panel-v4-r30a-r4-r2-r1-p2-compact-title\",\r\n    \"gdx-panel-v4-r30a-r4-r2-r1-r3-upper-space-compact-grid\"\r\n  ];\r\n\r\n  var STYLE_ID =\r\n    \"gdx-panel-v4-r30a-r4-r2-r1-r4-final-title-price-alignment\";\r\n\r\n  function removeOldOwners() {\r\n    OLD_STYLE_IDS.forEach(function (id) {\r\n      var node = document.getElementById(id);\r\n      if (node) node.remove();\r\n    });\r\n  }\r\n\r\n  function inject() {\r\n    removeOldOwners();\r\n\r\n    if (document.getElementById(STYLE_ID)) {\r\n      window.GDX_PANEL_V4_R30A_R4_R2_R1_R4_READY = true;\r\n      return;\r\n    }\r\n\r\n    var style =\r\n      document.createElement(\"style\");\r\n\r\n    style.id =\r\n      STYLE_ID;\r\n\r\n    style.setAttribute(\r\n      \"data-gdx-panel-r30a-r4-r2-r1-r4\",\r\n      \"1\"\r\n    );\r\n\r\n    style.textContent = `\r\n/* Card grid: compact upper rows, existing commerce row preserved */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]{\r\n  row-gap:0 !important;\r\n  gap:0 10px !important;\r\n  grid-template-rows:\r\n    max-content\r\n    max-content\r\n    max-content\r\n    minmax(0,1fr)\r\n    max-content\r\n    max-content\r\n    max-content !important;\r\n  align-content:stretch !important;\r\n}\r\n\r\n/* Rank / brand / role row */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-card-top{\r\n  margin:0 0 6px !important;\r\n  padding:0 !important;\r\n  min-height:0 !important;\r\n  align-self:start !important;\r\n}\r\n\r\n/* Product title */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> h4{\r\n  min-height:0 !important;\r\n  height:auto !important;\r\n  max-height:44px !important;\r\n  margin:0 0 8px !important;\r\n  padding:0 !important;\r\n  font-size:18px !important;\r\n  line-height:1.18 !important;\r\n  font-weight:900 !important;\r\n  letter-spacing:-.025em !important;\r\n  display:-webkit-box !important;\r\n  -webkit-box-orient:vertical !important;\r\n  -webkit-line-clamp:2 !important;\r\n  overflow:hidden !important;\r\n  text-overflow:ellipsis !important;\r\n  align-self:start !important;\r\n}\r\n\r\n/* Product tags */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-tags{\r\n  min-height:0 !important;\r\n  height:auto !important;\r\n  margin:0 0 12px !important;\r\n  padding:0 !important;\r\n  align-self:start !important;\r\n}\r\n\r\n/* Flexible equal-height space belongs to image/score area */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-mid{\r\n  min-height:0 !important;\r\n  align-self:stretch !important;\r\n}\r\n\r\n/* Price and cart: identical height and centered content */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-price,\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-actions\r\n> [data-gdx-panel-r17-r2-direct-add=\"1\"]{\r\n  height:52px !important;\r\n  min-height:52px !important;\r\n  max-height:52px !important;\r\n  box-sizing:border-box !important;\r\n}\r\n\r\n/* Price center alignment */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-price{\r\n  display:flex !important;\r\n  align-items:center !important;\r\n  justify-content:center !important;\r\n  text-align:center !important;\r\n  margin:14px 0 0 !important;\r\n  padding:0 12px !important;\r\n  white-space:nowrap !important;\r\n  overflow:hidden !important;\r\n  text-overflow:ellipsis !important;\r\n  font-size:18px !important;\r\n  line-height:1 !important;\r\n  font-weight:950 !important;\r\n}\r\n\r\n/* Cart button center alignment */\r\n#gdxPanelV4RecommendationPreview\r\n.gdx-r11-card[data-gdx-r11-card]\r\n> .gdx-r11-actions\r\n> [data-gdx-panel-r17-r2-direct-add=\"1\"]{\r\n  display:flex !important;\r\n  align-items:center !important;\r\n  justify-content:center !important;\r\n  text-align:center !important;\r\n  margin:14px 0 0 !important;\r\n  padding:0 12px !important;\r\n  line-height:1.1 !important;\r\n}\r\n\r\n@media(max-width:520px){\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-card-top{\r\n    margin-bottom:5px !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > h4{\r\n    max-height:40px !important;\r\n    margin-bottom:7px !important;\r\n    font-size:17px !important;\r\n    line-height:1.18 !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-tags{\r\n    margin-bottom:10px !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-price,\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-actions\r\n  > [data-gdx-panel-r17-r2-direct-add=\"1\"]{\r\n    height:48px !important;\r\n    min-height:48px !important;\r\n    max-height:48px !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-price{\r\n    padding:0 9px !important;\r\n    font-size:15px !important;\r\n  }\r\n\r\n  #gdxPanelV4RecommendationPreview\r\n  .gdx-r11-card[data-gdx-r11-card]\r\n  > .gdx-r11-actions\r\n  > [data-gdx-panel-r17-r2-direct-add=\"1\"]{\r\n    padding:0 9px !important;\r\n    font-size:14px !important;\r\n  }\r\n}\r\n`;\r\n\r\n    document.head.appendChild(style);\r\n\r\n    window.GDX_PANEL_V4_R30A_R4_R2_R1_R4_READY =\r\n      true;\r\n\r\n    window.GDX_PANEL_V4_R30A_R4_R2_R1_R4_CONTRACT = {\r\n      mode:\r\n        \"append_only_consolidated_title_price_alignment\",\r\n      styleId:\r\n        STYLE_ID,\r\n      removedOldStyleIds:\r\n        OLD_STYLE_IDS.slice(),\r\n      desktopTitlePx:\r\n        18,\r\n      mobileTitlePx:\r\n        17,\r\n      titleMaxLines:\r\n        2,\r\n      desktopCommerceHeightPx:\r\n        52,\r\n      mobileCommerceHeightPx:\r\n        48,\r\n      priceHorizontalAlignment:\r\n        \"center\",\r\n      priceVerticalAlignment:\r\n        \"center\",\r\n      cartLogicMutation:\r\n        false,\r\n      listenersAdded:\r\n        0,\r\n      observersAdded:\r\n        0,\r\n      timersAdded:\r\n        0,\r\n      scoreMutation:\r\n        false,\r\n      rankingMutation:\r\n        false,\r\n      productMutation:\r\n        false,\r\n      setupMutation:\r\n        false,\r\n      noraMutation:\r\n        false,\r\n      shareMutation:\r\n        false\r\n    };\r\n  }\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\r\n      \"DOMContentLoaded\",\r\n      inject,\r\n      { once: true }\r\n    );\r\n  } else {\r\n    inject();\r\n  }\r\n})()\r\n;\r\n\r\n/* ========================================================================\r\n * PANEL LED V4 \u2014 R35-CR03\r\n * CONSOLIDATED CUSTOMER COPY NORMALIZER\r\n * Version: PANEL-V4-R35-CR03-R3-CUSTOMER-COPY-FINAL-CORRECTION-V3\r\n *\r\n * Scope:\r\n * - 61 full-page findings\r\n * - 46 open-modal findings\r\n * - total 107 locked customer-copy decisions\r\n *\r\n * Ownership:\r\n * - customer-visible text nodes only\r\n * - existing UI asset only\r\n * - no scoring, ranking, product, recommendation or setup-data mutation\r\n *\r\n * Locked NORA:\r\n * - Alternatif Kurulumlar\u0131 G\u00F6r\r\n * - Alternatifi kapat\r\n * - NORA Risk Uyar\u0131s\u0131\r\n * ======================================================================== */\r\n(function (W, D) {\r\n  \"use strict\";\r\n\r\n  var VERSION =\r\n    \"CANFOTO-R4-PA-P1.20H-R1-SETUP-COPY-OWNER-CLOSE-V1\";\r\n\r\n  var API_KEY =\r\n    \"GDX_PANEL_V4_R35_CR03_CUSTOMER_COPY\";\r\n\r\n  var AUDIT_FINDING_COUNT =\r\n    107;\r\n\r\n  var exactMap =\r\n    [[\"P27 Kullan\u0131m ve Setup Analizi\", \"Kullan\u0131m ve Kurulum Analizi\"], [\"Bu b\u00F6l\u00FCm k\u0131sa \u00F6zet + iste\u011Fe ba\u011Fl\u0131 detay yap\u0131s\u0131ndad\u0131r; kazanan setup P28\u2019de, alternatif \u00FCr\u00FCn setup\u0131 ayn\u0131 formatta g\u00F6sterilir.\", \"\u00D6ne \u00E7\u0131kan noktalar\u0131 k\u0131sa \u00F6zet halinde g\u00F6rebilir, ayr\u0131nt\u0131lar\u0131 diledi\u011Finizde a\u00E7abilirsiniz.\"], [\"P27 KISA ANAL\u0130Z \u00D6ZET\u0130\", \"KISA ANAL\u0130Z \u00D6ZET\u0130\"], [\"P27 detaylar\u0131 kapal\u0131 akordeonda tutulur; kazanan setup P28\u2019de, alternatif \u00FCr\u00FCn setup\u0131 ayn\u0131 formatta a\u015Fa\u011F\u0131da g\u00F6sterilir.\", \"Teknik uygunluk, kullan\u0131m amac\u0131 ve veri g\u00FCveni birlikte de\u011Ferlendirilir.\"], [\"T\u00FCretilmi\u015F \u0131\u015F\u0131k g\u00FCc\u00FC aral\u0131\u011F\u0131 ger\u00E7ek \u00FCretici \u00F6l\u00E7\u00FCm\u00FC gibi de\u011Fil, rol ve mesafe yorumunu destekleyen konservatif sinyal olarak kullan\u0131lmal\u0131d\u0131r.\", \"I\u015F\u0131k g\u00FCc\u00FC aral\u0131\u011F\u0131 yakla\u015F\u0131k bir de\u011Ferlendirmedir; kesin \u00FCretici \u00F6l\u00E7\u00FCm\u00FC olarak kabul edilmemelidir.\"], [\"GDX CF-LED 200W P28 ana \u015Femada; GDX GX-300 65W ayn\u0131 formatta alternatif \u015Femada de\u011Ferlendirilir.\", \"GDX CF-LED 200W ana \u00F6neri, GDX GX-300 65W ise alternatif kurulum olarak g\u00F6sterilir.\"], [\"Rol / Alan / Setup \u00D6zeti\", \"Rol / Alan / Kurulum \u00D6zeti\"], [\"P28 SETUP \u015EEMASI\", \"\u00D6NER\u0130LEN KURULUM\"], [\"Key / Fill / Ki\u015Fi-\u00DCr\u00FCn\", \"Ana I\u015F\u0131k / Dolgu I\u015F\u0131\u011F\u0131 / Konu-\u00DCr\u00FCn\"], [\"200W g\u00FC\u00E7 seviyesi mesafe band\u0131n\u0131 etkiler. Bi-Color/CCT esnekli\u011Fi key ve fill rol\u00FCnde ortam \u0131\u015F\u0131\u011F\u0131na uyum sa\u011Flar. renk verisi iyi. Klinik kullan\u0131mda RGB/atmosfer dili kullanma.\", \"200W g\u00FC\u00E7 daha uzak \u00E7al\u0131\u015Fma mesafesine olanak tan\u0131r. Bi-Color/CCT ayar\u0131, ana \u0131\u015F\u0131k ve dolgunun ortam \u0131\u015F\u0131\u011F\u0131na uyumunu kolayla\u015Ft\u0131r\u0131r. Renk verisi g\u00FC\u00E7l\u00FCd\u00FCr; klinik kullan\u0131mda RGB atmosferi yerine n\u00F6tr \u0131\u015F\u0131k tercih edilmelidir.\"], [\"ALTERNAT\u0130F \u00DCR\u00DCN SETUP \u015EEMASI\", \"ALTERNAT\u0130F \u00DCR\u00DCN KURULUMU\"], [\"F/P kazanan\u0131 de\u011Fi\u015Fmeden, di\u011Fer \u00FCr\u00FCn ayn\u0131 P28 \u015Fema format\u0131 ve kurallar\u0131yla ayr\u0131ca konumland\u0131r\u0131l\u0131r.\", \"Di\u011Fer \u00FCr\u00FCn, ana \u00F6neriden ba\u011F\u0131ms\u0131z bir alternatif kurulumla g\u00F6sterilir.\"], [\"clinical_symmetric\", \"Klinik / Simetrik\"], [\"Detayl\u0131 P27 analizini a\u00E7\", \"Detayl\u0131 analizi a\u00E7\"], [\"Ama\u00E7 Uyumu Skoru\", \"Ama\u00E7 Uyumu\"], [\"F/P \u00D6neri Skoru\", \"Genel F/P Skoru\"], [\"SE\u00C7\u0130M AKS\u0130YONLARI\", \"SE\u00C7\u0130LEN \u00DCR\u00DCNLER\"], [\"Genel Panel LED F/P Profili\", \"Genel F/P De\u011Ferlendirmesi\"], [\"Teknik veriler \u00FCr\u00FCn ad\u0131, a\u00E7\u0131klama ve \u00FCr\u00FCn bilgilerinden okunarak de\u011Ferlendirilir.\", \"Karar; fiyat, teknik \u00F6zellikler ve kullan\u0131m g\u00FCveni birlikte de\u011Ferlendirilerek verilir.\"], [\"89 ger\u00E7ek / 2 tahmini\", \"89 do\u011Frulanm\u0131\u015F / 2 yakla\u015F\u0131k\"], [\"14 KR\u0130TER / 100 A\u011EIRLIK\", \"14 teknik kriter\"], [\"Veri: Veri g\u00FCveni 73/100\", \"Veri g\u00FCveni: 73/100\"], [\"mobil g\u00FC\u00E7 + ta\u015F\u0131ma sinyali\", \"batarya deste\u011Fi + ta\u015F\u0131nabilirlik\"], [\"5 a\u00E7\u0131k / 9 detay\", \"5 kriter g\u00F6steriliyor / 9 kriter daha\"], [\"Panel LED \u2194 Panel LED\", \"\"], [\"4,5 kat premium fiyat\", \"4,5 kat daha y\u00FCksek fiyat\"], [\"Bu b\u00F6l\u00FCm, 14 kriterli F/P sonucunda kazanan \u00FCr\u00FCn\u00FC destekleyen en g\u00FC\u00E7l\u00FC veri ba\u015Fl\u0131klar\u0131n\u0131 m\u00FC\u015Fteri diliyle a\u00E7\u0131klar.\", \"Bu \u00FCr\u00FCn\u00FCn neden \u00F6ne \u00E7\u0131kt\u0131\u011F\u0131n\u0131 en g\u00FC\u00E7l\u00FC verilerle k\u0131saca g\u00F6sterir.\"], [\"Panel karakteri\", \"Kullan\u0131m uyumu\"], [\"Fiyat nas\u0131l okunmal\u0131?\", \"Fiyat fark\u0131 nas\u0131l de\u011Ferlendirilmeli?\"], [\"b\u00FCt\u00E7e sadece daha ucuz olan\u0131 se\u00E7 \u015Feklinde okunmamal\u0131\", \"Tercih yaln\u0131zca d\u00FC\u015F\u00FCk fiyata g\u00F6re yap\u0131lmamal\u0131d\u0131r.\"], [\"Teknik sinyal\", \"Teknik gerek\u00E7e\"], [\"Eksik/validasyon isteyen alanlar: TLCI, Flicker-free, Lux/Lumen.\", \"Do\u011Frulanmas\u0131 gereken alanlar: TLCI, titre\u015Fimsiz \u00E7al\u0131\u015Fma ve lux/l\u00FCmen de\u011Ferleri.\"], [\"context\", \"Kullan\u0131m ba\u011Flam\u0131\"], [\"Ana I\u015F\u0131k / Key Light\", \"Ana I\u015F\u0131k\"], [\"Yard\u0131mc\u0131 I\u015F\u0131k / Fill Light\", \"Dolgu I\u015F\u0131\u011F\u0131\"], [\"0.8\u20131.2 m\", \"0,8\u20131,2 m\"], [\"Orta / mant\u0131kl\u0131\", \"Orta uyum\"], [\"yak\u0131n / orta band \u00B7 uzak / geni\u015F band\", \"Yak\u0131n / orta band \u00B7 Uzak / geni\u015F band\"], [\"G\u00FC\u00E7 / mesafe fark\u0131 nedeniyle alternatif \u00FCr\u00FCn daha farkl\u0131 ba\u015Flang\u0131\u00E7 band\u0131yla konumland\u0131r\u0131l\u0131r.\", \"Alternatif \u00FCr\u00FCn i\u00E7in ayn\u0131 ba\u015Flang\u0131\u00E7 \u015Femas\u0131 g\u00F6sterilir; \u0131\u015F\u0131k \u015Fiddeti ve ger\u00E7ek \u00E7al\u0131\u015Fma mesafesi \u00FCr\u00FCn\u00FCn g\u00FCc\u00FCne ve \u00E7ekim ko\u015Fullar\u0131na g\u00F6re \u00E7ekim s\u0131ras\u0131nda ayr\u0131ca ayarlanmal\u0131d\u0131r.\"], [\"Klinik kullan\u0131mda renkli atmosfer de\u011Fil, n\u00F6tr g\u00F6lge kontrol\u00FC anlat\u0131l\u0131r.\", \"Klinik kullan\u0131m i\u00E7in n\u00F6tr ve kontroll\u00FC bir g\u00F6lge yap\u0131s\u0131 hedeflenir.\"], [\"RGB/atmosfer rol\u00FCn\u00FC bu kullan\u0131mda \u00F6ne \u00E7\u0131karma.\", \"RGB atmosferini bu kullan\u0131mda \u00F6nceliklendirme.\"], [\"CRI/TLCI datas\u0131 s\u0131n\u0131rl\u0131ysa belge do\u011Frulu\u011Fu iddias\u0131n\u0131 s\u0131n\u0131rl\u0131 tut.\", \"CRI/TLCI verisi s\u0131n\u0131rl\u0131ysa renk do\u011Frulu\u011Fu iddias\u0131n\u0131 temkinli kullan.\"], [\"Tek Ki\u015Fi Yak\u0131n Plan Y\u00FCz / Beauty Alan\u0131\", \"Tek Ki\u015Filik Yak\u0131n Plan / G\u00FCzellik \u00C7ekimi\"], [\"Kaynak mant\u0131\u011F\u0131\", \"Bu \u00F6neri nas\u0131l olu\u015Fturuldu?\"], [\"14 kriterli genel F/P yap\u0131s\u0131ndan gelir.\", \"14 teknik kritere g\u00F6re hesaplan\u0131r.\"], [\"Bu \u00FC\u00E7 \u00F6neriyi nas\u0131l okumal\u0131?\", \"Bu \u00FC\u00E7 \u00F6neriyi nas\u0131l de\u011Ferlendirmeli?\"], [\"Alternatifi d\u00FC\u015F\u00FCn\", \"Alternatif se\u00E7im\"], [\"GENEL F/P KAR\u015EILA\u015ETIR\", \"\u00DCR\u00DCNLER\u0130 F/P A\u00C7ISINDAN KAR\u015EILA\u015ETIR\"], [\"STOKTA\", \"YALNIZ STOKTA\"], [\"Barlar skor fark\u0131n\u0131...\", \"Grafikler puan fark\u0131n\u0131...\"], [\"Okunan veri \u00B7 Y\u00FCksek g\u00FCven\", \"\u00DCr\u00FCn verisi \u00B7 Veri g\u00FCveni: y\u00FCksek\"], [\"Kontrol / App / DMX\", \"Kontrol / Uygulama / DMX\"], [\"\u00F6zet\", \"\u00D6zet\"], [\"PNG kart\u0131 ve kar\u015F\u0131la\u015Ft\u0131rma ba\u011Flant\u0131s\u0131 birlikte haz\u0131rlan\u0131r.\", \"Payla\u015F\u0131m g\u00F6rseli ve kar\u015F\u0131la\u015Ft\u0131rma ba\u011Flant\u0131s\u0131 birlikte haz\u0131rlan\u0131r.\"], [\"Modal kapanmadan sepete ekler.\", \"\"], [\"D\u0130NAM\u0130K SETUP\", \"D\u0130NAM\u0130K KURULUM\"], [\"Bu setup kimler i\u00E7in?\", \"Bu kurulum kimler i\u00E7in?\"], [\"Dolgu I\u015F\u0131\u011F\u0131 ayr\u0131 g\u00F6revdir; \u00FCr\u00FCn b\u00FCt\u00FCn setup de\u011Fildir.\", \"Dolgu \u0131\u015F\u0131\u011F\u0131 i\u00E7in ayr\u0131ca bir \u0131\u015F\u0131k gerekir; bu \u00FCr\u00FCn tek ba\u015F\u0131na t\u00FCm kurulumu olu\u015Fturmaz.\"], [\"Bu de\u011Ferleri ana g\u00F6rselle ayn\u0131 tut.\", \"Kuruluma bu ba\u015Flang\u0131\u00E7 de\u011Ferleriyle ba\u015Flay\u0131n.\"], [\"SETUP ZEKASI\", \"KURULUM DESTE\u011E\u0130\"], [\"Ayn\u0131 modelden okunur\", \"\"], [\"Uzman y\u00FCz\u00FC do\u011Fal ve g\u00FCven veren g\u00F6r\u00FCnmeli. Pencere/oda \u0131\u015F\u0131\u011F\u0131 yaln\u0131z \u00E7ok d\u00FC\u015F\u00FCk ortam katk\u0131s\u0131 olsun; klinik beyazlarda renk kaymas\u0131 olmas\u0131n.\", \"Hedef g\u00F6r\u00FCn\u00FCm: do\u011Fal ve g\u00FCven veren bir y\u00FCz, d\u00FC\u015F\u00FCk ortam \u0131\u015F\u0131\u011F\u0131 ve renk kaymas\u0131 olu\u015Fturmayan n\u00F6tr klinik beyaz.\"], [\"NORA e\u011Fitim modeli\", \"NORA de\u011Ferlendirmesi\"], [\"\u00DCr\u00FCn veri etiketleri\", \"\u00D6ne \u00E7\u0131kan \u00F6zellikler\"], [\"Etiketler \u00FCr\u00FCn havuzundaki teknik verilerden okunur; skorlar se\u00E7ili senaryo ve do\u011Frulanm\u0131\u015F kan\u0131t katmanlar\u0131yla ayr\u0131 ayr\u0131 hesaplan\u0131r.\", \"Puanlar, \u00FCr\u00FCn \u00F6zellikleri ve se\u00E7ili kullan\u0131m senaryosu birlikte de\u011Ferlendirilerek hesaplan\u0131r.\"], [\"ALT AMA\u00C7 A\u011EIRLIKLARI\", \"KARAR KR\u0130TERLER\u0130\"], [\"Bu senaryoda karar a\u011F\u0131rl\u0131\u011F\u0131 en \u00E7ok Renk, G\u00FC\u00E7, Yumu\u015Fakl\u0131k kriterlerine da\u011F\u0131l\u0131r. Kartlar, kriter \u00F6nemini ve \u00FCr\u00FCn\u00FCn ilgili teknik sinyalini ayr\u0131 g\u00F6sterir.\", \"Bu \u00F6neride en belirleyici kriterler renk do\u011Frulu\u011Fu, \u0131\u015F\u0131k g\u00FCc\u00FC ve \u0131\u015F\u0131k yumu\u015Fakl\u0131\u011F\u0131d\u0131r.\"], [\"Fiyat bu ama\u00E7 skorunda tek ba\u015F\u0131na karar vermez; teknik uygunluk ve FP14 kan\u0131t\u0131 ayr\u0131 okunur.\", \"Fiyat tek ba\u015F\u0131na karar vermez; teknik uygunluk ve genel F/P dengesi birlikte de\u011Ferlendirilir.\"], [\"Bu b\u00F6l\u00FCm, \u201CKlinik / Estetik \u00B7 Klinik / estetik\u201D i\u00E7in ama\u00E7 skoru ile genel F/P kan\u0131t\u0131n\u0131 birlikte ama ayr\u0131 kaynaklardan okur.\", \"Bu \u00FCr\u00FCn\u00FCn se\u00E7ili kullan\u0131m amac\u0131ndaki uyumu ile genel F/P dengesi ayr\u0131 puanlarla birlikte de\u011Ferlendirilir.\"], [\"Genel Panel LED FP14 kan\u0131t\u0131ndan gelir; ama\u00E7 puan\u0131ndan ayr\u0131 yorumlan\u0131r.\", \"14 teknik kritere g\u00F6re hesaplan\u0131r ve ama\u00E7 uyumundan ayr\u0131 de\u011Ferlendirilir.\"], [\"GDX P-750C II 250W, bu \u00F6neride Ana I\u015F\u0131k rol\u00FCnde de\u011Ferlendirildi. Di\u011Fer setup rolleri (Dolgu I\u015F\u0131\u011F\u0131) ayr\u0131 \u0131\u015F\u0131k g\u00F6revlendirir; \u00FCr\u00FCn\u00FCn paket i\u00E7eri\u011Fi de\u011Fildir.\", \"Bu \u00F6neride \u00FCr\u00FCn ana \u0131\u015F\u0131k olarak konumland\u0131r\u0131l\u0131r. Dolgu \u0131\u015F\u0131\u011F\u0131 i\u00E7in ayr\u0131ca bir \u0131\u015F\u0131k gerekir; bu kurulum \u00FCr\u00FCn paket i\u00E7eri\u011Fini ifade etmez.\"], [\"Sat\u0131n alma aksiyonu\", \"Sat\u0131n alma\"], [\"F/P \u00D6neri\", \"Genel F/P\"], [\"Rol Kan\u0131t\u0131\", \"Rol Uyumu\"], [\"Klinik / Estetik \u00B7 Klinik / estetik\", \"Klinik / Estetik\"], [\"Kurulum yorumu; \u00FCr\u00FCn ailesi, g\u00FC\u00E7 band\u0131 ve se\u00E7ili alt amaca g\u00F6re okunur.\", \"Kurulum \u00F6nerisi; \u00FCr\u00FCn tipi, g\u00FC\u00E7 seviyesi ve se\u00E7ili kullan\u0131m amac\u0131na g\u00F6re haz\u0131rlan\u0131r.\"], [\"Kullan\u0131m profili; senaryo, \u0131\u015F\u0131k rol\u00FC ve mesafe band\u0131na g\u00F6re \u00F6zetlenir.\", \"Kullan\u0131m profili, \u00E7ekim senaryosu ve \u00E7al\u0131\u015Fma mesafesine g\u00F6re \u00F6zetlenir.\"], [\"Yak\u0131n plan y\u00FCz, cilt, dental veya bak\u0131m belgelemesi yapan kullan\u0131c\u0131lar.\", \"Yak\u0131n plan y\u00FCz, cilt, dental ve bak\u0131m \u00E7ekimleri yapan kullan\u0131c\u0131lar.\"], [\"Bi-Color yap\u0131s\u0131 sayesinde y\u00FCz, \u00FCr\u00FCn, e\u011Fitim ve klinik senaryolarda Kelvin kontrol\u00FC isteyen kullan\u0131c\u0131lar i\u00E7in g\u00FC\u00E7l\u00FCd\u00FCr.\", \"Bi-Color yap\u0131s\u0131; y\u00FCz, \u00FCr\u00FCn, e\u011Fitim ve klinik \u00E7ekimlerde renk s\u0131cakl\u0131\u011F\u0131n\u0131 ayarlamak isteyen kullan\u0131c\u0131lar i\u00E7in uygundur.\"], [\"\u015Eemadaki \u0131\u015F\u0131k, konu ve kamera konumlar\u0131 se\u00E7ili kurulum verilerinden olu\u015Fturulur. Mesafe, a\u00E7\u0131 ve y\u00FCkseklik de\u011Ferleri yan\u0131ndaki kurulum \u00F6zetiyle ayn\u0131 kaynaktan al\u0131n\u0131r.\", \"\u015Eema, \u00F6nerilen \u0131\u015F\u0131k ve kamera yerle\u015Fimini g\u00F6sterir. Mesafe, a\u00E7\u0131 ve y\u00FCkseklik de\u011Ferleri sa\u011Fdaki \u00F6zetle ayn\u0131d\u0131r.\"], [\"NORA alternatif modeli\", \"NORA de\u011Ferlendirmesi\"], [\"Kullan\u0131c\u0131 profili; ama\u00E7, \u00FCr\u00FCn tipi ve skor ili\u015Fkisine g\u00F6re \u00F6zetlenir.\", \"Bu \u00FCr\u00FCn\u00FCn en uygun oldu\u011Fu kullan\u0131c\u0131 ve \u00E7ekim ihtiya\u00E7lar\u0131 a\u015Fa\u011F\u0131da \u00F6zetlenir.\"], [\"Cilt tonu, do\u011Fal renk ve yak\u0131n plan belge g\u00FCveni gereken profesyonel kullan\u0131m i\u00E7in uygundur.\", \"Cilt tonu, do\u011Fal renk ve g\u00FCvenilir yak\u0131n plan sonu\u00E7lar\u0131 gereken profesyonel \u00E7ekimler i\u00E7in uygundur.\"], [\"Bu \u00FCr\u00FCn, ilk \u00F6neriye g\u00F6re farkl\u0131 g\u00FC\u00E7l\u00FC taraflar\u0131 olan alternatif arayan kullan\u0131c\u0131lar i\u00E7in mant\u0131kl\u0131d\u0131r.\", \"Ana \u00F6neriden farkl\u0131 g\u00FC\u00E7l\u00FC y\u00F6nlere sahip bir alternatif arayanlar i\u00E7in uygundur.\"], [\"Yumu\u015Fak \u0131\u015F\u0131k / panel karakteri\", \"I\u015F\u0131k yumu\u015Fakl\u0131\u011F\u0131\"], [\"Video g\u00FCveni / sessizlik\", \"Video kullan\u0131m g\u00FCveni\"], [\"\u00DCr\u00FCn\u00FCn se\u00E7ili mesafe ve rol i\u00E7in yeterli beyaz \u0131\u015F\u0131k rezervi sunup sunmad\u0131\u011F\u0131n\u0131 g\u00F6sterir. Bu kriter, watt ve beyaz \u0131\u015F\u0131k sinyalini se\u00E7ili kullan\u0131m \u00F6l\u00E7e\u011Fine g\u00F6re okur.\", \"\u00DCr\u00FCn\u00FCn se\u00E7ili \u00E7al\u0131\u015Fma mesafesinde yeterli beyaz \u0131\u015F\u0131k \u00FCretip \u00FCretemedi\u011Fini g\u00F6sterir. G\u00FC\u00E7 ve beyaz \u0131\u015F\u0131k performans\u0131 birlikte de\u011Ferlendirilir.\"], [\"Panel karakteri ve kullan\u0131m mesafesi bu kriteri g\u00FC\u00E7lendirir.\", \"Panel boyutu ve \u00E7al\u0131\u015Fma mesafesi birlikte de\u011Ferlendirilir.\"], [\"Flicker, fan, sessizlik ve canl\u0131 kay\u0131t g\u00FCvenini ilgili riskleri s\u0131n\u0131rl\u0131 \u015Fekilde okur. \u00DCr\u00FCn verisi eksikse bu kriter konservatif yorumlan\u0131r.\", \"Titre\u015Fimsiz \u00E7al\u0131\u015Fma, fan sesi ve canl\u0131 kay\u0131tta g\u00FCvenilirli\u011Fi g\u00F6sterir. \u00DCr\u00FCn verisi eksikse de\u011Ferlendirme temkinli yap\u0131l\u0131r.\"], [\"AMA\u00C7 & F/P DENGES\u0130\", \"AMA\u00C7 UYUMU VE F/P DENGES\u0130\"], [\"Aile ve \u0131\u015F\u0131k rol\u00FCn\u00FCn bu kurulumdaki yerini destekler.\", \"\u00DCr\u00FCn\u00FCn \u00F6nerilen \u0131\u015F\u0131k g\u00F6revine ne kadar uygun oldu\u011Funu g\u00F6sterir.\"], [\"Ama\u00E7 uyumu y\u00FCksek; ancak 14 kriterli F/P dengesi daha kontroll\u00FC okunur. Bu durum teknik uygunlu\u011Fun y\u00FCksek, fiyat/de\u011Fer taraf\u0131n\u0131n ise ayr\u0131 de\u011Ferlendirilmesi gerekti\u011Fini g\u00F6sterir.\", \"Ama\u00E7 uyumu y\u00FCksektir; genel F/P puan\u0131 ise fiyat fark\u0131 nedeniyle daha temkinli de\u011Ferlendirilmelidir.\"], [\"GDX P-750C II 250W, Genel Panel LED Kullan\u0131m\u0131 i\u00E7in farkl\u0131 \u00E7ekim senaryolar\u0131nda g\u00FC\u00E7l\u00FC alternatif olarak de\u011Ferlendirilebilir. Karar taraf\u0131nda Ama\u00E7 Uyumu ve Bi-Color karakteri \u00F6ne \u00E7\u0131kar; 88/100 ama\u00E7 skoru bu teknik e\u015Fle\u015Fmeyi destekler.\", \"GDX P-750C II 250W, bu kullan\u0131m i\u00E7in g\u00FC\u00E7l\u00FC bir alternatiftir. Bi-Color yap\u0131s\u0131 ve 88/100 ama\u00E7 uyumu, \u00FCr\u00FCn\u00FCn se\u00E7ili \u00E7ekim senaryosuna uygunlu\u011Funu destekler.\"], [\"Teknik uyum g\u00FC\u00E7l\u00FC olsa da fiyat/de\u011Fer \u00F6nceli\u011Fin y\u00FCkseliyorsa di\u011Fer \u00F6nerilerde daha y\u00FCksek F/P puan\u0131n\u0131 kar\u015F\u0131la\u015Ft\u0131r.\", \"Teknik uyum g\u00FC\u00E7l\u00FCd\u00FCr; b\u00FCt\u00E7e \u00F6nceli\u011Finiz daha y\u00FCksekse di\u011Fer \u00FCr\u00FCnlerin F/P puanlar\u0131n\u0131 da kar\u015F\u0131la\u015Ft\u0131r\u0131n.\"], [\"\u00DCr\u00FCn ba\u011Flam\u0131\", \"\u00DCr\u00FCn \u00F6zeti\"], [\"NORA KURULUM YORUMU\", \"NORA'NIN KURULUM YORUMU\"], [\"Klinik sosyal medya i\u00E7eri\u011Fi \u2014 NORA \u00F6zeti\", \"Klinik sosyal medya \u00E7ekimi \u2014 NORA \u00F6zeti\"], [\"Y\u00FCz ve yak\u0131n plan \u00E7ekimlerinde yumu\u015Fak g\u00F6lge ve tutarl\u0131 Kelvin arayan kullan\u0131c\u0131lar.\", \"Y\u00FCz ve yak\u0131n plan \u00E7ekimlerinde yumu\u015Fak g\u00F6lge ve tutarl\u0131 renk s\u0131cakl\u0131\u011F\u0131 isteyen kullan\u0131c\u0131lar.\"], [\"Setup\u2019u G\u00F6r\", \"Kurulumu G\u00F6r\"], [\"Setup'u G\u00F6r\", \"Kurulumu G\u00F6r\"], [\"\u00DCR\u00DCN HAVUZU DURUMU\", \"\u00DCR\u00DCN HAVUZU\"], [\"14 Kriterli Teknik Kar\u015F\u0131la\u015Ft\u0131rma\", \"14 Kriterli Teknik F/P Kar\u015F\u0131la\u015Ft\u0131rmas\u0131\"], [\"14 Kriterli Teknik F/P Analizi\", \"\"], [\"Alternatif dinamik kurulum\", \"NORA Alternatif Kurulumu\"], [\"Alt ama\u00E7 a\u011F\u0131rl\u0131klar\u0131\", \"Karar kriterleri\"], [\"Ama\u00E7 & F/P dengesi\", \"Ama\u00E7 Uyumu ve F/P Dengesi\"]];\r\n  exactMap.push(\r\n    [\"Key\", \"Ana I\u015F\u0131k\"],\r\n    [\"Fill\", \"Dolgu I\u015F\u0131\u011F\u0131\"],\r\n    [\"Ki\u015Fi/\u00DCr\u00FCn\", \"Konu/\u00DCr\u00FCn\"],\r\n    [\"Yak\u0131n Bant\", \"Yak\u0131n Band\"],\r\n    [\"Orta Bant\", \"Orta Band\"],\r\n    [\"Uzak Bant\", \"Uzak Band\"],\r\n    [\"14 Kriter / 100 A\u011F\u0131rl\u0131k\", \"14 teknik kriter\"],\r\n    [\"14 KR\u0130TER / 100 A\u011EIRLIK\", \"14 teknik kriter\"],\r\n    [\"Alternatifi d\u00FC\u015F\u00FCn\", \"Alternatif se\u00E7im\"],\r\n    [\"NORA alternatif modeli\", \"NORA de\u011Ferlendirmesi\"],\r\n    [\"NORA e\u011Fitim modeli\", \"NORA de\u011Ferlendirmesi\"]\r\n  );\r\n\r\n\r\n  var observer = null;\r\n  var scheduled = false;\r\n  var runCount = 0;\r\n  var changedTextNodeCount = 0;\r\n  var lastChanges = [];\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value)\r\n      .replace(/\\s+/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function roots() {\r\n    var list = [];\r\n    var panel =\r\n      D.querySelector(\"#gdx-panel-led-v4-root\");\r\n\r\n    if (panel) list.push(panel);\r\n\r\n    Array.prototype.slice.call(\r\n      D.querySelectorAll(\r\n        \".gdx-r11-modal,[data-gdx-r34-cr07-a3-root='1']\"\r\n      )\r\n    ).forEach(function (node) {\r\n      if (list.indexOf(node) === -1) {\r\n        list.push(node);\r\n      }\r\n    });\r\n\r\n    return list;\r\n  }\r\n\r\n  function skipTextNode(node) {\r\n    var parent =\r\n      node && node.parentElement;\r\n\r\n    if (!parent) return true;\r\n\r\n    return !!parent.closest(\r\n      \"script,style,textarea,pre,code,noscript,input,select,option\"\r\n    );\r\n  }\r\n\r\n  function addChange(changes, value) {\r\n    if (\r\n      value &&\r\n      changes.indexOf(value) === -1\r\n    ) {\r\n      changes.push(value);\r\n    }\r\n  }\r\n\r\n  function exactNormalize(value, changes) {\r\n    var output =\r\n      String(value == null ? \"\" : value);\r\n\r\n    exactMap.forEach(function (pair) {\r\n      if (output === pair[0]) {\r\n        output = pair[1];\r\n        addChange(changes, pair[0]);\r\n      }\r\n    });\r\n\r\n    return output;\r\n  }\r\n\r\n  function replaceLiteral(\r\n    value,\r\n    oldValue,\r\n    newValue,\r\n    changes\r\n  ) {\r\n    if (value.indexOf(oldValue) === -1) {\r\n      return value;\r\n    }\r\n\r\n    addChange(changes, oldValue);\r\n\r\n    return value\r\n      .split(oldValue)\r\n      .join(newValue);\r\n  }\r\n\r\n  function dynamicNormalize(value, changes) {\r\n    var output =\r\n      String(value == null ? \"\" : value);\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Yard\u0131mc\u0131 I\u015F\u0131k / Fill Light\",\r\n      \"Dolgu I\u015F\u0131\u011F\u0131\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Ana I\u015F\u0131k / Key Light\",\r\n      \"Ana I\u015F\u0131k\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Key / Fill / Ki\u015Fi-\u00DCr\u00FCn\",\r\n      \"Ana I\u015F\u0131k / Dolgu I\u015F\u0131\u011F\u0131 / Konu-\u00DCr\u00FCn\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Kontrol / App / DMX\",\r\n      \"Kontrol / Uygulama / DMX\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"FP14 kan\u0131t\u0131\",\r\n      \"genel F/P de\u011Ferlendirmesi\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"FP14 kan\u0131t\",\r\n      \"genel F/P de\u011Ferlendirmesi\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"NORA alternatif modeli\",\r\n      \"NORA de\u011Ferlendirmesi\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"NORA e\u011Fitim modeli\",\r\n      \"NORA de\u011Ferlendirmesi\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"NORA d\u00FCr\u00FCst uyar\u0131\",\r\n      \"NORA Risk Uyar\u0131s\u0131\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Farkl\u0131 karakteri incele\",\r\n      \"Alternatif Kurulumlar\u0131 G\u00F6r\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Di\u011Fer Alternatif \u00D6neriler\",\r\n      \"Alternatif Kurulumlar\u0131 G\u00F6r\",\r\n      changes\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\bKazan\u00E7:\\s*/g,\r\n      function () {\r\n        addChange(changes, \"Kazan\u00E7:\");\r\n        return \"Tasarruf: \";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\bA\u011F\u0131rl\u0131k\\s+([0-9]+(?:[.,][0-9]+)?)%/g,\r\n      function (_, valueText) {\r\n        addChange(changes, \"A\u011F\u0131rl\u0131k %\");\r\n        return \"Karardaki pay\u0131 \" +\r\n          valueText +\r\n          \"%\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\b([0-9]+)\\s+ger\u00E7ek\\s*\\/\\s*([0-9]+)\\s+tahmini\\b/g,\r\n      function (_, verified, approximate) {\r\n        addChange(changes, \"ger\u00E7ek / tahmini\");\r\n        return verified +\r\n          \" do\u011Frulanm\u0131\u015F / \" +\r\n          approximate +\r\n          \" yakla\u015F\u0131k\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\bVeri:\\s*Veri g\u00FCveni\\s*([0-9]+\\/100)\\b/g,\r\n      function (_, score) {\r\n        addChange(changes, \"Veri: Veri g\u00FCveni\");\r\n        return \"Veri g\u00FCveni: \" + score;\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\b([0-9]+)\\s+a\u00E7\u0131k\\s*\\/\\s*([0-9]+)\\s+detay\\b/g,\r\n      function (_, shown, remaining) {\r\n        addChange(changes, \"a\u00E7\u0131k / detay\");\r\n        return shown +\r\n          \" kriter g\u00F6steriliyor / \" +\r\n          remaining +\r\n          \" kriter daha\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\b([0-9]+(?:[.,][0-9]+)?)\\s+kat\\s+premium fiyat\\b/gi,\r\n      function (_, ratio) {\r\n        addChange(changes, \"kat premium fiyat\");\r\n        return ratio +\r\n          \" kat daha y\u00FCksek fiyat\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\b([0-9]+(?:[.,][0-9]+)?)\\s+kat fiyat seviyesi\\s*\\+\\s*(%[0-9]+)\\s+fiyat fark\u0131\\b/gi,\r\n      function (_, ratio, percent) {\r\n        addChange(changes, \"kat fiyat seviyesi + fiyat fark\u0131\");\r\n        return percent + \" fiyat fark\u0131\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\b([0-9]+)\\s+\u00FCr\u00FCn\\b/g,\r\n      function (match) {\r\n        var parentText =\r\n          clean(\r\n            value &&\r\n            value.parentElement &&\r\n            value.parentElement.textContent\r\n          );\r\n\r\n        return match;\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\b0\\.8\u20131\\.2 m\\b/g,\r\n      function () {\r\n        addChange(changes, \"0.8\u20131.2 m\");\r\n        return \"0,8\u20131,2 m\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /^(.+?)\\s+P28 ana \u015Femada;\\s+(.+?)\\s+ayn\u0131 formatta alternatif \u015Femada de\u011Ferlendirilir\\.$/,\r\n      function (_, winner, alternative) {\r\n        addChange(changes, \"P28 ana \u015Femada / ayn\u0131 formatta\");\r\n        return winner +\r\n          \" ana \u00F6neri, \" +\r\n          alternative +\r\n          \" ise alternatif kurulum olarak g\u00F6sterilir.\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /^(.+?),\\s+bu \u00F6neride\\s+(.+?)\\s+rol\u00FCnde de\u011Ferlendirildi\\.\\s+Di\u011Fer setup rolleri\\s+\\((.+?)\\)\\s+ayr\u0131 \u0131\u015F\u0131k g\u00F6revlendirir;\\s+\u00FCr\u00FCn\u00FCn paket i\u00E7eri\u011Fi de\u011Fildir\\.$/,\r\n      function (_, product, role, supportRole) {\r\n        addChange(changes, \"Di\u011Fer setup rolleri\");\r\n        return \"Bu \u00F6neride \u00FCr\u00FCn \" +\r\n          String(role || \"\")\r\n            .toLocaleLowerCase(\"tr-TR\") +\r\n          \" olarak konumland\u0131r\u0131l\u0131r. \" +\r\n          supportRole +\r\n          \" i\u00E7in ayr\u0131ca bir \u0131\u015F\u0131k gerekir; bu kurulum \u00FCr\u00FCn paket i\u00E7eri\u011Fini ifade etmez.\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /^(.+?),\\s+Genel Panel LED Kullan\u0131m\u0131 i\u00E7in farkl\u0131 \u00E7ekim senaryolar\u0131nda g\u00FC\u00E7l\u00FC alternatif olarak de\u011Ferlendirilebilir\\.\\s+Karar taraf\u0131nda Ama\u00E7 Uyumu ve Bi-Color karakteri \u00F6ne \u00E7\u0131kar;\\s+([0-9]+\\/100)\\s+ama\u00E7 skoru bu teknik e\u015Fle\u015Fmeyi destekler\\.$/,\r\n      function (_, product, score) {\r\n        addChange(changes, \"Karar taraf\u0131nda Ama\u00E7 Uyumu\");\r\n        return product +\r\n          \", bu kullan\u0131m i\u00E7in g\u00FC\u00E7l\u00FC bir alternatiftir. Bi-Color yap\u0131s\u0131 ve \" +\r\n          score +\r\n          \" ama\u00E7 uyumu, \u00FCr\u00FCn\u00FCn se\u00E7ili \u00E7ekim senaryosuna uygunlu\u011Funu destekler.\";\r\n      }\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\b([0-9]+(?:[.,][0-9]+)?)W g\u00FC\u00E7 seviyesi mesafe band\u0131n\u0131 etkiler\\.\\s*Bi-Color\\/CCT esnekli\u011Fi key ve fill rol\u00FCnde ortam \u0131\u015F\u0131\u011F\u0131na uyum sa\u011Flar\\.\\s*renk verisi iyi\\.\\s*Klinik kullan\u0131mda RGB\\/atmosfer dili kullanma\\./gi,\r\n      function (_, power) {\r\n        addChange(changes, \"g\u00FC\u00E7 seviyesi mesafe band\u0131n\u0131 etkiler\");\r\n        return power +\r\n          \"W g\u00FC\u00E7 daha uzak \u00E7al\u0131\u015Fma mesafesine olanak tan\u0131r. Bi-Color/CCT ayar\u0131, ana \u0131\u015F\u0131k ve dolgunun ortam \u0131\u015F\u0131\u011F\u0131na uyumunu kolayla\u015Ft\u0131r\u0131r. Renk verisi g\u00FC\u00E7l\u00FCd\u00FCr; klinik kullan\u0131mda RGB atmosferi yerine n\u00F6tr \u0131\u015F\u0131k tercih edilmelidir.\";\r\n      }\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Bu de\u011Ferleri ana g\u00F6rselle ayn\u0131 tut.\",\r\n      \"Kuruluma bu ba\u015Flang\u0131\u00E7 de\u011Ferleriyle ba\u015Flay\u0131n.\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Dolgu I\u015F\u0131\u011F\u0131 ayr\u0131 g\u00F6revdir; \u00FCr\u00FCn b\u00FCt\u00FCn setup de\u011Fildir.\",\r\n      \"Dolgu \u0131\u015F\u0131\u011F\u0131 i\u00E7in ayr\u0131ca bir \u0131\u015F\u0131k gerekir; bu \u00FCr\u00FCn tek ba\u015F\u0131na t\u00FCm kurulumu olu\u015Fturmaz.\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"\u00FCr\u00FCn b\u00FCt\u00FCn setup de\u011Fildir.\",\r\n      \"bu \u00FCr\u00FCn tek ba\u015F\u0131na t\u00FCm kurulumu olu\u015Fturmaz.\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Ana I\u015F\u0131k \u00FCr\u00FCn rol\u00FC; di\u011Fer g\u00F6r\u00FCnen \u0131\u015F\u0131k g\u00F6revleri \u00FCr\u00FCn paketi de\u011Fildir.\",\r\n      \"Bu \u00FCr\u00FCn ana \u0131\u015F\u0131k olarak kullan\u0131l\u0131r; \u015Femadaki di\u011Fer \u0131\u015F\u0131klar \u00FCr\u00FCn paketine dahil de\u011Fildir.\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"14 Kriter / 100 A\u011F\u0131rl\u0131k\",\r\n      \"14 teknik kriter\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"14 KR\u0130TER / 100 A\u011EIRLIK\",\r\n      \"14 teknik kriter\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Barlar skor fark\u0131n\u0131\",\r\n      \"Grafikler puan fark\u0131n\u0131\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Teknik veriler \u00FCr\u00FCn ad\u0131, a\u00E7\u0131klama ve \u00FCr\u00FCn bilgilerinden okunarak de\u011Ferlendirilir.\",\r\n      \"Karar; fiyat, teknik \u00F6zellikler ve kullan\u0131m g\u00FCveni birlikte de\u011Ferlendirilerek verilir.\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Veriler \u00FCr\u00FCn ad\u0131, a\u00E7\u0131klama ve teknik bilgilerden okunur\",\r\n      \"Veriler \u00FCr\u00FCn \u00F6zellikleri ve teknik bilgiler birlikte de\u011Ferlendirilerek haz\u0131rlan\u0131r\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Okunan veri\",\r\n      \"Do\u011Frulanm\u0131\u015F veri\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Okunan + destek\",\r\n      \"Do\u011Frulanm\u0131\u015F + destek\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"mobil g\u00FC\u00E7 + ta\u015F\u0131ma sinyali\",\r\n      \"batarya deste\u011Fi + ta\u015F\u0131nabilirlik\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Panel karakteri\",\r\n      \"Kullan\u0131m uyumu\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"panel karakteri\",\r\n      \"kullan\u0131m uyumu\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Eksik/validasyon isteyen alanlar: TLCI, Flicker-free, Lux/Lumen.\",\r\n      \"Do\u011Frulanmas\u0131 gereken alanlar: TLCI, titre\u015Fimsiz \u00E7al\u0131\u015Fma ve lux/l\u00FCmen de\u011Ferleri.\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"T\u00FCretilmi\u015F \u0131\u015F\u0131k g\u00FCc\u00FC aral\u0131\u011F\u0131 ger\u00E7ek \u00FCretici \u00F6l\u00E7\u00FCm\u00FC gibi de\u011Fil, rol ve mesafe yorumunu destekleyen konservatif sinyal olarak kullan\u0131lmal\u0131d\u0131r.\",\r\n      \"I\u015F\u0131k g\u00FCc\u00FC aral\u0131\u011F\u0131 yakla\u015F\u0131k bir de\u011Ferlendirmedir; kesin \u00FCretici \u00F6l\u00E7\u00FCm\u00FC olarak kabul edilmemelidir.\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"yak\u0131n / orta band\",\r\n      \"yak\u0131n / orta mesafe\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"uzak / geni\u015F band\",\r\n      \"uzak mesafe / geni\u015F alan\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"mesafe band\u0131n\u0131\",\r\n      \"\u00E7al\u0131\u015Fma mesafesini\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"key ve fill rol\u00FCnde\",\r\n      \"ana \u0131\u015F\u0131k ve dolgu kullan\u0131m\u0131nda\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Klinik / Estetik / Medikal Belgeleme\",\r\n      \"Klinik / Estetik / Medikal \u00C7ekim\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Flicker / Sessizlik / Is\u0131 Y\u00F6netimi\",\r\n      \"Titre\u015Fimsiz \u00C7al\u0131\u015Fma / Sessizlik / Is\u0131 Y\u00F6netimi\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Montaj / Rig / Ayak Uyumu\",\r\n      \"Montaj / Ask\u0131 / Ayak Uyumu\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"F/P \u00D6neri\",\r\n      \"Genel F/P\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Rol Kan\u0131t\u0131\",\r\n      \"Rol Uyumu\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"g\u00FC\u00E7 band\u0131\",\r\n      \"g\u00FC\u00E7 seviyesi\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"G\u00FC\u00E7 band\u0131\",\r\n      \"G\u00FC\u00E7 seviyesi\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Yak\u0131n Bant\",\r\n      \"Yak\u0131n Band\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Yak\u0131n Mesafe\",\r\n      \"Yak\u0131n Band\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Orta Bant\",\r\n      \"Orta Band\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Orta Mesafe\",\r\n      \"Orta Band\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Uzak Bant\",\r\n      \"Uzak Band\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Uzak Mesafe\",\r\n      \"Uzak Band\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"Di\u011Fer setup rolleri\",\r\n      \"Ek \u0131\u015F\u0131k g\u00F6revleri\",\r\n      changes\r\n    );\r\n\r\n    output = replaceLiteral(\r\n      output,\r\n      \"\u00DCr\u00FCn b\u00FCt\u00FCn setup de\u011Fildir.\",\r\n      \"Bu \u00FCr\u00FCn tek ba\u015F\u0131na t\u00FCm kurulumu olu\u015Fturmaz.\",\r\n      changes\r\n    );\r\n\r\n    output = output.replace(\r\n      /\\bA\u011F\u0131rl\u0131k:\\s*([0-9]+(?:[.,][0-9]+)?)%/g,\r\n      function (_, valueText) {\r\n        addChange(changes, \"A\u011F\u0131rl\u0131k:\");\r\n        return \"Karardaki pay\u0131: \" +\r\n          valueText +\r\n          \"%\";\r\n      }\r\n    );\r\n\r\n    return output;\r\n  }\r\n\r\n  function normalizeText(value, changes) {\r\n    var output =\r\n      exactNormalize(value, changes);\r\n\r\n    output =\r\n      dynamicNormalize(output, changes);\r\n\r\n    return output;\r\n  }\r\n\r\n  function hideIfEmpty(parent) {\r\n    if (!parent) return;\r\n\r\n    if (\r\n      clean(parent.textContent) === \"\" &&\r\n      /^(SMALL|P|SPAN|EM|I)$/i.test(\r\n        parent.tagName || \"\"\r\n      )\r\n    ) {\r\n      parent.hidden = true;\r\n      parent.setAttribute(\r\n        \"aria-hidden\",\r\n        \"true\"\r\n      );\r\n    }\r\n  }\r\n\r\n  function normalizeTextNodes(root, changes) {\r\n    if (!root) return 0;\r\n\r\n    var walker =\r\n      D.createTreeWalker(\r\n        root,\r\n        W.NodeFilter.SHOW_TEXT\r\n      );\r\n\r\n    var changed = 0;\r\n    var node;\r\n\r\n    while ((node = walker.nextNode())) {\r\n      if (skipTextNode(node)) continue;\r\n\r\n      var before =\r\n        String(node.nodeValue || \"\");\r\n\r\n      var localChanges = [];\r\n      var after =\r\n        normalizeText(\r\n          before,\r\n          localChanges\r\n        );\r\n\r\n      if (after !== before) {\r\n        node.nodeValue = after;\r\n        changed += 1;\r\n\r\n        localChanges.forEach(function (item) {\r\n          addChange(changes, item);\r\n        });\r\n\r\n        hideIfEmpty(node.parentElement);\r\n      }\r\n    }\r\n\r\n    return changed;\r\n  }\r\n\r\n  function setText(node, value, changes, reason) {\r\n    if (!node) return false;\r\n\r\n    if (clean(node.textContent) === value) {\r\n      return false;\r\n    }\r\n\r\n    node.textContent = value;\r\n    addChange(changes, reason || value);\r\n    return true;\r\n  }\r\n\r\n  function structuralCleanup(root, changes) {\r\n    var changed = 0;\r\n\r\n    var noraRoot =\r\n      root.matches &&\r\n      root.matches(\r\n        '[data-gdx-r34-cr07-a3-root=\"1\"]'\r\n      )\r\n        ? root\r\n        : root.querySelector &&\r\n          root.querySelector(\r\n            '[data-gdx-r34-cr07-a3-root=\"1\"]'\r\n          );\r\n\r\n    if (noraRoot) {\r\n      var state =\r\n        noraRoot.getAttribute(\r\n          \"data-gdx-r34-cr07-a3-state\"\r\n        );\r\n\r\n      var toggle =\r\n        noraRoot.querySelector(\r\n          '[data-gdx-r34-cr07-a3-action=\"toggle\"]'\r\n        );\r\n\r\n      changed += setText(\r\n        toggle,\r\n        state === \"expanded\"\r\n          ? \"Alternatifi kapat\"\r\n          : \"Alternatif Kurulumlar\u0131 G\u00F6r\",\r\n        changes,\r\n        \"NORA approved button\"\r\n      )\r\n        ? 1\r\n        : 0;\r\n\r\n      changed += setText(\r\n        noraRoot.querySelector(\r\n          \".gdx-cr07-a3-secondary-head h5\"\r\n        ),\r\n        \"NORA Alternatif Kurulumu\",\r\n        changes,\r\n        \"NORA alternative heading\"\r\n      )\r\n        ? 1\r\n        : 0;\r\n\r\n      changed += setText(\r\n        noraRoot.querySelector(\r\n          \".gdx-r33-cr02-compact-schema-head b\"\r\n        ),\r\n        \"Alternatif Kurulum \u015Eemas\u0131\",\r\n        changes,\r\n        \"NORA schema heading\"\r\n      )\r\n        ? 1\r\n        : 0;\r\n\r\n      Array.prototype.slice.call(\r\n        noraRoot.querySelectorAll(\r\n          \".gdx-r33-cr02-compact-schema-head span,\" +\r\n          \".gdx-cr07-a3-values-head small\"\r\n        )\r\n      ).forEach(function (node) {\r\n        if (\r\n          /NORA\\s+(?:alternatif|e\u011Fitim|de\u011Ferlendirme)/i\r\n            .test(clean(node.textContent))\r\n        ) {\r\n          if (\r\n            setText(\r\n              node,\r\n              \"NORA de\u011Ferlendirmesi\",\r\n              changes,\r\n              \"NORA model label\"\r\n            )\r\n          ) {\r\n            changed += 1;\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    Array.prototype.slice.call(\r\n      root.querySelectorAll(\r\n        \"[data-gdx-panel-r18-r7-cart-status='1']\"\r\n      )\r\n    ).forEach(function (node) {\r\n      if (\r\n        /Modal kapanmadan sepete ekler/i\r\n          .test(clean(node.textContent))\r\n      ) {\r\n        node.hidden = true;\r\n        node.textContent = \"\";\r\n        changed += 1;\r\n        addChange(\r\n          changes,\r\n          \"Modal kapanmadan sepete ekler.\"\r\n        );\r\n      }\r\n    });\r\n\r\n    Array.prototype.slice.call(\r\n      root.querySelectorAll(\"*\")\r\n    ).forEach(function (node) {\r\n      var text =\r\n        clean(node.textContent);\r\n\r\n      if (\r\n        text === \"Panel LED \u2194 Panel LED\" ||\r\n        text === \"Ayn\u0131 modelden okunur\"\r\n      ) {\r\n        node.hidden = true;\r\n        node.textContent = \"\";\r\n        changed += 1;\r\n        addChange(changes, text);\r\n      }\r\n    });\r\n\r\n    var productPoolHeading =\r\n      Array.prototype.slice.call(\r\n        root.querySelectorAll(\"*\")\r\n      ).find(function (node) {\r\n        return clean(node.textContent) ===\r\n          \"\u00DCR\u00DCN HAVUZU\";\r\n      });\r\n\r\n    if (productPoolHeading) {\r\n      var container =\r\n        productPoolHeading.parentElement &&\r\n        productPoolHeading.parentElement.parentElement\r\n          ? productPoolHeading.parentElement.parentElement\r\n          : productPoolHeading.parentElement;\r\n\r\n      if (container) {\r\n        Array.prototype.slice.call(\r\n          container.querySelectorAll(\"*\")\r\n        ).forEach(function (node) {\r\n          if (/^[0-9]+\\s+\u00FCr\u00FCn$/i.test(\r\n            clean(node.textContent)\r\n          )) {\r\n            node.hidden = true;\r\n            node.textContent = \"\";\r\n            changed += 1;\r\n            addChange(changes, \"duplicate product count\");\r\n          }\r\n        });\r\n      }\r\n    }\r\n\r\n    return changed;\r\n  }\r\n\r\n  function apply() {\r\n    var allRoots =\r\n      roots();\r\n\r\n    var changes = [];\r\n    var changed = 0;\r\n\r\n    allRoots.forEach(function (root) {\r\n      changed +=\r\n        normalizeTextNodes(root, changes);\r\n\r\n      changed +=\r\n        structuralCleanup(root, changes);\r\n    });\r\n\r\n    runCount += 1;\r\n    changedTextNodeCount += changed;\r\n    lastChanges = changes.slice();\r\n\r\n    return {\r\n      ok: true,\r\n      phase:\r\n        \"PANEL-V4-R35-CR03-CONSOLIDATED-CUSTOMER-COPY\",\r\n      version:\r\n        VERSION,\r\n      rootCount:\r\n        allRoots.length,\r\n      changedTextNodes:\r\n        changed,\r\n      changedPhrases:\r\n        changes\r\n    };\r\n  }\r\n\r\n  function schedule() {\r\n    if (scheduled) return;\r\n\r\n    scheduled = true;\r\n\r\n    var enqueue =\r\n      typeof W.queueMicrotask === \"function\"\r\n        ? W.queueMicrotask\r\n        : function (fn) {\r\n            Promise.resolve().then(fn);\r\n          };\r\n\r\n    enqueue(function () {\r\n      scheduled = false;\r\n      apply();\r\n    });\r\n  }\r\n\r\n  function install() {\r\n    apply();\r\n\r\n    if (observer) {\r\n      return status();\r\n    }\r\n\r\n    var target =\r\n      D.body ||\r\n      D.documentElement;\r\n\r\n    if (!target) {\r\n      return status();\r\n    }\r\n\r\n    observer =\r\n      new MutationObserver(function (mutations) {\r\n        var relevant =\r\n          mutations.some(function (mutation) {\r\n            return (\r\n              mutation.type ===\r\n                \"characterData\" ||\r\n              (\r\n                mutation.type ===\r\n                  \"childList\" &&\r\n                mutation.addedNodes &&\r\n                mutation.addedNodes.length > 0\r\n              )\r\n            );\r\n          });\r\n\r\n        if (relevant) schedule();\r\n      });\r\n\r\n    observer.observe(\r\n      target,\r\n      {\r\n        childList: true,\r\n        subtree: true,\r\n        characterData: true\r\n      }\r\n    );\r\n\r\n    return status();\r\n  }\r\n\r\n  function visibleText() {\r\n    return roots()\r\n      .map(function (root) {\r\n        return String(\r\n          root.innerText ||\r\n          root.textContent ||\r\n          \"\"\r\n        );\r\n      })\r\n      .join(\"\\n\");\r\n  }\r\n\r\n  function auditCopy() {\r\n    var text =\r\n      visibleText();\r\n\r\n    var forbidden = [\r\n      \"P27 Kullan\u0131m ve Setup Analizi\",\r\n      \"P27 KISA ANAL\u0130Z \u00D6ZET\u0130\",\r\n      \"P27 detaylar\u0131 kapal\u0131 akordeonda tutulur\",\r\n      \"Detayl\u0131 P27 analizini a\u00E7\",\r\n      \"P28 SETUP \u015EEMASI\",\r\n      \"ALTERNAT\u0130F \u00DCR\u00DCN SETUP \u015EEMASI\",\r\n      \"D\u0130NAM\u0130K SETUP\",\r\n      \"SETUP ZEKASI\",\r\n      \"Modal kapanmadan sepete ekler.\",\r\n      \"\u00DCr\u00FCn veri etiketleri\",\r\n      \"ALT AMA\u00C7 A\u011EIRLIKLARI\",\r\n      \"AMA\u00C7 & F/P DENGES\u0130\",\r\n      \"FP14 kan\u0131t\",\r\n      \"Genel Panel LED FP14\",\r\n      \"NORA e\u011Fitim modeli\",\r\n      \"NORA alternatif modeli\",\r\n      \"NORA d\u00FCr\u00FCst uyar\u0131\",\r\n      \"Farkl\u0131 karakteri incele\",\r\n      \"Di\u011Fer Alternatif \u00D6neriler\",\r\n      \"Ayn\u0131 modelden okunur\",\r\n      \"Panel LED \u2194 Panel LED\",\r\n      \"clinical_symmetric\",\r\n      \"readonly preview\",\r\n      \"Bu de\u011Ferleri ana g\u00F6rselle ayn\u0131 tut.\",\r\n      \"\u00FCr\u00FCn b\u00FCt\u00FCn setup de\u011Fildir.\",\r\n      \"14 Kriter / 100 A\u011F\u0131rl\u0131k\",\r\n      \"Barlar skor fark\u0131n\u0131\",\r\n      \"T\u00FCretilmi\u015F \u0131\u015F\u0131k g\u00FCc\u00FC aral\u0131\u011F\u0131\",\r\n      \"Eksik/validasyon isteyen alanlar\",\r\n      \"mobil g\u00FC\u00E7 + ta\u015F\u0131ma sinyali\",\r\n      \"F/P \u00D6neri\",\r\n      \"Rol Kan\u0131t\u0131\",\r\n      \"Di\u011Fer setup rolleri\",\r\n      \"\u00DCr\u00FCn b\u00FCt\u00FCn setup de\u011Fildir.\",\r\n      \"Yak\u0131n Mesafe\",\r\n      \"Orta Mesafe\",\r\n      \"Uzak Mesafe\",\r\n      \"A\u011F\u0131rl\u0131k:\"\r\n    ];\r\n\r\n    var found =\r\n      forbidden.filter(function (phrase) {\r\n        return text.indexOf(phrase) > -1;\r\n      });\r\n\r\n    var noraRoot =\r\n      D.querySelector(\r\n        '[data-gdx-r34-cr07-a3-root=\"1\"]'\r\n      );\r\n\r\n    var noraText =\r\n      clean(\r\n        noraRoot &&\r\n        noraRoot.innerText\r\n      );\r\n\r\n    var checks = {\r\n      installed:\r\n        !!observer,\r\n\r\n      auditFindingCount107:\r\n        AUDIT_FINDING_COUNT === 107,\r\n\r\n      forbiddenVisibleCopyAbsent:\r\n        found.length === 0,\r\n\r\n      approvedNoraButtonPreserved:\r\n        !noraRoot ||\r\n        noraText.indexOf(\r\n          \"Alternatif Kurulumlar\u0131 G\u00F6r\"\r\n        ) > -1 ||\r\n        noraText.indexOf(\r\n          \"Alternatifi kapat\"\r\n        ) > -1,\r\n\r\n      riskWarningPreserved:\r\n        !noraRoot ||\r\n        noraText.indexOf(\r\n          \"NORA Risk Uyar\u0131s\u0131\"\r\n        ) > -1 ||\r\n        !D.querySelector(\r\n          '[data-gdx-r34-cr07-a3-secondary=\"1\"]'\r\n        )\r\n    };\r\n\r\n    var failed =\r\n      Object.keys(checks).filter(function (key) {\r\n        return checks[key] !== true;\r\n      });\r\n\r\n    return {\r\n      ok:\r\n        failed.length === 0,\r\n\r\n      phase:\r\n        \"PANEL-V4-R35-CR03-CONSOLIDATED-CUSTOMER-COPY-AUDIT\",\r\n\r\n      version:\r\n        VERSION,\r\n\r\n      checks:\r\n        checks,\r\n\r\n      failed:\r\n        failed,\r\n\r\n      diagnostics: {\r\n        forbiddenFound:\r\n          found,\r\n\r\n        runCount:\r\n          runCount,\r\n\r\n        changedTextNodeCount:\r\n          changedTextNodeCount,\r\n\r\n        lastChanges:\r\n          lastChanges.slice()\r\n      }\r\n    };\r\n  }\r\n\r\n  function status() {\r\n    return {\r\n      phase:\r\n        \"PANEL-V4-R35-CR03-CONSOLIDATED-CUSTOMER-COPY\",\r\n\r\n      version:\r\n        VERSION,\r\n\r\n      installed:\r\n        !!observer,\r\n\r\n      auditFindingCount:\r\n        AUDIT_FINDING_COUNT,\r\n\r\n      runCount:\r\n        runCount,\r\n\r\n      changedTextNodeCount:\r\n        changedTextNodeCount,\r\n\r\n      approvedNoraButton:\r\n        \"Alternatif Kurulumlar\u0131 G\u00F6r\"\r\n    };\r\n  }\r\n\r\n  W[API_KEY] = {\r\n    version:\r\n      VERSION,\r\n\r\n    install:\r\n      install,\r\n\r\n    apply:\r\n      apply,\r\n\r\n    audit:\r\n      auditCopy,\r\n\r\n    status:\r\n      status\r\n  };\r\n\r\n  if (D.readyState === \"loading\") {\r\n    D.addEventListener(\r\n      \"DOMContentLoaded\",\r\n      install,\r\n      { once: true }\r\n    );\r\n  } else {\r\n    install();\r\n  }\r\n})(window, document);\r\n\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 R36 R1 PREMIUM DUAL THEME CONTROLLER\r\n   M\u00DCH\u00DCR: PANEL-V4-R36-R1-DUAL-THEME-CONTROLLER\r\n   KAPSAM:\r\n   - A\u00E7\u0131k / Koyu selector\r\n   - Preference persistence\r\n   - Scoped root dataset switching\r\n   - Business logic untouched\r\n   ========================================================= */\r\n(function (W, D) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-R36-R1-DUAL-THEME-CONTROLLER\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n  var STORAGE_KEY = \"PANEL_V4_R36_THEME_PREFERENCE\";\r\n  var DEFAULT_THEME = \"dark\";\r\n  var THEMES = {\r\n    light: { label: \"A\u00E7\u0131k\", title: \"A\u00E7\u0131k 05 \u2014 Champagne Teal\" },\r\n    dark: { label: \"Koyu\", title: \"Mevcut Koyu 04 \u2014 Teal Depth\" }\r\n  };\r\n\r\n  function root() {\r\n    return D.getElementById(ROOT_ID);\r\n  }\r\n\r\n  function validTheme(value) {\r\n    return value === \"light\" || value === \"dark\" ? value : DEFAULT_THEME;\r\n  }\r\n\r\n  function readStoredTheme() {\r\n    try {\r\n      return validTheme(W.localStorage.getItem(STORAGE_KEY) || DEFAULT_THEME);\r\n    } catch (err) {\r\n      return DEFAULT_THEME;\r\n    }\r\n  }\r\n\r\n  function writeStoredTheme(theme) {\r\n    try {\r\n      W.localStorage.setItem(STORAGE_KEY, validTheme(theme));\r\n    } catch (err) {}\r\n  }\r\n\r\n  function allButtons() {\r\n    return Array.prototype.slice.call(\r\n      D.querySelectorAll(\"#\" + ROOT_ID + \" [data-gdx-panel-set-theme]\")\r\n    );\r\n  }\r\n\r\n  function syncButtons(theme) {\r\n    allButtons().forEach(function (button) {\r\n      var isActive = button.getAttribute(\"data-gdx-panel-set-theme\") === theme;\r\n      button.setAttribute(\"aria-pressed\", isActive ? \"true\" : \"false\");\r\n      button.classList.toggle(\"is-active\", isActive);\r\n    });\r\n  }\r\n\r\n  function applyTheme(theme, options) {\r\n    options = options || {};\r\n    var next = validTheme(theme);\r\n    var r = root();\r\n    if (!r) return next;\r\n    r.setAttribute(\"data-gdx-panel-theme\", next);\r\n    r.setAttribute(\"data-gdx-panel-theme-title\", THEMES[next].title);\r\n    if (options.persist !== false) writeStoredTheme(next);\r\n    syncButtons(next);\r\n    W.__GDX_PANEL_V4_THEME__ = {\r\n      phase: VERSION,\r\n      theme: next,\r\n      title: THEMES[next].title\r\n    };\r\n    return next;\r\n  }\r\n\r\n  function buildToggle() {\r\n    var wrap = D.createElement(\"div\");\r\n    wrap.className = \"gdx-panel-v4-theme-tools\";\r\n    wrap.setAttribute(\"data-gdx-panel-theme-toggle\", \"1\");\r\n    wrap.innerHTML =\r\n      '<div class=\"gdx-panel-v4-theme-toggle\" role=\"group\" aria-label=\"Tema se\u00E7ici\">' +\r\n        '<button type=\"button\" class=\"gdx-panel-v4-theme-btn\" data-gdx-panel-set-theme=\"light\" aria-pressed=\"false\">A\u00E7\u0131k</button>' +\r\n        '<button type=\"button\" class=\"gdx-panel-v4-theme-btn\" data-gdx-panel-set-theme=\"dark\" aria-pressed=\"false\">Koyu</button>' +\r\n      '</div>';\r\n    return wrap;\r\n  }\r\n\r\n  function ensureToggle() {\r\n    var r = root();\r\n    if (!r) return false;\r\n    var head = r.querySelector(\"#gdxPanelV4Shell .gdx-panel-v4-head\");\r\n    if (!head) return false;\r\n    if (!head.querySelector(\"[data-gdx-panel-theme-toggle='1']\")) {\r\n      var close = head.querySelector(\".gdx-panel-v4-close\");\r\n      var toggle = buildToggle();\r\n      if (close && close.parentNode === head) {\r\n        head.insertBefore(toggle, close);\r\n      } else {\r\n        head.appendChild(toggle);\r\n      }\r\n    }\r\n    syncButtons(readStoredTheme());\r\n    return true;\r\n  }\r\n\r\n  function handleClick(event) {\r\n    var button = event.target && event.target.closest\r\n      ? event.target.closest(\"[data-gdx-panel-set-theme]\")\r\n      : null;\r\n    if (!button) return;\r\n    event.preventDefault();\r\n    applyTheme(button.getAttribute(\"data-gdx-panel-set-theme\"), { persist: true });\r\n  }\r\n\r\n  function status() {\r\n    var r = root();\r\n    return {\r\n      phase: VERSION,\r\n      ready: !!r,\r\n      currentTheme: r ? validTheme(r.getAttribute(\"data-gdx-panel-theme\") || DEFAULT_THEME) : DEFAULT_THEME,\r\n      storedTheme: readStoredTheme(),\r\n      toggleExists: !!D.querySelector(\"#\" + ROOT_ID + \" [data-gdx-panel-theme-toggle='1']\"),\r\n      title: r ? r.getAttribute(\"data-gdx-panel-theme-title\") || \"\" : \"\"\r\n    };\r\n  }\r\n\r\n  function install() {\r\n    var r = root();\r\n    if (!r) return false;\r\n    applyTheme(readStoredTheme(), { persist: false });\r\n    ensureToggle();\r\n    if (!D.__gdxPanelV4ThemeBound) {\r\n      D.addEventListener(\"click\", handleClick, true);\r\n      D.__gdxPanelV4ThemeBound = true;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  W.gdxPanelV4Theme = {\r\n    version: VERSION,\r\n    install: install,\r\n    apply: applyTheme,\r\n    status: status,\r\n    ensureToggle: ensureToggle,\r\n    storageKey: STORAGE_KEY\r\n  };\r\n\r\n  if (D.readyState === \"loading\") {\r\n    D.addEventListener(\"DOMContentLoaded\", install, { once: true });\r\n  } else {\r\n    install();\r\n  }\r\n\r\n  W.addEventListener(\"load\", function () {\r\n    install();\r\n  }, { once: true });\r\n})(window, document);\r\n\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 R36 R2 GLOBAL THEME BRIDGE + QA CORRECTION\r\n   M\u00DCH\u00DCR: PANEL-V4-R36-R2-GLOBAL-THEME-BRIDGE\r\n   AMA\u00C7:\r\n   - Detached gallery i\u00E7in HTML/BODY theme attr yay\u0131nlamak.\r\n   - R36-R1 controller API'sini bozmadan geni\u015Fletmek.\r\n   - Persistence semanti\u011Fini do\u011Fru okumak.\r\n   ========================================================= */\r\n(function (W, D) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-R36-R2-GLOBAL-THEME-BRIDGE\";\r\n  var STORAGE_KEY = \"PANEL_V4_R36_THEME_PREFERENCE\";\r\n\r\n  function validTheme(value) {\r\n    return value === \"light\" || value === \"dark\" ? value : \"dark\";\r\n  }\r\n\r\n  function publishGlobalTheme(theme) {\r\n    var next = validTheme(theme);\r\n    D.documentElement.setAttribute(\"data-gdx-panel-v4-theme\", next);\r\n    if (D.body) D.body.setAttribute(\"data-gdx-panel-v4-theme\", next);\r\n    return next;\r\n  }\r\n\r\n  function currentRootTheme() {\r\n    var root = D.getElementById(\"gdx-panel-led-v4-root\");\r\n    return validTheme(\r\n      root && root.getAttribute(\"data-gdx-panel-theme\")\r\n    );\r\n  }\r\n\r\n  function install() {\r\n    var api = W.gdxPanelV4Theme;\r\n    if (!api || typeof api.apply !== \"function\") return false;\r\n\r\n    if (!api.__r36r2Wrapped) {\r\n      var originalApply = api.apply;\r\n      api.apply = function (theme, options) {\r\n        var result = originalApply(theme, options);\r\n        publishGlobalTheme(result);\r\n        return result;\r\n      };\r\n      api.__r36r2Wrapped = true;\r\n    }\r\n\r\n    publishGlobalTheme(currentRootTheme());\r\n\r\n    W.GDX_PANEL_V4_R36_R2_THEME_BRIDGE = {\r\n      phase: VERSION,\r\n      currentTheme: currentRootTheme(),\r\n      htmlTheme: D.documentElement.getAttribute(\"data-gdx-panel-v4-theme\") || \"\",\r\n      bodyTheme: D.body ? (D.body.getAttribute(\"data-gdx-panel-v4-theme\") || \"\") : \"\",\r\n      storageKey: STORAGE_KEY\r\n    };\r\n\r\n    return true;\r\n  }\r\n\r\n  if (D.readyState === \"loading\") {\r\n    D.addEventListener(\"DOMContentLoaded\", install, { once: true });\r\n  } else {\r\n    install();\r\n  }\r\n\r\n  W.addEventListener(\"load\", install, { once: true });\r\n})(window, document);\r\n\r\n/* ============================================================================\r\n * PANEL LED V4 \u2014 R36-H R8-01\r\n * CUSTOMER COPY + REDUNDANCY CLEANUP\r\n * No scoring/ranking/product selection/cart/share-generation mutation.\r\n * ========================================================================== */\r\n(function (W) {\r\n  W.GDX_PANEL_V4_R36_H_R8_01 = Object.freeze({\r\n    phase: \"PANEL-V4-R36-H-R8-01-CUSTOMER-COPY-REDUNDANCY-CLEANUP\",\r\n    version: \"R8-01-V1\",\r\n    quickStartVisible: false,\r\n    recommendationCountBadgeVisible: false,\r\n    themeWordVisible: false,\r\n    nearResultCopy: \"K\u00FC\u00E7\u00FCk Farkla \u00D6nde / Sonu\u00E7 Berabere\"\r\n  });\r\n})(window);\r\n\r\n/* ============================================================================\r\n * PANEL LED V4 \u2014 PDF QA V3 FINAL CONSISTENCY GUARD\r\n * - Stock remains outside FP14, but out-of-stock purchase actions are disabled.\r\n * - Visible score difference is calculated from the visible rounded /100 scores.\r\n * - Parsed/derived field counts are not presented as manufacturer verification.\r\n * - Canonical F/P calibration is disclosed in customer-facing copy.\r\n * ========================================================================== */\r\n(function (W, D) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-PDF-QA-V4-SHARE-JOURNEY-NAV-GUARD\";\r\n  if (W.__PANEL_V4_PDF_QA_V3_GUARD__) return;\r\n  W.__PANEL_V4_PDF_QA_V3_GUARD__ = true;\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function norm(value) {\r\n    return clean(value).toLocaleLowerCase(\"tr-TR\").replace(/[^\\p{L}\\p{N}]+/gu, \" \").trim();\r\n  }\r\n\r\n  function qsa(selector, root) {\r\n    return Array.prototype.slice.call((root || D).querySelectorAll(selector));\r\n  }\r\n\r\n  function products() {\r\n    var api = W.GDX_PANEL_LED_V4 || {};\r\n    return api.state && Array.isArray(api.state.products) ? api.state.products : [];\r\n  }\r\n\r\n  function productTitle(product) {\r\n    product = product || {};\r\n    return clean(product.smartTitle || product.smartShortTitle || product.displayTitle || product.shortTitle || product.title || \"\");\r\n  }\r\n\r\n  function productKeys(product) {\r\n    product = product || {};\r\n    return [product.key, product.handle, product.id, product.title, product.shortTitle, product.smartTitle]\r\n      .map(norm)\r\n      .filter(Boolean);\r\n  }\r\n\r\n  function productForButton(button) {\r\n    var pool = products();\r\n    var candidates = [];\r\n    var current = button;\r\n\r\n    for (var i = 0; i < 7 && current; i += 1) {\r\n      [\r\n        current.getAttribute && current.getAttribute(\"data-gdx-panel-product-key\"),\r\n        current.getAttribute && current.getAttribute(\"data-gdx-panel-product-handle\"),\r\n        current.getAttribute && current.getAttribute(\"data-gdx-r11-key\"),\r\n        current.getAttribute && current.getAttribute(\"data-product-key\"),\r\n        current.getAttribute && current.getAttribute(\"data-gdx-panel-product-title\")\r\n      ].map(norm).filter(Boolean).forEach(function (value) { candidates.push(value); });\r\n      current = current.parentElement;\r\n    }\r\n\r\n    var byKey = pool.find(function (product) {\r\n      var keys = productKeys(product);\r\n      return candidates.some(function (candidate) { return keys.indexOf(candidate) > -1; });\r\n    });\r\n    if (byKey) return byKey;\r\n\r\n    var card = button.closest && button.closest(\"article,section,[data-gdx-r11-key],[data-gdx-panel-r21-r2-compact-card],.gdx-r11-card\");\r\n    var cardText = norm(card && card.innerText);\r\n    if (!cardText) return null;\r\n\r\n    return pool.find(function (product) {\r\n      var title = norm(productTitle(product));\r\n      return title && cardText.indexOf(title) > -1;\r\n    }) || null;\r\n  }\r\n\r\n  function markOutOfStock(button, product) {\r\n    if (!button || !product || product.available !== false) return false;\r\n    if (button.getAttribute(\"data-gdx-panel-pdf-qa-v3-stock-guard\") === \"out\" && button.disabled && clean(button.textContent) === \"Stok D\u0131\u015F\u0131\") return false;\r\n    button.disabled = true;\r\n    button.setAttribute(\"aria-disabled\", \"true\");\r\n    button.setAttribute(\"data-gdx-panel-pdf-qa-v3-stock-guard\", \"out\");\r\n    button.setAttribute(\"title\", \"Bu \u00FCr\u00FCn \u015Fu anda stok d\u0131\u015F\u0131\");\r\n    button.textContent = \"Stok D\u0131\u015F\u0131\";\r\n    button.style.cursor = \"not-allowed\";\r\n    button.style.opacity = \".68\";\r\n    button.style.background = \"#64748b\";\r\n    button.style.borderColor = \"#64748b\";\r\n    button.style.color = \"#ffffff\";\r\n    return true;\r\n  }\r\n\r\n  function enforceStockActions() {\r\n    var changed = 0;\r\n    qsa([\r\n      \"[data-gdx-panel-r17-r2-direct-add='1']\",\r\n      \"[data-gdx-panel-r18-r7-cart-button='1']\",\r\n      \"[data-gdx-panel-commerce-add]\"\r\n    ].join(\",\")).forEach(function (button) {\r\n      if (markOutOfStock(button, productForButton(button))) changed += 1;\r\n    });\r\n    return changed;\r\n  }\r\n\r\n  function normalizedCustomerText(value) {\r\n    var output = String(value == null ? \"\" : value);\r\n    output = output.replace(/(\\d+)\\s+do\u011Frulanm\u0131\u015F\\s*\\/\\s*(\\d+)\\s+yakla\u015F\u0131k/g, \"$1 kaynak e\u015Fle\u015Fmesi \u00B7 $2 t\u00FCretilmi\u015F de\u011Fer\");\r\n    output = output.replace(/Do\u011Frulanm\u0131\u015F \\+ destek/g, \"Kaynak verisi + hesaplama\");\r\n    output = output.replace(/Do\u011Frulanm\u0131\u015F veri/g, \"Kaynak verisi\");\r\n    output = output.replace(/14 teknik kritere g\u00F6re hesaplan\u0131r\\./g, \"Genel F/P; fiyat, teknik \u00F6zellikler ve kullan\u0131m dengesini 14 kriter \u00FCzerinden de\u011Ferlendirir.\");\r\n    return output;\r\n  }\r\n\r\n  function normalizeCustomerCopy() {\r\n    var root = D.querySelector(\"#gdx-panel-led-v4-root\") || D.body;\r\n    if (!root || !D.createTreeWalker) return 0;\r\n    var changed = 0;\r\n    var walker = D.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\r\n    var nodes = [];\r\n    while (walker.nextNode()) nodes.push(walker.currentNode);\r\n    nodes.forEach(function (node) {\r\n      var parent = node.parentElement;\r\n      if (!parent || parent.closest(\"script,style,textarea,code,pre\")) return;\r\n      var before = node.nodeValue;\r\n      var after = normalizedCustomerText(before);\r\n      if (after !== before) {\r\n        node.nodeValue = after;\r\n        changed += 1;\r\n      }\r\n    });\r\n    return changed;\r\n  }\r\n\r\n  function compareResult() {\r\n    var ui = W.GDX_PANEL_LED_V4_UI || {};\r\n    return ui.state && ui.state.compareResult && ui.state.compareResult.ok ? ui.state.compareResult : null;\r\n  }\r\n\r\n  function visibleDifference100(result) {\r\n    if (!result || !result.winner || !result.loser) return null;\r\n    var winner = Math.round(Number(result.winner.score100 !== undefined ? result.winner.score100 : Number(result.winner.score || 0) * 10));\r\n    var loser = Math.round(Number(result.loser.score100 !== undefined ? result.loser.score100 : Number(result.loser.score || 0) * 10));\r\n    return Math.abs(winner - loser);\r\n  }\r\n\r\n  function syncVisibleDifference() {\r\n    var difference = visibleDifference100(compareResult());\r\n    if (difference === null) return 0;\r\n    var root = D.querySelector(\"#gdx-panel-led-v4-root\") || D.body;\r\n    if (!root) return 0;\r\n    var changed = 0;\r\n    var walker = D.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\r\n    var nodes = [];\r\n    while (walker.nextNode()) nodes.push(walker.currentNode);\r\n    nodes.forEach(function (node) {\r\n      var before = String(node.nodeValue || \"\");\r\n      var after = before.replace(/Skor fark\u0131:\\s*\\d+(?:[.,]\\d+)?\\s*puan/g, \"Skor fark\u0131: \" + difference + \" puan\");\r\n      if (after !== before) {\r\n        node.nodeValue = after;\r\n        changed += 1;\r\n      }\r\n    });\r\n    return changed;\r\n  }\r\n\r\n  function ensureShareJourneyJump() {\r\n    var nav = D.querySelector(\"#gdx-panel-led-v4-root [data-gdx-panel-result-jump-nav='1']\");\r\n    if (!nav) return 0;\r\n\r\n    var buttons = qsa(\"[data-gdx-panel-jump='share']\", nav);\r\n    var changed = 0;\r\n\r\n    /* Exactly one navigation CTA is allowed. It only jumps to the final share area;\r\n       it does not prepare or invoke the device share action itself. */\r\n    if (!buttons.length) {\r\n      var button = D.createElement(\"button\");\r\n      button.type = \"button\";\r\n      button.setAttribute(\"data-gdx-panel-jump\", \"share\");\r\n      button.setAttribute(\"aria-label\", \"Sonucu payla\u015F b\u00F6l\u00FCm\u00FCne git\");\r\n      button.textContent = \"Sonucu Payla\u015F\";\r\n      nav.appendChild(button);\r\n      buttons = [button];\r\n      changed += 1;\r\n    }\r\n\r\n    buttons.forEach(function (button, index) {\r\n      if (index > 0) {\r\n        if (button.parentNode) button.parentNode.removeChild(button);\r\n        changed += 1;\r\n        return;\r\n      }\r\n      if (clean(button.textContent) !== \"Sonucu Payla\u015F\") {\r\n        button.textContent = \"Sonucu Payla\u015F\";\r\n        changed += 1;\r\n      }\r\n      if (button.getAttribute(\"aria-label\") !== \"Sonucu payla\u015F b\u00F6l\u00FCm\u00FCne git\") {\r\n        button.setAttribute(\"aria-label\", \"Sonucu payla\u015F b\u00F6l\u00FCm\u00FCne git\");\r\n        changed += 1;\r\n      }\r\n    });\r\n\r\n    return changed;\r\n  }\r\n\r\n  function placeShareAtJourneyEnd() {\r\n    var body = D.querySelector(\"#gdx-panel-led-v4-root .gdx-panel-v4-body\");\r\n    var share = D.getElementById(\"gdxPanelV4SharePreview\");\r\n    var shareCard = D.getElementById(\"gdxPanelV4ShareCardPreview\");\r\n    if (!body || !share) return 0;\r\n\r\n    var correct = share.parentElement === body && (\r\n      shareCard\r\n        ? share.nextElementSibling === shareCard && shareCard.parentElement === body && shareCard === body.lastElementChild\r\n        : share === body.lastElementChild\r\n    );\r\n    if (correct) return 0;\r\n\r\n    body.appendChild(share);\r\n    share.setAttribute(\"data-gdx-panel-share-final-position\", \"1\");\r\n    share.setAttribute(\"aria-label\", \"Kar\u015F\u0131la\u015Ft\u0131rma sonucunu payla\u015F\");\r\n    if (shareCard) body.appendChild(shareCard);\r\n    return 1;\r\n  }\r\n\r\n  function apply() {\r\n    return {\r\n      stockActions: enforceStockActions(),\r\n      customerCopy: normalizeCustomerCopy(),\r\n      visibleDifference: syncVisibleDifference(),\r\n      shareJourneyNavEnsured: ensureShareJourneyJump(),\r\n      earlyShareJumpsRemoved: 0,\r\n      shareJourneyEndPlacement: placeShareAtJourneyEnd()\r\n    };\r\n  }\r\n\r\n  var scheduled = false;\r\n  function schedule() {\r\n    if (scheduled) return;\r\n    scheduled = true;\r\n    W.requestAnimationFrame(function () {\r\n      scheduled = false;\r\n      apply();\r\n    });\r\n  }\r\n\r\n  if (D.readyState === \"loading\") D.addEventListener(\"DOMContentLoaded\", schedule, { once: true });\r\n  else schedule();\r\n\r\n  if (D.documentElement) {\r\n    new MutationObserver(schedule).observe(D.documentElement, { childList: true, subtree: true, characterData: true });\r\n  }\r\n\r\n  W.debugPanelV4PdfQaV3ConsistencyGuard = function () {\r\n    var result = compareResult();\r\n    var guarded = qsa(\"[data-gdx-panel-pdf-qa-v3-stock-guard='out']\");\r\n    return {\r\n      ok: guarded.every(function (button) { return button.disabled && clean(button.textContent) === \"Stok D\u0131\u015F\u0131\"; }),\r\n      version: VERSION,\r\n      applied: apply(),\r\n      guardedOutOfStockActionCount: guarded.length,\r\n      visibleScoreDifference100: visibleDifference100(result),\r\n      referencePoolSize: result && result.fpReferencePool ? Number(result.fpReferencePool.referencePoolSize || 0) : 0,\r\n      stockUsedAsFpCriterion: false,\r\n      earlyShareJumpCount: 0,\r\n      shareJourneyJumpCount: qsa(\"#gdx-panel-led-v4-root [data-gdx-panel-result-jump-nav='1'] [data-gdx-panel-jump='share']\").length,\r\n      shareJourneyJumpLabel: (function () {\r\n        var button = D.querySelector(\"#gdx-panel-led-v4-root [data-gdx-panel-result-jump-nav='1'] [data-gdx-panel-jump='share']\");\r\n        return button ? clean(button.textContent) : \"\";\r\n      })(),\r\n      earlyRealShareActionCount: qsa(\"#gdx-panel-led-v4-root [data-gdx-panel-result-jump-nav='1'] [data-gdx-panel-share-prepare], #gdx-panel-led-v4-root [data-gdx-panel-result-jump-nav='1'] [data-gdx-panel-share-now]\").length,\r\n      shareAtJourneyEnd: (function () {\r\n        var body = D.querySelector(\"#gdx-panel-led-v4-root .gdx-panel-v4-body\");\r\n        var share = D.getElementById(\"gdxPanelV4SharePreview\");\r\n        var shareCard = D.getElementById(\"gdxPanelV4ShareCardPreview\");\r\n        if (!body || !share || share.parentElement !== body) return false;\r\n        return shareCard\r\n          ? share.nextElementSibling === shareCard && shareCard === body.lastElementChild\r\n          : share === body.lastElementChild;\r\n      })()\r\n    };\r\n  };\r\n})(window, document);\r\n\r\n\r\n/* ========================================================================\r\n * PANEL LED V4 \u2014 FINAL UI CONSISTENCY MICRO-PATCH\r\n * Version: PANEL-V4-PDF-QA-V5-SETUP-COPY-ACCORDION-LABEL-GUARD\r\n *\r\n * Scope (locked):\r\n * - FP14 detail accordion label mirrors the real <details open> state.\r\n * - No score / ranking / product / setup geometry / share / commerce mutation.\r\n * - Setup customer-copy consistency is handled by the consolidated exactMap\r\n *   above; this guard only audits the final visible sentence.\r\n * ======================================================================== */\r\n(function (W, D) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"PANEL-V4-PDF-QA-V5-SETUP-COPY-ACCORDION-LABEL-GUARD\";\r\n  var TOGGLE_SELECTOR = \"#gdx-panel-led-v4-root [data-gdx-panel-fp14-detail-toggle='1']\";\r\n  var LABEL_SELECTOR = \"[data-gdx-panel-fp14-detail-label='1']\";\r\n  var WRONG_SETUP_COPY = \"G\u00FC\u00E7 ve mesafe fark\u0131 nedeniyle alternatif \u00FCr\u00FCn farkl\u0131 bir ba\u015Flang\u0131\u00E7 mesafesinde konumland\u0131r\u0131l\u0131r.\";\r\n  var CORRECT_SETUP_COPY = \"Alternatif \u00FCr\u00FCn i\u00E7in ayn\u0131 ba\u015Flang\u0131\u00E7 \u015Femas\u0131 g\u00F6sterilir; \u0131\u015F\u0131k \u015Fiddeti ve ger\u00E7ek \u00E7al\u0131\u015Fma mesafesi \u00FCr\u00FCn\u00FCn g\u00FCc\u00FCne ve \u00E7ekim ko\u015Fullar\u0131na g\u00F6re \u00E7ekim s\u0131ras\u0131nda ayr\u0131ca ayarlanmal\u0131d\u0131r.\";\r\n\r\n  function clean(value) {\r\n    return String(value == null ? \"\" : value).replace(/\\s+/g, \" \").trim();\r\n  }\r\n\r\n  function syncToggle(toggle) {\r\n    if (!toggle) return false;\r\n    var label = toggle.querySelector(LABEL_SELECTOR) || toggle.querySelector(\"summary span\");\r\n    if (!label) return false;\r\n    var expected = toggle.open ? \"T\u00FCm teknik kriterleri gizle\" : \"T\u00FCm teknik kriterleri g\u00F6ster\";\r\n    if (clean(label.textContent) === expected) return false;\r\n    label.textContent = expected;\r\n    return true;\r\n  }\r\n\r\n  function syncAll() {\r\n    var changed = 0;\r\n    Array.prototype.slice.call(D.querySelectorAll(TOGGLE_SELECTOR)).forEach(function (toggle) {\r\n      if (syncToggle(toggle)) changed += 1;\r\n    });\r\n    return changed;\r\n  }\r\n\r\n  var scheduled = false;\r\n  function schedule() {\r\n    if (scheduled) return;\r\n    scheduled = true;\r\n    W.requestAnimationFrame(function () {\r\n      scheduled = false;\r\n      syncAll();\r\n    });\r\n  }\r\n\r\n  D.addEventListener(\"toggle\", function (event) {\r\n    var target = event.target;\r\n    if (target && target.matches && target.matches(TOGGLE_SELECTOR)) syncToggle(target);\r\n  }, true);\r\n\r\n  if (D.readyState === \"loading\") D.addEventListener(\"DOMContentLoaded\", schedule, { once: true });\r\n  else schedule();\r\n\r\n  if (D.documentElement) {\r\n    new MutationObserver(schedule).observe(D.documentElement, {\r\n      childList: true,\r\n      subtree: true,\r\n      attributes: true,\r\n      attributeFilter: [\"open\"]\r\n    });\r\n  }\r\n\r\n  W.debugPanelV4FinalUiConsistencyV1 = function () {\r\n    var root = D.querySelector(\"#gdx-panel-led-v4-root\");\r\n    var visibleText = clean(root ? root.innerText : \"\");\r\n    var toggles = Array.prototype.slice.call(D.querySelectorAll(TOGGLE_SELECTOR));\r\n    var toggleStates = toggles.map(function (toggle) {\r\n      var label = toggle.querySelector(LABEL_SELECTOR) || toggle.querySelector(\"summary span\");\r\n      var actual = clean(label && label.textContent);\r\n      var expected = toggle.open ? \"T\u00FCm teknik kriterleri gizle\" : \"T\u00FCm teknik kriterleri g\u00F6ster\";\r\n      return {\r\n        open: !!toggle.open,\r\n        label: actual,\r\n        expected: expected,\r\n        ok: actual === expected\r\n      };\r\n    });\r\n\r\n    return {\r\n      ok:\r\n        visibleText.indexOf(WRONG_SETUP_COPY) === -1 &&\r\n        toggleStates.every(function (row) { return row.ok; }),\r\n      version: VERSION,\r\n      setupCopyWrongVisible: visibleText.indexOf(WRONG_SETUP_COPY) > -1,\r\n      setupCopyCorrectVisible: visibleText.indexOf(CORRECT_SETUP_COPY) > -1,\r\n      fp14ToggleCount: toggleStates.length,\r\n      fp14ToggleStates: toggleStates,\r\n      shareGuard: typeof W.debugPanelV4PdfQaV3ConsistencyGuard === \"function\"\r\n        ? W.debugPanelV4PdfQaV3ConsistencyGuard()\r\n        : null\r\n    };\r\n  };\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 FAZ07-G1 THEME ICON PARITY V1\r\n   Presentation-only micro phase.\r\n\r\n   OWNER:\r\n   Existing R36 theme controller remains the ONLY state/persistence owner.\r\n\r\n   CHANGE:\r\n   Visible \"A\u00E7\u0131k\" / \"Koyu\" button text -> \"\u2600\" / \"\u263E\".\r\n   Accessibility text remains:\r\n   aria-label/title = \"A\u00E7\u0131k tema\" / \"Koyu tema\".\r\n\r\n   NO business/share/restore mutation.\r\n   ========================================================= */\r\n(function (W, D) {\r\n  \"use strict\";\r\n\r\n  if (W.GDX_PANEL_V4_THEME_ICON_PARITY_G1_READY) return;\r\n  W.GDX_PANEL_V4_THEME_ICON_PARITY_G1_READY = true;\r\n\r\n  var VERSION = \"PANEL-FAZ07-G1-THEME-ICON-PARITY-V1\";\r\n  var ROOT_ID = \"gdx-panel-led-v4-root\";\r\n\r\n  function buttons() {\r\n    var root = D.getElementById(ROOT_ID);\r\n    if (!root) return [];\r\n    return Array.prototype.slice.call(\r\n      root.querySelectorAll(\"[data-gdx-panel-set-theme]\")\r\n    );\r\n  }\r\n\r\n  function iconFor(theme) {\r\n    return theme === \"light\" ? \"\u2600\" : theme === \"dark\" ? \"\u263E\" : \"\";\r\n  }\r\n\r\n  function labelFor(theme) {\r\n    return theme === \"light\" ? \"A\u00E7\u0131k tema\" : theme === \"dark\" ? \"Koyu tema\" : \"Tema\";\r\n  }\r\n\r\n  function applyIcons() {\r\n    var list = buttons();\r\n    list.forEach(function (button) {\r\n      var theme = button.getAttribute(\"data-gdx-panel-set-theme\");\r\n      var icon = iconFor(theme);\r\n      if (!icon) return;\r\n\r\n      button.textContent = icon;\r\n      button.setAttribute(\"aria-label\", labelFor(theme));\r\n      button.setAttribute(\"title\", labelFor(theme));\r\n      button.setAttribute(\"data-gdx-panel-theme-icon-only\", \"1\");\r\n    });\r\n\r\n    return list.length === 2;\r\n  }\r\n\r\n  function finiteRefresh() {\r\n    [0, 40, 120, 300, 700, 1400].forEach(function (ms) {\r\n      W.setTimeout(applyIcons, ms);\r\n    });\r\n  }\r\n\r\n  W.debugPanelV4ThemeIconParityQaV1 = function () {\r\n    applyIcons();\r\n\r\n    var list = buttons();\r\n    var light = list.find(function (button) {\r\n      return button.getAttribute(\"data-gdx-panel-set-theme\") === \"light\";\r\n    }) || null;\r\n    var dark = list.find(function (button) {\r\n      return button.getAttribute(\"data-gdx-panel-set-theme\") === \"dark\";\r\n    }) || null;\r\n\r\n    var result = {\r\n      ok: !!(\r\n        list.length === 2 &&\r\n        light &&\r\n        dark &&\r\n        String(light.textContent || \"\").trim() === \"\u2600\" &&\r\n        String(dark.textContent || \"\").trim() === \"\u263E\" &&\r\n        light.getAttribute(\"aria-label\") === \"A\u00E7\u0131k tema\" &&\r\n        dark.getAttribute(\"aria-label\") === \"Koyu tema\" &&\r\n        light.getAttribute(\"title\") === \"A\u00E7\u0131k tema\" &&\r\n        dark.getAttribute(\"title\") === \"Koyu tema\"\r\n      ),\r\n      version: VERSION,\r\n      buttonCount: list.length,\r\n      light: light ? {\r\n        text: String(light.textContent || \"\").trim(),\r\n        ariaLabel: light.getAttribute(\"aria-label\"),\r\n        title: light.getAttribute(\"title\"),\r\n        pressed: light.getAttribute(\"aria-pressed\"),\r\n        active: light.classList.contains(\"is-active\")\r\n      } : null,\r\n      dark: dark ? {\r\n        text: String(dark.textContent || \"\").trim(),\r\n        ariaLabel: dark.getAttribute(\"aria-label\"),\r\n        title: dark.getAttribute(\"title\"),\r\n        pressed: dark.getAttribute(\"aria-pressed\"),\r\n        active: dark.classList.contains(\"is-active\")\r\n      } : null,\r\n      stateOwner: \"PANEL_R36_EXISTING_THEME_CONTROLLER\",\r\n      visibleTextRemoved: !list.some(function (button) {\r\n        var text = String(button.textContent || \"\").trim();\r\n        return text === \"A\u00E7\u0131k\" || text === \"Koyu\";\r\n      }),\r\n      note: \"G1 changes only visible theme labels to sun/moon symbols. Existing R36 state/persistence remains owner.\"\r\n    };\r\n\r\n    console.log(result);\r\n    return result;\r\n  };\r\n\r\n  if (D.readyState === \"loading\") {\r\n    D.addEventListener(\"DOMContentLoaded\", finiteRefresh, { once: true });\r\n  } else {\r\n    finiteRefresh();\r\n  }\r\n\r\n  W.addEventListener(\"load\", finiteRefresh, { once: true });\r\n\r\n  /* Re-apply icons after the existing theme-controller public ensure call. */\r\n  try {\r\n    var api = W.gdxPanelV4Theme;\r\n    if (api && typeof api.ensureToggle === \"function\" && !api.__g1IconParityWrapped) {\r\n      var originalEnsure = api.ensureToggle;\r\n      api.ensureToggle = function () {\r\n        var value = originalEnsure.apply(api, arguments);\r\n        applyIcons();\r\n        return value;\r\n      };\r\n      api.__g1IconParityWrapped = true;\r\n    }\r\n  } catch (_) {}\r\n\r\n})(window, document);\r\n\r\n\r\n/* =========================================================\r\n   CANFOTO / GDX \u2014 ETAP 2 REV5\r\n   R2-H \u2014 PURPOSE/SUBPURPOSE REGISTRY V2\r\n   Proven semantic gap only: subject/model RGB rim-edge-contour.\r\n   No history.pushState. URL/state support is reversible serialization only;\r\n   R10 remains the SEO/history owner.\r\n   ========================================================= */\r\n;(function (W) {\r\n  \"use strict\";\r\n\r\n  var VERSION = \"CANFOTO-ETAP2-R2H-REGISTRY-V2-25-SELECTIONS-V1\";\r\n  var NEW_KEY = \"rgb_creative_video::subject_rim_edge\";\r\n  var SOURCE_KEY = \"rgb_creative_video::product_color_separation\";\r\n  var QUERY_PARAM = \"gdx_panel_selection\";\r\n\r\n  function clean(v) { return String(v == null ? \"\" : v).replace(/\\s+/g, \" \").trim(); }\r\n\r\n  function blueprint() {\r\n    try {\r\n      var fn = W.debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix;\r\n      var out = typeof fn === \"function\" ? fn() : null;\r\n      var bp = out && out.diagnostics ? out.diagnostics.selectionUiBlueprint : null;\r\n      return bp &&\r\n        Array.isArray(bp.mainPurposes) &&\r\n        bp.mainPurposes.length === 8 &&\r\n        Array.isArray(bp.flatSelections) &&\r\n        bp.flatSelections.length === 25\r\n          ? bp\r\n          : null;\r\n    } catch (_) { return null; }\r\n  }\r\n\r\n  function getSetupAlias(purposeKey, subPurposeKey) {\r\n    var key = clean(purposeKey) + \"::\" + clean(subPurposeKey);\r\n    if (key !== NEW_KEY) return null;\r\n    return {\r\n      targetSelectionKey: NEW_KEY,\r\n      sourceSelectionKey: SOURCE_KEY,\r\n      sourcePurposeKey: \"rgb_creative_video\",\r\n      sourceSubPurposeKey: \"product_color_separation\",\r\n      geometryPolicy: \"REUSE_EXISTING_R27_COLOR_SEPARATION_GEOMETRY\",\r\n      semanticRole: \"rim_edge_contour\",\r\n      reason: \"R2-H changes customer intent and role semantics; R4 shared V27 remains the final visible geometry owner.\"\r\n    };\r\n  }\r\n\r\n  function encodeSelectionKey(selectionKey) {\r\n    return encodeURIComponent(clean(selectionKey));\r\n  }\r\n\r\n  function decodeSelectionKey(value) {\r\n    try { return decodeURIComponent(clean(value)); } catch (_) { return clean(value); }\r\n  }\r\n\r\n  function toQuery(selectionKey) {\r\n    var key = clean(selectionKey);\r\n    return key ? (QUERY_PARAM + \"=\" + encodeSelectionKey(key)) : \"\";\r\n  }\r\n\r\n  function fromQuery(search) {\r\n    var q = clean(search || \"\");\r\n    if (q.charAt(0) === \"?\") q = q.slice(1);\r\n    var parts = q.split(\"&\");\r\n    for (var i = 0; i < parts.length; i += 1) {\r\n      var pair = parts[i].split(\"=\");\r\n      if (decodeURIComponent(pair[0] || \"\") === QUERY_PARAM) return decodeSelectionKey(pair.slice(1).join(\"=\"));\r\n    }\r\n    return \"\";\r\n  }\r\n\r\n  function applySelectionKey(selectionKey) {\r\n    var key = clean(selectionKey);\r\n    var parts = key.split(\"::\");\r\n    if (parts.length !== 2 || typeof W.setPanelV4R28Selection !== \"function\") return false;\r\n    try {\r\n      return !!W.setPanelV4R28Selection(parts[0], parts[1]);\r\n    } catch (_) { return false; }\r\n  }\r\n\r\n  function getCapability(productOrHandle, selectionKey) {\r\n    var r2g = W.GDX_PANEL_V4_R2G_EFFECTIVE_POWER_ROLE_TRUTH || null;\r\n    if (!r2g || typeof r2g.getCapability !== \"function\") return null;\r\n\r\n    var key = clean(selectionKey);\r\n    var sourceKey = key === NEW_KEY ? SOURCE_KEY : key;\r\n    var base = null;\r\n    try { base = r2g.getCapability(productOrHandle, sourceKey); } catch (_) { base = null; }\r\n    if (!base) return null;\r\n    if (key !== NEW_KEY) return base;\r\n\r\n    var copy = {};\r\n    Object.keys(base).forEach(function(k){ copy[k] = base[k]; });\r\n    var rim = r2g.roleTruth && r2g.roleTruth.rimLight ? r2g.roleTruth.rimLight : null;\r\n    var area = r2g.areaTruth && r2g.areaTruth.single_face_beauty_area\r\n      ? r2g.areaTruth.single_face_beauty_area\r\n      : null;\r\n\r\n    copy.selectionKey = NEW_KEY;\r\n    copy.r2hSourceSelectionKey = SOURCE_KEY;\r\n    copy.primaryRoleKey = \"rimLight\";\r\n    copy.primaryRoleLabel = rim ? rim.label : \"Kontur I\u015F\u0131\u011F\u0131\";\r\n    copy.distanceBands = rim && Array.isArray(rim.distances) ? rim.distances.slice() : [\"0.8\u20131.2 m\",\"1.2\u20132 m\"];\r\n    copy.areaKey = \"single_face_beauty_area\";\r\n    copy.areaLabel = area ? area.label : \"Tek Ki\u015Fi / Model Kontur Alan\u0131\";\r\n    copy.areaApproxM2 = area ? area.approxM2 : \"1\u20133 m\u00B2\";\r\n    copy.mainKeyEligible = false;\r\n    copy.caution = \"Bu se\u00E7imde ana rol RGB rim / edge / kontur ayr\u0131m\u0131d\u0131r; ana \u0131\u015F\u0131k uygunlu\u011Fu bu alt ama\u00E7tan t\u00FCretilmez.\";\r\n    return Object.freeze(copy);\r\n  }\r\n\r\n  function getRegistrySnapshot() {\r\n    var bp = blueprint();\r\n    var flat = bp && Array.isArray(bp.flatSelections) ? bp.flatSelections.slice() : [];\r\n    var rgb = bp && Array.isArray(bp.mainPurposes)\r\n      ? bp.mainPurposes.filter(function(p){ return clean(p.purposeKey) === \"rgb_creative_video\"; })[0]\r\n      : null;\r\n    return {\r\n      version: VERSION,\r\n      selectionCount: flat.length,\r\n      purposeCount: bp && Array.isArray(bp.mainPurposes) ? bp.mainPurposes.length : 0,\r\n      rgbSubpurposeCount: rgb && Array.isArray(rgb.subPurposes) ? rgb.subPurposes.length : 0,\r\n      newSelectionPresent: flat.some(function(row){ return clean(row.selectionKey) === NEW_KEY; }),\r\n      newSelectionKey: NEW_KEY,\r\n      legacySelectionCount: 24,\r\n      setupAlias: getSetupAlias(\"rgb_creative_video\", \"subject_rim_edge\")\r\n    };\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R2H_REGISTRY_V2 = Object.freeze({\r\n    version: VERSION,\r\n    newSelectionKey: NEW_KEY,\r\n    sourceSelectionKey: SOURCE_KEY,\r\n    queryParam: QUERY_PARAM,\r\n    getSetupAlias: getSetupAlias,\r\n    getCapability: getCapability,\r\n    getRegistrySnapshot: getRegistrySnapshot,\r\n    toQuery: toQuery,\r\n    fromQuery: fromQuery,\r\n    applySelectionKey: applySelectionKey\r\n  });\r\n})(window);\r\n\r\n/* CANFOTO R4-PA P1.20H \u2014 NORA USER LANGUAGE CLOSE V1 */\r\n\r\n\r\n/* =========================================================\r\n   CANFOTO LB2.4-R3.1 \u2014 VISIBLE COMPARE TRUTH PARITY V1\r\n   Presentation-only reconciliation.\r\n   - Exact CanonicalSetupDTO is re-applied to the VISIBLE P28/P31 DOM after\r\n     legacy renderers finish, closing internal-DTO vs visible-diagram drift.\r\n   - Purpose Score, ranking, General F/P formula, canonical setup owner,\r\n     PDP Top5, Collection R9 and commerce are untouched.\r\n   ========================================================= */\r\n(function(W,D){\r\n  \"use strict\";\r\n  var API_NAME = \"CANFOTO_LB24_R31_VISIBLE_COMPARE_PARITY\";\r\n  var VERSION = \"CANFOTO-LB2.4-R3.1-VISIBLE-COMPARE-PARITY-V1\";\r\n  if (W[API_NAME] && W[API_NAME].version === VERSION) return;\r\n\r\n  var timer = 0;\r\n  var applying = false;\r\n  var observer = null;\r\n\r\n  function clean(v){ return String(v == null ? \"\" : v).replace(/\\s+/g, \" \").trim(); }\r\n  function root(){ return D.getElementById(\"gdx-panel-led-v4-root\"); }\r\n  function bridge(){ return W.CANFOTO_LB24_R3_COMPARE_TRUTH || null; }\r\n\r\n  function canonicalRoleLabels(preview){\r\n    var dto = preview && preview.r3Dto;\r\n    return dto && Array.isArray(dto.powered) ? dto.powered.map(function(r){ return clean(r && r.label); }).filter(Boolean) : [];\r\n  }\r\n\r\n  function makeStepLi(step,index){\r\n    var li=D.createElement(\"li\"), b=D.createElement(\"b\"), span=D.createElement(\"span\");\r\n    b.textContent=String(index+1); span.textContent=clean(step); li.appendChild(b); li.appendChild(span); return li;\r\n  }\r\n\r\n  function syncSection(section, preview, slot){\r\n    if (!section || !preview || !preview.ok || !preview.r3ExactCanonical) return false;\r\n    var changed=false;\r\n    var canvas=section.querySelector(\".gdx-p28-schema-canvas\");\r\n    var sideOl=section.querySelector(\".gdx-p28-schema-side ol\");\r\n    var sideTitle=section.querySelector(\".gdx-p28-schema-side > strong\");\r\n    var title=section.querySelector(\".gdx-p33-identity-title\");\r\n    var sub=section.querySelector(\".gdx-p33-identity-sub\");\r\n    var kicker=section.querySelector(\".gdx-p28-kicker\");\r\n    var summary=section.querySelector(\".gdx-p28-schema-summary\");\r\n    var roles=canonicalRoleLabels(preview);\r\n    var desiredSummary=roles.concat([clean(preview.selectedTemplateLabel)]).filter(Boolean).join(\" \u00B7 \");\r\n    var recordId=clean(preview.r3SetupRecordId);\r\n    var exactTie=preview.r3DecisionState === \"EXACT_TIE\";\r\n\r\n    if (section.getAttribute(\"data-lb24-r3-setup-record-id\") !== recordId) { section.setAttribute(\"data-lb24-r3-setup-record-id\",recordId); changed=true; }\r\n    if (section.getAttribute(\"data-lb24-r31-visible-canonical\") !== \"1\") { section.setAttribute(\"data-lb24-r31-visible-canonical\",\"1\"); changed=true; }\r\n\r\n    if (canvas) {\r\n      var svgHtml=String(preview.r3CanonicalSvgHtml || \"\");\r\n      var currentSvg=canvas.querySelector('svg[data-lb24-r3-canonical-setup=\"1\"]');\r\n      var currentRecord=currentSvg ? clean(currentSvg.getAttribute(\"data-setup-record-id\")) : \"\";\r\n      if (svgHtml && (!currentSvg || currentRecord !== recordId)) { canvas.innerHTML=svgHtml; changed=true; }\r\n      canvas.classList.add(\"is-r3-canonical-v27\");\r\n      canvas.setAttribute(\"data-lb24-r31-visible-canvas\",\"1\");\r\n    }\r\n\r\n    if (sideTitle && clean(sideTitle.textContent) !== \"3 ad\u0131ml\u0131 kurulum \u00F6zeti\") { sideTitle.textContent=\"3 ad\u0131ml\u0131 kurulum \u00F6zeti\"; changed=true; }\r\n\r\n    if (sideOl) {\r\n      var desired=(preview.steps || []).slice(0,3).map(clean);\r\n      var current=Array.prototype.map.call(sideOl.querySelectorAll(\"li span\"),function(el){return clean(el.textContent);});\r\n      if (current.join(\"||\") !== desired.join(\"||\")) {\r\n        while(sideOl.firstChild) sideOl.removeChild(sideOl.firstChild);\r\n        desired.forEach(function(step,index){ sideOl.appendChild(makeStepLi(step,index)); }); changed=true;\r\n      }\r\n    }\r\n\r\n    if (title && clean(title.textContent) !== clean(preview.title)) { title.textContent=clean(preview.title); changed=true; }\r\n    if (sub && clean(sub.textContent) !== clean(preview.selectedTemplateLabel)) { sub.textContent=clean(preview.selectedTemplateLabel); changed=true; }\r\n    if (kicker) {\r\n      var desiredKicker=exactTie ? (slot+\" \u00DCR\u00DCN\u00DC KURULUMU\") : (slot===\"A\" ? \"\u00D6NER\u0130LEN KURULUM\" : \"D\u0130\u011EER \u00DCR\u00DCN KURULUMU\");\r\n      if (clean(kicker.textContent) !== desiredKicker) { kicker.textContent=desiredKicker; changed=true; }\r\n    }\r\n    if (summary && clean(summary.textContent) !== clean(desiredSummary)) { summary.textContent=desiredSummary; changed=true; }\r\n    return changed;\r\n  }\r\n\r\n  function syncAnchor(preview){\r\n    var r=root(); if(!r || !preview || !preview.ok) return false;\r\n    var block=r.querySelector('[data-gdx-panel-p27-block=\"role_setup_preview\"]');\r\n    if(!block) return false;\r\n    var roles=canonicalRoleLabels(preview);\r\n    var p=block.querySelector(\"p\");\r\n    var chip=block.querySelector(\".gdx-p27-data-chip\");\r\n    var desired=\"\u00D6nerilen \u0131\u015F\u0131k g\u00F6revi ve \u00E7al\u0131\u015Fma mesafeleri a\u015Fa\u011F\u0131daki setup \u015Femas\u0131nda g\u00F6sterilir \u00B7 \" + roles.join(\" + \") + \" \u00B7 \" + clean(preview.selectedTemplateLabel);\r\n    var changed=false;\r\n    if(p && clean(p.textContent)!==clean(desired)){p.textContent=desired; changed=true;}\r\n    if(chip && clean(chip.textContent)!==roles.join(\" + \")){chip.textContent=roles.join(\" + \"); changed=true;}\r\n    block.setAttribute(\"data-lb24-r31-anchor-canonical\",\"1\");\r\n    return changed;\r\n  }\r\n\r\n  function apply(){\r\n    if(applying) return false;\r\n    var r=root(), b=bridge();\r\n    if(!r || !b || typeof b.buildPreview!==\"function\") return false;\r\n    var pa=b.primaryProduct && b.primaryProduct();\r\n    var pb=b.secondaryProduct && b.secondaryProduct();\r\n    if(!pa || !pb) return false;\r\n    var a=b.buildPreview(pa,\"A\"), bb=b.buildPreview(pb,\"B\");\r\n    if(!a || !a.ok || !bb || !bb.ok) return false;\r\n    applying=true;\r\n    try {\r\n      syncSection(r.querySelector('[data-gdx-panel-p28-schematic=\"1\"]'),a,\"A\");\r\n      syncSection(r.querySelector('[data-gdx-panel-p31-alt-schematic=\"1\"]'),bb,\"B\");\r\n      syncAnchor(a);\r\n    } finally { applying=false; }\r\n    return true;\r\n  }\r\n\r\n  function schedule(){\r\n    if(timer) W.clearTimeout(timer);\r\n    timer=W.setTimeout(function(){timer=0; apply();},80);\r\n  }\r\n\r\n  function sectionDebug(selector,preview){\r\n    var r=root(), section=r?r.querySelector(selector):null;\r\n    var canvas=section?section.querySelector(\".gdx-p28-schema-canvas\"):null;\r\n    var texts=section?clean(section.textContent):\"\";\r\n    var expectedRoles=canonicalRoleLabels(preview);\r\n    return {\r\n      found:!!section,\r\n      setupRecordId:section?clean(section.getAttribute(\"data-lb24-r3-setup-record-id\")):\"\",\r\n      expectedSetupRecordId:preview&&preview.ok?clean(preview.r3SetupRecordId):\"\",\r\n      visibleCanonicalMarker:!!(section&&section.getAttribute(\"data-lb24-r31-visible-canonical\")===\"1\"),\r\n      visibleCanvasMarker:!!(canvas&&canvas.getAttribute(\"data-lb24-r31-visible-canvas\")===\"1\"),\r\n      expectedRoles:expectedRoles,\r\n      visibleText:texts,\r\n      expectedRolesVisible:expectedRoles.every(function(label){return texts.indexOf(label)>-1;}),\r\n      forbiddenRgbRearEdgeLeak:expectedRoles.indexOf(\"RGB Arka / Kenar\")===-1 && /RGB Arka\\s*\\/\\s*Kenar/i.test(texts)\r\n    };\r\n  }\r\n\r\n  function debug(){\r\n    var b=bridge();\r\n    var pa=b&&b.primaryProduct?b.primaryProduct():null, pb=b&&b.secondaryProduct?b.secondaryProduct():null;\r\n    var a=b&&pa&&b.buildPreview?b.buildPreview(pa,\"A\"):null;\r\n    var bb=b&&pb&&b.buildPreview?b.buildPreview(pb,\"B\"):null;\r\n    var da=sectionDebug('[data-gdx-panel-p28-schematic=\"1\"]',a);\r\n    var db=sectionDebug('[data-gdx-panel-p31-alt-schematic=\"1\"]',bb);\r\n    return {\r\n      ok:!!(a&&a.ok&&bb&&bb.ok&&da.found&&db.found&&da.visibleCanonicalMarker&&db.visibleCanonicalMarker&&da.setupRecordId===da.expectedSetupRecordId&&db.setupRecordId===db.expectedSetupRecordId&&da.expectedRolesVisible&&db.expectedRolesVisible&&!da.forbiddenRgbRearEdgeLeak&&!db.forbiddenRgbRearEdgeLeak),\r\n      version:VERSION, primary:da, secondary:db,\r\n      anchorCanonical:!!(root()&&root().querySelector('[data-gdx-panel-p27-block=\"role_setup_preview\"][data-lb24-r31-anchor-canonical=\"1\"]'))\r\n    };\r\n  }\r\n\r\n  W[API_NAME]=Object.freeze({version:VERSION,apply:apply,schedule:schedule,debug:debug,noTouch:{purposeScore:true,ranking:true,generalFpFormula:true,canonicalSetupOwner:true,pdpTop5:true,collectionR9:true,commerce:true}});\r\n\r\n  function start(){\r\n    schedule();\r\n    var r=root();\r\n    if(r && W.MutationObserver){\r\n      observer=new MutationObserver(function(){ if(!applying) schedule(); });\r\n      observer.observe(r,{childList:true,subtree:true,characterData:true});\r\n    }\r\n    D.addEventListener(\"click\",function(){schedule();},true);\r\n    W.addEventListener(\"resize\",schedule);\r\n  }\r\n  if(D.readyState===\"loading\") D.addEventListener(\"DOMContentLoaded\",start,{once:true}); else start();\r\n})(window,document);\r\n"],
  "mappings": "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CP,OAAO,iBACP,OAAO,UACT,EAGE,CAAC,KACD,CAAC,OAAO,WAER,cAAO,UACL,OAAO,KACH,uBACA,wBAED,OAAO,OACV,OAAO,MACL,qBACF,OAAO,UACL,OAAO,OACT,mBACE,KACA,qBACA,GACA,EACF,GAGF,mBACE,KACA,MACF,EAEO,CACL,GAAI,GACJ,MAAO,OAAO,MACd,KAAM,GACN,aAAc,EAChB,EAGF,OAAO,MACL,cACF,OAAO,yBACL,YACF,OAAO,UACL,sBAKF,OAAO,iBACL,GACF,OAAO,WACL,GAEF,mBACE,KACA,cACA,GACA,EACF,EAEA,SAAS,uBAAwB,CAC/B,MAAO,CACL,QACE,kBAAkB,EACpB,YACE,MAAM,GACN,MAAM,EAAE,cACN,wCACF,CACJ,CACF,CAEA,SAAS,0BACP,QACA,YACA,CACA,OACE,QAAQ,gBACN,OACF,QAAQ,oBACN,aACF,QAAQ,2BACN,aACF,QAAQ,QACN,eACF,cACE,MACF,KAAK,WAET,CAEA,SAAS,kCACP,QACA,YACA,CACA,OACE,QAAQ,gBACN,OACF,QAAQ,oBACN,aACF,cACE,MACF,KAAK,aACL,QAAQ,QACN,aAEN,CAEA,SAAS,uBACP,UACA,CACA,IAAI,SACF,sBAAsB,EAEpB,QACF,SAAS,QAEP,YACF,SAAS,YAEX,GACE,CAAC,0BACC,QACA,WACF,EACA,CACA,GACE,kCACE,QACA,WACF,EAEA,OAGF,QAAQ,UACN,qBAEF,mBACE,YACA,OACF,EAEA,MACF,CAEA,QAAQ,MACN,YACF,QAAQ,iBACN,GACF,QAAQ,WACN,GACF,QAAQ,UAAY,GACpB,QAAQ,UACN,WAAa,aAEf,GAAI,CACF,IAAI,OAAS,GACb,IAAI,WACF,KAAK,cACH,qCACF,EACE,YACF,WAAW,aACT,YACA,OACF,CAEJ,MAAiB,CAAC,CAElB,mBACE,KACA,YACA,GACA,EACF,EAEA,mBACE,KACA,OACF,CACF,CAEA,SAAS,uBACP,UACA,UACA,CACA,IAAI,SACF,sBAAsB,EAEpB,QACF,SAAS,QAEP,YACF,SAAS,YAEX,GACE,CAAC,0BACC,QACA,W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,OACF,QAAQ,iBAAmB,CAAC,EAE1B,SACF,4BACE,GACF,EAEE,SACF,SAAS,UAAY,CAAC,EAEpB,MACF,oBACE,IACA,QACF,EAEEE,aACF,iBAAiB,GAAG,EAElB,MACF,gBAAgB,GAAG,EAEjB,SACF,WACE,OAAO,qBACT,GACA,YACG,IAAI,KAAO,WAAW,GAAG,KAC5B,EAEEC,cACF,WAAW,IAAI,KAAK,GACpB,sBAEF,GAAI,MAAO,CACT,IAAI,MACF,MAAM,OAAS,CAAC,EAEd,SACF,MAAM,eAAiB,CAAC,EAEtB,UACF,WACE,SAAS,IACX,EAEE,UACF,UACA,gBAEE,WACE,SAAS,MACX,GACA,mBAEF,iBACA,WACE,SAAS,QACX,EACA,wBACA,YACE,SAAS,SACX,EACA,KACA,WACE,SAAS,IACX,EACA,iBACA,YACE,SAAS,OACX,EACA,qCAEE,MAAM,QACN,WACE,MAAM,OAAO,MACf,EACI,wBACA,WACE,MAAM,OAAO,MACf,EACA,IACA,IAGJ,SACFA,cACA,kBACA,UACA,8BAEE,MAAM,eAAe,OACjB,wCACA,MAAM,eAAe,KAAK,IAAI,EAC9B,KACA,IAEN,sEAEE,MAAQ,CACV,CACE,IACE,QACF,MACE,0BACF,KACE,aACE,UACA,GACF,CACJ,EACA,CACE,IACE,OACF,MACE,qCACF,KACE,aACE,SACA,GACF,CACJ,EACA,CACE,IACE,UACF,MACE,0BACF,KACE,aACE,eACE,IACA,KACF,EACA,GACF,CACJ,CACF,EAEA,MAAO,CACL,MACE,+CACF,QACE,oBACF,mBACE,WACE,OAAO,kBACT,EACF,YACE,WACE,SAAS,WACX,EACF,aACE,WACE,MAAM,YACR,EACF,WACE,uBACA,WACE,SAAS,WACX,EACF,aACE,WACE,OAAO,kBACT,EACF,gBACE,SACF,WACE,WACE,IAAI,GACN,EACF,aACEA,cACF,OACE,WACE,IAAI,MACN,EACF,YACED,aACF,MAEA,UACE,eAAe,GAAG,EACpB,iBACE,UACF,oBACE,UACF,eACE,MAAM,eAAe,MAAM,EAC7B,WACE,GACF,MACE,SACI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,EAE3B,aACF,WAAW,OAAO,kBAAkB,GACpC,WAAW,UAAU,kBAAkB,GACvC,WAAW,YAAY,EAAE,KAAK,EAE5B,gBACF,WAAW,OAAO,qBAAqB,GACvC,WAAW,UAAU,qBAAqB,GAC1C,YAAY,IAAI,KAAO,WAAW,GAAG,KAAK,EAExC,mBACF,WAAW,OAAO,kBAAkB,GACpC,WAAW,UAAU,kBAAkB,EAErC,UACF,OACA,MAAM,cACF,WACE,MAAM,cAAc,IACtB,EACA,eACE,QACA,GACF,EAEF,MAAQ,CACV,MACE,MACI,iDACA,yFAEN,QACE,MACI,oBACA,sDAEN,mBAGA,aAGA,gBAGA,YAEM,WADJ,MAEM,SAAS,YAGT,SAAS,WAFX,EAKN,aAEM,WADJ,MAEM,MAAM,OACN,MAAM,MAAM,aAGZ,SAAS,YAFX,EAKN,WACE,WACE,IAAI,GACN,EAEF,aACE,WAAW,IAAI,KAAK,GACpB,sBAEF,KACE,OACE,IAAI,MAAQ,CACd,EAEF,OACE,WACE,IAAI,MACN,EAEF,YACE,iBAAiB,GAAG,EAEtB,MACE,gBAAgB,GAAG,EAErB,aACE,OACE,IAAI,YACN,EAEF,QACE,OACE,IAAI,OACN,EAEF,UACE,OACE,IAAI,SACN,EAEF,iBACE,UAEF,WACE,CAAC,CAAC,MAEJ,eACE,MACI,MAAM,eAAe,MAAM,EAC3B,CAAC,CACT,EAEI,cACF,KAEE,aACF,EAAE,mCAEJ,GACE,cACA,OAAO,aACJ,2BACD,WAEF,GAAI,CACF,cACE,aACG,0BACC,CACE,WACE,MAAM,WACR,MACE,MAAM,aACR,QACE,IAAI,SAAW,IACjB,KACE,MAAM,KACR,gBACE,MAAM,aACR,uBACE,MAAM,aACR,SACE,MAAM,aACR,UACE,CACE,CACE,IACE,aACF,MACE,gBACF,SACE,MAAM,YACV,EACA,CACE,IACE,UACF,MACE,YACF,SACE,MAAM,SACV,EACA,CACE,IACE,aACF,MACE,qBACF,SACE,MAAM,OACV,CACF,CACJ,EACA,CACE,GACE,GACF,UACE,MAAM,mBACR,WACE,MAAM,mBACR,YACE,MAAM,gBACR,eACE,CACE,gBA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EAEA,OAAS,eACP,OACA,oIACA,8JACA,OACF,EAEA,OAAS,eACP,OACA,yCACA,mBACA,OACF,EAEA,OAAS,eACP,OACA,oCACA,mBACA,OACF,EAEA,OAAS,eACP,OACA,gCACA,mCACA,OACF,EAEA,OAAS,eACP,OACA,kHACA,yGACA,OACF,EAEA,OAAS,eACP,OACA,6EACA,4GACA,OACF,EAEA,OAAS,eACP,OACA,cACA,kCACA,OACF,EAEA,OAAS,eACP,OACA,kBACA,sCACA,OACF,EAEA,OAAS,eACP,OACA,6CACA,kDACA,OACF,EAEA,OAAS,eACP,OACA,kBACA,sBACA,OACF,EAEA,OAAS,eACP,OACA,kBACA,sBACA,OACF,EAEA,OAAS,eACP,OACA,mEACA,sHACA,OACF,EAEA,OAAS,eACP,OACA,iOACA,iKACA,OACF,EAEA,OAAS,eACP,OACA,yBACA,2BACA,OACF,EAEA,OAAS,eACP,OACA,yBACA,gCACA,OACF,EAEA,OAAS,eACP,OACA,2BACA,kCACA,OACF,EAEA,OAAS,eACP,OACA,yBACA,0DACA,OACF,EAEA,OAAS,eACP,OACA,uCACA,sCACA,OACF,EAEA,OAAS,eACP,OACA,6CACA,2EACA,OACF,EAEA,OAAS,eACP,OACA,4BACA,kCACA,OACF,EAEA,OAAS,eACP,OACA,eACA,YACA,OACF,EAEA,OAAS,eACP,OACA,uBACA,YACA,OACF,EAEA,OAAS,eACP,OACA,uBACA,qBACA,OACF,EAEA,OAAS,eACP,OACA,uBACA,qBACA,OACF,EAEA,OAAS,eACP,OACA,kBACA,kBACA,OACF,EAEA,OAAS,eACP,OACA,oBACA,kBACA,OACF,EAEA,OAAS,eACP,OACA,YACA,YACA,OACF,EAEA,OAAS,eACP,OACA,cACA,YACA,OACF,EAEA,OAAS,eACP,OACA,YACA,YACA,OACF,EAEA,OAAS,eACP,OACA,cACA,YACA,OACF,EAEA,OAAS,eACP,OACA,2BACA,sCACA,OACF,EAEA,OAAS,eACP,OACA,8CACA,sEACA,OACF,EAEA,OAAS,OAAO,QACd,yCACA,SA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",
  "names": ["window", "document", "uiState", "root", "r3ComparePriceText", "title", "grid", "result", "shell", "value", "state", "v", "ready", "bar", "family", "main", "familyLabel", "productTitle", "reasonText", "checks", "rect", "box", "selectionKey", "group", "button"]
}
