/* Shared photo-story and collection styles for the WordPress plugin. */

/* A story template uses a clean, Canvas-like page shell. */
body.fif-story-canvas {
    min-height: 100vh;
    margin: 0;
    color: #fff;
    background: #050505;
}

/* Story pages do not inherit the homepage's .fif-section width rule. */
.fif-story.fif-section {
    box-sizing: border-box;
    width: min(100%, 1200px);
    margin-inline: auto;
    padding-inline: clamp(1rem, 4vw, 2rem);
}

/* Home-page collection covers */
.fif-portfolio {
    padding-top: 0.625rem;
}

.fif-portfolio .fif-section-title {
    font-size: 0.9rem;
    line-height: 1.2;
}

.fif-portfolio .fif-divider {
    margin-top: -0.15rem;
    margin-bottom: 0.75rem;
}

.fif-portfolio__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.fif-portfolio__card,
.fif-portfolio__card:visited,
.fif-portfolio__card:hover {
    display: block;
    min-width: 0;
    color: #fff;
    text-decoration: none;
}

.fif-portfolio__card:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 4px;
}

.fif-portfolio__cover {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    background: #191919;
}

/* Keep the eagle in frame when the landscape cover is cropped to a square. */
.fif-portfolio__cover--alaska {
    object-position: 35% 50%;
}

.fif-portfolio__name {
    display: block;
    margin-top: 0.5rem;
    font-family: "Montserrat", sans-serif;
    font-size: 0.875rem;
    line-height: 1.3;
}

.fif-portfolio__meta {
    display: block;
    margin-top: 0.125rem;
    color: #aaa;
    font-size: 0.75rem;
    line-height: 1.35;
}

/* Individual story page */
.fif-story {
    padding-top: clamp(1.5rem, 4vw, 3rem);
    padding-bottom: 3rem;
}

.fif-story__back,
.fif-story__back:visited {
    color: #bbb;
    font-size: 0.875rem;
    text-decoration: none;
}

.fif-story__back:hover {
    color: #fff;
    text-decoration: underline;
}

.fif-story__back:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 4px;
}

.fif-story__header {
    margin: 2rem 0 2.5rem;
}

.fif-story__eyebrow,
.fif-story__date {
    margin: 0;
    color: #aaa;
    font-family: "Montserrat", sans-serif;
    font-size: 0.8rem;
    line-height: 1.5;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.fif-story__title {
    margin: 0.35rem 0 0.5rem;
    color: #fff;
    font-family: "Montserrat", sans-serif;
    font-size: clamp(2.25rem, 4vw, 3.5rem);
    font-weight: 400;
    line-height: 1.1;
}

.fif-story__intro {
    max-width: 60ch;
    margin-top: 1.5rem;
    color: #ddd;
    font-size: 1rem;
    line-height: 1.7;
}

.fif-story__intro p {
    margin: 0 0 1rem;
}

.fif-story__intro p:last-child {
    margin-bottom: 0;
}

.fif-story__intro h2,
.fif-story__intro h3 {
    margin: 1.75rem 0 0.75rem;
    color: #fff;
    font-family: "Montserrat", sans-serif;
    font-weight: 400;
    line-height: 1.25;
}

.fif-story__intro h2 {
    font-size: 1.5rem;
}

.fif-story__intro h3 {
    font-size: 1.2rem;
}

.fif-story__intro a,
.fif-story__intro a:visited {
    color: #fff;
    text-decoration: underline;
}

.fif-story__intro ul,
.fif-story__intro ol {
    margin: 0 0 1rem;
    padding-left: 1.5rem;
}

/* Gutenberg content stays in its authored order and keeps its block geometry. */
.fif-story__content {
    margin-top: 1.5rem;
    color: #ddd;
    font-size: 1rem;
    line-height: 1.7;
}

.fif-story--editor-layout .fif-story__content {
    width: 100%;
    max-width: none;
}

.fif-story__content > :is(p, h2, h3, h4, h5, h6, ul, ol, blockquote, pre) {
    max-width: 60ch;
}

.fif-story__content p {
    margin: 0 0 1rem;
}

.fif-story__content :is(h2, h3) {
    margin: 1.75rem 0 0.75rem;
    color: #fff;
    font-family: "Montserrat", sans-serif;
    font-weight: 400;
    line-height: 1.25;
}

.fif-story__content h2 {
    font-size: 1.5rem;
}

.fif-story__content h3 {
    font-size: 1.2rem;
}

.fif-story__content :is(ul, ol) {
    margin: 0 0 1rem;
    padding-left: 1.5rem;
}

.fif-story__content a,
.fif-story__content a:visited {
    color: #fff;
    text-decoration: underline;
}

/* Never force image heights: Gallery and Columns blocks may use authored crops. */
.fif-story__content :is(.wp-block-image, .wp-block-gallery, .wp-block-columns) {
    max-width: 100%;
}

.fif-story__content img[class*="wp-image-"] {
    max-width: 100%;
}

/* Large Image blocks can stop at their source width; fill the column like Gallery blocks.
   Keep explicitly resized and aligned Image blocks at their authored widths. */
.fif-story__content > .wp-block-image.size-large:not(.is-resized):not(.alignleft):not(.aligncenter):not(.alignright):not([style*="width"]) > img:not([style*="width"]),
.fif-story__content > .wp-block-image.size-large:not(.is-resized):not(.alignleft):not(.aligncenter):not(.alignright):not([style*="width"]) > a > img:not([style*="width"]) {
    display: block;
    width: 100%;
    height: auto;
}

.fif-story__content .fif-story__media-trigger {
    cursor: zoom-in;
}

.fif-story__content .fif-story__media-trigger:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 4px;
}

.fif-story__content figcaption {
    color: #aaa;
    font-size: 0.8rem;
    line-height: 1.4;
}

/* Images keep their original proportions on the story page. */
.fif-gallery {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem;
}

.fif-gallery__item {
    min-width: 0;
    margin: 0;
}

.fif-gallery__item:first-child {
    grid-column: 1 / -1;
}

.fif-gallery__link {
    display: block;
    cursor: pointer;
}

.fif-gallery__link:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 4px;
}

.fif-gallery__image {
    display: block;
    width: 100%;
    height: auto;
    background: #191919;
}

/* Elementor's site kit dims every hovered image to 10% opacity. */
.fif-portfolio__cover,
.fif-story .fif-gallery__image,
.fif-story .fif-story__content img[class*="wp-image-"],
.fif-story .fif-lightbox__image {
    opacity: 1 !important;
}

.fif-story .fif-gallery__link {
    -webkit-tap-highlight-color: transparent;
}

.fif-gallery__caption {
    margin-top: 0.35rem;
    color: #aaa;
    font-size: 0.8rem;
    line-height: 1.4;
}

/* Full-screen image viewer */
.fif-lightbox {
    position: fixed;
    inset: 0;
    z-index: 999999;
    width: 100vw;
    max-width: none;
    height: 100vh;
    height: 100dvh;
    max-height: none;
    margin: 0;
    padding: 0;
    border: 0;
    color: #fff;
    background: #050505;
}

.fif-lightbox::backdrop {
    background: rgba(0, 0, 0, 0.96);
}

body.fif-lightbox-is-open {
    overflow: hidden;
}

.fif-lightbox__inner {
    position: relative;
    display: grid;
    grid-template-columns: 3.5rem minmax(0, 1fr) 3.5rem;
    align-items: center;
    width: 100%;
    height: 100%;
}

.fif-lightbox__inner:fullscreen {
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    background: #050505;
}

.fif-lightbox__figure {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    margin: 0;
    text-align: center;
}

.fif-lightbox__image {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: calc(100dvh - 7rem);
    object-fit: contain;
}

/* A slim white frame sits outside the opened image without changing its size. */
.fif-lightbox .fif-lightbox__image {
    box-shadow: 0 0 0 clamp(2px, 0.5vmin, 8px) #fff;
}

.fif-lightbox__caption {
    min-height: 1.4em;
    margin-top: 0.65rem;
    color: #ddd;
    font-size: 0.85rem;
    line-height: 1.4;
}

.fif-lightbox__counter {
    display: block;
    margin-top: 0.25rem;
    color: #aaa;
    font-size: 0.75rem;
}

/* Override Hello Elementor's pink button hover rules inside the viewer. */
.fif-lightbox button,
.fif-lightbox button:hover,
.fif-lightbox button:focus {
    display: block;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: #fff !important;
    cursor: pointer;
    font-family: Arial, sans-serif;
    line-height: 1;
}

.fif-lightbox button:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}

.fif-lightbox__close {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    z-index: 1;
    width: 2.75rem;
    height: 2.75rem;
    font-size: 2rem;
}

.fif-lightbox__download,
.fif-lightbox__download:visited,
.fif-lightbox__download:hover {
    position: absolute;
    top: 0.75rem;
    right: 4rem;
    z-index: 1;
    display: flex;
    align-items: center;
    min-height: 2.75rem;
    color: #fff !important;
    background: transparent !important;
    font-family: Arial, sans-serif;
    font-size: 0.875rem;
    text-decoration: none;
}

.fif-lightbox__download:hover {
    text-decoration: underline;
}

.fif-lightbox__download:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}

.fif-lightbox__fullscreen {
    position: absolute;
    top: 0.75rem;
    right: 9.5rem;
    z-index: 1;
    min-height: 2.75rem;
    font-size: 0.875rem;
}

.fif-lightbox__fullscreen[hidden] {
    display: none !important;
}

/* In true desktop fullscreen, keep the toolbar below the photograph. */
.fif-lightbox__inner:fullscreen .fif-lightbox__close,
.fif-lightbox__inner:fullscreen .fif-lightbox__download,
.fif-lightbox__inner:fullscreen .fif-lightbox__fullscreen {
    top: auto;
    bottom: 0.5rem;
}

.fif-lightbox__previous,
.fif-lightbox__next {
    position: absolute;
    top: 50%;
    bottom: auto;
    z-index: 2;
    width: 3rem;
    height: 3rem;
    min-height: 3rem;
    transform: translateY(-50%);
    font-size: 2.25rem;
    text-shadow: 0 1px 5px #000;
}

.fif-lightbox__previous {
    left: 0.25rem;
    right: auto;
}

.fif-lightbox__next {
    right: 0.25rem;
    left: auto;
}

@media (max-width: 767px) {
    .fif-portfolio {
        padding-top: 0.5rem;
    }

    .fif-portfolio .fif-section-title {
        font-size: 0.75rem;
        line-height: 1.3;
    }

    .fif-portfolio__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.5rem;
    }

    .fif-portfolio__name {
        font-size: 0.8rem;
    }

    .fif-story {
        padding-top: 1.25rem;
    }

    .fif-story__header {
        margin: 1.5rem 0 2rem;
    }

    .fif-story__title {
        font-size: 2.25rem;
    }

    .fif-gallery {
        grid-template-columns: minmax(0, 1fr);
        gap: 1.5rem;
    }

    .fif-gallery__item:first-child {
        grid-column: auto;
    }

    .fif-lightbox__inner {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: minmax(0, 1fr);
    }

    .fif-lightbox__figure {
        grid-column: 1 / -1;
        grid-row: 1;
        padding: 3rem 0.5rem 0;
    }

    .fif-lightbox__image {
        max-height: calc(100dvh - 7rem);
    }

}

/* Landscape phones get one compact control row, not a tall caption/counter. */
@media (hover: none) and (pointer: coarse) and (orientation: landscape) {
    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        grid-template-rows: minmax(0, 1fr) 2.75rem;
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__figure {
        grid-column: 1 / -1;
        grid-row: 1;
        padding: 0 0.5rem;
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__image {
        max-height: calc(100dvh - 3rem);
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__caption {
        display: none;
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__counter {
        position: absolute;
        bottom: 0.9rem;
        left: 50%;
        min-height: 0;
        margin: 0;
        transform: translateX(-50%);
        font-size: 0.65rem;
        white-space: nowrap;
        pointer-events: none;
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__close,
    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__download,
    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__fullscreen {
        position: absolute;
        top: auto;
        bottom: 0;
        z-index: 2;
        height: 2.75rem;
        min-height: 2.75rem;
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__close {
        right: 0.25rem;
        width: 2.75rem;
        font-size: 1.8rem;
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__fullscreen {
        right: 3.5rem;
        font-size: 0.75rem;
    }

    .fif-lightbox__inner:not(.fif-lightbox__inner--clean) .fif-lightbox__download {
        right: 9.5rem;
        font-size: 0.75rem;
    }
}

/* Keep Previous and Next at the side midpoints in all viewer modes. */
.fif-lightbox .fif-lightbox__figure {
    grid-column: 2;
    grid-row: 1;
}

.fif-lightbox .fif-lightbox__inner .fif-lightbox__previous,
.fif-lightbox .fif-lightbox__inner .fif-lightbox__next {
    position: absolute;
    top: 50%;
    bottom: auto;
    z-index: 2;
    grid-column: auto;
    grid-row: auto;
    width: 3rem;
    height: 3rem;
    min-height: 3rem;
    transform: translateY(-50%);
    font-size: 2.25rem;
    text-shadow: 0 1px 5px #000;
}

.fif-lightbox .fif-lightbox__inner .fif-lightbox__previous {
    left: 0.25rem;
    right: auto;
}

.fif-lightbox .fif-lightbox__inner .fif-lightbox__next {
    right: 0.25rem;
    left: auto;
}

@media (max-width: 767px) and (orientation: portrait) {
    .fif-lightbox .fif-lightbox__inner {
        grid-template-rows: minmax(0, 1fr);
    }

    .fif-lightbox .fif-lightbox__figure {
        grid-column: 1 / -1;
        grid-row: 1;
    }

    .fif-lightbox .fif-lightbox__image {
        max-height: calc(100dvh - 7rem);
    }
}
