/**
 * Elementor Widgets — Shared Reusable Styles
 *
 * Reusable utility classes shared across Petsure widgets.
 * Pure effects (cursor, scroll, back-to-top) are in petsure-effects.css.
 *
 * @package Petsure_Core
 */

/* ============================================================ */
/*  SHARED: POSITION-AWARE BUTTON (petsure-pos-aware)            */
/*  Used by: Button, CTA, Icon Box, Service, Pricing widgets    */
/* ============================================================ */

.petsure-pos-aware {
    position: relative;
    overflow: hidden;
}

.petsure-pos-aware-bg {
    position: absolute;
    display: block;
    width: 0;
    height: 0;
    aspect-ratio: 1;
    border-radius: 50%;
    background: var(--petsure-secondary);
    transition: all ease-in-out 0.4s;
    transform: translate(-50%, -50%);
    z-index: 0;
    pointer-events: none;
}

.petsure-pos-aware:hover .petsure-pos-aware-bg {
    width: 900px;
    height: 900px;
}

.petsure-btn-text {
    position: relative;
    z-index: 1;
    transition: color 0.4s ease-in-out;
}

.petsure-btn-icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    font-size: 16px;
    background: var(--petsure-primary);
    color: var(--petsure-accent);
    border-radius: 6px;
    position: relative;
    z-index: 1;
    transition: all 0.4s ease-in-out;
}

.petsure-btn-icon i,
.petsure-btn-icon svg {
    font-size: inherit;
    width: 1em;
    height: 1em;
    display: flex;
    align-items: center;
    justify-content: center;
}

.petsure-btn-icon svg {
    fill: currentColor;
}

.petsure-btn-icon i {
    color: currentColor;
}

.petsure-pos-aware:hover .petsure-btn-icon {
    background: var(--petsure-white);
    color: var(--petsure-secondary);
}

/* ============================================================ */
/*  SHARED: SWIPER ARROWS & DOTS                                */
/*  Used by: Blog, Pricing, Testimonial widgets                 */
/* ============================================================ */

.petsure-swiper-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--petsure-white);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 10;
    transition: all 0.3s ease;
    color: var(--petsure-primary);
    font-size: 14px;
}

/* Outside arrows - positioned to overlap container edge */
.petsure-has-outside-arrows .petsure-swiper-arrow {
    margin: 0;
}

.petsure-has-outside-arrows .petsure-swiper-arrow.petsure-prev {
    right: auto;
    left: -5px;
}

.petsure-has-outside-arrows .petsure-swiper-arrow.petsure-next {
    left: auto;
    right: -5px;
}

/* Inside arrows */
.petsure-swiper-arrow.petsure-prev-inside {
    left: 10px;
}

.petsure-swiper-arrow.petsure-next-inside {
    right: 10px;
}

.petsure-swiper-arrow:hover {
    background: var(--petsure-accent);
    color: var(--petsure-white);
}

.petsure-swiper-dots {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 20px;
}

.petsure-swiper-dots .swiper-pagination-bullet {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--petsure-text);
    opacity: 0.3;
    cursor: pointer;
    transition: all 0.3s ease;
}

.petsure-swiper-dots .swiper-pagination-bullet-active {
    opacity: 1;
    background: var(--petsure-accent);
    width: 24px;
    border-radius: 4px;
}

.swiper-wrapper {
    align-items: stretch;
}

.swiper-slide {
    height: auto !important;
}

.petsure-swiper-static.petsure-cols-1 .swiper-slide { width: 100% !important; }
.petsure-swiper-static.petsure-cols-2 .swiper-slide { width: calc(100% / 2) !important; }
.petsure-swiper-static.petsure-cols-3 .swiper-slide { width: calc(100% / 3) !important; }
.petsure-swiper-static.petsure-cols-4 .swiper-slide { width: calc(100% / 4) !important; }
.petsure-swiper-static.petsure-cols-5 .swiper-slide { width: calc(100% / 5) !important; }
.petsure-swiper-static.petsure-cols-6 .swiper-slide { width: calc(100% / 6) !important; }

.petsure-swiper-static {
    display: flex !important;
    flex-wrap: wrap !important;
}

/* ============================================================ */
/*  LAZY LOAD — Progressive Image                               */
/* ============================================================ */

.petsure-lazy,
.petsure-lazy-bg {
    transition: filter 0.4s ease, opacity 0.4s ease;
}

.petsure-lazy-loading {
    filter: blur(2px);
    opacity: 0.9;
    transition: filter 0.4s ease, opacity 0.4s ease;
}

.petsure-lazy-loaded {
    filter: blur(0);
    opacity: 1;
}

.petsure-lazy-fallback {
    filter: blur(2px);
    opacity: 0.9;
}