
    /* Что открывается в просмотре */:is(.gallery, .contentGallery) a,
    img.zoomable {cursor:zoom-in;}img.zoomable:focus-visible {outline:var(--focus-ring, 2px solid #24b4b0);outline-offset:3px;}

    /* Главное фото товара: значок «развернуть» в углу — на телефоне наведения нет, курсор-лупу не увидеть */section.productHeadliner .mainImageBox:has(img.zoomable) {position:relative;}section.productHeadliner .mainImageBox:has(img.zoomable)::before {content:'';position:absolute;right:0.75rem;bottom:0.75rem;z-index:1;width:2.5rem;height:2.5rem;border-radius:50%;background:rgb(255 255 255 / 0.92)
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M10 20H4v-6M20 4l-6.5 6.5M4 20l6.5-6.5'/%3E%3C/svg%3E")
        center / 1.15rem no-repeat;box-shadow:0 0.15rem 0.6rem rgb(0 0 0 / 0.16);pointer-events:none;transition:transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);}section.productHeadliner .mainImageBox:has(img.zoomable:hover)::before {transform:scale(1.08);}

    /* Окно просмотра */dialog.photoViewer {position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;background:rgb(14 16 16 / 0.95);color:#f4f4f2;text-shadow:none;opacity:1;transition:opacity 0.18s ease-out;}dialog.photoViewer:not([open]) {display:none;}dialog.photoViewer::backdrop {background:transparent;backdrop-filter:blur(6px);}dialog.photoViewer[data-closing] {opacity:0;}

    @starting-style {dialog.photoViewer[open] {opacity:0;}
    }dialog.photoViewer .pvStage {position:absolute;inset:4.5rem 5.5rem 5rem;display:grid;place-items:center;touch-action:none;user-select:none;-webkit-user-select:none;}dialog.photoViewer img.pvImage {display:block;max-width:none;max-height:none;margin:0;border-radius:2px;transform-origin:50% 50%;transition:transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);cursor:zoom-in;-webkit-user-drag:none;}dialog.photoViewer:not([data-has-image]) img.pvImage {visibility:hidden;}dialog.photoViewer[data-zoomed] img.pvImage {cursor:grab;}dialog.photoViewer[data-dragging] img.pvImage {transition:none;cursor:grabbing;}

    /* Крутилка — только если большое фото грузится дольше трети секунды */dialog.photoViewer[data-loading] .pvStage::after {content:'';position:absolute;width:2.25rem;height:2.25rem;border:2px solid rgb(255 255 255 / 0.22);border-top-color:#fff;border-radius:50%;
      animation:
        pvSpin 0.8s linear infinite,
        pvAppear 0.2s 0.35s both;}dialog.photoViewer[data-failed] .pvStage::after {content:'Фото не загрузилось';position:absolute;color:rgb(255 255 255 / 0.7);}

    @keyframes pvSpin {
      to {
        rotate: 360deg;
      }
    }

    @keyframes pvAppear {
      from {
        opacity: 0;
      }
    }

    /* Кнопки: полупрозрачные круги поверх фото; селекторы весомее правил темы для button */dialog.photoViewer button.pvButton {display:inline-grid;place-items:center;width:3rem;height:3rem;min-height:0;padding:0;border:1px solid rgb(255 255 255 / 0.14);border-radius:50%;
      /* тёмные круги видны и на тёмном фоне окна, и поверх светлого увеличенного фото */background:rgb(22 24 24 / 0.55);color:#fff;line-height:1;letter-spacing:0;text-shadow:none;box-shadow:none;backdrop-filter:blur(8px);transition:background-color 0.2s,
        opacity 0.2s,
        scale 0.2s;}dialog.photoViewer button.pvButton:hover {background:rgb(48 52 52 / 0.75);}dialog.photoViewer button.pvButton:active {background:rgb(60 64 64 / 0.85);scale:0.94;}dialog.photoViewer button.pvButton:focus-visible {outline:2px solid var(--primaryColor, #24b4b0);outline-offset:2px;}dialog.photoViewer button.pvButton svg {width:1.375rem;height:1.375rem;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;}

    /* тема заливает значки кнопок (button > svg *) — у этих только контур */dialog.photoViewer button.pvButton svg * {fill:none;}dialog.photoViewer[data-zoomed] .pvPlus {display:none;}dialog.photoViewer .pvTools {position:absolute;top:1rem;right:1rem;display:flex;gap:0.5rem;}dialog.photoViewer .pvCount {position:absolute;top:1rem;left:1.25rem;margin:0;color:rgb(255 255 255 / 0.72);text-shadow:0 1px 2px rgb(0 0 0 / 0.6);font-size:0.95rem;line-height:3rem;letter-spacing:0.04em;font-variant-numeric:tabular-nums;}dialog.photoViewer button.pvNav {position:absolute;top:50%;width:3.5rem;height:3.5rem;translate:0 -50%;}dialog.photoViewer button.pvPrev {left:1rem;}dialog.photoViewer button.pvNext {right:1rem;}dialog.photoViewer .pvCaption {position:absolute;left:50%;bottom:1.25rem;display:-webkit-box;width:max-content;max-width:min(60ch, calc(100% - 2.5rem));margin:0;overflow:hidden;translate:-50% 0;color:rgb(255 255 255 / 0.88);text-shadow:0 1px 2px rgb(0 0 0 / 0.6);font-size:1rem;line-height:1.45;text-align:center;text-wrap:balance;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;}dialog.photoViewer .pvCaption[hidden] {display:none;}dialog.photoViewer[data-single] :is(.pvNav, .pvCount) {display:none;}

    /* Увеличенное фото — без подписи и стрелок поверх него */dialog.photoViewer :is(.pvNav, .pvCount, .pvCaption) {transition:opacity 0.2s;}dialog.photoViewer[data-zoomed] :is(.pvNav, .pvCount, .pvCaption) {opacity:0;pointer-events:none;}

    @media (max-width: 640px) {dialog.photoViewer .pvStage {inset:4rem 0 5.5rem;}dialog.photoViewer .pvTools {top:0.75rem;right:0.75rem;}dialog.photoViewer .pvCount {top:0.75rem;left:1rem;}

      /* Стрелки — внизу по краям, подпись между ними */dialog.photoViewer button.pvNav {top:auto;bottom:1rem;width:3rem;height:3rem;translate:none;}dialog.photoViewer button.pvPrev {left:0.75rem;}dialog.photoViewer button.pvNext {right:0.75rem;}dialog.photoViewer .pvCaption {bottom:1.4rem;max-width:calc(100% - 9rem);font-size:0.9rem;}dialog.photoViewer[data-single] .pvCaption {max-width:calc(100% - 2rem);}
    }

    @media (prefers-reduced-motion: reduce) {dialog.photoViewer,
      dialog.photoViewer img.pvImage,
      section.productHeadliner .mainImageBox:has(img.zoomable)::before {transition:none;}
    }