<div class="wrapper">
  <div class="watch-strap">
    <div class="strap-circle"></div>
    <div class="strap"></div>
    <div class="watch-strap-holder left-up"></div>
    <div class="watch-strap-holder left-bottom"></div>
    <div class="watch-strap-holder right-up"></div>
    <div class="watch-strap-holder right-bottom"></div>
    <div class="watch-lace">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <span class="top"></span>
      <span class="bottom"></span>
    </div>
  </div>
  <div class="watch-case">
    <div class="reflection"></div>
    <div class="reflection bottom"></div>
    <div class="watch-center">
      <div class="watch-points"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
      <div class="watch-tips">
        <span class="hours"></span>
        <span class="minutes"></span>
        <span class="seconds"></span>
      </div>
      <div class="watch-date">17 SEP</div>
      <div class="watch-alert">Your meeting <br>in <strong>15</strong> min</div>
      <div class="watch-week">
        <span class="week-arrow"></span>
        <ul>
          <div>S</div>
          <div>M</div>
          <div>T</div>
          <div>W</div>
          <div>T</div>
          <div>F</div>
          <div>S</div>
        </ul>
      </div>
       <div class="watch-day">
         <div class="sun">
           <div></div>
           <div></div>
           <div></div>
           <div></div>
           <div></div>
           <div></div>
           <div></div>
           <div></div>
           <div></div>
         </div>
         
      </div>
      <div class="watch-week days">
        <span class="week-arrow"></span>
        <ul>
          <div>3</div>
          <div>6</div>
          <div>9</div>       
        </ul>
      </div>
    </div>
  </div>
</div>
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,600,700');
body
  background-color #fff
  min-height 100vh
  display flex
  align-items center
  justify-content center
  font-family: 'Open Sans', sans-serif;
  
.wrapper
  position relative
  
.watch
  &-case
    position absolute
    z-index 4
    top 50%
    left 50%
    transform translate(-50%, -50%)
    height 400px
    width 400px
    overflow hidden
    background-image linear-gradient(-45deg, #fdfdfd, #ceced6, #fdfdfd)
    border-radius 50%
    box-shadow:
      0 0 1px 2px rgba(#b4b1c1,.7)
    
  &-center
    background-image radial-gradient(#ffffff,#eeeeef)
    height 380px
    width 380px
    border-radius 50%
    position absolute
    z-index 4
    left 50%
    top 50%
    transform translate(-50%, -50%)
    box-shadow:
      -1px -1px 1px 0 #fdfdfd,
      0 0 0 2px #b8b7c3,
      inset 0 0 0 2px #d1d1d6,
      inset 0 0 0 4px rgba(#fff,.7),
      inset 0 0 8px 8px rgba(#000,.1),
      inset 0 0 50px 50px rgba(#000,0.05)
  &-strap
    position absolute
    top 50%
    left 50%
    transform translate(-50%, -50%)
    height 480px
    width 220px
    background-color #101022
    border-radius 6px
    z-index 2
    
    .strap-circle
      position absolute
      height 409px
      width 409px
      background-color transparent
      top 50%
      left 50%
      transform translate(-50%, -50%)
      border-radius 50%
      box-shadow:
        inset -1px 0 8px 3px #151427,
        0 0 2px 1px rgba(#fff,.8)
      &:after
        content ""
        display block
        height 100%
        width 72px
        left -2px
        position absolute
        background-color #fff
      &:before
        content ""
        display block
        height 100%
        width 72px
        background-color #fff
        position absolute
        right -2px
    .strap
      position absolute
      top 50%
      left 50%
      transform translate(-50%, -50%)
      height 480px
      width 220px
      background-color #101022
      border-radius 6px
      z-index 2
      box-shadow:
        -1px 0 1px 0 #000,
        inset 0 20px 40px -20px rgba(#172365,1),
        inset 0 -20px 40px -20px rgba(#172365,.7)
    &-holder
      position absolute
      background-color #e7e7ea
      height 150px
      width 20px
      left -20px
      border-radius 3px
      top -2px
      z-index -1
      box-shadow:
        inset 0 0 4px 1px rgba(#000,0.2)
      &.left-bottom
        transform scaleY(-1)
        top 332px
        left -20px
      &.right-up
        transform scaleX(-1)
        left 220px
        box-shadow:
          inset 0 0 4px 1px rgba(#000,0.2)
        
        &:after
          border-radius 14px 70px 0 0
          box-shadow:
           inset 0px 3px 1px -2px rgba(#fff,.6),
           inset -10px -15px 1px 2px rgba(#dcdce4,1),
           inset -2px 10px 4px 2px rgba(#181820,1)
      &.right-bottom
        transform scaleY(-1) scaleX(-1)
        top 332px
        left 220px
        &:after
          border-radius 14px 70px 0 0
          box-shadow:
           inset 0px 3px 1px -2px rgba(#fff,.6),
           inset -10px -15px 1px 2px rgba(#dcdce4,1),
           inset -2px 10px 4px 2px rgba(#181820,1)
      &:before
        content ""
        display block
        position absolute
        background-color #e7e7ea
        height 150px
        width 10px
        border-radius 3px 0
        transform rotate(4deg)
        left -5px
        box-shadow:
          inset 5px 5px 4px -5px rgba(#000,0.2)
       &:after
         content ""
         display block
         position absolute
         background-color transparent
         background-image linear-gradient(to bottom, transparent, #fff)
         height 150px
         width 30px
         border-radius 12px
         transform rotate(4deg)
         top 10px
         left -4px
         box-shadow:
           inset -3px 8px 2px 2px rgba(#181820,1)
   
.reflection
  content ""
  display block
  height 16px
  width 30px
  position absolute
  top 50px
  left 50px
  background-color #080817
  filter blur(1px)
  transform rotate(-56deg) skewX(30deg) scale(.6)
  &.bottom
    top 337px
    left 312px
    &:after
      height 39px
      width 43px
      left -60px
      top -14px
      transform rotate(-44deg)
      box-shadow:
        34px 17px 0 8px #080817
  &:after
    content ""
    display block
    background-color transparent
    height 40px
    width 30px
    border-radius 50%
    background-color transparent
    position absolute
    left -48px
    top -11px
    transform rotate(-69deg)
    box-shadow:
      34px 17px 0 20px #080817
  &:before
    content ""
    display block
    background-color transparent
    height 40px
    width 30px
    border-radius 50%
    background-color transparent
    position absolute
    right 25px
    top 32px
    transform rotate(-69deg)
    box-shadow:
      34px 17px 0 10px #080817,
      14px 32px 0 20px #080817

.watch-points
  position absolute
  z-index 5
  top calc(50% - 6px)
  left calc(50% - 1px)
  transform translate(-50%, -50%)
  &:after
    content ""
    display block
    height 325px
    width 325px
    position absolute
    border 2px solid #dededf
    top calc(50% + 6px)
    left calc(50% + 1px)
    transform translate(-50%, -50%)
    border-radius 50%
  i
    display block
    height 12px
    width 2px
    background-image linear-gradient(to bottom, #c6c6cb,  #e0e0e1)
    position absolute
 
i
  for num in (1..60)
    &:nth-child({num})
      transform rotate((num*360/60-6)deg) translate(0, -172px)
      
     
.watch-week
  position absolute
  top calc(50% - 6px)
  left calc(50% - 6px)
  transform translate(-120px, 40px) rotate(-70deg)
  z-index 10
  &.days
    transform translate(50px, 40px) rotate(-70deg)
    &:after
      transform rotate(256deg)
    ul
      transform rotate(169deg) translate(-58px, -17px)
    div
      color #1F1F21
      &:nth-child(1)
        transform rotate(0) translate(0, -37px) scaleX(-1)
      &:nth-child(2)
        transform rotate(80deg) translate(0, -37px) scaleX(-1) scaleY(-1)
        
      &:nth-child(3)
        transform rotate(160deg) translate(0, -37px)
    .week-arrow
      transform rotate(115deg) translate(35px,-8px)
  &:after
    content ""
    display block
    height 100px
    width 100px
    border-radius 50%
    background-color transparent
    transform rotate(-64deg)
    box-shadow 1px 2px 0 0px #d6d6d3
    position absolute
    left -2px
    top -28px
  .week-arrow
    position absolute
    top 50%
    left 50%
    transform translate(19px, 21px) rotate(22deg)
    width 45px
    height 2px 
    background-color #0f1743
    z-index 5
    &:after, &:before
      content ""
      position absolute
      display block
      height 14px
      width 14px
      background-color #ff5456
      border-radius 50%
      left -6px
      top -6px
      z-index -1
    &:after
      background-color #0f1743
      height 10px
      width 10px
      top -4px
      left -4px
      z-index -1
  div
    font-weight bold
    font-size 11px
    position absolute
    z-index 10
    height 12px
    width 12px
    display block
    color #d6d6d3
    &:nth-child(1)
      transform rotate(0) translate(0, -45px) 
    &:nth-child(2)
      transform rotate(25deg) translate(0, -45px) 
    &:nth-child(3)
      transform rotate(50deg) translate(0, -45px)
    &:nth-child(4)
      transform rotate(75deg) translate(0, -45px) 
    &:nth-child(5)
      transform rotate(100deg) translate(0, -45px)
    &:nth-child(6)
      transform rotate(125deg) translate(0 ,-45px)
      color #ff5456
    &:nth-child(7)
      transform rotate(150deg) translate(0 ,-45px) 
      
      
.watch-date
  position absolute
  top calc(50% - 100px)
  left 50%
  font-size 14px
  font-weight 600
  letter-spacing 1px
  transform translate(-50%, -50%)
.watch-alert
  position absolute
  top calc(50% + 100px)
  text-transform uppercase
  text-align center
  left 50%
  font-size 14px
  color #BFBCD8
  font-weight 600
  transform translate(-50%, -50%)
  strong
    color #FF0000
    font-weight 600

.watch-tips 
  height 300px
  width 300px
  position absolute
  top 50%
  left 50%
  transform translate(-50%, -50%) rotate(-90deg)
  z-index 11
    
.hours
  width 190px
  height 6px
  position absolute
  top calc(50% - 3px)
  left calc(50% - 30px)
  transform rotate(153deg)
  background-color #fff
  transform-origin 30px center
  box-shadow 0 4px 12px 2px rgba(#000,0.15)
  border-radius 0 20px 20px 0
  z-index 12
  &:after
    content ""
    display block
    position absolute
    left 23px
    top -5px
    height 14px
    width 14px
    background-color #fff
    border-radius 50%
.seconds
  width 197px
  height 2px
  position absolute
  top 50%
  left calc(50% - 30px)
  transform rotate(0deg)
  animation 10s seconds linear infinite
  background-color #FE0806
  transform-origin 30px center
  box-shadow 0 0 16px 2px rgba(#FE0806,0.2)
  border-radius 0 20px 20px 0
  z-index 15
  &:after
    content ""
    display block
    position absolute
    left 25px
    top -4px
    height 10px
    width 10px
    background-color #FE0806
    border-radius 50%
    z-index 15
.minutes
  width 170px
  height 6px
  position absolute
  top calc(50% - 3px)
  left calc(50% - 30px)
  transform rotate(15deg)
  background-color #000004
  transform-origin 30px center
  border-radius 0 20px 20px 0
  z-index 11

@keyframes seconds
  0%
    transform rotate(0deg)
  100%
    transform rotate(360deg)
    
.watch-lace
  width 0
  height 20px
  border-bottom 10px solid transparent
  border-top 10px solid transparent
  border-right 8px solid #32322A
  position absolute
  right -98px
  top calc(50% - 20px)
  border-radius 6px
  z-index 30
  transform scaleX(.9) scaleY(1.1)
  &:after
    content ""
    display block
    height 40px
    width 10px
    right -16px
    top -10px
    background-color #DEDEDE0
    border-radius 3px 
    position absolute
  &:before
    content ""
    display block
    height 40px
    width 4px
    background-color #C3C4CB
    background-image linear-gradient(to left, transparent, rgba(#000,0.1))
    z-index 20
    position absolute
    right -17px
    border-radius 4px
    top -10px
  span
    display block
    position absolute
    background-image linear-gradient(to left, #EAE9E9, transparent)
    height 4px
    width 20px
    top -4px
    left -10px
    transform rotate(-45deg)
    box-shadow 
      0 2px 2px 0 rgba(#fff,0.2)
    &.bottom
      top 18px
      transform rotate(45deg)
      background-image linear-gradient(to left, #EAE9E9, transparent)
      opacity .7
      
  div
    height 2px
    width 7px
    background-color #C4C4C4
    border 1px solid #999891
    position relative
    right -7px
    z-index 20
    top 7px
    &:nth-child(2)
      top -4px
    &:nth-child(3)
      top 6px

    &:nth-child(4)
      top -17px
      filter brightness(110%)
    &:nth-child(5)
      top 4px
      filter brightness(110%)
    &:nth-child(6)
      top -28px
      transform rotate(-4deg)
      filter brightness(115%)
      &:before
        transform rotate(-8deg)
    &:nth-child(7)
      top -1px
      transform rotate(4deg)
      filter brightness(115%)
      &:after
        transform rotate(8deg)
    &:after, &:before
      content ""
      position relative
      background-color #B8B8BB
      height 3px
      width 10px
      display block
      top 0px
      left -3px
      border-radius 3px
    &:before
      top -3px
      
.watch-day
  height 90px
  width 90px
  display block
  position absolute
  top 50%
  left 50%
  transform translate(42px, -23px)
  background-color #1341D1
  animation 8s day-bg infinite
  border-radius 50%
  overflow hidden
  box-shadow:
    inset 0 -1px 1px 1px #F6F6F6
  background-image:
    radial-gradient(#F6F6F6 18px, transparent 19px),
    radial-gradient(#F6F6F6 14px, transparent 15px),
    radial-gradient(#F6F6F6 18px, transparent 19px),
    radial-gradient(#F6F6F6 60px, transparent 61px)
  background-repeat no-repeat
  background-position:
    -28px 6px,
    0 6px,
    28px 6px,
    0 42px
    
.sun
  height 10px
  width 10px
  background-color transparent 
  position absolute
  border 3px solid #fff
  border-radius 50%
  left calc(50% - 8px)
  top 12px
  animation 8s sun infinite
  &:after
    content ""
    display block
    position absolute
    height 20px
    width 20px
    background-color #212045
    border-radius 50%
    top calc(50% - 10px)
    left calc(50% - 10px)
    animation 8s moon infinite
  div
    position absolute
    height 7px
    width 1px
    background-color #fff
    top calc(50% - 7px/2)
    left calc(50% - 1px) 
    border-radius 10px
    animation 8s sun-arms infinite
    &:after, &:before
      content ""
      display block
      height 7px
      width 2px
      background-color #fff
      position absolute
      left 1px
      border-radius 4px
      transform rotate(-10deg)
    &:before
      transform rotate(10deg)
      left -1px
    &:nth-child(1)
      transform rotate(0) translate(0, -9px)
    &:nth-child(2)
      transform rotate(45deg) translate(0, -9px)
    &:nth-child(3)
      transform rotate(90deg) translate(0, -9px)
    &:nth-child(4)
      transform rotate(135deg) translate(0, -9px)
    &:nth-child(5)
      transform rotate(180deg) translate(0, -9px)
    &:nth-child(6)
      transform rotate(225deg) translate(0, -9px)
    &:nth-child(7)
      transform rotate(270deg) translate(0, -9px)
    &:nth-child(8)
      transform rotate(315deg) translate(0, -9px)
    &:nth-child(9)
      transform rotate(360deg) translate(0, -9px)
      
@keyframes sun
  0%, 33%
    transform rotate(0)
    height 12px
    width 12px
  33%
    background-color #fff
    transform rotate(180deg)
    height 12px
    width 12px
  66% 
    transform rotate(180deg)
    background-color #fff
    height 12px
    width 12px
  100%
    background-color transparent
    transform rotate(360deg)
    height 10px
    width 10px
    
@keyframes sun-arms
  0%
    opacity 1
  20%, 55%
    opacity 0
  100%
    opacity 1
    
@keyframes moon
  0%
    transform translate(-14px, 14px)
    opacity 0
  25%
    transform translate(-14px, 14px)
    opacity 1
  45%
    transform translate(0px, 0px)
    opacity 1
  50%
    transform translate(14px, -14px)
    opacity 0
  50%
    opacity 0
  100%
    transform translate(0, 0)
    opacity 0
 
@keyframes day-bg
  0%
    background-color #2b7edc
  8%,50%
    background-color #212045
  60%
    background-color #1341D1
  100%
    background-color #2b7edc
View Compiled
// Pure CSS animation
// Based on: https://dribbble.com/shots/3440639-Swiss-watch-face-design-with-artificial-intelligence-by-Gleb

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.