Pay Phone · D1 revised · the grid stays — it's just per-service

Pick the service, then see that service's grid.

You're right, this is simpler. Keep the grid. The fan picks a service first; then we show a grid of open start times at that service's interval — a 5-minute call shows a 5-minute grid, a 20-minute call shows a 20-minute grid. Same open block, different grid depending on what they picked.

1 · Pick a service 2 · See that service's grid 3 · Tap a time → pay
Screen 1 · Pick a service
9:41
🔒 joinpayphone.com/dre
Pick your call
Dre Vaughn · next open Tue 7:00 PM
Quick call5 minutes$60
The call10 minutes · most booked$100
The long one20 minutes$180
See times
The grid you see next matches the call you pick.
One decision: which call. Nothing about times yet.
Screen 2a · Picked 10-min → 10-min grid
9:41
🔒 joinpayphone.com/dre
The call · 10 min · $100
Tuesday · times shown in your zone (ET)
OPEN TIMES · every 10 minutes
7:007:107:20selected 7:307:407:50 8:008:108:20
Continue · $100
Booked times crossed out · 6 of 12 open tonight
10-min service → grid steps by 10. 7:00, 7:10, 7:20… A 2-hour block = up to 12 of these.
Screen 2b · Picked 5-min → 5-min grid
9:41
🔒 joinpayphone.com/dre
Quick call · 5 min · $60
Tuesday · times shown in your zone (ET)
OPEN TIMES · every 5 minutes
7:007:057:10selected 7:157:207:25 7:307:357:40
Continue · $60
Same night, tighter grid · more start times to pick
5-min service → grid steps by 5. 7:00, 7:05, 7:10… Same block, twice as many times.
The one rule that makes it work (kept simple): a celeb's open block is a single calendar. When you generate a service's grid, any time that would collide with an already-booked call is shown crossed-out. So the 5-min grid and 10-min grid draw from the same truth — book a 10-min call at 7:20 and the 5-min grid's 7:20 and 7:25 go dark. D1 REVISED Capacity is still just "times on a grid," exactly like you said — the grid interval is simply the length of the call the fan chose.