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 - + -
+
-
+

← View Site @@ -180,7 +180,7 @@ $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