.portrait-viewer{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(5,5,6,.985);color:#F4F1EA;overflow:hidden;overscroll-behavior:contain}
.portrait-viewer::backdrop{background:rgba(5,5,6,.9)}
.viewer-stage{position:absolute;inset:80px 5vw 115px}
.viewer-image{position:fixed;object-fit:cover;max-width:none;max-height:none;transform-origin:center;touch-action:none;user-select:none;opacity:0;cursor:zoom-in}
.is-zoomed .viewer-image{cursor:grab}.is-zoomed .viewer-image:active{cursor:grabbing}
.viewer-top,.viewer-bottom{position:absolute;left:4vw;right:4vw;display:flex;align-items:center;justify-content:space-between;gap:24px;z-index:2;background:rgba(5,5,6,.85)}
.viewer-top{top:16px}.viewer-bottom{bottom:max(20px,env(safe-area-inset-bottom));padding-top:16px;border-top:1px solid rgba(244,241,234,.18)}
.viewer-brand{font-size:10px;letter-spacing:.22em}.viewer-title{font:italic 26px 'Playfair Display',serif;margin:0 0 7px}.viewer-status{font:10px 'Montserrat',sans-serif;letter-spacing:.12em;color:rgba(244,241,234,.6);margin:0}.viewer-actions{display:flex;gap:12px;align-items:center}
.portrait-viewer button{min-width:46px;min-height:46px;padding:8px 14px;color:#F4F1EA;border:1px solid rgba(244,241,234,.2);background:#050506;font:12px 'Montserrat',sans-serif;cursor:pointer;transition:color .2s,border-color .2s}
.portrait-viewer .viewer-close{font-size:28px;border:0}.portrait-viewer .viewer-prev,.portrait-viewer .viewer-next{font-size:22px}.portrait-viewer button:hover{color:#E8743B;border-color:#E8743B}.portrait-viewer button:focus-visible{outline:2px solid #E8743B;outline-offset:4px}.portrait-viewer button:disabled{opacity:.25;cursor:default}.viewer-open #cursor{visibility:hidden}.viewer-open{cursor:auto!important}
@media(max-width:600px){.viewer-stage{inset:72px 16px 158px}.viewer-bottom{left:20px;right:20px;align-items:flex-start;gap:14px;flex-direction:column}.viewer-title{font-size:22px}.viewer-actions{width:100%;justify-content:space-between}.viewer-top{left:20px;right:20px}.viewer-zoom{flex:1}.viewer-status{font-size:9px}}
@media(prefers-reduced-motion:reduce){.portrait-viewer button{transition:none}}
