@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: local('Montserrat Regular'), local('Montserrat-Regular'), url('../fonts/montserrat_regular.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: local('Montserrat Bold'), local('Montserrat-Bold'), url('../fonts/montserrat_bold.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

body {
    background-color: #000;
    margin: 0;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    font-family: 'Montserrat';
}

.container {
    position: relative;
    margin: 0 auto;
    max-width: calc(100vh / (9/16));
    opacity: 1;
    transition: transform 1s, opacity 1s ease-out;
}

.fade {
    transform: translate(100%);
    opacity: 0;
}

.background-image {
    width: 100%;
}

.puzzle-back {
    position: absolute;
    left: 16.7%;
    top: 0;
    width: 66.5%;
    height: 100%;
    background-color: #000;
}

.card-back {
    position: absolute;
    width: 23.958%;
    height: 70.370%;
    top: 14.815%;
    background-color: #000;
}

.card-back.left {
    left: 4.792%;
}

.card-back.right {
    left: 71.302%;
}

.card {
    position: absolute;
    width: 20.833%;
    height: 64.815%;
    top: 17.5925%;
}

.card.left {
    left: 6.354%;
}

.card.right {
    left: 72.865%;
}

h1.puzzle-title {
    position: absolute;
    left: 16.7%;
    top: 0;
    width: 66.5%;
    color: #fff;
    text-align: center;
    font-weight: bold;
    font-size: 7.5vw;
    margin: 0;
    padding: 0;
}

.puzzle-quote {
    position: absolute;
    left: 28.750%;
    top: 17.593%;
    width: 42.500%;
    color: #fff;
    font-size: 1.2vw;
}

.attribution {
    color: #D67245;
}

h2.puzzle-password-prompt {
    position: absolute;
    left: 28.750%;
    top: 77%;
    width: 42.500%;
    color: #fff;
    text-align: center;
    font-weight: bold;
    font-size: 2.2vw;
    margin: 0;
    padding: 0;
}

h2.puzzle-password-prompt.wrong {
    color: #c00;
    animation: peak 0.5s ease;
}

@keyframes peak {
    0% { transform: scale(1.00); }
    25% { transform: scale(1.30); }
    50% { transform: scale(1.00); }
    100% { transform: scale(1.30); }
}

h2.puzzle-winning-prompt {
    position: absolute;
    left: 28.750%;
    top: 30%;
    width: 42.500%;
    color: #fff;
    text-align: center;
    font-weight: bold;
    font-size: 3vw;
    margin: 0;
    padding: 0;
}

.larger {
    font-size: 7.5vw;
}

.puzzle-input {
    position: absolute;
    left: 28.750%;
    top: 86%;
    width: 42.5%;
    height: 9%;
    color: #fff;
    text-align: center;
    font-weight: bold;
    font-size: 4vw;
    border: solid 1px #fff;
    border-radius: 5px;
    background-color: #000;
    outline: 0;
}

.puzzle-hint {
    position: absolute;
    left: 16.7%;
    bottom: 1%;
    width: 66.5%;
    color: #fff;
    font-size: 1.2vw;
    text-align: center;
}