:root {
  --color-beam: #B2FF8D;
  --color-main-bg: #18181B;
  --color-ship-head: #77CCF5;
  --color-ship-body: #09406C;
  --color-ship-body-lite: #236FAC;
  --color-ship-base: #F8F1DD;
  --ship-size: 25vmin;
  --ship-rotate: 15deg;
}

* {
  box-sizing: border-box;
}

html, body {
  height: 100%;
}

body {
  background-color: var(--color-main-bg);
  display: grid;
  place-items: center;
}

.ufo {
  display: flex;
  flex-direction: column;
  align-items: center;
  -webkit-transform: rotate(var(--ship-rotate));
          transform: rotate(var(--ship-rotate));
}

.ufo .head {
  background: linear-gradient(to right, white, white 5%, var(--color-ship-head) 50%, var(--color-ship-head));
  border-radius: 50% 50% 50% 50% / 75% 75% 25% 25%;
  box-shadow: inset rgba(0, 0, 0, 0.2) -2vmin -1vmin 2vmin;
  height: calc(var(--ship-size) / 1.5);
  margin-bottom: calc(var(--ship-size) * -0.25);
  position: relative;
  width: var(--ship-size);
  z-index: 4;
}

.ufo .body {
  background: linear-gradient(to right, var(--color-ship-body-lite), var(--color-ship-body-lite) 5%, var(--color-ship-body) 45%, var(--color-ship-body));
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  box-shadow: inset rgba(0, 0, 0, 0.25) -4vmin -1vmin 3vmin;
  height: calc(var(--ship-size) / 2);
  width: calc(var(--ship-size) * 2);
  z-index: 3;
}

.ufo .base {
  background: linear-gradient(to right, white, white 5%, var(--color-ship-base) 50%, var(--color-ship-base));
  border-radius: 100%;
  box-shadow: inset rgba(0, 0, 0, 0.2) -2vmin -1vmin 2vmin, var(--color-main-bg) 0 0 0 0.5vmin;
  height: calc(var(--ship-size) / 1.5);
  margin-top: calc(var(--ship-size) * -0.55);
  width: calc(var(--ship-size) / 1.5);
  z-index: 2;
}

.ufo .beam {
  background: linear-gradient(to bottom, var(--color-beam), transparent);
  box-shadow: inset rgba(0, 0, 0, 0.2) -8vmin -2vmin 3vmin;
  -webkit-clip-path: polygon(40% 0, 60% 0, 100% 100%, 0% 100%);
          clip-path: polygon(40% 0, 60% 0, 100% 100%, 0% 100%);
  height: calc(var(--ship-size) * 2);
  margin-top: calc(var(--ship-size) * -0.15);
  position: relative;
  width: var(--ship-size);
  z-index: 1;
}

.ufo .beam-bottom {
  background-color: var(--color-beam);
  border-radius: 100%;
  box-shadow: inset rgba(0, 0, 0, 0.2) -2vmin -2vmin 2vmin;
  height: calc(var(--ship-size) / 4);
  margin-top: calc(var(--ship-size) / -8);
  width: var(--ship-size);
  z-index: 1;
  -webkit-transform: rotate(calc(var(--ship-rotate) * -1));
          transform: rotate(calc(var(--ship-rotate) * -1));
}