diff --git a/admin/builder.php b/admin/builder.php
index 1f669a8..0ab7beb 100644
--- a/admin/builder.php
+++ b/admin/builder.php
@@ -72,11 +72,11 @@ $page_title = $session ? 'Edit: ' . htmlspecialchars($session['name']) : 'Rosary
-
+
-
+
diff --git a/assets/css/builder.css b/assets/css/builder.css
index 134267c..04234cd 100644
--- a/assets/css/builder.css
+++ b/assets/css/builder.css
@@ -5,10 +5,19 @@
/* ── Page layout ─────────────────────────────────────────────── */
+#builder-page {
+ display: flex;
+ flex-direction: column;
+ height: 100vh;
+ overflow: hidden;
+}
+
.builder-wrap {
display: flex;
flex-direction: column;
- height: calc(100vh - 64px); /* below fixed admin header */
+ flex: 1;
+ min-height: 0; /* lets children shrink below their content height */
+ overflow: hidden;
}
.builder-toolbar {
@@ -131,6 +140,7 @@
display: grid;
grid-template-columns: 380px 1fr;
flex: 1;
+ min-height: 0; /* required — without this the grid doesn't shrink in a flex column */
overflow: hidden;
}
@@ -140,6 +150,7 @@
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
+ min-height: 0;
overflow: hidden;
background: var(--bg);
}
@@ -294,6 +305,7 @@
.builder-library {
display: flex;
flex-direction: column;
+ min-height: 0;
overflow: hidden;
background: var(--bg);
}
diff --git a/assets/js/builder.js b/assets/js/builder.js
index 527856c..a4ef4b8 100644
--- a/assets/js/builder.js
+++ b/assets/js/builder.js
@@ -17,7 +17,7 @@
/* ─────────────────────────────────────────────────────────
Boot
───────────────────────────────────────────────────────── */
- document.addEventListener('DOMContentLoaded', function () {
+ function init() {
PRAYERS = window.PRAYERS_DATA || [];
// Populate existing steps when editing a session
@@ -31,7 +31,15 @@
renderLibrary();
renderSequence();
bindEvents();
- });
+ }
+
+ // Scripts are at end of body — DOM is fully parsed by the time this runs,
+ // so DOMContentLoaded may have already fired. Check readyState first.
+ if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', init);
+ } else {
+ init();
+ }
/* ─────────────────────────────────────────────────────────
Event bindings