When existing bookings block the initial startHour, effectiveStartHour snaps to the first available slot. Added useLayoutEffect to update endHour state immediately so start and end times are never equal. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>