/**
 * JomeTech Branding — Single Product Page Styles
 * File: assets/css/jtb-product-page.css
 *
 * ══════════════════════════════════════════════════════════════════
 * INSTALL
 * ══════════════════════════════════════════════════════════════════
 * Enqueue in functions.php alongside jtb-shop-styles.css:
 *
 *   add_action( 'wp_enqueue_scripts', function() {
 *       if ( is_product() ) {
 *           wp_enqueue_style(
 *               'jtb-product-page',
 *               get_template_directory_uri() . '/assets/css/jtb-product-page.css',
 *               [ 'jtb-shop-styles' ],   // depend on main styles (tokens)
 *               '3.0.0'
 *           );
 *       }
 *   });
 *
 * ══════════════════════════════════════════════════════════════════
 * NOTES
 * ══════════════════════════════════════════════════════════════════
 * • All CSS custom properties come from jtb-shop-styles.css :root block.
 * • All selectors are scoped to .jtb-product-page to avoid collisions.
 * • .jtb-prod-grid and .jtb-card (related products) are already styled
 *   in jtb-shop-styles.css — no duplication needed here.
 *
 * TABLE OF CONTENTS
 *  1. Page shell
 *  2. Breadcrumb band
 *  3. Hero 2-column grid
 *  4. Image column
 *  5. Summary column
 *  6. Category label
 *  7. Title & description
 *  8. Benefits list
 *  9. Divider
 * 10. CTA buttons
 * 11. Phone link
 * 12. Trust indicators
 * 13. Section header (shared)
 * 14. How it works
 * 15. Full description
 * 16. Related products section
 * 17. Sticky mobile CTA bar
 * 18. Responsive breakpoints
 */


/* ══════════════════════════════════════════════════════════════════
   1. PAGE SHELL
══════════════════════════════════════════════════════════════════ */

.jtb-product-page {
    font-family: var(--font-body);
    background: var(--off);
    color: var(--ink);
    -webkit-font-smoothing: antialiased;
    /* Bottom padding accounts for sticky mobile bar */
    padding-bottom: 80px;
}

.jtb-product-page *,
.jtb-product-page *::before,
.jtb-product-page *::after {
    box-sizing: border-box;
}

.jtb-product-page a {
    text-decoration: none;
    color: inherit;
}

.jtb-product-page img {
    display: block;
    max-width: 100%;
}

/* Ensure .jtb-wrap is available — defined in jtb-shop-styles.css */


/* ══════════════════════════════════════════════════════════════════
   2. BREADCRUMB BAND
══════════════════════════════════════════════════════════════════ */

.jtb-sp-breadcrumb-bar {
    background: var(--white);
    border-bottom: 1px solid var(--line);
    padding: 12px 0;
}

/* .jtb-breadcrumb styles live in jtb-shop-styles.css but those
   have white-on-dark colours (designed for the blue hero band).
   We override for the light breadcrumb bar here. */
.jtb-sp-breadcrumb-bar .jtb-breadcrumb a,
.jtb-sp-breadcrumb-bar .jtb-breadcrumb span {
    color: var(--ink-2);
    font-size: .78rem;
}

.jtb-sp-breadcrumb-bar .jtb-breadcrumb a:hover {
    color: var(--blue);
}

.jtb-sp-breadcrumb-bar .jtb-breadcrumb .sep {
    color: var(--line);
}

.jtb-sp-breadcrumb-bar .jtb-breadcrumb .current {
    color: var(--ink);
    font-weight: 600;
}


/* ══════════════════════════════════════════════════════════════════
   3. HERO 2-COLUMN GRID
══════════════════════════════════════════════════════════════════ */

.jtb-sp-hero {
    background: var(--white);
    padding: var(--sp-xl) 0;
    border-bottom: 1px solid var(--line);
}

.jtb-sp-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2rem, 5vw, 4rem);
    align-items: start;
}


/* ══════════════════════════════════════════════════════════════════
   4. IMAGE COLUMN
══════════════════════════════════════════════════════════════════ */

.jtb-sp-image-col {
    /* Sticky so image stays visible while user reads the long summary */
    position: sticky;
    top: calc(80px + var(--sp-sm)); /* 80px = header height variable */
}

.jtb-sp-image-wrap {
    border-radius: var(--r-lg);
    overflow: hidden;
    background: var(--blue-xl);
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--sh-md);
}

.jtb-sp-main-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .6s ease;
}

.jtb-sp-image-wrap:hover .jtb-sp-main-img {
    transform: scale(1.03);
}

/* SVG placeholder when no image uploaded */
.jtb-sp-img-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    width: 100%;
    height: 100%;
    padding: 40px;
    color: var(--ink-3);
}

.jtb-sp-img-placeholder svg {
    width: 80px;
    height: 80px;
    opacity: .35;
}

.jtb-sp-img-placeholder span {
    font-size: .9rem;
    font-weight: 600;
    text-align: center;
    color: var(--ink-2);
    max-width: 200px;
    line-height: 1.4;
}

/* ══════════════════════════════════════════════════════════════════
   PRODUCT IMAGE GALLERY
   Thumbnail strip shown below main image when product has gallery images.
   Clicking a thumb swaps the main image with a fade transition.
══════════════════════════════════════════════════════════════════ */

.jtb-sp-gallery {
    display: flex;
    gap: 10px;
    margin-top: 12px;
    flex-wrap: wrap;
}

.jtb-sp-gthumb {
    /* Reset button styles */
    appearance: none;
    -webkit-appearance: none;
    border: 2px solid var(--line);
    background: var(--blue-xl);
    padding: 0;
    cursor: pointer;

    /* Layout */
    width: 72px;
    height: 72px;
    border-radius: var(--r-sm);
    overflow: hidden;
    flex-shrink: 0;

    /* Transition */
    transition: border-color .15s, box-shadow .15s, opacity .15s;
    opacity: .7;
}

.jtb-sp-gthumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    pointer-events: none;
}

.jtb-sp-gthumb:hover {
    border-color: var(--blue);
    opacity: 1;
}

.jtb-sp-gthumb--active {
    border-color: var(--blue);
    box-shadow: 0 0 0 3px var(--blue-l);
    opacity: 1;
}

.jtb-sp-gthumb:focus-visible {
    outline: 2px solid var(--blue);
    outline-offset: 2px;
}

/* Main image fade is handled inline by JS but define the base state */
#jtbMainImgWrap {
    transition: opacity .18s ease;
    cursor: zoom-in;
}

/* Badge row below image */
.jtb-sp-type-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px;
}

.jtb-sp-type-badge {
    display: inline-flex;
    align-items: center;
    padding: 4px 12px;
    border-radius: 4px;
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.jtb-sp-type-service {
    background: var(--blue-l);
    color: var(--blue);
}

.jtb-sp-type-product {
    background: var(--red-l);
    color: var(--red);
}

.jtb-sp-featured-badge {
    display: inline-flex;
    align-items: center;
    padding: 4px 12px;
    border-radius: 4px;
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .05em;
    background: #FEF3C7;
    color: #92400E;
    border: 1px solid #FDE68A;
}


/* ══════════════════════════════════════════════════════════════════
   5. SUMMARY COLUMN
══════════════════════════════════════════════════════════════════ */

.jtb-sp-summary {
    display: flex;
    flex-direction: column;
    gap: 0;
}


/* ══════════════════════════════════════════════════════════════════
   6. CATEGORY LABEL
══════════════════════════════════════════════════════════════════ */

.jtb-sp-cat-label {
    margin-bottom: 10px;
}

.jtb-sp-cat-label a {
    display: inline-flex;
    align-items: center;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--blue);
    gap: 5px;
    transition: opacity .15s;
}

.jtb-sp-cat-label a::before {
    content: '';
    display: inline-block;
    width: 20px;
    height: 2px;
    background: var(--blue);
    border-radius: 2px;
    flex-shrink: 0;
}

.jtb-sp-cat-label a:hover { opacity: .7; }


/* ══════════════════════════════════════════════════════════════════
   7. TITLE & SHORT DESCRIPTION
══════════════════════════════════════════════════════════════════ */

.jtb-sp-title {
    font-family: var(--font-head);
    font-weight: 800;
    font-size: clamp(1.6rem, 3.2vw, 2.6rem);
    line-height: 1.08;
    color: var(--ink);
    margin: 0 0 18px;
    letter-spacing: -.02em;
}

.jtb-sp-short-desc {
    font-size: 1rem;
    line-height: 1.7;
    color: var(--ink-2);
    margin-bottom: 22px;
}

.jtb-sp-short-desc p {
    margin: 0 0 .6em;
}

.jtb-sp-short-desc p:last-child {
    margin-bottom: 0;
}


/* ══════════════════════════════════════════════════════════════════
   8. BENEFITS LIST
══════════════════════════════════════════════════════════════════ */

.jtb-sp-benefits {
    list-style: none;
    margin: 0 0 var(--sp-md);
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.jtb-sp-benefits li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: .92rem;
    font-weight: 500;
    color: var(--ink);
    line-height: 1.5;
}

.jtb-sp-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--blue-l);
    flex-shrink: 0;
    margin-top: 1px;
}

.jtb-sp-check svg {
    width: 10px;
    height: 10px;
    color: var(--blue);
}


/* ══════════════════════════════════════════════════════════════════
   9. DIVIDER
══════════════════════════════════════════════════════════════════ */

.jtb-sp-divider {
    border: none;
    border-top: 1px solid var(--line);
    margin: var(--sp-md) 0;
}


/* ══════════════════════════════════════════════════════════════════
   10. CTA BUTTONS
══════════════════════════════════════════════════════════════════ */

.jtb-sp-ctas {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: var(--sp-sm);
}

/* Primary: "Get a Quote" — solid brand blue */
.jtb-sp-btn-primary {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    border-radius: var(--r);
    background: var(--blue);
    color: #fff;
    font-family: var(--font-body);
    font-size: .9rem;
    font-weight: 700;
    letter-spacing: .03em;
    border: 2px solid var(--blue);
    transition: background .18s, border-color .18s, transform .18s, box-shadow .18s;
    white-space: nowrap;
    flex: 1;
    justify-content: center;
    min-height: 50px;
}

.jtb-sp-btn-primary svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
    transition: transform .18s;
}

.jtb-sp-btn-primary:hover {
    background: var(--blue-d);
    border-color: var(--blue-d);
    transform: translateY(-1px);
    box-shadow: var(--sh-blue);
}

.jtb-sp-btn-primary:hover svg {
    transform: translateX(3px);
}

.jtb-sp-btn-primary:focus-visible {
    outline: 3px solid var(--blue);
    outline-offset: 2px;
}

/* Secondary: WhatsApp — green */
.jtb-sp-btn-wa {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 24px;
    border-radius: var(--r);
    background: var(--green);
    color: #fff;
    font-family: var(--font-body);
    font-size: .9rem;
    font-weight: 700;
    border: 2px solid var(--green);
    transition: background .18s, border-color .18s, transform .18s;
    white-space: nowrap;
    min-height: 50px;
}

.jtb-sp-btn-wa svg {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}

.jtb-sp-btn-wa:hover {
    background: var(--green-d);
    border-color: var(--green-d);
    transform: translateY(-1px);
}

.jtb-sp-btn-wa:focus-visible {
    outline: 3px solid var(--green);
    outline-offset: 2px;
}

/* Phone link — text style, sits below the main CTAs */
.jtb-sp-phone-link {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: .84rem;
    font-weight: 600;
    color: var(--ink-2);
    transition: color .15s;
}

.jtb-sp-phone-link svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

.jtb-sp-phone-link:hover {
    color: var(--blue);
}


/* ══════════════════════════════════════════════════════════════════
   12. TRUST INDICATORS
══════════════════════════════════════════════════════════════════ */

.jtb-sp-trust {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.jtb-sp-trust-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px;
    background: var(--off);
    border-radius: var(--r-sm);
    border: 1px solid var(--line);
}

.jtb-sp-trust-item svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    color: var(--blue);
    margin-top: 2px;
}

.jtb-sp-trust-item strong {
    display: block;
    font-size: .78rem;
    font-weight: 700;
    color: var(--ink);
    line-height: 1.3;
    margin-bottom: 2px;
}

.jtb-sp-trust-item span {
    font-size: .7rem;
    color: var(--ink-2);
    line-height: 1.4;
}


/* ══════════════════════════════════════════════════════════════════
   13. SECTION HEADER (shared by How it Works, Description, Related)
══════════════════════════════════════════════════════════════════ */

.jtb-sp-section-header {
    margin-bottom: var(--sp-lg);
    text-align: center;
}

.jtb-sp-section-header h2 {
    font-family: var(--font-head);
    font-weight: 800;
    font-size: clamp(1.4rem, 2.5vw, 2rem);
    color: var(--ink);
    margin: 0 0 8px;
    letter-spacing: -.01em;
}

.jtb-sp-section-header p {
    font-size: .92rem;
    color: var(--ink-2);
    max-width: 480px;
    margin: 0 auto;
    line-height: 1.6;
}


/* ══════════════════════════════════════════════════════════════════
   14. HOW IT WORKS
══════════════════════════════════════════════════════════════════ */

.jtb-sp-how {
    padding: var(--sp-xl) 0;
    background: var(--off);
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
}

.jtb-sp-steps {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--sp-md);
    position: relative;
}

/* Connecting line between steps */
.jtb-sp-steps::before {
    content: '';
    position: absolute;
    top: 28px;
    left: calc(16.666% + 20px);  /* start after first step number */
    right: calc(16.666% + 20px);
    height: 1px;
    background: var(--line);
    z-index: 0;
    pointer-events: none;
}

.jtb-sp-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 16px;
    position: relative;
    z-index: 1;
    padding: var(--sp-md);
    background: var(--white);
    border-radius: var(--r);
    border: 1.5px solid var(--line);
    transition: border-color .2s, box-shadow .2s;
}

.jtb-sp-step:hover {
    border-color: var(--blue-l);
    box-shadow: var(--sh);
}

.jtb-sp-step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--blue);
    color: #fff;
    font-family: var(--font-head);
    font-weight: 800;
    font-size: 1.1rem;
    flex-shrink: 0;
    letter-spacing: -.02em;
    box-shadow: 0 4px 14px rgba(26, 31, 191, .22);
}

.jtb-sp-step-body h3 {
    font-family: var(--font-head);
    font-weight: 700;
    font-size: 1rem;
    color: var(--ink);
    margin: 0 0 8px;
}

.jtb-sp-step-body p {
    font-size: .84rem;
    color: var(--ink-2);
    line-height: 1.65;
    margin: 0;
}


/* ══════════════════════════════════════════════════════════════════
   15. FULL PRODUCT DESCRIPTION
══════════════════════════════════════════════════════════════════ */

.jtb-sp-description {
    padding: var(--sp-xl) 0;
    background: var(--white);
    border-bottom: 1px solid var(--line);
}

.jtb-sp-desc-content {
    max-width: 780px;
    margin: 0 auto;
    font-size: .95rem;
    line-height: 1.8;
    color: var(--ink-2);
}

.jtb-sp-desc-content h2,
.jtb-sp-desc-content h3 {
    font-family: var(--font-head);
    font-weight: 700;
    color: var(--ink);
    margin: 1.5em 0 .5em;
}

.jtb-sp-desc-content h2 { font-size: 1.3rem; }
.jtb-sp-desc-content h3 { font-size: 1.1rem; }

.jtb-sp-desc-content p { margin: 0 0 1em; }
.jtb-sp-desc-content p:last-child { margin-bottom: 0; }

.jtb-sp-desc-content ul,
.jtb-sp-desc-content ol {
    padding-left: 1.4em;
    margin: 0 0 1em;
}

.jtb-sp-desc-content li { margin-bottom: .4em; }

.jtb-sp-desc-content strong { color: var(--ink); font-weight: 700; }

.jtb-sp-desc-content a { color: var(--blue); font-weight: 600; }
.jtb-sp-desc-content a:hover { text-decoration: underline; }

.jtb-sp-desc-content img {
    border-radius: var(--r);
    max-width: 100%;
    height: auto;
    margin: 1.5em auto;
}


/* ══════════════════════════════════════════════════════════════════
   16. RELATED PRODUCTS SECTION
   .jtb-prod-grid and .jtb-card are already in jtb-shop-styles.css
══════════════════════════════════════════════════════════════════ */

.jtb-sp-related {
    padding: var(--sp-xl) 0;
    background: var(--off);
    border-bottom: 1px solid var(--line);
}

/* ── Browse Other Categories section ── */
.jtb-sp-browse-cats {
    padding: var(--sp-xl) 0;
    background: var(--white);
    border-bottom: 1px solid var(--line);
}

.jtb-sp-cats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.jtb-sp-cat-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px;
    border: 1.5px solid var(--line);
    border-radius: var(--r);
    background: var(--white);
    text-decoration: none !important;
    transition: border-color .15s, box-shadow .15s, background .15s;
    position: relative;
    overflow: hidden;
}
.jtb-sp-cat-card:hover {
    border-color: var(--blue);
    box-shadow: var(--sh);
    background: var(--blue-xl);
}
.jtb-sp-cat-card--current {
    border-color: var(--blue);
    background: var(--blue-xl);
}

.jtb-sp-cat-card-icon {
    width: 34px;
    height: 34px;
    border-radius: 7px;
    background: var(--white);
    box-shadow: var(--sh);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--blue);
}
.jtb-sp-cat-card--current .jtb-sp-cat-card-icon { background: var(--blue); color: #fff; box-shadow: none; }

.jtb-sp-cat-card-name {
    font-size: .84rem;
    font-weight: 600;
    color: var(--ink) !important;
    flex: 1;
    line-height: 1.3;
}
.jtb-sp-cat-card:hover .jtb-sp-cat-card-name { color: var(--blue) !important; }
.jtb-sp-cat-card--current .jtb-sp-cat-card-name { color: var(--blue) !important; }

.jtb-sp-cat-card-cnt {
    font-size: .7rem;
    font-weight: 700;
    color: var(--ink-3);
    background: var(--off);
    padding: 2px 7px;
    border-radius: 10px;
    flex-shrink: 0;
}
.jtb-sp-cat-card--current .jtb-sp-cat-card-cnt { background: rgba(26,31,191,.12); color: var(--blue); }

.jtb-sp-cat-card-badge {
    position: absolute;
    top: 6px; right: 6px;
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    background: var(--blue);
    color: #fff;
    padding: 2px 6px;
    border-radius: 4px;
}

@media (max-width: 900px) { .jtb-sp-cats-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .jtb-sp-cats-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 380px) { .jtb-sp-cats-grid { grid-template-columns: 1fr; } }




/* ══════════════════════════════════════════════════════════════════
   17. STICKY MOBILE CTA BAR
   Hidden by default. JS adds .jtb-sp-sticky-visible after scrolling.
   Only rendered on mobile — hidden via CSS on desktop.
══════════════════════════════════════════════════════════════════ */

.jtb-sp-sticky-bar {
    display: none; /* hidden on desktop */
}

@media (max-width: 768px) {
    .jtb-sp-sticky-bar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 8000;
        background: var(--white);
        border-top: 1.5px solid var(--line);
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
        box-shadow: 0 -4px 20px rgba(13, 15, 26, .08);
        /* Hidden until scrolled past hero CTA */
        transform: translateY(100%);
        transition: transform .25s ease;
    }

    .jtb-sp-sticky-bar.jtb-sp-sticky-visible {
        transform: translateY(0);
    }

    .jtb-sp-sticky-title {
        font-size: .78rem;
        font-weight: 700;
        color: var(--ink);
        flex: 1;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .jtb-sp-sticky-actions {
        display: flex;
        gap: 8px;
        flex-shrink: 0;
    }

    .jtb-sp-sticky-quote {
        display: inline-flex;
        align-items: center;
        padding: 10px 18px;
        border-radius: var(--r-sm);
        background: var(--blue);
        color: #fff;
        font-size: .8rem;
        font-weight: 700;
        font-family: var(--font-body);
        white-space: nowrap;
        transition: background .15s;
    }

    .jtb-sp-sticky-quote:hover { background: var(--blue-d); }

    .jtb-sp-sticky-wa {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 42px;
        height: 42px;
        border-radius: var(--r-sm);
        background: var(--green);
        color: #fff;
        flex-shrink: 0;
        transition: background .15s;
    }

    .jtb-sp-sticky-wa:hover { background: var(--green-d); }
    .jtb-sp-sticky-wa svg { width: 18px; height: 18px; }
}


/* ══════════════════════════════════════════════════════════════════
   18. RESPONSIVE BREAKPOINTS
══════════════════════════════════════════════════════════════════ */

/* Tablet: stack image above summary */
@media (max-width: 900px) {
    .jtb-sp-grid {
        grid-template-columns: 1fr;
        gap: var(--sp-lg);
    }

    /* Remove sticky behaviour — not useful on mobile with stacked layout */
    .jtb-sp-image-col {
        position: static;
    }

    /* Constrain image width on tablet */
    .jtb-sp-image-wrap {
        max-width: 480px;
        margin: 0 auto;
    }

    /* Centre gallery thumbs on tablet/mobile */
    .jtb-sp-gallery {
        justify-content: center;
    }
    .jtb-sp-gthumb {
        width: 64px;
        height: 64px;
    }

    /* Trust: single column on tablet */
    .jtb-sp-trust {
        grid-template-columns: 1fr 1fr;
    }
}

/* Mobile: adjustments */
@media (max-width: 640px) {
    .jtb-sp-hero {
        padding: var(--sp-lg) 0;
    }

    .jtb-sp-title {
        font-size: clamp(1.4rem, 6vw, 1.8rem);
    }

    .jtb-sp-steps {
        grid-template-columns: 1fr;
    }

    /* Hide connecting line in single-column layout */
    .jtb-sp-steps::before {
        display: none;
    }

    .jtb-sp-step {
        flex-direction: row;
        text-align: left;
        align-items: flex-start;
    }

    .jtb-sp-step-num {
        flex-shrink: 0;
    }

    .jtb-sp-trust {
        grid-template-columns: 1fr;
    }

    .jtb-sp-ctas {
        flex-direction: column;
    }

    .jtb-sp-btn-primary,
    .jtb-sp-btn-wa {
        width: 100%;
        justify-content: center;
    }

    /* Add bottom padding so sticky bar doesn't cover content */
    .jtb-product-page {
        padding-bottom: 100px;
    }
}

/* Reduced-motion */
@media (prefers-reduced-motion: reduce) {
    .jtb-sp-main-img { transition: none; }
    .jtb-sp-image-wrap:hover .jtb-sp-main-img { transform: none; }
    .jtb-sp-sticky-bar { transition: none; }
    .jtb-sp-step { transition: none; }
}
