@font-face {
  font-family: Michroma;
  src:
    url(https://manzdev.github.io/twitch-casio-pt1/michroma.woff2) format("woff2"),
    url(https://manzdev.github.io/twitch-casio-pt1/michroma.woff) format("woff");
  font-display: swap;
}

@font-face {
  font-family: Tourney;
  src:
    url(https://manzdev.github.io/twitch-casio-pt1/tourney.woff2) format("woff2"),
    url(https://manzdev.github.io/twitch-casio-pt1/tourney.woff) format("woff");
  font-display: swap;
}

@font-face {
  font-family: Raleway;
  src:
    url(/raleway.woff2) format("woff2"),
    url(/raleway.woff) format("woff");
  font-display: swap;
}

:root {
  --casio-bgcolor: #171e27;
  --casio-color: #909eb4;
}

.colorButtons {
  display: flex;
  justify-content: center;
  padding: 0 10px;
}

.colorButtons button {
    width: 25px;
    height: 25px;
    margin: 0 5px;
    border-radius: 5px;
    border: 2px solid var(--casio-color);
    background: var(--casio-bgcolor);
  }

body {
  transition: background 1s;
}

body.dark {
  background: #000;
  -webkit-animation: prepareSong 8s ease 8s alternate 3;
          animation: prepareSong 8s ease 8s alternate 3;
}

.thanos {
  width: 100px;
  -webkit-animation: moveThanos 5s linear infinite;
          animation: moveThanos 5s linear infinite;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 25;
  border-radius: 50%;
}

@-webkit-keyframes moveThanos {
  0%,
  100% { transform: translate(0, 0); }
  25% { transform: translate(90vw, 75vh); }
  50% { transform: translate(90vw, 0); }
  75% { transform: translate(0, 75vh); }
}

@keyframes moveThanos {
  0%,
  100% { transform: translate(0, 0); }
  25% { transform: translate(90vw, 75vh); }
  50% { transform: translate(90vw, 0); }
  75% { transform: translate(0, 75vh); }
}

@-webkit-keyframes prepareSong {
  0% { background: #000; }
  100% { background: #333; }
}

@keyframes prepareSong {
  0% { background: #000; }
  100% { background: #333; }
}

body.party {
  background: var(--body-color, #000);
}

.container {
  display: flex;
  justify-content: center;
  margin-top: 3em;
}

.casio-pt1 {
  display: flex;
  width: 900px;
  height: 250px;
  background: var(--casio-bgcolor);
  border-radius: 4px;
  font-family: Raleway, Arial, serif;
  font-weight: 400;
  font-size: 9px;
  color: var(--casio-color);
  padding: 8px 5px 5px 5px;
  box-shadow:
    0 2px 1px #fffc inset,
    1px 1px 0 #0001,
    1px 1px 0 var(--casio-bgcolor),
    2px 2px 0 #0003,
    2px 2px 0 var(--casio-bgcolor),
    4px 4px 0 #0005,
    4px 4px 0 var(--casio-bgcolor),
    6px 6px 0 #0006,
    6px 6px 0 var(--casio-bgcolor),
    8px 8px 0 #0007,
    8px 8px 0 var(--casio-bgcolor),
    8px 8px 4px #0005;
}

.casio-pt1 .casio-left {
    width: 200px;
    min-width: 200px;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    align-items: center;
  }

.casio-pt1 .casio-left .speaker-container {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 100%;
      height: 100%;
    }

.casio-pt1 .casio-left .speaker-container .speaker {
        width: 170px;
        height: 180px;
        background:
          repeating-linear-gradient(to bottom, #0003 0 2px, #0005 2px 3px, transparent 3px 7px),
          linear-gradient(
            to right,
            transparent 0 32%,
            var(--casio-bgcolor) 32% 35%,
            transparent 35% 66%,
            var(--casio-bgcolor) 66% 68%,
            transparent 68% 100%
          ),
          radial-gradient(circle, #0001 65%, transparent 65% 100%);
      }

.casio-pt1 .casio-left .speaker-bottom {
      width: 100%;
      height: 50px;
      display: flex;
    }

.casio-pt1 .casio-left .speaker-bottom .power {
        width: 60px;
        height: 90%;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
      }

.casio-pt1 .casio-left .speaker-bottom .power .led {
          width: 12px;
          height: 4px;
          background: #2f1f2a;
        }

.casio-pt1 .casio-left .speaker-bottom .power .led.on {
            background: #c01812;
          }

.casio-pt1 .casio-left .speaker-bottom .logo {
        display: flex;
        width: 100%;
        align-items: baseline;
      }

.casio-pt1 .casio-left .speaker-bottom .logo .brand {
          font-family: "Michroma", sans-serif;
          font-weight: bold;
          font-size: 16px;
          margin-left: 6px;
        }

.casio-pt1 .casio-left .speaker-bottom .logo .model {
          font-family: "Tourney", serif;
          font-weight: normal;
          font-size: 18px;
          margin-left: 6px;
        }

.casio-pt1 .casio-right {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    padding-right: 8px;
  }

.casio-pt1 .casio-right .casio-controls {
      min-height: 80px;
      border-top: 2px solid var(--casio-color);
    }

.casio-pt1 .casio-right .casio-controls .controls-label {
        display: flex;
        align-items: flex-end;
        font-size: 9px;
      }

.casio-pt1 .casio-right .casio-controls .controls-label .group {
          display: inline-flex;
          flex-direction: column;
          align-items: center;
        }

.casio-pt1 .casio-right .casio-controls .controls-label .group.buttons .semi.box {
              border-bottom: 0;
              border-radius: 2px 2px 0 0;
              padding: 2px 3px;
              position: absolute;
              height: 10px;
              transform: translate(-28px, -2px);
            }

.casio-pt1 .casio-right .casio-controls .controls-label .group.buttons .options {
              display: flex;
              align-items: flex-end;
            }

.casio-pt1 .casio-right .casio-controls .controls-label .group.buttons span:not(.fill)::after {
              content: "▪";
              display: block;
            }

.casio-pt1 .casio-right .casio-controls .controls-label .group.buttons .fill {
              margin: 0 2px;
              display: flex;
              justify-content: center;
              width: 5px;
              text-align: center;
            }

.casio-pt1 .casio-right .casio-controls .controls-label .group.buttons .arrow {
              width: 4px;
              margin: 0 6px;
            }

.casio-pt1 .casio-right .casio-controls .controls-label .group .box {
            display: inline-block;
            border: 1px solid var(--casio-color);
            border-radius: 2px;
            padding: 0 10px;
            font-size: 10px;
            margin: 4px;
          }

.casio-pt1 .casio-right .casio-controls .controls-label .group .box.last {
              margin-left: 2em;
            }

.casio-pt1 .casio-right .casio-controls .controls-label .group .fill {
            background: var(--casio-color);
            color: var(--casio-bgcolor);
          }

.casio-pt1 .casio-right .casio-controls .controls-label .group .options {
            display: flex;
          }

.casio-pt1 .casio-right .casio-controls .controls-label .group .options > span {
              display: inline-block;
              max-width: 26px;
              padding: 2px 5px;
              text-align: center;
            }

.casio-pt1 .casio-right .casio-controls .controls-label .group .options > span.inline {
                max-width: none;
                width: 42px;
              }

.casio-pt1 .casio-right .casio-controls .controls-label .group .options .volume {
              -webkit-clip-path: polygon(0 50%, 100% 15%, 100% 85%, 0 50%);
                      clip-path: polygon(0 50%, 100% 15%, 100% 85%, 0 50%);
            }

.casio-pt1 .casio-right .casio-controls .controls-label > :nth-child(4) .options {
          margin-left: 6px;
        }

.casio-pt1 .casio-right .casio-controls .controls-label > :nth-child(4) .options > span { width: 20px; }

.casio-pt1 .casio-right .casio-controls .controls-label > :nth-child(4) .options > span:nth-child(n+7) {
            transform: translateX(-3px);
          }

.casio-pt1 .casio-right .casio-controls .controls-buttons {
        width: 100%;
        height: 25px;
        margin: 4px 0;
      }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid {
          border: 1px solid #0004;
          border-bottom-color: #fff4;
          border-right-color: #fff4;
          width: 100%;
          height: 100%;
          background:
            linear-gradient(to bottom, var(--casio-bgcolor) 0 15%, transparent 15% 85%, var(--casio-bgcolor) 85% 100%),
            repeating-linear-gradient(to right, transparent 0 2px, #0004 2px 3px);
          display: flex;
          align-items: center;
        }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid > div {
            background: var(--casio-bgcolor);
            padding: 0 6px;
          }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid > div:nth-child(1) { margin-left: 32px; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid > div:nth-child(2) { margin-left: 36px; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid > div:nth-child(3) { margin-left: 38px; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid > div:nth-child(4) { margin-left: 36px; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid > div:nth-child(5) { margin-left: 38px; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .group {
            display: flex;
            justify-content: space-around;
          }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .group.buttons .button {
              margin: 0 10px;
            }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .group.end {
              margin-left: 24px;
            }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .group.end .big {
                margin: 0 4px;
              }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .button {
            display: inline-block;
            border: 0;
            width: 8px;
            height: 18px;
            background: black;
            box-shadow:
              1px 1px 2px #0006,
              1px 0 0 #fff5 inset;
          }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .button:active {
              box-shadow: 0 0 3px #0005 inset;
            }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .big.button {
            width: 26px;
            background-image:
              linear-gradient(to top, #44517a 0 20%, transparent 20% 80%, #44517a 80% 100%),
              repeating-linear-gradient(to top, transparent 0 1px, #0003 1px 2px);
          }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .steelblue { background: #44517a; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .orange { background: #b34431; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .gold { background: #b67523; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .green { background: #398d79; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .grey { background: #53586b; }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .slider {
            display: flex;
            align-items: center;
            height: 18px;
            border: 1px solid #0004;
            border-bottom-color: #fff7;
            border-right-color: #fff7;
            box-shadow: 2px 2px 2px #0003 inset;
          }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .slider input {
              display: none;
            }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .slider input + label {
              display: block;
              width: 12px;
              height: 8px;
              background: #000;
            }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .slider input:checked + label {
              height: 16px;
              background: transparent;
              display: flex;
              position: relative;
            }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .slider input:checked + label::before,
              .casio-pt1 .casio-right .casio-controls .controls-buttons .grid .slider input:checked + label::after {
                content: "";
                display: block;
                background: #444;
                width: 5px;
                border-radius: 1px;
                border-right: 1px solid #222;
                height: 16px;
                position: absolute;
              }

.casio-pt1 .casio-right .casio-controls .controls-buttons .grid .slider input:checked + label::after { right: 0; }

.casio-pt1 .casio-right .keys-container {
      display: flex;
      flex-direction: column;
      height: 100%;
      border-top: 4px solid var(--casio-color);
      position: relative;
    }

.casio-pt1 .casio-right .keys-container .name-keys {
        min-height: 15px;
        display: flex;
      }

.casio-pt1 .casio-right .keys-container .name-keys .key-name {
          width: 100%;
          text-align: center;
          position: relative;
        }

.casio-pt1 .casio-right .keys-container .name-keys .key-name[data-rhytm]::before {
            content: attr(data-rhytm);
          }

.casio-pt1 .casio-right .keys-container .name-keys .key-name:nth-child(9)::before {
              width: 200%;
              position: absolute;
              left: -50%;
            }

.casio-pt1 .casio-right .keys-container .name-keys .key-name:nth-child(9)::after {
              margin-top: 10px;
            }

.casio-pt1 .casio-right .keys-container .name-keys .key-name[data-rhytm]::after {
            content: "|";
            display: block;
          }

.casio-pt1 .casio-right .keys-container .name-keys .instrument-type {
          font-size: 8px;
          position: absolute;
          right: 0;
        }

.casio-pt1 .casio-right .keys-container .keys {
        min-height: 135px;
        position: relative;
        box-shadow: 0 1px 0 1px #1113;
      }

.casio-pt1 .casio-right .keys-container .keys .black-keys {
          position: absolute;
          top: 0;
          left: 0;
          width: 100%;
          height: 73px;
          display: flex;
          justify-content: space-evenly;
        }

.casio-pt1 .casio-right .keys-container .keys .black-keys .black.key {
            grid-area: key;
            width: 22px;
            height: 100%;
            background-color: #111;
            background-image:
              linear-gradient(to right, #111 0 2px, transparent 2px),
              linear-gradient(to left, #111 0 2px, transparent 2px),
              linear-gradient(to top, transparent 0 3px, #fff8 4px 5px, transparent 8px);
            border: 1px outset #ccc;
            border-top: 0;
            border-bottom-left-radius: 4px;
            border-bottom-right-radius: 4px;
            position: relative;
            z-index: 10;
          }

.casio-pt1 .casio-right .keys-container .keys .black-keys .black.key:nth-child(2),
            .casio-pt1 .casio-right .keys-container .keys .black-keys .black.key:nth-child(4),
            .casio-pt1 .casio-right .keys-container .keys .black-keys .black.key:nth-child(7),
            .casio-pt1 .casio-right .keys-container .keys .black-keys .black.key:nth-child(9) {
              margin-right: 28px;
            }

.casio-pt1 .casio-right .keys-container .keys .black-keys .black.key:active,
            .casio-pt1 .casio-right .keys-container .keys .black-keys .black.key.active {
              z-index: 8;
              background-image:
                linear-gradient(to right, #111 0 2px, transparent 2px),
                linear-gradient(to left, #111 0 2px, transparent 2px),
                linear-gradient(to top, transparent 0 1px, #fff3 2px 3px, transparent 6px);
            }

.casio-pt1 .casio-right .keys-container .keys .white-keys {
          display: flex;
          height: 100%;
        }

.casio-pt1 .casio-right .keys-container .keys .white-keys .white.key {
            width: 100%;
            height: 136px;
            background: #fff;
            border: 1px solid #ccc;
            border-left: 2px solid #fff;
            border-right: 2px solid #ddd;
            border-top: 0;
            border-bottom-left-radius: 4px;
            border-bottom-right-radius: 4px;
            position: relative;
            z-index: 5;
            box-shadow: 0 2px 2px #0004;
          }

.casio-pt1 .casio-right .keys-container .keys .white-keys .white.key::after {
              content: "";
              display: block;
              background: linear-gradient(to bottom, #0006 0 1px, #0005 2px 10px, transparent 15% 100%);
              width: 100%;
              height: 100%;
              position: absolute;
              top: 0;
            }

.casio-pt1 .casio-right .keys-container .keys .white-keys .white.key:active,
            .casio-pt1 .casio-right .keys-container .keys .white-keys .white.key.active {
              transform: translate(2px, 0);
              z-index: 2;
              border-top: 2px solid #fff;
              box-shadow: 0 0 2px #0004;
            }

.casio-pt1 .casio-right .keys-container .keys .white-keys .white.key:active::after, .casio-pt1 .casio-right .keys-container .keys .white-keys .white.key.active::after {
                transform: translate(-2px, -2px);
              }

.casio-pt1 .casio-right .keys-container .note-keys {
        width: 100%;
        height: 100%;
        display: flex;
        font-size: 8px;
        justify-content: space-around;
        transform: translateY(3px);
        box-shadow: 0 5px 4px #0005 inset;
        border-right: 1px solid #fff2;
        border-top: 1px solid #0007;
        position: relative;
        top: -2px;
        left: -1px;
        padding: 0 1px;
      }

.created {
  background: 
    url(),
    linear-gradient(to bottom, #884ced, #ec1cce);
  background-size: 75px 75px, cover;
  background-repeat: no-repeat;
  position: absolute;
  top: 0;
  right: 0;
  width: 250px;
  height: 75px;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-left: 2em;
}

.created span,
  .created h2,
  .created p,
  .created a {
    font-family: Montserrat;
    margin: 0;
  }

.created a,
  .created p,
  .created span {
    color: #fff;    
  }

.created h2 {
    font-weight: 700;
    transform: translate(0, -4px);    
  }

.created a {
    -webkit-text-decoration-color: rgba(255,255,255,0.4);
            text-decoration-color: rgba(255,255,255,0.4);
  }

.created a:hover {
    color: #e6e82a;
  }