/*
 * General-purpose widget styles, applied regardless of what the widget "theme" is
 */

:root {
  --widget-outer-radius: 8px;
  --widget-inner-radius: 4px;
}

.netlogo-model {
  display:     flex;
  padding:     20px;
  flex-flow:   column;
  font-size:   12px;
  font-family: var(--font-widget);
  outline:     none;
}

.netlogo-display-vertical {
  display:   flex;
  flex-flow: column;
}

.netlogo-display-vertical > .netlogo-tab-area {
  margin: 25px auto;
}

.netlogo-display-horizontal {
  display:        flex;
  flex-flow:      row;
  flex-direction: row;
  align-items:    unset;
}

.netlogo-display-horizontal > .netlogo-tab-area {
  margin:     0 10px;
  align-self: flex-start;
}

.netlogo-header {
  display:         flex;
  flex-flow:       row;
  align-items:     center;
  justify-content: space-between;
}

.netlogo-widget {
  box-sizing:       border-box;
  background-color: #eeeeee;
  border-radius:    var(--widget-outer-radius);
  overflow:         hidden;
}

.netlogo-widget:focus-visible,
.netlogo-slider-bar:focus-visible {
  outline: var(--color-widget-select-border) solid 2px;
}

.netlogo-button:focus-visible,
.netlogo-forever-button:focus-visible {
  outline: var(--color-widget-select-border) solid 3px;
}

.netlogo-command,
.netlogo-input {
  user-select:      none;
  -moz-user-select: none;
}

.netlogo-command:hover {
  filter: brightness(1.1);
  cursor: pointer;
}

.netlogo-command.netlogo-disabled:hover {
  box-shadow: none;
  cursor:     default;
}

.netlogo-tab-area {
  border:        2px solid;
  border-radius: 10px;
  /* In a prior version this was set dynamically to between 400-ish and 800-ish pixels.  It really only affected the
    code tab, and the effect it gave was more jankiness than user accomodation.  I decided just sticking to a static
    value works fine for now.  Eventually we should give users more direct control over size and placement of the tabs,
    but that's for future work.  */
  width:         760px;
  overflow:      hidden;
}

.netlogo-tab {
  display:    block;
  position:   relative;
  padding:    7px 30px 7px 7px;
  text-align: center;
  cursor:     pointer;
}

.netlogo-tab-caret {
  position:  absolute;
  right:     1em;
  top:       50%;
  transform: translateY(-50%);
  height:    20px;
}

.netlogo-tab.netlogo-active .netlogo-tab-caret {
  transform: translateY(-50%) scaleY(-1);
}

.netlogo-tab:not(:last-child) {
  border-bottom:       1px solid;
  border-bottom-color: inherit;
}

.netlogo-tab input[type='checkbox'] {
  display: none;
}

.netlogo-tab-text {
  font-size:        20px;
  font-weight:      bold;
  text-align:       center;
  user-select:      none;
  -moz-user-select: none;
}

.netlogo-tab-content {
  margin-top: 0;
  border:     0 solid #242479;
}

#console-panel {
  border-bottom: 1px solid var(--color-tab-border);
}

#code-panel {
  border-bottom: 1px solid var(--color-tab-border);
}

#info-panel {
  border-bottom: 1px solid var(--color-tab-border);
}

.unselectable {
  user-select:      none;
  -moz-user-select: none;
}

.netlogo-model-container {
  width:    min-content;
  position: relative;
}

.netlogo-model-text {
  background-color: white;
}

.netlogo-model-masthead {
  flex-grow: 1;
  margin:    0 10px 0 0;
  width:     350px;
}

.netlogo-model-masthead > form {
  margin: 0 auto;
}

.netlogo-model-status {
  position:      absolute;
  width:         auto;
  margin:        0 15%;
  padding:       0 20px;
  background:    #bcbce5;
  border-color:  #242479;
  border:        1px solid;
  border-top:    0;
  border-radius: 0 0 8px 8px;
  font-family:   var(--font-widget);
  font-size:     smaller;
}

.netlogo-model-status-closer {
  margin:      auto 0 auto 10px;
  width:       min-content;
  height:      min-content;
  cursor:      pointer;
  color:       #7f7f7f;
  font-weight: bold;
  user-select: none;
}

.netlogo-model-status-closer:hover {
  color: black;
}

.netlogo-model-status-link {
  color:  blue;
  cursor: pointer;
}

.netlogo-model-status-link:hover {
  text-decoration: underline;
}

.netlogo-model-title-wrapper {
  justify-content: center;
}

.netlogo-model-title {
  background-color: initial;
  margin:           0;
  overflow:         hidden;
  padding:          0 10px;
  text-align:       center;
  text-overflow:    ellipsis;
  white-space:      nowrap;
}

.netlogo-model-modified {
  display:         flex;
  justify-content: center;
  margin:          0;
  padding:         0 10px;
}

.hidden {
  visibility: hidden;
}

.netlogo-title-input {
  font-size:      1.5em;
  font-weight:    bold;
  letter-spacing: normal;
  margin:         0 5%;
  text-align:     center;
  width:          350px;
}

.netlogo-code-container {
  background-color: white;
  margin-top:       0;
}


.netlogo-recompilation-button {
  width:       30%;
  margin:      12px auto;
  font-size:   16px;
  font-weight: bold;
  cursor:      pointer;
}

.netlogo-procedurenames-dropdown {
  display: inline-block;
  width:   200px;
}

.netlogo-codetab-widget-list {
  padding: 0;
  margin:  12px 12px;
  display: inline;
}

.netlogo-codetab-widget-listitem {
  display: inline;
  padding: 6px;
}

.netlogo-autocomplete-label {
  font-size: 16px;
}

.netlogo-autocomplete-checkbox {
  width:  14px;
  height: 14px;
}

.netlogo-model-container-host {
  display: inline-block;
}

.netlogo-codeusage-popup {
  position:      absolute;
  z-index:       10;
  border:        1px solid #b2b2b2;
  background:    white;
  box-shadow:    3px 3px 2px #e9e9e9;
  border-radius: 4px;
  max-height:    15em;
  overflow-y:    auto;
}

.netlogo-codeusage-list {
  list-style:  none;
  margin-top:  1px;
  padding:     1px;
  font-size:   90%;
  font-family: monospace;
}

.netlogo-codeusage-item {
  padding: 1px;
}

.netlogo-codeusage-item:hover {
  color:         white;
  background:    #284570;
  border-radius: 2px;
}

.netlogo-info-editor {
  border: 1px solid black;
}

.netlogo-info-editor .CodeMirror-scroll {
  max-height: 500px;
}

.netlogo-info {
  flex:        1;
  margin-top:  0;
  padding-top: 10px;
  padding:     15px;
}

.netlogo-command-center-container {
  display:        flex;
  flex-direction: column;
  width:          100%;
  height:         100%;
  margin:         0;
}

.netlogo-command-center {
  flex:           1;
  display:        flex;
  flex-direction: column;
  height:         175px;
  padding:        6px 8px;
}

/* I don't actually understand why setting `width` here does what it does.  Without it, if you fill up the Command
 * Center with text, instead of becoming horizontally scrollable, the input grows in width, even if it means becoming
 * larger than the input's container.  So the input (rather than the text) just flows off the side of the screen.
 * If I go down a level in the CSS and set the width on the CodeMirror instance directly, that kind of fixes the
 * problem, but only if I know the expect width that I want (which I don't).  However, if I come here and set the
 * width to *any* numeric value, the input always fits exactly the amount of space it's supposed to use.  Fricken weird.
 * --Jason B. (10/12/17)
 */

.netlogo-input-group {
  display:       flex;
  align-items:   stretch;
  flex-grow:     1;
  border:        2px solid var(--color-tab-border);
  border-radius: 6px;
  overflow:      hidden;
}

.netlogo-input-group > select {
  appearance:          none;
  -webkit-appearance:  none;
  border:              none;
  border-right:        1px solid #ccc;
  border-radius:       0;
  background-color:    #f0f0f0;
  background-image:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M0 0 L10 0 L5 6 Z' fill='rgba(0%2C0%2C0%2C0.55)'/%3E%3C/svg%3E");
  background-repeat:   no-repeat;
  background-position: right 0.4em center;
  background-size:     0.55em;
  padding:             0 1.3em 0 0.4em;
  margin:              0;
  flex-shrink:         0;
  outline:             none;
}

.netlogo-input-group .netlogo-command-center-editor {
  margin: 0;
}

.netlogo-input-group .netlogo-command-center-editor .netlogo-code {
  border: none;
}

.netlogo-input-group .netlogo-command-center-editor .CodeMirror {
  border: none;
}

.netlogo-input-group .netlogo-command-center-editor .CodeMirror-lines {
  padding: 0.4em;
}

.netlogo-command-center-editor {
  height:    auto;
  margin:    0 10px;
  flex-grow: 1;
  width:     42px;
}

.netlogo-command-center-select {
  height:    27px;
  min-width: 75px;
  width:     10vw;
}

.netlogo-command-center-editor .CodeMirror {
  border:     1px solid #111;
  height:     auto;
  box-sizing: border-box;
}

.netlogo-command-center-input {
  display:     flex;
  align-items: center;
  gap:         0.5em;
  flex-shrink: 0;
}

.netlogo-command-center-button {
  height:           30px;
  min-width:        50px;
  width:            10vw;
  border-radius:    8px;
  background-color: var(--medium-blue);
}

.netlogo-command-center-button:hover {
  filter: brightness(0.9);
}

.netlogo-command-center-button:active {
  filter: brightness(0.7);
}

.join-body {
  margin: 0;
}

.netlogo-model-container-join {
  display:          flex;
  flex-direction:   row;
  justify-content:  center;
  min-width:        900px;
  margin:           0 auto;
  background-color: var(--light-gray);
}

.netlogo-output-widget {
  display: flex;
  padding: 2px;
}

.netlogo-output-area {
  flex-grow:        1;
  flex-direction:   column;
  background-color: white;
  margin:           0px;
  overflow:         auto;
}

.netlogo-speed-slider {
  background-color: transparent;
  border:           none;
  padding:          0.4rem;
  flex:             1 1 auto;
}

.netlogo-speed-slider-layout {
  display:        flex;
  flex-direction: column;
  width:          100%;
}

.netlogo-speed-slider input {
  border: none;
  width:  100%;
}

.model-speed-input {
  display:         flex;
  gap:             0.5rem;
  justify-content: center;
  align-items:     center;
  margin:          0.1rem;
}

.model-speed-input .nlw-ui-button {
  min-width:       2em;
  justify-content: center;
  text-align:      center;
}

.netlogo-slider-bar.model-speed-slider-interface {
  height:     2px;
  min-width:  150px;
  margin-top: unset;
}

.netlogo-slider-bar.model-speed-slider-interface > .netlogo-slider-bar-handle {
  background-color: var(--color-widget-accessories);
  top:              calc(-1 * (var(--circle-radius))); /* 1px is to account for the border width */
}


.netlogo-background-button:active {
  background-color: #dfdfdf;
}

.netlogo-widget input[type='range']::-ms-tooltip {
  display: none;
}

.netlogo-model input[type='range'] {
  cursor: pointer;
  cursor: grab;
}

.netlogo-model input[type='range']:active {
  cursor: pointer;
  cursor: grabbing;
}

.netlogo-tick-counter {
  background-color: #f4f4f4;
  font-size:        13px;
  margin:           3px;
  border:           none;
  height:           15px;
}

.netlogo-button {
  font-family:     var(--font-widget);
  font-size:       12px;
  border:          inherit;
  color:           black;
  display:         flex;
  justify-content: space-around;
  align-items:     center;
  padding:         0px;
}

.netlogo-button:disabled,
.netlogo-button.netlogo-disabled {
  background-color: var(--color-widget-button-disabled);
  color:            var(--color-widget-button-disabled-text);
}

.netlogo-button.clear-button {
  padding: 5px;
}

.netlogo-button .netlogo-label {
  /* For some reason, Safari doesn't like justify-content in buttons,
    we have to resort to putting a span in the button that can then be
    centered. BCH 11/14/2014 */
  margin: auto;
}

.netlogo-action-key {
  color:    grey;
  position: absolute;
  right:    6px;
  top:      5px;
}

.netlogo-action-key.netlogo-focus {
  color: black;
}

.netlogo-button:active,
.netlogo-forever-button.netlogo-active {
  background-color: gray;
  color:            white;
}

.netlogo-forever-button .netlogo-forever-icon {
  background-image:  url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDQzOC41NDIgNDM4LjU0MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDM4LjU0MiA0MzguNTQyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTQyNy40MDgsMTkuNjk3Yy03LjgwMy0zLjIzLTE0LjQ2My0xLjkwMi0xOS45ODYsMy45OTlsLTM3LjExNiwzNi44MzRDMzQ5Ljk0LDQxLjMwNSwzMjYuNjcyLDI2LjQxMiwzMDAuNSwxNS44NDggICBDMjc0LjMyOCw1LjI4NSwyNDcuMjUxLDAuMDAzLDIxOS4yNzEsMC4wMDNjLTI5LjY5MiwwLTU4LjA1Miw1LjgwOC04NS4wOCwxNy40MTdjLTI3LjAzLDExLjYxLTUwLjM0NywyNy4yMTUtNjkuOTUxLDQ2LjgyICAgYy0xOS42MDUsMTkuNjA3LTM1LjIxNCw0Mi45MjEtNDYuODI0LDY5Ljk0OUM1LjgwNywxNjEuMjE5LDAsMTg5LjU3NSwwLDIxOS4yNzFjMCwyOS42ODcsNS44MDcsNTguMDUsMTcuNDE3LDg1LjA3OSAgIGMxMS42MTMsMjcuMDMxLDI3LjIxOCw1MC4zNDcsNDYuODI0LDY5Ljk1MmMxOS42MDQsMTkuNTk5LDQyLjkyMSwzNS4yMDcsNjkuOTUxLDQ2LjgxOGMyNy4wMjgsMTEuNjExLDU1LjM4OCwxNy40MTksODUuMDgsMTcuNDE5ICAgYzMyLjczNiwwLDYzLjg2NS02Ljg5OSw5My4zNjMtMjAuN2MyOS41LTEzLjc5NSw1NC42MjUtMzMuMjYsNzUuMzc3LTU4LjM4NmMxLjUyLTEuOTAzLDIuMjM0LTQuMDQ1LDIuMTM2LTYuNDI0ICAgYy0wLjA4OS0yLjM3OC0wLjk5OS00LjMyOS0yLjcxMS01Ljg1MmwtMzkuMTA4LTM5LjM5OWMtMi4xMDEtMS43MTEtNC40NzMtMi41NjYtNy4xMzktMi41NjZjLTMuMDQ1LDAuMzgtNS4yMzIsMS41MjYtNi41NjYsMy40MjkgICBjLTEzLjg5NSwxOC4wODYtMzAuOTMsMzIuMDcyLTUxLjEwNyw0MS45NzdjLTIwLjE3Myw5Ljg5NC00MS41ODYsMTQuODM5LTY0LjIzNywxNC44MzljLTE5Ljc5MiwwLTM4LjY4NC0zLjg1NC01Ni42NzEtMTEuNTY0ICAgYy0xNy45ODktNy43MDYtMzMuNTUxLTE4LjEyNy00Ni42ODItMzEuMjYxYy0xMy4xMy0xMy4xMzUtMjMuNTUxLTI4LjY5MS0zMS4yNjEtNDYuNjgyYy03LjcwOC0xNy45ODctMTEuNTYzLTM2Ljg3NC0xMS41NjMtNTYuNjcxICAgYzAtMTkuNzk1LDMuODU4LTM4LjY5MSwxMS41NjMtNTYuNjc0YzcuNzA3LTE3Ljk4NSwxOC4xMjctMzMuNTQ3LDMxLjI2MS00Ni42NzhjMTMuMTM1LTEzLjEzNCwyOC42OTMtMjMuNTU1LDQ2LjY4Mi0zMS4yNjUgICBjMTcuOTgzLTcuNzA3LDM2Ljg3OS0xMS41NjMsNTYuNjcxLTExLjU2M2MzOC4yNTksMCw3MS40NzUsMTMuMDM5LDk5LjY0NiwzOS4xMTZsLTM5LjQwOSwzOS4zOTQgICBjLTUuOTAzLDUuNzExLTcuMjMxLDEyLjI3OS00LjAwMSwxOS43MDFjMy4yNDEsNy42MTQsOC44NTYsMTEuNDIsMTYuODU0LDExLjQyaDEyNy45MDZjNC45NDksMCw5LjIzLTEuODA3LDEyLjg0OC01LjQyNCAgIGMzLjYxMy0zLjYxNiw1LjQyLTcuODk4LDUuNDItMTIuODQ3VjM2LjU1QzQzOC41NDIsMjguNTU4LDQzNC44NCwyMi45NDMsNDI3LjQwOCwxOS42OTd6IiBmaWxsPSIjMDAwMDAwIi8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==);
  background-repeat: no-repeat;
  background-size:   10px 10px;
  bottom:            5px;
  height:            10px;
  position:          absolute;
  right:             5px;
  width:             10px;
  filter:            invert(1);
}

.netlogo-disabled .netlogo-forever-icon {
  background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDQzOC41NDIgNDM4LjU0MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDM4LjU0MiA0MzguNTQyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTQyNy40MDgsMTkuNjk3Yy03LjgwMy0zLjIzLTE0LjQ2My0xLjkwMi0xOS45ODYsMy45OTlsLTM3LjExNiwzNi44MzRDMzQ5Ljk0LDQxLjMwNSwzMjYuNjcyLDI2LjQxMiwzMDAuNSwxNS44NDggICBDMjc0LjMyOCw1LjI4NSwyNDcuMjUxLDAuMDAzLDIxOS4yNzEsMC4wMDNjLTI5LjY5MiwwLTU4LjA1Miw1LjgwOC04NS4wOCwxNy40MTdjLTI3LjAzLDExLjYxLTUwLjM0NywyNy4yMTUtNjkuOTUxLDQ2LjgyICAgYy0xOS42MDUsMTkuNjA3LTM1LjIxNCw0Mi45MjEtNDYuODI0LDY5Ljk0OUM1LjgwNywxNjEuMjE5LDAsMTg5LjU3NSwwLDIxOS4yNzFjMCwyOS42ODcsNS44MDcsNTguMDUsMTcuNDE3LDg1LjA3OSAgIGMxMS42MTMsMjcuMDMxLDI3LjIxOCw1MC4zNDcsNDYuODI0LDY5Ljk1MmMxOS42MDQsMTkuNTk5LDQyLjkyMSwzNS4yMDcsNjkuOTUxLDQ2LjgxOGMyNy4wMjgsMTEuNjExLDU1LjM4OCwxNy40MTksODUuMDgsMTcuNDE5ICAgYzMyLjczNiwwLDYzLjg2NS02Ljg5OSw5My4zNjMtMjAuN2MyOS41LTEzLjc5NSw1NC42MjUtMzMuMjYsNzUuMzc3LTU4LjM4NmMxLjUyLTEuOTAzLDIuMjM0LTQuMDQ1LDIuMTM2LTYuNDI0ICAgYy0wLjA4OS0yLjM3OC0wLjk5OS00LjMyOS0yLjcxMS01Ljg1MmwtMzkuMTA4LTM5LjM5OWMtMi4xMDEtMS43MTEtNC40NzMtMi41NjYtNy4xMzktMi41NjZjLTMuMDQ1LDAuMzgtNS4yMzIsMS41MjYtNi41NjYsMy40MjkgICBjLTEzLjg5NSwxOC4wODYtMzAuOTMsMzIuMDcyLTUxLjEwNyw0MS45NzdjLTIwLjE3Myw5Ljg5NC00MS41ODYsMTQuODM5LTY0LjIzNywxNC44MzljLTE5Ljc5MiwwLTM4LjY4NC0zLjg1NC01Ni42NzEtMTEuNTY0ICAgYy0xNy45ODktNy43MDYtMzMuNTUxLTE4LjEyNy00Ni42ODItMzEuMjYxYy0xMy4xMy0xMy4xMzUtMjMuNTUxLTI4LjY5MS0zMS4yNjEtNDYuNjgyYy03LjcwOC0xNy45ODctMTEuNTYzLTM2Ljg3NC0xMS41NjMtNTYuNjcxICAgYzAtMTkuNzk1LDMuODU4LTM4LjY5MSwxMS41NjMtNTYuNjc0YzcuNzA3LTE3Ljk4NSwxOC4xMjctMzMuNTQ3LDMxLjI2MS00Ni42NzhjMTMuMTM1LTEzLjEzNCwyOC42OTMtMjMuNTU1LDQ2LjY4Mi0zMS4yNjUgICBjMTcuOTgzLTcuNzA3LDM2Ljg3OS0xMS41NjMsNTYuNjcxLTExLjU2M2MzOC4yNTksMCw3MS40NzUsMTMuMDM5LDk5LjY0NiwzOS4xMTZsLTM5LjQwOSwzOS4zOTQgICBjLTUuOTAzLDUuNzExLTcuMjMxLDEyLjI3OS00LjAwMSwxOS43MDFjMy4yNDEsNy42MTQsOC44NTYsMTEuNDIsMTYuODU0LDExLjQyaDEyNy45MDZjNC45NDksMCw5LjIzLTEuODA3LDEyLjg0OC01LjQyNCAgIGMzLjYxMy0zLjYxNiw1LjQyLTcuODk4LDUuNDItMTIuODQ3VjM2LjU1QzQzOC41NDIsMjguNTU4LDQzNC44NCwyMi45NDMsNDI3LjQwOCwxOS42OTd6IiBmaWxsPSIjODA4MDgwIi8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==);
  filter:           unset;
}

.netlogo-button-agent-context {
  font-size: 11px;
  left:      8px;
  position:  absolute;
  top:       5px;
}

.netlogo-disabled .netlogo-button-agent-content {
  color: #808080;
}

.netlogo-button.netlogo-disabled:active,
.netlogo-forever-button.netlogo-disabled.netlogo-active {
  background-color: var(--color-widget-button-disabled);
  color:            var(--color-widget-button-disabled-text);
}

.netlogo-command {
  background-color: var(--color-widget-button);
  color:            var(--color-widget-button-text);
}

.netlogo-command.netlogo-active,
.netlogo-command:active {
  background-color: var(--color-widget-button-active);
}

.netlogo-input {
  background-color: var(--color-widget-background);
}

.netlogo-output {
  background-color: #e8e8e8;
}

.netlogo-note {
  background-color: white;
  border:           none;
  margin:           0;
  padding:          2px;
  font-family:      var(--font-widget);
}

/* These are for the new Markdown display capabilities, values chosen to appear somewhat similar to desktop. -Jeremy B
June 2025 */

.netlogo-note {
  display:        flex;
  flex-direction: column;
}

.netlogo-note > h1,
.netlogo-note > h2,
.netlogo-note > h3,
.netlogo-note > h4,
.netlogo-note > h5,
.netlogo-note > h6,
.netlogo-note > div,
.netlogo-note > p,
.netlogo-note > ul {
  margin: 0 0 0.5rem;
}

.netlogo-note > ul,
.netlogo-note > ol {
  padding-inline-start: 1.5em;
  margin:               0 0 0.5rem;
}

.netlogo-switcher {
  display:     flex;
  align-items: center;
  padding:     var(--widget-padding-y) var(--widget-padding-x);
  cursor:      pointer;
}

.netlogo-switcher > .netlogo-label {
  margin-left: 0;
}

.netlogo-switcher-element {
  display:       flex;
  height:        100%;
  border-radius: 8px;
  --knob-size:   12px;
  width:         var(--knob-size);
  min-width:     var(--knob-size);
  position:      relative;
}

input[type='checkbox']:checked ~ .netlogo-switcher-element {
  background-color: var(--color-widget-switch-primary);
}

input[type='checkbox']:not(checked) ~ .netlogo-switcher-element {
  background-color: var(--color-widget-switch-off);
}

.netlogo-switcher:hover > input[type='checkbox']:checked ~ .netlogo-switcher-element {
  background-color: var(--color-widget-switch-primary-hover);
}

.netlogo-switcher:hover > input[type='checkbox']:not(checked) ~ .netlogo-switcher-element {
  background-color: var(--color-widget-switch-off-hover);
}

.netlogo-switcher-element > .netlogo-switcher-element-knob {
  height:           var(--knob-size);
  width:            var(--knob-size);
  border-radius:    50%;
  position:         absolute;
  left:             0;
  scale:            1.05;
  background-color: white;
  box-shadow:       inset 0 0 0 1px var(--color-widget-switch-primary);
  transition:       top 0.1s ease-in-out;
  cursor:           pointer;
}

input[type='checkbox']:checked ~ .netlogo-switcher-element > .netlogo-switcher-element-knob {
  top: 0;
}

input[type='checkbox']:not(checked) ~ .netlogo-switcher-element > .netlogo-switcher-element-knob {
  top: calc(100% - var(--knob-size));
}

.netlogo-slider {
  margin-top:       2px;
  padding:          var(--widget-padding-y) var(--widget-padding-x);
  background-color: var(--color-widget-background);
  display:          flex;
  flex-flow:        column;
  justify-content:  space-around;
}

.netlogo-slider:hover {
  cursor: default;
}

.netlogo-slider input[type='range'] {
  background-color: transparent;
  height:           22px;
  margin:           0px;
  margin-bottom:    -3px;
  margin-top:       -1px;
  padding:          0px;
  width:            100%;
}

.netlogo-slider-bar {
  position:         relative;
  width:            100%;
  height:           6px;
  margin-top:       6px;
  border-radius:    0.5rem;
  background-color: var(--color-widget-accessories-neutral);
}

.netlogo-slider-bar::after {
  content:          '';
  display:          block;
  position:         absolute;
  top:              50%;
  transform:        translateY(-50%);
  width:            100%;
  /* Increases hit-box without altering layout */
  height:           calc(100% + 0.8rem);
  background-color: transparent;
  cursor:           pointer;
}

.netlogo-slider-bar > .netlogo-slider-bar-fill {
  width:            0%;
  height:           100%;
  border-radius:    0.5rem;
  background-color: var(--color-widget-accessories);
}

.netlogo-slider-bar > .netlogo-slider-bar-handle {
  --circle-size:    10px;
  --circle-radius:  calc(var(--circle-size) / 2);
  position:         absolute;
  width:            var(--circle-size);
  height:           var(--circle-size);
  border-radius:    50%;
  border:           2px solid var(--color-widget-accessories);
  background-color: white;
  cursor:           pointer;
  top:              calc(-1 * (var(--circle-radius) - 1px)); /* 1px is to account for the border width */
  transform:        translateX(-50%);
}

.netlogo-label {
  margin:        0 auto;
  overflow:      hidden;
  text-overflow: ellipsis;
  white-space:   nowrap;
  user-select:   none;
}

.netlogo-slider-label {
  display:         flex;
  justify-content: space-between;
  align-items:     center;
}

.netlogo-slider-label .netlogo-label {
  background-color: transparent;
  flex:             1 1 auto;
  min-width:        0;
}

.netlogo-slider-label .netlogo-slider-value {
  flex: 0 0 auto;
}

.netlogo-slider-value-input {
  font-family: var(--font-widget);
  font-size:   14px;
}

.netlogo-slider-label input[type='number'] {
  margin:        0px;
  border:        1px solid var(--color-widget-input-border);
  border-radius: 6px;
  text-align:    right;
  padding:       2px;
}

.netlogo-slider-label .netlogo-slider-value input {
  background-color: white;
}

.netlogo-monitor {
  padding:         var(--widget-padding-y) var(--widget-padding-x);
  display:         flex;
  flex-flow:       column;
  justify-content: space-around;
}

.netlogo-monitor > .netlogo-label {
  margin-left: 0;
}

.netlogo-monitor .netlogo-value {
  background-color: white;
  min-height:       11px;
  padding:          var(--widget-padding-y) var(--widget-padding-x);
  border:           1px solid #b2b2b2;
  border-radius:    6px;
  flex-shrink:      0;
  flex-grow:        1;
  max-width:        calc(100% - 1 * var(--widget-padding-x));
  text-overflow:    ellipsis;
  overflow-x:       hidden;
}

.netlogo-value {
  overflow: hidden;
}

.netlogo-code {
  border-top: 1px solid var(--color-tab-border);
}

.netlogo-input-box {
  padding:         var(--widget-padding-y) var(--widget-padding-x);
  display:         flex;
  flex-flow:       column;
  justify-content: space-around;
}

.netlogo-multiline-input {
  flex-grow:      1;
  height:         0; /* This is a hack to get Input widget labels the right heights in Firefox --Jason B. (11/23/17) */
  width:          auto; /* This is a hack to get input type="number" widgets sized correctly in Firefox -Jeremy B. Jan 2018 */
  margin:         4px;
  resize:         none;
  border:         1.5px solid var(--color-widget-input-border);
  box-shadow:     0 1px 3px rgba(0, 0, 0, 0.12);
  border-radius:  4px;
  padding-inline: 0.2rem;
  font-family:    var(--font-widget);
  font-size:      12px;
}

.netlogo-multiline-input[data-type='number'] {
  color:       #a42f00;
  font-family: monospace;
  font-size:   14px;
}

.netlogo-input-box > .netlogo-label {
  margin: 0 auto 0 0;
}

.netlogo-singleline-input {
  flex-grow: 1;
  margin:    4px;
  resize:    none;
}

.netlogo-chooser {
  padding:         var(--widget-padding-y) var(--widget-padding-x);
  display:         flex;
  flex-flow:       column;
  justify-content: space-around;
}

.netlogo-chooser .netlogo-label {
  margin: 0 auto 0 0;
}

.netlogo-chooser-select {
  appearance:          none;
  -webkit-appearance:  none;
  border:              1px solid var(--color-widget-select-border);
  border-radius:       4px;
  padding:             0.1rem 1.2rem 0.1rem 0.2rem;
  font-family:         var(--font-widget);
  font-size:           12px;
  background-color:    #ffffff;
  background-image:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M0 0 L10 0 L5 6 Z' fill='rgba(0%2C0%2C0%2C0.55)'/%3E%3C/svg%3E");
  background-repeat:   no-repeat;
  background-position: right 0.3em center;
  background-size:     0.55em;
}

.netlogo-plot {
  box-sizing: content-box; /* otherwise border gets cut off -- BCH 11/9/2014 */
  overflow:   visible; /* must come after the .netlogo-widget declaration - JMB November 2017 */
  padding:    0;
  border:     1px solid #eeeeee;
}

.highcharts-root {
  font-family: var(--font-widget) !important;
}

.highcharts-container {
  overflow: visible !important; /* Let our context-menus be free - JMB November 2017 */
}

.netlogo-forever-button > input {
  display: none;
}

.netlogo-subheader {
  align-items: center;
  display:     flex;
  flex-flow:   column;
  flex-grow:   0;
  white-space: nowrap;
}

.netlogo-powered-by-image {
  vertical-align: middle;
  width:          24px;
  height:         24px;
}

.netlogo-export-wrapper {
  align-items: center;
  display:     flex;
  flex-grow:   0;
  gap:         4px;
  white-space: nowrap;
}

.netlogo-export-wrapper + .netlogo-export-wrapper {
  margin-top: 4px;
}

.netlogo-code-compile-error {
  color:           red;
  display:         flex;
  flex-direction:  row;
  justify-content: center;
  margin:          5px 0 -5px 0;
  font-weight:     bold;
}

.netlogo-widget-error {
  color: red;
}

.netlogo-widget-error:hover {
  cursor: pointer;
}

.CodeMirror {
  /* `height: auto` tells CodeMirror 5 "resize to fit contents" but it doesn't respect `max-height` when resizing, that
    has to be set on `CodeMirror-scroll` below. */
  height: auto;
  /* `width: 100%` tells CodeMirror 5 "take up all available space in your parent container" which works well with a
    statically sized parent. */
  width:  100%;
}

.CodeMirror-scroll {
  /* This tells CodeMirror 5 to limit the height it'll grow to fit contents. */
  max-height: 800px;
}

.netlogo-code-tab .CodeMirror-scroll {
  min-height: 240px;
}

.CodeMirror-scroll.cm-disabled {
  background-color: #ebebe4;
}

.netlogo-help-keybind-hint {
  display:          flex;
  align-items:      center;
  align-self:       center;
  gap:              8px;
  flex:             0 0 auto;
  white-space:      nowrap;
  user-select:      none;
  border:           none;
  background:       none;
  padding:          0;
  font:             inherit;
  color:            inherit;
  cursor:           pointer;
}

.help-popup {
  background-color: white;
  border:           1px solid black;
  border-radius:    5px;
  box-shadow:       0 0 10px rgba(0, 0, 0, 0.5);
  font-size:        20px;
  position:         absolute;
  outline:          none;
  z-index:          200;
  overflow-y:       auto;
}

.keyboard-help-content {
  flex:       1;
  overflow-y: visible;
}

.keyboard-help-table {
  width:           100%;
  border-collapse: collapse;
  font-size:       16px;
}

.keyboard-help-table thead {
  position:      sticky;
  top:           0;
  border-bottom: 2px solid #dee2e6;
}

.keyboard-help-group-header {
  display:          flex;
  flex-direction:   column;
  align-items:      flex-start;
  gap:              0.3rem;
  padding:          0.5rem;
  background-color: #f8f9fa;
}

.keyboard-help-group-title {
  font-weight: bold;
  font-size:   1.2rem;
}

.keyboard-help-group-description {
  font-size: 1rem;
}

.keyboard-help-table th {
  background-color: #f8f9fa;
  border-bottom:    2px solid #dee2e6;
  font-weight:      600;
  padding:          12px 8px;
  text-align:       left;
}

.keyboard-help-table td {
  border-bottom:  1px solid #dee2e6;
  padding:        10px 8px;
  vertical-align: top;
}

.keyboard-help-multiple {
  display:        flex;
  flex-direction: column;
  gap:            4px;
}

.keyboard-help-key {
  white-space:   nowrap;
  width:         200px;
  padding-right: 15px;
}

kbd {
  background-color:    #fafbfc;
  border-bottom-color: #c6cbd1;
  border-radius:       3px;
  border:              solid 1px #d1d5da;
  box-shadow:          inset 0 -1px 0 #c6cbd1;
  color:               #3b793a;
  display:             inline-block;
  font:                14px 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
  line-height:         1.2;
  padding:             4px 6px;
  margin:              0 2px;
  vertical-align:      middle;
  user-select:         none;
}

.keyboard-help-description {
  color:       #555;
  line-height: 1.4;
}

.keyboard-help-empty {
  color:      #666;
  font-style: italic;
  text-align: center;
  padding:    40px 20px;
  font-size:  18px;
}

.modal-overlay {
  background-color: rgba(200, 200, 200, 0.7);
  bottom:           0;
  left:             0;
  position:         absolute;
  right:            0;
  top:              0;
  z-index:          99;
}

.async-popup {
  background-color: white;
  border:           1px solid black;
  border-radius:    5px;
  box-shadow:       0 0 10px rgba(0, 0, 0, 0.5);
  min-width:        120px;
  padding:          10px 10px 0 14px;
  position:         absolute;
  outline:          none;
  z-index:          90;
}

.async-dialog-message {
  font-size:   16px;
  margin-top:  20px;
  white-space: break-spaces;
  word-break:  break-word;
}

.async-dialog-button-row {
  align-items:     center;
  display:         flex;
  flex-direction:  row;
  justify-content: flex-end;
  margin:          10px 0;
}

.async-dialog-controls {
  margin: 8px 4px 0 0;
}

.async-dialog-text-input {
  width: 100%;
}

.h-center-flexbox {
  align-items:     center;
  display:         flex;
  flex-direction:  row;
  justify-content: center;
}

/* Modals */

.netlogo-modal-container {
  --z-basis:        100;
  --border-width:   1px;
  --title-padding:  0.2rem;
  --title-height:   1rem;
  box-sizing:       border-box;
  position:         fixed;
  z-index:          var(--z-basis);
  display:          flex;
  flex-direction:   column;
  transform:        translate(-50%, -50%);
  border-radius:    0.5rem;
  box-shadow:       0px 1px 2px #00000080;
  overflow:         hidden;
  border:           solid 1px #e8e8e8;
  transition:       opacity 0.2s ease-in-out;
  background-color: #eee;
}

.netlogo-modal-container.is-hidden {
  opacity:        0;
  pointer-events: none !important;
}

.netlogo-modal-title {
  position:         sticky;
  top:              0;
  min-height:       var(--title-height);
  text-align:       center;
  padding:          var(--title-padding);
  cursor:           grab;
  user-select:      none;
  background-color: white;
  border-bottom:    solid var(--border-width) #111;
  z-index:          calc(var(--z-basis) + 1);
  font-size:        small;
}

.netlogo-modal-top-bar-container {
  position: relative;
  width:    100%;
}

.netlogo-modal-title-text {
  flex-grow: 1;
}

.netlogo-modal-content {
  overflow: auto;
  flex:     1 1 auto;
}

/* Old-size */

.old-size {
  border-radius: 4px;
}

.netlogo-slider.old-size {
  padding-top:   2px;
  padding-left:  3px;
  padding-right: 3px;
  font-size:     12px;
}

.old-size .netlogo-slider-label input[type='number'] {
  margin:    0px;
  border:    1px;
  padding:   0px;
  font-size: 12px;
}

.netlogo-monitor.old-size {
  padding: 2px 4px;
}

.netlogo-monitor.old-size > div > .netlogo-value {
  padding: 2px 2px;
}

.netlogo-input-box.old-size {
  padding: 2px 4px;
}

.netlogo-input-box.old-size > .netlogo-label {
  font-size: 12px;
}

.netlogo-chooser.old-size {
  padding: 2px 4px;
}

.netlogo-chooser.old-size > .netlogo-label {
  font-size: 12px;
}

.netlogo-chooser.old-size {
  padding: 2px 4px;
}

.netlogo-chooser.old-size > .netlogo-chooser-select {
  padding:   2px 4px;
  font-size: 12px;
}

.netlogo-switcher.old-size {
  padding: 2px 4px;
}

.netlogo-widget-error {
  color: red;
}

.netlogo-widget-error.netlogo-button {
  color:      white;
  background: red;
}

.netlogo-widget-error:hover {
  cursor: pointer !important;
}

.netlogo-view-container {
  background-color: #f4f4f4;
}

.netlogo-canvas {
  border-radius: 3px;
}

/* Color input */

.netlogo-color-input-loader {
  height: 100%;
}

.netlogo-color-input {
  padding:          0.2rem;
  margin:           0.1rem;
  box-sizing:       border-box;
  aspect-ratio:     1 / 1;
  width:            2rem;
  border-radius:    0.2rem;
  background-color: #eee;
  height:           100%;
}

.netlogo-color-input:hover {
  cursor:           pointer;
  background-color: #ccc;
}

.netlogo-color-input > * {
  box-sizing: border-box;
}

.netlogo-swatches {
  display:               grid;
  grid-template-columns: auto auto;
  width:                 100%;
  aspect-ratio:          1 / 1;
  gap:                   0;
  background-image:      var(--checkerboard);
  background-position-x: left;
  background-position-y: center;
  inset:                 0;
  border-radius:         0.1rem;
  overflow:              hidden;
}

.no-alpha .netlogo-swatches {
  grid-template-columns: auto;
}
