{
  "version": "v4-css-cleanup",
  "standard": {
    "main": "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-2 space-y-6",
    "hero_inner": "relative px-7 py-4 sm:px-10 sm:py-5 lg:px-12 lg:py-6",
    "font": "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif"
  },
  "qa": [
    {
      "file": "Gabor-Granger-v8.html",
      "main_class": "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-2 space-y-6",
      "main_locked_prefix_ok": true,
      "hero_inner_class": "relative px-7 py-4 sm:px-10 sm:py-5 lg:px-12 lg:py-6",
      "hero_locked_padding_ok": true,
      "inline_style_block_count": 0,
      "inline_script_count": 1,
      "analysis_script_identical_to_pre_css_cleanup_baseline": true,
      "ids_count": 25,
      "external_stylesheet_links": [
        "<link rel=\"stylesheet\" href=\"ac-tools-master.css\">",
        "<link rel=\"stylesheet\" href=\"ac-tools-gabor-granger.css\">"
      ],
      "body_has_ac_tool": true,
      "inter_import_in_master": true
    },
    {
      "file": "TURF-v3.html",
      "main_class": "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-2 space-y-6",
      "main_locked_prefix_ok": true,
      "hero_inner_class": "relative px-7 py-4 sm:px-10 sm:py-5 lg:px-12 lg:py-6",
      "hero_locked_padding_ok": true,
      "inline_style_block_count": 0,
      "inline_script_count": 1,
      "analysis_script_identical_to_pre_css_cleanup_baseline": true,
      "ids_count": 61,
      "external_stylesheet_links": [
        "<link rel=\"stylesheet\" href=\"ac-tools-master.css\">",
        "<link rel=\"stylesheet\" href=\"ac-tools-turf.css\">"
      ],
      "body_has_ac_tool": true,
      "inter_import_in_master": true
    },
    {
      "file": "Sensory-Engine-v2.html",
      "main_class": "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-2 space-y-6 flex-1 w-full",
      "main_locked_prefix_ok": true,
      "hero_inner_class": "relative px-7 py-4 sm:px-10 sm:py-5 lg:px-12 lg:py-6",
      "hero_locked_padding_ok": true,
      "inline_style_block_count": 0,
      "inline_script_count": 1,
      "analysis_script_identical_to_pre_css_cleanup_baseline": true,
      "ids_count": 60,
      "external_stylesheet_links": [
        "<link rel=\"stylesheet\" href=\"ac-tools-master.css\">",
        "<link rel=\"stylesheet\" href=\"ac-tools-sensory.css\">"
      ],
      "body_has_ac_tool": true,
      "inter_import_in_master": true
    }
  ],
  "css_cleanup": {
    "file": "TURF-v3.html",
    "inline_style_blocks_before": 1,
    "inline_style_blocks_after": 0,
    "destination": "ac-tools-turf.css",
    "migration_method": "TURF style block CSS declarations appended verbatim to the end of the dedicated stylesheet, preserving cascade order relative to existing rules.",
    "inline_style_attributes_retained": 2,
    "inline_style_attribute_reason": "One is the legacy state node display:none!important safeguard; the other is a dynamic inline width on result bars generated by TURF JavaScript. They are not page-level stylesheet blocks."
  },
  "analysis_js_integrity": {
    "inline_script_hashes_sha256": {
      "Gabor-Granger-v8.html": [
        "4a786d188114b863aafcae540b473277bab3f04b07158aaaa8e4128ac2ad66b3"
      ],
      "TURF-v3.html": [
        "f9af30712032dd2b763624e91a4f3fb38e0c38ee03bfce8dd2619dde764e0d8a"
      ],
      "Sensory-Engine-v2.html": [
        "d983f00753a89f34a129c0ee5984f8ef383c3d010a1354ed35e741920fbcc121"
      ]
    },
    "all_scripts_identical_to_pre_css_cleanup_baseline": true,
    "function_declarations": {
      "Gabor-Granger-v8.html": [
        "handleIncomingFile",
        "initData",
        "initSimulator",
        "parseGgRows",
        "renderChart",
        "renderExecutiveStats",
        "renderInsights",
        "renderReadiness",
        "renderTable",
        "runAnalysisPipeline",
        "updateSimulator"
      ],
      "TURF-v3.html": [
        "addReportSheet",
        "backtrack",
        "combinationCount",
        "escapeHtml",
        "findTopNForCustomRows",
        "findTopNForFilter",
        "getCombinations",
        "getUniqueValues",
        "initWizard",
        "inspectBinaryProducts",
        "processIncomingFile",
        "renderTableRows",
        "renderUI",
        "resetAll",
        "runTurfEngine",
        "setStep",
        "showStatus",
        "styleExcelSheet",
        "updateComboHint",
        "updateComboWarning"
      ],
      "Sensory-Engine-v2.html": [
        "betacf",
        "buildSelects",
        "cIQR",
        "cMax",
        "cMean",
        "cMedian",
        "cMin",
        "cQ",
        "cSD",
        "cSE",
        "ci",
        "esc",
        "escAttr",
        "fmt",
        "gFind",
        "gammaln",
        "generateTemplate",
        "getEigen",
        "getRealProducts",
        "handleFileUpload",
        "ibeta",
        "invertMat",
        "isIdealProduct",
        "linearFit",
        "multipleRegression",
        "nums",
        "pFmt",
        "pairedTTest",
        "pairs",
        "parseNum",
        "pct",
        "pearson",
        "processData",
        "quadraticFit",
        "renderComparisonTab",
        "renderDataQuality",
        "renderDriverTab",
        "renderJARTab",
        "renderOverview",
        "renderPCATab",
        "renderPITab",
        "renderProfileTab",
        "renderRadars",
        "renderRelationChart",
        "renderRelationTab",
        "resetApp",
        "runAnalysis",
        "setTabVisibility",
        "sigBadge",
        "solve3",
        "starBar",
        "statSummary",
        "studentTP",
        "switchTab",
        "tableHeader",
        "toggleTab",
        "valsFor"
      ]
    },
    "shared_function_declarations_all_three": [],
    "pairwise_shared_function_declarations": {
      "Gabor-Granger-v8.html <> TURF-v3.html": [],
      "Gabor-Granger-v8.html <> Sensory-Engine-v2.html": [],
      "TURF-v3.html <> Sensory-Engine-v2.html": []
    },
    "interpretation": "No common named function declarations were found across all three pilots; avoid moving analysis/render functions into the shared helper based on name similarity alone. Keep ac-tools-ui.js as an optional candidate until a safe, behavior-preserving UI use case is explicitly tested."
  },
  "limitations": [
    "Static checks only; visual browser and interactive file-upload/analysis/export QA remain required.",
    "Google Fonts, Tailwind, XLSX, ExcelJS, and other CDN dependencies require network access.",
    "No JavaScript was edited or wired into ACToolsUI during this CSS cleanup."
  ]
}
