), 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() } }) })()

Code of Conduct

Last Updated: 5 September 2026

As part of our efforts to ensure acro in South London is safe, accessible and fun, we are sharing our community code of conduct, which applies at our jams, classes and events. We endeavour to update this based on community feedback.

Attendees agree to abide by this code of conduct at all times.

If you wish to offer suggestions or have any concerns, please contact kwame@acrojams.co.uk.

General Code of Conduct

Safety is a priority
Unsafe practice that puts others at risk will not be tolerated.

Boundaries & consent
No means no.
Respect your partners without coercion, abuse, or manipulation. This extends beyond the mats.

Sexual harassment will not be tolerated

Inclusivity & respect
We will not tolerate racism, sexism, ageism, xenophobia, other phobic attitudes, body shaming, or negativity over differences.

Ask, don’t assume
Do not assume anyone’s gender, role, or physical ability.

Drugs and alcohol
Do not take part while impaired by alcohol or drugs. We will ask you to sit out or leave.

Jam & Event Etiquette

You are part of a community
Your actions will reflect your community—be happy, be kind.

Be mindful of personal hygiene
Be it nails, hair, breath, sweat, or body odour.

Dress appropriately for acro
Wear fitted clothes that you can comfortably train in and won’t obstruct your practice.

Keep the training areas safe
Please ensure to keep phones, drinks, clothes, and other personal belongings off the mats and out of the pathways between them.

Take care of yourself and the space
Clean up after yourself and return the space in the same state you found it. Everyone is expected to help with the pack-down at the end of a session.

Spotting Guidance

Are you physically & mentally prepared to spot?

Have you accurately self-assessed?
Do you know what is being asked of you? Think of your physicality and body proportions.

Have you agreed on your roles?
What is the skill? How do you plan to bring the flyer down safely? Have you agreed on how best to spot the skill? Have you prepared for possible issues during the skill?

If in any doubt, ask the workshop teacher to clarify the spotting.

Sharing Your Concerns / Complaints

If it relates to a matter of safety in a workshop, speak to the teacher.

If it relates to general safety or our Code of Conduct, please approach one of the South London Acro organisers on the day.

For all other matters, please email kwame@acrojams.co.uk.

What Happens If This Code Is Breached

Depending on what happened, we may record a warning, set conditions on attendance, suspend access for a fixed period, or exclude someone permanently. Decisions are recorded with their reasons, the person is told what was decided, and they can ask for a decision to be reconsidered.