.grow-wrap {
  /* easy way to plop the elements on top of each other and have them both sized based on the tallest one's height */
  display: grid;
}
.grow-wrap::after {
  /* Note the weird space! Needed to preventy jumpy behavior */
  content: attr(data-replicated-value) " ";

  /* This is how textarea text behaves */
  white-space: pre-wrap;

  /* Hidden from view, clicks, and screen readers */
  visibility: hidden;
}
.grow-wrap > textarea {
  /* You could leave this, but after a user resizes, then it ruins the auto sizing */
  resize: none;

  /* Firefox shows scrollbar on growth, you can hide like this. */
  overflow: hidden;
}
.grow-wrap > textarea,
.grow-wrap::after {
  /* Identical styling required!! */
  border: 1px solid black;
  padding: 0.5rem;
  font: inherit;

  /* Place on top of each other */
  grid-area: 1 / 1 / 2 / 2;
}		

#node {
	margin: auto;
	padding-bottom: 50px;
	display: block;
	width: 85%;
	max-width: 680px;
}
​
#node > div {
	margin: auto;
	padding-bottom: 40px;
	display: block;
}	

#source-text {
	margin: auto;
	margin: 50px 0;
	text-align: justify;
}

.outer {
	margin: 20px 0;
	text-align: right;
}

.inner {
	font-size: .9em;
	font-style: italic;
	text-align: left;
}

#output {
	color: #3d311f;
	margin: auto;
	width: 95%;
}

.btn {
	display: block;
	float: right;
	margin-top: 0.5rem;
}

textarea {
	margin: 8px 0 15px 0 !important;
}