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💖