diff --git a/src/components/Combat.vue b/src/components/Combat.vue
index 1b77d65..ca005a7 100644
--- a/src/components/Combat.vue
+++ b/src/components/Combat.vue
@@ -12,6 +12,7 @@
     
 
@@ -116,7 +117,8 @@ export default class Combat extends Vue {
       const elements = entry.render()
 
       if (elements.length > 0) {
-        const before = log.querySelector("div.log-entry")
+        const before = log.querySelector("div.log-entry") as HTMLElement|null
+
         const holder = document.createElement("div")
         holder.classList.add("log-entry")
         entry.render().forEach(element => {
@@ -135,7 +137,12 @@ export default class Combat extends Vue {
         log.insertBefore(hline, before)
         log.insertBefore(holder, hline)
 
-        log.scrollTo({ top: 0, left: 0 })
+        // TODO this behaves a bit inconsistent -- sometimes it jerks and doesn't scroll to the top
+        if (log.scrollTop === 0 && before !== null) {
+          log.scrollTo({ top: before.offsetTop, left: 0 })
+        }
+
+        log.scrollTo({ top: 0, left: 0, behavior: "smooth" })
       }
     }
   }
@@ -292,6 +299,7 @@ export default class Combat extends Vue {
 }
 
 .log {
+  position: relative;
   grid-area: main-row-start / main-col-start / main-row-end / main-col-end;
   overflow-y: scroll;
   overflow-x: hidden;
@@ -301,6 +309,11 @@ export default class Combat extends Vue {
   width: 70vw;
   max-width: 1000px;
   align-self: flex-start;
+  height: 100%;
+}
+
+.log-filler {
+  height: 100%;
 }
 
 .left-stats,
@@ -449,6 +462,7 @@ a {
 }
 
 .log > div.log-entry {
+  position: relative;
   color: #888;
   padding-top: 4pt;
   padding-bottom: 4pt;
diff --git a/src/components/Explore.vue b/src/components/Explore.vue
index 3748c23..3e29d87 100644
--- a/src/components/Explore.vue
+++ b/src/components/Explore.vue
@@ -1,7 +1,7 @@
 
   
     
     
       {{ world.time.format("MMMM Do Y") }}
@@ -68,7 +68,6 @@ export default class Explore extends Vue {
     if (log !== null) {
       const rendered = entry.render()
       if (rendered.length > 0) {
-        const before = log.querySelector("div.explore-log-entry")
         const holder = document.createElement("div")
         holder.classList.add("explore-log-entry")
 
@@ -79,10 +78,10 @@ export default class Explore extends Vue {
         holder.classList.add("explore-entry")
         const hline = document.createElement("div")
         hline.classList.add("explore-log-separator")
-        log.insertBefore(hline, before)
-        log.insertBefore(holder, hline)
+        log.appendChild(hline)
+        log.appendChild(holder)
 
-        log.scrollTo({ top: 0, left: 0 })
+        log.scrollTo({ top: log.scrollHeight, left: 0, behavior: "smooth" })
       }
     }
   }
@@ -129,6 +128,10 @@ export default class Explore extends Vue {
   padding: 8pt;
 }
 
+.explore-log-filler {
+  height: 100%;
+}
+
 .explore-worldinfo {
   grid-area: worldinfo;
   background: #111;
@@ -221,4 +224,8 @@ export default class Explore extends Vue {
     width: 100%;
   }
 }
+
+.explore-log > div:last-child {
+  margin-bottom: 8pt;
+}