/* ── CSS Custom Properties — override in Elementor → Custom CSS or theme ── */
:root {
    --raf-spinner-size:    24px;
    --raf-spinner-weight:  3px;
    --raf-spinner-color:   #333;
    --raf-spinner-track:   rgba(0, 0, 0, 0.15);
    --raf-loading-opacity: 0.5;
    --raf-spinner-top:     50%;
    --raf-spinner-right:   10px;
    --raf-spinner-bottom:  auto;
    --raf-spinner-left:    auto;
    --raf-spinner-offset-x: 0px;
    --raf-spinner-offset-y: -50%;
}

/* ── Loading state — dims the grid ────────────────────────────────── */
.raf-loading {
    opacity: var(--raf-loading-opacity);
    pointer-events: none;
}

/* ── Spinner wrapper — handles position only ───────────────────────── */
.raf-wrapper {
    position: relative;
    display: flex;
    flex-wrap: wrap;
}

.raf-spinner {
    position: absolute;
    top:       var(--raf-spinner-top);
    right:     var(--raf-spinner-right);
    bottom:    var(--raf-spinner-bottom);
    left:      var(--raf-spinner-left);
    transform: translate(var(--raf-spinner-offset-x), var(--raf-spinner-offset-y));
    width:     var(--raf-spinner-size);
    height:    var(--raf-spinner-size);
    pointer-events: none;
    z-index: 10;
}

/* ── Spinner ring — handles rotation only ──────────────────────────── */
.raf-spinner::after {
    content: '';
    display: block;
    width:  100%;
    height: 100%;
    border: var(--raf-spinner-weight) solid var(--raf-spinner-track);
    border-top-color: var(--raf-spinner-color);
    border-radius: 50%;
    animation: raf-spin 0.8s linear infinite;
}

@keyframes raf-spin { to { transform: rotate(360deg); } }
.raf-pagination { margin-top: 20px; text-align: center; }
.raf-pagination ul { display: inline-flex; list-style: none; padding: 0; gap: 5px; }
.raf-pagination li { display: inline-block; }
.raf-pagination a, .raf-pagination span {
    padding: 8px 12px;
    border: 1px solid #ddd;
    text-decoration: none;
    display: block;
}

/* ── Numbered pagination ───────────────────────────────────────────── */
.raf-pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 24px;
}

.raf-page-item,
.raf-page-prev,
.raf-page-next {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: background-color 0.15s, border-color 0.15s, color 0.15s;
}

.raf-page-item:hover,
.raf-page-prev:hover,
.raf-page-next:hover {
    background-color: #f0f0f0;
    border-color: #bbb;
}

.raf-page-item.is-current {
    background-color: #333;
    border-color: #333;
    color: #fff;
    cursor: default;
    pointer-events: none;
}

.raf-page-ellipsis {
    display: inline-flex;
    align-items: center;
    padding: 0 4px;
    color: #999;
}

/* ── Load More button ──────────────────────────────────────────────── */
.raf-loadmore-btn {
    display: inline-block;
    padding: 10px 24px;
    border: 1px solid #ddd;
    border-radius: 4px;
    background: transparent;
    cursor: pointer;
    transition: background-color 0.15s, border-color 0.15s;
}

.raf-loadmore-btn:hover:not(:disabled) {
    background-color: #f0f0f0;
    border-color: #bbb;
}

.raf-loadmore-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* ── Infinite scroll sentinel ──────────────────────────────────────── */
.raf-scroll-sentinel {
    height: 1px;
    visibility: hidden;
}
