/*
 * slider.css - core styles for site_slider() (includes/functions/slider_functions.inc)
 *
 * Version 1.02.1  (12/11/2026)
 *
 * ChangeLog:
 * 1.02.1 12/11/2026 - Slide rules only match the slides themselves
 *        (ul.slides > li, or .owl-item > li once Owl has started), not
 *        lists and pictures inside the slide content. The old descendant
 *        selectors gave every <li> in a slide's text the slide height
 *        with overflow hidden and padding 0 (hid the Gecko Glass hero
 *        text), and stretched any <img> in the text to fill a
 *        fixed-height slide.
 * 1.02.0 11/11/2026 - Fade through a colour (.ss-tr-fadethrough), the
 *        fades follow the slider's transition speed (--ss-speed; Owl's
 *        own CSS fixes them at 1 second), Ken Burns zoom / pan (.ss-kb).
 * 1.01.0 10/11/2026 - <picture> round a slide image is a block (no gap
 *        under the image in natural-height sliders).
 * 1.00.0 10/11/2026 - New (slider rebuild Phase 1). Served to sites by
 *        /styles/slider.php; a skin's own styles/slider.css replaces it.
 *
 * Only what the slider needs to work - the look (overlay text, arrows, dots)
 * stays in the skin's CSS, which keeps targeting #slider .slides li ...
 */

.site-slider {
    position: relative;
}

.site-slider .slides {
    margin: 0;
    padding: 0;
}

.site-slider .slides > li,
.site-slider .slides .owl-item > li {
    position: relative;
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-slider .slides > li > picture,
.site-slider .slides .owl-item > li > picture,
.site-slider .slides > li > .ss-link > picture,
.site-slider .slides .owl-item > li > .ss-link > picture {
    display: block;
}

.site-slider .slides > li > picture img,
.site-slider .slides > li > img,
.site-slider .slides > li > .ss-link img,
.site-slider .slides .owl-item > li > picture img,
.site-slider .slides .owl-item > li > img,
.site-slider .slides .owl-item > li > .ss-link img {
    display: block;
    width: 100%;
    height: auto;
}

/* Fixed height: every slide the same height, images cropped to fill */
.site-slider-fixed .slides > li,
.site-slider-fixed .slides .owl-item > li {
    height: var(--slider-h, 600px);
    overflow: hidden;
}

.site-slider-fixed .slides > li > picture,
.site-slider-fixed .slides .owl-item > li > picture,
.site-slider-fixed .slides > li > .ss-link,
.site-slider-fixed .slides .owl-item > li > .ss-link,
.site-slider-fixed .slides > li > .ss-link > picture,
.site-slider-fixed .slides .owl-item > li > .ss-link > picture {
    display: block;
    height: 100%;
}

.site-slider-fixed .slides > li > picture img,
.site-slider-fixed .slides > li > img,
.site-slider-fixed .slides > li > .ss-link img,
.site-slider-fixed .slides .owl-item > li > picture img,
.site-slider-fixed .slides .owl-item > li > img,
.site-slider-fixed .slides .owl-item > li > .ss-link img {
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: var(--ss-pos, 50% 50%);
}

@media (max-width: 767px) {
    .site-slider-fixed .slides > li,
    .site-slider-fixed .slides .owl-item > li {
        height: var(--slider-h-m, 420px);
    }
    .site-slider-fixed .slides > li > picture img,
    .site-slider-fixed .slides > li > img,
    .site-slider-fixed .slides > li > .ss-link img,
    .site-slider-fixed .slides .owl-item > li > picture img,
    .site-slider-fixed .slides .owl-item > li > img,
    .site-slider-fixed .slides .owl-item > li > .ss-link img {
        object-position: var(--ss-pos-m, var(--ss-pos, 50% 50%));
    }
}

/* Whole-slide link: the overlay box doesn't block clicks, its own links still work */
.site-slider .ss-has-link .overlay {
    pointer-events: none;
}

.site-slider .ss-has-link .overlay a,
.site-slider .ss-has-link .overlay button {
    pointer-events: auto;
}

.site-slider .ss-link {
    display: block;
}

/* Template alignment */
.site-slider .slider-align-left   { text-align: left; }
.site-slider .slider-align-center { text-align: center; margin-left: auto; margin-right: auto; }
.site-slider .slider-align-right  { text-align: right; margin-left: auto; }

/* Pause / play button (accessibility setting) */
.site-slider .ss-pause {
    position: absolute;
    right: 15px;
    bottom: 15px;
    z-index: 5;
    width: 36px;
    height: 36px;
    margin: 0;
    padding: 0;
    border: 2px solid #fff;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.45);
    cursor: pointer;
}

.site-slider .ss-pause span,
.site-slider .ss-pause span::before {
    position: absolute;
    top: 50%;
    left: 50%;
}

/* Pause icon: two bars */
.site-slider .ss-pause span {
    width: 10px;
    height: 12px;
    margin: -6px 0 0 -5px;
    border-left: 3px solid #fff;
    border-right: 3px solid #fff;
}

/* Play icon: a triangle */
.site-slider .ss-pause[aria-pressed="true"] span {
    width: 0;
    height: 0;
    margin: -7px 0 0 -4px;
    border-style: solid;
    border-width: 7px 0 7px 11px;
    border-color: transparent transparent transparent #fff;
}

.site-slider .ss-pause:focus-visible {
    outline: 3px solid #fff;
    outline-offset: 2px;
}

/* Screen-reader-only text (works on Bootstrap 3 and 5 skins) */
.site-slider .ss-sr {
    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;
}

/* ------------------------------------------------------------------
   Fades (1.02.0). Owl adds .animated + the animateIn / animateOut class
   to the slides; the length follows the Transition speed setting.
   ------------------------------------------------------------------ */
.site-slider .owl-carousel .owl-item.animated {
    animation-duration: var(--ss-speed, 1000ms);
    animation-fill-mode: both;
}

/* Fade: the old slide fades out to the colour, then the new one fades in */
.ss-tr-fadethrough .owl-stage-outer {
    background: var(--ss-fade-colour, #000);
}
.site-slider .owl-carousel .owl-item.ssFadeOut {
    animation-name: ss-fade-out;
}
.site-slider .owl-carousel .owl-item.ssFadeIn {
    animation-name: ss-fade-in;
}
@keyframes ss-fade-out {
    0%   { opacity: 1; }
    50%  { opacity: 0; }
    100% { opacity: 0; }
}
@keyframes ss-fade-in {
    0%   { opacity: 0; }
    50%  { opacity: 0; }
    100% { opacity: 1; }
}

/* ------------------------------------------------------------------
   Ken Burns (1.02.0): a slow zoom or pan on the picture while its slide
   shows. --ss-kb-zoom (1.15 = 115%) and --ss-kb-dur come from the
   slider settings; the script adds ss-kb-run + a direction class.
   ------------------------------------------------------------------ */
.ss-kb .slides > li,
.ss-kb .slides .owl-item > li {
    overflow: hidden;
}
.ss-kb .slides > li > picture img,
.ss-kb .slides > li > img,
.ss-kb .slides > li > .ss-link img,
.ss-kb .slides .owl-item > li > picture img,
.ss-kb .slides .owl-item > li > img,
.ss-kb .slides .owl-item > li > .ss-link img {
    transform-origin: 50% 50%;
    backface-visibility: hidden;
}
.ss-kb .slides img.ss-kb-run {
    --ss-kb-shift: calc((var(--ss-kb-zoom, 1.15) - 1) / (2 * var(--ss-kb-zoom, 1.15)) * 100%);
    animation-duration: var(--ss-kb-dur, 6000ms);
    animation-timing-function: linear;
    animation-fill-mode: both;
    will-change: transform;
}
.ss-kb img.ss-kb-in    { animation-name: ss-kb-in; }
.ss-kb img.ss-kb-out   { animation-name: ss-kb-out; }
.ss-kb img.ss-kb-left  { animation-name: ss-kb-left; }
.ss-kb img.ss-kb-right { animation-name: ss-kb-right; }
.ss-kb img.ss-kb-up    { animation-name: ss-kb-up; }
.ss-kb img.ss-kb-down  { animation-name: ss-kb-down; }

@keyframes ss-kb-in {
    from { transform: scale(1); }
    to   { transform: scale(var(--ss-kb-zoom, 1.15)); }
}
@keyframes ss-kb-out {
    from { transform: scale(var(--ss-kb-zoom, 1.15)); }
    to   { transform: scale(1); }
}
/* Pans: zoomed in by --ss-kb-zoom so the edges never show, moving the
   whole of the extra width / height */
@keyframes ss-kb-left {   /* the view travels left to right */
    from { transform: scale(var(--ss-kb-zoom, 1.15)) translateX(var(--ss-kb-shift)); }
    to   { transform: scale(var(--ss-kb-zoom, 1.15)) translateX(calc(var(--ss-kb-shift) * -1)); }
}
@keyframes ss-kb-right {
    from { transform: scale(var(--ss-kb-zoom, 1.15)) translateX(calc(var(--ss-kb-shift) * -1)); }
    to   { transform: scale(var(--ss-kb-zoom, 1.15)) translateX(var(--ss-kb-shift)); }
}
@keyframes ss-kb-up {     /* top to bottom */
    from { transform: scale(var(--ss-kb-zoom, 1.15)) translateY(var(--ss-kb-shift)); }
    to   { transform: scale(var(--ss-kb-zoom, 1.15)) translateY(calc(var(--ss-kb-shift) * -1)); }
}
@keyframes ss-kb-down {   /* bottom to top */
    from { transform: scale(var(--ss-kb-zoom, 1.15)) translateY(calc(var(--ss-kb-shift) * -1)); }
    to   { transform: scale(var(--ss-kb-zoom, 1.15)) translateY(var(--ss-kb-shift)); }
}

@media (prefers-reduced-motion: reduce) {
    .ss-kb .slides img.ss-kb-run { animation: none; transform: none; }
}
