.photo-preview-link{display:block;width:auto;min-height:0;margin:3px 0;padding:3px 5px;border:0;border-radius:5px;background:transparent;color:#1769aa;text-align:left;text-decoration:underline;font-weight:650}
.photo-preview-link:hover,.photo-preview-link:focus-visible{background:#e8f4ff}
.hover-preview{position:fixed;z-index:30;width:220px;padding:8px;border:1px solid #b8c3d0;border-radius:10px;background:#fff;box-shadow:0 10px 30px #1720333d;pointer-events:none}
.hover-preview img{display:block;width:100%;height:220px;object-fit:contain;background:#eef3f8;border-radius:6px}
.hover-preview span{display:block;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}
.photo-modal{position:fixed;z-index:50;inset:0;display:grid;place-items:center;padding:18px;background:#101828c7}
.photo-modal[hidden],.hover-preview[hidden]{display:none}
.photo-modal-panel{width:min(94vw,900px);max-height:92vh;padding:12px;border-radius:12px;background:#fff;box-shadow:0 16px 50px #0008}
.photo-modal-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.photo-modal-heading strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.photo-modal-close{width:44px;min-height:44px;margin:0;padding:0;border-radius:50%;font-size:1.8rem;line-height:1}
.photo-modal-panel>img{display:block;width:100%;height:auto;max-height:calc(92vh - 78px);object-fit:contain;background:#eef3f8}
.modal-open{overflow:hidden}
.orphan-photos{margin:18px 0;padding:12px;border:1px solid #e3a33c;border-radius:10px;background:#fff8e8}.orphan-photos h3{margin:0}.orphan-file-list{display:flex;flex-wrap:wrap;gap:4px 10px}
