diff --git a/src/app/features/room/message/Message.tsx b/src/app/features/room/message/Message.tsx
index 2480f215..5b8e7061 100644
--- a/src/app/features/room/message/Message.tsx
+++ b/src/app/features/room/message/Message.tsx
@@ -854,6 +854,11 @@ const MessageInner = as<'div', MessageProps>(
const dot = useDotColor(room, mEvent, layout !== 'channel', hideReadReceipts);
const screenSize = useScreenSizeContext();
const isMobile = screenSize === ScreenSize.Mobile;
+ // Touch-friendly action-rail sizing — one step larger on mobile so the hover
+ // rail is comfortable under a finger (desktop stays compact for the mouse).
+ const railBtnSize = isMobile ? '400' : '300';
+ const railIconSize = isMobile ? '200' : '100';
+ const railGap = isMobile ? '200' : '100';
// msgType comes from the parent — RoomTimeline reads
// `mEvent.getContent().msgtype` synchronously and re-evaluates inside
@@ -977,7 +982,7 @@ const MessageInner = as<'div', MessageProps>(
{!edit && (hover || !!menuAnchor || !!emojiBoardAnchor) && (