@charset "utf-8";
@font-face { font-family: trade; src: url('../fonts/trade.otf'); }
@font-face { font-family: sonder; src: url('../fonts/sonder.otf'); }

body {
  margin: 0px;
  background-color: #FFFFFF;
  -webkit-touch-callout: none; /* iOS Safari */
  -webkit-user-select: none; /* Safari */
  -khtml-user-select: none; /* Konqueror HTML */
  -moz-user-select: none; /* Firefox */
  -ms-user-select: none; /* Internet Explorer/Edge */
  user-select: none;
  font-family: trade;
}

.touch-ignore {
  pointer-events: none;
}

#template {
  display: none;
}

.hidden {
  display: none;
}

#stage {
  position: absolute;
  width: 920px;
  height: 690px;
  background-color: #06032d;
  overflow: hidden;
}

.stageTitle {
  box-sizing: border-box;
  height: 70px;
  text-align: center;
  font-size: 28px;
  color: white;
  text-transform: uppercase;
  line-height: 33px;
  padding: 16px 20px 20px 13px;
  background: #02b5be;
}

.mainStage {
  position: relative;
  box-sizing: border-box;
  width: 100%;
  height: calc(100% - 70px);
  padding: 10px;
}

.viewPanel {
  display: inline-block;
  position: relative;
  width: 580px;
  height: 100%;
  vertical-align: top;

}

.viewPanel .info {
  position: relative;
  width: 100%;
  height: calc(100% - 544px);
  text-align: center;
}

.viewPanel .grid {
  position: relative;
  box-sizing: border-box;
  width: 100%;
  height: 544px;
  border: solid 2px rgba(74, 144, 226, 1);
}

.viewPanel .grid svg {
  position: absolute;
}

.gridLabel {
  position: absolute;
  font-size: 10pt;
  font-weight: bold;
  color: rgba(74, 144, 226, 1);
  transform: translate(3px, 1px);
}
.gridLabel.horizontal {transform: translate(-50%, 1px);}
.gridLabel.vertical {transform: translate(calc(-100% - 3px), -50%);}

.gridFlag {
  position: absolute;
  z-index: 2;
  width: 26px;
  height: 10px;
  transform-origin: 50% 0%;
  transform: translateX(-50%);
  -webkit-mask-image: url('../svg/flagArrow.svg');
}
.gridFlag.line{-webkit-mask-image: url('../svg/flagArrowLine.svg');}
.gridFlag.teal {background-color: #009d87;}
.gridFlag.magenta {background-color: #db096b;}
.gridFlag.purple {background-color: #9013FE;}

.gridFlag.left {transform: translateX(-50%) rotate(-90deg);}
.gridFlag.right {transform: translateX(-50%) rotate(90deg);}
.gridFlag.bottom {transform: translateX(-50%) rotate(180deg);}

.controlPanel {
  position:  relative;
  display: inline-block;
  box-sizing: border-box;
  width: calc(100% - 580px);
  height: 100%;
  color: #FFF;
  padding-left: 10px;
}

.controlPanel .button{
  width: 100%;
  margin-top: 5px;
}

.controlPanel .panel {
  position: relative;
  width: 100%;
  margin-top: 5px;
}
.controlPanel .panel:first-child{margin-top: 0;}

.panel.reflect, .panel.translate {
  text-align: center;
}

.controlPanel .title {
  font-size: 16pt;
  font-weight: bold;
  margin-bottom: 5px;
}

.angleButtonContainer {
  display: inline-block;
  width: 180px;
}

.radioButtonContainer {
  display: inline-block;
  width: 90px;
  margin-bottom: 2px;
}

.radioButtonContainer .radioButton {
  display: inline-block;
  box-sizing: border-box;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: solid 2px #FFF;
  text-align: left;
}
.radioButtonContainer.on .radioButton::after {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  margin: 2px;
  border-radius: 50%;
  background: #FFF;
  pointer-events: none;
}

.radioButtonContainer .label {
  display: inline-block;
  margin-left: 5px;
  line-height: 24px;
  vertical-align: top;
  font-size: 12pt;
  font-weight: bold;
}

.directionToggleContainer {
  display: inline-block;
  width: calc(100% - 180px);
  vertical-align: top;
  text-align: center;
}

.directionToggle {
  display: inline-block;
  position: relative;
  width: 92px;
  height: 50px;
  border-radius: 28px;
  border: solid 2px #FFF;
  text-align: left;
}
.directionToggle::before {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,.4);
  -webkit-mask-image: url('../svg/clockwise.svg');
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: 53px 11px;
  /* -webkit-mask-size: 24px; */
}
.directionToggle.on::before {
  transform: scaleX(-1);
}

.directionToggle .switch {
  box-sizing: border-box;
  position: relative;
  width: 46px;
  height: 46px;
  margin: 2px;
  border-radius: 50%;
  border: solid 2px #FFF;
  transition: left .2s;
}
.directionToggle.on .switch {float: right;}
.directionToggle .switch::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  background: #FFF;
  -webkit-mask-image: url('../svg/clockwise.svg');
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: 7px 7px;
  /* -webkit-mask-size: 24px; */
  transform: scaleX(-1);
}
.directionToggle.on .switch::after {transform: none;}

.sliderContainer {margin-top: 5px;}
.sliderContainer:first-child {margin-top: 0;}

.sliderBox {
  display: inline-block;
  width: 240px;
}

.slider {margin: 9px 0;}

.valueCallout {
  font-size: 12pt;
  font-weight: bold;
}

.transformationList {
  margin-top: 0px;
  font-size: 11pt;
  font-weight: bold;
  line-height: 14pt;
  -webkit-margin-before: 5px;
  -webkit-margin-after: 5px;
  -webkit-padding-start: 25px;
}

.feedbackBox {
  position: absolute;
  bottom: 0px;
  background: white;
  font-weight: 700;
  font-size: 11pt;
  line-height: 14pt;
  text-align: left;
  padding: 6px 10px 6px 10px;
  box-sizing: border-box;
  color: #000;
  border-radius: 4px;
  border: 1px solid #888;
  transition: bottom .4s;
  margin-top: 10px;
}
.feedbackBox.correct {color: #8bb13f;}
.feedbackBox.incorrect {color: #c71f02;}
.feedbackBox.offscreen {bottom: -20%;}

.triangle {
  position: absolute;
  width: 100%;
  height: 100%;
  overflow: hidden;
  /*transition: opacity .4s;*/
}
.triangle.invisible {
  opacity: 0;
}
.triangle.magenta {
  pointer-events: none;
}

.handle{position: absolute;}
.handle::before{
  content: "";
  position: absolute;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  transform: translate(-50%, -50%);
}
.handle.hide::before{opacity: 0;}
/*.teal .handle::before{background-color: #009d87;}
.magenta .handle::before{background-color: #db096b;}
.purple .handle::before{background-color: #9013FE;}*/
.teal .handle.active:active::before {background-color: #4CBA81;}
.magenta .handle.active.active::before {background-color: #E5526E;}
.purple .handle.active.active::before {background-color: #B159D5;}


.handle::after {
  content: "";
  cursor: pointer;
  position: absolute;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  transform: translate(-25%, -25%);
}

.handle .label {
  position: absolute;
  font-size: 14pt;
  font-weight: bold;
  font-style: italic;
  transform: translate(-50%, -50%);
  pointer-events: none;
  transition: opacity .4s;
}
.noLabels .handle .label, .handle.hide .label {opacity: 0;}
.teal .label{color: #009d87;}
.magenta .label{color: #db096b;}
.purple .label{color: #9013FE;}

.button {
  display:inline-block;
  position:relative;
  background: rgba(158, 0, 251, 1);
  font-weight: 900;
  border-bottom:2px solid rgba(0,0,0,0.18);
  margin-right: 20px;
  min-height: 32px;
  box-sizing:border-box;
  cursor:pointer;
  border-radius:6px;
  padding: 8px 18px;
  font-size: 20px;
  text-align: center;
  color: #fff;
}
.button:last-child {margin-right: 0;}
.button.disable {
  background: rgba(96, 0, 168, 0.33);
  pointer-events: none;
}
.button:not(.disable):hover {background: #B940FF;}
.button:not(.disable):active {
  background: #59008C;
  border-bottom-width: 1px;
  transform: translateY(1px);
}
.info .button{width: 140px;margin-top: 0px;}