.show-overlay {
    position: absolute;
    top: 0;
    left: 0;
    cursor: pointer;
    transform-origin: 0 0;

    /* it's important that we use hidden here because it stops us from
       blocking mouse events for events that our label and padding may
       be covering up. */
    visibility: hidden;
}

.show-overlay.reveal {
    visibility: visible;
}

.show-overlay.focused {
    /* this lets our scrims block out every other editor-overlay */
    z-index: 1;
}

.overlay-label {
    z-index: 1;
    display: inline-block;
    padding: 0.2em 1.5em 0em;
    position: absolute;
    white-space: nowrap;
    top: 2px;
    transform-origin: bottom left;
    background-color: #63A9FA;
    color: white;
}

.overlay-border {
    padding: 10px;
    border: 2px solid #63A9FA;
    width: 100%;
    height: 100%;
    box-sizing: border-box;
}

.show-overlay.hoverable > .overlay-border > .target {
    /* Only the target area itself is visible initially, and it
       doesn't have any content. But this makes it eligible for
       mouse events. */
    visibility: visible;
}

.overlay-scrim {
    width: 200vw;
    height: 200vh;
    background-color: #000;
    position: absolute;
    box-sizing: border-box;
    z-index: -1;
    will-change: opacity;
}
.overlay-scrim.top {
    bottom: 100%;
    left: -100vw
}
.overlay-scrim.bottom {
    top: 100%;
    left: -100vw;
}
.overlay-scrim.left {
    right: 100%;
    top: 0;
    height: 100%;
}
.overlay-scrim.right {
    left: 100%;
    top: 0;
    height: 100%;
}
