.poster-layout { display: grid; gap: 2rem; align-items: center; }
.poster-layout > * { min-width: 0; }
.poster-figure { width: 100%; max-width: 26rem; margin: 0; justify-self: center; }
.poster-link { display: block; color: var(--leaf-dark); background: #fff; border: 1px solid #cdddcf; border-radius: 8px; text-decoration: none; }
.poster-link:hover { border-color: var(--leaf); }
.poster-link img { display: block; width: 100%; height: auto; object-fit: contain; border-radius: 7px 7px 0 0; }
.poster-enlarge { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 10px 16px; font-weight: 700; }
.poster-figure figcaption { margin-top: 12px; color: var(--muted); font-size: 0.875rem; line-height: 1.5; text-align: center; }
.project-poster { border-top: 1px solid #dce7de; background: #f6f8f1; }
.project-poster h2 { margin: 0 0 1rem; }
.project-poster .button { margin-top: 0.5rem; }
@media (min-width: 860px) {
  .poster-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 26rem); gap: 3rem; }
}

.image-dialog { width: min(1040px, calc(100% - 24px)); max-width: none; max-height: calc(100dvh - 24px); margin: auto; padding: 0; border: 1px solid #cdddcf; border-radius: 8px; color: var(--ink); background: #fff; }
.image-dialog[open] { display: flex; flex-direction: column; height: min(940px, calc(100dvh - 24px)); }
.image-dialog::backdrop { background: #071d19bf; }
.image-dialog-header { display: flex; flex-shrink: 0; align-items: center; justify-content: space-between; gap: 12px; padding: 12px; border-bottom: 1px solid #d8e3d9; }
.image-dialog-header h2 { font: 600 1.125rem/1.4 var(--heading); margin: 0; }
.image-dialog-controls { display: flex; gap: 8px; flex-shrink: 0; }
.image-dialog-controls button { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid #c9d8cb; border-radius: 6px; background: #fff; color: var(--leaf-dark); cursor: pointer; }
.image-dialog-controls button[aria-pressed="true"] { background: #e3f0e5; }
.image-dialog-content { overflow: auto; flex: 1; min-height: 0; display: grid; place-items: center; background: #f0f3ee; padding: 12px; overscroll-behavior: contain; }
.image-dialog-content > * { grid-area: 1 / 1; }
.image-dialog-content img { min-width: 0; min-height: 0; width: 100%; height: 100%; object-fit: contain; }
.image-dialog-content.is-zoomed { display: block; }
.image-dialog-content.is-zoomed img { max-width: none; width: 1086px; height: auto; }
.image-dialog-caption { flex-shrink: 0; margin: 0; padding: 12px; font-size: 0.875rem; line-height: 1.5; }
.image-dialog-error { max-width: 24rem; padding: 20px; line-height: 1.6; }
.image-dialog-error a { text-decoration: underline; }
