body {
  height: 100vh;
  margin: 0;
  overflow: hidden;
  font-family: sans-serif;
  font-size: 10pt;
  line-height: 1.4;
}

pre {
  margin: 0;
}


/*codemirror infinite height*/
#source_code {
  height: auto;
}

.CodeMirror {
  border: 1px solid #eee;
  height: auto;
  font-size: 9pt;
}

.tree-step {
  display: flex;
  align-items: flex-start;
  width: 100%;
  margin: 0 0 0 -100%;
  padding: 0 0 0 100%;
}

.step-big {
  background: #cfb;
  border-top: 2px solid black;
  font-weight: bold;
}

.step-root {
  font-weight: bold;
}

.step-title {
  padding-left: 5px;
  padding-right: 5px;
  border-radius: 5px;
  cursor:pointer;
  overflow: hidden;
  text-overflow: ellipsis;
}
.step-title:hover {
  box-shadow: inset 0 0 1em #fff;
}
.step-selected .step-title {
  box-shadow: inset 0 0 0.5em #666;
}

.step-small.step-valid .step-title {
  background: #9fc;
}
.step-invalid .step-title {
  background: #fcc;
}
.step-error .step-title {
  background: #f33;
  font-weight: bold;
}
.step-show .step-title {
  background: #5cf;
}
.step-io-target .step-title {
  background: #d0bffd;
}

.step-nodiff {
  color: #555555;
}

.step-expand {
  --bullet-color: black;
  display: inline-block;
  /* See https://css-tricks.com/snippets/css/css-triangle/ to know why this draws a triangle */
  border: 0.3em solid transparent;
  border-left-color: var(--bullet-color);
  margin: 0.42em 0.05em 0 0.35em;
  cursor:pointer;
}
.step-expand:hover {
  --bullet-color: #000a;
}
.step-expand::after {
  content: "";
  display: block;
  height: calc(100% - .2em);
  margin-top: .5em;
  margin-bottom: -.5em;
  margin-right: -1px;
}
.step-expanded {
  border-left-color: transparent;
  border-top-color: var(--bullet-color);
  margin: 0.6em 0.2em 0;
  align-self: stretch;
}
.step-leaf {
  display: inline-block;
  border: 0.2em solid;
  border-radius: 0.2em;
  margin: 0.5em 0.3em 0;
  align-self: flex-start;
}
.step-fully-expanded {
  border: 0.3em solid transparent;
  border-top-color: #60f;
  border-radius: 0;
  margin: 0.6em 0.2em 0;
  align-self: stretch;
}

.step-expanded::after, .step-fully-expanded::after {
  content: "";
  border-left: 1px solid #ccc;
  display: block;
  height: calc(100% - .2em);
  margin-top: .5em;
  margin-bottom: -.5em;
  margin-right: -1px;
}

.step-justif-text {
  margin-left: 3em;
  background: #dfe;
  font-style: italic;
}

.step-tag {
  display: inline-block;
  margin-left: 2px;
  background: #eeb;
  padding: 0 4px;
  border-radius: 5px;
  font-size: 0.8em;
}

.step-validity {
  margin-left: 0.2em;
  text-decoration: none;
}
.step-valid .step-validity {
  color: green;
}

.checkbox-label {
  cursor:pointer;
}

.exectime-heavy {
  background: #f66;
}
.exectime-mid {
  background: #fd8;
}
.exectime-small {
  background: #fff;
}
.exectime-heavy, .exectime-mid, .exectime-small {
  margin-right: 5px;
  padding-right: 2px;
  padding-left: 2px;
  padding-bottom: 1px;
  border-radius: 5px;
  font-size: 0.8em;
}

.has-debug-msg {
  padding-left: 5px;
  padding-right: 5px;
  background: #ff9d60;
  border-radius: 5px;
  font-size: 0.8em;
}

#stepMsgDiv {
  padding-left: 10px;
  padding-right: 10px;
  font-family: monospace;
  background: #ff9d60;
}

#debugMsgDiv {
  padding: 0 5px;
  font-family: monospace;
  overflow: auto;
}

/* ---- vertical split view */

.split-pane {
  display: flex;
  flex-direction: row;
  overflow: hidden;
  height: 100%;
  width: 100%;
}

.left-pane {
  display: flex;
  flex-direction: column;
}

.right-pane {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  flex: 1 1 0;
  overflow: hidden;
}

#diffDiv {
  flex-grow: 1;
  overflow-y: auto;
}
#sourceDiv {
  flex-grow: 1;
  overflow-y: auto;
}

.resizing-handle {
  background: #888;
  width: 4px;
  cursor: col-resize;
  z-index: 999;
}
.resizing-handle:hover {
  width: 8px;
  margin: 0 -2px;
}
.resizing-handle:active {
  background: #999;
}

#treeDiv {
  background: #EEE;
  overflow-y: auto;
  flex-grow: 1;
}
.controls {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  border-top: 1px solid #888;
  padding: 8px;
  gap: 0 4px;
}
.details-button {
  min-width: 5em;
  text-align: center;
}

ol {
  list-style-type: none;
  margin: 0;
  padding-left: 0.5ex;
}
ol ol {
  padding-left: 0.5em;
  border-left: 1px solid #ccc;
  margin-left: 0.5em;
}
li {
  padding-left: 0ex;
}
