Offline Wallet Grant. 30,000 grin

For sure they can. For Voucher, or as the above author calls them “pouches”, it can be a regular transaction using slate-packs, but I think the idea is that the sender should not have to interact or take any action at all.

Solution 1 regular transaction: Do it as Lightning vouchers, meaning you give people a unique QR code that leads to a website where the wallet initiates a transfer by for example offering you a slatepack for a certain amount, receiver scans it and it will be send back over the internet to be finalized.
-LN bits lnurl+
-What’s a lightning voucher? - Help Center | Azteco

Solution 2 using a seed: You provide a seed as QR code, the wallet can generate all the keys, scan the blockchain, transfer to your own wallet.
The downside is that it is unnecessary complex and requires scanning the full chain. The advantage would be that it would allow “Swipe this wallet” functionality for any wallet.

Solution 3 using privkey+ metadta: You make a QR code of a json that contains a privily for a single output, the value of the output, a output reference an optional message. This is all that is needed for a wallet to scan the QR and instantly create a transaction and sign it.

In my opinion option 3 is the least complex and most straightforward way to implement Grin vouchers since it does not require complex code to be added to grin-wallet, it all happens on the transaction level and is actually rather straightforward code to write.
The code to generate these vouchers should IMO be a command line tool written using mimblewimble-py