/* Product gallery: preserve native Odoo carousel, variant and purchase controls. */
#wrapwrap #wrap[data-abs-pg-page] #product_detail_main {
    display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: start; gap: clamp(24px, 3vw, 48px); margin-inline: 0;
}
#wrapwrap #wrap[data-abs-pg-page] #product_detail_main > .col {
    width: 100% !important; min-width: 0; padding-inline: 0;
}
#wrapwrap #wrap[data-abs-pg-page] #product_details {
    position: static !important; top: auto !important; min-width: 0;
}
#wrapwrap #wrap[data-abs-pg-page] #product_details .abs-flow-sku { display: none; }
#wrapwrap #wrap[data-abs-pg-page] .o_wsale_product_images {
    position: sticky !important; top: 20px !important; align-self: start;
    height: auto !important; min-height: 0 !important; max-height: none !important;
    padding: 0 !important; overflow: visible !important; background: transparent !important;
    border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product {
    display: flex !important; flex-direction: column !important; gap: 14px;
    width: 100%; height: auto !important; min-height: 0 !important; max-height: none !important;
    margin: 0 !important; overflow: visible !important; background: transparent !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .o_carousel_product_outer {
    order: 0; position: relative; width: 100% !important; aspect-ratio: 1 / 1;
    height: auto !important; min-height: 0 !important; max-height: min(660px, calc(100dvh - 130px)) !important;
    background: #f6f7f9 !important; border: 1px solid #edf0f4; border-radius: 12px;
    overflow: hidden !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-inner {
    position: absolute !important; inset: 0; height: 100% !important; width: 100% !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-item {
    height: 100% !important; min-height: 0 !important; max-height: none !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .o_product_detail_img_wrapper {
    width: 100% !important; height: 100% !important; min-height: 0 !important; max-height: none !important;
    padding: clamp(14px, 2vw, 28px); background: transparent !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product img.product_detail_img {
    display: block !important; width: 100% !important; height: 100% !important;
    min-height: 0 !important; max-height: 100% !important; max-width: 100% !important;
    object-fit: contain !important; object-position: center; border-radius: 0;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .o_carousel_product_indicators {
    order: 2; flex: 0 0 auto; width: 100%; max-width: 100%; padding: 0 !important; margin: 0 !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-indicators {
    position: static !important; display: flex !important; flex-direction: row !important;
    justify-content: flex-start !important; gap: 10px; max-width: 100%; width: fit-content;
    overflow-x: auto; flex-wrap: nowrap; padding: 2px !important; margin: 0 auto !important;
    scrollbar-width: thin;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-indicators > li {
    box-sizing: border-box;
    flex: 0 0 64px !important; width: 64px !important; height: 64px !important;
    margin: 0 !important; padding: 4px; border: 1px solid #dfe5ee !important;
    border-radius: 7px; background: #fff; opacity: 1; overflow: hidden; cursor: pointer;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-indicators > li.active {
    border-color: #0868d6 !important; box-shadow: 0 0 0 1px #0868d6;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-indicators > li > div {
    display: block !important; width: 100%; height: 100%;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-indicators img {
    display: block !important; width: 100% !important; height: 100% !important; object-fit: contain !important;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product :is(.carousel-control-prev, .carousel-control-next) {
    top: 50% !important; bottom: auto !important; transform: translateY(-50%);
    width: 40px !important; height: 44px !important; opacity: 1;
}
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-control-prev { left: 10px; right: auto; }
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-control-next { right: 10px; left: auto; }
#wrapwrap #wrap[data-abs-pg-page] #o-carousel-product :is(.carousel-control-prev, .carousel-control-next) i {
    display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid #e0e5ec !important;
    border-radius: 7px; background: #fff !important; color: #28527d; box-shadow: 0 2px 8px #18355812;
}
.abs-pg-gallery-tools {
    position: absolute; inset-inline-end: 12px; bottom: 12px; z-index: 3;
    display: flex; align-items: center; gap: 6px; direction: ltr;
}
.abs-pg-gallery-tools > button, .abs-pg-gallery-counter {
    display: grid; place-items: center; min-width: 42px; min-height: 38px; padding: 7px 10px;
    border: 1px solid #dfe5ee; border-radius: 7px; background: #fff; color: #254c75; font-size: 13px;
}
.abs-pg-gallery-tools > button[hidden], .abs-pg-lightbox button[hidden] { display: none !important; }
#wrapwrap #wrap[data-abs-pg-page] .abs-commerce-detail-card > .nav {
    display: flex; flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start;
    border-bottom: 1px solid #e3e8ef; gap: 0; scrollbar-width: thin;
}
#wrapwrap #wrap[data-abs-pg-page] .abs-commerce-detail-card > .nav > .nav-link {
    flex: 0 0 auto; white-space: nowrap; border-radius: 0; padding: 16px 20px;
    border: 0; border-bottom: 2px solid transparent; background: transparent; color: #586a7d;
}
#wrapwrap #wrap[data-abs-pg-page] .abs-commerce-detail-card > .nav > .nav-link.active {
    color: #0868d6; border-bottom-color: #0868d6; background: transparent;
}

/* Shop pictures: equal image frames, hover preview, arrows and mobile swipe. */
#wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame { position: relative; width: 100%; min-width: 0; }
#wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame > .abs2-product-media {
    display: block !important; position: relative; width: 100%; height: auto !important;
    aspect-ratio: 1 / 1; min-height: 0 !important; max-height: none !important; overflow: hidden;
    background: #f6f7f9; border-radius: 0; touch-action: pan-y pinch-zoom;
}
#wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame > .abs2-product-media > img {
    position: absolute; inset: 0; display: block; width: 100% !important; height: 100% !important;
    padding: clamp(10px, 1.4vw, 20px); object-fit: contain !important; object-position: center;
    transform: none !important; transition: opacity .18s ease;
}
#wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame > :is(.abs-pg-card-prev, .abs-pg-card-next) {
    position: absolute; top: 50%; transform: translateY(-50%); z-index: 4;
    display: grid; place-items: center; width: 34px; height: 40px;
    border: 1px solid #e0e5ec; border-radius: 7px; background: #fffffff0;
    color: #1b568e; font-size: 22px; opacity: 0; transition: opacity .15s ease;
}
.abs-pg-card-prev { left: 8px; }
.abs-pg-card-next { right: 8px; }
.abs-pg-card-count {
    position: absolute; bottom: 10px; inset-inline-end: 10px; z-index: 3; direction: ltr;
    background: #fffffff0; color: #41566e; padding: 3px 8px; border: 1px solid #e4e9f0;
    border-radius: 12px; font-size: 11px; pointer-events: none;
}
#wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame:is(:hover, :focus-within) > :is(.abs-pg-card-prev, .abs-pg-card-next) { opacity: 1; }
#wrapwrap #wrap[data-abs-pg-shop] .abs2-product-name {
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    overflow: hidden; min-height: 2.8em; line-height: 1.4;
}
#wrapwrap #wrap[data-abs-pg-shop] .abs2-sales-description {
    display: -webkit-box !important; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    overflow: hidden !important; max-height: 3.2em; line-height: 1.6; margin-bottom: 10px;
}
#wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame[data-image-count="1"] > :is(.abs-pg-card-prev, .abs-pg-card-next, .abs-pg-card-count) { display: none !important; }

/* Native dialog supplies keyboard focus containment and Escape-to-close. */
.abs-pg-lightbox:not([open]) { display: none !important; }
.abs-pg-lightbox[open] {
    display: flex; flex-direction: column; position: fixed; inset: 0; width: 100vw; max-width: none;
    height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; border-radius: 0;
    background: #f7f8fb; color: #18324f; overflow: hidden; z-index: 2147483600;
}
.abs-pg-lightbox::backdrop { background: #14243dd9; }
.abs-pg-lightbox-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 18px; background: #fff; border-bottom: 1px solid #e3e8ef; }
.abs-pg-lightbox-caption { min-width: 0; font-size: 15px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.abs-pg-lightbox-tools { display: flex; gap: 6px; direction: ltr; }
.abs-pg-lightbox button { min-width: 42px; min-height: 42px; padding: 6px 10px; border: 1px solid #d8e1ec; border-radius: 7px; background: #fff; color: #254c75; cursor: pointer; }
.abs-pg-lightbox-stage { position: relative; flex: 1 1 auto; min-height: 0; overflow: hidden; }
.abs-pg-lightbox-image-wrap { width: 100%; height: 100%; overflow: hidden; display: grid; place-items: center; touch-action: none; }
.abs-pg-lightbox-image { display: block; width: 100%; height: 100%; object-fit: contain; transform: translate(var(--pg-pan-x, 0px), var(--pg-pan-y, 0px)) scale(var(--pg-scale, 1)); transform-origin: center; user-select: none; cursor: zoom-in; }
.abs-pg-lightbox.is-zoomed .abs-pg-lightbox-image { cursor: grab; }
.abs-pg-lightbox.is-dragging .abs-pg-lightbox-image { cursor: grabbing; }
.abs-pg-lightbox-stage > button { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; font-size: 30px; direction: ltr; }
.abs-pg-lightbox-prev { left: 14px; }
.abs-pg-lightbox-next { right: 14px; }
.abs-pg-lightbox-count { text-align: center; direction: ltr; padding: 10px; font-size: 13px; }
html.abs-pg-lightbox-open { overflow: hidden; }

@media (max-width: 991.98px) {
    #wrapwrap #wrap[data-abs-pg-page] #product_detail_main { grid-template-columns: minmax(0, 1fr); gap: 24px; }
    #wrapwrap #wrap[data-abs-pg-page] .o_wsale_product_images { position: relative !important; top: auto !important; }
    #wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .o_carousel_product_outer { max-height: none !important; }
    #wrapwrap #wrap[data-abs-pg-page] #o-carousel-product .carousel-indicators > li { flex-basis: 56px !important; width: 56px !important; height: 56px !important; }
    #wrapwrap #wrap[data-abs-pg-page] .abs-commerce-detail-card > .nav > .nav-link { padding: 13px 15px; }
    #wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame > :is(.abs-pg-card-prev, .abs-pg-card-next) { opacity: 1; width: 30px; height: 38px; }
    .abs-pg-lightbox-toolbar { flex-wrap: wrap; gap: 8px; padding: 10px 12px; }
    .abs-pg-lightbox-caption { flex: 1 1 100%; font-size: 13px; }
    .abs-pg-lightbox-tools { margin-inline-start: auto; }
    .abs-pg-lightbox-stage > button { min-width: 36px; width: 36px; min-height: 44px; padding: 4px; }
    .abs-pg-lightbox-prev { left: 6px; }
    .abs-pg-lightbox-next { right: 6px; }
}
@media (prefers-reduced-motion: reduce) {
    #wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame img,
    #wrapwrap #wrap[data-abs-pg-shop] .abs-pg-card-frame button { transition: none !important; }
}
