* {
    box-sizing: border-box;
}

[hidden] {
    display: none;
}

*::before,
*::after {
    box-sizing: inherit;
}

html {
    font-family: 'PT Serif', serif;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.4;
    -webkit-font-smoothing: antialiased;
    color: #242424;
}

a {
    color: royalblue;
}

a:hover {
    text-decoration: none;
}

body {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    margin: 40px;
}

h1 {
    margin: 0;
}

h2 {
    margin-top: .3em;
}

main {
    flex: 2 1;
}

main p {
    max-width: 768px;
    font-size: 1.2em;
}

main p svg {
    display: inline-block;
    width: 1em;
    height: 1em;
    vertical-align: middle;
}

hr {
    border-top: 3px solid royalblue;
    max-width: 768px;
    margin: 0;
}

aside {
    order: -1;
    margin: 0 40px 40px 0;
    max-width: 400px;
    flex: 1 1;
    position: relative;
}

.birthday::before {
    content: '';
    display: block;
    width: 41.25vw;
    height: 61.87vw;
    background: url(birthday.png) no-repeat;
    background-size: contain;
    position: absolute;
    left: 17.79vw;
    top: -16.58vw;
}

.santa::before {
    content: '';
    display: block;
    width: 51.56vw;
    height: 39.58vw;
    background: url(santa.png) no-repeat;
    background-size: contain;
    position: absolute;
    left: 7.79vw;
    top: 1.42vw;
}

@media only screen and (min-width: 480px) {
    .birthday::before {
        width: 198px;
        height: 297px;
        left: 95px;
        top: -70px;
    }

    .santa::before {
        width: 248px;
        height: 190px;
        left: 34px;
        top: 20px;
    }
}

@media only screen and (min-width: 768px) and (max-width: 1287px) {
    .birthday::before {
        width: 15.37267081vw;
        height: 23.05900621vw;
        left: 7.375776398vw;
        top: -5.434782609vw;
    }

    .santa::before {
        width: 19.2158vw;
        height: 14.7496vw;
        left: 2.375776vw;
        top: 0.565217vw;
    }
}

img {
    display: block;
    max-width: 100%;
}

footer,
.photo-grid {
    flex-shrink: 0;
    width: 100%;
}

@media only screen and (max-width: 768px) {
    main,
    aside {
        flex: 1 0 100%;
        width: 100%;
    }
}

footer {
    font-size: .85em;
    text-align: center;
    padding-bottom: 12px;
}

.photo-grid {
    margin: 0 -40px -40px;
    background: #242424;
    padding: 20px;
    column-gap: 20px;
    width: calc(100% + 40px + 40px);
}

.photo-grid img {
    margin-bottom: 20px;
}

@media only screen and (min-width: 512px) {
    .photo-grid {
        column-count: 2;
    }
}

@media only screen and (min-width: 960px) {
    .photo-grid {
        column-count: 3;
    }
}

body.konami {
    display: block;
}

body.konami * {
    display: none;
}

body.konami::before {
    content: 'rip father dad';
    display: block;
}

body.konami::after {
    content: '';
    display: block;
    padding-top: 69.5%;
    width: 100%;
    background: url(konami.jpg);
    background-size: cover;
}
