/* Explicit thumbnail contexts only. Article photographs stay intrinsic. */
.lanzini-photo-frame .lanzini-photo-view {
 aspect-ratio: var(--lanzini-photo-ratio, 4 / 3);
 background: transparent;
 display: block;
 overflow: hidden;
 padding: 0;
 position: relative;
 width: 100%;
}
.lanzini-photo-frame .lanzini-photo-view > img {
 aspect-ratio: var(--lanzini-photo-ratio, 4 / 3);
 display: block;
 height: 100%;
 margin: 0;
 max-height: none;
 object-fit: var(--lanzini-photo-fit, contain);
 object-position: var(--lanzini-photo-position, 50% 50%);
 padding: 0;
 width: 100%;
}
.lanzini-photo-view__label { background: #211f1c; border: 1px solid #c2ac7b; bottom: .5rem; color: #fffaf0; font-size: .75rem; line-height: 1.2; padding: .55rem .65rem; position: absolute; right: .5rem; }
.lanzini-photo-view:focus-visible { outline: 3px solid #755324; outline-offset: 4px; }
.lanzini-photo-project { display: block; font-size: .85rem; line-height: 1.4; margin-top: .5rem; }
.lanzini-photo-project > a { align-items: center; display: inline-flex; min-height: 44px; }
.lanzini-photo-frame figcaption { margin-top: .5rem; }

.lanzini-photo-viewer { background: #f7f3e9; border: 1px solid #ae9260; color: #25221e; height: 92vh; height: 92dvh; margin: auto; max-height: 92vh; max-height: 92dvh; overflow-y: auto; max-width: min(94vw, 80rem); padding: 1rem; width: 80rem; }
.lanzini-photo-viewer[open] { display: flex; flex-direction: column; gap: .75rem; }
.lanzini-photo-viewer::backdrop { background: rgb(20 18 15 / 88%); }
.lanzini-photo-viewer__header { align-items: center; display: flex; flex: 0 0 auto; gap: 1rem; justify-content: space-between; }
.lanzini-photo-viewer .lanzini-photo-viewer__title { font-size: 1.25rem; line-height: 1.3; margin: 0; }
.lanzini-photo-viewer__close { background: #211f1c; border: 1px solid #ae9260; border-radius: 0; color: #fffaf0; cursor: pointer; font: inherit; min-height: 44px; min-width: 80px; padding: .5rem 1rem; }
/* Reserve the text/control rows first; the photo uses only the remaining space.
   A small nonshrinking media minimum keeps the photo usable when long text
   requires the dialog itself to scroll. */
.lanzini-photo-viewer__media { flex: 1 0 4rem; min-height: 4rem; position: relative; }
.lanzini-photo-viewer .lanzini-photo-viewer__image { display: block; height: 100%; inset: 0; margin: 0; max-height: none; max-width: 100%; object-fit: contain; position: absolute; width: 100%; }
.lanzini-photo-viewer .lanzini-photo-viewer__caption,
.lanzini-photo-viewer .lanzini-photo-viewer__status { flex: 0 0 auto; font-size: .95rem; line-height: 1.4; margin: 0; }
.lanzini-photo-viewer__project { align-items: center; align-self: flex-start; display: inline-flex; flex: 0 0 auto; min-height: 44px; }
.lanzini-photo-viewer [hidden] { display: none; }
.lanzini-photo-viewer button:focus-visible,
.lanzini-photo-viewer a:focus-visible { outline: 3px solid #755324; outline-offset: 3px; }
@media (max-width: 600px) {
 .lanzini-photo-viewer { max-width: 96vw; padding: .75rem; }
}
