/* Shared lightbox + utility styles. Themed per concept through --lb-* variables. */
.afpv-lock { overflow: hidden; }
.afpv-in { animation: afpv-in .45s cubic-bezier(.2,.7,.2,1) both; }
@keyframes afpv-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.afpv-lb { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 24px; }
.afpv-lb[hidden] { display: none; }
.afpv-lb-backdrop { position: absolute; inset: 0; background: var(--lb-backdrop, rgba(0,0,0,.86)); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); animation: afpv-fade .25s both; }
.afpv-lb-panel {
  position: relative; width: min(1100px, 100%); max-height: calc(100vh - 48px); overflow: auto;
  background: var(--lb-bg, #0d0d0d); color: var(--lb-fg, #fff); border-radius: var(--lb-radius, 10px);
  box-shadow: 0 30px 80px rgba(0,0,0,.5); animation: afpv-pop .3s cubic-bezier(.2,.8,.2,1) both;
}
.afpv-lb-media { background: #000; }
.afpv-lb-media iframe { display: block; width: 100%; aspect-ratio: 16/9; border: 0; }
.afpv-lb-media img { display: block; width: 100%; max-height: 72vh; object-fit: contain; }
.afpv-lb.portrait .afpv-lb-panel { width: min(900px, 100%); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.afpv-lb.portrait .afpv-lb-media img { max-height: calc(100vh - 48px); height: 100%; object-fit: cover; }
.afpv-lb-info { padding: 22px 26px 26px; }
.afpv-lb-meta { margin: 0 0 6px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; opacity: .6; }
.afpv-lb-title { margin: 0 0 10px; font: var(--lb-title-font, 600 22px/1.25 system-ui, sans-serif); }
.afpv-lb-caption { margin: 0 0 18px; font-size: 14px; line-height: 1.6; opacity: .82; max-height: 40vh; overflow: auto; }
.afpv-lb-cta { display: inline-flex; gap: 6px; align-items: center; padding: 10px 16px; border-radius: var(--lb-cta-radius, 999px); background: var(--lb-accent, #fff); color: var(--lb-accent-fg, #000); font-weight: 600; font-size: 14px; text-decoration: none; }
.afpv-lb-cta:hover { filter: brightness(1.08); }
.afpv-lb-close { position: absolute; top: 10px; right: 10px; z-index: 2; width: 40px; height: 40px; border-radius: 50%; border: 0; cursor: pointer; background: rgba(0,0,0,.55); color: #fff; display: grid; place-items: center; }
.afpv-lb-close svg { width: 20px; height: 20px; }
.afpv-lb-close:hover { background: rgba(0,0,0,.8); }
@media (max-width: 720px) {
  .afpv-lb { padding: 0; }
  .afpv-lb-panel, .afpv-lb.portrait .afpv-lb-panel { width: 100%; max-height: 100vh; height: 100%; border-radius: 0; display: block; }
  .afpv-lb.portrait .afpv-lb-media img { max-height: 70vh; height: auto; object-fit: contain; }
}
@keyframes afpv-fade { from { opacity: 0; } }
@keyframes afpv-pop { from { opacity: 0; transform: translateY(16px) scale(.98); } }
@media (prefers-reduced-motion: reduce) { .afpv-in, .afpv-lb-backdrop, .afpv-lb-panel { animation: none !important; } }
.afpv-lb.portrait .afpv-lb-info { align-self: center; padding: 36px 34px; }
/* Reel player: Instagram CDN video, or Instagram's official embed as fallback. */
.afpv-lb-media .afpv-lb-video { display: block; width: 100%; height: auto; max-height: calc(100vh - 48px); background: #000; object-fit: contain; }
.afpv-lb.portrait .afpv-lb-media[data-player] { display: flex; align-items: center; justify-content: center; }
.afpv-lb-embed { width: 100%; height: min(760px, calc(100vh - 48px)); overflow: auto; -webkit-overflow-scrolling: touch; background: #000; }
.afpv-lb-media .afpv-lb-embed iframe { width: 100%; height: 100%; min-height: 560px; aspect-ratio: auto; background: #fff; }
@media (max-width: 720px) {
  .afpv-lb-media .afpv-lb-video { max-height: 72vh; }
  .afpv-lb-embed { height: 78vh; }
}
