${x.name}
${x.city} · $${x.price.toLocaleString()} per day
${cart[x.id]}
Planning desk
This is a planning list, not a payment page. Adjust quantities when comparing multiple dates or spaces, then contact the team to discuss availability.
Continue browsing${x.city} · $${x.price.toLocaleString()} per day
Your cart is empty. Select a venue from the catalog to begin planning.
`; const totalEl = document.getElementById("total"); totalEl.textContent = `Estimated planning total: $${chosen.reduce((s,x) => s + x.price * (cart[x.id] || 0), 0).toLocaleString()}`; document.getElementById("checkout").disabled = !chosen.length; } document.addEventListener("click", e => { if (e.target.dataset.change) { let c = JSON.parse(localStorage.getItem("rootline-cart") || "{}"); let id = e.target.dataset.change; c[id] = (c[id] || 0) + Number(e.target.dataset.delta); if (c[id] <= 0) delete c[id]; localStorage.setItem("rootline-cart", JSON.stringify(c)); render(); } }); document.getElementById("checkout").addEventListener("click", () => { document.getElementById("confirm").showModal(); }); const themeToggle = document.getElementById("themeToggle"); if (themeToggle) { themeToggle.addEventListener("click", () => { document.documentElement.classList.toggle("dark"); localStorage.setItem("rootline-theme", document.documentElement.classList.contains("dark") ? "dark" : "light"); }); } if (localStorage.getItem("rootline-theme") === "dark") document.documentElement.classList.add("dark"); render();