.program-photo { cursor: zoom-in; }
.photo-viewer { width: calc(100% - 2rem); max-width: 1200px; height: calc(100dvh - 2rem); max-height: 950px; margin: auto; padding: 0; border: 1px solid #496358; border-radius: 18px; background: #14291f; color: #fff; overflow: hidden; box-shadow: 0 25px 100px #0008; }
.photo-viewer::backdrop { background: #06110ee6; backdrop-filter: blur(6px); }
.photo-viewer[open] { display: grid; grid-template-rows: auto minmax(0,1fr) auto; }
.photo-viewer button, .photo-viewer a { font: inherit; }
.photo-viewer-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.25rem; border-bottom: 1px solid #395044; }
.photo-viewer-header h2 { font-size: 1.05rem; font-weight: 500; line-height: 1.5; }
.photo-viewer-counter { display: block; color: #b3c9bd; font-size: .8rem; margin-top: .15rem; }
.photo-viewer-button { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 44px; min-width: 44px; padding: .65rem .9rem; border: 1px solid #527263; border-radius: 10px; color: #fff; background: #274838; text-decoration: none; cursor: pointer; font-size: .85rem !important; }
.photo-viewer-button:hover { background: #355e48; }
.photo-viewer-button:focus-visible { outline: 3px solid #ffdb69; outline-offset: 3px; }
.photo-viewer-button:disabled { opacity: .4; cursor: default; }
.photo-viewer-button[hidden] { display: none; }
.photo-viewer-close { flex-shrink: 0; }
.photo-viewer-stage { min-width: 0; min-height: 0; overflow: auto; overscroll-behavior: contain; background: #09150f; touch-action: pan-x pan-y pinch-zoom; }
.photo-viewer-stage.is-zoomed { cursor: grab; }
.photo-viewer-stage.is-dragging { cursor: grabbing; }
.photo-viewer-canvas { display: grid; place-items: center; position: relative; min-width: 100%; min-height: 100%; }
.photo-viewer-image { display: block; max-width: none; max-height: none; object-fit: contain; user-select: none; -webkit-user-drag: none; }
.photo-viewer-image[hidden], .photo-viewer-error[hidden] { display: none; }
.photo-viewer-error { padding: 1.5rem; color: #fff; text-align: center; }
.photo-viewer-footer { display: flex; justify-content: space-between; flex-wrap: wrap; align-items: center; gap: .75rem; padding: .85rem 1.25rem; border-top: 1px solid #395044; }
.photo-viewer-navigation, .photo-viewer-tools { display: flex; align-items: center; gap: .5rem; }
.photo-viewer-level { min-width: 3.4rem; text-align: center; color: #d2e2d8; font-size: .85rem; }
.photo-viewer-download { background: #227d4c; border-color: #419a69; }
@media (max-width: 600px) {
    .photo-viewer { width: 100%; height: 100dvh; max-height: none; border: 0; border-radius: 0; }
    .photo-viewer-header { padding: .75rem; align-items: flex-start; }
    .photo-viewer-header h2 { font-size: .95rem; }
    .photo-viewer-close span { display: none; }
    .photo-viewer-footer { padding: .75rem; justify-content: center; gap: .6rem; }
    .photo-viewer-tools { justify-content: center; flex-wrap: wrap; }
    .photo-viewer-navigation { width: 100%; justify-content: space-between; }
    .photo-viewer-download { flex-grow: 1; }
}
