.photo-viewer{overscroll-behavior:contain;position:fixed;inset:0;z-index:1000;display:flex;background:#0a0a0a;color:#fff;animation:pv-in .18s ease-out}
.photo-viewer.closing{opacity:0;transition:opacity .15s ease}
@keyframes pv-in{from{opacity:0}to{opacity:1}}
.pv-stage{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;cursor:zoom-in;user-select:none;-webkit-user-select:none}
.photo-viewer.zoomed .pv-stage{cursor:grab}
.pv-stage[data-zone=prev]{cursor:w-resize}.pv-stage[data-zone=next]{cursor:e-resize}
.pv-image{display:block;max-width:100%;max-height:100%;object-fit:contain;transform-origin:center;will-change:transform;-webkit-user-drag:none}
.pv-top{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:max(12px,env(safe-area-inset-top)) 16px 12px;pointer-events:none}
.pv-top>*{pointer-events:auto}
.pv-count{min-width:52px;padding:4px 12px;border-radius:999px;background:rgba(40,40,40,.85);font-size:14px;font-weight:700;line-height:20px;text-align:center;font-variant-numeric:tabular-nums}
.pv-count:empty{visibility:hidden}
.pv-bar{position:absolute;left:50%;bottom:max(16px,env(safe-area-inset-bottom));display:flex;gap:8px;padding:6px;border-radius:999px;background:rgba(40,40,40,.85);transform:translateX(-50%)}
.pv-btn{display:grid;width:44px;height:44px;place-items:center;padding:0;border:0;border-radius:50%;background:rgba(40,40,40,.85);color:#fff;cursor:pointer}
.pv-bar .pv-btn{background:transparent}
.pv-btn:hover{background:rgba(255,255,255,.28)}
.pv-btn:active{opacity:.75}
.pv-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
html.pv-open,html.pv-open body{overflow:hidden}
@media (prefers-reduced-motion:reduce){.photo-viewer{animation:none}.photo-viewer.closing{transition:none}}
.gallery-zoom{position:absolute;z-index:2;bottom:var(--space-3);left:var(--space-3);display:grid;width:44px;height:44px;place-items:center;padding:0;border:0;border-radius:50%;background:var(--color-photo-control);color:var(--color-photo-text);cursor:pointer}
.gallery-zoom svg{width:18px;height:18px}
.gallery-zoom:active{opacity:.75}
.gallery-stage{cursor:zoom-in}
