﻿*,
*:after,
*:before {
    box-sizing: border-box;
    transform-style: preserve-3d;
    will-change: transform;
}

:root {
    --bg: #bcccdc;
    --hover: 0.05;
    --default: 0.01;
    --limit: 0.9;
    --height: 30;
    --width: 20;
    --depth: 15;
    --frame: 1;
    --handle: #ccc;
    --hue: 10;
    --saturation: 0%;
    --drawer-one: #fafafa;
    --drawer-two: #e6e6e6;
    --drawer-three: #f2f2f2;
    --unit-one: hsl(var(--hue), var(--saturation), 50%);
    --unit-two: hsl(var(--hue), var(--saturation), 40%);
    --unit-three: hsl(var(--hue), var(--saturation), 20%);
    --unit-four: hsl(var(--hue), var(--saturation), 15%);
    --transition: 0.2s;
}

body {
    background: var(--bg);
    display: grid;
    place-items: center;
    min-height: 100vh;
    transform: scale(1.5);
}

.chest {
    height: calc(var(--height) * 1vmin);
    transform: translate3d(0, 0, 50vmin) rotateX(-32deg) rotateY(40deg);
    width: calc(var(--width) * 1vmin);
    color: #1c1717;
}

.chest__panel {
    position: absolute;
}

.chest__panel--back {
    background: var(--unit-two);
}

.chest__panel--back,
.chest__panel--front {
    height: 100%;
    width: 100%;
    transform: translate3d(0, 0, calc(var(--depth) * var(--coefficient)));
}

.chest__panel--front-frame {
    height: 100%;
    width: 100%;
    border: calc(var(--frame) * 1vmin) solid var(--unit-one);
    border-bottom-width: calc(var(--frame) * 2vmin);
    transform: translate3d(0, 0, 0);
}

    .chest__panel--front-frame:after,
    .chest__panel--front-frame:before {
        content: '';
        background: var(--unit-one);
        height: calc(var(--frame) * 1.5vmin);
        width: calc(var(--width) * 1vmin);
        position: absolute;
        transform: translate(-50%, -50%);
        left: 50%;
    }

    .chest__panel--front-frame:after {
        top: calc(100 / 3 * 1.01%);
    }

    .chest__panel--front-frame:before {
        top: calc(100 / 3 * 2.01%);
    }

.chest__panel--front {
    --coefficient: 0.5vmin;
}

.chest__panel--back {
    --coefficient: -0.5vmin;
}

.chest__panel--left,
.chest__panel--right {
    height: 100%;
    left: 50%;
    width: calc(var(--depth) * 1vmin);
    background: var(--unit-three);
    transform: translate(-50%, 0) rotateY(90deg) translate3d(0, 0, calc(var(--width) * var(--coefficient)));
}

.chest__panel--right {
    width: calc((var(--depth) * 1vmin) + 2px);
    --coefficient: 0.5vmin;
}

.chest__panel--left {
    --coefficient: -0.5vmin;
}

.chest__panel--top,
.chest__panel--bottom {
    height: calc(var(--depth) * 1vmin);
    width: calc(var(--width) * 1vmin);
    background: var(--unit-two);
}

.chest__panel--top {
    top: 0;
    width: calc((var(--width) * 1vmin) + 0.1vmin);
    height: calc((var(--depth) * 1vmin) + 0.1vmin);
    left: 50%;
    transform: translate(-50%, -50%) rotateX(-90deg);
}

.chest__panel--bottom {
    bottom: 0;
    transform: translate(0, 50%) rotateX(-90deg);
}

.chest__drawer {
    --drawer-height: calc((var(--height) - (5 * var(--frame))) / 3);
    position: absolute;
    top: var(--top, 0);
    left: 50%;
    height: calc(var(--drawer-height) * 1vmin);
    width: calc((var(--width) - (2 * var(--frame))) * 1vmin);
    transform: translate3d(-50%, 0, calc((var(--depth) * 0.5vmin) + 0.01vmin));
}

    .chest__drawer[data-position="1"] {
        --index: 1;
        --top: calc(var(--frame) * 1vmin);
    }

    .chest__drawer[data-position="2"] {
        --index: 2;
        --top: calc(((2 * var(--frame)) + var(--drawer-height)) * 1vmin);
    }

    .chest__drawer[data-position="3"] {
        --index: 3;
        --top: calc(((3 * var(--frame)) + (2 * var(--drawer-height))) * 1vmin);
    }

.drawer__structure {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

.drawer__panel {
    position: absolute;
}

.drawer__panel--left,
.drawer__panel--right {
    width: calc(var(--depth) * 1vmin);
    height: 65%;
    background: var(--drawer-two);
    bottom: 1%;
}

.drawer__panel--left {
    left: 0;
    transform-origin: 0 50%;
    transform: rotateY(90deg);
}

.drawer__panel--right {
    right: calc((var(--frame) * 1vmin) + 1px);
    right: 0;
    transform-origin: 100% 50%;
    transform: rotateY(-90deg);
}

.drawer__panel--front {
    height: calc((var(--drawer-height) + (0.6 * var(--frame))) * 1vmin);
    width: calc((var(--width) - (0.6 * var(--frame))) * 1vmin);
    top: 50%;
    left: 50%;
    transform: translate3d(-50%, -50%, 1px);
    background: var(--unit-four);
}

.drawer__panel--bottom,
.drawer__panel--back {
    width: calc(100% - (2vmin * var(--frame)));
    width: 100%;
}

.drawer__panel--bottom {
    height: calc(var(--depth) * 1vmin);
    background: var(--drawer-three);
    bottom: 5%;
    left: 50%;
    transform-origin: 50% 100%;
    transform: translate(-50%, 0) rotateX(90deg);
}

.drawer__panel--back {
    height: 65%;
    background: var(--drawer-one);
    bottom: 1%;
    left: 50%;
    transform: translate3d(-50%, 0, calc(var(--depth) * -1vmin));
    text-align: center;
    line-height: calc(var(--drawer-height) * 0.65vmin);
    font-size: 3vmin;
    font-family: sans-serif;
    font-weight: bold;
}

.letter {
    color: hsl(var(--hue), 80%, 50%);
    display: inline-block;
    animation: wave calc(var(--open) * 1s) calc(var(--delay) * -0.1s) infinite ease-in-out;
}

    .letter:nth-of-type(1) {
        --hue: 15;
        --delay: 0;
    }

    .letter:nth-of-type(2) {
        --hue: 35;
        --delay: 1;
    }

    .letter:nth-of-type(3) {
        --hue: 45;
        --delay: 2;
    }

    .letter:nth-of-type(4) {
        --hue: 90;
        --delay: 3;
    }

    .letter:nth-of-type(5) {
        --hue: 180;
        --delay: 4;
    }

    .letter:nth-of-type(6) {
        --hue: 260;
        --delay: 5;
    }

    .letter:nth-of-type(7) {
        --hue: 320;
        --delay: 6;
    }

details {
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    cursor: pointer;
    outline: transparent;
}

    details:hover:not([open]),
    details:hover:not([open]) + .drawer__structure {
        --open: var(--hover);
    }

details,
.drawer__structure {
    transition: transform var(--transition);
    transform: translate3d(0, 0, calc((var(--open, var(--default)) * var(--depth)) * 1vmin));
}

    details[open],
    .drawer__structure[open],
    details[open] + .drawer__structure,
    .drawer__structure[open] + .drawer__structure {
        --open: var(--limit);
    }

summary {
    outline: transparent;
    height: 100%;
    width: 100%;
}

    summary::-webkit-details-marker {
        display: none;
    }

    summary:after {
        content: '';
        position: absolute;
        background: linear-gradient(var(--handle), var(--handle)) 50% 15%/40% 8% no-repeat, transparent;
        height: 110%;
        width: 110%;
        top: 50%;
        left: 50%;
        transform: translate3d(-50%, -50%, 0.5vmin);
    }

@-moz-keyframes wave {
    0%, 100% {
        transform: translate3d(0, 10%, 1px);
    }

    50% {
        transform: translate3d(0, -10%, 1px);
    }
}

@-webkit-keyframes wave {
    0%, 100% {
        transform: translate3d(0, 10%, 1px);
    }

    50% {
        transform: translate3d(0, -10%, 1px);
    }
}

@-o-keyframes wave {
    0%, 100% {
        transform: translate3d(0, 10%, 1px);
    }

    50% {
        transform: translate3d(0, -10%, 1px);
    }
}

@keyframes wave {
    0%, 100% {
        transform: translate3d(0, 10%, 1px);
    }

    50% {
        transform: translate3d(0, -10%, 1px);
    }
}
