:root{
  --vivid:#ff3eb0;
  --small:.5em;
  --glide:0;
}
*{box-sizing: border-box;}
body{
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0;
  font-size: 30px;
  color: #eee;
  background:#333;
  font-family: ete-mono;
  flex-wrap: wrap;
}
a{color:var(--vivid); text-decoration: none;}
section{
  width: 70%;
  height: 5em;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
}
.metter-box{
  width: 50%;
  display: flex;
  align-items: center;
}
input, button{
  font-family: inherit;
  color: inherit;
}
input, button, meter{
  margin:0 2px;
}
.line{
  width: min(90%,80em);
}
.melody-input{
  width: 100%;
  font-size: inherit;
  padding:10px;
  border: 0;
  background:#222;
}
.labels{
  padding:2px;
  margin-bottom: 5px;
  width:100%;
  font-size: var(--small);
}
.label{
  display: inline-block;
  border-width:0 0 1px 0px;
  color:#777;
  margin-right:.5ch;
  border-style: solid;
  position: relative;
}
.label:before{
  content:"";
  bottom:-3px;
  left: 0;
  position: absolute;
  width: calc(100% - 1px);
  height:3px;
  border:1px solid;
  border-width:0px 1px;
}
.label.error{
  color: orange;
}
.label.mel{position: relative;}
.label.mel::after{
  content:"";
  width:.1em;
  height:2.5em;
  top: 2em;
  left: calc(var(--step) * 2ch  + .8ch);
  transition:  opacity 1s linear, left calc(var(--glide)* 1s) linear;
  background: var(--vivid);
  position: absolute;
  z-index: 2;
  pointer-events: none;
  opacity: 0;
}
.line.playing .label.mel::after{
  opacity: 1;
}
.line.playing .label.mel.endline::after{
  transition: none;
}
button{
  cursor: pointer;
  background:url(../img/circle.svg) no-repeat center;
  background-size: contain;
  border: 0;
  width: 30px;
  height:30px;
  margin:var(--small);
  animation: spin 15s linear 0s infinite forwards;
  animation-play-state: paused;
}
button.play{
  animation-play-state: running;
}
@keyframes spin{
  100% {transform:rotate(360deg);}
}
.small{
  width: 4em !important;
}
.note{
  width:20%;
  text-align: center;
  font-size: var(--small);
}
.info{
  position: absolute;
  right: 1em;
  bottom: 0;
  font-size: var(--small);
}
meter{
  height: 10px;
  border-radius: 5px;
  background: #222;
  width: 100%;
}
meter::-webkit-meter-optimum-value {
  background: var(--vivid);
}
meter::-moz-meter-bar { /* Firefox Pseudo Class */
  background: var(--vivid);
}
.log{
  position: absolute;
  bottom: 0;
  right: 0;
  width: 100%;
  font-size: var(--small);
}
input:focus {outline:none;}
::selection{color: var(--vivid);background:black;}