/* FIDATI Image Studio — frontend and shared block styles */
.fis-image-block,
.fis-gallery-block {
    box-sizing: border-box;
    width: var(--fis-width-desktop, 100%);
    max-width: var(--fis-max-width, 1200px);
    margin-top: 1.5rem;
    margin-bottom: 1.5rem;
}

.fis-align-left { margin-left: 0; margin-right: auto; }
.fis-align-center { margin-left: auto; margin-right: auto; }
.fis-align-right { margin-left: auto; margin-right: 0; }

.fis-media-frame {
    position: relative;
    display: block;
    box-sizing: border-box;
    width: 100%;
    overflow: hidden;
    padding: 0;
    border: var(--fis-border-width, 0) solid var(--fis-border-color, #0d2d25);
    border-radius: var(--fis-radius, 0);
    background: var(--fis-background, transparent);
    color: inherit;
    line-height: 0;
}

button.fis-media-frame {
    appearance: none;
    cursor: zoom-in;
    font: inherit;
}

.fis-has-aspect .fis-media-frame {
    aspect-ratio: var(--fis-aspect, 4 / 3);
}

.fis-aspect-auto .fis-media-frame,
.fis-aspect-auto .fis-media {
    aspect-ratio: auto;
}

.fis-aspect-auto .fis-media { height: auto; }

.fis-media {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
    object-position: var(--fis-object-x, 50%) var(--fis-object-y, 50%);
}

.fis-image-block[style*="--fis-object"] .fis-media,
.fis-gallery-block[style*="--fis-object"] .fis-media {
    object-position: var(--fis-object-x, 50%) var(--fis-object-y, 50%);
}

.fis-image-block .fis-media[style*="contain"],
.fis-gallery-block .fis-media[style*="contain"] { object-fit: contain; }

/* Shape masks */
.fis-shape-rounded .fis-media-frame { border-radius: max(var(--fis-radius, 24px), 24px); }
.fis-shape-circle .fis-media-frame { clip-path: circle(50% at 50% 50%); border-radius: 50%; }
.fis-shape-ellipse .fis-media-frame { clip-path: ellipse(50% 42% at 50% 50%); }
.fis-shape-diamond .fis-media-frame { clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); }
.fis-shape-trapezoid .fis-media-frame { clip-path: polygon(14% 0%, 86% 0%, 100% 100%, 0% 100%); }
.fis-shape-hexagon .fis-media-frame { clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%); }
.fis-shape-arch .fis-media-frame { border-radius: 50% 50% var(--fis-radius, 0) var(--fis-radius, 0); }
.fis-shape-blob .fis-media-frame { border-radius: 43% 57% 64% 36% / 36% 42% 58% 64%; }
.fis-shape-star .fis-media-frame {
    clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 94%, 50% 72%, 21% 94%, 32% 57%, 2% 35%, 39% 35%);
}

.fis-letter-mask {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    min-height: 160px;
    overflow: hidden;
    background-repeat: no-repeat;
    color: transparent;
    font-family: Georgia, 'Times New Roman', serif;
    font-size: clamp(9rem, 35vw, 36rem);
    font-weight: 900;
    line-height: .78;
    letter-spacing: -.08em;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    user-select: none;
}

/* Object fit is controlled with a data-independent class generated by the editor. */
.fis-media-frame img { object-fit: cover; }
.fis-fit-contain .fis-media-frame img { object-fit: contain; }

/* Shadows */
.fis-shadow-soft .fis-media-frame { box-shadow: 0 8px 24px rgba(13, 45, 37, .12); }
.fis-shadow-medium .fis-media-frame { box-shadow: 0 16px 42px rgba(13, 45, 37, .20); }
.fis-shadow-editorial .fis-media-frame { box-shadow: 14px 14px 0 rgba(145, 167, 157, .55); }
.fis-shadow-floating .fis-media-frame { box-shadow: 0 24px 65px rgba(0, 0, 0, .24); }

.fis-caption {
    margin: .65rem 0 0;
    color: inherit;
    font-size: .875rem;
    line-height: 1.45;
    text-align: left;
}

/* Gallery layouts */
.fis-gallery-stage { position: relative; }
.fis-gallery-track { box-sizing: border-box; }
.fis-gallery-item { min-width: 0; margin: 0; break-inside: avoid; }

.fis-layout-grid .fis-gallery-track {
    display: grid;
    grid-template-columns: repeat(var(--fis-columns-desktop, 3), minmax(0, 1fr));
    gap: var(--fis-gap, 18px);
}

.fis-layout-masonry .fis-gallery-track {
    columns: var(--fis-columns-desktop, 3);
    column-gap: var(--fis-gap, 18px);
}

.fis-layout-masonry .fis-gallery-item { margin-bottom: var(--fis-gap, 18px); }
.fis-layout-masonry .fis-media-frame { aspect-ratio: auto; }
.fis-layout-masonry .fis-media { height: auto; }

.fis-layout-carousel { overflow: visible; }
.fis-layout-carousel .fis-gallery-stage { overflow: hidden; }
.fis-layout-carousel .fis-gallery-track {
    display: flex;
    gap: var(--fis-gap, 18px);
    overflow-x: auto;
    scroll-behavior: smooth;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
}
.fis-layout-carousel .fis-gallery-track::-webkit-scrollbar { display: none; }
.fis-layout-carousel .fis-gallery-item {
    flex: 0 0 calc((100% - (var(--fis-gap, 18px) * (var(--fis-slides-desktop, 3) - 1))) / var(--fis-slides-desktop, 3));
    scroll-snap-align: start;
}

.fis-layout-slideshow .fis-gallery-track { position: relative; }
.fis-layout-slideshow .fis-gallery-item { display: none; opacity: 0; }
.fis-layout-slideshow .fis-gallery-item.is-active { display: block; animation: fisFadeIn .45s ease both; opacity: 1; }

@keyframes fisFadeIn {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}

.fis-nav {
    position: absolute;
    z-index: 4;
    top: 50%;
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
    transform: translateY(-50%);
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 5px 20px rgba(0, 0, 0, .18);
    color: #0d2d25;
    cursor: pointer;
    font: 400 2rem/1 Georgia, serif;
}
.fis-prev { left: 12px; }
.fis-next { right: 12px; }
.fis-nav:focus-visible,
.fis-dot:focus-visible,
.fis-lightbox-trigger:focus-visible,
.fis-lightbox button:focus-visible { outline: 3px solid #91a79d; outline-offset: 3px; }

.fis-dots {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-top: 14px;
}
.fis-dot {
    width: 9px;
    height: 9px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #91a79d;
    opacity: .45;
    cursor: pointer;
}
.fis-dot.is-active { transform: scale(1.28); background: #0d2d25; opacity: 1; }

.fis-live-region,
.fis-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Lightbox */
.fis-lightbox {
    position: fixed;
    z-index: 999999;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 28px;
    background: rgba(4, 12, 10, .94);
    color: #fff;
}
.fis-lightbox.is-open { display: flex; }
.fis-lightbox-content {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: min(94vw, 1600px);
    height: min(92vh, 1100px);
}
.fis-lightbox-image {
    display: block;
    max-width: 100%;
    max-height: calc(100% - 70px);
    object-fit: contain;
}
.fis-lightbox-caption { min-height: 1.5em; margin: 14px 52px 0; font-size: .95rem; text-align: center; }
.fis-lightbox-close,
.fis-lightbox-prev,
.fis-lightbox-next {
    position: absolute;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .4);
    border-radius: 50%;
    background: rgba(13, 45, 37, .72);
    color: #fff;
    cursor: pointer;
    font: 400 2rem/1 Georgia, serif;
}
.fis-lightbox-close { top: 0; right: 0; font-family: Arial, sans-serif; font-size: 1.4rem; }
.fis-lightbox-prev { top: 50%; left: 0; transform: translateY(-50%); }
.fis-lightbox-next { top: 50%; right: 0; transform: translateY(-50%); }
body.fis-lightbox-open { overflow: hidden; }

@media (max-width: 980px) {
    .fis-image-block,
    .fis-gallery-block { width: var(--fis-width-tablet, 100%); }
    .fis-layout-grid .fis-gallery-track { grid-template-columns: repeat(var(--fis-columns-tablet, 2), minmax(0, 1fr)); }
    .fis-layout-masonry .fis-gallery-track { columns: var(--fis-columns-tablet, 2); }
    .fis-layout-carousel .fis-gallery-item {
        flex-basis: calc((100% - (var(--fis-gap, 18px) * (var(--fis-slides-tablet, 2) - 1))) / var(--fis-slides-tablet, 2));
    }
}

@media (max-width: 600px) {
    .fis-image-block,
    .fis-gallery-block { width: var(--fis-width-mobile, 100%); }
    .fis-layout-grid .fis-gallery-track { grid-template-columns: repeat(var(--fis-columns-mobile, 1), minmax(0, 1fr)); }
    .fis-layout-masonry .fis-gallery-track { columns: var(--fis-columns-mobile, 1); }
    .fis-layout-carousel .fis-gallery-item {
        flex-basis: calc((100% - (var(--fis-gap, 18px) * (var(--fis-slides-mobile, 1) - 1))) / var(--fis-slides-mobile, 1));
    }
    .fis-nav { width: 38px; height: 38px; }
    .fis-lightbox { padding: 12px; }
    .fis-lightbox-content { width: 100%; height: 94vh; }
    .fis-lightbox-prev { left: 4px; }
    .fis-lightbox-next { right: 4px; }
    .fis-lightbox-caption { margin-left: 44px; margin-right: 44px; }
}

@media (prefers-reduced-motion: reduce) {
    .fis-layout-carousel .fis-gallery-track { scroll-behavior: auto; }
    .fis-layout-slideshow .fis-gallery-item.is-active { animation: none; }
}
