*,
*::after,
*::before {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  font-family: sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
    'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue';
}

a {
  -webkit-tap-highlight-color: transparent;
}

html {
  scroll-behavior: smooth;
  scrollbar-width: thin;
  scrollbar-color: transparent transparent;
}

body {
  height: 100vh;
  width: 100%;
  background-image: radial-gradient(125% 125% at 50% 10%, #fff 40%, #6366f1 100%);
}

.cartoon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 80vmin;
  height: 80vmin;
}

span {
  position: absolute;
  left: -1000px;
  clip: rect(0, 0, 0, 0);
  width: 0;
  height: 0;
  overflow: hidden;
}

.cartoon div,
.cartoon label {
  position: absolute;
  box-sizing: border-box;
}

.b {
  border: 1vmin solid black;
}

.r {
  border-radius: 100%;
}

.hb::before,
.ha::after {
  content: '';
  display: block;
  position: absolute;
}

/****/
.radar {
  left: 5%;
  top: 10%;
  width: 90%;
  height: 90%;
  background: linear-gradient(135deg, #ddd, #ccc);
  box-shadow: inset -0.25vmin 0 0.5vmin rgba(0, 0, 0, 0.25),
    inset 0.25vmin 0 0.5vmin rgba(255, 255, 255, 0.5),
    inset 0.125vmin 0 0.5vmin rgba(0, 0, 0, 0.15),
    inset 0 0 4vmin 2vmin rgba(255, 255, 255, 0.7);
}

.radar::before {
  width: 88%;
  height: 88%;
  border-radius: 50%;
  top: 6%;
  left: 6%;
  background: linear-gradient(45deg, #ccc, #ddd);
  box-shadow: -0.5vmin 0vmin 1vmin rgba(255, 255, 255, 0.5),
    2.5vmin 2.5vmin 2vmin rgba(0, 0, 0, 0.05),
    inset -0.25vmin 0 rgba(255, 255, 255, 0.3),
    inset 0.25vmin 0 rgba(0, 0, 0, 0.075);
}

.radar::after {
  width: 60%;
  height: 37%;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  background: linear-gradient(
    rgba(255, 255, 255, 0.26),
    rgba(255, 255, 255, 0) 60%
  );
  top: 10%;
  left: 50%;
  transform: translate(-50%, 0);
}

.screen {
  width: 86%;
  height: 86%;
  top: 7%;
  left: 7%;
  background: #10c310;
  background-image: linear-gradient(transparent 98%, rgba(0, 0, 0, 0.7) 0),
    linear-gradient(to right, transparent 98%, rgba(0, 0, 0, 0.7) 0),
    radial-gradient(lime, green);
  background-size: 100% 8%, 8% 100%, 100% 100%;
  background-position: center center;
  box-shadow: inset 0 0 2vmin 0.5vmin rgba(0, 80, 0, 0.85),
    inset -8vmin -10vmin 10vmin 12vmin rgba(0, 0, 0, 0.2),
    inset 0.25vmin 0.125vmin rgba(0, 0, 0, 0.5),
    inset 0 0 4vmin 2vmin rgba(220, 255, 220, 0.2);
}

.triangle {
  border: 2vmin solid transparent;
  border-bottom: 3vmin solid #bb0000;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -75%);
  filter: drop-shadow(0vmin 0vmin 0.5vmin #f007);
}

.triangle.nesw {
  border: 1.5vmin solid transparent;
  border-bottom: 2vmin solid #cccc00;
  filter: drop-shadow(0vmin 0vmin 0.75vmin #ee0a);
}

.north {
  top: 6%;
}

.east {
  left: auto;
  right: 6%;
  transform: translate(75%, -50%) rotate(90deg);
}

.south {
  top: 94%;
  transform: translate(-50%, -25%) rotate(180deg);
}

.west {
  left: 6%;
  transform: translate(-75%, -50%) rotate(-90deg);
}

.button {
  width: 18%;
  height: 15%;
  top: -3%;
  left: 50%;
  transform: translate(-50%, 0);
}

.neck {
  width: 40%;
  height: 75%;
  bottom: 0;
  left: 50%;
  transform: translate(-50%, 0);
  background: linear-gradient(#777 30%, #ddd, #ccc 50%, #777 70%);
  box-shadow: inset 0 6vmin 3vmin -2vmin rgba(0, 0, 0, 0.23),
    inset -0.1vmin 0 0.5vmin rgba(0, 0, 0, 0.25),
    inset -2vmin 0 2vmin rgba(255, 255, 255, 0.7),
    inset 0.125vmin 0 0.5vmin rgba(0, 0, 0, 0.1),
    inset 2vmin 0 1.25vmin rgba(255, 255, 255, 0.5),
    inset 0 0 4vmin 2vmin rgba(255, 255, 255, 0.9);
}

.clickable {
  width: 85%;
  height: 50%;
  left: 50%;
  transform: translate(-50%, 0);
  top: 0;
  border-radius: 0.5vmin 0.5vmin 0.25vmin 0.25vmin;
  background-image: linear-gradient(
      to right,
      transparent 90%,
      rgba(0, 0, 0, 0.25) 0
    ),
    linear-gradient(135deg, #ddd, #ccc);
  background-size: 4% 100%, 100% 100%;
  box-shadow: inset -0.5vmin 0 0.5vmin rgba(0, 0, 0, 0.1),
    inset -2vmin 0 2vmin rgba(255, 255, 255, 0.5),
    inset 0.25vmin 0 0.5vmin rgba(255, 255, 255, 0.5),
    inset 0.125vmin 0 1vmin rgba(0, 0, 0, 0.15),
    inset 4vmin 0 2vmin rgba(255, 255, 255, 0.8),
    inset 0 0 4vmin 2vmin rgba(255, 255, 255, 0.7);
  box-shadow: inset -0.25vmin 0 0.5vmin rgba(0, 0, 0, 0.1),
    inset -1vmin 0 1vmin rgba(255, 255, 255, 0.55),
    inset 2vmin 0 2.5vmin rgba(255, 255, 255, 0.5),
    inset 0.125vmin 0 1vmin rgba(0, 0, 0, 0.15),
    inset -0.5vmin 0 0.5vmin -0.25vmin rgba(0, 0, 0, 0.25),
    inset 0.25vmin 0 0.5vmin rgba(255, 255, 255, 0.5),
    inset 0.125vmin 0 0.5vmin rgba(0, 0, 0, 0.15),
    inset 0 0 4vmin 2vmin rgba(255, 255, 255, 0.7),
    0 3vmin 0.75vmin -2.85vmin rgba(0, 0, 0, 0.4);
  transition: top 0.075s;
  cursor: pointer;
}

.clickable:active {
  top: 2vmin;
  transition: top 0.125s;
}

.base {
  width: 100%;
  height: 30%;
  bottom: 0%;
  background: red;
  border-radius: 40% 40% 0 0;
  background: linear-gradient(#ddd, #777);
  box-shadow: inset 0.125vmin 0 0.5vmin rgba(0, 0, 0, 0.1),
    inset 0.25vmin 0 0.75vmin white, inset -0.25vmin 0 0.5vmin rgba(0, 0, 0, 0.35),
    inset 0.25vmin 0 2.5vmin rgba(255, 255, 255, 0.5),
    inset 0.125vmin 0 0.5vmin rgba(0, 0, 0, 0.15),
    inset 0 0 4vmin 2vmin rgba(255, 255, 255, 0.7);
}

@keyframes blink {
  0% {
    opacity: 0;
  }
  70%,
  100% {
    opacity: 0.9;
  }
}

.ball {
  width: 4%;
  height: 4%;
  opacity: 0.9;
  background: #fb0;
  background-image: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.15));
  top: 30%;
  left: 70%;
  filter: blur(0.125vmin);
  animation: blink 1.5s infinite;
}

.ball + .ball {
  left: 40%;
  top: 60%;
}
