mixin stick
  .controller__stick
    div
      div
    div
      div
mixin grip(side)
  .controller__grip(class=`controller__grip--${side}`)
    //- Top of the outer grip curve
    div
    //- Bottom of the outer grip curve
    div
    //- Slight overhang at the bottom
    div
    //- Little curve at the bottom of the base
    div
mixin grip-underlay(side)
  .controller__grip-underlay(class=`controller__grip-underlay--${side}`)
    //- Faceplate to be overlapped
    div
    //- Actual underlay piece
    div
    //- Side piece/nub at the bottom
    div
    //- Face plate
    div
label(for='toggle') Toggle CSS illustration
input#toggle(type='checkbox')
label(for='image') Hide image
input#image(type='checkbox')
.container
  img(src="https://assets.codepen.io/605876/ps5-controller.jpeg")
  .controller   
    .controller__container
      .controller__body
        .controller__trigger.controller__trigger--left
        .controller__trigger.controller__trigger--right
        .controller__body-top.controller__body-top--left
        .controller__body-top.controller__body-top--right
        .controller__body-top.controller__body-top--center
        //- Acts as a base for the entire grip
        +grip('left')
        +grip('right')
        .controller__sticks-container
          .controller__backdrop
          .controller__clip
          +grip-underlay('left')
          +grip-underlay('right')
          .controller__sticks
            div
              +stick()
            div
              +stick()
        .controller__touch-pad
          //- Bottom container
          div
            div
            div
          div
            div
            div
        .controller__speaker
          - let s = 0
          while s < 9
            div
            - s++
        .controller__start
        .controller__headphone
        .controller__buttons
          .controller__button.controller__button--triangle
          .controller__button.controller__button--square
          .controller__button.controller__button--circle
          .controller__button.controller__button--cross
        .controller__dpad
          .controller__dbutton.controller__dbutton--top
            div
          .controller__dbutton.controller__dbutton--right
            div
          .controller__dbutton.controller__dbutton--bottom
            div
          .controller__dbutton.controller__dbutton--left
            div
        .controller__auxiliary-button.controller__auxiliary-button--share
          div
        .controller__auxiliary-button.controller__auxiliary-button--options
          div
        .controller__logo
          div
            div
            div
          div
        .controller__mute
          div
          div
        .controller__patch.controller__patch--left
        .controller__patch.controller__patch--right


View Compiled
*
*:before
*:after
  box-sizing border-box
  
img
  position absolute
  top 50%
  left 50%
  width 75vmin
  transform translate(-50%, -50%)
  opacity 0.5
  z-index 2
  
[type='checkbox']
  margin-bottom 2rem
  
label
  margin-bottom 0.5rem
  font-weight bold
  font-family sans-serif
  color hsl(200, 100%, 99%)
  
#toggle:checked ~ .container .controller
  display block
#image:checked ~ .container img
  display none

:root
  // This color is needed to clip the border at the bottom
  --bg hsl(206, 100%, 32%)
  --accent hsl(225, 92%, 50%)
  // We know the original is 1920x1080
  --desired-size 75
  --controller-white hsl(225, 13%, 95%)
  // --controller-white red
  --controller-black hsl(0, 0%, 12%)
  // --controller-white red
  --unit calc((var(--desired-size) / 1920) * 1vmin)

body
  min-height 100vh
  background var(--bg)
  overflow auto
  display flex
  align-items center
  justify-content center
  flex-direction column

.container
  position relative
  width calc(1920 * var(--unit))
  height calc(1080 * var(--unit))
  
.controller
  display none
  &__container
    width calc(1920 * var(--unit))
    height calc(1080 * var(--unit))
    position absolute
    top 50%
    left 50%
    transform translate(-50%, -50%)
    &:before
      content ''
      position absolute
      bottom 0
      left 50%
      width 80%
      height 35%
      z-index -1
      background radial-gradient(hsla(0, 0%, 5%, 0.5), transparent 50%)
      filter blur(25px)
      transform translate(-50%, 24%)

  &__body
    width calc(1330 * var(--unit))
    height calc(880 * var(--unit))
    position absolute
    top 50%
    left 50%
    transform translate(-50%, -50%)

    &:before
    &:after
      content ''
      position absolute
      z-index -1
      bottom 0
      height 15%
      width 40%
      filter blur(25px)
      background radial-gradient(hsl(0, 0%, 5%), transparent 75%)

    &:before
      transform translate(-25%, 50%)
      left 0
    &:after
      right 0
      transform translate(25%, 50%)

  &__body-top
    width 200%
    height 125%
    background var(--controller-white)
    top 1%
    left 50%
    border-radius 75% 75% 0 0 / 100% 100% 0 0
    position absolute
    transform translate(-50%, 0%)
    &--center
      $clip = inset(0 32.5% 52% 32.5%)
      -webkit-clip-path $clip
      clip-path $clip
      transform translate(-50%, 0.4%)
      background hsl(225, 13%, 88%)

    &--left
      $clip = inset(0 62.5% 52% 30.5%)
      -webkit-clip-path $clip
      clip-path $clip
    &--right
      $clip = inset(0 30.5% 52% 62.5%)
      -webkit-clip-path $clip
      clip-path $clip

  &__grip
    --mirrored 0
    --size 250
    height calc(var(--size) * var(--unit))
    width calc(var(--size) * var(--unit))
    background var(--controller-white)
    // background orange
    border-radius 25% 20% 25% 25% / 25% 25% 25% 25%
    top 5%
    position absolute
    transform rotateY(calc(var(--mirrored) * 180deg)) rotate(-10.75deg)

    div:nth-of-type(1)
      background var(--controller-white)
      height 360%
      width 100%
      position absolute
      transform-origin top left
      transform rotate(19deg) translate(-26%, -8%)
      border-radius 95% 0 0 69%
      $clip = inset(7.78% 0 50% 0)
      -webkit-clip-path $clip
      clip-path $clip

    div:nth-of-type(2)
      background var(--controller-white)
      height 360%
      width 100%
      position absolute
      transform-origin top left
      transform rotate(19deg) translate(-26%, -12%)
      border-radius 100% 0 13% 60%/63% 0 25% 44%
      $clip = inset(50% 0 0 0)
      -webkit-clip-path $clip
      clip-path $clip

    div:nth-of-type(3)
      position absolute
      background var(--controller-white)
      height 200%
      width 15%
      left 0%
      top 230%
      transform-origin bottom center
      border-radius 100% / 50%
      transform rotate(32deg) translate(-671%, -32%)

    div:nth-of-type(4)
      position absolute


    &--left
      left 12%

    &--right
      --mirrored 1
      right 12%

  &__sticks-container
    position absolute
    left 50%
    top 25%
    width 85%
    height 76%
    overflow hidden
    transform translate(-50%, 0%)

  &__sticks
    height 38%
    width 60%
    background var(--controller-black)
    position absolute
    top 15%
    left 50%
    transform translate(-50%, 0)
    border-radius 19% / 50%

    & > div
      --lightness hsla(0, 0%, 65%, 0.15)
      position absolute
      height 100%
      width 38%
      top 0
      border-radius 50%

      &:before
        content ''
        background linear-gradient(-30deg, var(--lightness), transparent, var(--lightness))
        height 100%
        width 100%
        position absolute
        border-radius 50%
        filter blur(3px)

      &:after
        box-sizing border-box
        content ''
        height 90%
        width 90%
        position absolute
        border-radius 50%
        border calc(5 * var(--unit)) solid var(--lightness)
        filter blur(6px)
        top 50%
        left 50%
        transform translate(-50%, -50%)

    & > div:nth-of-type(1)
      left 0

    & > div:nth-of-type(2)
      right 0

      .controller__stick
        transform translate(-47%, -55%)

  &__stick
    height 82%
    width 82%
    background hsl(0, 0%, 15%)
    border-radius 50%
    position absolute
    top 50%
    left 50%
    transform translate(-53%, -55%)

    & > div:nth-of-type(1)
      border var(--unit) solid black
      height 85%
      width 85%
      transform translate(-50%, -50%)
      background linear-gradient(5deg, hsla(0, 0%, 100%, 0.1), hsl(0, 0%, 10%), hsla(0, 0%, 100%, 0.1), hsl(0, 0%, 10%), hsla(0, 0%, 100%, 0.1))
      position absolute
      border-radius 50%
      top 50%
      left 50%

      div
        height 95%
        width 95%
        background hsl(0, 0%, 10%)
        border-radius 50%
        position absolute
        transform translate(-50%, -50%)
        top 50%
        left 50%

    & > div:nth-of-type(2)
      background repeating-conic-gradient(hsla(0, 0%, 10%, 0.5) 1deg, hsla(0, 0%, 60%, 0.5) 6deg), #666
      filter blur(1px)
      border-radius 50%
      position absolute
      top 50%
      left 50%
      transform translate(-50%, -50%)
      width 75%
      height 75%
      box-shadow calc(-4 * var(--unit)) calc(2 * var(--unit)) calc(20 * var(--unit)) calc(2 * var(--unit)) hsla(0, 0%, 3%, 1) inset

      div
        position absolute
        top 50%
        left 50%
        background radial-gradient(circle at 80% 100%, hsl(0, 0%, 15%), transparent), hsl(0, 0%, 40%)
        transform translate(-50%, -50%)
        border-radius 50%
        width 60%
        height 60%
        box-shadow calc(1 * var(--unit)) calc(2 * var(--unit)) calc(13 * var(--unit)) calc(2 * var(--unit)) hsla(0, 0%, 100%, 0.35),
          calc(-5 * var(--unit)) calc(-2 * var(--unit)) calc(10 * var(--unit)) calc(8 * var(--unit)) hsl(0, 0%, 15%),
          calc(5 * var(--unit)) calc(4 * var(--unit)) calc(10 * var(--unit)) calc(8 * var(--unit)) hsl(0, 0%, 15%)

  &__backdrop
    height 60%
    width 100%
    background var(--controller-black)

  &__clip
    background var(--bg)
    width 65%
    height 50%
    position absolute
    top 50%
    left 50%
    transform translate(-50%, 3%)
    border-radius 15% 15% 0 0 / 22% 22% 0 0
    $clip = inset(0 0 80% 0)
    -webkit-clip-path $clip
    clip-path $clip

  &__grip-underlay
    --mirrored 0
    position absolute
    width 50%
    height 150%
    top 0
    transform rotateY(calc(var(--mirrored) * 180deg)) translate(-57%, -37%) rotate(10deg)

    &:before
      content ''
      position absolute
      bottom 0
      right 0
      background var(--controller-white)
      border-radius 50% / 50%
      height 40%
      width 4%
      transform-origin bottom center
      transform translate(-253%, 0%) rotate(12deg)

    &:after
      content ''
      position absolute
      bottom 0
      right 0
      background var(--controller-black)
      height 5%
      width 20%
      border-radius 0 0 4% 0 / 0 0 25% 0
      transform translate(-59%, -2%)


    div:nth-of-type(1)
      background var(--controller-white)
      position absolute
      bottom 0
      right 0
      width 100%
      height 100%
      $clip = polygon(0 0, 100% 0, 100% 70%, 85% 99.5%, 0 100%)
      -webkit-clip-path $clip
      clip-path $clip
    div:nth-of-type(2)
      background var(--controller-black)
      position absolute
      height 100%
      width 26%
      right 0
      bottom 0
      transform translate(44%, 23.5%) rotate(14deg)
      border-radius 100% 0 0 100%/50% 0 0 50%
      $clip = polygon(0 25%, 60% 25%, 54% 77%, 0 79%)
      -webkit-clip-path $clip
      clip-path $clip

      &:after
        content ''
        background var(--controller-white)
        position absolute
        bottom 0
        right 0
        width 50%
        height 61%
        border-radius 100% 0 0 100% / 50% 0 0 100%
    div:nth-of-type(3)
      background var(--controller-white)
      position absolute
      bottom 0
      width 10%
      height 7%
      right 21%
      z-index 2
      transform translate(0%, -3%) rotate(0deg)
      border-radius 0 0 65% 0 / 0 0 100% 0
    div:nth-of-type(4)
      position absolute
      background var(--controller-white)
      width 40%
      height 25%
      top 21%
      right -15%
      transform rotate(30deg) translate(-7%, -2%)
      border-radius 0 100% 0 0 / 0 64% 0 0

    &--left
      left 0

    &--right
      --mirrored 1
      right 0

  &__touch-pad
    --touch-pad-inset hsl(0, 5%, 65%)
    --touch-pad-fade hsla(0, 0%, 100%, 0.15)
    position absolute
    width 42%
    height 34.5%
    left 50%
    top 1.5%
    transform translate(-50%, 0)
    border-radius 50% 50% 0 0 / 8% 8% 0 0
    overflow hidden

    &:after
      content ''
      position absolute
      background linear-gradient(hsl(0, 0%, 70%), white, transparent)
      top 0
      left 50%
      width 95%
      height 30%
      transform translate(-50%, 0)
      border-radius 18% 18% 0 0 / 50% 50% 0 0
      opacity 0.5
      $clip = polygon(-2% 0, 102% 0, 98% 100%, 2% 100%)
      -webkit-clip-path $clip
      clip-path $clip

    & > div:nth-of-type(1)
      width 86%
      height 100%
      background var(--touch-pad-fade)
      left 50%
      position absolute
      transform translate(-50%, 0)
      border-radius 0 0 14% 14%/0 0 25% 25%

      &:before
        content ''
        position absolute
        bottom 0
        width 65%
        height 25%
        left 50%
        background var(--touch-pad-fade)
        transform translate(-50%, 0)

      &:after
        content ''
        position absolute
        bottom 0
        left 50%
        height 5%
        width 20%
        border-radius 50%
        background radial-gradient(white, transparent)
        filter blur(3px)
        transform translate(-50%, 50%)

      div
        --mirrored 0
        background var(--touch-pad-fade)
        position absolute
        height 100%
        width 15%
        border-radius 80% 0 0 90%/13% 0 0 30%
        overflow hidden
        transform rotateY(calc(var(--mirrored) * 180deg)) rotate(-11.5deg) translate(-23%, 2%)

        &:before
          content ''
          position absolute
          width 100%
          height 20%
          top 0
          left 0
          background var(--touch-pad-inset)
        &:after
          content ''
          position absolute
          top 8%
          left 0
          width 100%
          height 100%
          border-radius 50% 0 0 0 / 10% 0 0 0
          background linear-gradient(var(--accent) 15% 65%, transparent 85%)
      // left side
      div:nth-of-type(1)
        top 0
        left 0
      // right side
      div:nth-of-type(2)
        --mirrored 1
        top 0
        right 0

    & > div:nth-of-type(2)
      position absolute
      top 0
      left 50%
      height 94%
      width 81%
      background var(--controller-white)
      transform translate(-50%, 0)
      border-radius 0 0 15% 15%/0 0 25% 25%

      &:after
      &:before
        content ''
        position absolute
        top 0
        height 100%
        background var(--controller-white)
        width 15%

      &:before
        left 0
        border-radius 100% 0 0 85% / 12% 0 0 25%
        transform rotate(-12deg) translate(-27%, 0)

      &:after
        right 0
        border-radius 0 100% 85% 0 / 0 12% 25% 0
        transform rotate(12deg) translate(27%, 0)

  &__speaker
    position absolute
    top 39%
    left 50%
    display flex
    flex-direction row
    transform translate(-50%, 0)

    div
      --size 12
      background hsl(0, 0%, 5%)
      height calc(var(--size) * var(--unit))
      width calc(var(--size) * var(--unit))
      border-radius 50%
      box-shadow calc(-0.75 * var(--unit)) calc(0.5 * var(--unit)) calc(0.75 * var(--unit)) calc(0.5 * var(--unit)) inset hsla(0, 0%, 100%, 0.25)

      &:nth-of-type(odd)
        transform translate(0, -98%) scale(1.2)
      &:nth-of-type(even)
        transform translate(0, 70%) scale(1.2)

  &__start
    position absolute
    background linear-gradient(transparent 68%, hsla(0, 0%, 100%, 0.5) 70%, transparent 72%), #333
    top 57.5%
    left 50%
    border-radius 15% / 50%
    width calc(68 * var(--unit))
    height calc(var(--unit) * 18)
    transform translate(-50%, -50%)
    box-shadow 0 0 calc(0 * var(--unit)) calc(4 * var(--unit)) hsl(0, 0%, 0%),
      0 0 calc(0 * var(--unit)) calc(1 * var(--unit)) hsla(0, 0%, 100%, 0.5) inset

  &__headphone
    position absolute
    left 50%
    top 63.5%
    border-radius 50%
    width calc(20 * var(--unit))
    height calc(8 * var(--unit))
    background black
    transform translate(-50%, 0)

  &__buttons
    position absolute
    top 23.75%
    left 70.25%
    height calc(90 * var(--unit))
    width calc(90 * var(--unit))

  &__button
    height 100%
    width 100%
    border-radius 50%
    position absolute
    box-shadow 0 0 calc(4 * var(--unit)) calc(4 * var(--unit)) hsla(0, 0%, 45%, 0.35) inset
    border calc(2 * var(--unit)) solid hsl(0, 0%, 5%)

    &:after
    &:before
      content ''
      position absolute
      width 75%
      height 75%
      top 50%
      left 50%
      transform translate(-50%, -50%)

    &--square
      transform translate(0, 0)

      &:before
        width 55%
        height 55%
        border calc(4 * var(--unit)) solid hsl(0, 0%, 25%)

    &--triangle
      transform translate(108%, -108%)
      &:after
      &:before
        $clip = polygon(50% 0%, 100% 100%, 0 100%)
        -webkit-clip-path $clip
        clip-path $clip
      &:before
        height 60%
        width 65%
        background hsl(0, 0%, 25%)
        transform translate(-50%, -50%) translate(0, -16%)

      &:after
        background var(--controller-white)
        height 48%
        width 49%
        transform translate(-50%, -50%) translate(0, -16%)

    &--cross
      transform translate(108%, 108%)
      &:after
      &:before
        height calc(4 * var(--unit))
        background hsl(0, 0%, 25%)
        width 70%
      &:after
        transform translate(-50%, -50%) rotate(45deg)
      &:before
        transform translate(-50%, -50%) rotate(-45deg)

    &--circle
      transform translate(216%, 0%)
      &:before
        width 70%
        height 70%
        border-radius 50%
        border calc(4 * var(--unit)) solid hsl(0, 0%, 25%)
  &__dpad
    position absolute
    width calc(84 * var(--unit))
    height calc(100 * var(--unit))
    top 16%
    left calc(210 * var(--unit))

  &__dbutton
    position absolute
    height 100%
    width 100%
    background hsl(0, 0%, 40%)
    top 0
    left 0
    transform-origin bottom center
    $clip = polygon(0 0, 100% 0, 100% 25%, 93% 70%, 57% 100%, 50% 100%, 43% 100%, 7% 70%, 0 25%)
    -webkit-clip-path $clip
    clip-path $clip
    border-radius 35% 35% 0 0 / 27% 27% 0 0
    &--top
      transform translate(0, 0)
    &--right
      transform translate(0, 12%) rotate(90deg) translate(0, -14%)
    &--bottom
      transform translate(0, 12%) rotate(-180deg) translate(0, -14%)
    &--left
      transform translate(0, 12%) rotate(-90deg) translate(0, -14%)
    & > div
      background hsla(0, 0%, 95%, 0.75)
      position absolute
      top 50%
      left 50%
      transform translate(-50%, -50%)
      border-radius 35% / 27%
      width 85%
      height 85%
      $clip = polygon(0 0, 100% 0, 93% 70%, 57% 100%, 50% 100%, 43% 100%, 7% 70%)
      -webkit-clip-path $clip
      clip-path $clip

      &:after
      &:before
        content ''
        position absolute
        top 50%
        left 50%
        transform translate(-50%, -50%)

      &:before
        background var(--controller-white)
        height 90%
        background var(--controller-white)
        width 90%
        border-radius 35% / 27%
        $clip = polygon(0 0, 100% 0, 93% 70%, 57% 100%, 50% 100%, 43% 100%, 7% 70%)
        -webkit-clip-path $clip
        clip-path $clip

      &:after
        background hsl(0, 0%, 25%)
        top 26%
        width 28%
        height 14%
        $clip = polygon(0 100%, 50% 0, 100% 100%)
        -webkit-clip-path $clip
        clip-path $clip
  &__trigger
    --mirrored 0
    height calc(80 * var(--unit))
    width calc(254 * var(--unit))
    background var(--controller-black)
    position absolute
    transform translate(0%, 0) rotateY(calc(var(--mirrored) * 180deg)) translate(-13%, 3%) rotate(-11deg)
    border-radius 60% 50% 0 0 / 100% 100% 0 0
    $clip = polygon(19% 0, 9% 100%, 86% 100%, 86% 0)
    -webkit-clip-path $clip
    clip-path $clip
    overflow hidden

    &:after
    &:before
      content ''
      position absolute
      top 0
      left 50%

    &:before
      height 25%
      width 75%
      transform translate(-50%, 0)
      background linear-gradient(transparent 25%, hsla(0, 0%, 100%, 0.25))

    &:after
      height 75%
      top 25%
      width 100%
      transform translate(-50%, 0)
      background linear-gradient(90deg, transparent 0 19%, hsla(0, 0%, 100%, 0.5), transparent 45% 55%), linear-gradient(90deg, transparent 0 69%, hsla(0, 0%, 100%, 0.5), transparent 80%)

    &--left
      left 12%
    &--right
      --mirrored 1
      right 12%

  &__auxiliary-button
    --mirrored 0
    position absolute
    top 9%
    border calc(2 * var(--unit)) solid hsl(0, 0%, 15%)
    border-radius 50% / 30%
    background var(--controller-white)
    box-shadow 0 0 calc(2 * var(--unit)) calc(2 * var(--unit)) hsla(0, 0%, 45%, 0.5) inset
    height calc(62 * var(--unit))
    width calc(34 * var(--unit))
    transform rotateY(calc(var(--mirrored) * 180deg)) rotate(-12deg) translate(-18%, -4%)

    & > div
      position absolute
      top 0
      left 50%

    &--share
      left 26%

      & > div
        background hsl(0, 0%, 65%)
        height 24%
        width 10%
        transform-origin bottom center
        transform translate(50%, -200%) rotate(12deg)

        &:after
        &:before
          content ''
          position absolute
          bottom 0
          left 0
          height 70%
          width 100%
          background hsl(0, 0%, 65%)
          transform-origin 50% 220%

        &:before
          transform rotate(-33deg)
        &:after
          transform rotate(33deg)
    &--options
      --mirrored 1
      right 26%

      & > div
        background hsl(0, 0%, 65%)
        width 10%
        height 30%
        transform translate(0, -160%) rotate(102deg) translate(0, -22%)

        &:after
        &:before
          content ''
          position absolute
          bottom 0
          left 0
          height 100%
          width 100%
          background hsl(0, 0%, 65%)

        &:before
          transform translate(-250%, 0)
        &:after
          transform translate(250%, 0)

  &__logo
    position absolute
    top 50%
    left 50%
    width calc(90 * var(--unit))
    height calc(70 * var(--unit))
    transform translate(-50%, -74%)

    & > div:nth-of-type(2)
      height 96%
      width 22%
      background var(--controller-black)
      position absolute
      top 50%
      left 50%
      border calc(3 * var(--unit)) solid hsl(0, 0%, 5%)
      transform translate(-71%, -50%) skewY(15deg)

      &:after
      &:before
        content ''
        position absolute

      &:before
        left 108%
        top -5%
        width 150%
        height 62%
        background var(--controller-black)
        border calc(3 * var(--unit)) solid hsl(0, 0%, 5%)
        border-radius 0 50% 50% 0

      &:after
        left 0%
        width 230%
        box-shadow 0 0 calc(2 * var(--unit)) calc(2 * var(--unit)) hsla(0, 0%, 100%, 0.5) inset
        height 20%
        background var(--controller-black)
        border-radius 0 30% 0 0 / 0 100% 0 0
        $clip = polygon(0 0, 100% 0, 100% 80%, 0 30%)
        -webkit-clip-path $clip
        clip-path $clip

    & > div:nth-of-type(1)
      position absolute
      height 38%
      transform-origin bottom center
      width 122%
      bottom 0
      left 32%
      transform skewX(62deg) rotate(-13deg) translate(-2%, -21%)

      div:after
        content ''
        position absolute
        top 50%
        left 50%
        width 70%
        height 25%
        background hsl(0, 0%, 5%)
        // box-shadow 0 0 calc(1 * var(--unit)) calc(1 * var(--unit)) hsla(0, 0%, 100%, 0.5) inset
        transform translate(-50%, -50%)
        border-radius 25% / 50%

      div:nth-of-type(1)
        height 54%
        background var(--controller-black)
        position absolute
        top 45%
        width 100%
        $clip = polygon(57% 0, 100% 0, 100% 100%, 19% 100%)
        -webkit-clip-path $clip
        clip-path $clip
        border-radius 25% / 50%
        box-shadow calc(-1 * var(--unit)) calc(1 * var(--unit)) calc(1 * var(--unit)) calc(1 * var(--unit)) rgba(255,255,255,0.5) inset
        border calc(2.5 * var(--unit)) solid hsl(0, 0%, 5%)

      div:nth-of-type(2)
        border calc(2 * var(--unit)) solid hsl(0, 0%, 5%)
        top 2%
        width 100%
        left 2%
        position absolute
        box-shadow calc(-1 * var(--unit)) calc(1 * var(--unit)) calc(1 * var(--unit)) calc(1 * var(--unit)) rgba(255,255,255,0.5) inset
        height 58%
        background var(--controller-black)
        border-radius 35% / 50%
        $clip = polygon(0 0, 85% 0, 40% 100%, 0% 100%)
        -webkit-clip-path $clip
        clip-path $clip
  &__mute
    position absolute
    width calc(20 * var(--unit))
    height calc(20 * var(--unit))
    top 60%
    left 50%
    transform translate(-50%, 0)

    & > div:nth-of-type(1)
      position absolute
      top 38%
      left 50%
      width 62%
      height 36%
      background hsl(0, 0%, 50%)
      border-radius 0 0 25% 25% / 0 0 50% 50%
      transform translate(-50%, 0)

      &:after
      &:before
        content ''
        position absolute

      &:before
        height 200%
        width 80%
        background hsl(0, 0%, 50%)
        border var(--unit) solid var(--controller-black)
        border-radius 25%
        position absolute
        left 50%
        top 0
        transform translate(-50%, -60%)

      &:after
        width 150%
        height 50%
        border-radius 25% / 25%
        background hsl(0, 0%, 50%)
        border var(--unit) solid var(--controller-black)
        top 50%
        left 50%
        transform translate(-50%, -159%) rotate(45deg)

    & > div:nth-of-type(2)
      position absolute
      bottom 0
      left 50%
      background hsl(0, 0%, 50%)
      transform translate(-50%, 0)
      width 60%
      height 15%
      border-radius 25%

      &:after
        content ''
        left 50%
        bottom 0
        height 200%
        background hsl(0, 0%, 50%)
        width 25%
        position absolute
        transform translate(-50%, 0)
        
  &__patch
    --mirrrored 0
    position absolute
    bottom 1.5%
    height 25%
    width 7%
    background var(--controller-white)
    border-radius 50%/50%
    transform-origin bottom center
    
    &--left
      left 4%
      transform rotate(6deg)
    
    &--right
      right 4%
      transform rotate(-6deg)
View Compiled
// 404
View Compiled
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.