diff --git a/approval.html b/approval.html
index 87cf6540..f0529e26 100644
--- a/approval.html
+++ b/approval.html
@@ -37,6 +37,13 @@
.rows .v { word-break: break-all; }
.rows .v.mono { font: 12.5px/1.4 ui-monospace, "Cascadia Code", Consolas, monospace; }
.rows .v.strong { font-weight: 650; font-size: 14px; }
+ /* A long message or a long list of rows scrolls inside the box; the
+ origin stays at the top and the buttons stay on screen. Without this a
+ dapp could push Approve and the end of a message out of view. */
+ .promptbox { max-height: calc(100vh - 64px); overflow-y: auto; }
+ .body { max-height: 30vh; overflow-y: auto; }
+ .rows .v { max-height: 40vh; overflow-y: auto; white-space: pre-wrap; }
+ .pact { position: sticky; bottom: -14px; background: var(--surface); padding: 8px 0 2px; }
label.chk { display: flex; align-items: center; gap: 8px; color: var(--mut); font-size: 12.5px; margin-bottom: 12px; cursor: pointer; }
label.chk select { flex: 1; padding: 5px 8px; border-radius: 6px; background: var(--surface2); color: var(--ink);
border: 1px solid var(--line); font: inherit; font-size: 12.5px; }