/* Pameran Virtual */
.pv-hero { background: linear-gradient(135deg, #a61d24 0%, #c8102e 50%, #7a0000 100%); color: #fff; position: relative; overflow: hidden; }
.pv-hero::before { content: ""; position: absolute; inset: 0; pointer-events: none;
  background-size: 40px 40px;
  background-image: linear-gradient(to right, rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,.05) 1px, transparent 1px); }
.pv-hero .pv-glow { position: absolute; border-radius: 50%; pointer-events: none; }
.pv-hero .pv-glow-1 { top: -20%; left: -5%; width: 400px; height: 400px; background: radial-gradient(circle, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 70%); animation: pv-float 9s ease-in-out infinite; }
.pv-hero .pv-glow-2 { bottom: -40%; right: -10%; width: 500px; height: 500px; background: radial-gradient(circle, rgba(0,0,0,.18) 0%, rgba(0,0,0,0) 70%); animation: pv-float 12s ease-in-out infinite reverse; }
@keyframes pv-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(18px); } }
.pv-hero-title { font-family: 'Times New Roman', Times, serif; text-shadow: 1px 2px 4px rgba(0,0,0,.3); }
.pv-stat { background: rgba(0,0,0,.25); border: 1px solid rgba(255,255,255,.12); border-radius: 12px; backdrop-filter: blur(5px); min-width: 120px; }

/* Reveal saat scroll */
.pv-reveal { opacity: 0; transform: translateY(24px); transition: opacity .6s ease, transform .6s ease; transition-delay: var(--pv-delay, 0s); }
.pv-reveal.pv-in { opacity: 1; transform: none; }

/* Kartu tema */
.pv-theme { position: relative; display: block; height: 320px; border-radius: 18px; overflow: hidden; color: #fff; text-decoration: none;
  box-shadow: 0 8px 24px rgba(0,0,0,.12); background: #7a0000; transition: transform .35s ease, box-shadow .35s ease; }
.pv-theme:hover, .pv-theme:focus-visible { transform: translateY(-6px); box-shadow: 0 16px 36px rgba(166,29,36,.35); color: #fff; }
.pv-theme-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
.pv-theme:hover .pv-theme-bg { transform: scale(1.1); }
.pv-theme-mosaic { position: absolute; inset: 0; display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; gap: 2px; }
.pv-theme-mosaic img { width: 100%; height: 100%; object-fit: cover; }
.pv-theme-mosaic img:first-child { grid-row: span 2; }
.pv-theme-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.85) 0%, rgba(0,0,0,.25) 55%, rgba(0,0,0,.05) 100%); }
.pv-theme-body { position: absolute; left: 0; right: 0; bottom: 0; padding: 22px; }
.pv-theme-icon { width: 44px; height: 44px; border-radius: 50%; background: rgba(255,255,255,.18); display: inline-flex; align-items: center; justify-content: center; margin-bottom: 10px; backdrop-filter: blur(4px); }
.pv-theme-title { font-weight: 700; font-size: 1.35rem; margin: 0 0 4px; }
.pv-theme-desc { font-size: .88rem; opacity: .85; margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 0; transition: max-height .4s ease; }
.pv-theme:hover .pv-theme-desc, .pv-theme:focus-visible .pv-theme-desc { max-height: 3.2em; }
.pv-theme-cta { display: inline-flex; align-items: center; gap: 8px; margin-top: 12px; font-size: .78rem; letter-spacing: 1px; font-weight: 700; text-transform: uppercase; color: #ffc107; }
.pv-theme-cta i { transition: transform .3s ease; }
.pv-theme:hover .pv-theme-cta i { transform: translateX(6px); }
.pv-count { position: absolute; top: 16px; right: 16px; background: #c8102e; color: #fff; border-radius: 30px; padding: 4px 12px; font-size: .78rem; font-weight: 700; box-shadow: 0 2px 8px rgba(0,0,0,.3); }

/* Kartu koleksi */
.pv-item { display: block; background: #fff; border-radius: 16px; overflow: hidden; text-decoration: none; color: inherit; height: 100%;
  box-shadow: 0 4px 16px rgba(0,0,0,.08); transition: transform .3s ease, box-shadow .3s ease; }
.pv-item:hover { transform: translateY(-5px); box-shadow: 0 12px 28px rgba(0,0,0,.16); color: inherit; }
.pv-item-img { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: #f1f1f1; }
.pv-item-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.pv-item-img img.pv-contain { object-fit: contain; padding: 24px; }
.pv-item:hover .pv-item-img img { transform: scale(1.08); }
.pv-item-img::after { content: "\f00e"; font-family: "Font Awesome 6 Free", "Font Awesome 5 Free"; font-weight: 900; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 1.8rem; color: #fff; background: rgba(166,29,36,.55); opacity: 0; transition: opacity .3s ease; }
.pv-item:hover .pv-item-img::after { opacity: 1; }
.pv-item-body { padding: 16px 18px 18px; }
.pv-item-title { font-weight: 700; font-size: 1rem; color: #212529; margin-bottom: 6px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pv-item-excerpt { font-size: .85rem; color: #6c757d; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin: 0; }

/* Kepala tema */
.pv-theme-head { position: relative; min-height: 280px; display: flex; align-items: flex-end; color: #fff; background: #7a0000 center / cover no-repeat; }
.pv-theme-head::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.8), rgba(122,0,0,.55)); }
.pv-theme-head > .container { position: relative; z-index: 1; }

/* Pencarian dan chip */
.pv-search { border-radius: 30px; overflow: hidden; }
.pv-search .form-control { border: 0; padding: 12px 20px; }
.pv-search .btn { background: #c8102e; color: #fff; border: 0; padding: 0 22px; }
.pv-chip { display: inline-flex; align-items: center; gap: 6px; padding: 7px 16px; border-radius: 30px; border: 1px solid #dee2e6; background: #fff; color: #495057; text-decoration: none; font-size: .85rem; font-weight: 600; transition: all .2s ease; }
.pv-chip:hover { border-color: #c8102e; color: #c8102e; transform: translateY(-2px); }
.pv-chip.active { background: #c8102e; border-color: #c8102e; color: #fff; }

/* Navigasi detail */
.pv-nav-link { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-radius: 14px; background: #f8f9fa; text-decoration: none; color: #212529; height: 100%; transition: background .2s ease, transform .2s ease; }
.pv-nav-link:hover { background: #f8d7da; color: #721c24; transform: translateY(-2px); }
.pv-nav-link small { display: block; color: #6c757d; font-size: .72rem; text-transform: uppercase; letter-spacing: 1px; }
.pv-zoom { cursor: zoom-in; }
.pv-hint { font-size: .8rem; color: #6c757d; text-align: center; margin: 8px 0 0; }

@media (prefers-reduced-motion: reduce) {
  .pv-reveal { opacity: 1; transform: none; transition: none; }
  .pv-hero .pv-glow, .pv-theme, .pv-theme-bg, .pv-item, .pv-item-img img { animation: none !important; transition: none !important; }
}
@media (max-width: 575.98px) { .pv-theme { height: 260px; } .pv-theme-desc { max-height: 3.2em; } }
