/*
 * Shared card slider + controls (inc/genesis-slider.php). Controls and
 * section header values measured off GenesisOncology-ServicePage2.pdf.
 * Buttons carry !important where the Elementor kit's button/h2 selectors
 * outweigh plain classes.
 */

/* ---------- slider core ---------- */
.gm-slider__viewport {
    overflow: hidden;
    /* horizontal drags belong to the slider; vertical swipes scroll the page */
    touch-action: pan-y;
    overscroll-behavior-x: contain;
}
.gm-slider__track {
    display: flex;
    gap: 24px;
    will-change: transform;
    transition: transform 0.4s ease;
}
.gm-slider__track > * {
    flex-shrink: 0;
    min-width: 0;
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;
    /* clip-edge scaling: the springy bezier gives the bounce back to 1 */
    transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.gm-slider--dragging .gm-slider__track,
.gm-slider--dragging .gm-slider__track > * { transition: none; }
.gm-slider--dragging .gm-slider__track > * { cursor: grabbing; }

/* Bleed variant: the viewport widens to the page edges (JS sets the px
   values from the column position), so the fades and the peeking card sit
   in the page margins and the first card rests on the left page margin. */
.gm-slider--bleed .gm-slider__viewport {
    margin-left: calc(-1 * var(--gm-bleed-l, 0px));
    margin-right: calc(-1 * var(--gm-bleed-r, 0px));
    padding-left: var(--gm-bleed-l, 0px);
    padding-right: var(--gm-bleed-r, 0px);
    -webkit-mask-image: linear-gradient(to right,
        transparent calc(var(--gm-bleed-l, 0px) - var(--gm-fade-l, 0px)), #000 var(--gm-bleed-l, 0px),
        #000 calc(100% - var(--gm-bleed-r, 0px)), transparent calc(100% - var(--gm-bleed-r, 0px) + var(--gm-fade-r, 0px)));
    mask-image: linear-gradient(to right,
        transparent calc(var(--gm-bleed-l, 0px) - var(--gm-fade-l, 0px)), #000 var(--gm-bleed-l, 0px),
        #000 calc(100% - var(--gm-bleed-r, 0px)), transparent calc(100% - var(--gm-bleed-r, 0px) + var(--gm-fade-r, 0px)));
}

/* ---------- controls: Previous | pager | Next ---------- */
.gm-slider-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 25px;
}
.gm-slider-nav .gm-slider-nav__step {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
    color: #19469D !important;
    font: 700 14px/1 Inter, sans-serif !important;
    cursor: pointer;
    transition: opacity 0.15s ease;
}
.gm-slider-nav__circle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 42px;
    height: 42px;
    border: 1px solid #DBE4ED;
    border-radius: 50%;
    background: #fff;
    transition: background 0.15s ease, border-color 0.15s ease;
}
.gm-slider-nav__icon { width: 20px; height: 20px; }
.gm-slider-nav .gm-slider-nav__step:hover:not(:disabled) .gm-slider-nav__circle,
.gm-slider-nav .gm-slider-nav__step:focus-visible .gm-slider-nav__circle {
    border-color: #19469D;
    background: #F0F6FF;
}
.gm-slider-nav .gm-slider-nav__step:disabled { opacity: 0.4; cursor: default; }

.gm-slider-nav__pager { display: flex; align-items: center; gap: 8px; }
.gm-slider-nav .gm-slider-nav__page {
    box-sizing: border-box;
    width: 28px !important;
    height: 28px !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 1px solid #DBE4ED !important;
    border-radius: 50% !important;
    background: #fff !important;
    color: #64748B !important;
    font: 600 12px/1 Inter, sans-serif !important;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.gm-slider-nav .gm-slider-nav__page:hover { border-color: #19469D !important; color: #19469D !important; }
.gm-slider-nav .gm-slider-nav__page[aria-current="true"] {
    background: #19469D !important;
    border-color: #19469D !important;
    color: #fff !important;
}
.gm-slider-nav__gap { color: #64748B; font: 600 12px/1 Inter, sans-serif; }
.gm-slider-nav__count { color: #19469D; font: 700 14px/1 Inter, sans-serif; white-space: nowrap; }

/* ---------- section header (eyebrow / title / intro + right link) ---------- */
.gm-sec-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 32px;
    margin-bottom: 45px;
}
.gm-sec-head__text { flex: 1 1 auto; min-width: 0; }
.gm-sec-head .gm-sec-head__eyebrow {
    margin: 0 0 14px;
    color: #D32F2F;
    font: 800 12px/14px Inter, sans-serif;
    text-transform: uppercase;
}
.gm-sec-head h2.gm-sec-head__title {
    margin: 0 0 14px;
    color: #19469D !important;
    font-family: Inter, sans-serif !important;
    font-size: 40px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    text-align: left;
}
.gm-sec-head .gm-sec-head__intro {
    max-width: 790px;
    margin: 0;
    color: #4B5E70;
    font: 400 16px/26px Inter, sans-serif;
}
.gm-sec-head .gm-sec-head__link,
.gm-sec-head .gm-sec-head__link:visited {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
    margin-bottom: 4px;
    color: #D32F2F !important;
    font: 800 14px/16px Inter, sans-serif;
    text-decoration: none !important;
}
/* white pill variant (locations "View all locations") */
.gm-sec-head .gm-sec-head__link--pill {
    box-sizing: border-box;
    min-height: 54px;
    margin-bottom: 0;
    padding: 0 24px;
    gap: 10px;
    border-radius: 999px;
    background: #fff;
}
.gm-sec-head__link--pill .gm-slider-nav__icon { width: 17px; height: 17px; }
.gm-sec-head__link .gm-slider-nav__icon { width: 18px; height: 18px; transition: transform 0.15s ease; }
.gm-sec-head__link:hover .gm-slider-nav__icon { transform: translateX(3px); }

/* ---------- providers section (service + location pages) ---------- */
.gm-providers { background: #F1F5F9; padding: 75px 0 70px; }
.gm-providers__inner { box-sizing: border-box; max-width: 1440px; margin: 0 auto; padding: 0 72px; }
.gm-providers .gm-slider__track { gap: 22px; padding: 4px 0 14px; align-items: flex-start; }
.gm-providers .gm-slider__track > .provider-card {
    flex: 0 0 calc((100% - 44px) / 3);
    max-width: calc((100% - 44px) / 3) !important;
    margin: 0 !important;
}

@media (max-width: 1200px) {
    .gm-providers__inner { padding: 0 40px; }
}
@media (max-width: 1024px) {
    .gm-providers .gm-slider__track > .provider-card {
        flex-basis: calc((100% - 22px) / 2);
        max-width: calc((100% - 22px) / 2) !important;
    }
    .gm-sec-head { flex-direction: column; align-items: flex-start; gap: 18px; }
}
@media (max-width: 767px) {
    .gm-providers { padding: 48px 0; }
    .gm-providers__inner { padding: 0 20px; }
    .gm-providers .gm-slider__track > .provider-card {
        flex-basis: 100%;
        max-width: 100% !important;
    }
    .gm-sec-head { margin-bottom: 28px; }
    .gm-sec-head h2.gm-sec-head__title { font-size: 30px !important; }
    .gm-sec-head .gm-sec-head__intro { font-size: 15px; line-height: 24px; }
    .gm-slider-nav { margin-top: 18px; }
}

/* a slider whose cards all fit needs no controls */
.gm-slider--static .gm-slider-nav { display: none; }
