/**
 * 98.css
 * Copyright (c) 2020 Jordan Scales <thatjdanisso.cool>
 * https://github.com/jdan/98.css/blob/main/LICENSE
 */

 :root {
    /* Color */
    --surface: #d4a9c5;
    --button-highlight: #ffffff;
    --button-face: #dfdfdf; 
    --button-shadow: #39797e;
    --window-frame: #0a0a0a;
    --dialog-blue: #a48ec2;
    --dialog-blue-light: #a8b5fb;
    --dialog-gray: #c370cf;
    --dialog-gray-light: #ba87a7;

  
    /* Spacing */
    --element-spacing: 8px;
    --grouped-button-spacing: 4px;
    --grouped-element-spacing: 6px;
    --radio-width: 12px;
    --checkbox-width: 13px;
    --radio-label-spacing: 6px;
    --range-track-height: 4px;
    --range-spacing: 10px;
  
    /* Some detailed computations for radio buttons and checkboxes */
    --radio-total-width-precalc: var(--radio-width) + var(--radio-label-spacing);
    --radio-total-width: calc(var(--radio-total-width-precalc));
    --radio-left: calc(-1 * var(--radio-total-width-precalc));
    --radio-dot-width: 4px;
    --radio-dot-top: calc(var(--radio-width) / 2 - var(--radio-dot-width) / 2);
    --radio-dot-left: calc(
      -1 * (var(--radio-total-width-precalc)) + var(--radio-width) / 2 - var(
          --radio-dot-width
        ) / 2
    );
  
    --checkbox-total-width-precalc: var(--checkbox-width) +
      var(--radio-label-spacing);
    --checkbox-total-width: calc(var(--checkbox-total-width-precalc));
    --checkbox-left: calc(-1 * var(--checkbox-total-width-precalc));
    --checkmark-width: 7px;
    --checkmark-top: 3px;
    --checkmark-left: 3px;
  
    /* Borders */
    --border-width: 1px;
    --border-raised-outer: inset -1px -1px var(--window-frame),
      inset 1px 1px var(--button-highlight);
    --border-raised-inner: inset -2px -2px var(--button-shadow),
      inset 2px 2px var(--button-face);
    --border-sunken-outer: inset -1px -1px var(--button-highlight),
      inset 1px 1px var(--window-frame);
    --border-sunken-inner: inset -2px -2px var(--button-face),
      inset 2px 2px var(--button-shadow);
  
    /* Window borders flip button-face and button-highlight */
    --border-window-outer: inset -1px -1px var(--window-frame),
      inset 1px 1px var(--button-face);
    --border-window-inner: inset -2px -2px var(--button-shadow),
      inset 2px 2px var(--button-highlight);
  
    /* Field borders (checkbox, input, etc) flip window-frame and button-shadow */
    --border-field: inset -1px -1px var(--button-highlight),
      inset 1px 1px var(--button-shadow), inset -2px -2px var(--button-face),
      inset 2px 2px var(--window-frame);
  }
  
  @font-face {
    font-family: "Pixelated MS Sans Serif";
    src: url("fonts/converted/ms_sans_serif.woff") format("woff");
    src: url("fonts/converted/ms_sans_serif.woff2") format("woff2");
    font-weight: normal;
    font-style: normal;
  }
  
  @font-face {
    font-family: "Pixelated MS Sans Serif";
    src: url("fonts/converted/ms_sans_serif_bold.woff") format("woff");
    src: url("fonts/converted/ms_sans_serif_bold.woff2") format("woff2");
    font-weight: bold;
    font-style: normal;
  }
  
  button,
  label,
  input,
  textarea,
  select,
  option,
  ul.tree-view,
  .window,
  .title-bar {
    font-family: "Pixelated MS Sans Serif", Arial;
    -webkit-font-smoothing: none;
    font-size: 11px;
  }
  
  h1 {
    font-size: 5rem;
  }
  
  h2 {
    font-size: 2.5rem;
  }
  
  h3 {
    font-size: 2rem;
  }
  
  h4 {
    font-size: 1.5rem;
  }
  
  u {
    text-decoration: none;
    border-bottom: 0.5px solid #222222;
  }
  
  button,
  input[type="submit"],
  input[type="reset"] {
    box-sizing: border-box;
    border: none;
    background: var(--surface);
    box-shadow: var(--border-raised-outer), var(--border-raised-inner);
    border-radius: 0;
  
    min-width: 75px;
    min-height: 23px;
    padding: 0 12px;
  }
  
  .vertical-bar {
    width: 4px;
    height: 20px;
    background: #c0c0c0;
    box-shadow: var(--border-raised-outer), var(--border-raised-inner);
  }
  
  button:not(:disabled):active,
  input[type="submit"]:not(:disabled):active,
  input[type="reset"]:not(:disabled):active {
    box-shadow: var(--border-sunken-outer), var(--border-sunken-inner);
    padding: 2px 11px 0 13px;
  }
  
  @media (not(hover)) {
    button:not(:disabled):hover,
    input[type="submit"]:not(:disabled):hover,
    input[type="reset"]:not(:disabled):hover {
      box-shadow: var(--border-sunken-outer), var(--border-sunken-inner);
    }
  }
  
  button:focus,
  input[type="submit"]:focus,
  input[type="reset"]:focus {
    outline: 1px dotted #000000;
    outline-offset: -4px;
  }
  
  button::-moz-focus-inner,
  input[type="submit"]::-moz-focus-inner,
  input[type="reset"]::-moz-focus-inner {
    border: 0;
  }
  
  :disabled,
  :disabled + label,
  :read-only,
  :read-only + label {
    color: var(--button-shadow);
  }
  
  button:disabled,
  input[type="submit"]:disabled,
  input[type="reset"]:disabled,
  :disabled + label {
    text-shadow: 1px 1px 0 var(--button-highlight);
  }
  
  .window {
    box-shadow: var(--border-window-outer), var(--border-window-inner);
    background: var(--surface);
    padding: 3px;
  }
  
  .title-bar {
    background: linear-gradient(
      90deg,
      var(--dialog-blue),
      var(--dialog-blue-light)
    );
    padding: 3px 2px 3px 3px;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  
  .title-bar.inactive {
    background: linear-gradient(
      90deg,
      var(--dialog-gray),
      var(--dialog-gray-light)
    );
  }
  
  .title-bar-text {
    font-weight: bold;
    color: white;
    letter-spacing: 0;
    margin-right: 24px;
  }
  
  .title-bar-controls {
    display: flex;
  }
  
  .title-bar-controls button {
    padding: 0;
    display: block;
    min-width: 16px;
    min-height: 14px;
  }
  
  .title-bar-controls button:active {
    padding: 0;
  }
  
  .title-bar-controls button:focus {
    outline: none;
  }
  
  .title-bar-controls button[aria-label="Minimize"] {
    background-image: svg-load("./icon/minimize.svg");
    background-repeat: no-repeat;
    background-position: bottom 3px left 4px;
  }
  
  .title-bar-controls button[aria-label="Maximize"] {
    background-image: svg-load("./icon/maximize.svg");
    background-repeat: no-repeat;
    background-position: top 2px left 3px;
  }
  
  .title-bar-controls button[aria-label="Restore"] {
    background-image: svg-load("./icon/restore.svg");
    background-repeat: no-repeat;
    background-position: top 2px left 3px;
  }
  
  .title-bar-controls button[aria-label="Help"] {
    background-image: svg-load("./icon/help.svg");
    background-repeat: no-repeat;
    background-position: top 2px left 5px;
  }
  
  .title-bar-controls button[aria-label="Close"] {
    margin-left: 2px;
    background-image: svg-load("./icon/close.svg");
    background-repeat: no-repeat;
    background-position: top 3px left 4px;
  }
  
  .status-bar {
    margin: 0px 1px;
    display: flex;
    gap: 1px;
  }
  
  .status-bar-field {
    box-shadow: inset -1px -1px #dfdfdf, inset 1px 1px #808080;
    flex-grow: 1;
    padding: 2px 3px;
    margin: 0;
  }
  
  .window-body {
    overflow: scroll;
    margin: var(--element-spacing);
    height: 150px;
  }
  
  fieldset {
    border-image: svg-load("./icon/groupbox-border.svg") 2;
    padding: calc(2 * var(--border-width) + var(--element-spacing));
    padding-block-start: var(--element-spacing);
    margin: 0;
  }
  
  legend {
    background: var(--surface);
  }
  
  .field-row {
    display: flex;
    align-items: center;
  }
  
  [class^="field-row"] + [class^="field-row"] {
    margin-top: var(--grouped-element-spacing);
  }
  
  .field-row > * + * {
    margin-left: var(--grouped-element-spacing);
  }
  
  .field-row-stacked {
    display: flex;
    flex-direction: column;
  }
  
  .field-row-stacked * + * {
    margin-top: var(--grouped-element-spacing);
  }
  
  label {
    display: inline-flex;
    align-items: center;
  }
  
  input[type="radio"],
  input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    margin: 0;
    background: 0;
    position: fixed;
    opacity: 0;
    border: none;
  }
  
  input[type="radio"] + label,
  input[type="checkbox"] + label {
    line-height: 13px;
  }
  
  input[type="radio"] + label {
    position: relative;
    margin-left: var(--radio-total-width);
  }
  
  input[type="radio"] + label::before {
    content: "";
    position: absolute;
    top: 0;
    left: calc(-1 * (var(--radio-total-width-precalc)));
    display: inline-block;
    width: var(--radio-width);
    height: var(--radio-width);
    margin-right: var(--radio-label-spacing);
    background: svg-load("./icon/radio-border.svg");
  }
  
  input[type="radio"]:active + label::before {
    background: svg-load("./icon/radio-border-disabled.svg");
  }
  
  input[type="radio"]:checked + label::after {
    content: "";
    display: block;
    width: var(--radio-dot-width);
    height: var(--radio-dot-width);
    top: var(--radio-dot-top);
    left: var(--radio-dot-left);
    position: absolute;
    background: svg-load("./icon/radio-dot.svg");
  }
  
  input[type="radio"]:focus + label,
  input[type="checkbox"]:focus + label {
    outline: 1px dotted #000000;
  }
  
  input[type="radio"][disabled] + label::before {
    background: svg-load("./icon/radio-border-disabled.svg");
  }
  
  input[type="radio"][disabled]:checked + label::after {
    background: svg-load("./icon/radio-dot-disabled.svg");
  }
  
  input[type="checkbox"] + label {
    position: relative;
    margin-left: var(--checkbox-total-width);
  }
  
  input[type="checkbox"] + label::before {
    content: "";
    position: absolute;
    left: calc(-1 * (var(--checkbox-total-width-precalc)));
    display: inline-block;
    width: var(--checkbox-width);
    height: var(--checkbox-width);
    background: var(--button-highlight);
    box-shadow: var(--border-field);
    margin-right: var(--radio-label-spacing);
  }
  
  input[type="checkbox"]:active + label::before {
    background: var(--surface);
  }
  
  input[type="checkbox"]:checked + label::after {
    content: "";
    display: block;
    width: var(--checkmark-width);
    height: var(--checkmark-width);
    position: absolute;
    top: var(--checkmark-top);
    left: calc(
      -1 * (var(--checkbox-total-width-precalc)) + var(--checkmark-left)
    );
    background: svg-load("./icon/checkmark.svg");
  }
  
  input[type="checkbox"][disabled] + label::before {
    background: var(--surface);
  }
  
  input[type="checkbox"][disabled]:checked + label::after {
    background: svg-load("./icon/checkmark-disabled.svg");
  }
  
  input[type="text"],
  input[type="password"],
  input[type="email"],
  input[type="number"],
  select,
  textarea {
    padding: 3px 4px;
    border: none;
    box-shadow: var(--border-field);
    background-color: var(--button-highlight);
    box-sizing: border-box;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    border-radius: 0;
  }
  
  input[type="text"],
  input[type="password"],
  input[type="email"],
  select {
    height: 21px;
  }
  input[type="number"] {
    /* need this 1 pixel to fit the spinner controls in box */
    height: 22px;
  }
  
  input[type="text"],
  input[type="password"],
  input[type="email"],
  input[type="number"] {
    /* For some reason descenders are getting cut off without this */
    line-height: 2;
  }
  
  input[type="email"]:disabled,
  input[type="password"]:disabled,
  input[type="text"]:disabled,
  input[type="number"]:disabled,
  input[type="email"]:read-only,
  input[type="password"]:read-only,
  input[type="text"]:read-only,
  input[type="number"]:read-only,
  textarea:disabled {
    background-color: var(--surface);
  }
  
  select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    position: relative;
    padding-right: 32px;
    background-image: svg-load("./icon/button-down.svg");
    background-position: top 2px right 2px;
    background-repeat: no-repeat;
    border-radius: 0;
  }
  
  select:focus,
  input[type="text"]:focus,
  input[type="password"]:focus,
  input[type="email"]:focus,
  input[type="number"]:focus,
  textarea:focus {
    outline: none;
  }
  
  input[type="range"] {
    width: 100%;
    background: transparent;
  }
  
  input[type="range"]:focus {
    outline: none;
  }
  
  input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 21px;
    width: 11px;
    background: svg-load("./icon/indicator-horizontal.svg");
    transform: translateY(-8px);
  }
  
  input[type="range"].has-box-indicator::-webkit-slider-thumb {
    background: svg-load("./icon/indicator-rectangle-horizontal.svg");
    transform: translateY(-10px);
  }
  
  input[type="range"]::-moz-range-thumb {
    height: 21px;
    width: 11px;
    border: 0;
    border-radius: 0;
    background: svg-load("./icon/indicator-horizontal.svg");
    transform: translateY(2px);
  }
  
  input[type="range"].has-box-indicator::-moz-range-thumb {
    background: svg-load("./icon/indicator-rectangle-horizontal.svg");
    transform: translateY(0px);
  }
  
  input[type="range"]::-webkit-slider-runnable-track {
    width: 100%;
    height: 2px;
    box-sizing: border-box;
    background: black;
    border-right: 1px solid grey;
    border-bottom: 1px solid grey;
    box-shadow: 1px 0 0 white, 1px 1px 0 white, 0 1px 0 white, -1px 0 0 darkgrey,
      -1px -1px 0 darkgrey, 0 -1px 0 darkgrey, -1px 1px 0 white, 1px -1px darkgrey;
  }
  
  input[type="range"]::-moz-range-track {
    width: 100%;
    height: 2px;
    box-sizing: border-box;
    background: black;
    border-right: 1px solid grey;
    border-bottom: 1px solid grey;
    box-shadow: 1px 0 0 white, 1px 1px 0 white, 0 1px 0 white, -1px 0 0 darkgrey,
      -1px -1px 0 darkgrey, 0 -1px 0 darkgrey, -1px 1px 0 white, 1px -1px darkgrey;
  }
  
  .is-vertical {
    display: inline-block;
    width: 4px;
    height: 150px;
    transform: translateY(50%);
  }
  
  .is-vertical > input[type="range"] {
    width: 150px;
    height: 4px;
    margin: 0 calc(var(--grouped-element-spacing) + var(--range-spacing)) 0
      var(--range-spacing);
    transform-origin: left;
    transform: rotate(270deg) translateX(calc(-50% + var(--element-spacing)));
  }
  
  .is-vertical > input[type="range"]::-webkit-slider-runnable-track {
    border-left: 1px solid grey;
    border-right: 0;
    border-bottom: 1px solid grey;
    box-shadow: -1px 0 0 white, -1px 1px 0 white, 0 1px 0 white, 1px 0 0 darkgrey,
      1px -1px 0 darkgrey, 0 -1px 0 darkgrey, 1px 1px 0 white, -1px -1px darkgrey;
  }
  
  .is-vertical > input[type="range"]::-moz-range-track {
    border-left: 1px solid grey;
    border-right: 0;
    border-bottom: 1px solid grey;
    box-shadow: -1px 0 0 white, -1px 1px 0 white, 0 1px 0 white, 1px 0 0 darkgrey,
      1px -1px 0 darkgrey, 0 -1px 0 darkgrey, 1px 1px 0 white, -1px -1px darkgrey;
  }
  
  .is-vertical > input[type="range"]::-webkit-slider-thumb {
    transform: translateY(-8px) scaleX(-1);
  }
  
  .is-vertical > input[type="range"].has-box-indicator::-webkit-slider-thumb {
    transform: translateY(-10px) scaleX(-1);
  }
  
  .is-vertical > input[type="range"]::-moz-range-thumb {
    transform: translateY(2px) scaleX(-1);
  }
  
  .is-vertical > input[type="range"].has-box-indicator::-moz-range-thumb {
    transform: translateY(0px) scaleX(-1);
  }
  
  select:focus {
    color: var(--button-highlight);
    background-color: var(--dialog-blue);
  }
  select:focus option {
    color: #000;
    background-color: #fff;
  }
  
  select:active {
    background-image: svg-load("./icon/button-down-active.svg");
  }
  
  a {
    color: var(--link-blue);
  }
  
  a:focus {
    outline: 1px dotted var(--link-blue);
  }
  
  ul.tree-view {
    display: block;
    background: var(--button-highlight);
    box-shadow: var(--border-field);
    padding: 6px;
    margin: 0;
  }
  
  ul.tree-view li {
    list-style-type: none;
  }
  
  ul.tree-view a {
    text-decoration: none;
    color: #000;
  }
  
  ul.tree-view a:focus {
    background-color: var(--dialog-blue);
    color: var(--button-highlight);
  }
  
  ul.tree-view ul,
  ul.tree-view li {
    margin-top: 3px;
  }
  
  ul.tree-view ul {
    margin-left: 16px;
    padding-left: 16px;
    /* Goes down too far */
    border-left: 1px dotted #808080;
  }
  
  ul.tree-view ul > li {
    position: relative;
  }
  ul.tree-view ul > li::before {
    content: "";
    display: block;
    position: absolute;
    left: -16px;
    top: 6px;
    width: 12px;
    border-bottom: 1px dotted #808080;
  }
  
  /* Cover the bottom of the left dotted border */
  ul.tree-view ul > li:last-child::after {
    content: "";
    display: block;
    position: absolute;
    left: -20px;
    top: 7px;
    bottom: 0px;
    width: 8px;
    background: var(--button-highlight);
  }
  
  ul.tree-view details {
    margin-top: 0;
  }
  
  ul.tree-view details[open] summary {
    margin-bottom: 0;
  }
  
  ul.tree-view ul details > summary:before {
    margin-left: -22px;
    position: relative;
    z-index: 1;
  }
  
  ul.tree-view details > summary:before {
    text-align: center;
    display: block;
    float: left;
    content: "+";
    border: 1px solid #808080;
    width: 8px;
    height: 9px;
    line-height: 8px;
    margin-right: 5px;
    padding-left: 1px;
    background-color: #fff;
  }
  
  ul.tree-view details[open] > summary:before {
    content: "-";
  }
  
  ul.tree-view details > summary::marker,
  ul.tree-view details > summary::-webkit-details-marker {
    content: "";
  }
  
  pre {
    display: block;
    background: var(--button-highlight);
    box-shadow: var(--border-field);
    padding: 12px 8px;
    margin: 0;
  }
  
  code,
  code * {
    font-family: monospace;
  }
  
  summary:focus {
    outline: 1px dotted #000000;
  }

  