/* 点开看大图：左右滑换照片，双击或两指放大，点一下或往下拉关闭；底部小图点哪张跳哪张。 */
.gallery-photo,.gallery-thumbs img,.item-thumb,.photo-grid img,.trade-photo-strip img,.cloud-preview-image{cursor:zoom-in}
dialog.image-viewer{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:white;overflow:hidden;box-sizing:border-box;box-shadow:none}
.image-viewer::backdrop{background:transparent}
.image-viewer [hidden]{display:none!important}
.image-viewer-bg{position:absolute;inset:0;background:#111}
.image-viewer .image-viewer-toolbar{position:absolute;z-index:2;top:0;left:0;right:0;display:grid;grid-template-columns:1fr minmax(0,auto) 1fr;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top,0px)) 12px 18px;background:linear-gradient(#000a,transparent);font:14px/1.4 system-ui,sans-serif;transition:opacity .2s}
.image-viewer-title{min-width:0;text-align:center;line-height:1.35}
.image-viewer-title [role=status]{display:block;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.image-viewer-caption{display:block;font-size:12px;color:#ffffffb8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.image-viewer-caption:empty{display:none}
.image-viewer button{border:0;background:#333c;color:#fff;border-radius:22px;min-width:44px;min-height:44px;padding:8px 14px;font:15px/1.4 system-ui,sans-serif;cursor:pointer}
.image-viewer button:disabled{opacity:.3;cursor:default}
.image-viewer button:focus-visible,.gallery-photo:focus-visible,.item-thumb:focus-visible,.cloud-preview-image:focus-visible{outline:3px solid #b9d9ff;outline-offset:-3px}
.image-viewer [data-viewer=close]{justify-self:start}
.image-viewer [data-viewer=zoom]{justify-self:end}
.image-viewer-stage{position:absolute;inset:0;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
.image-viewer-track{display:flex;height:100%;will-change:transform}
.image-viewer-track.is-animating{transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.image-viewer-slide{flex:0 0 100%;min-width:0;height:100%;display:grid;place-items:center;overflow:hidden;padding:calc(76px + env(safe-area-inset-top,0px)) 0 calc(16px + env(safe-area-inset-bottom,0px))}
.image-viewer.has-strip .image-viewer-slide{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
.image-viewer .image-viewer-slide img{display:block;max-width:100%;max-height:100%;border:0;border-radius:0;box-shadow:none;cursor:inherit;pointer-events:none;-webkit-user-drag:none;transform-origin:center;will-change:transform}
.image-viewer .image-viewer-slide img.is-animating{transition:transform .28s cubic-bezier(.2,.7,.2,1)}
.image-viewer-stage.is-zoomed{cursor:grab}
.image-viewer .image-viewer-strip{position:absolute;z-index:2;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 10px calc(14px + env(safe-area-inset-bottom,0px));background:linear-gradient(transparent,#0009);transition:opacity .2s}
.image-viewer-thumbs{position:relative;display:flex;gap:8px;min-width:0;overflow-x:auto;scrollbar-width:none;padding:2px}
.image-viewer-thumbs::-webkit-scrollbar{display:none}
.image-viewer .image-viewer-thumbs button{flex:0 0 44px;width:44px;height:58px;min-width:0;min-height:0;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#ffffff24;opacity:.55}
.image-viewer .image-viewer-thumbs button[aria-current=true]{border-color:#fff;opacity:1}
.image-viewer-thumbs img{display:block;width:100%;height:100%;object-fit:cover}
.image-viewer .image-viewer-prev,.image-viewer .image-viewer-next{flex:none;padding:0;font-size:24px}
.image-viewer-tip{position:absolute;z-index:3;left:50%;top:50%;transform:translate(-50%,-50%);padding:12px 18px;border-radius:12px;background:#000a;font:14px/1.8 system-ui,sans-serif;text-align:center;white-space:nowrap;pointer-events:none}
.image-viewer.is-pulling .image-viewer-toolbar,.image-viewer.is-pulling .image-viewer-strip{opacity:0}
@media (prefers-reduced-motion:reduce){.image-viewer-track.is-animating,.image-viewer .image-viewer-slide img.is-animating,.image-viewer .image-viewer-toolbar,.image-viewer .image-viewer-strip{transition:none}}
@media print{dialog.image-viewer{display:none!important}}
