At L3 level, there are no VLANs (in the traditional sense, leaving MAC-VLAN aside), only subnets. By default, any router routes traffic between all subnets inside which it has its own addresses. The fact that VLAN 1 on the switch is physically accessible via bridge on the router whereas VLANs 10 and 99 on the switch are physically accessible via ether9 on the router changes nothing about that.
To prevent packets from one subnet from reaching another subnet, you have to use a firewall filter like both me and @anav have suggested. The IP (and IPv6) firewall only handles traffic being routed from one subnet to another. To become visible for the IP stack, an IP packet that came in inside a VLAN-tagged frame must first get untagged, which is what /interface vlan does. So the IP firewall cannot match on VLAN IDs directly, but it can match on names on /interface vlan, which are L3 interfaces from the perspective of the IP stack.
Or, if you want an “automatic” isolation of subnets, which is not prone to mistakes in firewall configuration, you have to partition the router into multiple virtual routers using the VRF functionality. So you would place one group of LAN interfaces and ether1 into one VRF, and the other group of LAN interfaces and the mac-vlan interface attached to ether1 into another VRF. In this case, the traffic would be unable to leak between the VRFs on L3 level even without any IP firewall rules.
This may be a sufficient understanding when talking about the router itself in your particular configuration, but as soon as you include the switch into your thinking, VLAN 1 pops up in the network. If vlan-filtering is set to no on the bridge on the switch, no VLANs exist for the bridge, not even 10 and 99, as it just forwards the all the frames it receives, tagged or tagless, based on destination MAC address alone. As soon as you set vlan-filtering to yes, it starts taking the VLAN tags into account, but also to add and strip them according to the pvid settings and /interface bridge vlan settings. So tagless frames that come from the router get tagged with a VLAN tag with VID 1 as they enter the bridge, and get untagged again as they leave the bridge via its member port also named bridge towards the interface of the IP stack of the switch, which is also named bridge. See this for clarification why 3 distinct objects share the same name.
With vlan-filtering is set to no, no isolation of VLANs exists on the switch, as any device connected to the switch has access to all of them if it can tag&untag frames.
After some thinking, I stand corrected here. A professional would never use a non-standard approach where a standard one gives equal results, as it costs time both to develop the non-standard one and to understand it again whenever you return to the network for maintenance.