Building a Pure CSS 3D Kitchen

Share your love

What if you could design a fully functional 3D kitchen entirely in CSS? No images, no JavaScript—just the magic of HTML and CSS! In this blog, we’ll create a visually stunning kitchen scene featuring cabinets, a countertop, appliances, and more. Using CSS 3D transforms, gradients, and shadows, we’ll bring depth and realism to every element of the kitchen. Perfect for honing your front-end skills or showcasing your CSS expertise, this project combines creativity and code to build a space where design truly sizzles. Let’s step into the (virtual) kitchen and start cooking up something amazing!

I would recommend you don’t just copy and paste the code, just look at the code and type by understanding it.

Demo

See the Pen 3D Kitchen – Pure CSS by Ricardo Oliva Alonso (@ricardoolivaalonso) on CodePen.

HTML Code 

Starter Template

<!doctype html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSS -->
    <link rel="stylesheet" href="style.css">

    <title>Coding Torque</title>
</head>

<body>
    <!-- Further code here -->

</body>

</html>

Paste the below code in your <body> tag.

audio#a1: source(src="https://rawcdn.githack.com/ricardoolivaalonso/Codepen/0283d2e98cec2eb2be3911bece095000272bb1ca/Kitchen/audio/door.mp3",type="audio/mpeg")
audio#a2: source(src="https://rawcdn.githack.com/ricardoolivaalonso/Codepen/0283d2e98cec2eb2be3911bece095000272bb1ca/Kitchen/audio/hadoor.mp3",type="audio/mpeg")
audio#a3: source(src="https://rawcdn.githack.com/ricardoolivaalonso/Codepen/0283d2e98cec2eb2be3911bece095000272bb1ca/Kitchen/audio/tablet.mp3",type="audio/mpeg")
audio#a4: source(src="https://rawcdn.githack.com/ricardoolivaalonso/Codepen/0283d2e98cec2eb2be3911bece095000272bb1ca/Kitchen/audio/hac.mp3",type="audio/mpeg")
audio#a5: source(src="https://rawcdn.githack.com/ricardoolivaalonso/Codepen/0283d2e98cec2eb2be3911bece095000272bb1ca/Bedroom/sounds/buro.mp3",type="audio/mpeg")
        
div.main#h
    div.shadow.shadow--1
    div.shadow.shadow--2
    div.shadow.shadow--3
    div.shadow.shadow--4

    div.floor
        div.floor__front.face 
        div.floor__back.face 
        div.floor__right.face 
        div.floor__left.face 
        div.floor__top.face 
        div.floor__bottom.face
    div.wall-t  
        div.wall-t__front.face 
        div.wall-t__back.face 
        div.wall-t__right.face 
        div.wall-t__left.face 
        div.wall-t__top.face 
        div.wall-t__bottom.face
    div.wall-la
        div.wall-la__front.face 
        div.wall-la__back.face 
        div.wall-la__right.face 
        div.wall-la__left.face 
        div.wall-la__top.face 
        div.wall-la__bottom.face
    div.wall-lb
        div.wall-lb__front.face 
        div.wall-lb__back.face 
        div.wall-lb__right.face 
        div.wall-lb__left.face 
        div.wall-lb__top.face 
        div.wall-lb__bottom.face
    div.wall-lc
        div.wall-lc__front.face 
        div.wall-lc__back.face 
        div.wall-lc__right.face 
        div.wall-lc__left.face 
        div.wall-lc__top.face 
        div.wall-lc__bottom.face
    div.door
        div.door-l
            div.door-l__front.face 
            div.door-l__back.face 
            div.door-l__right.face 
            div.door-l__left.face 
            div.door-l__top.face 
            div.door-l__bottom.face
        div.door-r
            div.door-r__front.face 
            div.door-r__back.face 
            div.door-r__right.face 
            div.door-r__left.face 
            div.door-r__top.face 
            div.door-r__bottom.face
        div.door-t
            div.door-t__front.face 
            div.door-t__back.face 
            div.door-t__right.face 
            div.door-t__left.face 
            div.door-t__top.face 
            div.door-t__bottom.face
        div.door-1
            div.door__glass
            div.door-1r
                div.door-1r__front.face 
                div.door-1r__back.face 
                div.door-1r__right.face 
                div.door-1r__left.face 
                div.door-1r__top.face 
                div.door-1r__bottom.face
            div.door-1l
                div.door-1l__front.face 
                div.door-1l__back.face 
                div.door-1l__right.face 
                div.door-1l__left.face 
                div.door-1l__top.face 
                div.door-1l__bottom.face
            div.door-1b
                div.door-1b__front.face 
                div.door-1b__back.face 
                div.door-1b__right.face 
                div.door-1b__left.face 
                div.door-1b__top.face 
                div.door-1b__bottom.face
            div.door-1c
                div.door-1c__front.face 
                div.door-1c__back.face 
                div.door-1c__right.face 
                div.door-1c__left.face 
                div.door-1c__top.face 
                div.door-1c__bottom.face
            div.door-1c2
                div.door-1c2__front.face 
                div.door-1c2__back.face 
                div.door-1c2__right.face 
                div.door-1c2__left.face 
                div.door-1c2__top.face 
                div.door-1c2__bottom.face
            div.door-1t
                div.door-1t__front.face 
                div.door-1t__back.face 
                div.door-1t__right.face 
                div.door-1t__left.face 
                div.door-1t__top.face 
                div.door-1t__bottom.face
        div.door-2#door
            div.door__glass
            div.door-1r
                div.door-1r__front.face 
                div.door-1r__back.face 
                div.door-1r__right.face 
                div.door-1r__left.face 
                div.door-1r__top.face 
                div.door-1r__bottom.face
            div.door-1l
                div.door-1l__front.face 
                div.door-1l__back.face 
                div.door-1l__right.face 
                div.door-1l__left.face 
                div.door-1l__top.face 
                div.door-1l__bottom.face
            div.door-1b
                div.door-1b__front.face 
                div.door-1b__back.face 
                div.door-1b__right.face 
                div.door-1b__left.face 
                div.door-1b__top.face 
                div.door-1b__bottom.face
            div.door-1c
                div.door-1c__front.face 
                div.door-1c__back.face 
                div.door-1c__right.face 
                div.door-1c__left.face 
                div.door-1c__top.face 
                div.door-1c__bottom.face
            div.door-1c2
                div.door-1c2__front.face 
                div.door-1c2__back.face 
                div.door-1c2__right.face 
                div.door-1c2__left.face 
                div.door-1c2__top.face 
                div.door-1c2__bottom.face
            div.door-1t
                div.door-1t__front.face 
                div.door-1t__back.face 
                div.door-1t__right.face 
                div.door-1t__left.face 
                div.door-1t__top.face 
                div.door-1t__bottom.face
    div.fence
        div.fence__shadow-c
            div.fence__shadow
        div.fence-l
            div.fence-l__front.face 
            div.fence-l__back.face 
            div.fence-l__right.face 
            div.fence-l__left.face 
            div.fence-l__top.face 
            div.fence-l__bottom.face 
        div.fence-r
            div.fence-r__front.face 
            div.fence-r__back.face 
            div.fence-r__right.face 
            div.fence-r__left.face 
            div.fence-r__top.face 
            div.fence-r__bottom.face 
        div.fence-b
            div.fence-b__front.face 
            div.fence-b__back.face 
            div.fence-b__right.face 
            div.fence-b__left.face 
            div.fence-b__top.face 
            div.fence-b__bottom.face 
        div.fence-t
            div.fence-t__front.face 
            div.fence-t__back.face 
            div.fence-t__right.face 
            div.fence-t__left.face 
            div.fence-t__top.face 
            div.fence-t__bottom.face 
        div.fence-mc
            - var n = 0
            while n < 15
                div.fence-m
                    div.fence-m__front.face 
                    div.fence-m__back.face 
                    div.fence-m__right.face 
                    div.fence-m__left.face 
                    div.fence-m__top.face 
                    div.fence-m__bottom.face 
                - n++
    div.table.flex
        div.table-t
            div.table-t__front.face 
            div.table-t__back.face 
            div.table-t__right.face 
            div.table-t__left.face 
            div.table-t__top.face 
            div.table-t__bottom.face 
        div.table-b
            div.table-b__front.face 
            div.table-b__back.face 
            div.table-b__right.face 
            div.table-b__left.face 
            div.table-b__top.face 
            div.table-b__bottom.face 
    div.tablet#tablet
        div.tablet__heart#heart
        div.tablet__front.face 
        div.tablet__back.face 
        div.tablet__right.face 
        div.tablet__left.face 
        div.tablet__top.face 
        div.tablet__bottom.face
    div.ha-c
        div.ha1
            div.ha-l
                div.ha-l__front.face 
                div.ha-l__back.face 
                div.ha-l__right.face 
                div.ha-l__left.face 
                div.ha-l__top.face 
                div.ha-l__bottom.face 
            div.ha-r
                div.ha-r__front.face 
                div.ha-r__back.face 
                div.ha-r__right.face 
                div.ha-r__left.face 
                div.ha-r__top.face 
                div.ha-r__bottom.face 
            div.ha-bc
                div.ha-bc__front.face 
                div.ha-bc__back.face 
                div.ha-bc__right.face 
                div.ha-bc__left.face 
                div.ha-bc__top.face 
                div.ha-bc__bottom.face 
            div.ha-b
                div.ha-b__front.face 
                div.ha-b__back.face 
                div.ha-b__right.face 
                div.ha-b__left.face 
                div.ha-b__top.face 
                div.ha-b__bottom.face 
            div.ha-t
                div.ha-t__front.face 
                div.ha-t__back.face 
                div.ha-t__right.face 
                div.ha-t__left.face 
                div.ha-t__top.face 
                div.ha-t__bottom.face 
            div.ha-doors
                div.ha-doorl#hadool
                    div.ha-doorl__front.face 
                    div.ha-doorl__back.face 
                    div.ha-doorl__right.face 
                    div.ha-doorl__left.face 
                    div.ha-doorl__top.face 
                    div.ha-doorl__bottom.face 
                div.ha-doorr
                    div.ha-doorr__front.face 
                    div.ha-doorr__back.face 
                    div.ha-doorr__right.face 
                    div.ha-doorr__left.face 
                    div.ha-doorr__top.face 
                    div.ha-doorr__bottom.face 
        div.hac
            div.ha-l
                div.ha-l__front.face 
                div.ha-l__back.face 
                div.ha-l__right.face 
                div.ha-l__left.face 
                div.ha-l__top.face 
                div.ha-l__bottom.face 
            div.ha-r
                div.ha-r__front.face 
                div.ha-r__back.face 
                div.ha-r__right.face 
                div.ha-r__left.face 
                div.ha-r__top.face 
                div.ha-r__bottom.face 
            div.ha-bc
                div.ha-bc__front.face 
                div.ha-bc__back.face 
                div.ha-bc__right.face 
                div.ha-bc__left.face 
                div.ha-bc__top.face 
                div.ha-bc__bottom.face 
            div.ha-b
                div.ha-b__front.face 
                div.ha-b__back.face 
                div.ha-b__right.face 
                div.ha-b__left.face 
                div.ha-b__top.face 
                div.ha-b__bottom.face 
            div.ha-t
                div.ha-t__front.face 
                div.ha-t__back.face 
                div.ha-t__right.face 
                div.ha-t__left.face 
                div.ha-t__top.face 
                div.ha-t__bottom.face 
            div.ha-doors
                div.ha-doorf#hac
                    div.ha-doorf__front.face 
                    div.ha-doorf__back.face 
                    div.ha-doorf__right.face 
                    div.ha-doorf__left.face 
                    div.ha-doorf__top.face 
                    div.ha-doorf__bottom.face 
        div.ha2
            div.ha-l
                div.ha-l__front.face 
                div.ha-l__back.face 
                div.ha-l__right.face 
                div.ha-l__left.face 
                div.ha-l__top.face 
                div.ha-l__bottom.face 
            div.ha-r
                div.ha-r__front.face 
                div.ha-r__back.face 
                div.ha-r__right.face 
                div.ha-r__left.face 
                div.ha-r__top.face 
                div.ha-r__bottom.face 
            div.ha-bc
                div.ha-bc__front.face 
                div.ha-bc__back.face 
                div.ha-bc__right.face 
                div.ha-bc__left.face 
                div.ha-bc__top.face 
                div.ha-bc__bottom.face 
            div.ha-b
                div.ha-b__front.face 
                div.ha-b__back.face 
                div.ha-b__right.face 
                div.ha-b__left.face 
                div.ha-b__top.face 
                div.ha-b__bottom.face 
            div.ha-t
                div.ha-t__front.face 
                div.ha-t__back.face 
                div.ha-t__right.face 
                div.ha-t__left.face 
                div.ha-t__top.face 
                div.ha-t__bottom.face 
            div.ha-doors
                div.ha-doorl
                    div.ha-doorl__front.face 
                    div.ha-doorl__back.face 
                    div.ha-doorl__right.face 
                    div.ha-doorl__left.face 
                    div.ha-doorl__top.face 
                    div.ha-doorl__bottom.face 
                div.ha-doorr#hadoor
                    div.ha-doorr__front.face 
                    div.ha-doorr__back.face 
                    div.ha-doorr__right.face 
                    div.ha-doorr__left.face 
                    div.ha-doorr__top.face 
                    div.ha-doorr__bottom.face 
    div.cupboards#cup    
        div.cupboard-l
            div.cupboard-l__front.face 
            div.cupboard-l__back.face 
            div.cupboard-l__right.face 
            div.cupboard-l__left.face 
            div.cupboard-l__top.face 
            div.cupboard-l__bottom.face 
        div.cupboard-r
            div.cupboard-r__front.face 
            div.cupboard-r__back.face 
            div.cupboard-r__right.face 
            div.cupboard-r__left.face 
            div.cupboard-r__top.face 
            div.cupboard-r__bottom.face 
        div.cupboard-tl
            div.cupboard-tl__front.face 
            div.cupboard-tl__back.face 
            div.cupboard-tl__right.face 
            div.cupboard-tl__left.face 
            div.cupboard-tl__top.face 
            div.cupboard-tl__bottom.face 
        div.cupboard-tr
            div.cupboard-tr__front.face 
            div.cupboard-tr__back.face 
            div.cupboard-tr__right.face 
            div.cupboard-tr__left.face 
            div.cupboard-tr__top.face 
            div.cupboard-tr__bottom.face 
        div.cupboard-m
            div.cupboard-m__front.face 
            div.cupboard-m__back.face 
            div.cupboard-m__right.face 
            div.cupboard-m__left.face 
            div.cupboard-m__top.face 
            div.cupboard-m__bottom.face 
    div.bursts
        div.burst 
            div.circle.flex
                div.circle-a  
                    - var n = 0
                    while n < 36
                        div.circle-a__side
                        - n++
                    div.circle-a__bottom
                    div.circle-a__top
                div.circle-b  
                    - var n = 0
                    while n < 36
                        div.circle-b__side
                        - n++ 
                    div.circle-b__bottom
                        - var i = 0
                        while i < 36
                            div.burst__leaf
                            - i++ 
        div.burst 
            div.circle.flex
                div.circle-a  
                    - var n = 0
                    while n < 36
                        div.circle-a__side
                        - n++
                    div.circle-a__bottom
                    div.circle-a__top
                div.circle-b  
                    - var n = 0
                    while n < 36
                        div.circle-b__side
                        - n++ 
                    div.circle-b__bottom
                        - var i = 0
                        while i < 36
                            div.burst__leaf
                            - i++ 
    //- div.pot
        div.circle.flex
            div.circle-a  
                - var n = 0
                while n < 36
                    div.circle-a__side
                    - n++
                div.circle-a__bottom
                div.circle-a__top
            div.circle-b  
                - var n = 0
                while n < 36
                    div.circle-b__side
                    - n++ 
                div.circle-b__bottom
    div.pic
        div.pic__front.face 
        div.pic__back.face 
        div.pic__right.face 
            - var b = '<br>'
            span.pic__text.face i!{b}luv!{b}ccs
        div.pic__left.face 
        div.pic__top.face 
        div.pic__bottom.face 
    div.chair
        div.chair-t
            div.chair-t__front.face 
            div.chair-t__back.face 
            div.chair-t__right.face 
            div.chair-t__left.face 
            div.chair-t__top.face 
            div.chair-t__bottom.face 
        div.chair-lb
            div.chair-lb__front.face 
            div.chair-lb__back.face 
            div.chair-lb__right.face 
            div.chair-lb__left.face 
            div.chair-lb__top.face 
            div.chair-lb__bottom.face 
        div.chair-lt
            div.chair-lt__front.face 
            div.chair-lt__back.face 
            div.chair-lt__right.face 
            div.chair-lt__left.face 
            div.chair-lt__top.face 
            div.chair-lt__bottom.face 
        div.chair-rb
            div.chair-rb__front.face 
            div.chair-rb__back.face 
            div.chair-rb__right.face 
            div.chair-rb__left.face 
            div.chair-rb__top.face 
            div.chair-rb__bottom.face 
        div.chair-rt
            div.chair-rt__front.face 
            div.chair-rt__back.face 
            div.chair-rt__right.face 
            div.chair-rt__left.face 
            div.chair-rt__top.face 
            div.chair-rt__bottom.face 
    div.chair.chair--2
        div.chair-t
            div.chair-t__front.face 
            div.chair-t__back.face 
            div.chair-t__right.face 
            div.chair-t__left.face 
            div.chair-t__top.face 
            div.chair-t__bottom.face 
        div.chair-lb
            div.chair-lb__front.face 
            div.chair-lb__back.face 
            div.chair-lb__right.face 
            div.chair-lb__left.face 
            div.chair-lb__top.face 
            div.chair-lb__bottom.face 
        div.chair-lt
            div.chair-lt__front.face 
            div.chair-lt__back.face 
            div.chair-lt__right.face 
            div.chair-lt__left.face 
            div.chair-lt__top.face 
            div.chair-lt__bottom.face 
        div.chair-rb
            div.chair-rb__front.face 
            div.chair-rb__back.face 
            div.chair-rb__right.face 
            div.chair-rb__left.face 
            div.chair-rb__top.face 
            div.chair-rb__bottom.face 
        div.chair-rt
            div.chair-rt__front.face 
            div.chair-rt__back.face 
            div.chair-rt__right.face 
            div.chair-rt__left.face 
            div.chair-rt__top.face 
            div.chair-rt__bottom.face 
    div.lamp
        div.lamp__front.face 
        div.lamp__back.face 
        div.lamp__right.face 
        div.lamp__left.face 
        div.lamp__top.face 
        div.lamp__bottom.face        

CSS Code 

Create a file style.css and paste the code below.

$bg-1: #EEE3E7;
$bg-2: #c7bfc0;
$black-1: #57524E;
$black-2: #3D3C3A;
$black-3: #251B18;
$pink-1: #e87c80;
$pink-2: #e05e63;
$pink-3: #BE595D;

$pink-1: #6c645e;
$pink-2: #4a4842;
$pink-3: #3e3330;

$pink-1: #615c58;
$pink-2: #474645;
$pink-3: #302622;

$white-1: #ebeae9;
$white-2: #DCD7D3;
$white-3: #b5b1b1;

$door-1: #ebeae9;
$door-2: #DCD7D3;
$door-3: #b5b1b1;
// $brown-1: #BE9A6A;
// $brown-2: #A4815B;
// $brown-3: #986c3b;
$brown-1: #57524E;
$brown-2: #3D3C3A;
$brown-3: #251B18;
$green-1: #65C34C;
$green-2: #53b43a;
$green-3: #33901b;
$orange: #e48d78;
$cyan-1: #acdaf7;
$cyan-2: darken($cyan-1, 5);
/***********************/
@mixin cylinder($base, $sides, $degree, $pi, $width, $color) {
    display: flex;
    justify-content: center;
    align-items: center;
	position: absolute;

    &__side{
        position: absolute;
        height: ( 2 * $pi * ($base / 2) ) / $sides ;
        width: $width;
        background-color: darken($color, 15);

        @for $var from 1 to ($sides + 1) {
            &:nth-of-type(#{$var}){ transform: rotateX( $var * $degree / $sides ) translateZ($base / 2); }
        }
        @for $var from 1 to 20 {
            &:nth-of-type(#{$var}){ background-color: darken($color, $var * 1.5); }
        }
        @for $var from 1 to 20 {
            &:nth-last-of-type(#{$var}){ background-color: darken($color, $var * 1.5); }
        }
    }
    &__top,
    &__bottom{
        position: absolute;
        width: $base;
        height: $base;
        border-radius: 50%;
        transform: rotateY(90deg) translateZ( $width / 2 );
    }
    &__bottom{ transform: rotateY(90deg) translateZ( $width / -2 );}
}
@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 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);
}
@mixin face-ani($animation, $time, $side, $width-el, $height-el, $depth-el) {

    animation: #{$animation} #{$time} infinite ease;

    @keyframes #{$animation} {
        0%, 15%, 45%, 60%, 62%, 68%{
            @if $side == "cube-front" { @include cube-front($width-el, $height-el, $depth-el); }
            @else if $side == "cube-back" { @include cube-back($width-el, $height-el, $depth-el); }
            @else if $side == "cube-right" { @include cube-right($width-el, $height-el, $depth-el); }
            @else if $side == "cube-left" { @include cube-left($width-el, $height-el, $depth-el); }
            @else if $side == "cube-top" { @include cube-top($width-el, $height-el, $depth-el); }
            @else if $side == "cube-bottom" { @include cube-bottom($width-el, $height-el, $depth-el); }

        }
        20%, 40%, 58%, 64%, 70%, 100%{
            @if $side == "cube-front" { @include cube-front($width-el, $height-finish, $depth-el); }
            @else if $side == "cube-back" { @include cube-back($width-el, $height-finish, $depth-el); }
            @else if $side == "cube-right" { @include cube-right($width-el, $height-finish, $depth-el); }
            @else if $side == "cube-left" { @include cube-left($width-el, $height-finish, $depth-el); }
            @else if $side == "cube-top" { @include cube-top($width-el, $height-finish, $depth-el); }
            @else if $side == "cube-bottom" { @include cube-bottom($width-el, $height-el, $depth-el); }
        }
    }
}
@mixin cube-color($color) {
    &__front{ background-color: darken($color, 5); }
    &__back{ background-color: darken($color, 10) }
    &__right{ background-color: darken($color, 10) }
    &__left{ background-color: darken($color, 20); }
    &__top{ background-color: $color; }
    &__bottom{ background-color: darken($color, 20);}
}
/***********************/
/***********************/
*, *::after, *::before {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
    transform-style: preserve-3d;

	user-select: none;
    -webkit-tap-highlight-color: transparent;
    appearance: none;
    font-family: sans-serif;
}
/***********************/
/***********************/
body{
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    width: 100%;

    overflow: hidden;
	cursor: pointer;
    background-color: $bg-1;
}
.face{ position: absolute; }
.flex{
    display: flex;
    justify-content: center;
    align-items: center;
}
/***********************/
/***********************/
.main{
    position: absolute;
    width: 45vw;
    height: 30vw;
    transform:
        perspective(30000px)
        rotateX(65deg)
        rotateZ(35deg)
        translateZ(-10vw)
    ;
    transition: transform 500ms linear;
}
@keyframes main {
    to{
        transform:
            perspective(30000px)
            rotateX(65deg)
            rotateZ(395deg)
            translateZ(-10vw)
        ;
    }
}
.shadow{
    background-color: $bg-2;
    position: absolute;
    transform: translateZ(-.1vw);

    &--1{
        width: 105%;
        height: 125%;
        bottom: -.5vw;
        left: -.5vw;
        box-shadow:
            .125vw .125vw .5vw $bg-2,
            -.125vw .125vw .5vw $bg-2,
            .125vw -.125vw .5vw $bg-2,
            -.125vw -.125vw .5vw $bg-2
        ;
    }
    &--2{
        bottom: 30vw;
        left: 15vw;
        width: 30vw;
        height: 10vw;
        transform: skewX(-45deg);
        transform-origin: bottom left;
        background-color: $bg-2;
        box-shadow:
            .125vw .125vw .5vw $bg-2,
            -.125vw .125vw .5vw $bg-2,
            .125vw -.125vw .5vw $bg-2,
            -.125vw -.125vw .5vw $bg-2
        ;
    }
    &--3{
        bottom: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: darken($bg-2, 20);
        box-shadow:
            .125vw .125vw .5vw darken($bg-2, 40),
            -.125vw .125vw .5vw darken($bg-2, 40),
            .125vw -.125vw .5vw darken($bg-2, 40),
            -.125vw -.125vw .5vw darken($bg-2, 40)
        ;
        transform: translateZ(.1vw);
    }
    &--4{
        position: absolute;
        width: 6vw;
        height: 30vw;
        left: 0;
        transform-origin: bottom left;
        transform: skewY(-35deg);
        background-image: repeating-linear-gradient(to top, rgba($black-1, .05) 0, rgba($black-1, .05) 1vw, transparent 1.125vw, transparent 2vw);
        border-right: 1.5vw solid rgba($black-1, .05);
        border-top: 1vw solid rgba($black-1, .05);
        padding-right: 1vw;
    }
}
/*---------------------*/
.floor{
    $width-el: 45vw;
    $height-el: 1vw;
    $depth-el: 15vw;

    @include cube($width-el, $height-el, $depth-el);
    width: $width-el;
    height: $depth-el * 2;
    position: absolute;

    &__front{
        background-color: $black-2;
        background-image: repeating-linear-gradient(to right, $black-2 0, $black-2 1vw, darken($black-2, 10) 1vw, darken($black-2, 5) 1.1vw, darken($black-2, 5) 1.2vw);
        border-bottom: .5vw solid darken($black-2, 10);
    }
    &__back{
        background-color: darken($black-3, 5);
        border-bottom: .5vw solid darken($black-3, 10);
    }
    &__right{
        background-color: $black-3;
        border-bottom: .5vw solid darken($black-3, 5);
    }
    &__left{
        background-color: $black-1;
        border-bottom: .5vw solid darken($black-1, 5);
    }
    &__top{
        background-color: $black-1;
        background-image:
            linear-gradient(to bottom, rgba(darken($black-3, 4), .5) 2vw, transparent 3.25vw),
            linear-gradient(to right, rgba(darken($black-3, 5), .5) .25vw, transparent 1.25vw),
            linear-gradient(-40deg, transparent 19vw, rgba($white-1, .035) 19.5vw),
            linear-gradient(-40deg, transparent 4vw, rgba($black-3, .3) 4vw),
            linear-gradient(-40deg, transparent 19.25vw, rgba($black-3, .3) 19.5vw),
            linear-gradient(-40deg, transparent 3.8vw, rgba($black-3, .45) 3.8vw),
            radial-gradient(transparent 15vw, rgba($black-3, .4) 16vw),
            linear-gradient(-40deg, transparent 19.4vw, rgba($black-3, .3) 19.4vw),
            repeating-linear-gradient(to right, transparent 0, transparent 1vw, darken($black-1, 12) 1vw, darken($black-1, 5) 1.1vw, darken($black-1, 5) 1.2vw)
        ;
        background-size:
            30vw 30.1vw,
            30.1vw 30vw,
            30vw 21vw,
            24vw 21.75vw,
            30vw 15vw,
            7vw 7.5vw,
            30vw 100%,
            30vw 100%,
            100% 100%
        ;
        background-position: top right;
        background-repeat: no-repeat;
    }
    &__bottom{
        background-color: $black-3;
        border-bottom: .5vw solid darken($black-3, 5);
    }
}
.wall-t{
    $width-el: 30vw;
    $height-el: 20vw;
    $depth-el: .5vw;

    @include cube($width-el, $height-el, $depth-el);
    width: $width-el;
    height: $depth-el * 2;

    position: absolute;
    top: 0;
    right: 0;
    transform: translateZ(1vw);

    &__front{
        background-color: darken($pink-1, 2);
        background-image:
            linear-gradient(to bottom, transparent, darken($pink-3, 10)),
            linear-gradient(to top, darken($pink-3, 3), $pink-3 10%, transparent 70%),
            linear-gradient(to right, darken($pink-3, 3), transparent),
            linear-gradient(45deg, lighten($pink-2, .4) 5vw, transparent 5vw),
            linear-gradient(45deg, lighten($pink-2, .4) 5vw, transparent 5vw),
            linear-gradient(45deg, lighten($pink-2, .4) 5vw, transparent 5vw),
            linear-gradient(to top, rgba(darken($pink-3, 10), .35), rgba(darken($pink-2, 4), .6) 20%, rgba($pink-2, .8)),
            linear-gradient(65deg, darken(rgba($pink-2, .5), 3) 8.5vw, transparent 8.75vw)
        ;
        background-size:
            100% 90%,
            100% 10%,
            3vw 14vw,
            6vw 7vw,
            6vw 7vw,
            6vw 7vw,
            24vw 14vw,
            100% 100%
        ;
        background-position:
            0 100%,
            0 100%,
            0 100%,
            100% 43%,
            100% 66%,
            100% 100%,
            0 5.5vw,
            0 0
        ;
        background-repeat: no-repeat;
    }
    &__back{
        background-color: $pink-3;
        background-image: linear-gradient(to top, darken($pink-3, 10), darken($pink-3, 3) 20%, transparent 50%);
    }
    &__right{
        background-color: $pink-3;
        background-image: linear-gradient(to top, darken($pink-3, 15), transparent 30%);
    }
    &__left{ background-color: $pink-1; }
    &__top{
        background-color: $pink-1;
        background-image: linear-gradient(to top, lighten($pink-1, 2), transparent);
    }
    &__bottom{ background-color: $pink-3; }
}
.wall-la,
.wall-lb{
    $width-el: 1vw;
    $height-el: 20vw;
    $depth-el: 4vw;

    @include cube($width-el, $height-el, $depth-el);
    width: $width-el;
    height: $depth-el * 2;

    position: absolute;
    right: 30vw;
    transform: translateZ(1vw);
}
.wall-la{ top: 0; }
.wall-lb{ bottom: 0; }

.wall-lc{
    $width-el: 1vw;
    $height-el: 5vw;
    $depth-el: 7vw;

    @include cube($width-el, $height-el, $depth-el);
    width: $width-el;
    height: $depth-el * 2;

    position: absolute;
    top: 8vw;
    right: 30vw;
    transform: translateZ(16vw);

    // &__front{ background-color: $pink-2; }
    // &__back{ background-color: $pink-3; }
    &__right{ background-color: $pink-3; }
    &__left{ background-color: $pink-1; }
    &__top{
        background-color: $pink-1;
        background-image: linear-gradient(to left, lighten($pink-1, 2), transparent);
    }
    &__bottom{ background-color: $pink-3; }
}
.wall-la,
.wall-lb{
    &__front{
        background-color: $pink-2;
        background-image: linear-gradient(to bottom, lighten($pink-1, 3), transparent);
    }
    &__back{
        background-color: $pink-3;
        background-image: linear-gradient(to top, darken($pink-3, 10), darken($pink-3, 3) 20%, transparent 50%);
    }
    &__right{
        background-color: $pink-3;
        background-image: linear-gradient(to top, darken($pink-3, 10), transparent );
        background-size: 100% 20%;
        background-position: 0 100%;
        background-repeat: no-repeat;
    }
    &__left{
        background-color: $pink-1;
        background-image:
            linear-gradient(to bottom, transparent, darken($pink-1, 14)),
            linear-gradient(to top, darken($pink-1, 10), transparent)
        ;
        background-size:
            100% 70%,
            100% 20%
        ;
        background-position: 0 100%;
        background-repeat: no-repeat;
    }
    &__top{
        background-color: $pink-1;
        background-image: linear-gradient(to left, lighten($pink-1, 2), transparent);
    }
    &__bottom{ background-color: $pink-3; }
}
.door{
    width: 2vw;
    height: 14vw;
    position: absolute;
    right: 29.5vw;
    top: 8vw;
    transform: translateZ(1vw);
    background-color: rgba($black-3, .3);
}
    .door-l,
    .door-r{
        $width-el: 2vw;
        $height-el: 15vw;
        $depth-el: .5vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;

        position: absolute;

        &__front{
            background-color: $door-2;
            background-image: linear-gradient(to top, darken($door-2, 15), darken($door-2, 5) 10%, transparent);
        }
        &__back{ background-color: darken($door-3, 8); }
        &__right{
            background-color: $door-3;
            background-image: linear-gradient(to top, darken($door-2, 15), darken($door-2, 5) 10%, transparent);
        }
        &__left{
            background-color: lighten($door-1, 2);
            background-image: linear-gradient(to top, darken($door-1, 8), darken($door-1, 3) 10%, transparent);
        }
        &__top{ background-color: darken($door-1, 5); }
        &__bottom{ background-color: $door-3; }
    }
    .door-l{ top: 0; }
    .door-r{ bottom: 0; }
    .door-t{
        $width-el: 2vw;
        $height-el: 1vw;
        $depth-el: 6vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
        top: 1vw;
        transform: translateZ(14vw);

        &__front{ background-color: $door-2; }
        &__back{ background-color: darken($door-3, 5); }
        &__right{ background-color: $door-3; }
        &__left{ background-color: lighten($door-1, 2); }
        &__top{ background-color: darken($door-1, 5); }
        &__bottom{ background-color: $door-3; }
    }
    .door-1,
    .door-2{
        position: absolute;
        left: .5vw;
        width: 1vw;
        height: 6vw;
    }
    .door-1{ top: 1vw; }
    .door-2{
        bottom: 1vw;
        transform-origin: bottom left;
        transition: transform 1000ms linear;
    }
    .is-door-open{
        transform: rotateZ(45deg);
        transition: transform 1000ms linear;
    }
        .door-1r,
        .door-1l{
            $width-el: 1vw;
            $height-el: 14vw;
            $depth-el: .25vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;

            &__front{ background-color: darken($door-1, 2); }
            &__back{ background-color: darken($door-3, 10); }
            &__right{ background-color: darken($door-3, 2); }
            &__left{ background-color: darken($door-1, 5); }
            &__top{ background-color: $door-2; }
            &__bottom{ background-color: $door-3; }
        }
        .door-1l{ bottom: 0; }
        .door-1b,
        .door-1c,
        .door-1c2,
        .door-1t{
            $width-el: 1vw;
            $height-el: .5vw;
            $depth-el: 2.5vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;
            top: .5vw;

            &__front{ background-color: $door-1; }
            &__back{ background-color: darken($door-3, 5); }
            &__right{ background-color: darken($door-3, 2); }
            &__left{ background-color: darken($door-1, 2); }
            &__top{ background-color: darken($door-2, 5); }
            &__bottom{ background-color: $door-3; }
        }
        .door-1c{ transform: translateZ(4.5vw); }
        .door-1c2{ transform: translateZ(9vw); }
        .door-1t{ transform: translateZ(13.5vw); }
        .door__glass{
            position: absolute;
            top: .5vw;
            left: 50%;
            width: 14vw;
            height: 5vw;

            transform-origin: left;
            transform: rotateY(-90deg);
            background-color: rgba($door-3, .2);
            overflow: hidden;


            &::after,
            &::before{
                content: '';
                position: absolute;

                width: 10vw;
                height: 10vw;
                border-radius: 50%;
                background-color: rgba($door-1, .075);

                box-shadow:
                    .5vw .5vw 1vw rgba($door-1, .025),
                    -.5vw .5vw 1vw rgba($door-1, .025),
                    .5vw -.5vw 1vw rgba($door-1, .025),
                    -.5vw -.5vw 1vw rgba($door-1, .025)
                ;
            }
            &::after{
                left: 0vw;
                top: 2vw;
            }
            &::before{
                bottom: 2vw;
                right: 1vw;
                width: 5vw;
                height: 5vw;
                opacity: .5;

            }
        }
.fence{
    width: 1vw;
    height: 30vw;
    position: absolute;
    top: 0;
    left: 0;
    transform: translateZ(1vw);
    background-color: rgba($black-3, .5);
}
    .fence__shadow-c,
    .fence__shadow{
        position: absolute;
        width: 6vw;
        height: 30vw;
        overflow: hidden;
        left: 1vw;
    }
        .fence__shadow{
            left: 0;
            transform-origin: bottom left;
            transform: skewY(-35deg);
            background-image: repeating-linear-gradient(to top, rgba($black-2, .65) 0, rgba($black-2, .65) 1vw, transparent 1.125vw, transparent 2vw);
            border-right: .5vw solid rgba($black-2, .8);
            padding-right: 1vw;
        }
    .fence-r,
    .fence-l{
        $width-el: 1vw;
        $height-el: 8vw;
        $depth-el: .25vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
    }
    .fence-l{ bottom: 0; }
    .fence-b,
    .fence-t{
        $width-el: 1vw;
        $height-el: .5vw;
        $depth-el: 14.5vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
        top: .5vw;
    }
    .fence-b{
        transform: translateZ(1vw);
        &__top{ background-image: radial-gradient(rgba($brown-3, .85), transparent); }
    }
    .fence-t{
        transform: translateZ(7vw);
        &__top{ background-image: linear-gradient(to right, lighten($brown-1, 4) 50%, transparent); }
    }
    .fence-l,
    .fence-r,
    .fence-b,
    .fence-t,
    .fence-m{
        &__front{
            background-color: $brown-2;
            background-image: linear-gradient(to top, rgba($brown-3, .85), transparent);
        }
        &__back{ background-color: $brown-3; }
        &__right{
            background-color: $brown-3;
            background-image: linear-gradient(to top, rgba($brown-3, .85) 50%, transparent ); }
        &__left{
            background-color: $brown-1;
            background-image: linear-gradient(to bottom, lighten($brown-1, 8), transparent);
        }
        &__top{ background-color: $brown-1; }
        &__bottom{ background-color: $brown-3; }
    }
    .fence-m{
        $width-el: .5vw;
        $height-el: 5.5vw;
        $depth-el: .25vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
        transform: translateZ(1.5vw);
        top: 2vw;
        left: .25vw;

        @for $var from 1 to 20 {
            &:nth-last-of-type(#{$var}){ top: $var * 1.96vw; }
        }
    }

.table{
    width: 18vw;
    height: 8vw;
    position: absolute;
    bottom: 8vw;
    right: 5.75vw;
    transform: translateZ(1vw);
    background-color: rgba($black-3, .35);
    box-shadow:
        .25vw .25vw .25vw rgba($black-3, .15),
        -.25vw .25vw .25vw rgba($black-3, .15),
        .25vw -.25vw .25vw rgba($black-3, .15),
        -.25vw -.25vw .25vw rgba($black-3, .15)
    ;
}
    .table-b{
        $width-el: 17.5vw;
        $height-el: 5.5vw;
        $depth-el: 3.75vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;

        &__front{
            background-color: $brown-2;
            background-image:
                linear-gradient(to right, rgba($brown-3, .5) 2.75vw, transparent 2.75vw),
                linear-gradient(to bottom, rgba($brown-3, .2) .75vw, transparent 1vw),
                repeating-linear-gradient(to bottom, $brown-2 0, $brown-2 .6vw, darken($brown-3, 5) .60vw, darken($brown-3, 10) .65vw, darken($black-2, 5) .7vw),
            ;
        }
        &__back{
            background-color: $brown-3;
            background-image:
                linear-gradient(to left, rgba( darken($brown-3, 20), .5) 11.5vw, transparent 11.5vw),
                repeating-linear-gradient(to bottom, darken($brown-3, 8) 0, darken($brown-3, 8) .6vw, darken($brown-3, 15) .60vw, darken($brown-3, 20) .65vw, darken($black-3, 5) .7vw)
            ;
        }
        &__right{
            background-color: $brown-3;
            background-image:
            linear-gradient(to bottom, rgba($brown-3, .9) .75vw, transparent 1vw),
            repeating-linear-gradient(to bottom, $brown-3 0, $brown-3 .6vw, darken($brown-3, 10) .60vw, darken($brown-3, 20) .65vw, darken($black-2, 5) .7vw);
        }
        &__left{
            background-color: $brown-3;
            background-image:
            linear-gradient(to left, rgba(darken($brown-3, 5), .3) 5.25vw, transparent 5vw),
            repeating-linear-gradient(to bottom, darken($brown-2, 10) 0, darken($brown-2, 10) .6vw, darken($brown-3, 10) .60vw, darken($brown-3, 20) .65vw, darken($black-2, 5) .7vw);
        }
        &__top{ background-color: $brown-1; }
        &__bottom{ background-color: $brown-3; }

        .face{ border-bottom: .35vw solid darken($black-3, 5); }
    }
    .table-t{
        $width-el: 18vw;
        $height-el: .5vw;
        $depth-el: 4vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
        transform: translateZ(5.5vw);

        &__front{
            background-color: $white-2;
            background-image: linear-gradient(to right, rgba($white-3, .9) 3vw, transparent 3vw);
        }
        &__back{ background-color: $white-3; }
        &__right{ background-color: $white-3; }
        &__left{ background-color: $white-1; }
        &__top{
            background-color: $white-1;
            background-image: linear-gradient(-40deg, transparent 9.5vw, rgba(darken($white-2, 3), .9) 10vw);
        }
        &__bottom{ background-color: $white-3; }
    }
.tablet{
    $width-el: 2.5vw;
    $height-el: .15vw;
    $depth-el: 1vw;

    @include cube($width-el, $height-el, $depth-el);
    width: $width-el;
    height: $depth-el * 2;
    position: absolute;
    transform: translateZ(7vw);
    bottom: 10vw;
    left: 22vw;

    &__front{ background-color: $black-2; }
    &__back{ background-color: $black-3; }
    &__right{ background-color: $black-3; }
    &__left{ background-color: $black-1; }
    &__top{
        border: .125vw solid $black-1;
        background-image: repeating-linear-gradient(to bottom, $cyan-1 0, $cyan-1 .25vw, $cyan-2 .25vw, $cyan-2 .5vw);
        background-size: 100% 200%;
        background-position: 0 0;
        animation: tablet 150ms linear infinite;
    }
    &__bottom{ background-color: $black-3; }

    &__heart{
        position:absolute;
        left: calc(50% - .25vw);
        top: calc(50% - .25vw);
        width: .5vw;
        height: .5vw;
        transform: translateZ(.3vw) rotateZ(-45deg);
        background-color: #EB3B5A;
        opacity: 0;

        &::before,
        &::after{
            content: '';
            position: absolute;
            width: 100%;
            height: 100%;
            background-color: #EB3B5A;
            border-radius: 50%;
        }

        &::before{ top: -50%; }
        &::after{ right: -50%; }
    }
}
.is-heart-visible{ animation: heart 1000ms linear; }
@keyframes heart {
    50%{
        opacity: 1;
        transform: translateZ(1vw) rotateZ(-45deg);
    }
    100%{
        opacity: 0;
        transform: translateZ(2vw) rotateZ(-45deg);
    }
}
@keyframes tablet { to{ background-position: 0 100%; } }
.ha-c{
    width: 24vw;
    height: 6.65vw;
    position: absolute;
    top: 1vw;
    left: 15vw;
    transform: translateZ(1vw);

    background-color: rgba($black-3, .35);
    box-shadow:
        .25vw .25vw .5vw rgba($black-3, .195),
        -.25vw .25vw .5vw rgba($black-3, .195),
        .25vw -.25vw .5vw rgba($black-3, .195),
        -.25vw -.25vw .5vw rgba($black-3, .195)
    ;
}
    .ha1,
    .hac,
    .ha2{
        position: absolute;
        width: 8vw;
        height: 6.5vw;
    }
    .ha1{
        left: 0;
        .ha-t{
            &__top{
                background-image:
                    linear-gradient(to right, rgba($white-3, .3) 6.25vw, transparent 6.5vw),
                    linear-gradient(to top, transparent 4vw, rgba($white-3, .9) 4.5vw)
                ;
            }
        }
        .ha-l{
            &__right{
                background-color: darken($white-3, 15);
            }
        }
        .ha-doorr{
            &__front{
                border-color: darken($white-1, 3);
                background-image:
                    linear-gradient(to right, rgba($brown-3, .6) 2vw, transparent 2.25vw),
                    repeating-linear-gradient(to bottom, darken($brown-2, 8) 0, darken(darken($brown-2, 8), 10) .6vw, darken($white-2, 5) .6vw, darken($white-2, 5) .7vw),
                ;

                &::after{
                    content: '';
                    position: absolute;
                    top: -1vw;
                    left: -.2vw;
                    width: 2.35vw;
                    height: 1vw;
                    background-color: darken($white-1, 10);
                }
            }
        }
        .ha-doorl{
            // transform: rotateZ(20deg);
            transform-origin: bottom left;
            transition: 1000ms linear;
            &__front{
                border-color: darken($white-1, 10);
                background-image:
                    linear-gradient(to right, rgba($brown-3, .6) 4vw, transparent 4.25vw),
                    repeating-linear-gradient(to bottom, darken($brown-2, 8) 0, darken(darken($brown-2, 8), 10) .6vw, darken($white-2, 5) .6vw, darken($white-2, 5) .7vw),
                ;
            }
            &__top{ background-color: darken($white-1, 8)}
            &__back{ background-color: darken($white-3, 8); }
        }
    }
    .hac{
        left: 8vw;
        .ha-t__top{
            border-top: .35vw solid darken($white-3, 5);
            background-color: $black-3;
            background-image: linear-gradient(to bottom, darken($black-3, 8) 1.5vw, transparent 1.5vw);
        }
        .ha-doorf{ transition: transform 500ms linear 2800ms; }
    }
    .is-hac-open{
        transform: rotateX(-25deg);
        transition: transform 500ms linear ;
    }
    .ha2{
        right: 0;
        .ha-t{
            &__top{ background-image: linear-gradient(to top, rgba($white-2, .5) 4vw, rgba($white-3, .9) 4.5vw); }
        }
        .ha-doorr{
            transform-origin: bottom right;
            transition: transform 1000ms linear;
            &__back{ background-color: darken($white-3, 8); }
        }


        .ha-doorl{
            transform-origin: top left;
            transition: transform 1000ms linear;
            &__back{ background-color: darken($white-3, 8); }
        }


        .ha-r{
            &__left{ background-color: darken($white-3, 15); }
            &__right{ background-image: linear-gradient(to top, darken($white-3, 12) , transparent ); }
        }
    }
    .is-hadool-open{
        transform: rotateZ(20deg);
        transition: transform 1000ms linear;
    }
    .is-hadoor-open{
        transform: rotateZ(-30deg);
        transition: transform 1000ms linear;
    }
        .ha-l,
        .ha-r{
            $width-el: .75vw;
            $height-el: 6vw;
            $depth-el: 3vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;
        }
        .ha-r{ right: 0; }
        .ha-bc{
            $width-el: 6.75vw;
            $height-el: 6vw;
            $depth-el: .5vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;
            left: .5vw;
        }
        .ha-b{
            $width-el: 6.75vw;
            $height-el: .75vw;
            $depth-el: 2.75vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;
            left: .5vw;
            top: .5vw;
        }
        .ha-t{
            $width-el: 8vw;
            $height-el: .75vw;
            $depth-el: 3vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;

            transform: translateZ(6vw);
        }
        .ha-l,
        .ha-r,
        .ha-bc,
        .ha-b,
        .ha-t{
            &__front{ background-color: $white-1; }
            &__back{ background-color: $white-3; }
            &__right{ background-color: $white-3; }
            &__left{ background-color: $white-1; }
            &__top{ background-color: $white-1; }
            &__bottom{ background-color: $white-3; }
        }
        .ha-bc{ &__front{ background-color: darken($white-3, 10); } }
        .ha-r{ &__left{ background-color: $white-3; } }
        .ha-b{ &__top{ background-color: darken($white-3, 3); } }

        .ha-doorr,
        .ha-doorl{
            $width-el: 3.9vw;
            $height-el: 6.75vw;
            $depth-el: .125vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;
            bottom: -6.25vw;

            &__front{
                background-image: repeating-linear-gradient(to bottom, darken($brown-2, 10), darken($brown-2, 10) .6vw, darken($white-2, 5) .6vw, darken($white-2, 5) .7vw);
                border-top: .8vw solid $white-1;
                border-left: .125vw solid $white-1;
                border-right: .125vw solid $white-1;
                border-bottom: .4vw solid $white-1;
            }
            &__back{ background-color: $white-3; }
            &__right{ background-color: $white-3; }
            &__left{ background-color: $white-2; }
            &__top{ background-color: $white-1; }
            &__bottom{ background-color: $white-3; }
        }
        .ha-doorr{ right: 0; }
        .ha-doorf{
            $width-el: 8vw;
            $height-el: 6.75vw;
            $depth-el: .25vw;

            @include cube($width-el, $height-el, $depth-el);
            width: $width-el;
            height: $depth-el * 2;
            position: absolute;
            bottom: -6.25vw;

            &__front{
                background-color: $black-3;
                background-image: linear-gradient(-80deg, darken($black-3, 1.5) 4vw, darken($black-3, 3) 4.5vw);
                border-top: .75vw solid $white-1;
                border-left: .2vw solid $white-1;
                border-right: .2vw solid $white-1;
                border-bottom: .35vw solid $white-1;
            }
            &__back{ background-color: rgba($black-3, .55); }
            &__right{ background-color: $white-3; }
            &__left{ background-color: $white-1; }
            &__top{ background-color: $white-1; }
            &__bottom{ background-color: $white-3; }
        }
.cupboards{
    position: absolute;
    top: 1vw;
    left: 15.1vw;
    width: 24vw;
    height: 3vw;
    transform: translateZ(12vw);
}
    .cupboard-l,
    .cupboard-r,
    .cupboard-tl,
    .cupboard-tr{
        $width-el: 8.5vw;
        $height-el: .25vw;
        $depth-el: 1.5vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;

        &__front{ background-color: $white-2; }
        &__back{ background-color: $white-3; }
        &__right{ background-color: $white-3; }
        &__left{ background-color: $white-1; }
        &__top{ background-color: $white-1; }
        &__bottom{ background-color: $white-3; }
    }
    .cupboard-l{
        &__top{
            background-color: darken($white-1, 3);
            background-image: linear-gradient(135deg, rgba($white-3, .3) 4vw, transparent 4.25vw);
            border-top: 1vw solid darken(rgba($white-3, .5), 10);
        }
    }
    .cupboard-tl{
        &__top{
            background-color: $white-1;
            background-image: linear-gradient(135deg, rgba($white-3, .4) 4vw, transparent 4.25vw);
            border-top: 1vw solid darken($white-1, 15);
        }
    }
    .cupboard-r{
        &__top{
            background-color: darken($white-1, 5);
            background-image: linear-gradient(135deg, rgba($white-3, .5) 4vw, transparent 4.25vw);
            border-top: 1vw solid darken(rgba($white-3, .5), 10);
        }
    }
    .cupboard-tr{
        &__top{
            background-color: $white-1;
            background-image: linear-gradient(135deg, rgba($white-3, .4) 3vw, transparent 3.25vw);
            border-top: 1vw solid darken($white-1, 10);
        }
    }
    .cupboard-r{ right: 0; }
    .cupboard-tl{ transform: translateZ(3.125vw); }
    .cupboard-tr{ right: 0; transform: translateZ(3.125vw); }
    .cupboard-m{
        $width-el: 7vw;
        $height-el: 5vw;
        $depth-el: 1.5vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
        left: 8.5vw;
        top: .025vw;
        transform: translateZ(-1vw);

        &__front{
            background-image: linear-gradient(to right, $black-3 48%, $white-2 48%, $white-2 51%, $black-3 51%);
            border: .14vw solid $white-2;
        }
        &__back{ background-color: darken($white-3, 10); }
        &__right{
            background-color: darken($white-3, 3);
            background-image: linear-gradient(to top, rgba(darken($white-3, 5), .9), transparent);
        }
        &__left{ background-color: $white-3; }
        &__top{
            background-color: $white-1;
            border-top: 1vw solid darken($white-1, 10);
        }
        &__bottom{ background-color: $white-3; }
    }
.bursts{
    position: absolute;
    left: 0;
    height: 100%;
}
    .burst{
        position: absolute;
        width: 3vw;
        height: 3.5vw;
        left: 2vw;
        bottom: 1vw;
        transform: translateZ(1.1vw);

        border-radius: .5vw;
        padding-top: .75vw;

        &::before{
            content: '';
            position: absolute;
            width: 4vw;
            height: 100%;
            background-color: rgba($black-3, .4);
            transform-origin: bottom left;
            transform: skewY(-35deg);
            border-bottom-left-radius: 2vw;
            border-top-left-radius: .75vw;
            border-top-right-radius: .75vw;

        }
        &:nth-of-type(2){ top: 1vw; }
    }
    .burst__leaf{
        position: absolute;
        width: .5vw;
        height: 1.35vw;
        border-radius: 50%;
        transform: translateZ(-.85vw) rotateX(90deg) rotateY(-25deg);
        background-color: $green-1;

        &:nth-of-type(1){
            left: .1vw; top: .1vw;
            transform: translateZ(-.8vw) rotateX(90deg) rotateY(-65deg);
        }
        &:nth-of-type(2){
            left: .5vw; top: .2vw;
            background-color: darken($green-2, 5);
        }
        &:nth-of-type(3){
            left: .95vw; top: 0vw;
            transform: translateZ(-.75vw) rotateX(90deg) rotateY(50deg);
            background-color: $green-3;
        }
        &:nth-of-type(4){
            left: 1.25vw; top: .4vw;
            background-color: $green-2;
            transform: translateZ(-.75vw) rotateX(90deg) rotateY(70deg);
        }
        &:nth-of-type(5){
            left: .5vw; top: .3vw;
            background-color: darken($green-3, 5);
        }
        &:nth-of-type(7){
            left: .55vw; top: 1.46vw;
            transform: translateZ(-.75vw) rotateX(90deg) rotateY(50deg);
        }
        &:nth-of-type(8){
            left: .935vw; top: 1.2vw;
            transform: translateZ(-.75vw) rotateX(90deg) rotateY(-40deg);
        }
        &:nth-of-type(9){
            left: 1vw; top: 1.2vw;
            background-color: $green-3;
        }
        &:nth-of-type(10){
            left: 1.5vw; top: 0vw;
            transform: translateZ(-.85vw) rotateX(90deg) rotateY(35deg);
            background-color: darken($green-2, 10);
        }
        &:nth-of-type(11){
            left: .1vw; top: .1vw;
            transform: translateZ(-.5vw) rotateX(90deg) rotateY(25deg);
        }
        &:nth-of-type(12){
            left: .5vw; top: .2vw;
            background-color: $green-2;
        }
        &:nth-of-type(13){
            left: .95vw; top: 0vw;
            transform: translateZ(-.75vw) rotateX(90deg) rotateY(90deg);
            background-color: $green-3;
        }
        &:nth-of-type(14){
            left: 1.25vw; top: .4vw;
            transform: translateZ(-.5vw) rotateX(90deg) rotateY(90deg);
        }
        &:nth-of-type(15){
            left: 1.35vw; top: .6vw;
            transform: translateZ(-.75vw) rotateX(90deg) rotateY(20deg);
            background-color: $green-2;
        }
    }
    .circle{
        $sides: 36;
        $degree: 360deg;
        $width: 2.75vw;

        width: 2vw;
        height: 2vw;
        border-radius: 50%;

        &-a{
            $base: 3vw;
            $pi: 3.5;

            position: absolute;
            width: $width;
            height: $base;
            transform: rotateY(90deg) translateX(-50%);

            @include cylinder($base, $sides, $degree, $pi, $width, $white-1);

            &__top{ background-color:darken($white-3, 20); }
            &__bottom{ border: .5vw solid $white-1; }
        }
        &-b{
            $base: 2vw;
            $pi: 3.5;

            position: absolute;
            width: $width;
            height: $base;
            transform: rotateY(90deg) translateX(-50%);

            @include cylinder($base, $sides, $degree, $pi, $width, $white-1);
            &__bottom{
                background-color: darken($green-3, 5);
                transform: rotateY(90deg) translateZ(-1.25vw);
            }
        }
    }
.pot{
    position: absolute;
    top: 2vw;
    left: 25.5vw;
    transform: translateZ(7.76vw);

    .circle{
        $sides: 36;
        $degree: 360deg;
        $width: 2vw;

        width: 3.25vw;
        height: 3.25vw;
        border-radius: 50%;
        background-color: darken($black-3, 10);

        &-a{
            $base: 3vw;
            $pi: 3.5;

            position: absolute;
            width: $width;
            height: $base;
            transform: rotateY(90deg) translateX(-50%);

            @include cylinder($base, $sides, $degree, $pi, $width, $white-1);

            &__top{ background-color:darken($white-3, 20); }
            &__bottom{ border: .3vw solid $white-1; }
        }
        &-b{
            $base: 2.4vw;
            $pi: 3.5;

            position: absolute;
            width: $width;
            height: $base;
            transform: rotateY(90deg) translateX(-50%);

            @include cylinder($base, $sides, $degree, $pi, $width, $white-1);
            &__bottom{
                transform: rotateY(90deg) translateZ(-.75vw);
                background-image: linear-gradient(to bottom, darken($orange, 8) 1.25vw, $orange 1.35vw);
            }
        }
    }
}
.chair{
    position: absolute;
    width: 3vw;
    height: 3vw;
    left: 25vw;
    bottom: 3vw;
    transform: translateZ(1vw);

    &::after{
        content: '';
        position: absolute;
        width: 5vw;
        height: 3.65vw;
        background-color: rgba($black-2, .5);
        transform-origin: bottom left;
        transform: skewY(-35deg);
    }

    &--2{
        left: 34vw;
        transform: translateZ(1vw) rotateZ(15deg);

        &::after{
            height: 4.65vw;
            transform: skewY(-55deg);
            border-bottom-left-radius: 2vw;
        }
    }
}
    .chair-t{
        $width-el: 3vw;
        $height-el: .25vw;
        $depth-el: 1.5vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
        transform: translateZ(4vw);
    }
    .chair-lb,
    .chair-lt,
    .chair-rb,
    .chair-rt{
        $width-el: .25vw;
        $height-el: 4vw;
        $depth-el: .125vw;

        @include cube($width-el, $height-el, $depth-el);
        width: $width-el;
        height: $depth-el * 2;
        position: absolute;
    }
    .chair-t,
    .chair-lb,
    .chair-lt,
    .chair-rb,
    .chair-rt{
        &__front{ background-color: $brown-2; }
        &__back{ background-color: $brown-3; }
        &__right{ background-color: $brown-3; }
        &__left{ background-color: $brown-1; }
        &__top{
            background-color: $brown-1;
            background-image: linear-gradient(35deg, lighten($brown-1, 3), transparent, darken($brown-1, 2));
        }
        &__bottom{ background-color: $brown-3; }
    }
    .chair-lb{
        left: 0; bottom: 0;
        transform: rotateX(5deg) rotateY(5deg);
    }
    .chair-lt{
        left: 0; top: 0;
        transform: rotateX(-5deg) rotateY(5deg);
    }
    .chair-rb{
        right: 0; bottom: 0;
        transform: rotateX(5deg) rotateY(-5deg);
    }
    .chair-rt{
        right: 0; top: 0;
        transform: rotateX(-5deg) rotateY(-5deg);
    }
.pic{
    $width-el: .25vw;
    $height-el: 2.5vw;
    $depth-el: 1vw;

    @include cube($width-el, $height-el, $depth-el);
    width: $width-el;
    height: $depth-el * 2;
    position: absolute;
    bottom: 3.125vw;
    left: 15vw;
    transform: translateZ(13.25vw);

    &__front{ background-color: $white-1;}
    &__back{ background-color: $white-3; }
    &__right{
        background-color: $white-2;
        padding: .2vw;
    }
    &__left{ background-color: $white-3; }
    &__top{ background-color: $white-1; }
    &__bottom{ background-color: $white-3; }
    &__text{
        width: calc(100% - .5vw);
        height: calc(100% - .5vw);
        padding: .125vw;

        font-size: .45vw;
        font-weight: bolder;
        text-transform: uppercase;
        line-height: 1.2;
        border: .1vw solid $black-1;
        color: $black-1;
    }
}
.lamp{
    $width-el: 2vw;
    $height-el: .75vw;
    $depth-el: 7vw;

    @include cube($width-el, $height-el, $depth-el);
    width: $width-el;
    height: $depth-el * 2;
    position: absolute;
    bottom: 8vw;
    right: 29.5vw;
    transform: translateZ(17.5vw);

    &__front{
        background-color: $door-2;
        background-image: linear-gradient(to top, darken($door-2, 15), darken($door-2, 5) 10%, transparent);
    }
    &__back{ background-color: darken($door-3, 8); }
    &__right{
        background-color: $door-3;
    }
    &__left{
        background-color: $door-1;
        background-image: linear-gradient(to top, darken($door-1, 8), darken($door-1, 3) 10%, transparent);
    }
    &__top{ background-color: darken($door-1, 5); }
    &__bottom{ background-color: $door-3; }

}

/***********************/
/***********************/

Final Output

Written by: Piyush Patil

Code Credits: https://codepen.io/ricardoolivaalonso/pen/LYxMWQN

If you found any mistakes or have any doubts please feel free to Contact Us

Hope you find this post helpful💖

Share your love