<div class="wrapper">
    <div class="skeleton">
      <div class="head">
        <div class="head-hemispheres"></div>
        <div class="eye-shadow eye-shadow-left"></div>
        <div class="eye eye-left"></div>
        <div class="eye-shadow eye-shadow-right"></div>
        <div class="eye eye-right"></div>
        <div class="nose"></div>
        <div class="nose-shadow"></div>
        <div class="mouth">
          <div class="teeth teeth-left"></div>
          <div class="teeth teeth-right"></div>
        </div>
      </div>
      <div class="below-head-container">
        <div class="backbone"></div>
        <div class="body">
          <div class="body-inner">
            <div class="main-bone"></div>
            <div class="shoulder"></div>
            <div class="rib-cage rib-cage-1"></div>
            <div class="rib-cage rib-cage-2"></div>
            <div class="kidney-cover"></div>
            <div class="kidney kidney-left"></div>
            <div class="kidney kidney-right"></div>
            <div class="hand hand-left">
              <div class="hand-top"></div>
              <div class="arm"></div>
              <div class="arm-below-container">
                <div class="forearm"></div>
                <div class="wrist"></div>
                <div class="finger finger-pinky"></div>
                <div class="finger finger-thumb"></div>
                <div class="finger finger-ring"></div>
                <div class="finger finger-index"></div>
              </div>
            </div>
            <div class="hand hand-right">
              <div class="hand-top"></div>
              <div class="arm"></div>
              <div class="arm-below-container">
                <div class="forearm"></div>
                <div class="wrist"></div>
                <div class="finger finger-pinky"></div>
                <div class="finger finger-thumb"></div>
                <div class="finger finger-ring"></div>
                <div class="finger finger-index"></div>
              </div>
            </div>
          </div>
          <div class="feet-container">
            <div class="foot foot-left">
              <div class="thigh"></div>
              <div class="leg leg-left"></div>
              <div class="shoe"></div>
            </div>
            <div class="foot foot-right">
              <div class="thigh"></div>
              <div class="leg leg-right"></div>
            </div>
          </div>
        </div>
      </div>
      <div class="shadow"></div>
    </div>
  </div>
:root {
  --color-background: #837391;
  --color-primary: #D8D1C0;
  --color-secondary: #A99378;
  --color-tertiary: #272728;
  --color-shadow: #695C74;
  font-size: 0.9vw;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

*::after, *::before { content: ""; }

body {
  background: var(--color-background);
  height: 100vh;
  overflow:hidden;
}

.wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  width: 100%;
}

.skeleton {
  width: 12rem;
  height: 20rem;
  position: relative;
}

/* Head */

.head {
  position: absolute;
  top: 0;
  width: 100%;
  height: 43%;
  animation: skeletonJump 0.5s 4s ease-in-out forwards;
}

.head::before {
  position: absolute;
  top: 0.1rem;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 30%;
  height: 50%;
  background: var(--color-primary);
  z-index: -2;
}

.head-hemispheres {
  position: absolute;
  width: 100%;
  height: 85%;
  overflow: hidden;
  z-index: -2;
}

.head-hemispheres::before, .head-hemispheres::after {
  width: 75%;
  height: 110%;
  position: absolute;
  border-radius: 50%;
  background: var(--color-primary);
}

.head-hemispheres::before {
  left: 0;
}

.head-hemispheres::after {
  right: 0;
}

.eye {
  position: absolute;
  width: 2.8rem;
  height: 2.8rem;
  background: var(--color-tertiary);
  border-radius: 50%;
  bottom: 30%;
  z-index: 2;
}

.eye-shadow {
  position: absolute;
  bottom: calc(30% + 0.3rem);
  width: 2.8rem;
  height: 2.8rem;
  border-radius: 50%;
  background: var(--color-secondary);
  z-index: 1;
}

.eye-left, .eye-shadow-left {
  left: 20%;
  animation:
    faceX1 0.7s 1s forwards,
    faceX2 0.7s 1.8s ease-out forwards,
    faceX3 0.7s 2.7s forwards;
}

.eye-right, .eye-shadow-right {
  right: 20%;
  animation:
    faceX1 0.7s 1s forwards,
    faceX2 0.7s 1.8s forwards,
    faceX3 0.7s 2.7s ease-out forwards;
}

.nose {
  position: absolute;
  bottom: 20%;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 1.3rem;
  height: 0.7rem;
  background: var(--color-tertiary);
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
  z-index: 1;
  animation:
    faceX1 0.7s 1s forwards,
    faceX2 0.7s 1.8s forwards,
    faceX3 0.7s 2.7s forwards;
}

.nose-shadow {
  position: absolute;
  bottom: 20%;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 1.3rem;
  height: 1.1rem;
  background: var(--color-secondary);
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
  animation:
    faceX1 0.7s 1s forwards,
    faceX2 0.7s 1.8s forwards,
    faceX3 0.7s 2.7s forwards;
}

.mouth {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin: 0 auto;
  background: var(--color-primary);
  width: 50%;
  height: 16%;
  clip-path: polygon(0 0, 100% 0, 90% 100%, 10% 100%);
}

.teeth {
  position: absolute;
  bottom: 0;
  width: 0.4rem;
  height: 1rem;
  background: var(--color-secondary);
  border-radius: 3rem 3rem 0 0;
  animation:
    faceX1 0.7s 1s forwards,
    faceX2 0.7s 1.8s forwards,
    faceX3 0.7s 2.7s forwards;
}

.teeth-left {
  left: 34%;
}

.teeth-right {
  right: 34%;
}

/* backbone and body */

.below-head-container {
  width: 75%;
  left: 12.5%;
  position: absolute;
  height: 57%;
  bottom: 0;
}

.backbone {
  position: absolute;
  left: 0;
  right: 0;
  margin: 0 auto;
  top: 0;
  height: 45%;
  width: 1rem;
  background: var(--color-secondary);
  animation: skeletonJump 0.5s 4s ease-in-out forwards;
}

.backbone::before {
  position: absolute;
  top: 20%;
  left: 50%;
  transform: translateX(-50%);
  width: calc(100% + 3rem);
  border-radius: 1rem;
  height: 90%;
  background: var(--color-secondary);
}

.body {
  position: absolute;
  top: calc(0.2 * 45%);
  height: 100%;
  width: 100%;
  z-index: 1;
}

/* Primary Body Skeleton */

.body-inner {
  position: absolute;
  top: 0;
  width: 100%;
  height: 62%;
  animation: skeletonJump 0.5s 4s ease-in-out forwards;
}

.main-bone {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 1rem;
  height: 95%;
  background: var(--color-primary);
}

.shoulder {
  position: absolute;
  top: 0;
  width: 100%;
  height: 2.2rem;
  border-radius: 2rem;
  background: var(--color-primary);
  clip-path: polygon(0 0, 100% 0, 100% 50%, 0 50%);
}

.rib-cage {
  position: absolute;
  width: 1rem;
  height: 0.8rem;
  left: 0;
  right: 0;
  margin: 0 auto;
}

.rib-cage-1 {
  top: 1.5rem;
}

.rib-cage-2 {
  top: 2.8rem;
}

.rib-cage::before {
  position: absolute;
  top: 50%;
  left: 100%;
  height: 100%;
  width: 2.7rem;
  background: var(--color-primary);
  transform: skew(0, 10deg);
}

.rib-cage::after {
  position: absolute;
  top: 50%;
  right: 100%;
  height: 100%;
  width: 2.7rem;
  background: var(--color-primary);
  transform: skew(0, -10deg);
}

.kidney-cover {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 5.7rem;
  height: 5.7rem;
  border-radius: 50%;
  opacity: 1;
  z-index: 1;
  background: var(--color-primary);
  clip-path: polygon(0 80%, 100% 80%, 100% 100%, 0 100%);
}

.kidney {
  position: absolute;
  bottom: -0.3rem;
  width: 2.8rem;
  height: 1.5rem;
  background: red;
  border-radius: 1rem;
  background: var(--color-primary);
  z-index: 1;
}

.kidney-left {
  right: 50%;
  transform-origin: right center;
  transform: rotate(35deg);
}

.kidney-right {
  left: 50%;
  transform-origin: left center;
  transform: rotate(-35deg);
}

/* Hands */

.hand {
  position: absolute;
  top: 0;
  width: 1.5rem;
  height: calc(100% + 1.5rem);
}

.hand-left { left: -1.4rem; }

.hand-right { right: -1.4rem; }

.hand-top {
  position: absolute;
  top: 0;
  width: 0.9rem;
  height: 0.9rem;
  border-radius: 50%;
  left: 50%;
  transform: translateX(-50%);
  background: var(--color-primary);
}

.arm, .forearm {
  position: absolute;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 1rem;
  height: 2.2rem;
  background: var(--color-primary);
}

.arm {
  top: 0.5rem;
  transform-origin: top center;
  clip-path: polygon(20% 0, 80% 0, 100% 100%, 0 100%);
}

.arm-below-container {
  position: absolute;
  top: 2.9rem;
  height: 100%;
  width: 100%;
  transform-origin: top center;
}

.hand-left .arm {
  animation:
    armRotate1 0.3s 1s forwards,
    armRotate2 0.3s 1.4s forwards,
    armRotate3 0.3s 1.8s forwards,
    armRotate6 0.3s 3.4s forwards,
    armRotate7 0.3s 3.8s forwards;
}

.hand-right .arm {
  animation:
    armRotate4 1.2s 1.8s forwards,
    armRotate5 0.3s 3s forwards;
}

.hand-left .arm-below-container {
  animation:
    forearmRotate1 0.3s 1.0s forwards,
    forearmRotate2 0.3s 1.4s forwards,
    forearmRotate3 0.3s 1.8s forwards,
    forearmRotate6 0.3s 3.4s forwards,
    forearmRotate7 0.3s 3.8s forwards;
}

.hand-right .arm-below-container {
  animation:
    forearmRotate4 1.2s 1.8s forwards,
    forearmRotate5 0.3s 3s forwards;
}

.forearm {
  top: 0;
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
}

.wrist {
  position: absolute;
  top: 2.45rem;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 1rem;
  height: 0.7rem;
  background: var(--color-primary);
  border-radius: 1rem;
}

.finger-cover {
  position: absolute;
}

.finger {
  position: absolute;
  top: 3.4rem;
}

.hand-right .finger {
  transform: scaleX(-1);
  left: auto;
}

.finger-pinky { left: 0; }
.finger-ring { left: 0.4rem; }
.finger-index { left: 0.8rem; }
.finger-thumb {
  left: 1.3rem;
  top: 3.3rem;
}

.hand-right .finger-pinky { right: 0; }
.hand-right .finger-ring { right: 0.4rem; }
.hand-right .finger-thumb { right: 1.3rem; }
.hand-right .finger-index { right: 0.8rem; }

.finger::before {
  position: absolute;
  top: 0;
  width: 0.25rem;
  border-radius: 2rem;
  height: 0.5rem;
  transform: rotate(5deg);
  background: var(--color-primary);
}

.finger::after {
  position: absolute;
  top: 0.3rem;
  width: 0.25rem;
  border-radius: 2rem;
  height: 0.5rem;
  transform: rotate(-5deg);
  background: var(--color-primary);
}

.finger-ring::before { transform: rotate(8deg); }
.finger-ring::after {
  height: 0.6rem;
  transform: rotate(-8deg);
}
.finger-index::before { transform: rotate(5deg); }
.finger-index::after {
  height: 0.7rem;
  transform: rotate(-4deg);
}

.finger-thumb::before { transform: rotate(-20deg); }

.finger-thumb::after { transform: rotate(20deg); }

/* Feet */

.feet-container {
  position: absolute;
  bottom: 0;
  height: 38%;
  width: 100%;
}

.foot {
  position: absolute;
  top: -1rem;
  height: calc(100% + 1rem);
  width: 1rem;
  transform-origin: top center;
}

.foot-left {
  left: 30%;
  animation: feetLeftJump 0.4s 4s ease-out forwards;
}
.foot-right {
  right: 30%;
  animation: feetRightJump 0.4s 4s ease-out forwards;
}

.thigh {
  position: absolute;
  top: 0;
  width: 100%;
  height: 45%;
  background: var(--color-primary);
  border-radius: 1px;
}

.leg {
  position: absolute;
  top: calc(45% + 0.3rem);
  height: 55%;
  width: 100%;
  background: var(--color-primary);
}

.leg::before {
  position: absolute;
  top: 100%;
  transform: translateY(-50%);
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: var(--color-primary);
  clip-path: polygon(0 0, 100% 0, 100% 50%, 0 50%);
}

.leg-right::before {
  left: 0;
}

.leg-left::before {
  right: 0;
  animation: legTap 0.5s 2;
  transform-origin: right center;
}

/* Shadow */

.shadow {
  position: absolute;
  top: calc(100% + 0.7rem);
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 100%;
  height: 1.2rem;
  z-index: -1;
}

.shadow::after, .shadow::before {
  position: absolute;
  width: 50%;
  height: 100%;
  background: var(--color-shadow);
}

.shadow::before {
  right: 50%;
  border-radius: 1rem 0 0 1rem;
  animation:
    shadowWidth1 0.3s 1s forwards,
    shadowWidth2 0.3s 1.4s forwards,
    shadowWidth3 0.3s 1.8s forwards,
    shadowWidth6 0.3s 3.4s forwards,
    shadowWidth7 0.3s 3.8s forwards,
    shadowWidth8 0.4s 4s forwards;
}

.shadow::after {
  left: 50%;
  border-radius: 0 1rem 1rem 0;
  animation:
    shadowWidth4 1.2s 1.8s forwards,
    shadowWidth5 0.3s 3s forwards,
    shadowWidth9 0.4s 4s forwards;
}

/* Animations */

@keyframes legTap {
  0%, 100% {
    transform: translateY(-50%) rotate(0deg);
  }
  50% {
    transform: translateY(-50%) rotate(10deg);
  }
}

@keyframes armRotate1 {
  to {
    transform: rotate(90deg);
  }
}

@keyframes armRotate2 {
  from {
    transform: rotate(90deg);
  }
  to {
    transform: rotate(100deg);
  }
}

@keyframes armRotate3 {
  from {
    transform: rotate(100deg);
  }
  to {
    transform: rotate(80deg);
  }
}

@keyframes armRotate4 {
  0% {
    transform: rotate(0)
  }
  33% {
    transform: rotate(-100deg);
  }
  66% {
    transform: rotate(-80deg);
  }
  100% {
    transform: rotate(-100deg);
  }
}

@keyframes armRotate5 {
  from {
    transform: rotate(-100deg);
  }
  to {
    transform: rotate(0);
  }
}

@keyframes armRotate6 {
  from {
    transform: rotate(80deg);
  }
  to {
    transform: rotate(100deg);
  }
}

@keyframes armRotate7 {
  from {
    transform: rotate(100deg);
  }
  to {
    transform: rotate(140deg);
  }
}


@keyframes forearmRotate1 {
  to {
    transform: rotate(90deg) translate(-2.4rem, 2.4rem);
  }
}

@keyframes forearmRotate2 {
  from {
    transform: rotate(90deg) translate(-2.4rem, 2.4rem);
  }
  to {
    transform: rotate(80deg) translate(-3.2rem, 2.2rem);
  }
}

@keyframes forearmRotate3 {
  from {
    transform: rotate(80deg) translate(-3.2rem, 2.2rem);
  }
  to {
    transform: rotate(100deg) translate(-1.5rem, 3rem);
  }
}

@keyframes forearmRotate4 {
  0% {
    transform: rotate(0);
  }
  33% {
    transform: rotate(-80deg) translate(3.2rem, 2.2rem);
  }
  66% {
    transform: rotate(-110deg) translate(1.1rem, 2.8rem);
  }
  100% {
    transform: rotate(-80deg) translate(3.2rem, 2.2rem);
  }
}

@keyframes forearmRotate5 {
  from {
    transform: rotate(-80deg) translate(3.2rem, 2.2rem);
  }
  to {
    transform: rotate(0) translate(0, 0);
  }
}

@keyframes forearmRotate6 {
  from {
    transform: rotate(100deg) translate(-1.5rem, 3rem);;
  }
  to {
    transform: rotate(80deg) translate(-3.2rem, 2.2rem);
  }
}

@keyframes forearmRotate7 {
  from {
    transform-origin: top center;
    transform: rotate(100deg);
    top: 0.1rem;
    right: 2.4rem;
  }
  to {
    transform-origin: top center;
    transform: rotate(500deg);
    top: -1.4rem;
    right: 1.5rem;
  }
}


@keyframes shadowWidth1 {
  to {
    width: calc(60% + 4.5rem);
  }
}

@keyframes shadowWidth2 {
  from {
    width: calc(60% + 4.5rem);
  }
  to {
    width: calc(60% + 3rem);
  }
}

@keyframes shadowWidth3 {
  from {
    width: calc(60% + 3rem);
  }
  to {
    width: calc(60% + 2rem);
  }
}

@keyframes shadowWidth4 {
  0%{
    width: 60%;
  }
  33% {
    width: calc(60% + 5rem);
  }
  66% {
    width: calc(60% + 3rem);
  }
  100% {
    width: calc(60% + 5rem);
  }
}

@keyframes shadowWidth5 {
  from {
    width: calc(60% + 5rem);
  }
  to {
    width: 60%;
  }
}

@keyframes shadowWidth6 {
  from {
    width: calc(60% + 2rem);
  }
  to {
    width: calc(60% + 3rem);
  }
}

@keyframes shadowWidth7 {
  0% {
    width: calc(60% + 3rem);
  }
  25% {
    width: calc(60% + 1rem);
  }
  50% {
    width: calc(60% + 2.5rem);
  }
  75% {
    width: calc(60% + 1.5rem);
  }
  100% {
    width: calc(60% + 2.9rem);
  }
}

@keyframes shadowWidth8 {
  0% {
    width: calc(60% + 2.9rem);
  }
  50% {
    width: calc(60% - 0.5rem);
  }
  100% {
    width: calc(60% + 2.7rem);
  }
}

@keyframes shadowWidth9 {
  0% {
    width: 60%;
  }
  50% {
    width: calc(60% - 1rem);
  }
  100% {
    width: calc(60% + 1.5rem);
  }
}

@keyframes faceX1 {
  to {
    transform: translateX(-1rem);
  }
}

@keyframes faceX2 {
  from {
    transform: translateX(-1rem);
  }
  to {
    transform: translateX(1rem);
  }
}

@keyframes faceX3 {
  from {
    transform: translateX(1rem);
  }
  to {
    transform: translateX(-1rem);
  }
}

@keyframes skeletonJump {
  0% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-6rem);
  }
  100% {
    transform: translateY(4.8rem)
  }
}

@keyframes feetLeftJump {
  0% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-3rem);
  }
  100% {
    transform: translateY(5rem) rotate(90deg);
  }
}

@keyframes feetRightJump {
  0% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-3rem);
  }
  100% {
    transform: translateY(5rem) rotate(-90deg);
  }
}
/*
  Design: https://dribbble.com/shots/3909375-Halloween-Happy-Dance
*/
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.