BOAS.DEV / MEET / P / CONFIRM

The in-between.

The console button's missing state — the 5+ seconds between the click and the confirmed readout. The corner brackets breathe — the console's own mark, pulsing — while re-entry locks and the guest is told not to close the window. Built from the button's own geometry, not a foreign spinner.

Confirm & book

Thursday 17 Jul · 14:00

30-minute intro with Boas · your time, GMT

Still working — don't close this window.

You're booked.

Confirmation + calendar invite on the way to your inbox.

That didn't go through. The slot may have just been taken, or the connection dropped. Nothing was booked.

Confirming your booking, please wait.

State machine

rest
Pre-commit CTA — the verbatim .btn--alert red pulse. Unmissable, un-clicked.
busy
On submit JS adds .is-busy + aria-busy, swaps label to Confirming…, locks pointer-events. Red flips to azure — the click landed. The corner brackets breathe — pulse outward + brighten (brbreathe), the system's own mark working; edge stays calm. Min-display floor ~500ms so it never flashes.
patience >12s
Still pending past ~12s → the hold copy appears: "Still working — don't close this window." The direct counter to the refresh/abandon reflex.
success
Drop .is-busy → hand to the confirmed readout (or the /g portal, canon row 6.5).
error
Drop .is-busy, restore label, surface the never-dead-end pair — retry + "pick a different time" (canon Row 10). Never a dead stop.
reduced-motion
Band stops; a static azure wash + --edge-static + the label swap carry the meaning. No motion needed to read "working".
reuse
One modifier for every async console button: Booking… / Sending code… / Cancelling… / Rescheduling…. Drop-in over the shipped .btn block + a small JS submit-wrapper.