@charset "UTF-8";

/* ----------------- M A S T H E A D ----------------- */

/*
 * Fullscreen opening board of the mockup: the contributed file, image or muted video, covers the
 * whole viewport without repeating, the primary logo is centred both ways over it, and the white
 * arrow sits at the bottom of the screen, horizontally centred.
 */

.fo-masthead {
    position: relative;
    flex-shrink: 0;
    width: 100%;
    height: 100vh;
    overflow: hidden;
    background: var(--fo-color-text);
}

.fo-masthead__media {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
    -o-object-position: center;
    object-position: center;
}

.fo-masthead__heading {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 75%;
    margin: 0;
    -webkit-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    -o-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}

.fo-masthead__frame {
    display: block;
    padding: 3%;
    background: rgba(0, 0, 0, 0.25);
    border: 1px solid rgba(255, 255, 255, 0.45);
}

.fo-masthead__logo {
    display: block;
    width: 100%;
    height: auto;
}

.fo-masthead__brand-text {
    display: block;
    color: var(--fo-color-overlay-text);
    font-family: var(--fo-font-serif);
    letter-spacing: 0.4em;
    text-align: center;
}

.fo-masthead__arrow {
    position: absolute;
    left: 50%;
    bottom: 6vh;
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
    -o-transform: translateX(-50%);
    transform: translateX(-50%);
}

.fo-masthead__arrow img {
    display: block;
    width: 8.5vw;
    height: auto;
    -webkit-animation: fo-arrow-bounce 1.8s ease-in-out infinite;
    animation: fo-arrow-bounce 1.8s ease-in-out infinite;
    -webkit-transition: opacity 1s ease;
    -moz-transition: opacity 1s ease;
    -o-transition: opacity 1s ease;
    transition: opacity 1s ease;
}

.fo-masthead__arrow:hover img {
    opacity: 0.2;
    cursor: pointer;
}

/* The slight jumpy animation of FO-HOMEPAGE-05, started on page load by CSS alone */
@-webkit-keyframes fo-arrow-bounce {
    0%, 100% { -webkit-transform: translateY(0); transform: translateY(0); }
    50% { -webkit-transform: translateY(0.9rem); transform: translateY(0.9rem); }
}

@keyframes fo-arrow-bounce {
    0%, 100% { -webkit-transform: translateY(0); transform: translateY(0); }
    50% { -webkit-transform: translateY(0.9rem); transform: translateY(0.9rem); }
}

@media (prefers-reduced-motion: reduce) {
    .fo-masthead__arrow img {
        -webkit-animation: none;
        animation: none;
    }
}

/* ------------------ G A L L E R I E S ------------------ */

.fo-galleries {
    width: 80vw;
    margin: 0 auto;
    padding: 3vh 0;
}

/*
 * Every vignette shares one aspect ratio, so they all end up with the same width AND the same
 * height, whatever the proportions of the file the contributor uploaded.
 */
.fo-gallery {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 3 / 2;
    overflow: hidden;
}

/*
 * The zoom happens inside the parent, which clips it: the rectangle itself never changes size,
 * only what is seen through it. Same duration both ways, so leaving the vignette takes exactly as
 * long as entering it.
 */
.fo-gallery__img {
    display: block;
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
    -webkit-transition: opacity 1s ease, -webkit-transform 1s ease;
    -moz-transition: opacity 1s ease, -moz-transform 1s ease;
    -o-transition: opacity 1s ease, -o-transform 1s ease;
    transition: opacity 1s ease, transform 1s ease;
}

.fo-gallery:hover .fo-gallery__img {
    opacity: 0.6;
    -webkit-transform: scale(1.05);
    -moz-transform: scale(1.05);
    -ms-transform: scale(1.05);
    -o-transform: scale(1.05);
    transform: scale(1.05);
}

.fo-gallery__name {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 90%;
    -webkit-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    -o-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    color: var(--fo-color-overlay-text);
    font-family: var(--fo-font-serif);
    font-size: 6vw;
    line-height: 115%;
    text-align: center;
}

/* -------- R E S P O N S I V E    D E S I G N --------- */

@media only screen and (min-width: 768px) {
    .fo-masthead__heading { width: 45%; }
    .fo-masthead__arrow img { width: 5vw; }
    .fo-galleries {
       padding: 5vh 0;
    }
}

@media only screen and (min-width: 992px) {
    .fo-masthead__heading { width: 40%; }
    .fo-masthead__arrow img { width: 4vw; }
    .fo-gallery__name { font-size: 2.8vw; }
}

@media only screen and (min-width: 1200px) {
    .fo-masthead__heading { width: 30%; }
    .fo-masthead__arrow img { width: 2.5vw; }
}
