html, body { height: 100%; } body, canvas { padding: 0; margin: 0; } body { background-color: #c0c0c0; } #container { width: 100%; height: 100%; display: grid; place-items: center; } #container canvas, #container .textLayer { /* overlay child elements on top of each other */ grid-row-start: 1; grid-column-start: 1; } canvas, .textLayer { display: inline-block; position: relative; } .textLayer { text-align: initial; overflow: hidden; opacity: 0.2; line-height: 1; } .textLayer span, .textLayer br { color: transparent; position: absolute; white-space: pre; cursor: text; transform-origin: 0% 0%; } .textLayer .highlight { margin: -1px; padding: 1px; background-color: rgba(180, 0, 170, 1); border-radius: 4px; } .textLayer .highlight.appended { position: initial; } .textLayer .highlight.begin { border-radius: 4px 0 0 4px; } .textLayer .highlight.end { border-radius: 0 4px 4px 0; } .textLayer .highlight.middle { border-radius: 0; } .textLayer .highlight.selected { background-color: rgba(0, 100, 0, 1); } .textLayer ::selection { background: rgba(0, 0, 255, 1); } .textLayer .endOfContent { display: block; position: absolute; left: 0; top: 100%; right: 0; bottom: 0; z-index: -1; cursor: default; user-select: none; } .textLayer .endOfContent.active { top: 0; }