/* 文章图片浏览 */
.prose .photo-link { display: block; width: fit-content; max-width: 100%; margin-inline: auto; line-height: 0; cursor: pointer; }
.prose .film-photo > img:where(:not([hidden]):not([data-failed="true"])), .prose img.photo-zoomable { cursor: pointer; }
.prose [data-gallery-ignore] img, .prose img[data-gallery-ignore] { cursor: inherit; }
.film-photo .photo-link { width: 100%; }
/* 胶片相册：多列瀑布流，图片保持原始比例错落排列，点开仍进入查看器。
   多列布局天然按列填充，配和声明好的宽高不会在加载时抖动。 */
.film-grid { columns: 2; column-gap: 6px; margin: 40px 0 48px; }
.film-grid .film-photo { position: relative; margin: 0 0 6px; break-inside: avoid; }
.film-grid .photo-link { display: block; overflow: hidden; border-radius: 2px; background: var(--wash); }
.film-grid .film-photo img { width: 100%; height: auto; border-radius: 0; background: transparent; }
/* 说明文字平时收起，鼠标悬停时才浮出来；触屏交给查看器里的计数。 */
.film-grid .film-photo figcaption { position: absolute; right: 0; bottom: 0; left: 0; display: flex; justify-content: space-between; gap: 8px; margin: 0; padding: 26px 9px 7px; background: linear-gradient(to top, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0)); color: #fff; font-size: 9px; line-height: 1.5; letter-spacing: .06em; opacity: 0; pointer-events: none; transition: opacity .22s ease; }
@media (hover: hover) {
  .film-grid .film-photo img { transition: transform .5s cubic-bezier(.2, .6, .2, 1); }
  .film-grid .film-photo:hover img { transform: scale(1.04); }
  .film-grid .film-photo:hover figcaption, .film-grid .film-photo:focus-within figcaption { opacity: 1; }
}
@media (min-width: 700px) {
  .film-grid { columns: 3; column-gap: 8px; }
  .film-grid .film-photo { margin-bottom: 8px; }
}
@media (min-width: 1200px) {
  /* 与其他配图一致，宽屏时向正文两侧探出，排得更开。 */
  .film-grid { margin-inline: -120px; }
}
@media (max-width: 700px) {
  .film-grid { column-gap: 4px; margin-block: 30px 36px; }
  .film-grid .film-photo { margin-bottom: 4px; }
  .film-grid .film-photo figcaption { padding: 22px 8px 6px; }
}
@media print {
  .film-grid { columns: 1; margin: 24px 0; }
  .film-grid .film-photo { margin-bottom: 16px; }
  .film-grid .film-photo figcaption { position: static; padding: 6px 0 0; background: none; color: var(--muted); opacity: 1; }
}
.photo-viewer { position: fixed; inset: 0; width: 100%; height: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; color: #f0f0f0; font: 14px/1.5 var(--sans); overflow: hidden; }
.photo-viewer[open] { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.photo-viewer::backdrop { background: rgba(43, 56, 49, .83); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.photo-viewer :focus-visible { outline: 2px solid #e0e0e0; outline-offset: 3px; }
.photo-viewer__header { display: flex; align-items: center; gap: 10px; min-width: 0; padding: max(12px, env(safe-area-inset-top)) 24px 12px; }
.photo-viewer__title { flex: 1; min-width: 0; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 400; color: #d0d0d0; }
.photo-viewer__counter { margin: 0 14px 0 0; white-space: nowrap; font: 12px/1.5 var(--mono); color: #c0c0c0; }
.photo-viewer__button { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 8px; border: 1px solid transparent; border-radius: 3px; background: transparent; color: inherit; font: 13px/1 var(--sans); }
.photo-viewer__button svg { display: block; width: 22px; height: 22px; }
.photo-viewer__button:not(:disabled):hover { background: rgba(237, 242, 238, .12); }
.photo-viewer__button:disabled { opacity: .25; cursor: default; }
.photo-viewer__body { display: grid; grid-template-columns: 48px minmax(0, 1fr) 48px 86px; grid-template-areas: "prev stage next thumbs"; gap: 10px; min-height: 0; padding: 0 16px; }
.photo-viewer__previous, .photo-viewer__next { font-size: 34px; }
.photo-viewer__previous { grid-area: prev; align-self: center; }
.photo-viewer__next { grid-area: next; align-self: center; }
.photo-viewer__stage { grid-area: stage; display: flex; align-items: center; justify-content: center; position: relative; min-width: 0; min-height: 0; overflow: hidden; cursor: zoom-out; touch-action: pan-y; }
.photo-viewer__image { display: block; width: 100%; height: 100%; margin: auto; object-fit: contain; user-select: none; -webkit-user-select: none; }
.photo-viewer__stage[aria-busy="true"] .photo-viewer__image { visibility: hidden; }
.photo-viewer__message { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; margin: 0; padding: 20px; color: #d0d0d0; text-align: center; font-size: 13px; }
.photo-viewer__message a { text-decoration: underline; text-underline-offset: 4px; }
.photo-viewer__thumbnails { grid-area: thumbs; display: flex; flex-direction: column; align-items: center; gap: 10px; min-height: 0; padding: 6px 12px 6px 6px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #5a5a5a transparent; }
.photo-viewer__thumbnail { display: block; flex-shrink: 0; width: 58px; height: 58px; margin: 0; padding: 0; border: 2px solid transparent; border-radius: 2px; background: rgba(237, 242, 238, .12); opacity: .45; overflow: hidden; }
.photo-viewer__thumbnail img { display: block; width: 100%; height: 100%; object-fit: cover; }
.photo-viewer__thumbnail[aria-current="true"] { border-color: #e0e0e0; opacity: 1; }
.photo-viewer__thumbnail:hover { opacity: 1; }
.photo-viewer__footer { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; min-height: 56px; padding: 14px 28px max(16px, env(safe-area-inset-bottom)); }
.photo-viewer__caption { margin: 0; color: #c0c0c0; font-size: 12px; }
.photo-viewer__hint { flex-shrink: 0; margin: 0; color: #b0b0b0; font-size: 11px; }
.photo-viewer--zoomed .photo-viewer__stage { display: block; overflow: auto; touch-action: pan-x pan-y; cursor: auto; }
.photo-viewer--zoomed .photo-viewer__image { width: auto; height: auto; max-width: none; max-height: none; cursor: auto; }
@media (max-width: 767px) {
  .photo-viewer__header { gap: 3px; flex-wrap: wrap; padding-inline: 12px; }
  .photo-viewer__title { flex-basis: 100%; margin-bottom: 3px; font-size: 12px; }
  .photo-viewer__counter { flex: 1; margin: 0; }
  .photo-viewer__body { grid-template-columns: 34px minmax(0, 1fr) 34px; grid-template-rows: minmax(0, 1fr) 62px; grid-template-areas: "prev stage next" "thumbs thumbs thumbs"; gap: 10px 2px; padding-inline: 4px; }
  .photo-viewer__previous, .photo-viewer__next { min-width: 34px; padding: 4px; }
  .photo-viewer__thumbnails { flex-direction: row; justify-content: flex-start; gap: 8px; padding: 3px 12px; overflow-x: auto; overflow-y: hidden; }
  .photo-viewer__thumbnail { width: 52px; height: 52px; }
  .photo-viewer__footer { display: block; min-height: 56px; padding: 10px 16px max(12px, env(safe-area-inset-bottom)); }
  .photo-viewer__caption { font-size: 11px; }
  .photo-viewer__hint { display: none; }
}
@media (max-height: 450px) and (orientation: landscape) {
  .photo-viewer__header { flex-wrap: nowrap; padding-block: 4px; }
  .photo-viewer__title { flex-basis: auto; margin: 0; }
  .photo-viewer__counter { flex: 0; }
  .photo-viewer__body { grid-template-columns: 34px minmax(0, 1fr) 34px 66px; grid-template-rows: minmax(0, 1fr); grid-template-areas: "prev stage next thumbs"; }
  .photo-viewer__thumbnails { flex-direction: column; padding-inline: 5px; overflow-x: hidden; overflow-y: auto; }
  .photo-viewer__footer { min-height: 34px; padding-block: 6px; }
}
@media print {
  .photo-viewer { display: none !important; }
}
