/* Joint Theme Core - Shared Widget Styles */

.jtc-screen-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;
}

/* Swiper Slide Defaults */
[data-jtc-swiper] .swiper-slide {
    height: auto;
}

.jtc-swiper-shell {
    position: relative;
    overflow: visible;
}

.jtc-swiper-wrapper {
    position: relative;
    overflow: visible;
}

[data-jtc-swiper] {
    position: relative;
    overflow: hidden;
}

.jtc-swiper-shell .jtc-swiper-pagination {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--rank-one-pagination-dot-gap, calc(var(--swiper-pagination-bullet-horizontal-gap, 6px) + var(--swiper-pagination-bullet-horizontal-gap, 6px)));
    margin-top: var(--rank-one-pagination-dot-top-spacing, 16px);
    bottom: auto;
}
.jtc-swiper-shell .jtc-swiper-pagination .swiper-pagination-bullet {
    width: var(--rank-one-pagination-dot-size, var(--swiper-pagination-bullet-size, 8px));
    height: var(--rank-one-pagination-dot-size, var(--swiper-pagination-bullet-size, 8px));
    margin: 0;
    background-color: var(--rank-one-pagination-dot-color, rgba(0, 0, 0, 0.2));
    opacity: 1;
}
.jtc-swiper-shell .jtc-swiper-pagination .swiper-pagination-bullet-active {
    background-color: var(--rank-one-pagination-dot-active-color, var(--swiper-pagination-color, var(--swiper-theme-color, #007aff)));
}
.jtc-swiper-wrapper .elementor-swiper-button {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 10;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: var(--rank-one-pagination-arrow-padding, 0);
    border: 0;
    border-radius: var(--rank-one-pagination-arrow-radius, 0);
    background: transparent;
    background-color: var(--rank-one-pagination-arrow-background, transparent);
    box-shadow: var(
        --joint-theme-shadows-3,
        0px 3px 3px -2px rgba(0, 0, 0, 0.2),
        0px 3px 4px 0px rgba(0, 0, 0, 0.14),
        0px 1px 8px 0px rgba(0, 0, 0, 0.12)
    );
    color: var(--rank-one-pagination-arrow-color, inherit);
    font: inherit;
    font-size: var(--rank-one-pagination-arrow-size, 25px);
    cursor: pointer;
    transition: color 0.2s ease, background-color 0.2s ease;
}
.jtc-swiper-wrapper .elementor-swiper-button:hover,
.jtc-swiper-wrapper .elementor-swiper-button:focus-visible {
    background-color: var(--rank-one-pagination-arrow-hover-background, var(--rank-one-pagination-arrow-background, transparent));
    color: var(--rank-one-pagination-arrow-hover-color, var(--rank-one-pagination-arrow-color, inherit));
}
.jtc-swiper-wrapper .jtc-swiper-button-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    font-size: inherit;
    line-height: 1;
}
.jtc-swiper-wrapper .jtc-swiper-button-icon i {
    font-size: inherit;
}
.jtc-swiper-wrapper .jtc-swiper-button-icon svg {
    width: 1em;
    height: 1em;
    fill: currentColor;
}
.jtc-swiper-wrapper .jtc-swiper-button-icon--mask {
    width: 1em;
    height: 1em;
    background-color: currentColor;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-size: contain;
}
.jtc-swiper-wrapper .jtc-swiper-button-icon--previous {
    -webkit-mask-image: var(--rank-one-pagination-arrow-prev-mask, url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='m15%2018-6-6%206-6'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E"));
    mask-image: var(--rank-one-pagination-arrow-prev-mask, url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='m15%2018-6-6%206-6'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E"));
}
.jtc-swiper-wrapper .jtc-swiper-button-icon--next {
    -webkit-mask-image: var(--rank-one-pagination-arrow-next-mask, url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='m9%206%206%206-6%206'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E"));
    mask-image: var(--rank-one-pagination-arrow-next-mask, url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='m9%206%206%206-6%206'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E"));
}
.jtc-swiper-wrapper .elementor-swiper-button-prev {
    left: 0 !important;
    transform: translate(-50%, -50%) !important;
}
.jtc-swiper-wrapper .elementor-swiper-button-next {
    right: 0 !important;
    transform: translate(50%, -50%) !important;
}

@media (max-width: 767px) {
    .jtc-swiper-wrapper.jtc-swiper-hide-controls-mobile .elementor-swiper-button,
    .jtc-swiper-wrapper.jtc-swiper-hide-controls-mobile + .jtc-swiper-pagination {
        display: none !important;
    }
}

@media (min-width: 768px) and (max-width: 1024px) {
    .jtc-swiper-wrapper.jtc-swiper-hide-controls-tablet .elementor-swiper-button,
    .jtc-swiper-wrapper.jtc-swiper-hide-controls-tablet + .jtc-swiper-pagination {
        display: none !important;
    }
}

@media (min-width: 1025px) {
    .jtc-swiper-wrapper.jtc-swiper-hide-controls-desktop .elementor-swiper-button,
    .jtc-swiper-wrapper.jtc-swiper-hide-controls-desktop + .jtc-swiper-pagination {
        display: none !important;
    }
}

/* Pre-init: hide swipers until initialized to prevent layout shift */
[data-jtc-swiper]:not(.swiper-initialized) {
    overflow: hidden;
    opacity: 0;
}
[data-jtc-swiper].swiper-initialized {
    opacity: 1;
    transition: opacity 0.15s ease;
}

/* Elementor editor can leave Swiper inline heights stale after live CSS control updates.
   In editor/preview only, prefer natural content height so slider widgets are not clipped. */
.elementor-editor-active .jtc-swiper-shell,
.elementor-editor-active .jtc-swiper-wrapper,
.elementor-editor-active [data-jtc-swiper],
.elementor-editor-active [data-jtc-swiper] .swiper-wrapper,
.elementor-preview .jtc-swiper-shell,
.elementor-preview .jtc-swiper-wrapper,
.elementor-preview [data-jtc-swiper],
.elementor-preview [data-jtc-swiper] .swiper-wrapper {
    height: auto !important;
    min-height: 0;
    overflow-y: visible !important;
}

.elementor-editor-active [data-jtc-swiper] .swiper-slide,
.elementor-preview [data-jtc-swiper] .swiper-slide {
    height: auto !important;
}

/* Dynamic store skeletons */
.jtc-widget-skeleton-active,
.jtc-dynamic-store.jtc-store-hydrating:not(.jtc-store-hydrating-silent) {
    position: relative;
    overflow: hidden;
}

.jtc-widget-skeleton-active {
    border-radius: var(--jtc-skeleton-radius, 20px);
    min-height: var(--jtc-skeleton-height, 120px);
}

.jtc-widget-skeleton-active > *,
.jtc-dynamic-store.jtc-store-hydrating:not(.jtc-store-hydrating-silent) > * {
    visibility: hidden;
}
.jtc-widget-skeleton-active::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 5;
    display: block;
    border-radius: inherit;
    pointer-events: none;
    background:
        linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.55) 50%, rgba(255, 255, 255, 0) 100%),
        linear-gradient(0deg, #f3f4f6, #f3f4f6);
    background-size: 240px 100%, 100% 100%;
    background-position: -240px 0, 0 0;
    animation: jtc-skeleton-shimmer 1.15s ease-in-out infinite;
}

@keyframes jtc-skeleton-shimmer {
    100% {
        background-position: calc(100% + 240px) 0, 0 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .jtc-widget-skeleton-active::after {
        animation: none;
        background-position: 0 0;
    }
}
