/**
 * Partner Grid Block - Styles
 *
 * All sizing/spacing values come from CSS custom properties set inline
 * on each block instance, so multiple blocks on the same page are
 * fully independent from each other.
 *
 * @package     WeAreFolling
 * @author      Greta Eline Poclen
 * @since       1.0.0
 */

/* =========================================================================
   Block wrapper
   ========================================================================= */
.partner-grid {
    background-color: var(--pg-bg, transparent);
    padding-top: var(--pg-padding-top, 0px);
    padding-bottom: var(--pg-padding-bottom, 0px);
    width: 100%;
    box-sizing: border-box;
}

/* =========================================================================
   Header: title / divider / subtitle
   ========================================================================= */
.partner-grid__header {
	margin-bottom: 40px;
}

.partner-grid__header--align-left   { text-align: left; }
.partner-grid__header--align-center { text-align: center; }
.partner-grid__header--align-right  { text-align: right; }

.partner-grid__title {
	color: var(--pg-title-color, inherit);
	margin: 0 0 8px;
}

/* Divider inherits the title color */
.partner-grid__divider {
    display: block;
    width: calc(100% - 80px);
    margin: 10px auto;
    height: 1px;
    background-color: var(--pg-title-color, currentColor);
    opacity: 0.4;
}

.partner-grid__subtitle {
	margin: 8px 0 0;
	opacity: 0.75;
}

/* =========================================================================
   Grid
   ========================================================================= */
.partner-grid__grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: var(--pg-gap-v, 40px) var(--pg-gap-h, 40px);
}

/* =========================================================================
   Single item
   ========================================================================= */
.partner-grid__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 0 0 auto;
    width: var(--pg-logo-width, 200px);
    text-align: center;
    justify-content: space-between;
    gap: 8px;
}
.partner-grid__item--caption-left   { align-items: flex-start; }
.partner-grid__item--caption-center { align-items: center; }
.partner-grid__item--caption-right  { align-items: flex-end; }

/* =========================================================================
   Logo wrapper
   Fixed-height container: all logos appear visually the same size
   regardless of their original pixel dimensions.
   object-fit: contain preserves proportions.
   ========================================================================= */
.partner-grid__logo-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    aspect-ratio: 3 / 2;
    padding: var(--pg-logo-padding, 10px);
    box-sizing: border-box;
    overflow: visible;
    flex-shrink: 0; /* impedisce al logo-wrap di schiacciarsi */
}

/* Vertical alignment variants set on the block wrapper */
.partner-grid--valign-top    .partner-grid__logo-wrap { align-items: flex-start; }
.partner-grid--valign-center .partner-grid__logo-wrap { align-items: center; }
.partner-grid--valign-bottom .partner-grid__logo-wrap { align-items: flex-end; }

.partner-grid__logo {
    display: block;
    max-width: 70%;
    max-height: 70%;
    width: auto;
    height: auto;
    object-fit: contain;
    transition: filter 0.3s ease, transform 0.3s ease, opacity 0.3s ease;
}
/* =========================================================================
   Link wrapper
   ========================================================================= */
.partner-grid__link {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	/* Link fills the logo-wrap height so the entire area is clickable */
	height: var(--pg-logo-height, 100px);
	text-decoration: none;
}

/* =========================================================================
   Grayscale - global (on block wrapper) and per-item
   ========================================================================= */
.partner-grid--grayscale .partner-grid__logo,
.partner-grid__item--grayscale .partner-grid__logo {
	filter: grayscale(100%);
}

/* Restore color on hover when grayscale is active */
.partner-grid--grayscale .partner-grid__item:hover .partner-grid__logo,
.partner-grid__item--grayscale:hover .partner-grid__logo {
	filter: grayscale(0%);
}

/* =========================================================================
   Hover effects (classes added to block wrapper)
   ========================================================================= */
.partner-grid--hover-zoom .partner-grid__item:hover .partner-grid__logo {
	transform: scale(1.08);
}

.partner-grid--hover-opacity .partner-grid__item:hover .partner-grid__logo {
	opacity: 0.7;
}

/* =========================================================================
   Caption
   ========================================================================= */
.partner-grid__caption {
    margin: 18px 0 0;
    font-size: var(--pg-caption-size, 14px);
    color: var(--pg-caption-color, inherit);
    line-height: 1.4;
    text-align: center;
    width: 100%;
    white-space: nowrap;
}

.partner-grid__caption--uppercase { text-transform: uppercase; }
.partner-grid__caption--italic    { font-style: italic; }
.partner-grid__caption--normal    { font-style: normal; text-transform: none; }

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width: 768px) {
	.partner-grid__grid {
		grid-template-columns: repeat(var(--pg-columns-mobile, 2), 1fr);
	}
}
