.microViz .CodeMirror {
  line-height: 1.4rem;
  display: inline-block;
  min-width: 350px;
  height: auto;
  border-right: 1px dashed hsl(0, 0%, 80%);
}

.microViz .CodeMirror-scroll {
  min-height: 100%;
  height: auto;
  overflow-y: hidden;
  overflow-x: auto;
}

.microViz .CodeMirror-code > div:nth-child(even){
  background: hsl(0, 0%, 98%);
}
/*-------------------------------*/

.microViz {
  line-height: inherit;
  display: flex;
  overflow: auto;
  padding: 10px 0;
  position: relative;
}

.microViz microVizBackground {
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  z-index: -1;
}

.microViz line {
  display: block;
  line-height: inherit;
  min-height: 1.4rem;
  min-width: 2px;
}

.microViz line:nth-child(even) {
  background: hsl(0, 0%, 98%);
}

.microViz microVizHolder {
  display: inline-block;
  flex: 1;
  overflow-x: auto;
  overflow-y: hidden;
}

.microViz microVizDiv {
  display: inline-block;
  white-space: nowrap;
  line-height: 1.4rem;
  padding: 4px 0; /* same as codemirror-lines */
}

.microViz microVizBackground {
  padding: 4px 0; /* same as codemirror-lines */
}

/* layout stuff */
/* top-level send, whose sourceloc is always the entire program */
.microViz microVizDiv > send {
  display: inline-block;
}

.microViz microVizDiv spacer {
  height: 1.4rem;
}

.microViz spacer:after {
  content: " ";
}

.microViz microVizDiv event[eventtype="ErrorEvent"] {
  color: HSL(352, 52%, 59%);
}

.microViz microVizDiv event,
.microViz microVizDiv localEventGroup,
.microViz microVizDiv remoteEventGroup,
.microViz microVizDiv spacer,
.microViz microVizDiv wrapper {
  display: inline-block;
}

.microViz microVizDiv send {
  display: inline-flex;
}

.microViz microVizDiv localEventGroup,
.microViz microVizDiv remoteEventGroup,
.microViz #microVizDiv wrapper {
  white-space: nowrap;
}

.microViz microVizDiv localEventGroup > *,
.microViz microVizDiv remoteEventGroup > *,
.microViz microVizDiv wrapper > * {
  vertical-align: top;
}



/*---*/

.microViz microVizDiv send:not([isImplementation="true"]):not([empty="true"]) {
  border-radius: 4px;
  background: rgba(100, 149, 237, .05); /*hsla(0, 0%, 0%, 0.05);*/
  box-shadow: 1px 1px 2px #ddd;
  margin: 0 4pt;
}

.microViz microVizDiv send[empty="true"] > remoteEventGroup > emptySendDot {
  color: hsl(219, 79%, 66%);
}

.microViz microVizDiv event {
  margin: 0 5px;
  height: 1.4rem;
}

.microViz microVizDiv send {
  margin: 0;
}

.microViz microvizDiv > send {
  background: none !important;
  margin: 0 0 !important;
  box-shadow: none !important;
}

.microViz microVizDiv send[isImplementation="true"] {
  border-radius: 4px;
  background: hsla(60, 56%, 91%, 0.35);
  box-shadow: 1px 1px 2px #ddd;
  margin: 0 4pt;
}

.microViz microVizDiv send[empty="true"].firstInLine {
  margin-left: 10px;
}

.microViz microVizDiv send[empty="true"].lastInLine {
  margin-right: 10px;
}

.microViz microVizDiv send[empty="true"] + event:not(.firstInLine) {
  margin-left: 0;
}

.microViz microVizDiv event + send[empty="true"]:not(.firstInLine) {
  margin-left: -0.3rem;
}

.microViz microVizDiv localEventGroup:nth-child(1n+2),
.microViz microVizDiv remoteEventGroup:nth-child(1n+2) {
  border-left: 1px dashed #aaa;
}

.microViz microVizDiv event.remote {
  opacity: 0.5;
  pointer-events: none;
}

.microViz microVizDiv event.remote::before {
  content: '(';
}

.microViz microVizDiv event.remote::after {
  content: ')';
}

/* only debugging stuff past this point */

/*
.microViz microVizDiv localEventGroup,
.microViz microVizDiv remoteEventGroup,
.microViz microVizDiv wrapper {
  border: 1px solid cornflowerblue;
  border-radius: 4px;
  padding: 1px;
}

.microViz microVizDiv wrapper {
  border-color: red;
}

.microViz microVizDiv send {
  border: 1px solid red;
  border-radius: 4px;
  padding: 1px;
}

.microViz microVizDiv spacer::after {
  content: '(spacer)';
  color: hsl(0, 0%, 70%);
}
*/

/* ------------------------------------ */

.microViz microVizDiv > model {
  display: block;
}

.microViz microVizDiv > model send,
.microViz microVizDiv > model localEventGroup,
.microViz microVizDiv > model remoteEventGroup {
  display: block;
  vertical-align: top;
  margin: 4px;
}

.microViz microVizDiv > model send,
.microViz microVizDiv > model event {
  display: inline-block;
  /*float: left;*/
  /*clear: left;*/
}

.microViz microVizDiv > model remoteEventGroup {
  opacity: 0.6;
}

.microViz microVizDiv > model localEventGroup,
.microViz microVizDiv > model remoteEventGroup {
  display: inline-block;
  border: 1px solid cornflowerblue;
  border-radius: 4px;
  margin-left: 8pt;
}

.microViz microVizDiv > model event {
  background: #efefef;
  border-radius: 4px;
  padding: 4px;
  margin: 2px;
}

.microViz microVizDiv > model send > label {
  display: block;
  margin: 2px;
}



/*.microViz event:not(.lastInLine):not(:last-child):after,
.microViz send[empty="true"]:not(.lastInLine):not([isImplementation=true]):not(:last-child):after {
    content: ', ';
    color: hsl(0, 0%, 70%);
    white-space: pre;
}*/