<div class="wrap">
  <div class="player">
    <div class="left">
      <div class="buttons">
        <div class="left"></div>
        <div></div>
        <div></div>
        <div></div>
      </div>
    </div>
    <div class="front"></div>
    <div class="top"></div>
    <div class="bottom">
      <div class="disc">
        <div class="light"></div>
        <div class="label">
          <div class="text">
            <span>B</span>
            <span>o</span>
            <span>b</span>
            <span>&nbsp;</span>
            <span>M</span>
            <span>a</span>
            <span>r</span>
            <span>l</span>
            <span>e</span>
            <span>y</span>
          </div>
        </div>
       
      </div>
      <div class="op">
        <div class="handle"></div>
      </div>
    </div>
  </div>
</div>
$size: 300;

@mixin rotated-text($num-letters: 100, $angle-span: 180deg, $angle-offset: 0deg) {
	$angle-per-char: $angle-span / $num-letters;
  	@for $i from 1 through $num-letters {
      &:nth-child(#{$i}) {
      		transform: rotate($angle-offset + $angle-per-char * $i);
    	}
	}
}

@keyframes rotateDisc {
  from {
    transform: translate(-50%, -50% ) rotate(0deg);
  }
  to {
    transform: translate(-50%, -50% ) rotate(360 * 3 + deg);
  }
}

@keyframes handleMove {
  0% {
    transform: translateY(-50%);
  }
  20% {
    transform: translateY(-400%) translateZ(10px) rotate(30deg) translateX(20px);
  }
  80% {
    transform: translateY(-400%) translateZ(10px) rotate(30deg) translateX(20px);
  }
  100% {
    transform: translateY(-50%);
  }
}

body {
  background: #E65C00;
}

.wrap {
  perspective: $size * 4 + px;
	perspective-origin: 50% 100px;
  width: $size + px;
  position: absolute;
  left: 50%;
  top: 65%;
  transform: translate(-50%, -50%);
  
  
  .player {
    position: relative;
	  width: $size + px;
	  transform-style: preserve-3d;
    transform: rotateX(-30deg) rotateY(60deg);
    
    & > div {
      position: absolute; 
      width: $size + px;
      height: $size + px;
      box-sizing: border-box;
      border-radius: 5px;
      
      &.left {
        height: $size/2.5 + px;
        border-bottom: $size/5 + px solid #666;
        border-right: 1px solid #ccc;
        border-left: 1px solid #ccc;
        border-top-left-radius: 0;
        background: rgba(255, 255, 255, 0.1);
        transform: rotateY(270deg) translateX(-$size/2 + px);
	      transform-origin: center left;
        
        .buttons {
          width: 90%;
          height: 20%;
          margin: 0 auto;
          position: absolute;
          bottom: -60%;
          left: 50%;
          transform: translateX(-50%);
            
          div {
            width: 30px;
            height: 15px;
            background: #333;
            border-radius:  15px;
            display: inline-block;
            box-shadow: 4px 0 0 0 #222;
            float: right;
            margin-left: 10px;
            
            &.left {
              float: left;
            }
          }
        }
      }
      
      &.front {
        height: $size/2.5 + px;
        border-bottom: $size/5 + px solid #666;
        border-right: 1px solid #ccc;
        background: rgba(255, 255, 255, 0.1);
        transform: translateZ($size/2 + px);
      }
      
      &.top {
        background: rgba(255, 255, 255, 0.1);
        border: 1px solid #ccc;
        transform: rotateX(-90deg) translateY(-$size/2 + px);
	      transform-origin: top center;
      }
      
      &.bottom {
        background: #444;
        transform: rotateX(90deg) translateY($size/2 + px) translateZ($size * 0.8 - 1 + px);
	      transform-origin: bottom center;
        position: relative;
        
        &:after {
          content: "";
          display: block;
          width: $size * 0.8 + px;
          height: $size * 0.8 + px;
          border-radius: 100%;
          position: absolute;
          top: 50%;
          right: 50%;
          box-shadow: -10px 5px 0 0 #111;
          transform: translate3d(50%, -50%, 0);          
        }
      }
      
      .disc {
        width: $size * 0.8 + px;
        height: $size * 0.8 + px;
        background: #000;
        border-radius: 100%;
        transform: translate(-50%, -50%);
        backface-visibility: hidden;
        perspective: 10000;
        margin: 50%;
        position: absolute;
        z-index: 2;
        overflow: hidden;
        animation: rotateDisc 20s ease-in-out infinite;
        
        &:before,
        &:after {
          content: " ";
          display: block;
          position: absolute;
          top: 50%;
          left: 50%;
          transform: translate(-50%, -50%);
          border-radius: 100%;
          border: 1px solid #111;
        }
        
        &:before {
          width: 80%;
          height: 80%;
        }
        
        &:after {
          width: 60%;
          height: 60%;
        }
      }
      
      .light {
          position: absolute;
          width: 100%;
          height: 100%;
          z-index: -1;
          
          &:before {
            content: "";
            display: block;
            width: 0;
            height: 0;
            border-style: solid;
            border-width: 0 15px 100px 15px;
            border-color: transparent transparent rgba(50, 50, 50, 0.1) transparent;
            position: absolute;
            top: 60%;
            left: 50%;
            transform: translateX(-50%);
          }
          
          &:after {
            content: "";
            display: block;
            width: 0;
            height: 0;
            border-style: solid;
            border-width: 100px 15px 0 15px;
            border-color: rgba(50, 50, 50, 0.1) transparent transparent transparent;
            position: absolute;
            top: 0;
            left: 50%;
            transform: translateX(-50%);
          }
        }
      
      .label {
        width: 40%;
        height: 40%;
        background: #9E6908;
        border-radius: 100%;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        color: #ccc;
        text-align: center;
        z-index: 2;
        
        &:before,
        &:after {
          content: " ";
          border-radius: 100%;
          position: absolute;
          top: 50%;
          left: 50%;
          transform: translate(-50%, -50%);
        }
        
        &:before {
          width: 100%;
          height: 100%;
          border: 5px solid #089E1E;
        }
        
        &:after {
          width: 90%;
          height: 90%;
          border: 5px solid #FFFB00;
          box-shadow: 0 0 0px 5px #FC031C inset;
        }
        
        .text {
          position: absolute;
          width: 100%;
          height: 100%;
          z-index: 3;
          
          &:before {
            content: "";
            display: block;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            border-radius: 100%;
            background: #333;
            width: ($size * .015) + px;
            height: ($size * .015) + px;
          }
        }
        
        span {
          font-family: Roboto, Arial, sans-serif;
          font-size: 10px;
          display: inline-block;
          height: $size/10 + px;
          position: absolute;
          top: 20%;
          transform-origin: bottom center;
          @include rotated-text($num-letters: 10, $angle-span: 180deg);
        }
      }
      
      .op {
        width: $size * 0.1 + px;
        height: $size * 0.1 + px;
        border-radius: 100%;
        background: #333;
        position: absolute;
        bottom: 15px;
        right: 15px;
        box-shadow: -7px 3px 0 0 #222;
      }
      
      .handle {
        width: 700%;
        height: 50%;
        background: #333;
        position: absolute;
        left: -670%;
        top: 30%;
        transform: translateY(-50%);
        z-index: 20;
        box-shadow: -5px 7px 0 0 #222;
        animation: handleMove 17s ease-in-out 3s infinite;
        
        &:before {
          width: 10%;
          height: 130%;
          content: " ";
          display: block;
          background: #111;
          position: absolute;
          left: -10%;
          box-shadow: 0 3px 0 0 #fff;
        }
      }
    }
  }
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.