), so it runs on every page.
*
* Any link to https://admin.southlondonacro.co.uk/book/… opens in a pop-up
* instead of a new page. Without this script (or with JavaScript off) the
* same links just open the booking page — nothing breaks.
*
* Book the next jam: https://admin.southlondonacro.co.uk/book/jam/lsbu-jam
* Book a specific date: https://admin.southlondonacro.co.uk/book/jam/lsbu-jam?on=2026-10-17
*
* The booking page talks back with three messages (admin/lib/book/embed.ts):
* slac:height resize the pop-up to fit
* slac:navigate card payment: send the whole window to Stripe
* slac:close the "Done" button after a booking
*/
(function () {
var ORIGIN = window.SLAC_BOOKING_ORIGIN || 'https://admin.southlondonacro.co.uk'
if (window.__slacBookingPopup) return
window.__slacBookingPopup = true
function build() {
var css =
'#slac-book{border:0;padding:0;width:min(1120px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);' +
'border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 30px 80px rgba(20,8,12,.35)}' +
'#slac-book::backdrop{background:rgba(20,8,12,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}' +
'#slac-book-bar{display:flex;justify-content:flex-end;padding:10px 10px 0}' +
'#slac-book-close{all:unset;cursor:pointer;width:36px;height:36px;border-radius:999px;display:grid;place-items:center;' +
'font:600 22px/1 system-ui,sans-serif;color:#1d1b25;background:rgba(0,0,0,.06)}' +
'#slac-book-close:hover{background:rgba(0,0,0,.12)}#slac-book-close:focus-visible{outline:2px solid #e11f26;outline-offset:2px}' +
'#slac-book-frame{display:block;width:100%;border:0;height:70dvh;max-height:calc(100dvh - 90px);background:#fff}' +
'@media (max-width:640px){#slac-book{width:100vw;height:100dvh;max-height:100dvh;margin:0;border-radius:0}' +
'#slac-book-frame{height:calc(100dvh - 46px)!important;max-height:none}}'
var style = document.createElement('style')
style.textContent = css
document.head.appendChild(style)
var dialog = document.createElement('dialog')
dialog.id = 'slac-book'
dialog.setAttribute('aria-label', 'Book with South London Acro')
dialog.innerHTML =
'
' +
''
document.body.appendChild(dialog)
return dialog
}
var dialog = null
function frame() { return document.getElementById('slac-book-frame') }
function open(url) {
if (!dialog) {
dialog = build()
document.getElementById('slac-book-close').addEventListener('click', function () { dialog.close() })
dialog.addEventListener('click', function (e) { if (e.target === dialog) dialog.close() })
dialog.addEventListener('close', function () {
frame().src = 'about:blank'
document.documentElement.style.overflow = ''
})
}
if (typeof dialog.showModal !== 'function') { window.location.href = url; return }
frame().src = url
document.documentElement.style.overflow = 'hidden'
dialog.showModal()
}
document.addEventListener('click', function (e) {
if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return
var a = e.target && e.target.closest ? e.target.closest('a[href]') : null
if (!a || a.href.indexOf(ORIGIN + '/book/') !== 0) return
e.preventDefault()
open(a.href)
})
window.addEventListener('message', function (e) {
if (e.origin !== ORIGIN || !e.data || typeof e.data !== 'object') return
if (e.data.type === 'slac:height' && typeof e.data.height === 'number' && window.innerWidth > 640) {
frame().style.height = Math.max(360, Math.min(e.data.height, window.innerHeight - 90)) + 'px'
} else if (e.data.type === 'slac:navigate' && /^https:\/\/checkout\.stripe\.com\//.test(e.data.url)) {
window.location.href = e.data.url
} else if (e.data.type === 'slac:close' && dialog) {
dialog.close()
}
})
})()
SLAC takes community wellbeing and safeguarding seriously. We believe that it is a responsibility of every member of our community to take care of everyone else emotionally, mentally and socially - as well as physically through spotting and safe play. As such we aim to align our values with collective wellbeing and cohesive caretaking to ensure everybody's experience is safe, positive and fun.
This page details who you can reach out to within the community if you have questions or concerns, and offers resources should you or anyone else need them.
Our goal is to make the practice of acro safe, accessible and fun for all - regardless of your skill or experience level. There is no pressure to "train" or "get good", and all acro jammers are welcome to practice in a way that suits them. Tap the cards below to read more.
Safety through Consent and Community Care
Acro is a community practice that comes with inherent risks that all participants accept. Falls and accidents happen but ensuring we do everything to avoid them and that we get up from them smiling is a priority for us. We aim to ensure the physical and mental wellbeing of all jammers through regular Spotting and Safety workshops every few months to refresh the community and by fostering a safety-first approach to acro where we all look out for each other. And we are actively developing improved safeguarding and reporting practices.
Acro that's accessible and Inclusive for all bodies
For the South London Community, acro isn't really acro if we aren't inclusive and ensuring that we maximise access to acro - for every body. Whether this means modifying and adjusting skills and classes to ensure everyone present can participate (if they want to) or making adjustments to how we organise and run our jams, we're always striving to ensure increased access to the practice for all who wish to join. We celebrate the diversity in our community and how it enriches not only the practice of acro but our collective as a whole.
Freedom to have Fun the way you want
It may seem strange to list "fun" last in our values, as it's so core to the practice but we believe that we can maximise the fun by ensuring everyone is included and feeling safe. Part of our ethos is that once safety and accessibility are covered, fun follows. As a community we aim to avoid being prescriptive in our jams and events by offering as much variety and freedom to allow all jammers to practice or play however they want. We can't always provide all things for all people, but all the smiles we see tell us we're doing pretty well so far.