Reserved seating vs general admission — per-showtime
Every showtime carries an "Assigned seating" mode you pick when you schedule it:
• Reserved seating — buyers see your auditorium's seat map and pick the exact seats they want. Each ticket carries a seat label (e.g. "F12"). The auditorium's sold-seat set is updated atomically when an order is paid, so two buyers can never end up with the same seat.
• General admission — buyers just pick a quantity. The showtime starts with seatsRemaining = auditorium capacity and decrements as orders are paid. The showtime auto-flips to "sold-out" when seatsRemaining hits zero, which hides it from the public Movie Showtimes block.
Why per-showtime: many cinemas run reserved seating for evening shows and GA for matinees, festivals, or drive-ins. Setting the mode per showtime (instead of per auditorium) lets the same room flex between the two without rebuilding the seat map.
The Bijou (seeded with GA by default) shows the GA flow; Main Hall (reserved) shows the seat-picker flow. Either way, tickets are minted into the same movieTheatreTickets collection and the door scanner treats them identically — the seat label is just an extra field present on reserved tickets.