/* ─────────────────────────────────────────────
   OWFR Partners Carousel — Frontend Styles
   ───────────────────────────────────────────── */

.owfr-pc-section {
    width: 100%;
    background: #ffffff;
    padding: var(--owfr-pc-padding, 48px) 0;
    overflow: hidden;
    box-sizing: border-box;
}

.owfr-pc-section.owfr-pc-full-width {
    width: 100vw;
    position: relative;
    left: 50%;
    right: 50%;
    margin-left: -50vw;
    margin-right: -50vw;
    max-width: 100vw;
    padding-left: var(--owfr-pc-side-padding, 24px);
    padding-right: var(--owfr-pc-side-padding, 24px);
}

.owfr-pc-section *,
.owfr-pc-section *::before,
.owfr-pc-section *::after {
    box-sizing: inherit;
}

/* ── Carousel container ── */
.owfr-pc-wrapper {
    position: relative;
    width: 100%;
    overflow: hidden;
}

.owfr-pc-wrapper::before,
.owfr-pc-wrapper::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    width: 60px;
    z-index: 2;
    pointer-events: none;
}
.owfr-pc-wrapper::before {
    left: 0;
    background: linear-gradient(to right, #ffffff 0%, transparent 100%);
}
.owfr-pc-wrapper::after {
    right: 0;
    background: linear-gradient(to left, #ffffff 0%, transparent 100%);
}

/* ── Track ──
   Scroll duration is driven by the --owfr-pc-speed custom property
   (seconds, set inline from the admin-controlled speed setting). */
.owfr-pc-track {
    display: flex;
    align-items: center;
    width: max-content;
    gap: 56px;
    padding: 16px 0;
    margin: 0;
    list-style: none;
}

.owfr-pc-row-1 { animation: owfr-pc-scroll-left calc(var(--owfr-pc-speed, 90) * 1s) linear infinite; }
.owfr-pc-row-2 { animation: owfr-pc-scroll-right calc(var(--owfr-pc-speed, 90) * 1s) linear infinite; }

@keyframes owfr-pc-scroll-left {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
@keyframes owfr-pc-scroll-right {
    0%   { transform: translateX(-50%); }
    100% { transform: translateX(0); }
}

.owfr-pc-wrapper:hover .owfr-pc-track {
    animation-play-state: paused;
}

/* ── Logo items ──
   Sizing is driven by the --owfr-pc-logo-size custom property (set inline
   from the admin-controlled logo size setting), with sensible fallbacks. */
.owfr-pc-logo-item {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    height: calc(var(--owfr-pc-logo-size, 70px) + 10px);
    min-width: calc(var(--owfr-pc-logo-size, 70px) * 2.5714);
    max-width: calc(var(--owfr-pc-logo-size, 70px) * 3.7143);
    padding: 8px 16px;
    transition: opacity 0.3s ease, transform 0.3s ease;
    text-decoration: none;
}

.owfr-pc-logo-item:hover {
    opacity: 0.75;
    transform: scale(1.08);
}

.owfr-pc-logo-item img {
    max-height: var(--owfr-pc-logo-size, 70px);
    max-width: calc(var(--owfr-pc-logo-size, 70px) * 3.4286);
    width: auto;
    height: auto;
    object-fit: contain;
    transition: opacity 0.3s ease;
}

.owfr-pc-logo-item:hover img {
    opacity: 0.8;
}

.owfr-pc-empty-notice {
    color: #777;
    font-style: italic;
    padding: 1rem;
}

/* ── Responsive ── */
@media (max-width: 768px) {
    .owfr-pc-section { padding: calc(var(--owfr-pc-padding, 48px) * 0.5) 0; }
    .owfr-pc-track { gap: 36px; }
    .owfr-pc-logo-item {
        height: calc((var(--owfr-pc-logo-size, 70px) * 0.8) + 8px);
        min-width: calc(var(--owfr-pc-logo-size, 70px) * 0.8 * 2.5714);
        max-width: calc(var(--owfr-pc-logo-size, 70px) * 0.8 * 3.7143);
    }
    .owfr-pc-logo-item img {
        max-height: calc(var(--owfr-pc-logo-size, 70px) * 0.8);
        max-width: calc(var(--owfr-pc-logo-size, 70px) * 0.8 * 3.4286);
    }
    .owfr-pc-wrapper::before,
    .owfr-pc-wrapper::after { width: 30px; }

    /* Hide row 2 on mobile — JS merges all logos into row 1 */
    .owfr-pc-wrapper:nth-of-type(2) { display: none; }
    .owfr-pc-row-1 { animation-duration: calc(var(--owfr-pc-speed, 90) * 1.333 * 1s); }
}
