doctype html
html(lang="es", dir="ltr")
    head
        meta(name="viewport", content="width=device-width, user-scalable=no, initial-scale=1.0")
        meta(charset="utf-8")
        link(rel="stylesheet", type="text/css", href="main.css")

    body#main
        a.button#button OPEN KEYBOARD
        div.main
            div.minitel#base
                div.minitel__b
                
                div.mt#mt
                    div.mt__front.face 
        
                        div.mta
                            div.mta__front.face 
                            div.mta__back.face 
                            div.mta__right.face 
                            div.mta__left.face 
                            div.mta__top.face 
                            div.mta__bottom.face 
                    div.mt__back.face 
                    div.mt__right.face 
                    div.mt__left.face 
                    div.mt__top.face 
                    
                        div.key-numbers
                            div.key-column
                                div.key-nb#9.key
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 9
                                    div.key-nb__bottom.face 
                                div.key-nb#8.key
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 8
                                    div.key-nb__bottom.face 
                                div.key-nb#7
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 7
                                    div.key-nb__bottom.face 
                            div.key-column
                                div.key-nb#6
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 6
                                    div.key-nb__bottom.face 
                                div.key-nb#5
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 5
                                    div.key-nb__bottom.face 
                                div.key-nb#4
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 4
                                    div.key-nb__bottom.face 
                            div.key-column
                                div.key-nb#3
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 3
                                    div.key-nb__bottom.face 
                                div.key-nb#2
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 2
                                    div.key-nb__bottom.face 
                                div.key-nb#1
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 1
                                    div.key-nb__bottom.face 
                            div.key-column
                                div.key-nb
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face *
                                    div.key-nb__bottom.face 
                                div.key-nb#0
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face 0
                                    div.key-nb__bottom.face 
                                div.key-nb
                                    div.key-nb__front.face 
                                    div.key-nb__back.face 
                                    div.key-nb__right.face 
                                    div.key-nb__left.face 
                                    div.key-nb__top.face #
                                    div.key-nb__bottom.face 
                    
                        div.keys    
                            div.key-column
                                div.key-b
                                    div.key-b__front.face 
                                    div.key-b__back.face 
                                    div.key-b__right.face 
                                    div.key-b__left.face 
                                    div.key-b__top.face 
                                    div.key-b__bottom.face 
                                div.key-b
                                    div.key-b__front.face 
                                    div.key-b__back.face 
                                    div.key-b__right.face 
                                    div.key-b__left.face 
                                    div.key-b__top.face 
                                    div.key-b__bottom.face 
                                div.key-b
                                    div.key-b__front.face 
                                    div.key-b__back.face 
                                    div.key-b__right.face 
                                    div.key-b__left.face 
                                    div.key-b__top.face  
                                    div.key-b__bottom.face 
                                div.key-b
                                    div.key-b__front.face 
                                    div.key-b__back.face 
                                    div.key-b__right.face 
                                    div.key-b__left.face 
                                    div.key-b__top.face 
                                    div.key-b__bottom.face 
                                div.key-b
                                    div.key-b__front.key-b__front--g.face 
                                    div.key-b__back.key-b__back--g.face 
                                    div.key-b__right.key-b__right--g.face 
                                    div.key-b__left.key-b__left--g.face 
                                    div.key-b__top.key-b__top--g.face 
                                    div.key-b__bottom.key-b__bottom--g.face 
                    
                            div.key-column
                                div.key#a
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face A
                                    div.key__bottom.face 
                                div.key#z
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face Z
                                    div.key__bottom.face 
                                div.key#e
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face E
                                    div.key__bottom.face 
                                div.key#r
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face R
                                    div.key__bottom.face 
                                div.key#t
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face T
                                    div.key__bottom.face 
                                div.key#y
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face Y
                                    div.key__bottom.face 
                                div.key#u
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face U
                                    div.key__bottom.face 
                                div.key#i
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face I
                                    div.key__bottom.face 
                                div.key#o
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face O
                                    div.key__bottom.face 
                                div.key#p
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face P
                                    div.key__bottom.face 
                                div.key#Backspace
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face 
                                    div.key__bottom.face 
                            div.key-column
                                div.key#q
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face Q
                                    div.key__bottom.face 
                                div.key#s
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face S
                                    div.key__bottom.face 
                                div.key#d
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face D
                                    div.key__bottom.face 
                                div.key#f
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face F
                                    div.key__bottom.face 
                                div.key#g
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face G
                                    div.key__bottom.face 
                                div.key#h
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face H
                                    div.key__bottom.face 
                                div.key#j
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face J
                                    div.key__bottom.face 
                                div.key#k
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face K
                                    div.key__bottom.face 
                                div.key#l
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face L
                                    div.key__bottom.face 
                                div.key#m
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face M
                                    div.key__bottom.face 
                                
                            div.key-column
                                div.key#w
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face W
                                    div.key__bottom.face 
                                div.key#x
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face X
                                    div.key__bottom.face 
                                div.key#c
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face C
                                    div.key__bottom.face 
                                div.key#v
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face V
                                    div.key__bottom.face 
                                div.key-s.key#espace
                                    div.key-s__front.face 
                                    div.key-s__back.face 
                                    div.key-s__right.face 
                                    div.key-s__left.face 
                                    div.key-s__top.key__top.face ESPACE
                                    div.key-s__bottom.face 
                                div.key#b
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face B
                                    div.key__bottom.face 
                                div.key#n
                                    div.key__front.face 
                                    div.key__back.face 
                                    div.key__right.face 
                                    div.key__left.face 
                                    div.key__top.face N
                                    div.key__bottom.face 
                                
                                
                    div.mt__bottom.face 
                //------------
                div.mfb
                    div.mfb__front.face #[span ASTAR]
                    div.mfb__back.face 
                    div.mfb__right.face 
                    div.mfb__left.face 
                    div.mfb__top.face 
                    div.mfb__bottom.face 
                div.mft
                    div.mft__front.face 
                    div.mft__back.face 
                    div.mft__right.face 
                    div.mft__left.face 
                    div.mft__top.face 
                    div.mft__bottom.face 
                div.mfl
                    div.mfl__front.face 
                    div.mfl__back.face 
                    div.mfl__right.face 
                    div.mfl__left.face 
                    div.mfl__top.face 
                    div.mfl__bottom.face 
                div.mfr
                    div.mfl__front.face 
                        div.led#led
                    div.mfl__back.face 
                    div.mfl__right.face 
                    div.mfl__left.face 
                    div.mfl__top.face 
                    div.mfl__bottom.face 
                //------------
                - var br = '<br>'
                div.mb
                    div.mb__front.face 
                        div.screen #[div.screen__shadow#screen-s] Star Key Labs: .115 !{br}!{br} #[span.text#screen]#[span.cursor ]
                    
                    div.mb__back.face 
                    div.mb__right.face 
                    div.mb__left.face 
                    div.mb__top.face 
                    div.mb__bottom.face 
                    
                div.ml
                    div.ml__front.face 
                    div.ml__back.face 
                    div.ml__right.face 
                    div.ml__left.face 
                    div.ml__top.face 
                    div.ml__bottom.face 
                
                div.mr
                    div.mr__front.face 
                    div.mr__back.face 
                    div.mr__right.face 
                    div.mr__left.face 
                    div.mr__top.face 
                    div.mr__bottom.face 
                
                div.mc
                    div.mc__front.face 
                    div.mc__back.face 
                    div.mc__right.face 
                    div.mc__left.face 
                    div.mc__top.face 
                    div.mc__bottom.face 
        
                div.mbl
                    div.mbl__front.face 
                    div.mbl__back.face 
                    div.mbl__right-1.face 
                    div.mbl__right-2.face 
                    div.mbl__left-1.face 
                    div.mbl__left-2.face 
                    div.mbl__top.face 
                    div.mbl__bottom.face 
                    
                div.mbl-2
                    div.mbl__front.face 
                    div.mbl__back.face 
                    div.mbl__right-1.face 
                    div.mbl__right-2.face 
                    div.mbl__left-1.face 
                    div.mbl__left-2.face 
                    div.mbl__top.face 
                    div.mbl__bottom.face 
        
        script(src="main.js")
View Compiled
$blue-1: #1CB5BE;
$blue-2: #006E85;
$blue-3: #175373;

$gray: rgba(60, 60, 120, 0.2);

$background: rgb(230,0,122);
$background: linear-gradient(90deg, rgba(230,0,122,1) 15%, rgba(0,112,235,1) 50%, rgba(10,226,255,1) 85%);

$beige-1: #FAF5EB;
$beige-2: #F7EFE4;
$beige-3: #A0A1A3;
$beige-a: #e4ddd2;

$brown-1: #B69992;
$brown-2: #7F6C78;
$brown-3: #574C65;

/***********************/
/***********************/
@mixin cube($width, $height, $depth) {
    &__front{ @include cube-front($width, $height, $depth); }
    &__back{ @include cube-back($width, $height, $depth); }
    &__right{ @include cube-right($width, $height, $depth); }
    &__left{ @include cube-left($width, $height, $depth); }
    &__top{ @include cube-top($width, $height, $depth);}
    &__bottom{ @include cube-bottom($width, $height, $depth); }
}
/************************/
/* Mixin para crear cubo ( Caras siempre al frente ) */
/************************/
@mixin cube-front($width, $height, $depth) {
    width: $width;
    height: $height;
    transform-origin: bottom left;
    transform: rotateX(-90deg) translateZ( -($height - ($depth * 2) ) );
}
@mixin cube-back($width, $height, $depth) {
    width: $width;
    height: $height;
    transform-origin: top left;
    transform: rotateX(-90deg) rotateY(180deg) translateX(-$width) translateY(-$height) ;
}
@mixin cube-right($width, $height, $depth) {
    width: $depth * 2;
    height: $height;
    transform-origin: top left;
    transform: rotateY(90deg) rotateZ(-90deg) translateZ($width) translateX(-$depth * 2) translateY(-$height);
}
@mixin cube-left($width, $height, $depth) {
    width: $depth * 2;
    height: $height;
    transform-origin: top left;
    transform: rotateY(-90deg) rotateZ(90deg) translateY(-$height);
}
@mixin cube-top($width, $height, $depth) {
    width: $width;
    height: $depth * 2;
    transform-origin: top left;
    transform: translateZ($height) ;
}
@mixin cube-bottom($width, $height, $depth) {
    width: $width;
    height: $depth * 2;
    transform-origin: top left;
    transform: rotateY(180deg) translateX(-$width);
}

/**/
*, *::after, *::before {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
    transform-style: preserve-3d;
    -webkit-tap-highlight-color: transparent;
}
/* Generic */
body{
  display: flex;
  justify-content: center;
  align-items: center;

    width: 100%;
    height: 100vh;
    background: rgb(230,0,122);
    background: linear-gradient(90deg, rgba(230,0,122,1) 15%, rgba(0,112,235,1) 50%, rgba(10,226,255,1) 85%);
    overflow: hidden;
    min-height: 300px;
    min-width: 400px;

    font-family: monospace;
    color: white;
    font-size: .6vmax;
}

.face{ position: absolute; }
/***************/
.main{
    width: 30vmax;
    height: 30vmax;
}
.minitel{
    position: relative;
    width: 26vmax;
    height: 30vmax;
    transform:
        perspective(10000px)
        rotateX(52deg)
        rotateZ(-46deg)
        scale(.8)
        translateZ(-10vmax)
    ;
    transition: transform .5s ease;
    background-color: $gray;
    box-shadow:
        -5vmax -5vmax 0 $gray,
        -5vmax 0vmax 0 $gray,
        0vmax -5vmax 0 $gray
    ;

    &__b{
        width: 100%;
        height: 100%;
        background-color: $blue-3;
        position: relative;
        transform: translateZ(-1px) ;

    }
    &::before,
    &::after{
        content: '';
        position: absolute;
        left: -30%;
        bottom: 5%;
        width: 40%;
        height: 115%;
        transform: translateZ(-1px) skewY(10deg);
        background-color: $gray;
    }
    &::after{
        height: 60%;
        width: 40%;
        top: -30%;
        transform: skewY(10deg);
        border-top-left-radius: 10%;
        border-bottom-left-radius: 10%;
    }
}

/******************/
.button{
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    left: 50%;
    bottom: 50px;
    width: 130px;
    height: 30px;
    z-index: 10000;
    transform: translateX(-50%) translateZ(10000px);
    font-size: 12px;
    letter-spacing: .5px;

    background-color: $blue-2;
    color: white;
    cursor: pointer;
    transition: hover .35s ease;

    @media (min-width: 830px){
        left: calc(100% - 180px);
        transform:translateZ(10000px);
    }

    &:hover{
        background-color: $blue-3;
        transition: .35s ease;
    }
}

.text{ word-break: break-all; }
.cursor{
    display: inline-block;
    width: .75vmax;
    margin-left: .25vmax;
    border-bottom: .2vmax solid white;
    animation: cursor 1s ease infinite;
}
.led{
    position: absolute;
    bottom: 0;
    left: 50%;
    height: .5vmax;
    width: .5vmax;
    transform: translateX(-50%);
    background-color: $brown-3;
    border-radius: 50%;
    transition: 2s ease;
}
.screen{
    position: absolute;
    top: 2vmax;
    left: 2vmax;
    width: 22vmax;
    height: 14vmax;
    transform: translateZ(2vmax);
    overflow: hidden;
    padding: 3.2vmax 3vmax;
    font-size: 1vmax;
    text-transform: uppercase;
    color: rgba(white, .75);
    letter-spacing: .2vmax;

    background-color: $blue-2;
    box-shadow:
            inset .5vmax .5vmax .5vmax $blue-3,
            inset -.5vmax -.5vmax .5vmax $blue-3;
    &::before{
        content: '';
        position: absolute;
        top: 0;
        left: 50%;
        width: 180%;
        height: 24%;
        transform: translateX(-50%);

        background-image: linear-gradient(to bottom, $blue-3, rgba($blue-3, .3) );
        border-bottom-left-radius: 50%;
        border-bottom-right-radius: 50%;
    }
    &::after{
        content: '';
        position: absolute;
        top: 26%;
        left: 12%;
        width: 25%;
        height: 65%;
        border-radius: .4vmax;
        background-image: linear-gradient(120deg, rgba(white, .045),  transparent );

    }
    &__shadow{
        position: absolute;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 10%;
        background-image: linear-gradient(to top, rgba($brown-3, .2) ,rgba($brown-2, .5), rgba($brown-2, .3) );
        border-top-left-radius: 50%;
        border-top-right-radius: 50%;
        filter: blur(.3vmax);
        transition: 2s ease;

    }
}
/*********************/


.keys{
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    align-items: flex-start;

    position: absolute;
    top: 7%;
    left: 5%;
    width: 90%;
    height: 86%;
    transform: translateZ(-.25vmax);
    transition: transform .1s ease;
    .key-column{

        &:nth-of-type(1){ width: 75%; }
        &:nth-of-type(3){ margin-left: 1vmax; }
        &:nth-of-type(4){ margin-left: .5vmax; }
    }
}

$width-mt: 1.2vmax;
$height-mt: .5vmax;
$depth-mt: .4vmax;

.key{
    @include cube($width-mt, $height-mt, $depth-mt);
    width: $width-mt;
    height: $depth-mt;
    position: relative;
    bottom: 0;
    &-column{
        display: flex;
        justify-content: space-between;
        position: relative;
        width: 70%;
        height: 1vmax;
        margin-top: .4vmax;
    }
    &-numbers{
        position: absolute;
        bottom: 8%;
        right: 7%;
        height: 27%;
        width: 15%;
        transform: translateZ(-.25vmax);
        .key-column{
            width: 100%;
            margin-top: 0vmax;
            align-items: flex-end;
        }

    }

    &__front{ background-color:  darken($brown-2, 5); }
    &__back{ background-color: darken($brown-2, 5); }
    &__right{ background-color:  darken($brown-1, 5); }
    &__left{ background-color:  darken($brown-3, 5); }
    &__top{
        display: flex;
        justify-content: center;
        align-items: center;
        background-color: darken($brown-1, 5);
    }
    &__bottom{ background-color:  darken($brown-3, 5); }
}



$width-mtsp: 1vmax;
$height-mtsp: .5vmax;
$depth-mtsp: .3vmax;

.key-nb{
    @include cube($width-mtsp, $height-mtsp, $depth-mtsp);
    width: $width-mtsp;
    height: $depth-mtsp;
    position: relative;
    bottom: 0;
    &__front{ background-color:  lighten($brown-3, 10); }
    &__back{ background-color:  darken($brown-2, 5); }
    &__right{ background-color:  darken($brown-1, 5); }
    &__left{ background-color:  darken($brown-3, 5); }
    &__top{
        display: flex;
        justify-content: center;
        align-items: center;

        background-color:  lighten($brown-3, 25);
        color: white;
        font-size: .7vmax;
    }
    &__bottom{ background-color:  darken($brown-3, 5); }
}


$width-mtsp: 5vmax;
$height-mtsp: .5vmax;
$depth-mtsp: .4vmax;


.key-s{
    @include cube($width-mtsp, $height-mtsp, $depth-mtsp);
    width: $width-mtsp;
    height: $depth-mtsp;
    position: relative;
    bottom: 0;
    &__front{ background-color:  darken($brown-2, 5); }
    &__back{ background-color:  darken($brown-2, 5); }
    &__right{ background-color:  darken($brown-1, 5); }
    &__left{ background-color:  darken($brown-3, 5); }
    &__top{
        display: flex;
        justify-content: center;
        align-items: center;
        background-color:  darken($brown-1, 5);
    }
    &__bottom{ background-color:  darken($brown-3, 5); }
}

$width-mtsp: 3vmax;
$height-mtsp: .4vmax;
$depth-mtsp: .3vmax;


.key-b{
    @include cube($width-mtsp, $height-mtsp, $depth-mtsp);
    width: $width-mtsp;
    height: $depth-mtsp;
    position: relative;
    bottom: 0;

    &__front{
        background-color:  lighten($beige-3, 10);
        &--g{ background-color:  darken($blue-2, 5); }
    }
    &__back{
        background-color:  darken($beige-2, 5);
        &--g{ background-color:  darken($blue-2, 5); }
    }
    &__right{
        background-color:  darken($beige-1, 5);
        &--g{ background-color:  darken($blue-1, 5); }
    }
    &__left{
        background-color:  darken($beige-3, 5);
        &--g{ background-color:  darken($blue-3, 5); }
    }
    &__top{
        display: flex;
        justify-content: center;
        align-items: center;

        background-color:  lighten($beige-3, 25);
        color: $brown-3;
        font-size: .7vmax;
        &--g{
            background-color:  darken($blue-1, 5);
            color: white;
        }

    }
    &__bottom{
        background-color:  darken($beige-3, 5);
        &--g{ background-color:  darken($blue-3, 5); }
    }
}


$width-mt: 24vmax;
$height-mt: 1vmax;
$depth-mt: 8vmax;


.mt{
    @include cube($width-mt, $height-mt, $depth-mt);
    width: $width-mt;
    height: $depth-mt;
    position: absolute;
    bottom: 9vmax;
    left: 1vmax;
    transform: translateZ(.5vmax);
    transition: bottom 2s;

    &__front{
        width: $width-mt;
        height: $height-mt * 1.5;
        transform-origin: bottom left;
        transform: rotateX(-90deg) translateZ( -($height-mt - ($depth-mt * 1.95))  ) translateY(.25vmax);
    }
    &__back{ background-color: $brown-1; }
    &__right{ background-color: $brown-1; }
    &__left{ background-color: $brown-3; }
    &__top{ background-image: linear-gradient(to bottom, $brown-3 50% , darken($brown-1, 5) 50%); }
    &__bottom{ background-color: $brown-3; }
}

.mt-is-open{
    bottom: 0vmax;
    transition: bottom 2s;
}

$width-mta: 26vmax;
$height-mta: .75vmax;
$depth-mta: .75vmax;
.mta{
    @include cube($width-mta, $height-mta, $depth-mta);
    width: $width-mta;
    height: $depth-mta;
    position: absolute;
    left: -1vmax;

    &__front{ background-color: $brown-3; }
    &__back{ background-color: $brown-1; }
    &__right{ background-color: $brown-1; }
    &__left{ background-color: $brown-3; }
    &__top{ background-color: $brown-2; }
    &__bottom{ background-color: $brown-3; }
}


$width-mfb: 26vmax;
$height-mfb: 2vmax;
$depth-mfb: 2vmax;

.mfb,
.mft{
    @include cube($width-mfb, $height-mfb, $depth-mfb);
    width: $width-mfb;
    height: $depth-mfb;
    position: absolute;
    bottom: 2vmax;
    transform: translateZ(2vmax);

    &__front{
        display: flex;
        align-items: center;
        background-color: $brown-2;
        padding-left: 2vmax;

        > span{
            padding: .075vmax .4vmax;
            letter-spacing: .1vmax;
            font-size: .7vmax;
            font-style: italic;
            color: $beige-2;
            line-height: 1;
            border: .1vmax solid $beige-2;
        }
    }
    &__back{ background-color: transparent; }
    &__right{ background-color: $brown-2; }
    &__left{ background-color: $brown-3; }
    &__top{ background-color: $brown-1; }
    &__bottom{ background-color: $brown-3; }

}
.mfb{
    &__top{
        background-image: linear-gradient(to bottom,  lighten($brown-3, 2) 60%,  $brown-1 65%);
        overflow: hidden;
        &::before{
            content: '';
            position: absolute;
            top: 0;
            right: 2vmax;
            width: 5%;
            height: 120%;
            transform: rotateZ(-20deg);
            background-color: lighten($brown-3, 2);
        }
    }
}

.mft{ transform: translateZ(18vmax); }


$width-mfl: 2vmax;
$height-mfl: 14vmax;
$depth-mfl: 2vmax;

.mfl,
.mfr{
    @include cube($width-mfl, $height-mfl, $depth-mfl);
    width: $width-mfl;
    height: $depth-mfl;
    position: absolute;
    bottom: 2vmax;
    transform: translateZ(4vmax);

    &__front{ background-color: $brown-2; }
    &__back{ background-color: transparent; }
    &__right{ background-color: $brown-2; }
    &__left{ background-color: $brown-3; }
    &__top{ background-color: transparent; }
    &__bottom{ background-color: transparent; }

}
.mfr{ right: 0; }

$width-mb: 26vmax;
$height-mb: 20vmax;
$depth-mb: 3vmax;
.mb{
    @include cube($width-mb, $height-mb, $depth-mb);
    width: $width-mb;
    height: $depth-mb;
    position: absolute;
    bottom: 7vmax;

    &__front{ background-color: $beige-3; }
    &__back{ background-color: $beige-1; }
    &__right{ background-color: $beige-1; }
    &__left{ background-color: $beige-3; }
    &__top{ background-color: $beige-1; }
    &__bottom{ background-color: $beige-3; }
}


$width-ml: 7vmax;
$height-ml: 20vmax;
$depth-ml: 7vmax;
.ml{
    @include cube($width-ml, $height-ml, $depth-ml);
    width: $width-ml;
    height: $depth-ml;
    position: absolute;
    bottom: 17vmax;

    &__front{ background-color: transparent; }
    &__back{ background-color: $beige-1; }
    &__right{ background-color: $beige-1; }
    &__left{ background-color: $beige-3; }
    &__top{ background-color: $beige-1; }
    &__bottom{background-color: $beige-3; }

}

$width-mr: 7vmax;
$height-mr: 20vmax;
$depth-mr: 7vmax;
.mr{
    @include cube($width-mr, $height-mr, $depth-mr);
    width: $width-mr;
    height: $depth-mr;
    position: absolute;
    bottom: 17vmax;
    right: 0vmax;

    &__front{ background-color: transparent; }
    &__back{ background-color: $beige-2; }
    &__right{ background-color: $beige-1; }
    &__left{ background-color: $beige-a; }
    &__top{ background-color: $beige-1; }
    &__bottom{ background-color: $beige-3; }
}

$width-mc: 12vmax;
$height-mc: 16vmax;
$depth-mc: 10vmax;
.mc{
    @include cube($width-mc, $height-mc, $depth-mc);
    width: $width-mc;
    height: $depth-mc;
    position: absolute;
    bottom: 20vmax;
    left: 7vmax;

    &__front{ background-color: $beige-1; }
    &__back{ background-color: $beige-a; }
    &__right{ background-color: $beige-1; }
    &__left{ background-color: $beige-2; }
    &__top{ background-color: $beige-2; }
    &__bottom{ background-color: $beige-2;  }
}



$width-ml: 7vmax;
$height-ml: 20vmax;
$depth-ml: 3vmax;

.mbl,
.mbl-2{
    width: $width-ml;
    height: $depth-ml;
    position: absolute;
    top: 0;


    &__front{
        width: $width-ml;
        height: $height-ml;
        transform-origin: bottom left;
        transform: rotateX(-90deg) translateZ( -($height-ml - ($depth-ml * 2) ) );
        background-color: transparent;
    }
    &__back{
        width: $width-ml;
        height: #{ $height-ml - 2.2vmax } ;
        transform-origin: top left;
        transform: rotateX(-90deg) rotateY(180deg) translateX(-$width-ml) translateY(- #{ $height-ml - 1.2vmax }) ;

        background-color: $beige-a;
    }
    &__right-1{
        width: $depth-ml * 2;
        height: #{$height-ml / 2 };
        transform-origin: top left;
        transform: rotateY(90deg) rotateZ(-90deg) translateZ($width-ml) translateX(-$depth-ml * 2) translateY(-#{$height-ml / 2 });

        background-image: linear-gradient(-10deg, transparent 1vmax, $beige-1 1vmax);
    }
    &__right-2{
        width: $depth-ml * 2;
        height: #{$height-ml / 2 };
        transform-origin: top left;
        transform: rotateY(90deg) rotateZ(-90deg) translateZ($width-ml) translateX(-$depth-ml * 2) translateY(-#{$height-ml});

        background-image: linear-gradient(11deg, $beige-1 9.8vmax, transparent 9.8vmax );
    }
    &__left-1{
        width: $depth-ml * 2;
        height: #{$height-ml / 2 };
        transform-origin: top left;
        transform: rotateY(-90deg) rotateZ(90deg) translateY(-#{$height-ml / 2 });

        background-image: linear-gradient(10deg, transparent 1vmax, $beige-3 1vmax );
    }
    &__left-2{
        width: $depth-ml * 2;
        height: #{$height-ml / 2 };
        transform-origin: top left;
        transform: rotateY(-90deg) rotateZ(90deg) translateY(-#{$height-ml  });

        background-image: linear-gradient(
            -11deg,
            $beige-3 5vmax,
            darken($beige-3, 10) 5vmax,
            darken($beige-3, 10) 5.5vmax,
            $beige-3 5.5vmax,
            $beige-3 6.5vmax,
            darken($beige-3, 10) 6.5vmax,
            darken($beige-3, 10) 7vmax,
            $beige-3 7vmax,
            $beige-3 9.8vmax,
            transparent 9.8vmax
        );

    }
    &__top{
        width: $width-ml;
        height: #{$depth-ml * 2.05};
        transform-origin: bottom left;
        transform: translateZ(#{$height-ml - .1vmax }) translateY(-.085vmax)  rotateX(11deg);

        background-color: $beige-2;
    }
    &__bottom{

        width: $width-ml;
        height: $depth-ml * 2;
        transform-origin: bottom left;
        transform: rotateY(180deg) translateX(-$width-ml) rotateX(10deg);
        background-color: $beige-3;
    }

}

.mbl-2{
    right: 0;
    .mbl__left-1{ background-image: linear-gradient(10deg, transparent 1vmax, $beige-a 1vmax ); }
    .mbl__left-2{ background-image: linear-gradient(-11deg, $beige-a 9.8vmax, transparent 9.8vmax );}
}

/***********/
.is-led-on{
    background-color: #e31b4e;
    transition: 2s ease;
    animation: cursor 2s infinite;
}
.is-key-pressed{
    transform: translateZ(-.1vmax);
    transition: transform .1s ease;
    .key__top{
        &::before{
            content: '';
            position: absolute;
            width: 100%;
            height: 100%;
            background-color: rgba($blue-1, .5);
        }
    }
}
.is-shadow-big{
    height: 30%;
    transition: 2s ease;
}

@keyframes cursor {
    0%{opacity: .75}
    100%{opacity: .25}
}
View Compiled
/*
    Designed by: Guillaume Kurkdjian 
    Original image: https://electronicitems.tumblr.com/page/2
*/



const main = document.querySelector("#main");
const base = document.querySelector("#base");

const button = document.querySelector("#button");
const key = document.querySelectorAll(".key")
const mt = document.querySelector("#mt");
const sc = document.querySelector("#screen");
const scs = document.querySelector("#screen-s");
const lef = document.querySelector("#led");

let con = 0;
let state= true;




let addKey = (e) => {
    let kc = event.keyCode;
    let kp = event.key;

    if( (kc >= 65 && kc <= 90) ) {
        console.log("valid")
        let current = document.querySelector(`#${kp}`);

        current.classList.add("is-key-pressed");
        sc.innerHTML += kp;
        con++;
    }

    if (kc == 32) {
        sc.innerHTML += "&nbsp;";
        document.querySelector('#espace').classList.add("is-key-pressed");
    }
    if (kc == 8) {
        sc.innerHTML = "";
        document.querySelector('#Backspace').classList.add("is-key-pressed");
    }
    if (con > 40) { sc.innerHTML = ""; con = 0; }
}

let removeKey = (e) => {
    let kp = event.key;
    let kc = event.keyCode;

    if( (kc >= 65 && kc <= 90) ) {
        let current = document.querySelector(`#${kp}`);
        current.classList.remove("is-key-pressed");
    }
    if (kc == 8)
        document.querySelector('#Backspace').classList.remove("is-key-pressed");

    if (kc == 32)
        document.querySelector('#espace').classList.remove("is-key-pressed");
}


let kb = (e) => {
    mt.classList.toggle("mt-is-open");
    scs.classList.toggle("is-shadow-big");
    led.classList.toggle("is-led-on");

    if ( state ) {
        window.addEventListener("keydown", addKey);
        window.addEventListener("keyup", removeKey);
        state = false;
    }
    else if ( !state ) {
        window.removeEventListener("keydown", addKey);
        window.removeEventListener("keyup", removeKey);
        state = true;
    }
}

let rtBase = (e) => {
    var x = e.pageX / window.innerWidth - 0.5;
    var y = e.pageY / window.innerHeight - 0.5;
    base.style.transform = `
        perspective(10000px)
        rotateX(${ y * 10  + 60}deg)
        rotateZ(${ - x * 30  - 20}deg)
        scale(.8)
        translateZ(-10vmax)

    `;
}

    function runOnKeys(func, ...codes) {
      let pressed = new Set();

      document.addEventListener('keydown', function(event) {
        pressed.add(event.code);

        for (let code of codes) { // are all keys in the set?
          if (!pressed.has(code)) {
            return;
          }
        }

        // yes, they are

        // during the alert, if the visitor releases the keys,
        // JavaScript does not get the "keyup" event
        // and pressed set will keep assuming that the key is pressed
        // so, to evade "sticky" keys, we reset the status
        // if the user wants to run the hotkey again - let them press all keys again
        pressed.clear();

        func();
      });

      document.addEventListener('keyup', function(event) {
        pressed.delete(event.code);
      });

    }

    runOnKeys(
      () => alert("Welcome to Star Key Labs"),
      "KeyS",
      "KeyK",
      "KeyL"
    );

main.addEventListener("mousemove", rtBase);
button.addEventListener("click", kb);

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.