/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}
body {
  line-height: 1;
}
ol,
ul {
  list-style: none;
}
blockquote,
q {
  quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
  content: '';
  content: none;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
* {
  box-sizing: border-box;
}
:root {
  --palette-primary-stroke: #eebbc3;
  --palette-primary-stroke-hc: #f6dde1;
  --palette-primary-background: #232946;
  --palette-secondary-stroke: #232946;
  --palette-secondary-background: #eebbc3;
}
:root {
  --root-font-size: 100%;
  --body-font: "Source Sans Pro", sans-serif;
  --body-font-size: 1em;
}
:root {
  font-size: var(--root-font-size);
  font-family: var(--body-font);
  color: var(--palette-primary-stroke);
  background-color: var(--palette-primary-background);
}
body {
  font-size: var(--body-font-size);
}
a,
a:visited {
  font-weight: 700;
  text-decoration: none;
  color: var(--palette-primary-stroke-hc);
}
a:hover {
  text-decoration: underline;
}
.link--home {
  position: absolute;
  top: 1em;
  left: 1em;
  display: block;
}
h1 {
  font-size: 1.5rem;
  margin: auto;
  margin-top: 1rem;
  width: max-content;
}
h2,
h3,
h4 {
  max-width: 40rem;
}
h2 {
  margin-top: 1rem;
  font-size: 1.1rem;
  font-weight: 700;
}
h3 {
  margin-top: 0.5rem;
  font-size: 1rem;
  font-weight: 700;
}
h3:first-child {
  margin-top: 0;
}
h4 {
  margin-top: 0.5rem;
  padding-bottom: 0.25rem;
  font-size: 0.9rem;
  font-style: italic;
}
h4:first-child {
  margin-top: 0;
}
strong {
  font-weight: 700;
}
em {
  font-style: italic;
}
input,
select,
button {
  font-size: var(--body-font-size);
  font-family: var(--body-font);
}
details {
  margin-top: 1em;
}
summary {
  font-weight: 700;
}
.form {
  display: flex;
  flex-direction: column;
  align-items: start;
  margin: auto;
  margin-top: 1rem;
  padding: 0.5rem;
}
.form__section {
  display: none;
}
.form__section--active {
  display: block;
}
.form__label {
  display: block;
  margin-top: 0.5rem;
}
.form__label--checkbox {
  display: inline;
}
.form__label-details-low {
  margin-left: 1.6rem;
  margin-top: 0.3em;
  font-size: 0.8em;
}
.form__range-output {
  display: inline;
}
.form__input-number {
  margin-top: 0.25rem;
  padding: 0.25rem;
  width: 100%;
  border: 0.15rem var(--palette-primary-stroke) solid;
  border-radius: 0.25rem;
  color: var(--palette-secondary-stroke);
}
.form__button {
  display: block;
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  border: 0.15rem var(--palette-primary-stroke) solid;
  border-radius: 0.2rem;
  background-color: var(--palette-secondary-background);
  padding: 0.5rem;
  margin-top: 0.5rem;
  color: var(--palette-secondary-stroke);
  transition-property: backround-color color;
  transition-duration: 0.15s;
  text-align: center;
}
.form__button:first-child {
  margin-top: 0;
}
.form__button:hover {
  background-color: var(--palette-primary-background);
  color: var(--palette-primary-stroke);
}
.form__button--submit {
  font-weight: 700;
  align-self: flex-end;
}
.form__button--submit-secondary {
  background-color: var(--palette-primary-background);
  color: var(--palette-primary-stroke);
  font-weight: 700;
  align-self: flex-start;
}
.form__button--submit-secondary:hover {
  background-color: var(--palette-primary-stroke);
  color: var(--palette-primary-background);
}
.form__file-upload-hidden-button {
  cursor: inherit;
  display: block;
  font-size: 0;
  filter: alpha(opacity=0);
  height: 0;
  width: 0;
  opacity: 0;
  position: relative;
  right: 0;
  text-align: right;
  top: 0;
}
.form__info {
  display: block;
}
.form__error {
  margin: 0.5rem;
  height: 1rem;
  color: var(--palette-primary-stroke);
}
.form__error:empty {
  display: none;
}
.form__fieldset {
  margin-top: 0.5rem;
  padding: 0.5rem;
  border: 0.15rem var(--palette-primary-stroke) solid;
  border-radius: 0.2rem;
  width: 100%;
}
.form__fieldset-legend {
  border: 0.15rem var(--palette-primary-stroke) solid;
  border-radius: 0.2rem;
  padding: 0.25rem;
}
.form__group-options {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.form__option--or {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  text-align: center;
  font-weight: 700;
}
.form__option--or::before,
.form__option--or.form__option--or::after {
  content: "";
  display: block;
  height: 1px;
  background-color: var(--palette-primary-stroke);
  margin-left: 1rem;
  margin-right: 1rem;
}
.form__radio-item {
  margin-top: 0.5rem;
}
.form p {
  max-width: 20em;
}
.page {
  grid-row: 1;
  grid-column: 1;
  padding-bottom: 10vh;
}
.modal {
  text-align: center;
}
.modal.error {
  color: #f55;
}
.visualiser {
  display: grid;
  width: 100vw;
  height: 100vh;
  padding: 1rem;
  margin: auto;
  grid-template-areas: "p" "l" "v";
  grid-template-columns: calc(100vmin - 4 * 1rem);
  grid-template-rows: max-content max-content calc(100vmin - 4 * 1rem);
  justify-content: center;
}
@media (portrait) {
  .visualiser {
    grid-template-columns: auto 100vmin auto;
    grid-template-rows: max-content max-content 100vmin;
  }
}
.visualiser__main {
  font-size: 0.8rem;
  display: grid;
  grid-template-rows: [hx-start vx-start] auto [hx-end v-start] 1fr [v-end vx-end];
  grid-template-columns: [vx-start hx-start] auto [vx-end v-start] 1fr [v-end hx-end];
  overflow: hidden;
}
.visualiser__axis {
  text-align: center;
  padding-block-end: 0.35rem;
  border-block-end: 1px solid var(--palette-primary-stroke-hc);
  margin-inline-start: 1.15rem;
}
.visualiser__axis--horizontal {
  grid-area: hx;
  max-height: 100%;
  position: relative;
}
.visualiser__axis--vertical {
  grid-area: vx;
  writing-mode: vertical-lr;
  position: relative;
}
.visualiser__axis-zero {
  content: '0';
  display: block;
  position: absolute;
}
.visualiser__axis-zero--horizontal {
  inset-block-start: 0.2rem;
  inset-inline-start: -0.5ch;
}
.visualiser__axis-zero--vertical {
  inset-inline-start: calc(1ch + 0.1rem);
  inset-block-start: -0.5em;
  writing-mode: horizontal-tb;
}
.visualiser__axis-zero::before {
  content: "";
  display: block;
  position: absolute;
}
.visualiser__axis-zero--horizontal::before {
  height: 0.2em;
  width: 1px;
  background-color: var(--palette-primary-stroke-hc);
  left: calc(50%);
  bottom: -0.2em;
}
.visualiser__axis-zero--vertical::before {
  width: 0.2em;
  background-color: var(--palette-primary-stroke-hc);
  height: 1px;
  top: calc(50%);
  right: -0.3em;
}
.visualiser__plot {
  grid-area: v;
  width: 100%;
}
.visualiser__info {
  font-size: 0.8em;
  grid-area: p;
  display: grid;
}
.visualiser__controls {
  margin-left: auto;
}
.visualiser__legend {
  font-size: 0.8rem;
  display: grid;
}
.visualiser__legend-item-name {
  font-size: 0.7rem;
  font-weight: 700;
}
.visualiser__legend-item-key {
  display: flex;
  margin-top: 0.25em;
}
.visualiser__legend-item-key-name {
  margin-inline-end: 0.25rem;
}
.visualiser__legend-item-key-gradient {
  content: "";
  height: 1em;
  width: 3em;
  margin-inline-end: 0.25rem;
  border: 1px solid var(--palette-primary-stroke-hc);
  background: linear-gradient(to right, var(--color-similar), var(--color-diff));
}
.description {
  padding-left: 0.5em;
  padding-right: 0.5em;
}
.description p {
  margin-top: 0.5rem;
  max-width: 30rem;
  line-height: 1.2;
}
.description h1 + p {
  margin-top: 1rem;
}
.description h2 + p {
  margin-top: 0.25rem;
}
.batch {
  display: grid;
  grid-template-areas: "h h h h h";
  grid-template-columns: repeat(5, 1fr);
  gap: 0.5rem;
  row-gap: 1rem;
  padding: 0.5rem;
}
.batch--item {
  display: grid;
  gap: 0.5em;
  grid-template-rows: auto min-content min-content;
}
.batch canvas {
  max-width: 100%;
  align-self: end;
}
.batch h3 {
  overflow-wrap: anywhere;
  margin: 0;
  padding: 0;
}
.batch__header {
  grid-area: h;
}
.batch__header > h3 {
  font-size: 2em;
  margin: 0;
  padding: 0;
}
.batch__header > .link--home {
  position: static;
}
.batch details {
  align-self: end;
  font-size: 0.8em;
  margin: 0;
}
.batch details summary {
  padding-bottom: 0.2em;
}
.loading-status {
  display: grid;
  padding: 0.5em;
  margin: 0.25em;
  border: 0.15rem var(--palette-primary-stroke) solid;
  border-radius: 0.25rem;
  width: 100%;
  height: 7.5em;
  max-width: 30em;
  max-height: 100%;
  gap: 0.5em;
  grid-template-areas: "c c" "s s" "t p";
}
.loading-status__status {
  grid-area: s;
  font-size: 1.25em;
  margin: 0;
  height: 1em;
  line-height: 1;
}
.loading-status__task {
  grid-area: t;
  margin: 0;
  justify-self: end;
}
.loading-status__context {
  grid-area: c;
  justify-self: end;
  font-size: 0.9em;
  margin: 0;
}
.loading-status__percentage {
  grid-area: p;
  font-style: italic;
  line-height: 1;
  width: 2em;
  height: 1em;
  justify-self: start;
}
.loading-status__percentage:empty {
  grid-area: p;
  font-style: italic;
  line-height: 1;
  width: 0;
  height: 1em;
  justify-self: start;
}
.viewport-exact {
  min-width: 100%;
  min-height: 100vh;
  display: grid;
  place-items: center;
}
.hidden {
  display: none !important;
}
