Re-implement the multi-currency behaviour for accounts.py and fees.py only. Do not modify any test file. The implementation must make the existing tests in tests/test_accounts.py and tests/test_fees.py pass, including fee_for('10.00', 'JPY') returning Decimal('30') without raising, while apply_fee still raises ValueError when the quantized amount is below the fee. Use Decimal for all money, accept int/str/Decimal/float with floats converted via Decimal(str(value)), reject other types with TypeError, validate only USD/EUR/JPY with a ValueError naming all three currencies, and quantize with ROUND_HALF_UP to 2dp for USD/EUR and 0dp for JPY. Keep all changed lines covered by the gate command.
