diff --git a/html_generator.py b/html_generator.py
index e8f9ccc..9ccf139 100644
--- a/html_generator.py
+++ b/html_generator.py
@@ -17,10 +17,12 @@ def get_html_template(title, manifest_data, node_id):
js_files = [
"logic_state.js", # Global variables
"logic_utils.js", # API & Helper functions
+ "logic_ratings.js", # Pairwise review: pure logic (normalisers, Bradley-Terry, pairing, scoreboard)
"logic_ui.js", # DOM Creation, Modals, JSON Bars
"logic_upscale_modal.js", # Upscale Modal (preset management, async upscale)
"logic_virtual.js", # The Virtual Scroll Engine & Viewport
"logic_pipeline.js", # Sorting & Filtering Logic
+ "logic_compare.js", # Pairwise review: compare overlay, votes, scoreboard modal
"logic_events.js", # Event Listeners (Message, Keyboard)
"logic_init.js" # Initialization
]
diff --git a/resources/logic_compare.js b/resources/logic_compare.js
new file mode 100644
index 0000000..dadc2ca
--- /dev/null
+++ b/resources/logic_compare.js
@@ -0,0 +1,824 @@
+/**
+ * PAIRWISE REVIEW - DOM + STATE GLUE
+ * Compare overlay, vote/undo/reveal flow, persistence queue, scoreboard modal,
+ * settings bindings, and the rating getters used by the grid (sort + label badge).
+ * Pure logic lives in logic_ratings.js (no DOM there). Everything here is prefixed
+ * cmp / _cmp because all logic_*.js files share one inlined