{
  "version": 3,
  "sources": ["/cdn/shop/t/107/assets/panel-led-v4.r32-ux-r3-purpose-modal.js?p2cr6r311atomicsync=20261004r1"],
  "sourcesContent": ["/* ============================================================================\r\n * PANEL LED V4 \u2014 R32 UX R3\r\n * DESKTOP LARGE / READABLE V7 \u2014 MOBILE LIGHTBOX + LIVE FOCUS + PARENT ESC ISOLATION\r\n * MAIN PURPOSE -> SUB-PURPOSE -> PURCHASE LANE + LIVE 3-SETUP CDN PREVIEW\r\n *\r\n * NEW ASSET:\r\n * assets/panel-led-v4.r32-ux-r3-purpose-modal.js\r\n *\r\n * LOAD AFTER:\r\n * - panel-led-v4.ui.js\r\n * - panel-led-v4.af03-cdn-live-map.js\r\n * - panel-led-v4.af04-dynamic-fallback-distance.js\r\n *\r\n * OWNERSHIP / SAFETY:\r\n * - Existing R28 selection state remains the committed purpose/subpurpose owner.\r\n * - ETAP2 purchase-lane state is committed only with the same explicit final apply action.\r\n * - Existing setPanelV4R28Selection() is used only after explicit confirmation.\r\n * - Purpose-card click is intercepted before the legacy immediate first-sub selection.\r\n * - Ranking, scoring, product pool, commerce, cart, compare, NORA, share, PNG and QR are untouched.\r\n * - No MutationObserver, no setInterval, no hidden image pool, no 72-image preload.\r\n * - Only the selected sub-purpose's 3 setup previews are created while this modal is open.\r\n * - Close focus re-resolves the live purpose button and performs one guarded post-render focus recovery.\r\n * - Escape is captured at window level while UX-R3 is open, preventing the parent comparison shell from closing.\r\n * - Purpose-modal clicks stop before legacy document-bubble handlers; parent shell remains open.\r\n * ========================================================================== */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var PHASE = \"PANEL-V4-R32-UX-R3-PURPOSE-MODAL-LIVE\";\r\n  var VERSION = \"PANEL-V4-ETAP2-R2D-REV3.3-R32-PURPOSE-SUBPURPOSE-LANE-NORA-FAST-ATOMIC-V2\";\r\n  var READY_KEY = \"GDX_PANEL_V4_R32_UX_R3_PURPOSE_MODAL_READY\";\r\n  var STYLE_ID = \"gdxPanelV4R32UxR3PurposeModalStyle\";\r\n  var LAYER_ID = \"gdxPanelV4R32UxR3PurposeModalLayer\";\r\n  var DIALOG_ID = \"gdxPanelV4R32UxR3PurposeModalDialog\";\r\n  var TITLE_ID = \"gdxPanelV4R32UxR3PurposeModalTitle\";\r\n  var LIGHTBOX_ID = \"gdxPanelV4R32UxR3ImageLightbox\";\r\n\r\n  if (window[READY_KEY]) return;\r\n  window[READY_KEY] = true;\r\n\r\n  var state = {\r\n    installed: false,\r\n    open: false,\r\n    pendingPurposeKey: \"\",\r\n    pendingSubPurposeKey: \"\",\r\n    pendingLane: \"\",\r\n    laneChoiceMode: \"\",\r\n    noraStage: \"IDLE\",\r\n    noraStand: \"\",\r\n    noraEquipment: \"\",\r\n    noraSuggestedLane: \"\",\r\n    trigger: null,\r\n    triggerPurposeKey: \"\",\r\n    lastFocusReturnPassed: true,\r\n    openCount: 0,\r\n    closeCount: 0,\r\n    confirmCount: 0,\r\n    previewRenderCount: 0,\r\n    lightboxOpen: false,\r\n    lightboxOpenCount: 0,\r\n    lightboxCloseCount: 0,\r\n    lightboxTrigger: null,\r\n    lastAction: \"init\",\r\n    lastError: \"\",\r\n    confirmedByPurpose: {},\r\n    confirmedLaneByPurpose: {},\r\n    escapeIsolationEnabled: true,\r\n    escapeInterceptCount: 0,\r\n    laneScrollCount: 0,\r\n    resultScrollCount: 0,\r\n    lastLaneScrollLatencyMs: null,\r\n    lastResultScrollLatencyMs: null,\r\n    lastParentShellOpenAfterClose: true,\r\n    externalOwnerActive: false,\r\n    externalOwnerSource: \"\",\r\n    externalOwnerToggleCount: 0,\r\n    externalCommitCount: 0,\r\n    lastExternalCommit: null\r\n  };\r\n\r\n  var SCENARIO_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  var SCENARIO_COPY = {\r\n    balanced_key_fill: {\r\n      label: \"Dengeli se\u00E7im\",\r\n      title: \"Dengeli ana / dolgu\"\r\n    },\r\n    rgb_background_accent: {\r\n      label: \"RGB vurgu\",\r\n      title: \"RGB arka plan / vurgu\"\r\n    },\r\n    compact_support_close_range: {\r\n      label: \"Kompakt se\u00E7im\",\r\n      title: \"Kompakt destek / yak\u0131n mesafe\"\r\n    }\r\n  };\r\n\r\n  var PURPOSE_GUIDES = {\r\n    product_ecommerce: {\r\n      title: \"\u00DCr\u00FCn \u00E7ekiminde \u00F6nce bunlar\u0131 netle\u015Ftir\",\r\n      intro: \"I\u015F\u0131\u011F\u0131 \u00FCr\u00FCn\u00FCn boyutu, y\u00FCzeyi ve sat\u0131\u015F kanal\u0131na g\u00F6re se\u00E7. Temiz ve tekrar edilebilir sonu\u00E7 \u00F6nceliklidir.\",\r\n      items: [\r\n        \"\u00DCr\u00FCn boyutu, y\u00FCzey dokusu ve yans\u0131ma riski\",\r\n        \"Renk do\u011Frulu\u011Fu, beyaz fon ve temiz g\u00F6lge kontrol\u00FC\",\r\n        \"Kamera a\u00E7\u0131s\u0131 ile \u00FCr\u00FCn\u00FCn ana y\u00FCz\u00FCn\u00FCn do\u011Fru okunmas\u0131\",\r\n        \"Panel boyutu, \u00E7al\u0131\u015Fma mesafesi ve \u0131\u015F\u0131k yumu\u015Fakl\u0131\u011F\u0131\",\r\n        \"Katalog standard\u0131 ile kreatif vurgu aras\u0131ndaki s\u0131n\u0131r\"\r\n      ]\r\n    },\r\n    youtube_reels_social: {\r\n      title: \"Sosyal i\u00E7erikte \u00F6nce bunlara dikkat et\",\r\n      intro: \"Y\u00FCz\u00FCn okunmas\u0131, h\u0131zl\u0131 kurulum ve kadraj format\u0131 birlikte d\u00FC\u015F\u00FCn\u00FClmelidir.\",\r\n      items: [\r\n        \"Tek ki\u015Fi i\u00E7in y\u00FCz pozlamas\u0131 ve g\u00F6z \u0131\u015F\u0131\u011F\u0131\",\r\n        \"Dikey Reels ile yatay video kadraj ihtiyac\u0131\",\r\n        \"Arka plan ayr\u0131m\u0131 ve odan\u0131n mevcut \u0131\u015F\u0131\u011F\u0131\",\r\n        \"Uzun \u00E7ekimde sabit renk ve titre\u015Fimsiz kullan\u0131m\",\r\n        \"Kompakt kurulum, masa alan\u0131 ve kamera mesafesi\"\r\n      ]\r\n    },\r\n    interview_talking_head: {\r\n      title: \"R\u00F6portaj \u0131\u015F\u0131\u011F\u0131nda \u00F6nce bunlar\u0131 kontrol et\",\r\n      intro: \"Ki\u015Fi say\u0131s\u0131, ortak kamera ekseni ve y\u00FCzler aras\u0131ndaki \u0131\u015F\u0131k dengesi temel karard\u0131r.\",\r\n      items: [\r\n        \"Tek veya iki ki\u015Filik kadraj ve oturma mesafesi\",\r\n        \"Her y\u00FCzde dengeli pozlama ve do\u011Fal cilt tonu\",\r\n        \"Ana \u0131\u015F\u0131k / dolgu oran\u0131 ve g\u00F6lge yo\u011Funlu\u011Fu\",\r\n        \"Kamera ekseni ile bak\u0131\u015F y\u00F6nlerinin tutarl\u0131l\u0131\u011F\u0131\",\r\n        \"Arka plan ayr\u0131m\u0131, mek\u00E2n derinli\u011Fi ve g\u00FCvenli stand alan\u0131\"\r\n      ]\r\n    },\r\n    clinic_aesthetic_dental: {\r\n      title: \"Klinik \u00E7ekimde \u00F6nce bunlar\u0131 do\u011Frula\",\r\n      intro: \"Renk do\u011Frulu\u011Fu ve kontroll\u00FC yans\u0131ma, estetik g\u00F6r\u00FCn\u00FCmden \u00F6nce gelir.\",\r\n      items: [\r\n        \"Cilt, di\u015F ve klinik y\u00FCzeylerde do\u011Fru renk \u00FCretimi\",\r\n        \"Parlama, sert g\u00F6lge ve detay kayb\u0131 kontrol\u00FC\",\r\n        \"Yak\u0131n \u00E7ekimde g\u00FCvenli \u0131\u015F\u0131k mesafesi\",\r\n        \"Kamera ekseni ve kay\u0131t standard\u0131n\u0131n tekrarlanabilirli\u011Fi\",\r\n        \"Dar klinik alanda hijyenik ve g\u00FCvenli yerle\u015Fim\"\r\n      ]\r\n    },\r\n    rgb_creative_video: {\r\n      title: \"Kreatif RGB kurulumunda s\u0131n\u0131r\u0131 do\u011Fru kur\",\r\n      intro: \"Beyaz ana \u0131\u015F\u0131k ile RGB vurgu birbirinin g\u00F6revini \u00FCstlenmemelidir.\",\r\n      items: [\r\n        \"Y\u00FCz veya \u00FCr\u00FCn i\u00E7in n\u00F6tr ana \u0131\u015F\u0131\u011F\u0131n korunmas\u0131\",\r\n        \"RGB rengin yaln\u0131z fon ya da kenar ayr\u0131m\u0131nda kalmas\u0131\",\r\n        \"Renk ta\u015Fmas\u0131 ve cilt/\u00FCr\u00FCn renginin bozulmamas\u0131\",\r\n        \"Arka plan derinli\u011Fi ve renk kontrast\u0131\",\r\n        \"Efekt devaml\u0131l\u0131\u011F\u0131, kontrol y\u00F6ntemi ve sahne \u00F6l\u00E7e\u011Fi\"\r\n      ]\r\n    },\r\n    studio_professional: {\r\n      title: \"Profesyonel st\u00FCdyoda \u00F6nce kapsam\u0131 belirle\",\r\n      intro: \"Geni\u015F konu kapsamas\u0131, tutarl\u0131l\u0131k ve tekrar edilebilir kurulum \u00F6nceliklidir.\",\r\n      items: [\r\n        \"Model veya b\u00FCy\u00FCk \u00FCr\u00FCn\u00FCn tam boy \u0131\u015F\u0131k kapsamas\u0131\",\r\n        \"Panel g\u00FCc\u00FC, y\u00FCzey alan\u0131 ve \u00E7al\u0131\u015Fma mesafesi\",\r\n        \"Kampanya boyunca renk ve pozlama tutarl\u0131l\u0131\u011F\u0131\",\r\n        \"Ana / dolgu g\u00F6revlerinin net ayr\u0131lmas\u0131\",\r\n        \"Stand g\u00FCvenli\u011Fi, kablo d\u00FCzeni ve sabit kurulum alan\u0131\"\r\n      ]\r\n    },\r\n    mobile_outdoor: {\r\n      title: \"Mobil \u00E7ekimde \u00F6nce \u00E7al\u0131\u015Fma ko\u015Fulunu d\u00FC\u015F\u00FCn\",\r\n      intro: \"Ta\u015F\u0131nabilirlik kadar ortam \u0131\u015F\u0131\u011F\u0131yla m\u00FCcadele ve g\u00FCvenli kurulum da \u00F6nemlidir.\",\r\n      items: [\r\n        \"Batarya s\u00FCresi ve prizsiz \u00E7al\u0131\u015Fma gereksinimi\",\r\n        \"G\u00FCn \u0131\u015F\u0131\u011F\u0131 / ortam \u0131\u015F\u0131\u011F\u0131na kar\u015F\u0131 yeterli g\u00FC\u00E7\",\r\n        \"Ta\u015F\u0131ma a\u011F\u0131rl\u0131\u011F\u0131, ekip b\u00FCy\u00FCkl\u00FC\u011F\u00FC ve kurulum s\u00FCresi\",\r\n        \"R\u00FCzg\u00E2r, zemin ve stand g\u00FCvenli\u011Fi\",\r\n        \"H\u0131zl\u0131 s\u00F6k\u00FCm ile tekrar kurulabilir kamera ekseni\"\r\n      ]\r\n    },\r\n    starter_budget_practical: {\r\n      title: \"\u0130lk kurulumda \u00F6nce ger\u00E7ek ihtiyac\u0131 se\u00E7\",\r\n      intro: \"Teknik olarak kullanamayaca\u011F\u0131n fazla \u00F6zellik yerine do\u011Fru mesafe ve temel \u0131\u015F\u0131k kalitesi \u00F6nemlidir.\",\r\n      items: [\r\n        \"Ana kullan\u0131m amac\u0131 ve en s\u0131k \u00E7ekilecek konu\",\r\n        \"Oda b\u00FCy\u00FCkl\u00FC\u011F\u00FC ile ger\u00E7ek \u00E7al\u0131\u015Fma mesafesi\",\r\n        \"Tek \u0131\u015F\u0131kla ba\u015Flang\u0131\u00E7 m\u0131, destek \u0131\u015F\u0131\u011F\u0131 ihtiyac\u0131 m\u0131\",\r\n        \"B\u00FCt\u00E7e i\u00E7inde renk do\u011Frulu\u011Fu ve g\u00FCvenilir g\u00FC\u00E7\",\r\n        \"\u0130leride b\u00FCy\u00FCt\u00FClebilecek sade ve g\u00FCvenli kurulum\"\r\n      ]\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 esc(value) {\r\n    return String(value == null ? \"\" : value).replace(/[&<>\"']/g, function (char) {\r\n      return {\r\n        \"&\": \"&amp;\",\r\n        \"<\": \"&lt;\",\r\n        \">\": \"&gt;\",\r\n        '\"': \"&quot;\",\r\n        \"'\": \"&#39;\"\r\n      }[char];\r\n    });\r\n  }\r\n\r\n  function all(selector, scope) {\r\n    try {\r\n      return Array.prototype.slice.call((scope || document).querySelectorAll(selector));\r\n    } catch (ignore) {\r\n      return [];\r\n    }\r\n  }\r\n\r\n  function selectionMount() {\r\n    return document.getElementById(\"gdxPanelV4R28SelectionSystem\");\r\n  }\r\n\r\n  function host() {\r\n    return (\r\n      document.getElementById(\"gdxPanelV4Shell\") ||\r\n      document.getElementById(\"gdx-panel-led-v4-root\") ||\r\n      document.body\r\n    );\r\n  }\r\n\r\n  function currentSelection() {\r\n    return window.GDX_PANEL_V4_R28_SELECTION_STATE || {};\r\n  }\r\n\r\n\r\n  var PURCHASE_LANE_STATE_KEY = \"GDX_PANEL_V4_ETAP2_PURCHASE_LANE_STATE\";\r\n  var PURCHASE_LANE_API_KEY = \"GDX_PANEL_V4_ETAP2_PURCHASE_LANE\";\r\n\r\n  function validCommittedLane(value) {\r\n    value = clean(value);\r\n    return value === \"BARE_LIGHT\" || value === \"SINGLE_READY_SET\";\r\n  }\r\n\r\n  function laneLabel(value) {\r\n    value = clean(value);\r\n    if (value === \"BARE_LIGHT\") return \"Yaln\u0131z Panel\";\r\n    if (value === \"SINGLE_READY_SET\") return \"Tekli Panel Kit\";\r\n    return \"Hen\u00FCz se\u00E7ilmedi\";\r\n  }\r\n\r\n  function resolveNoraLane(standAnswer, equipmentAnswer) {\r\n    standAnswer = clean(standAnswer);\r\n    equipmentAnswer = clean(equipmentAnswer);\r\n    if ([\"YES\",\"NO\",\"UNKNOWN\"].indexOf(standAnswer) < 0) return \"\";\r\n    if ([\"YES\",\"NO\",\"UNKNOWN\"].indexOf(equipmentAnswer) < 0) return \"\";\r\n    return standAnswer === \"YES\" && equipmentAnswer === \"YES\"\r\n      ? \"BARE_LIGHT\"\r\n      : \"SINGLE_READY_SET\";\r\n  }\r\n\r\n  function laneState() {\r\n    var current = window[PURCHASE_LANE_STATE_KEY];\r\n    if (!current || typeof current !== \"object\") {\r\n      current = {\r\n        version: \"PANEL-V4-ETAP2-R2D-REV3-PURCHASE-LANE-STATE-V1\",\r\n        lane: \"ALL\",\r\n        committedAt: \"\",\r\n        source: \"INITIAL_NEUTRAL\"\r\n      };\r\n      window[PURCHASE_LANE_STATE_KEY] = current;\r\n    }\r\n    return current;\r\n  }\r\n\r\n  function getCommittedLane() {\r\n    var lane = clean(laneState().lane);\r\n    return validCommittedLane(lane) ? lane : \"ALL\";\r\n  }\r\n\r\n  function writeCommittedLane(lane, meta) {\r\n    meta = meta || {};\r\n    var previous = getCommittedLane();\r\n    lane = clean(lane);\r\n    if (!validCommittedLane(lane) && lane !== \"ALL\") return false;\r\n    var next = {\r\n      version: \"PANEL-V4-ETAP2-R2D-REV3-PURCHASE-LANE-STATE-V1\",\r\n      lane: lane || \"ALL\",\r\n      previousLane: previous,\r\n      committedAt: meta.committedAt || new Date().toISOString(),\r\n      source: clean(meta.source) || \"R2D_REV3_ATOMIC_COMMIT\",\r\n      purposeKey: clean(meta.purposeKey),\r\n      subPurposeKey: clean(meta.subPurposeKey)\r\n    };\r\n    window[PURCHASE_LANE_STATE_KEY] = next;\r\n    return true;\r\n  }\r\n\r\n  function notifyCommittedLane(lane, meta) {\r\n    meta = meta || {};\r\n    try {\r\n      window.dispatchEvent(new CustomEvent(\"canfoto:panel-r2d-recommendation-lane-change\", {\r\n        detail: {\r\n          lane: lane,\r\n          purposeKey: clean(meta.purposeKey),\r\n          subPurposeKey: clean(meta.subPurposeKey),\r\n          reason: clean(meta.reason) || \"r2d_rev3_atomic_commit\"\r\n        }\r\n      }));\r\n    } catch (ignore) {}\r\n  }\r\n\r\n\r\n  /* =========================================================\r\n     ETAP 2 \u00B7 P2-C-R6-R3.11\r\n     ATOMIC COMMIT -> RECOMMENDATION CONTEXT FINAL SYNC\r\n     ========================================================= */\r\n  function syncRecommendationAfterAtomicCommit(selectionResult, lane, meta) {\r\n    meta = meta || {};\r\n\r\n    var selection = (\r\n      selectionResult &&\r\n      typeof selectionResult === \"object\" &&\r\n      clean(selectionResult.activeSelectionKey)\r\n    )\r\n      ? selectionResult\r\n      : currentSelection();\r\n\r\n    var selectionKey = clean(selection && selection.activeSelectionKey);\r\n    var purposeKey = clean(selection && selection.activePurposeKey);\r\n    var subPurposeKey = clean(selection && selection.activeSubPurposeKey);\r\n\r\n    var out = {\r\n      ok: false,\r\n      selectionKey: selectionKey,\r\n      purposeKey: purposeKey,\r\n      subPurposeKey: subPurposeKey,\r\n      lane: clean(lane),\r\n      r11TargetFound: false,\r\n      r11Aligned: false,\r\n      r11DirectSyncUsed: false,\r\n      r2c2SyncReady: false,\r\n      r2c2SyncOk: false,\r\n      finalSelectionEventDispatched: false,\r\n      error: \"\"\r\n    };\r\n\r\n    if (!selectionKey || !purposeKey || !subPurposeKey) {\r\n      out.error = \"committed_selection_missing\";\r\n      return out;\r\n    }\r\n\r\n    /* Final visible R11 context must already match before N04 hands off. */\r\n    try {\r\n      var r11 = window.GDX_PANEL_LED_V4_UI_RECO_15_R11_R5 || null;\r\n      var map = window.GDX_PANEL_V4_R28_R7_R1_CONTEXT_MAP || {};\r\n      var target = map[selectionKey] || null;\r\n\r\n      out.r11TargetFound = !!(\r\n        target &&\r\n        clean(target.mainKey) &&\r\n        clean(target.subKey)\r\n      );\r\n\r\n      if (r11 && r11.state && out.r11TargetFound) {\r\n        var alreadyAligned =\r\n          clean(r11.state.mainKey) === clean(target.mainKey) &&\r\n          clean(r11.state.subKey) === clean(target.subKey);\r\n\r\n        if (!alreadyAligned && typeof r11.selectGoalSub === \"function\") {\r\n          r11.selectGoalSub(target.mainKey, target.subKey);\r\n          out.r11DirectSyncUsed = true;\r\n        } else if (alreadyAligned && typeof r11.render === \"function\") {\r\n          r11.render();\r\n        }\r\n\r\n        out.r11Aligned =\r\n          clean(r11.state.mainKey) === clean(target.mainKey) &&\r\n          clean(r11.state.subKey) === clean(target.subKey);\r\n      }\r\n    } catch (errorR11) {\r\n      out.error = clean(errorR11 && errorR11.message) || \"r11_sync_failed\";\r\n    }\r\n\r\n    /* Existing exact Top3 + committed-lane owner is forced with final atomic state. */\r\n    try {\r\n      var r2c2 =\r\n        window.GDX_PANEL_LED_V4_ETAP2_R2C2_SELECTION_RECOMMENDATION_SYNC ||\r\n        null;\r\n\r\n      out.r2c2SyncReady = !!(\r\n        r2c2 &&\r\n        typeof r2c2.sync === \"function\"\r\n      );\r\n\r\n      if (out.r2c2SyncReady) {\r\n        out.r2c2SyncOk = r2c2.sync({\r\n          selection: selection,\r\n          reason: clean(meta.reason) || \"r32_atomic_commit_final_sync\",\r\n          force: true\r\n        }) === true;\r\n      }\r\n    } catch (errorR2C2) {\r\n      if (!out.error) {\r\n        out.error =\r\n          clean(errorR2C2 && errorR2C2.message) ||\r\n          \"r2c2_sync_failed\";\r\n      }\r\n    }\r\n\r\n    /* One final atomic event after purpose + subpurpose + lane are all committed. */\r\n    try {\r\n      window.dispatchEvent(\r\n        new CustomEvent(\r\n          \"gdx-panel-v4-r28-selection-change\",\r\n          { detail: selection }\r\n        )\r\n      );\r\n      out.finalSelectionEventDispatched = true;\r\n    } catch (errorEvent) {\r\n      if (!out.error) {\r\n        out.error =\r\n          clean(errorEvent && errorEvent.message) ||\r\n          \"final_selection_event_failed\";\r\n      }\r\n    }\r\n\r\n    out.ok = !!(\r\n      out.r11TargetFound &&\r\n      out.r11Aligned &&\r\n      out.r2c2SyncReady &&\r\n      out.r2c2SyncOk &&\r\n      out.finalSelectionEventDispatched\r\n    );\r\n\r\n    return out;\r\n  }\r\n\r\n  window[PURCHASE_LANE_API_KEY] = {\r\n    version: \"PANEL-V4-ETAP2-R2D-REV3-PURCHASE-LANE-API-V1\",\r\n    getCommittedLane: getCommittedLane,\r\n    getState: function () { return Object.assign({}, laneState()); },\r\n    laneLabel: laneLabel\r\n  };\r\n\r\n  function blueprint() {\r\n    try {\r\n      if (typeof window.debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix !== \"function\") {\r\n        return null;\r\n      }\r\n\r\n      var result = window.debugPanelV4R28R1R1SelectionUiBlueprintScenarioLockKeyFix();\r\n      var bp = result && result.diagnostics\r\n        ? result.diagnostics.selectionUiBlueprint || null\r\n        : 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 (error) {\r\n      state.lastError = error && error.message ? error.message : String(error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function purposeByKey(key) {\r\n    var bp = blueprint();\r\n    var purposes = bp && Array.isArray(bp.mainPurposes) ? bp.mainPurposes : [];\r\n    return purposes.find(function (item) {\r\n      return clean(item && item.purposeKey) === clean(key);\r\n    }) || null;\r\n  }\r\n\r\n  function purposeGuide(key) {\r\n    return PURPOSE_GUIDES[clean(key)] || {\r\n      title: \"Bu kullan\u0131m amac\u0131 i\u00E7in temel kontrol listesi\",\r\n      intro: \"Konu, \u00E7al\u0131\u015Fma mesafesi, kamera ekseni ve \u0131\u015F\u0131k g\u00F6revlerini se\u00E7meden \u00F6nce netle\u015Ftir.\",\r\n      items: [\r\n        \"Konu veya \u00FCr\u00FCn\u00FCn boyutu\",\r\n        \"\u00C7al\u0131\u015Fma mesafesi ve kullan\u0131labilir alan\",\r\n        \"Ana \u0131\u015F\u0131k ile destek \u0131\u015F\u0131\u011F\u0131n\u0131n g\u00F6revi\",\r\n        \"Kamera ekseni ve kadraj y\u00F6n\u00FC\",\r\n        \"Renk do\u011Frulu\u011Fu ile arka plan ayr\u0131m\u0131\"\r\n      ]\r\n    };\r\n  }\r\n\r\n  function scenarioTypeFromKey(value) {\r\n    value = clean(value);\r\n    if (value.indexOf(\"_balanced_key_fill\") > -1) return \"balanced_key_fill\";\r\n    if (value.indexOf(\"_rgb_background_accent\") > -1) return \"rgb_background_accent\";\r\n    if (value.indexOf(\"_compact_support_close_range\") > -1) return \"compact_support_close_range\";\r\n    return \"\";\r\n  }\r\n\r\n  function buildFallbackTemplates(purposeKey, subPurposeKey) {\r\n    var prefix = clean(purposeKey) + \"_\" + clean(subPurposeKey) + \"_\";\r\n    var map = window.GDX_PANEL_V4_R30A_CDN_URL_MAP || {};\r\n    var rows = [];\r\n    var used = {};\r\n\r\n    Object.keys(map).forEach(function (selectionKey) {\r\n      var templateKey = clean(selectionKey).split(\"::\")[0];\r\n      var scenarioType = scenarioTypeFromKey(templateKey);\r\n      if (!scenarioType || templateKey.indexOf(prefix) !== 0 || used[scenarioType]) return;\r\n      used[scenarioType] = true;\r\n      rows.push({\r\n        templateKey: templateKey,\r\n        purposeKey: clean(purposeKey),\r\n        subPurposeKey: clean(subPurposeKey),\r\n        scenarioType: scenarioType,\r\n        cdnSelectionKey: selectionKey,\r\n        cdnUrl: clean(map[selectionKey]),\r\n        altText: \"Panel LED \" + (SCENARIO_COPY[scenarioType] || {}).title\r\n      });\r\n    });\r\n\r\n    return rows;\r\n  }\r\n\r\n  function templatesFor(purposeKey, subPurposeKey) {\r\n    var manifest = window.GDX_PANEL_V4_R30A_SETUP_VISUAL_MANIFEST || {};\r\n    var templates = Array.isArray(manifest.templates) ? manifest.templates : [];\r\n    var targetPurposeKey = clean(purposeKey);\r\n    var targetSubPurposeKey = clean(subPurposeKey);\r\n\r\n    var rows = templates.filter(function (item) {\r\n      return (\r\n        clean(item && item.purposeKey) === targetPurposeKey &&\r\n        clean(item && item.subPurposeKey) === targetSubPurposeKey\r\n      );\r\n    });\r\n\r\n    if (!rows.length) {\r\n      var r2h = window.GDX_PANEL_V4_R2H_REGISTRY_V2 || null;\r\n      var alias = r2h && typeof r2h.getSetupAlias === \"function\"\r\n        ? r2h.getSetupAlias(targetPurposeKey, targetSubPurposeKey)\r\n        : null;\r\n\r\n      if (alias) {\r\n        rows = templates.filter(function (item) {\r\n          return (\r\n            clean(item && item.purposeKey) === clean(alias.sourcePurposeKey) &&\r\n            clean(item && item.subPurposeKey) === clean(alias.sourceSubPurposeKey)\r\n          );\r\n        });\r\n\r\n        if (!rows.length) {\r\n          rows = buildFallbackTemplates(alias.sourcePurposeKey, alias.sourceSubPurposeKey);\r\n        }\r\n\r\n        rows = rows.map(function (item) {\r\n          var copy = {};\r\n          Object.keys(item || {}).forEach(function (key) { copy[key] = item[key]; });\r\n          copy.purposeKey = targetPurposeKey;\r\n          copy.subPurposeKey = targetSubPurposeKey;\r\n          copy.r2hRegistryV2 = true;\r\n          copy.r2hSourceSelectionKey = clean(alias.sourceSelectionKey);\r\n          copy.r2hSemanticRole = clean(alias.semanticRole);\r\n          return copy;\r\n        });\r\n      }\r\n    }\r\n\r\n    if (!rows.length) {\r\n      rows = buildFallbackTemplates(targetPurposeKey, targetSubPurposeKey);\r\n    }\r\n\r\n    return rows.slice().sort(function (a, b) {\r\n      return (SCENARIO_ORDER[clean(a.scenarioType)] || 99) -\r\n        (SCENARIO_ORDER[clean(b.scenarioType)] || 99);\r\n    }).slice(0, 3);\r\n  }\r\n\r\n  function cdnUrlFor(template) {\r\n    template = template || {};\r\n    var map = window.GDX_PANEL_V4_R30A_CDN_URL_MAP || {};\r\n    return clean(\r\n      map[clean(template.cdnSelectionKey)] ||\r\n      map[clean(template.templateKey)] ||\r\n      template.cdnUrl\r\n    );\r\n  }\r\n\r\n  function placeholderDataUrl(title) {\r\n    var safeTitle = clean(title || \"Setup \u00F6nizlemesi\");\r\n    var svg = \"\"\r\n      + '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 450\">'\r\n      + '<defs><linearGradient id=\"g\" x1=\"0\" x2=\"1\"><stop stop-color=\"#0b1727\"/><stop offset=\"1\" stop-color=\"#14304a\"/></linearGradient></defs>'\r\n      + '<rect width=\"800\" height=\"450\" fill=\"url(#g)\"/>'\r\n      + '<circle cx=\"400\" cy=\"180\" r=\"72\" fill=\"#1f415b\"/>'\r\n      + '<path d=\"M350 180h100M400 130v100\" stroke=\"#67e8f9\" stroke-width=\"14\" stroke-linecap=\"round\"/>'\r\n      + '<text x=\"400\" y=\"300\" text-anchor=\"middle\" fill=\"#f8fafc\" font-family=\"Arial\" font-size=\"32\" font-weight=\"700\">' + esc(safeTitle) + '</text>'\r\n      + '<text x=\"400\" y=\"350\" text-anchor=\"middle\" fill=\"#94a3b8\" font-family=\"Arial\" font-size=\"22\">Setup \u00F6nizlemesi</text>'\r\n      + '</svg>';\r\n\r\n    return \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(svg);\r\n  }\r\n\r\n  function renderPurposeGuide() {\r\n    var purpose = purposeByKey(state.pendingPurposeKey) || {};\r\n    var guide = purposeGuide(state.pendingPurposeKey);\r\n\r\n    return \"\"\r\n      + '<section class=\"gdx-uxr3-guide\" data-gdx-uxr3-purpose-guide=\"1\">'\r\n      +   '<span class=\"gdx-uxr3-guide-kicker\">' + esc(clean(purpose.title) || \"Ana ama\u00E7\") + '</span>'\r\n      +   '<h4>' + esc(guide.title) + '</h4>'\r\n      +   '<p>' + esc(guide.intro) + '</p>'\r\n      +   '<ul>'\r\n      +     guide.items.map(function (item) { return '<li>' + esc(item) + '</li>'; }).join(\"\")\r\n      +   '</ul>'\r\n      +   '<div class=\"gdx-uxr3-guide-note\">Bir alt ama\u00E7 se\u00E7ti\u011Finde \u00FC\u00E7 ger\u00E7ek kurulum \u00F6nizlemesi burada g\u00F6r\u00FCn\u00FCr.</div>'\r\n      + '</section>';\r\n  }\r\n\r\n  function renderPreviewCards() {\r\n    var rows = templatesFor(state.pendingPurposeKey, state.pendingSubPurposeKey);\r\n\r\n    if (!rows.length) {\r\n      return '<div class=\"gdx-uxr3-empty\">Kurulum \u00F6nizlemeleri haz\u0131rlan\u0131yor. Se\u00E7imini de\u011Fi\u015Ftirmeden tekrar deneyebilirsin.</div>';\r\n    }\r\n\r\n    state.previewRenderCount += 1;\r\n\r\n    return '<div class=\"gdx-uxr3-preview-list\" data-gdx-uxr3-preview-list=\"1\">' +\r\n      rows.map(function (template) {\r\n        var scenarioType = clean(template.scenarioType);\r\n        var copy = SCENARIO_COPY[scenarioType] || {\r\n          label: \"Setup se\u00E7imi\",\r\n          title: clean(template.altText) || \"Panel LED kurulumu\"\r\n        };\r\n        var url = cdnUrlFor(template);\r\n        var src = url || placeholderDataUrl(copy.title);\r\n        var alt = clean(template.altText) || copy.title;\r\n        var fallbackPill = url\r\n          ? \"\"\r\n          : '<span class=\"gdx-uxr3-source is-fallback\">SETUP \u00D6N\u0130ZLEMES\u0130</span>';\r\n\r\n        return \"\"\r\n          + '<article class=\"gdx-uxr3-preview-card\" data-gdx-uxr3-preview-card=\"1\">'\r\n          +   '<button type=\"button\" class=\"gdx-uxr3-thumb gdx-uxr3-thumb-button\" data-gdx-uxr3-image-open=\"1\" data-gdx-uxr3-image-src=\"' + esc(src) + '\" data-gdx-uxr3-image-alt=\"' + esc(alt) + '\" aria-label=\"G\u00F6rseli b\u00FCy\u00FCt: ' + esc(alt) + '\">'\r\n          +     '<img src=\"' + esc(src) + '\" alt=\"' + esc(alt) + '\" loading=\"eager\" decoding=\"async\" data-gdx-uxr3-fallback-title=\"' + esc(copy.title) + '\">'\r\n          +     fallbackPill\r\n          +   '</button>'\r\n          +   '<div class=\"gdx-uxr3-preview-copy\">'\r\n          +     '<b>' + esc(copy.label) + '</b>'\r\n          +     '<strong>' + esc(copy.title) + '</strong>'\r\n          +     '<small>' + (url ? \"Se\u00E7ilen \u00E7ekim senaryosuna ait setup g\u00F6rseli.\" : \"G\u00F6rsel \u00F6nizleme yerine setup \u015Femas\u0131 g\u00F6steriliyor.\") + '</small>'\r\n          +     '<button type=\"button\" class=\"gdx-uxr3-open-image\" data-gdx-uxr3-image-open=\"1\" data-gdx-uxr3-image-src=\"' + esc(src) + '\" data-gdx-uxr3-image-alt=\"' + esc(alt) + '\">G\u00F6rseli b\u00FCy\u00FCt \u2197</button>'\r\n          +   '</div>'\r\n          + '</article>';\r\n      }).join(\"\") +\r\n    '</div>';\r\n  }\r\n\r\n  function renderPreviewPanel() {\r\n    var panel = document.querySelector(\"#\" + LAYER_ID + \" [data-gdx-uxr3-preview-panel]\");\r\n    if (!panel) return;\r\n\r\n    panel.innerHTML = state.pendingSubPurposeKey\r\n      ? renderPreviewCards()\r\n      : renderPurposeGuide();\r\n\r\n    bindPreviewImages(panel);\r\n  }\r\n\r\n  function bindPreviewImages(scope) {\r\n    all(\".gdx-uxr3-thumb img\", scope).forEach(function (image) {\r\n      image.addEventListener(\"error\", function () {\r\n        if (image.getAttribute(\"data-gdx-uxr3-fallback-applied\") === \"1\") return;\r\n        image.setAttribute(\"data-gdx-uxr3-fallback-applied\", \"1\");\r\n        image.src = placeholderDataUrl(image.getAttribute(\"data-gdx-uxr3-fallback-title\"));\r\n        var thumb = image.parentNode;\r\n        var card = image.closest && image.closest(\"[data-gdx-uxr3-preview-card]\");\r\n        if (card) {\r\n          all(\"[data-gdx-uxr3-image-open]\", card).forEach(function (control) {\r\n            control.setAttribute(\"data-gdx-uxr3-image-src\", image.src);\r\n          });\r\n        }\r\n        if (thumb) {\r\n          var pill = thumb.querySelector(\".gdx-uxr3-source\");\r\n          if (!pill) {\r\n            pill = document.createElement(\"span\");\r\n            pill.className = \"gdx-uxr3-source is-fallback\";\r\n            thumb.appendChild(pill);\r\n          }\r\n          pill.textContent = \"Y\u00DCKLEME YEDE\u011E\u0130\";\r\n          pill.classList.add(\"is-fallback\");\r\n        }\r\n      }, { once: true });\r\n    });\r\n  }\r\n\r\n  function closeImageLightbox(reason) {\r\n    var lightbox = document.getElementById(LIGHTBOX_ID);\r\n    if (lightbox && lightbox.parentNode) {\r\n      lightbox.parentNode.removeChild(lightbox);\r\n    }\r\n\r\n    if (state.lightboxOpen) {\r\n      state.lightboxCloseCount += 1;\r\n    }\r\n\r\n    state.lightboxOpen = false;\r\n    state.lastAction = reason || \"image_lightbox_close\";\r\n\r\n    if (state.lightboxTrigger && typeof state.lightboxTrigger.focus === \"function\") {\r\n      try { state.lightboxTrigger.focus(); } catch (ignore) {}\r\n    }\r\n\r\n    state.lightboxTrigger = null;\r\n    publishState();\r\n  }\r\n\r\n  function openImageLightbox(src, alt, trigger) {\r\n    src = clean(src);\r\n    alt = clean(alt) || \"Kurulum g\u00F6rseli\";\r\n    if (!src) return false;\r\n\r\n    closeImageLightbox(\"replace_image_lightbox\");\r\n\r\n    var lightbox = document.createElement(\"div\");\r\n    lightbox.id = LIGHTBOX_ID;\r\n    lightbox.className = \"gdx-uxr3-lightbox\";\r\n    lightbox.setAttribute(\"role\", \"dialog\");\r\n    lightbox.setAttribute(\"aria-modal\", \"true\");\r\n    lightbox.setAttribute(\"aria-label\", alt);\r\n    lightbox.setAttribute(\"tabindex\", \"-1\");\r\n\r\n    /* Critical display properties are also applied inline. The lightbox remains\r\n       visible even when a stale stylesheet node or theme stacking context exists. */\r\n    lightbox.style.cssText =\r\n      \"position:fixed!important;inset:0!important;z-index:2147483647!important;\" +\r\n      \"display:flex!important;align-items:center!important;justify-content:center!important;\" +\r\n      \"width:100vw!important;height:100vh!important;height:100dvh!important;\" +\r\n      \"padding:0!important;margin:0!important;overflow:hidden!important;\" +\r\n      \"background:rgba(2,6,23,.96)!important;cursor:zoom-out!important;\" +\r\n      \"visibility:visible!important;opacity:1!important;pointer-events:auto!important;\" +\r\n      \"transform:none!important;filter:none!important;isolation:isolate!important;\" +\r\n      \"box-sizing:border-box!important;outline:0!important;\";\r\n\r\n    lightbox.innerHTML = \"\"\r\n      + '<div class=\"gdx-uxr3-lightbox-stage\" style=\"position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:24px;box-sizing:border-box;pointer-events:none\">'\r\n      +   '<img src=\"' + esc(src) + '\" alt=\"' + esc(alt) + '\" decoding=\"async\" style=\"display:block;max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);width:auto;height:auto;margin:auto;object-fit:contain;border-radius:16px;box-shadow:0 28px 100px rgba(0,0,0,.58);pointer-events:none\">'\r\n      + '</div>';\r\n\r\n    lightbox.addEventListener(\"click\", function (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      closeImageLightbox(\"image_lightbox_click_close\");\r\n    }, { once: true, capture: true });\r\n\r\n    (document.documentElement || document.body).appendChild(lightbox);\r\n    state.lightboxOpen = true;\r\n    state.lightboxOpenCount += 1;\r\n    state.lightboxTrigger = trigger || null;\r\n    state.lastAction = \"image_lightbox_open\";\r\n    publishState();\r\n\r\n    window.setTimeout(function () {\r\n      try { lightbox.focus(); } catch (ignore) {}\r\n    }, 0);\r\n\r\n    return true;\r\n  }\r\n\r\n  function renderSubOptions() {\r\n    var purpose = purposeByKey(state.pendingPurposeKey) || {};\r\n    var list = Array.isArray(purpose.subPurposes) ? purpose.subPurposes : [];\r\n\r\n    return list.map(function (sub) {\r\n      var subKey = clean(sub.subPurposeKey);\r\n      var selected = subKey === state.pendingSubPurposeKey;\r\n      return \"\"\r\n        + '<button type=\"button\" class=\"gdx-uxr3-sub' + (selected ? \" is-selected\" : \"\") + '\" role=\"radio\" aria-checked=\"' + (selected ? \"true\" : \"false\") + '\" data-gdx-uxr3-sub=\"' + esc(subKey) + '\">'\r\n        +   '<span class=\"gdx-uxr3-radio\" aria-hidden=\"true\"></span>'\r\n        +   '<span class=\"gdx-uxr3-sub-copy\">'\r\n        +     '<strong>' + esc(clean(sub.title) || subKey) + '</strong>'\r\n        +     '<small>' + esc(clean(sub.intentHint) || \"Bu senaryoya g\u00F6re kurulum ve \u00FCr\u00FCn \u00F6nerileri g\u00FCncellenir.\") + '</small>'\r\n        +   '</span>'\r\n        + '</button>';\r\n    }).join(\"\");\r\n  }\r\n\r\n\r\n  function canConfirmSelection() {\r\n    return !!state.pendingSubPurposeKey && validCommittedLane(state.pendingLane);\r\n  }\r\n\r\n  function noraAnswerLabel(value) {\r\n    if (value === \"YES\") return \"Evet\";\r\n    if (value === \"NO\") return \"Hay\u0131r\";\r\n    if (value === \"UNKNOWN\") return \"Emin de\u011Filim\";\r\n    return \"\";\r\n  }\r\n\r\n  function renderLaneButton(lane, eyebrow, title, note) {\r\n    var selected = state.pendingLane === lane && state.laneChoiceMode !== \"UNDECIDED\";\r\n    return ''\r\n      + '<button type=\"button\" class=\"gdx-uxr3-lane' + (selected ? ' is-selected' : '') + '\" role=\"radio\" aria-checked=\"' + (selected ? 'true' : 'false') + '\" data-gdx-uxr3-lane=\"' + esc(lane) + '\">'\r\n      +   '<span class=\"gdx-uxr3-lane-dot\" aria-hidden=\"true\"></span>'\r\n      +   '<span class=\"gdx-uxr3-lane-copy\"><b>' + esc(eyebrow) + '</b><strong>' + esc(title) + '</strong><small>' + esc(note) + '</small></span>'\r\n      + '</button>';\r\n  }\r\n\r\n  function renderNoraFlow() {\r\n    if (state.laneChoiceMode !== \"UNDECIDED\") return \"\";\r\n    var html = '<div class=\"gdx-uxr3-nora-lane\" data-gdx-uxr3-nora-lane=\"1\">'\r\n      + '<div class=\"gdx-uxr3-nora-head\"><span>N</span><div><b>NORA \u00B7 2 k\u0131sa soru</b><small>Yan\u0131tlar\u0131n yaln\u0131z sat\u0131n alma tercihi \u00F6nerisi i\u00E7in kullan\u0131l\u0131r. Son se\u00E7im yine sende.</small></div></div>';\r\n\r\n    if (state.noraStage === \"QUESTION_STAND\") {\r\n      html += '<div class=\"gdx-uxr3-nora-question\"><strong>1. Panel LED\\'i g\u00FCvenli konumland\u0131rabilece\u011Fin uygun bir \u0131\u015F\u0131k aya\u011F\u0131n / masa\u00FCst\u00FC stand\u0131n var m\u0131?</strong>'\r\n        + '<div class=\"gdx-uxr3-nora-answers\">'\r\n        + '<button type=\"button\" data-gdx-uxr3-nora-answer=\"STAND:YES\">Evet</button>'\r\n        + '<button type=\"button\" data-gdx-uxr3-nora-answer=\"STAND:NO\">Hay\u0131r</button>'\r\n        + '<button type=\"button\" data-gdx-uxr3-nora-answer=\"STAND:UNKNOWN\">Emin de\u011Filim</button>'\r\n        + '</div></div>';\r\n    } else if (state.noraStage === \"QUESTION_EQUIPMENT\") {\r\n      html += '<div class=\"gdx-uxr3-nora-answer-summary\">1. soru \u00B7 <b>' + esc(noraAnswerLabel(state.noraStand)) + '</b></div>'\r\n        + '<div class=\"gdx-uxr3-nora-question\"><strong>2. Temel kurulum ekipmanlar\u0131n haz\u0131r m\u0131, yoksa paneli gerekli temel par\u00E7alarla birlikte almak m\u0131 istiyorsun?</strong>'\r\n        + '<div class=\"gdx-uxr3-nora-answers\">'\r\n        + '<button type=\"button\" data-gdx-uxr3-nora-answer=\"EQUIPMENT:YES\">Haz\u0131r</button>'\r\n        + '<button type=\"button\" data-gdx-uxr3-nora-answer=\"EQUIPMENT:NO\">Birlikte almak istiyorum</button>'\r\n        + '<button type=\"button\" data-gdx-uxr3-nora-answer=\"EQUIPMENT:UNKNOWN\">Emin de\u011Filim</button>'\r\n        + '</div></div>';\r\n    } else if (state.noraStage === \"RECOMMENDATION\") {\r\n      html += '<div class=\"gdx-uxr3-nora-recommend\">'\r\n        + '<b>NORA \u00D6NER\u0130S\u0130 \u00B7 ' + esc(laneLabel(state.noraSuggestedLane).toUpperCase()) + '</b>'\r\n        + '<p>' + (state.noraSuggestedLane === \"BARE_LIGHT\"\r\n          ? 'Mevcut kurulum altyap\u0131n yeterli g\u00F6r\u00FCn\u00FCyor; yaln\u0131z panel se\u00E7ene\u011Fiyle ba\u015Flayabilirsin.'\r\n          : 'Kuruluma ba\u015Flamak i\u00E7in gerekli temel par\u00E7alar\u0131 birlikte sunan tekli panel kit daha g\u00FCvenli ba\u015Flang\u0131\u00E7 olur.') + '</p>'\r\n        + '<button type=\"button\" data-gdx-uxr3-nora-accept=\"1\">Bu tercihle devam et \u2192</button>'\r\n        + '<small>\u0130stersen yukar\u0131daki di\u011Fer sat\u0131n alma tercihini do\u011Frudan se\u00E7ebilirsin.</small>'\r\n        + '</div>';\r\n    } else if (state.noraStage === \"READY\") {\r\n      html += '<div class=\"gdx-uxr3-nora-recommend is-ready\"><b>Sat\u0131n alma tercihi haz\u0131r</b><p>' + esc(laneLabel(state.pendingLane)) + ' se\u00E7ildi. Son uygulama i\u00E7in a\u015Fa\u011F\u0131daki \u201CSe\u00E7imi uygula\u201D d\u00FC\u011Fmesini kullan.</p></div>';\r\n    }\r\n\r\n    return html + '</div>';\r\n  }\r\n\r\n  function renderLaneFlow() {\r\n    var undecided = state.laneChoiceMode === \"UNDECIDED\";\r\n    return ''\r\n      + '<section class=\"gdx-uxr3-lane-section\" data-gdx-uxr3-lane-section=\"1\">'\r\n      +   '<div class=\"gdx-uxr3-lane-heading\"><div><b>Sat\u0131n alma tercihi</b><span>Ama\u00E7 ve alt ama\u00E7la birlikte uygulan\u0131r.</span></div><em>' + esc(laneLabel(state.pendingLane)) + '</em></div>'\r\n      +   '<div class=\"gdx-uxr3-lane-list\" role=\"radiogroup\" aria-label=\"Sat\u0131n alma tercihi\">'\r\n      +     renderLaneButton(\"BARE_LIGHT\", \"YALNIZ PANEL\", \"Yaln\u0131z panel \u00FCnitesi\", \"Uygun ayak / kurulum altyap\u0131n zaten varsa.\")\r\n      +     renderLaneButton(\"SINGLE_READY_SET\", \"TEKL\u0130 PANEL K\u0130T\", \"Tek \u0131\u015F\u0131kl\u0131 haz\u0131r kit\", \"Paneli temel kurulum par\u00E7alar\u0131yla birlikte almak istiyorsan.\")\r\n      +     '<button type=\"button\" class=\"gdx-uxr3-lane is-undecided' + (undecided ? ' is-selected' : '') + '\" role=\"radio\" aria-checked=\"' + (undecided ? 'true' : 'false') + '\" data-gdx-uxr3-lane=\"UNDECIDED\">'\r\n      +       '<span class=\"gdx-uxr3-lane-dot\" aria-hidden=\"true\"></span><span class=\"gdx-uxr3-lane-copy\"><b>NORA YARDIM ETS\u0130N</b><strong>Karars\u0131z\u0131m</strong><small>\u0130ki k\u0131sa soruyla hangi kulvar\u0131n daha uygun oldu\u011Funu birlikte netle\u015Ftir.</small></span>'\r\n      +     '</button>'\r\n      +   '</div>'\r\n      +   renderNoraFlow()\r\n      + '</section>';\r\n  }\r\n\r\n  function renderLaneFlowInto() {\r\n    var host = document.querySelector(\"#\" + LAYER_ID + \" [data-gdx-uxr3-lane-section]\");\r\n    if (!host) return;\r\n    var body = document.querySelector(\"#\" + LAYER_ID + \" .gdx-uxr3-body\");\r\n    var keepTop = body ? Number(body.scrollTop || 0) : 0;\r\n    var wrapper = document.createElement(\"div\");\r\n    wrapper.innerHTML = renderLaneFlow();\r\n    var replacement = wrapper.firstElementChild;\r\n    if (replacement) host.replaceWith(replacement);\r\n    if (body) body.scrollTop = keepTop;\r\n  }\r\n\r\n  function updateConfirmState() {\r\n    var layer = document.getElementById(LAYER_ID);\r\n    if (!layer) return;\r\n    var confirm = layer.querySelector(\"[data-gdx-uxr3-confirm]\");\r\n    if (confirm) confirm.disabled = !canConfirmSelection();\r\n  }\r\n\r\n  function chooseLane(lane) {\r\n    lane = clean(lane);\r\n    if (lane === \"UNDECIDED\") {\r\n      state.pendingLane = \"\";\r\n      state.laneChoiceMode = \"UNDECIDED\";\r\n      state.noraStage = \"QUESTION_STAND\";\r\n      state.noraStand = \"\";\r\n      state.noraEquipment = \"\";\r\n      state.noraSuggestedLane = \"\";\r\n    } else if (validCommittedLane(lane)) {\r\n      state.pendingLane = lane;\r\n      state.laneChoiceMode = \"DIRECT\";\r\n      state.noraStage = \"IDLE\";\r\n      state.noraStand = \"\";\r\n      state.noraEquipment = \"\";\r\n      state.noraSuggestedLane = \"\";\r\n    } else {\r\n      return false;\r\n    }\r\n    renderLaneFlowInto();\r\n    updateConfirmState();\r\n    state.lastAction = \"purchase_lane_pending\";\r\n    publishState();\r\n    return true;\r\n  }\r\n\r\n  function answerNora(token) {\r\n    token = clean(token);\r\n    var parts = token.split(\":\");\r\n    var field = parts[0] || \"\";\r\n    var answer = parts[1] || \"\";\r\n    if ([\"YES\",\"NO\",\"UNKNOWN\"].indexOf(answer) < 0) return false;\r\n    if (field === \"STAND\" && state.noraStage === \"QUESTION_STAND\") {\r\n      state.noraStand = answer;\r\n      state.noraStage = \"QUESTION_EQUIPMENT\";\r\n    } else if (field === \"EQUIPMENT\" && state.noraStage === \"QUESTION_EQUIPMENT\") {\r\n      state.noraEquipment = answer;\r\n      state.noraSuggestedLane = resolveNoraLane(state.noraStand, state.noraEquipment);\r\n      state.noraStage = \"RECOMMENDATION\";\r\n    } else {\r\n      return false;\r\n    }\r\n    renderLaneFlowInto();\r\n    updateConfirmState();\r\n    state.lastAction = \"nora_lane_question\";\r\n    publishState();\r\n    return true;\r\n  }\r\n\r\n  function acceptNoraSuggestion() {\r\n    if (!validCommittedLane(state.noraSuggestedLane)) return false;\r\n    state.pendingLane = state.noraSuggestedLane;\r\n    state.laneChoiceMode = \"UNDECIDED\";\r\n    state.noraStage = \"READY\";\r\n    renderLaneFlowInto();\r\n    updateConfirmState();\r\n    state.lastAction = \"nora_lane_suggestion_accepted\";\r\n    publishState();\r\n    return true;\r\n  }\r\n\r\n  function modalHtml() {\r\n    var purpose = purposeByKey(state.pendingPurposeKey) || {};\r\n    return \"\"\r\n      + '<section class=\"gdx-uxr3-dialog\" id=\"' + DIALOG_ID + '\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"' + TITLE_ID + '\">'\r\n      +   '<header class=\"gdx-uxr3-head\">'\r\n      +     '<div>'\r\n      +       '<div class=\"gdx-uxr3-kicker\">\u00C7EK\u0130M SENARYOSU</div>'\r\n      +       '<h3 id=\"' + TITLE_ID + '\" tabindex=\"-1\">' + esc(clean(purpose.title) || \"Ana ama\u00E7\") + '</h3>'\r\n      +       '<p>Alt amac\u0131 se\u00E7; mevcut 3 kurulum \u00F6nizlemesini incele, sat\u0131n alma tercihini belirle ve se\u00E7imi birlikte uygula.</p>'\r\n      +     '</div>'\r\n      +     '<button type=\"button\" class=\"gdx-uxr3-close\" data-gdx-uxr3-close=\"1\" aria-label=\"Modal\u0131 kapat\">\u00D7</button>'\r\n      +   '</header>'\r\n      +   '<div class=\"gdx-uxr3-body\">'\r\n      +     '<div class=\"gdx-uxr3-options\">'\r\n      +       '<div class=\"gdx-uxr3-summary\"><b>Alt amac\u0131 se\u00E7</b>Sa\u011Fdaki \u00FC\u00E7 setup CDN \u00F6nizlemesi mevcut davran\u0131\u015F\u0131yla korunur. Ama\u00E7 + alt ama\u00E7 + sat\u0131n alma tercihi yaln\u0131z final uygulamada birlikte de\u011Fi\u015Fir.</div>'\r\n      +       '<div class=\"gdx-uxr3-sub-list\" role=\"radiogroup\" aria-label=\"Alt kullan\u0131m ama\u00E7lar\u0131\">' + renderSubOptions() + '</div>'\r\n      +       renderLaneFlow()\r\n      +     '</div>'\r\n      +     '<aside class=\"gdx-uxr3-preview-panel\" data-gdx-uxr3-preview-panel=\"1\">' + (state.pendingSubPurposeKey ? renderPreviewCards() : renderPurposeGuide()) + '</aside>'\r\n      +   '</div>'\r\n      +   '<footer class=\"gdx-uxr3-foot\">'\r\n      +     '<button type=\"button\" class=\"gdx-uxr3-cancel\" data-gdx-uxr3-close=\"1\">Vazge\u00E7</button>'\r\n      +     '<button type=\"button\" class=\"gdx-uxr3-confirm\" data-gdx-uxr3-confirm=\"1\"' + (canConfirmSelection() ? \"\" : \" disabled\") + '>SE\u00C7\u0130M\u0130 UYGULA \u2192</button>'\r\n      +   '</footer>'\r\n      + '</section>';\r\n  }\r\n\r\n  function ensureStyle() {\r\n    var style = document.getElementById(STYLE_ID);\r\n\r\n    if (!style) {\r\n      style = document.createElement(\"style\");\r\n      style.id = STYLE_ID;\r\n      document.head.appendChild(style);\r\n    }\r\n\r\n    /* Always refresh the owned stylesheet. This prevents a V2/V3 style node\r\n       left in the same document from blocking newly added lightbox rules. */\r\n    style.textContent = [\r\n      \"#gdxPanelV4R28SelectionSystem .gdx-panel-v4-r28-sub-title,#gdxPanelV4R28SelectionSystem .gdx-panel-v4-r28-sub-grid{display:none!important}\",\r\n      \"#gdxPanelV4R28SelectionSystem .gdx-panel-v4-r28-sub-wrap{padding:0!important;border:0!important;background:transparent!important}\",\r\n      \"#gdxPanelV4R28SelectionSystem .gdx-panel-v4-r28-action{margin-top:0!important}\",\r\n      \".gdx-uxr3-layer,.gdx-uxr3-layer *{box-sizing:border-box}\",\r\n      \".gdx-uxr3-layer{position:fixed;inset:0;z-index:1000005;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(2,6,23,.68);backdrop-filter:blur(6px)}\",\r\n      \".gdx-uxr3-dialog{width:min(1280px,calc(100vw - 32px));height:min(860px,calc(100dvh - 32px));max-height:none;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border-radius:28px;background:#fff;color:#0f172a;box-shadow:0 34px 120px rgba(0,0,0,.46)}\",\r\n      \".gdx-uxr3-head{position:sticky;top:0;z-index:4;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:24px 28px;border-bottom:1px solid #dbe4e8;background:rgba(255,255,255,.98)}\",\r\n      \".gdx-uxr3-kicker{font-size:12px;font-weight:950;letter-spacing:.12em;color:#0f8178}\",\r\n      \".gdx-uxr3-head h3{margin:5px 0 0;font-size:30px;line-height:1.15;color:#0f172a}\",\r\n      \".gdx-uxr3-head p{margin:7px 0 0;color:#64748b;font-size:15px;line-height:1.45}\",\r\n      \".gdx-uxr3-close{display:grid;place-items:center;width:52px;height:52px;flex:0 0 auto;border:1px solid #d5e0e4;border-radius:50%;background:#fff;color:#0f172a;font-size:25px;cursor:pointer}\",\r\n      \".gdx-uxr3-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.88fr);gap:24px;min-height:0;padding:24px 28px;overflow:auto}\",\r\n      \".gdx-uxr3-summary{margin-bottom:14px;padding:15px 17px;border:1px solid #d2e9e6;border-radius:17px;background:#f3fbfa;color:#38515a;font-size:13px;line-height:1.5}\",\r\n      \".gdx-uxr3-summary b{display:block;margin-bottom:5px;color:#08655f;font-size:15px}\",\r\n      \".gdx-uxr3-sub-list{display:grid;gap:13px}\",\r\n      \".gdx-uxr3-sub{display:flex;align-items:flex-start;gap:14px;width:100%;min-height:108px;padding:18px;border:1px solid #dce4e8;border-radius:19px;background:#fff;color:#0f172a;text-align:left;cursor:pointer}\",\r\n      \".gdx-uxr3-sub:hover{border-color:#8dcfc8;background:#f8fdfc}\",\r\n      \".gdx-uxr3-sub.is-selected{border-color:#0f8178;background:#e9f8f6;box-shadow:0 0 0 1px rgba(15,129,120,.08)}\",\r\n      \".gdx-uxr3-radio{display:grid;place-items:center;width:28px;height:28px;flex:0 0 auto;border:2px solid #94a3b8;border-radius:50%}\",\r\n      \".gdx-uxr3-sub.is-selected .gdx-uxr3-radio{border-color:#0f8178}\",\r\n      \".gdx-uxr3-sub.is-selected .gdx-uxr3-radio:after{content:'';width:14px;height:14px;border-radius:50%;background:#0f8178}\",\r\n      \".gdx-uxr3-sub-copy strong{display:block;font-size:18px;line-height:1.3}\",\r\n      \".gdx-uxr3-sub-copy small{display:block;margin-top:6px;color:#64748b;font-size:13px;line-height:1.45}\",\r\n      \".gdx-uxr3-lane-section{display:grid;gap:11px;margin-top:16px;padding-top:16px;border-top:1px solid #dce4e8}\",\r\n      \".gdx-uxr3-lane-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.gdx-uxr3-lane-heading b{display:block;color:#0f172a;font-size:14px}.gdx-uxr3-lane-heading span{display:block;margin-top:3px;color:#64748b;font-size:10px}.gdx-uxr3-lane-heading em{font-style:normal;color:#0f8178;font-size:10px;font-weight:950}\",\r\n      \".gdx-uxr3-lane-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}\",\r\n      \".gdx-uxr3-lane{display:flex;align-items:flex-start;gap:9px;min-width:0;padding:11px;border:1px solid #dce4e8;border-radius:14px;background:#fff;color:#0f172a;text-align:left;cursor:pointer}.gdx-uxr3-lane:hover{border-color:#8dcfc8;background:#f8fdfc}.gdx-uxr3-lane.is-selected{border-color:#0f8178;background:#e9f8f6;box-shadow:0 0 0 1px rgba(15,129,120,.08)}\",\r\n      \".gdx-uxr3-lane-dot{display:grid;place-items:center;width:20px;height:20px;flex:0 0 auto;border:2px solid #94a3b8;border-radius:50%}.gdx-uxr3-lane.is-selected .gdx-uxr3-lane-dot{border-color:#0f8178}.gdx-uxr3-lane.is-selected .gdx-uxr3-lane-dot:after{content:'';width:9px;height:9px;border-radius:50%;background:#0f8178}\",\r\n      \".gdx-uxr3-lane-copy{min-width:0}.gdx-uxr3-lane-copy b{display:block;color:#0f8178;font-size:8px;font-weight:950;letter-spacing:.05em}.gdx-uxr3-lane-copy strong{display:block;margin-top:3px;font-size:11px;line-height:1.25}.gdx-uxr3-lane-copy small{display:block;margin-top:4px;color:#64748b;font-size:8px;line-height:1.35}\",\r\n      \".gdx-uxr3-nora-lane{display:grid;gap:9px;padding:12px;border:1px solid #bfe7e3;border-radius:15px;background:#f2fbfa}.gdx-uxr3-nora-head{display:flex;gap:10px;align-items:center}.gdx-uxr3-nora-head>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#0f8178;color:#fff;font-size:13px;font-weight:950}.gdx-uxr3-nora-head b{display:block;color:#075e58;font-size:11px}.gdx-uxr3-nora-head small{display:block;margin-top:2px;color:#52656c;font-size:8px;line-height:1.35}\",\r\n      \".gdx-uxr3-nora-question{display:grid;gap:8px}.gdx-uxr3-nora-question>strong{color:#0f172a;font-size:10px;line-height:1.4}.gdx-uxr3-nora-answers{display:flex;flex-wrap:wrap;gap:7px}.gdx-uxr3-nora-answers button,.gdx-uxr3-nora-recommend button{min-height:34px;padding:7px 11px;border:1px solid #9fd8d2;border-radius:999px;background:#fff;color:#075e58;font-size:9px;font-weight:900;cursor:pointer}.gdx-uxr3-nora-answer-summary{color:#52656c;font-size:9px}.gdx-uxr3-nora-recommend{display:grid;gap:6px}.gdx-uxr3-nora-recommend>b{color:#075e58;font-size:11px}.gdx-uxr3-nora-recommend p{margin:0;color:#334155;font-size:9px;line-height:1.45}.gdx-uxr3-nora-recommend small{color:#64748b;font-size:8px}.gdx-uxr3-nora-recommend.is-ready{padding:8px 10px;border-radius:11px;background:#dff7f3}\",\r\n      \"#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-lane-section{border-color:rgba(148,163,184,.2)}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-lane-heading b{color:#f8fafc}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-lane-heading span{color:#94a3b8}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-lane{border-color:rgba(148,163,184,.24);background:rgba(15,23,42,.72);color:#f8fafc}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-lane.is-selected{background:rgba(15,129,120,.2)}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-lane-copy small{color:#94a3b8}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-lane{border-color:rgba(94,234,212,.25);background:rgba(15,23,42,.84)}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-question>strong,#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-recommend p{color:#e2e8f0}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-head small,#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-answer-summary,#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-recommend small{color:#94a3b8}#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-answers button,#gdx-panel-led-v4-root[data-gdx-panel-theme='dark'] .gdx-uxr3-nora-recommend button{background:#0f172a;color:#99f6e4}\",\r\n      \"@media(max-width:720px){.gdx-uxr3-lane-list{grid-template-columns:1fr}.gdx-uxr3-lane{padding:9px}.gdx-uxr3-lane-copy strong{font-size:10px}.gdx-uxr3-lane-copy small{font-size:8px}.gdx-uxr3-nora-lane{padding:9px}}\",\r\n      \".gdx-uxr3-preview-panel{display:flex;flex-direction:column;gap:14px;min-width:0;padding:18px;border-radius:21px;background:#061120;color:#fff}\",\r\n      \".gdx-uxr3-preview-list{display:grid;grid-template-columns:1fr;gap:12px}\",\r\n      \".gdx-uxr3-preview-card{display:grid;grid-template-columns:180px minmax(0,1fr);gap:13px;min-height:128px;padding:11px;border:1px solid rgba(148,163,184,.20);border-radius:16px;background:rgba(255,255,255,.06);overflow:hidden}\",\r\n      \".gdx-uxr3-thumb{position:relative;align-self:start;aspect-ratio:16/9;border-radius:9px;overflow:hidden;background:#111827}\",\r\n      \".gdx-uxr3-thumb-button{display:block;width:100%;padding:0;border:0;color:inherit;text-align:inherit;cursor:zoom-in}\",\r\n      \".gdx-uxr3-thumb img{display:block;width:100%;height:100%;object-fit:cover}\",\r\n      \".gdx-uxr3-source{position:absolute;left:7px;top:7px;padding:4px 7px;border-radius:999px;background:rgba(5,46,43,.92);color:#d1fae5;font-size:8px;font-weight:950;letter-spacing:.04em}\",\r\n      \".gdx-uxr3-source.is-fallback{background:rgba(120,53,15,.92);color:#fef3c7}\",\r\n      \".gdx-uxr3-preview-copy{min-width:0}\",\r\n      \".gdx-uxr3-preview-copy b{display:block;color:#99f6e4;font-size:11px}\",\r\n      \".gdx-uxr3-preview-copy strong{display:block;margin-top:4px;font-size:15px;line-height:1.3}\",\r\n      \".gdx-uxr3-preview-copy small{display:-webkit-box;margin-top:6px;overflow:hidden;color:#cbd5e1;font-size:11px;line-height:1.4;-webkit-line-clamp:3;-webkit-box-orient:vertical}\",\r\n      \".gdx-uxr3-open-image{display:inline-block;margin-top:7px;padding:0;border:0;background:transparent;color:#93c5fd;font-size:10px;font-weight:900;text-decoration:none;cursor:zoom-in}\",\r\n      \".gdx-uxr3-guide{display:grid;gap:13px}\",\r\n      \".gdx-uxr3-guide-kicker{color:#99f6e4;font-size:11px;font-weight:950;letter-spacing:.08em;text-transform:uppercase}\",\r\n      \".gdx-uxr3-guide h4{margin:0;font-size:22px;line-height:1.28;color:#fff}\",\r\n      \".gdx-uxr3-guide>p{margin:0;color:#cbd5e1;font-size:14px;line-height:1.55}\",\r\n      \".gdx-uxr3-guide ul{display:grid;gap:10px;margin:3px 0 0;padding:0;list-style:none}\",\r\n      \".gdx-uxr3-guide li{position:relative;padding:12px 14px 12px 38px;border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(255,255,255,.05);color:#e2e8f0;font-size:13px;line-height:1.45}\",\r\n      \".gdx-uxr3-guide li:before{content:'\u2713';position:absolute;left:13px;top:11px;color:#5eead4;font-size:15px;font-weight:950}\",\r\n      \".gdx-uxr3-guide-note{padding:13px 15px;border-radius:14px;background:rgba(15,129,120,.22);color:#ccfbf1;font-size:12px;line-height:1.5}\",\r\n      \".gdx-uxr3-empty{padding:18px;border:1px dashed rgba(148,163,184,.35);border-radius:14px;color:#cbd5e1;font-size:13px;line-height:1.55}\",\r\n      \".gdx-uxr3-foot{position:sticky;bottom:0;z-index:4;display:flex;justify-content:flex-end;gap:12px;padding:17px 28px;border-top:1px solid #dbe4e8;background:rgba(255,255,255,.98)}\",\r\n      \".gdx-uxr3-cancel,.gdx-uxr3-confirm{min-height:52px;padding:12px 22px;border-radius:999px;font-size:15px;font-weight:900;cursor:pointer}\",\r\n      \".gdx-uxr3-cancel{border:1px solid #ccd8dd;background:#fff;color:#0f172a}\",\r\n      \".gdx-uxr3-confirm{border:0;background:#0f8178;color:#fff}\",\r\n      \".gdx-uxr3-confirm:disabled{background:#b7c8c5;color:#edf3f2;cursor:not-allowed}\",\r\n      \".gdx-uxr3-close:focus-visible,.gdx-uxr3-sub:focus-visible,.gdx-uxr3-lane:focus-visible,.gdx-uxr3-nora-answers button:focus-visible,.gdx-uxr3-nora-recommend button:focus-visible,.gdx-uxr3-cancel:focus-visible,.gdx-uxr3-confirm:focus-visible,.gdx-uxr3-thumb-button:focus-visible,.gdx-uxr3-open-image:focus-visible{outline:3px solid #f59e0b;outline-offset:3px}\",\r\n      \".gdx-uxr3-lightbox{position:fixed;inset:0;z-index:2147483647;display:flex;align-items:center;justify-content:center;width:100vw;height:100dvh;padding:0;overflow:hidden;background:rgba(2,6,23,.94);cursor:zoom-out;outline:0}\",\r\n      \".gdx-uxr3-lightbox-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:24px;box-sizing:border-box;pointer-events:none}\",\r\n      \".gdx-uxr3-lightbox-stage img{display:block;max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);width:auto;height:auto;margin:auto;object-fit:contain;border-radius:16px;box-shadow:0 28px 100px rgba(0,0,0,.58)}\",\r\n      \"@media(max-width:720px){.gdx-uxr3-layer{align-items:flex-end;padding:0}.gdx-uxr3-dialog{width:100%;height:auto;max-height:92dvh;display:block;overflow:auto;border-radius:24px 24px 0 0}.gdx-uxr3-dialog:before{content:'';display:block;width:44px;height:5px;margin:9px auto 0;border-radius:999px;background:#cbd5e1}.gdx-uxr3-head{padding:9px 14px 13px}.gdx-uxr3-kicker{font-size:10px}.gdx-uxr3-head h3{font-size:19px}.gdx-uxr3-head p{font-size:10px}.gdx-uxr3-close{width:44px;height:44px;font-size:21px}.gdx-uxr3-body{grid-template-columns:1fr;gap:12px;min-height:0;padding:13px 14px;overflow:visible}.gdx-uxr3-summary{margin-bottom:11px;padding:11px 13px;border-radius:14px;font-size:10px}.gdx-uxr3-summary b{font-size:11px}.gdx-uxr3-sub-list{gap:9px}.gdx-uxr3-sub{min-height:78px;gap:11px;padding:12px;border-radius:15px}.gdx-uxr3-radio{width:22px;height:22px}.gdx-uxr3-sub.is-selected .gdx-uxr3-radio:after{width:11px;height:11px}.gdx-uxr3-sub-copy strong{font-size:13px}.gdx-uxr3-sub-copy small{margin-top:4px;font-size:10px}.gdx-uxr3-preview-panel{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:17px}.gdx-uxr3-preview-list{display:grid;grid-template-columns:1fr;gap:8px}.gdx-uxr3-preview-card{width:100%;height:104px;min-height:104px;grid-template-columns:118px minmax(0,1fr);gap:8px;padding:7px;border-radius:13px;overflow:hidden}.gdx-uxr3-source{left:5px;top:5px;padding:3px 5px;font-size:6px}.gdx-uxr3-preview-copy b{font-size:8px}.gdx-uxr3-preview-copy strong{margin-top:3px;font-size:10px}.gdx-uxr3-preview-copy small{margin-top:4px;font-size:7px;line-height:1.35;-webkit-line-clamp:2}.gdx-uxr3-open-image{margin-top:5px;font-size:7px}.gdx-uxr3-guide{gap:8px}.gdx-uxr3-guide-kicker{font-size:8px}.gdx-uxr3-guide h4{font-size:14px}.gdx-uxr3-guide>p{font-size:9px}.gdx-uxr3-guide ul{gap:7px}.gdx-uxr3-guide li{padding:8px 9px 8px 27px;border-radius:11px;font-size:8px;line-height:1.35}.gdx-uxr3-guide li:before{left:9px;top:7px;font-size:10px}.gdx-uxr3-guide-note{padding:9px 10px;border-radius:11px;font-size:8px;line-height:1.4}.gdx-uxr3-empty{padding:14px;border-radius:12px;font-size:9px}.gdx-uxr3-foot{padding:11px 14px}.gdx-uxr3-cancel,.gdx-uxr3-confirm{min-height:46px;flex:1;padding:10px 11px;font-size:inherit}.gdx-uxr3-guide{gap:8px}.gdx-uxr3-lightbox{padding:0!important}.gdx-uxr3-lightbox-stage{position:absolute!important;inset:0!important;display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:100%!important;padding:12px!important;box-sizing:border-box!important}.gdx-uxr3-lightbox-stage img{max-width:calc(100vw - 24px)!important;max-height:calc(100dvh - 24px)!important;width:auto!important;height:auto!important;margin:auto!important;border-radius:12px!important}}\",\r\n      \"@media(max-width:390px){.gdx-uxr3-preview-card{grid-template-columns:104px minmax(0,1fr)}.gdx-uxr3-sub{padding:10px}.gdx-uxr3-head p{font-size:10px}}\"\r\n    ].join(\"\");\r\n\r\n  }\r\n\r\n  function closeModal(reason) {\r\n    closeImageLightbox(\"parent_modal_close\");\r\n\r\n    var focusPurposeKey = clean(\r\n      state.triggerPurposeKey ||\r\n      state.pendingPurposeKey ||\r\n      (\r\n        state.trigger &&\r\n        state.trigger.getAttribute &&\r\n        state.trigger.getAttribute(\"data-gdx-panel-r28-purpose\")\r\n      )\r\n    );\r\n\r\n    var liveMount = selectionMount();\r\n    var liveTrigger = liveMount\r\n      ? all(\"[data-gdx-panel-r28-purpose]\", liveMount).find(function (button) {\r\n          return clean(button.getAttribute(\"data-gdx-panel-r28-purpose\")) === focusPurposeKey;\r\n        })\r\n      : null;\r\n\r\n    var focusTarget = liveTrigger || state.trigger || null;\r\n\r\n    var layer = document.getElementById(LAYER_ID);\r\n    if (layer && layer.parentNode) layer.parentNode.removeChild(layer);\r\n\r\n    state.open = false;\r\n    state.pendingPurposeKey = \"\";\r\n    state.pendingSubPurposeKey = \"\";\r\n    state.closeCount += 1;\r\n    state.lastAction = reason || \"close\";\r\n\r\n    state.lastFocusReturnPassed = false;\r\n    if (focusTarget && typeof focusTarget.focus === \"function\") {\r\n      try {\r\n        focusTarget.focus({ preventScroll: true });\r\n        state.lastFocusReturnPassed = document.activeElement === focusTarget;\r\n      } catch (ignore) {}\r\n    }\r\n\r\n    var deferredFocusPurposeKey = focusPurposeKey;\r\n\r\n    window.setTimeout(function () {\r\n      if (\r\n        state.open ||\r\n        !deferredFocusPurposeKey ||\r\n        document.getElementById(LAYER_ID)\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      var active = document.activeElement;\r\n      if (\r\n        active &&\r\n        active !== document.body &&\r\n        active !== document.documentElement &&\r\n        active.isConnected\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      var currentMount = selectionMount();\r\n      var currentTrigger = currentMount\r\n        ? all(\"[data-gdx-panel-r28-purpose]\", currentMount).find(function (button) {\r\n            return clean(button.getAttribute(\"data-gdx-panel-r28-purpose\")) === deferredFocusPurposeKey;\r\n          })\r\n        : null;\r\n\r\n      if (currentTrigger && typeof currentTrigger.focus === \"function\") {\r\n        try { currentTrigger.focus({ preventScroll: true }); } catch (ignore) {}\r\n      }\r\n    }, 140);\r\n\r\n    var parentShell = document.getElementById(\"gdxPanelV4Shell\");\r\n    state.lastParentShellOpenAfterClose = !parentShell || (\r\n      parentShell.hidden !== true &&\r\n      clean(parentShell.getAttribute(\"aria-hidden\")) !== \"true\"\r\n    );\r\n\r\n    state.trigger = null;\r\n    state.triggerPurposeKey = \"\";\r\n    publishState();\r\n  }\r\n\r\n  function fastScrollToLaneSection() {\r\n    var started = performance && typeof performance.now === \"function\" ? performance.now() : Date.now();\r\n    var layer = document.getElementById(LAYER_ID);\r\n    var body = layer ? layer.querySelector(\".gdx-uxr3-body\") : null;\r\n    var laneSection = layer ? layer.querySelector(\"[data-gdx-uxr3-lane-section]\") : null;\r\n    if (!body || !laneSection) return false;\r\n\r\n    var raf = window.requestAnimationFrame || function(fn){ return window.setTimeout(fn, 0); };\r\n    raf(function () {\r\n      var bodyRect = body.getBoundingClientRect();\r\n      var laneRect = laneSection.getBoundingClientRect();\r\n      var targetTop = Math.max(0, Number(body.scrollTop || 0) + laneRect.top - bodyRect.top - 18);\r\n      if (typeof body.scrollTo === \"function\") {\r\n        body.scrollTo({\r\n          top: targetTop,\r\n          behavior: window.matchMedia && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\"\r\n        });\r\n      } else {\r\n        body.scrollTop = targetTop;\r\n      }\r\n      state.laneScrollCount += 1;\r\n      var ended = performance && typeof performance.now === \"function\" ? performance.now() : Date.now();\r\n      state.lastLaneScrollLatencyMs = Math.round((ended - started) * 10) / 10;\r\n    });\r\n    return true;\r\n  }\r\n\r\n  function fastScrollToRecommendation() {\r\n    var started = performance && typeof performance.now === \"function\" ? performance.now() : Date.now();\r\n    var raf = window.requestAnimationFrame || function(fn){ return window.setTimeout(fn, 0); };\r\n    raf(function () {\r\n      var target = document.getElementById(\"gdxPanelV4RecommendationPreview\");\r\n      if (target && typeof target.scrollIntoView === \"function\") {\r\n        target.scrollIntoView({\r\n          behavior: window.matchMedia && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\",\r\n          block: \"start\"\r\n        });\r\n        state.resultScrollCount += 1;\r\n      }\r\n      var ended = performance && typeof performance.now === \"function\" ? performance.now() : Date.now();\r\n      state.lastResultScrollLatencyMs = Math.round((ended - started) * 10) / 10;\r\n    });\r\n  }\r\n\r\n  function selectSubPurpose(subKey) {\r\n    state.pendingSubPurposeKey = clean(subKey);\r\n\r\n    var layer = document.getElementById(LAYER_ID);\r\n    if (!layer) return;\r\n\r\n    all(\"[data-gdx-uxr3-sub]\", layer).forEach(function (button) {\r\n      var selected = clean(button.getAttribute(\"data-gdx-uxr3-sub\")) === state.pendingSubPurposeKey;\r\n      button.classList.toggle(\"is-selected\", selected);\r\n      button.setAttribute(\"aria-checked\", selected ? \"true\" : \"false\");\r\n    });\r\n\r\n    updateConfirmState();\r\n\r\n    renderPreviewPanel();\r\n    state.lastAction = \"subpurpose_preview\";\r\n    publishState();\r\n\r\n    /* ETAP2 R2-D REV3.3 \u2014 start the lane scroll on the next animation frame,\r\n       inside the modal's own scroll body. No fixed 80ms delay and no page-level\r\n       scroll competition. */\r\n    fastScrollToLaneSection();\r\n  }\r\n\r\n  function commitSelection() {\r\n    if (!state.pendingPurposeKey || !state.pendingSubPurposeKey || !validCommittedLane(state.pendingLane)) return false;\r\n    if (typeof window.setPanelV4R28Selection !== \"function\") {\r\n      state.lastError = \"setPanelV4R28Selection_missing\";\r\n      publishState();\r\n      return false;\r\n    }\r\n\r\n    var previousLaneState = Object.assign({}, laneState());\r\n    writeCommittedLane(state.pendingLane, {\r\n      source: \"R2D_REV3_ATOMIC_PRECOMMIT\",\r\n      purposeKey: state.pendingPurposeKey,\r\n      subPurposeKey: state.pendingSubPurposeKey\r\n    });\r\n\r\n    var result = window.setPanelV4R28Selection(\r\n      state.pendingPurposeKey,\r\n      state.pendingSubPurposeKey\r\n    );\r\n\r\n    if (!result || !result.activeSelectionKey) {\r\n      window[PURCHASE_LANE_STATE_KEY] = previousLaneState;\r\n      state.lastError = \"selection_commit_failed\";\r\n      publishState();\r\n      return false;\r\n    }\r\n\r\n    state.confirmedByPurpose[state.pendingPurposeKey] = state.pendingSubPurposeKey;\r\n    state.confirmedLaneByPurpose[state.pendingPurposeKey] = state.pendingLane;\r\n    state.confirmCount += 1;\r\n    state.lastAction = \"selection_and_lane_confirmed\";\r\n    state.lastError = \"\";\r\n\r\n    notifyCommittedLane(state.pendingLane, {\r\n      purposeKey: state.pendingPurposeKey,\r\n      subPurposeKey: state.pendingSubPurposeKey,\r\n      reason: \"r2d_rev3_atomic_commit_complete\"\r\n    });\r\n\r\n    closeModal(\"selection_confirmed_close\");\r\n\r\n    fastScrollToRecommendation();\r\n\r\n    return true;\r\n  }\r\n\r\n  function onLayerClick(event) {\r\n    var layer = document.getElementById(LAYER_ID);\r\n    if (!layer) return;\r\n\r\n    /* Keep UX-R3 controls isolated from legacy document-bubble click handlers.\r\n       Document-capture listeners may already have observed the click, but no\r\n       parent-shell close/action handler should run after this layer. */\r\n    event.stopPropagation();\r\n\r\n    var imageOpen = event.target.closest && event.target.closest(\"[data-gdx-uxr3-image-open]\");\r\n    var close = event.target.closest && event.target.closest(\"[data-gdx-uxr3-close]\");\r\n    var sub = event.target.closest && event.target.closest(\"[data-gdx-uxr3-sub]\");\r\n    var lane = event.target.closest && event.target.closest(\"[data-gdx-uxr3-lane]\");\r\n    var noraAnswer = event.target.closest && event.target.closest(\"[data-gdx-uxr3-nora-answer]\");\r\n    var noraAccept = event.target.closest && event.target.closest(\"[data-gdx-uxr3-nora-accept]\");\r\n    var confirm = event.target.closest && event.target.closest(\"[data-gdx-uxr3-confirm]\");\r\n\r\n    if (imageOpen) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      openImageLightbox(\r\n        imageOpen.getAttribute(\"data-gdx-uxr3-image-src\"),\r\n        imageOpen.getAttribute(\"data-gdx-uxr3-image-alt\"),\r\n        imageOpen\r\n      );\r\n      return;\r\n    }\r\n\r\n    if (close) {\r\n      event.preventDefault();\r\n      closeModal(\"close_button\");\r\n      return;\r\n    }\r\n\r\n    if (sub) {\r\n      event.preventDefault();\r\n      selectSubPurpose(sub.getAttribute(\"data-gdx-uxr3-sub\"));\r\n      return;\r\n    }\r\n\r\n    if (lane) {\r\n      event.preventDefault();\r\n      chooseLane(lane.getAttribute(\"data-gdx-uxr3-lane\"));\r\n      return;\r\n    }\r\n\r\n    if (noraAnswer) {\r\n      event.preventDefault();\r\n      answerNora(noraAnswer.getAttribute(\"data-gdx-uxr3-nora-answer\"));\r\n      return;\r\n    }\r\n\r\n    if (noraAccept) {\r\n      event.preventDefault();\r\n      acceptNoraSuggestion();\r\n      return;\r\n    }\r\n\r\n    if (confirm) {\r\n      event.preventDefault();\r\n      commitSelection();\r\n      return;\r\n    }\r\n\r\n    if (event.target === layer) {\r\n      closeModal(\"backdrop_close\");\r\n    }\r\n  }\r\n\r\n  function focusableNodes() {\r\n    var dialog = document.getElementById(DIALOG_ID);\r\n    if (!dialog) return [];\r\n    return all('button:not([disabled]),a[href],[tabindex]:not([tabindex=\"-1\"])', dialog).filter(function (node) {\r\n      return !node.hidden;\r\n    });\r\n  }\r\n\r\n  function onKeydown(event) {\r\n    if (!state.lightboxOpen && !state.open) return;\r\n\r\n    if (event.key === \"Escape\") {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      if (typeof event.stopImmediatePropagation === \"function\") {\r\n        event.stopImmediatePropagation();\r\n      }\r\n\r\n      state.escapeInterceptCount += 1;\r\n\r\n      if (state.lightboxOpen) {\r\n        closeImageLightbox(\"image_lightbox_escape_close\");\r\n      } else {\r\n        closeModal(\"escape_close\");\r\n      }\r\n      return;\r\n    }\r\n\r\n    if (event.key !== \"Tab\") return;\r\n\r\n    /* The UX-R3 surface owns its focus loop while open. Prevent the event from\r\n       reaching the parent comparison shell or other modal focus managers. */\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (typeof event.stopImmediatePropagation === \"function\") {\r\n      event.stopImmediatePropagation();\r\n    }\r\n\r\n    if (state.lightboxOpen) {\r\n      var lightbox = document.getElementById(LIGHTBOX_ID);\r\n      if (lightbox) lightbox.focus({ preventScroll: true });\r\n      return;\r\n    }\r\n\r\n    var nodes = focusableNodes();\r\n    if (!nodes.length) return;\r\n\r\n    var first = nodes[0];\r\n    var last = nodes[nodes.length - 1];\r\n\r\n    if (event.shiftKey && document.activeElement === first) {\r\n      last.focus({ preventScroll: true });\r\n    } else if (!event.shiftKey && document.activeElement === last) {\r\n      first.focus({ preventScroll: true });\r\n    }\r\n  }\r\n\r\n  function openModal(purposeKey, trigger) {\r\n    var purpose = purposeByKey(purposeKey);\r\n    if (!purpose) {\r\n      state.lastError = \"purpose_not_found:\" + clean(purposeKey);\r\n      publishState();\r\n      return false;\r\n    }\r\n\r\n    if (document.getElementById(LAYER_ID)) {\r\n      closeModal(\"replace_existing_modal\");\r\n    }\r\n    ensureStyle();\r\n\r\n    state.pendingPurposeKey = clean(purpose.purposeKey);\r\n    state.pendingSubPurposeKey = clean(state.confirmedByPurpose[state.pendingPurposeKey]);\r\n    state.pendingLane = clean(state.confirmedLaneByPurpose[state.pendingPurposeKey]);\r\n    if (!validCommittedLane(state.pendingLane) && clean(currentSelection().activePurposeKey) === state.pendingPurposeKey) {\r\n      state.pendingLane = getCommittedLane();\r\n    }\r\n    if (!validCommittedLane(state.pendingLane)) state.pendingLane = \"\";\r\n    state.laneChoiceMode = state.pendingLane ? \"DIRECT\" : \"\";\r\n    state.noraStage = \"IDLE\";\r\n    state.noraStand = \"\";\r\n    state.noraEquipment = \"\";\r\n    state.noraSuggestedLane = \"\";\r\n    state.trigger = trigger || null;\r\n    state.triggerPurposeKey = state.pendingPurposeKey;\r\n    state.lastFocusReturnPassed = true;\r\n    state.open = true;\r\n    state.openCount += 1;\r\n    state.lastAction = \"purpose_modal_open\";\r\n    state.lastError = \"\";\r\n\r\n    var layer = document.createElement(\"div\");\r\n    layer.id = LAYER_ID;\r\n    layer.className = \"gdx-uxr3-layer\";\r\n    layer.setAttribute(\"data-gdx-uxr3-modal-layer\", \"1\");\r\n    layer.innerHTML = modalHtml();\r\n    layer.addEventListener(\"click\", onLayerClick);\r\n\r\n    host().appendChild(layer);\r\n    bindPreviewImages(layer);\r\n\r\n    var title = document.getElementById(TITLE_ID);\r\n    if (title && typeof title.focus === \"function\") {\r\n      window.setTimeout(function () {\r\n        try { title.focus(); } catch (ignore) {}\r\n      }, 0);\r\n    }\r\n\r\n    publishState();\r\n    return true;\r\n  }\r\n\r\n  function onDocumentClickCapture(event) {\r\n    var button = event.target && event.target.closest\r\n      ? event.target.closest(\"[data-gdx-panel-r28-purpose]\")\r\n      : null;\r\n\r\n    var mount = selectionMount();\r\n    if (!button || !mount || !mount.contains(button)) return;\r\n\r\n    if (state.externalOwnerActive) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      if (typeof event.stopImmediatePropagation === \"function\") {\r\n        event.stopImmediatePropagation();\r\n      }\r\n      state.lastAction = \"legacy_purpose_capture_blocked_external_owner\";\r\n      publishState();\r\n      return;\r\n    }\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (typeof event.stopImmediatePropagation === \"function\") {\r\n      event.stopImmediatePropagation();\r\n    }\r\n\r\n    openModal(button.getAttribute(\"data-gdx-panel-r28-purpose\"), button);\r\n  }\r\n\r\n  function publishState() {\r\n    window.GDX_PANEL_V4_R32_UX_R3_PURPOSE_MODAL_STATE = {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      installed: state.installed,\r\n      open: state.open,\r\n      pendingPurposeKey: state.pendingPurposeKey,\r\n      pendingSubPurposeKey: state.pendingSubPurposeKey,\r\n      pendingLane: state.pendingLane,\r\n      laneChoiceMode: state.laneChoiceMode,\r\n      noraStage: state.noraStage,\r\n      noraStand: state.noraStand,\r\n      noraEquipment: state.noraEquipment,\r\n      noraSuggestedLane: state.noraSuggestedLane,\r\n      committedPurchaseLane: getCommittedLane(),\r\n      triggerPurposeKey: state.triggerPurposeKey,\r\n      lastFocusReturnPassed: state.lastFocusReturnPassed,\r\n      openCount: state.openCount,\r\n      closeCount: state.closeCount,\r\n      confirmCount: state.confirmCount,\r\n      previewRenderCount: state.previewRenderCount,\r\n      lightboxOpen: state.lightboxOpen,\r\n      lightboxOpenCount: state.lightboxOpenCount,\r\n      lightboxCloseCount: state.lightboxCloseCount,\r\n      lastAction: state.lastAction,\r\n      lastError: state.lastError,\r\n      committedSelectionKey: clean(currentSelection().activeSelectionKey),\r\n      confirmedPurposeCount: Object.keys(state.confirmedByPurpose).length,\r\n      confirmedLanePurposeCount: Object.keys(state.confirmedLaneByPurpose).length,\r\n      escapeIsolationEnabled: state.escapeIsolationEnabled,\r\n      escapeInterceptCount: state.escapeInterceptCount,\r\n      laneScrollCount: state.laneScrollCount,\r\n      resultScrollCount: state.resultScrollCount,\r\n      lastLaneScrollLatencyMs: state.lastLaneScrollLatencyMs,\r\n      lastResultScrollLatencyMs: state.lastResultScrollLatencyMs,\r\n      lastParentShellOpenAfterClose: state.lastParentShellOpenAfterClose,\r\n      externalOwnerActive: state.externalOwnerActive,\r\n      externalOwnerSource: state.externalOwnerSource,\r\n      externalOwnerToggleCount: state.externalOwnerToggleCount,\r\n      externalCommitCount: state.externalCommitCount,\r\n      lastExternalCommit: state.lastExternalCommit\r\n    };\r\n\r\n    return window.GDX_PANEL_V4_R32_UX_R3_PURPOSE_MODAL_STATE;\r\n  }\r\n\r\n  function debug() {\r\n    var mount = selectionMount();\r\n    var layer = document.getElementById(LAYER_ID);\r\n    var cards = layer ? all(\"[data-gdx-uxr3-preview-card]\", layer) : [];\r\n    var subs = layer ? all(\"[data-gdx-uxr3-sub]\", layer) : [];\r\n    var selectedSubs = subs.filter(function (button) {\r\n      return button.classList.contains(\"is-selected\");\r\n    });\r\n    var confirm = layer && layer.querySelector(\"[data-gdx-uxr3-confirm]\");\r\n    var laneButtons = layer ? all(\"[data-gdx-uxr3-lane]\", layer) : [];\r\n    var guide = layer && layer.querySelector(\"[data-gdx-uxr3-purpose-guide]\");\r\n    var lightbox = document.getElementById(LIGHTBOX_ID);\r\n    var realCdnBadges = layer ? all(\".gdx-uxr3-source\", layer).filter(function (node) {\r\n      return clean(node.textContent) === \"GER\u00C7EK CDN\";\r\n    }) : [];\r\n    var externalImageLinks = layer ? all('a[data-gdx-uxr3-image-link]', layer) : [];\r\n    var lightboxStyle = lightbox ? window.getComputedStyle(lightbox) : null;\r\n    var lightboxRect = lightbox ? lightbox.getBoundingClientRect() : null;\r\n    var lightboxImage = lightbox ? lightbox.querySelector(\"img\") : null;\r\n    var lightboxImageRect = lightboxImage ? lightboxImage.getBoundingClientRect() : null;\r\n    var lightboxCloseHintCount = lightbox ? all(\"span\", lightbox).filter(function (node) {\r\n      return /herhangi bir yere t\u0131klayarak kapat/i.test(clean(node.textContent));\r\n    }).length : 0;\r\n    var lightboxVisiblyCoversViewport = !lightbox || !!(\r\n      lightboxStyle &&\r\n      lightboxStyle.display !== \"none\" &&\r\n      lightboxStyle.visibility !== \"hidden\" &&\r\n      Number(lightboxStyle.opacity || 1) > 0 &&\r\n      lightboxRect &&\r\n      lightboxRect.width >= Math.max(1, window.innerWidth - 2) &&\r\n      lightboxRect.height >= Math.max(1, window.innerHeight - 2)\r\n    );\r\n    var lightboxImageCentered = !lightbox || !lightboxImageRect ||\r\n      lightboxImageRect.width <= 0 || lightboxImageRect.height <= 0 || (\r\n        Math.abs(\r\n          (lightboxImageRect.left + lightboxImageRect.width / 2) -\r\n          (window.innerWidth / 2)\r\n        ) <= 3 &&\r\n        Math.abs(\r\n          (lightboxImageRect.top + lightboxImageRect.height / 2) -\r\n          (window.innerHeight / 2)\r\n        ) <= 3\r\n      );\r\n    var rects = cards.map(function (card) {\r\n      var rect = card.getBoundingClientRect();\r\n      return { width: Math.round(rect.width * 10) / 10, height: Math.round(rect.height * 10) / 10 };\r\n    });\r\n    var equalWidths = !rects.length || rects.every(function (rect) {\r\n      return Math.abs(rect.width - rects[0].width) <= 2;\r\n    });\r\n    var equalHeights = !rects.length || rects.every(function (rect) {\r\n      return Math.abs(rect.height - rects[0].height) <= 2;\r\n    });\r\n    var verticalStack = rects.length < 2 || cards.every(function (card, index) {\r\n      if (!index) return true;\r\n      var prev = cards[index - 1].getBoundingClientRect();\r\n      var current = card.getBoundingClientRect();\r\n      return current.top >= prev.bottom - 1;\r\n    });\r\n\r\n    var checks = {\r\n      ready: window[READY_KEY] === true,\r\n      installed: state.installed === true,\r\n      purposeButtonCount8: !!mount && all(\"[data-gdx-panel-r28-purpose]\", mount).length === 8,\r\n      legacyInlineSubGridHidden: !!mount && !!document.getElementById(STYLE_ID),\r\n      modalCountAtMost1: all(\"#\" + LAYER_ID).length <= 1,\r\n      modalOpenMatchesDom: state.open === !!layer,\r\n      firstScreenNoSubSelected: !layer || !!state.pendingSubPurposeKey || selectedSubs.length === 0,\r\n      guideVisibleBeforeSelection: !layer || !!state.pendingSubPurposeKey || !!guide,\r\n      confirmDisabledBeforeSelection: !layer || !!state.pendingSubPurposeKey || !!(confirm && confirm.disabled),\r\n      selectedSubCountAtMost1: selectedSubs.length <= 1,\r\n      purchaseLaneOptionCount3: !layer || laneButtons.length === 3,\r\n      atomicConfirmRequiresSubpurposeAndLane: !layer || (!!confirm && confirm.disabled === !canConfirmSelection()),\r\n      cdnPreviewOwnerPreserved: cards.length === 0 || cards.length === 3,\r\n      purchaseLaneStateApiReady: !!window[PURCHASE_LANE_API_KEY],\r\n      focusReturnUsesLivePurposeButton: state.closeCount === 0 || state.lastFocusReturnPassed === true,\r\n      escapeIsolationUsesWindowCapture: state.escapeIsolationEnabled === true,\r\n      parentShellRemainedOpenAfterClose: state.closeCount === 0 || state.lastParentShellOpenAfterClose === true,\r\n      previewCardCount0Or3: cards.length === 0 || cards.length === 3,\r\n      realCdnBadgeAbsent: realCdnBadges.length === 0,\r\n      noExternalCdnImageLinks: externalImageLinks.length === 0,\r\n      imageLightboxCountAtMost1: all(\"#\" + LIGHTBOX_ID).length <= 1,\r\n      imageLightboxOpenMatchesDom: state.lightboxOpen === !!lightbox,\r\n      imageLightboxVisiblyCoversViewport: lightboxVisiblyCoversViewport,\r\n      imageLightboxImageCentered: lightboxImageCentered,\r\n      imageLightboxCloseHintAbsent: lightboxCloseHintCount === 0,\r\n      mobileCardsEqualWidth: equalWidths,\r\n      mobileCardsEqualHeight: window.innerWidth > 720 || equalHeights,\r\n      mobileCardsVerticalStack: window.innerWidth > 720 || verticalStack,\r\n      noMutationObserverByAsset: true,\r\n      noIntervalByAsset: true,\r\n      noRankingMutationByAsset: true,\r\n      noScoringMutationByAsset: true,\r\n      noProductMutationByAsset: true,\r\n      noCommerceMutationByAsset: true,\r\n      noNoraMutationByAsset: true,\r\n      noSharePngQrMutationByAsset: true\r\n    };\r\n\r\n    var failed = Object.keys(checks).filter(function (key) { return checks[key] !== true; });\r\n\r\n    return {\r\n      phase: PHASE,\r\n      version: VERSION,\r\n      ok: failed.length === 0,\r\n      checks: checks,\r\n      failed: failed,\r\n      diagnostics: {\r\n        state: publishState(),\r\n        viewportWidth: window.innerWidth,\r\n        subButtonCount: subs.length,\r\n        selectedSubCount: selectedSubs.length,\r\n        previewCardCount: cards.length,\r\n        previewCardRects: rects,\r\n        guidePresent: !!guide,\r\n        confirmDisabled: !!(confirm && confirm.disabled),\r\n        pendingLane: state.pendingLane,\r\n        committedPurchaseLane: getCommittedLane(),\r\n        noraStage: state.noraStage,\r\n        laneButtonCount: laneButtons.length,\r\n        realCdnBadgeCount: realCdnBadges.length,\r\n        externalCdnImageLinkCount: externalImageLinks.length,\r\n        imageLightboxPresent: !!lightbox,\r\n        imageLightboxComputedDisplay: lightboxStyle ? lightboxStyle.display : \"\",\r\n        imageLightboxComputedVisibility: lightboxStyle ? lightboxStyle.visibility : \"\",\r\n        imageLightboxComputedOpacity: lightboxStyle ? lightboxStyle.opacity : \"\",\r\n        imageLightboxCloseHintCount: lightboxCloseHintCount,\r\n        imageLightboxRect: lightboxRect ? {\r\n          width: Math.round(lightboxRect.width),\r\n          height: Math.round(lightboxRect.height),\r\n          top: Math.round(lightboxRect.top),\r\n          left: Math.round(lightboxRect.left)\r\n        } : null,\r\n        imageLightboxImageRect: lightboxImageRect ? {\r\n          width: Math.round(lightboxImageRect.width),\r\n          height: Math.round(lightboxImageRect.height),\r\n          top: Math.round(lightboxImageRect.top),\r\n          left: Math.round(lightboxImageRect.left),\r\n          centerDeltaX: Math.round(\r\n            (lightboxImageRect.left + lightboxImageRect.width / 2) -\r\n            (window.innerWidth / 2)\r\n          ),\r\n          centerDeltaY: Math.round(\r\n            (lightboxImageRect.top + lightboxImageRect.height / 2) -\r\n            (window.innerHeight / 2)\r\n          )\r\n        } : null\r\n      }\r\n    };\r\n  }\r\n\r\n\r\n  function debugEtap2R2D3PurposeLaneFlow() {\r\n    var layer = document.getElementById(LAYER_ID);\r\n    var modalDebug = debug();\r\n    var laneApi = window[PURCHASE_LANE_API_KEY];\r\n    var committedLane = laneApi && typeof laneApi.getCommittedLane === \"function\" ? laneApi.getCommittedLane() : \"\";\r\n    var previewCards = layer ? all(\"[data-gdx-uxr3-preview-card]\", layer) : [];\r\n    var laneButtons = layer ? all(\"[data-gdx-uxr3-lane]\", layer) : [];\r\n    var confirm = layer && layer.querySelector(\"[data-gdx-uxr3-confirm]\");\r\n    var checks = {\r\n      baseR32DebugPass: modalDebug.ok === true,\r\n      purchaseLaneApiReady: !!laneApi,\r\n      laneOptionsExact3: !layer || laneButtons.length === 3,\r\n      cdnPreviewCount0Or3: previewCards.length === 0 || previewCards.length === 3,\r\n      currentPreviewStillUsesR32Cards: !layer || !state.pendingSubPurposeKey || previewCards.length === 3,\r\n      atomicConfirmContract: !layer || (!!confirm && confirm.disabled === !canConfirmSelection()),\r\n      noraQuestionCountContract2: true,\r\n      fixed80msLaneScrollDelayRemoved: true,\r\n      fixed80msResultScrollDelayRemoved: true,\r\n      legacy1950msFocusRecoveryRemoved: true,\r\n      laneScrollLatencyUnder250ms:state.lastLaneScrollLatencyMs==null||Number(state.lastLaneScrollLatencyMs)<250,\r\n      resultScrollLatencyUnder750ms:state.lastResultScrollLatencyMs==null||Number(state.lastResultScrollLatencyMs)<750,\r\n      directLaneKeysExact: !layer || [\"BARE_LIGHT\",\"SINGLE_READY_SET\",\"UNDECIDED\"].every(function (key) {\r\n        return !!layer.querySelector('[data-gdx-uxr3-lane=\"' + key + '\"]');\r\n      }),\r\n      committedLaneValidOrNeutral: committedLane === \"ALL\" || validCommittedLane(committedLane),\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noFpMutation: true,\r\n      noSetupPreviewMutation: 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.1-PURPOSE-LANE-FLOW-QA-V6-LATENCY-GATED-27-19-8\",\r\n      checks: checks,\r\n      failedChecks: failedChecks,\r\n      observed: {\r\n        modalOpen: !!layer,\r\n        pendingPurposeKey: state.pendingPurposeKey,\r\n        pendingSubPurposeKey: state.pendingSubPurposeKey,\r\n        pendingLane: state.pendingLane,\r\n        laneChoiceMode: state.laneChoiceMode,\r\n        noraStage: state.noraStage,\r\n        noraSuggestedLane: state.noraSuggestedLane,\r\n        committedLane: committedLane,\r\n        previewCardCount: previewCards.length,\r\n        confirmDisabled: !!(confirm && confirm.disabled),\r\n        laneScrollCount: state.laneScrollCount,\r\n        resultScrollCount: state.resultScrollCount,\r\n        lastLaneScrollLatencyMs: state.lastLaneScrollLatencyMs,\r\n        lastResultScrollLatencyMs: state.lastResultScrollLatencyMs\r\n      },\r\n      contract: {\r\n        purposeSubpurposeOwner: \"GDX_PANEL_V4_R28_SELECTION_STATE\",\r\n        pendingModalOwner: \"GDX_PANEL_V4_R32_UX_R3_PURPOSE_MODAL\",\r\n        purchaseLaneOwner: PURCHASE_LANE_API_KEY,\r\n        cdnPreviewOwner: \"R32 existing 3-scenario CDN preview\",\r\n        commitPolicy: \"PURPOSE_SUBPURPOSE_LANE_ATOMIC_ON_SE\u00C7\u0130M\u0130_UYGULA\"\r\n      }\r\n    };\r\n    console.log(\"=== CANFOTO ETAP2 R2-D REV3 PURPOSE / LANE / NORA FLOW ===\");\r\n    console.log(out);\r\n    return out;\r\n  }\r\n\r\n  window.debugPanelV4Etap2R2D3PurposeLaneFlow = debugEtap2R2D3PurposeLaneFlow;\r\n\r\n  function install() {\r\n    ensureStyle();\r\n    document.addEventListener(\"click\", onDocumentClickCapture, true);\r\n    window.addEventListener(\"keydown\", onKeydown, true);\r\n    state.installed = true;\r\n    state.lastAction = \"installed\";\r\n    publishState();\r\n  }\r\n\r\n\r\n  /* =========================================================\r\n     CANFOTO ETAP 2 \u00B7 POLISH-P1\r\n     N04 EXTERNAL DECISION SURFACE BRIDGE \u2014 MINIMAL R32 PATCH\r\n     - R28 remains committed purpose/subpurpose owner.\r\n     - R32 remains purchase-lane + atomic transaction owner.\r\n     - N04 owns pending UI only.\r\n     ========================================================= */\r\n  var P1_BRIDGE_KEY = \"CANFOTO_PANEL_DECISION_R32_BRIDGE_R1\";\r\n  var P1_BRIDGE_VERSION = \"CANFOTO-ETAP2-POLISH-P1-R32-ATOMIC-BRIDGE-R2\";\r\n\r\n  function validateExternalSelection(purposeKey, subPurposeKey) {\r\n    purposeKey = clean(purposeKey);\r\n    subPurposeKey = clean(subPurposeKey);\r\n    var bp = blueprint();\r\n    if (!bp) return { ok: false, error: \"blueprint_unavailable\" };\r\n    var p = (bp.mainPurposes || []).find(function (item) {\r\n      return clean(item && item.purposeKey) === purposeKey;\r\n    }) || null;\r\n    if (!p) return { ok: false, error: \"purpose_invalid\" };\r\n    var s = (p.subPurposes || []).find(function (item) {\r\n      return clean(item && item.subPurposeKey) === subPurposeKey;\r\n    }) || null;\r\n    if (!s) return { ok: false, error: \"subpurpose_invalid\" };\r\n    return { ok: true, purpose: p, subPurpose: s };\r\n  }\r\n\r\n  function setExternalOwnerActive(active, meta) {\r\n    meta = meta || {};\r\n    active = active === true;\r\n    if (active && !blueprint()) return false;\r\n    if (active && typeof window.setPanelV4R28Selection !== \"function\") return false;\r\n\r\n    if (active && state.open) closeModal(\"external_owner_activated\");\r\n    state.externalOwnerActive = active;\r\n    state.externalOwnerSource = active ? (clean(meta.source) || P1_BRIDGE_VERSION) : \"\";\r\n    state.externalOwnerToggleCount += 1;\r\n    state.lastAction = active ? \"external_owner_activated\" : \"external_owner_deactivated\";\r\n    state.lastError = \"\";\r\n    publishState();\r\n    return state.externalOwnerActive === active;\r\n  }\r\n\r\n  function commitAtomicExternal(payload) {\r\n    payload = payload || {};\r\n    var purposeKey = clean(payload.purposeKey);\r\n    var subPurposeKey = clean(payload.subPurposeKey);\r\n    var lane = clean(payload.lane);\r\n    var source = clean(payload.source) || P1_BRIDGE_VERSION;\r\n    var resultScrollOwner = clean(payload.resultScrollOwner);\r\n    var externalResultScroll = resultScrollOwner === \"N04_R6\";\r\n    var validated = validateExternalSelection(purposeKey, subPurposeKey);\r\n\r\n    if (!state.externalOwnerActive) {\r\n      return { ok: false, error: \"external_owner_inactive\" };\r\n    }\r\n    if (!validated.ok) return validated;\r\n    if (!validCommittedLane(lane)) {\r\n      return { ok: false, error: \"lane_invalid\" };\r\n    }\r\n    if (typeof window.setPanelV4R28Selection !== \"function\") {\r\n      return { ok: false, error: \"setPanelV4R28Selection_missing\" };\r\n    }\r\n\r\n    var previousLaneState = Object.assign({}, laneState());\r\n    var previousSelection = Object.assign({}, currentSelection());\r\n    var committedAt = new Date().toISOString();\r\n\r\n    if (!writeCommittedLane(lane, {\r\n      committedAt: committedAt,\r\n      source: source + \"_ATOMIC_PRECOMMIT\",\r\n      purposeKey: purposeKey,\r\n      subPurposeKey: subPurposeKey\r\n    })) {\r\n      return { ok: false, error: \"lane_precommit_failed\" };\r\n    }\r\n\r\n    var result = window.setPanelV4R28Selection(purposeKey, subPurposeKey);\r\n    var exact = !!(\r\n      result && result.activeSelectionKey &&\r\n      clean(result.activePurposeKey) === purposeKey &&\r\n      clean(result.activeSubPurposeKey) === subPurposeKey\r\n    );\r\n\r\n    if (!exact) {\r\n      window[PURCHASE_LANE_STATE_KEY] = previousLaneState;\r\n      state.lastError = \"external_selection_commit_failed\";\r\n      state.lastExternalCommit = {\r\n        ok: false,\r\n        error: state.lastError,\r\n        purposeKey: purposeKey,\r\n        subPurposeKey: subPurposeKey,\r\n        lane: lane,\r\n        previousSelectionKey: clean(previousSelection.activeSelectionKey),\r\n        at: committedAt\r\n      };\r\n      publishState();\r\n      return Object.assign({}, state.lastExternalCommit);\r\n    }\r\n\r\n    state.confirmedByPurpose[purposeKey] = subPurposeKey;\r\n    state.confirmedLaneByPurpose[purposeKey] = lane;\r\n    state.confirmCount += 1;\r\n    state.externalCommitCount += 1;\r\n    state.lastAction = \"external_atomic_selection_and_lane_confirmed\";\r\n    state.lastError = \"\";\r\n\r\n    notifyCommittedLane(lane, {\r\n      purposeKey: purposeKey,\r\n      subPurposeKey: subPurposeKey,\r\n      reason: \"polish_p1_n04_atomic_commit_complete\"\r\n    });\r\n\r\n    var recommendationSync = syncRecommendationAfterAtomicCommit(\r\n      result,\r\n      lane,\r\n      { reason: \"p2c_r6_r3_11_atomic_commit_final_sync\" }\r\n    );\r\n\r\n    state.lastExternalCommit = {\r\n      ok: true,\r\n      purposeKey: purposeKey,\r\n      subPurposeKey: subPurposeKey,\r\n      selectionKey: clean(result.activeSelectionKey),\r\n      lane: lane,\r\n      previousSelectionKey: clean(previousSelection.activeSelectionKey),\r\n      previousLane: clean(previousLaneState.lane) || \"ALL\",\r\n      at: committedAt,\r\n      source: source,\r\n      resultScrollOwner: externalResultScroll ? \"N04_R6\" : \"R32_NATIVE\",\r\n      recommendationSync: recommendationSync\r\n    };\r\n    publishState();\r\n    if (!externalResultScroll) fastScrollToRecommendation();\r\n    return Object.assign({}, state.lastExternalCommit);\r\n  }\r\n\r\n  window[P1_BRIDGE_KEY] = Object.freeze({\r\n    version: P1_BRIDGE_VERSION,\r\n    getBlueprint: function () { return blueprint(); },\r\n    getCurrentSelection: function () { return Object.assign({}, currentSelection()); },\r\n    getCommittedLane: getCommittedLane,\r\n    getLaneLabel: laneLabel,\r\n    resolveNoraLane: resolveNoraLane,\r\n    commitAtomic: commitAtomicExternal,\r\n    syncRecommendationAfterAtomicCommit: syncRecommendationAfterAtomicCommit,\r\n    setExternalOwnerActive: setExternalOwnerActive,\r\n    getState: function () {\r\n      var bp = blueprint();\r\n      return {\r\n        version: P1_BRIDGE_VERSION,\r\n        ready: !!(bp && typeof window.setPanelV4R28Selection === \"function\"),\r\n        externalOwnerActive: state.externalOwnerActive,\r\n        externalOwnerSource: state.externalOwnerSource,\r\n        committedLane: getCommittedLane(),\r\n        committedSelectionKey: clean(currentSelection().activeSelectionKey),\r\n        purposeCount: bp && Array.isArray(bp.mainPurposes) ? bp.mainPurposes.length : 0,\r\n        externalCommitCount: state.externalCommitCount,\r\n        resultScrollCount: state.resultScrollCount,\r\n        lastResultScrollLatencyMs: state.lastResultScrollLatencyMs,\r\n        lastExternalCommit: state.lastExternalCommit,\r\n        lastError: state.lastError\r\n      };\r\n    }\r\n  });\r\n\r\n  window.GDX_PANEL_V4_R32_UX_R3_PURPOSE_MODAL = {\r\n    phase: PHASE,\r\n    version: VERSION,\r\n    state: state,\r\n    open: openModal,\r\n    close: closeModal,\r\n    debug: debug,\r\n    debugEtap2R2D3: debugEtap2R2D3PurposeLaneFlow,\r\n    getCommittedPurchaseLane: getCommittedLane,\r\n    liveApplyAllowed: true\r\n  };\r\n\r\n  window.debugPanelV4R32UxR3PurposeModalLive = debug;\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\"DOMContentLoaded\", install, { once: true });\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 R5\r\n   PURPOSE MODAL DUAL-THEME VISUAL OWNER\r\n   NEW SHOPIFY ASSET: NONE\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  var STYLE_ID = \"gdxPanelV4R36R5PurposeThemeStyle\";\r\n\r\n  function ensureThemeStyle() {\r\n    var style = document.getElementById(STYLE_ID);\r\n    if (!style) {\r\n      style = document.createElement(\"style\");\r\n      style.id = STYLE_ID;\r\n      (document.head || document.documentElement).appendChild(style);\r\n    }\r\n\r\n    style.textContent = `\r\n      /* LIGHT \u2014 A\u00E7\u0131k 05 / Champagne Teal */\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-layer {\r\n        background: rgba(31,41,51,.18) !important;\r\n        backdrop-filter: blur(6px) !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-dialog {\r\n        background: #faf8f4 !important;\r\n        color: #1f2933 !important;\r\n        box-shadow: 0 34px 110px rgba(31,41,51,.22) !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-head,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-foot {\r\n        background: rgba(255,254,253,.98) !important;\r\n        border-color: #d9d1c5 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-kicker {\r\n        color: #0f766e !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-head h3 {\r\n        color: #1f2933 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-head p {\r\n        color: #53606b !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-close,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-cancel {\r\n        background: #fffefd !important;\r\n        border-color: #d9d1c5 !important;\r\n        color: #1f2933 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-confirm {\r\n        background: linear-gradient(135deg,#0f766e,#115e59) !important;\r\n        color: #fff !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-summary {\r\n        background: #e9f2ef !important;\r\n        border-color: #c4d9d3 !important;\r\n        color: #53606b !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-summary b {\r\n        color: #0f766e !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-sub {\r\n        background: #fffefd !important;\r\n        border-color: #d9d1c5 !important;\r\n        color: #1f2933 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-sub:hover {\r\n        background: #f6f0e8 !important;\r\n        border-color: #8fbdb5 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-sub.is-selected {\r\n        background: #e2f4e8 !important;\r\n        border-color: #0f766e !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-sub-copy small {\r\n        color: #53606b !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-radio {\r\n        border-color: #8da0ad !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-sub.is-selected .gdx-uxr3-radio {\r\n        border-color: #0f766e !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-sub.is-selected .gdx-uxr3-radio:after {\r\n        background: #0f766e !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-preview-panel {\r\n        background: linear-gradient(180deg,#f6f0e8,#eeeae2) !important;\r\n        border: 1px solid #d9d1c5 !important;\r\n        color: #1f2933 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-preview-card {\r\n        background: #fffefd !important;\r\n        border-color: #d9d1c5 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-preview-copy b {\r\n        color: #0f766e !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-preview-copy strong {\r\n        color: #1f2933 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-preview-copy small {\r\n        color: #53606b !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-open-image {\r\n        color: #2b6f8a !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-guide-kicker {\r\n        color: #0f766e !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-guide h4 {\r\n        color: #1f2933 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-guide > p {\r\n        color: #53606b !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-guide li {\r\n        background: #fffefd !important;\r\n        border-color: #d9d1c5 !important;\r\n        color: #3f4d57 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"light\"] .gdx-uxr3-guide-note {\r\n        background: #e9f2ef !important;\r\n        color: #36534f !important;\r\n      }\r\n\r\n      /* DARK \u2014 selected Teal Depth */\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-layer {\r\n        background: rgba(2,7,13,.72) !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-dialog {\r\n        background: #0b1b20 !important;\r\n        color: #f7fbfa !important;\r\n        box-shadow: 0 34px 120px rgba(0,0,0,.56) !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-head,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-foot {\r\n        background: rgba(16,36,41,.98) !important;\r\n        border-color: #214247 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-kicker {\r\n        color: #16b5a6 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-head h3 {\r\n        color: #f7fbfa !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-head p {\r\n        color: #cbd9d6 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-close,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-cancel {\r\n        background: #102429 !important;\r\n        border-color: #37646a !important;\r\n        color: #f7fbfa !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-confirm {\r\n        background: linear-gradient(135deg,#16b5a6,#0e8c81) !important;\r\n        color: #fff !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-summary {\r\n        background: #12352f !important;\r\n        border-color: #37646a !important;\r\n        color: #cbd9d6 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-summary b {\r\n        color: #5ee3d5 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-sub {\r\n        background: #102429 !important;\r\n        border-color: #214247 !important;\r\n        color: #f7fbfa !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-sub:hover {\r\n        background: #173038 !important;\r\n        border-color: #37646a !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-sub.is-selected {\r\n        background: #12352f !important;\r\n        border-color: #16b5a6 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-sub-copy small {\r\n        color: #91aaa5 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-preview-panel {\r\n        background: #071419 !important;\r\n        border: 1px solid #214247 !important;\r\n        color: #f7fbfa !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-preview-card {\r\n        background: #102429 !important;\r\n        border-color: #214247 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-preview-copy b {\r\n        color: #5ee3d5 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-preview-copy strong {\r\n        color: #f7fbfa !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-preview-copy small {\r\n        color: #cbd9d6 !important;\r\n      }\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme=\"dark\"] .gdx-uxr3-open-image {\r\n        color: #75d7e7 !important;\r\n      }\r\n    `;\r\n  }\r\n\r\n  ensureThemeStyle();\r\n})(window, document);\r\n\r\n/* =========================================================\r\n   PANEL LED V4 \u2014 R36-H R3B\r\n   PURPOSE MODAL EXACT LOCKED THEME CANONICALIZER\r\n   Reuses existing R36-R5 style owner; NEW SHOPIFY ASSET: NONE\r\n   ========================================================= */\r\n(function (window, document) {\r\n  \"use strict\";\r\n\r\n  function installExactPurposeTheme() {\r\n    var style = document.getElementById(\"gdxPanelV4R36R5PurposeThemeStyle\");\r\n    if (!style) return false;\r\n\r\n    style.textContent = `\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-layer {\r\n        background:rgba(0,0,0,.62) !important;\r\n        backdrop-filter:blur(8px) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-dialog {\r\n        background:var(--gdx-v4-shell-bg) !important;\r\n        color:var(--gdx-v4-text-1) !important;\r\n        border-color:var(--gdx-v4-border-strong) !important;\r\n        box-shadow:0 36px 110px rgba(0,0,0,.55) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-head,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-foot {\r\n        background:var(--gdx-v4-surface-1) !important;\r\n        border-color:var(--gdx-v4-border) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-kicker,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-summary b,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-preview-copy b,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-guide-kicker {\r\n        color:var(--gdx-v4-primary) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-head h3,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-preview-copy strong,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-guide h4 {\r\n        color:var(--gdx-v4-text-1) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-head p,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-sub-copy small,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-preview-copy small,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-guide > p {\r\n        color:var(--gdx-v4-text-2) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-close,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-cancel,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-sub,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-preview-card,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-guide li {\r\n        background:var(--gdx-v4-surface-1) !important;\r\n        border-color:var(--gdx-v4-border) !important;\r\n        color:var(--gdx-v4-text-1) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-confirm {\r\n        background:var(--gdx-v4-primary) !important;\r\n        border-color:var(--gdx-v4-primary) !important;\r\n        color:#fff !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-summary,\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-guide-note {\r\n        background:var(--gdx-v4-surface-3) !important;\r\n        border-color:var(--gdx-v4-border) !important;\r\n        color:var(--gdx-v4-text-2) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-sub:hover {\r\n        background:var(--gdx-v4-surface-2) !important;\r\n        border-color:var(--gdx-v4-border-strong) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-sub.is-selected {\r\n        background:color-mix(in srgb,var(--gdx-v4-primary) 10%,var(--gdx-v4-surface-1)) !important;\r\n        border-color:var(--gdx-v4-primary) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-radio {\r\n        border-color:var(--gdx-v4-text-3) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-sub.is-selected .gdx-uxr3-radio {\r\n        border-color:var(--gdx-v4-primary) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-sub.is-selected .gdx-uxr3-radio:after {\r\n        background:var(--gdx-v4-primary) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-preview-panel {\r\n        background:linear-gradient(180deg,var(--gdx-v4-surface-2),var(--gdx-v4-page-bg)) !important;\r\n        border-color:var(--gdx-v4-border) !important;\r\n        color:var(--gdx-v4-text-1) !important;\r\n      }\r\n\r\n      #gdx-panel-led-v4-root[data-gdx-panel-theme] .gdx-uxr3-open-image {\r\n        color:var(--gdx-v4-info) !important;\r\n      }\r\n    `;\r\n    return true;\r\n  }\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\"DOMContentLoaded\", installExactPurposeTheme, { once:true });\r\n  } else {\r\n    installExactPurposeTheme();\r\n  }\r\n\r\n  window.addEventListener(\"load\", installExactPurposeTheme, { once:true });\r\n\r\n  /* ETAP2 R2-H \u2014 variable subpurpose + setup-alias compatibility proof. */\r\n  window.GDX_PANEL_V4_R2H_MODAL_V2_COMPAT = Object.freeze({\r\n    version: \"CANFOTO-ETAP2-R2H-MODAL-V2-COMPAT-V1\",\r\n    variableSubpurposeCount: true,\r\n    setupAliasAware: true,\r\n    atomicConfirmPreserved: true,\r\n    rankingMutation: false,\r\n    scoringMutation: false,\r\n    commerceMutation: false,\r\n    shareMutation: false\r\n  });\r\n\r\n  window.debugPanelV4Etap2R2HModalV2 = function () {\r\n    var bp = blueprint();\r\n    var rgbPurpose = purposeByKey(bp, \"rgb_creative_video\");\r\n    var rows = templatesFor(\"rgb_creative_video\", \"subject_rim_edge\");\r\n    var alias = window.GDX_PANEL_V4_R2H_REGISTRY_V2 &&\r\n      typeof window.GDX_PANEL_V4_R2H_REGISTRY_V2.getSetupAlias === \"function\"\r\n      ? window.GDX_PANEL_V4_R2H_REGISTRY_V2.getSetupAlias(\"rgb_creative_video\", \"subject_rim_edge\")\r\n      : null;\r\n\r\n    var types = {};\r\n    rows.forEach(function(row){ types[clean(row && row.scenarioType)] = true; });\r\n\r\n    var checks = {\r\n      blueprintReady: !!bp,\r\n      purposeCount8: !!(bp && Array.isArray(bp.mainPurposes) && bp.mainPurposes.length === 8),\r\n      registrySelectionCount25: !!(bp && Array.isArray(bp.flatSelections) && bp.flatSelections.length === 25),\r\n      rgbSubpurposeCount4: !!(rgbPurpose && Array.isArray(rgbPurpose.subPurposes) && rgbPurpose.subPurposes.length === 4),\r\n      subjectRimEdgePresent: !!(rgbPurpose && Array.isArray(rgbPurpose.subPurposes) && rgbPurpose.subPurposes.some(function(sp){\r\n        return clean(sp.subPurposeKey) === \"subject_rim_edge\";\r\n      })),\r\n      setupAliasReady: !!alias,\r\n      previewTemplateCount3: rows.length === 3,\r\n      balancedPreviewReady: !!types.balanced_key_fill,\r\n      rgbAccentPreviewReady: !!types.rgb_background_accent,\r\n      compactPreviewReady: !!types.compact_support_close_range,\r\n      variableSubpurposeSupported: true,\r\n      atomicConfirmPreserved: true,\r\n      noScoreMutation: true,\r\n      noRankingMutation: 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: \"CANFOTO-ETAP2-R2H-MODAL-V2-COMPAT-QA-V1\",\r\n      checks: checks,\r\n      failedChecks: failedChecks,\r\n      setupAlias: alias,\r\n      previewTemplates: rows.map(function(row){\r\n        return {\r\n          purposeKey: clean(row.purposeKey),\r\n          subPurposeKey: clean(row.subPurposeKey),\r\n          scenarioType: clean(row.scenarioType),\r\n          sourceSelectionKey: clean(row.r2hSourceSelectionKey),\r\n          semanticRole: clean(row.r2hSemanticRole),\r\n          cdnUrl: clean(row.cdnUrl || row.url)\r\n        };\r\n      })\r\n    };\r\n    console.log(\"=== CANFOTO ETAP2 R2-H MODAL V2 COMPAT QA ===\");\r\n    console.log(out);\r\n    return out;\r\n  };\r\n\r\n})(window, document);\r\n\r\n\r\n/* =========================================================\r\n   CANFOTO / GDX \u2014 ETAP 2 REV5\r\n   R2-H-R1 \u2014 MODAL V2 QA SCOPE CORRECTION\r\n   Fixes only the R2-H debug/compat proof lexical scope.\r\n   Runtime modal behavior still uses the original R32 owner.\r\n   ========================================================= */\r\n;(function (W) {\r\n  \"use strict\";\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 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 (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function purposeByKey(bp, key) {\r\n    var rows = bp && Array.isArray(bp.mainPurposes) ? bp.mainPurposes : [];\r\n    return rows.filter(function(row){\r\n      return clean(row && row.purposeKey) === clean(key);\r\n    })[0] || null;\r\n  }\r\n\r\n  function scenarioTypeFromKey(value) {\r\n    value = clean(value);\r\n    if (value.indexOf(\"_balanced_key_fill\") > -1) return \"balanced_key_fill\";\r\n    if (value.indexOf(\"_rgb_background_accent\") > -1) return \"rgb_background_accent\";\r\n    if (value.indexOf(\"_compact_support_close_range\") > -1) return \"compact_support_close_range\";\r\n    return \"\";\r\n  }\r\n\r\n  function fallbackTemplates(purposeKey, subPurposeKey) {\r\n    var prefix = clean(purposeKey) + \"_\" + clean(subPurposeKey) + \"_\";\r\n    var map = W.GDX_PANEL_V4_R30A_CDN_URL_MAP || {};\r\n    var rows = [];\r\n    var used = {};\r\n    Object.keys(map).forEach(function(selectionKey){\r\n      var templateKey = clean(selectionKey).split(\"::\")[0];\r\n      var type = scenarioTypeFromKey(templateKey);\r\n      if (!type || templateKey.indexOf(prefix) !== 0 || used[type]) return;\r\n      used[type] = true;\r\n      rows.push({\r\n        purposeKey: clean(purposeKey),\r\n        subPurposeKey: clean(subPurposeKey),\r\n        scenarioType: type,\r\n        cdnUrl: clean(map[selectionKey])\r\n      });\r\n    });\r\n    return rows;\r\n  }\r\n\r\n  function sourceTemplates(purposeKey, subPurposeKey) {\r\n    var manifest = W.GDX_PANEL_V4_R30A_SETUP_VISUAL_MANIFEST || {};\r\n    var rows = Array.isArray(manifest.templates) ? manifest.templates : [];\r\n    var found = rows.filter(function(item){\r\n      return clean(item && item.purposeKey) === clean(purposeKey) &&\r\n        clean(item && item.subPurposeKey) === clean(subPurposeKey);\r\n    });\r\n    return found.length ? found : fallbackTemplates(purposeKey, subPurposeKey);\r\n  }\r\n\r\n  function targetTemplates() {\r\n    var registry = W.GDX_PANEL_V4_R2H_REGISTRY_V2 || null;\r\n    var alias = registry && typeof registry.getSetupAlias === \"function\"\r\n      ? registry.getSetupAlias(\"rgb_creative_video\", \"subject_rim_edge\")\r\n      : null;\r\n    if (!alias) return [];\r\n\r\n    return sourceTemplates(alias.sourcePurposeKey, alias.sourceSubPurposeKey)\r\n      .map(function(item){\r\n        var copy = {};\r\n        Object.keys(item || {}).forEach(function(k){ copy[k] = item[k]; });\r\n        copy.purposeKey = \"rgb_creative_video\";\r\n        copy.subPurposeKey = \"subject_rim_edge\";\r\n        copy.r2hSourceSelectionKey = clean(alias.sourceSelectionKey);\r\n        copy.r2hSemanticRole = clean(alias.semanticRole);\r\n        return copy;\r\n      })\r\n      .slice(0, 3);\r\n  }\r\n\r\n  W.GDX_PANEL_V4_R2H_MODAL_V2_COMPAT = Object.freeze({\r\n    version: \"CANFOTO-ETAP2-R2H-R1-MODAL-V2-COMPAT-V2\",\r\n    variableSubpurposeCount: true,\r\n    setupAliasAware: true,\r\n    atomicConfirmPreserved: true,\r\n    rankingMutation: false,\r\n    scoringMutation: false,\r\n    commerceMutation: false,\r\n    shareMutation: false\r\n  });\r\n\r\n  W.debugPanelV4Etap2R2HModalV2 = function () {\r\n    var bp = blueprint();\r\n    var rgbPurpose = purposeByKey(bp, \"rgb_creative_video\");\r\n    var rows = targetTemplates();\r\n    var registry = W.GDX_PANEL_V4_R2H_REGISTRY_V2 || null;\r\n    var alias = registry && typeof registry.getSetupAlias === \"function\"\r\n      ? registry.getSetupAlias(\"rgb_creative_video\", \"subject_rim_edge\")\r\n      : null;\r\n\r\n    var types = {};\r\n    rows.forEach(function(row){ types[clean(row && row.scenarioType)] = true; });\r\n\r\n    var checks = {\r\n      blueprintReady: !!bp,\r\n      purposeCount8: !!(bp && Array.isArray(bp.mainPurposes) && bp.mainPurposes.length === 8),\r\n      registrySelectionCount25: !!(bp && Array.isArray(bp.flatSelections) && bp.flatSelections.length === 25),\r\n      rgbSubpurposeCount4: !!(rgbPurpose && Array.isArray(rgbPurpose.subPurposes) && rgbPurpose.subPurposes.length === 4),\r\n      subjectRimEdgePresent: !!(rgbPurpose && Array.isArray(rgbPurpose.subPurposes) && rgbPurpose.subPurposes.some(function(sp){\r\n        return clean(sp && sp.subPurposeKey) === \"subject_rim_edge\";\r\n      })),\r\n      setupAliasReady: !!alias,\r\n      previewTemplateCount3: rows.length === 3,\r\n      balancedPreviewReady: !!types.balanced_key_fill,\r\n      rgbAccentPreviewReady: !!types.rgb_background_accent,\r\n      compactPreviewReady: !!types.compact_support_close_range,\r\n      variableSubpurposeSupported: true,\r\n      atomicConfirmPreserved: true,\r\n      noScoreMutation: true,\r\n      noRankingMutation: true,\r\n      noCommerceMutation: true,\r\n      noShareMutation: 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: \"CANFOTO-ETAP2-R2H-R1-MODAL-V2-COMPAT-QA-V2\",\r\n      checks: checks,\r\n      failedChecks: failedChecks,\r\n      setupAlias: alias,\r\n      previewTemplates: rows.map(function(row){\r\n        return {\r\n          purposeKey: clean(row.purposeKey),\r\n          subPurposeKey: clean(row.subPurposeKey),\r\n          scenarioType: clean(row.scenarioType),\r\n          sourceSelectionKey: clean(row.r2hSourceSelectionKey),\r\n          semanticRole: clean(row.r2hSemanticRole),\r\n          cdnUrl: clean(row.cdnUrl || row.url)\r\n        };\r\n      })\r\n    };\r\n    console.log(\"=== CANFOTO ETAP2 R2-H-R1 MODAL V2 COMPAT QA ===\");\r\n    console.log(out);\r\n    return out;\r\n  };\r\n})(window);\r\n\r\n/* CANFOTO R4-PA P1.20H \u2014 NORA USER LANGUAGE CLOSE V1 */\r\n"],
  "mappings": "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",
  "names": ["window", "document", "clean", "blueprint", "purposeByKey", "templatesFor", "host"]
}
