/* Lightweight PDF viewer modal */

.pdfv-overlay {
  position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center;
  background: rgba(0,0,0,.55);
  opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility 0s linear .25s;
}
.pdfv-overlay.open { opacity: 1; visibility: visible; transition: opacity .25s ease; }

.pdfv-dialog {
  width: min(1000px, 94vw); height: min(82vh, 900px);
  background: #0d0f12; border: 1px solid rgba(255,255,255,.12); border-radius: 12px;
  box-shadow: 0 24px 60px rgba(0,0,0,.6);
  display: grid; grid-template-rows: auto 1fr; overflow: hidden;
  transform: translateY(8px) scale(.98); opacity: 0; transition: transform .25s ease, opacity .25s ease;
}
.pdfv-overlay.open .pdfv-dialog { transform: translateY(0) scale(1); opacity: 1; }

.pdfv-header { display:flex; align-items:center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid rgba(255,255,255,.12); }
.pdfv-title { font-size: 14px; color: #e5e7eb; opacity: .9; }
.pdfv-actions { display:flex; gap:8px; }
.pdfv-btn { width: 36px; height: 32px; border-radius: 8px; border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04); color:#e5e7eb; cursor:pointer; }
.pdfv-btn:hover { background: rgba(255,255,255,.08); }

.pdfv-body { position: relative; background: #111; }
.pdfv-embed { border: 0; width: 100%; height: 100%; background: #111; }

/* Loading overlay shown while PDF initializes */
.pdfv-loading { position:absolute; inset:0; display:grid; place-items:center; background:#0d0f12; }
.pdfv-loading.hidden { display: none; }

/* From Uiverse.io by nima-mollazadeh (scoped) */
.pdfv-loading .loader {
  --dur: 2s;
  display: block;
  margin: auto;
  width: 14em;
  height: auto;
}
.pdfv-loading .loader__glare-top,
.pdfv-loading .loader__glare-bottom,
.pdfv-loading .loader__model,
.pdfv-loading .loader__motion-thick,
.pdfv-loading .loader__motion-medium,
.pdfv-loading .loader__motion-thin,
.pdfv-loading .loader__sand-drop,
.pdfv-loading .loader__sand-fill,
.pdfv-loading .loader__sand-grain-left,
.pdfv-loading .loader__sand-grain-right,
.pdfv-loading .loader__sand-line-left,
.pdfv-loading .loader__sand-line-right,
.pdfv-loading .loader__sand-mound-top,
.pdfv-loading .loader__sand-mound-bottom {
  animation-duration: var(--dur);
  animation-timing-function: cubic-bezier(0.83, 0, 0.17, 1);
  animation-iteration-count: infinite;
}
.pdfv-loading .loader__glare-top { animation-name: glare-top; }
.pdfv-loading .loader__glare-bottom { animation-name: glare-bottom; }
.pdfv-loading .loader__model { animation-name: loader-flip; transform-origin: 12.25px 16.75px; }
.pdfv-loading .loader__motion-thick,
.pdfv-loading .loader__motion-medium,
.pdfv-loading .loader__motion-thin { transform-origin: 26px 26px; }
.pdfv-loading .loader__motion-thick { animation-name: motion-thick; }
.pdfv-loading .loader__motion-medium { animation-name: motion-medium; }
.pdfv-loading .loader__motion-thin { animation-name: motion-thin; }
.pdfv-loading .loader__sand-drop { animation-name: sand-drop; }
.pdfv-loading .loader__sand-fill { animation-name: sand-fill; }
.pdfv-loading .loader__sand-grain-left { animation-name: sand-grain-left; }
.pdfv-loading .loader__sand-grain-right { animation-name: sand-grain-right; }
.pdfv-loading .loader__sand-line-left { animation-name: sand-line-left; }
.pdfv-loading .loader__sand-line-right { animation-name: sand-line-right; }
.pdfv-loading .loader__sand-mound-top { animation-name: sand-mound-top; }
.pdfv-loading .loader__sand-mound-bottom { animation-name: sand-mound-bottom; transform-origin: 12.25px 31.5px; }

/* Animation keyframes */
@keyframes loader-flip { from { transform: translate(13.75px, 9.25px) rotate(-180deg); } 24%, to { transform: translate(13.75px, 9.25px) rotate(0); } }
@keyframes glare-top { from { stroke: rgba(255, 255, 255, 0); } 24%, to { stroke: white; } }
@keyframes glare-bottom { from { stroke: white; } 24%, to { stroke: rgba(255, 255, 255, 0); } }
@keyframes motion-thick { from { animation-timing-function: cubic-bezier(0.33, 0, 0.67, 0); stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(0.67turn); } 20% { animation-timing-function: cubic-bezier(0.33, 1, 0.67, 1); stroke: rgb(32, 32, 32); stroke-dashoffset: 141.11; transform: rotate(1turn); } 40%, to { stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(1.33turn); } }
@keyframes motion-medium { from, 8% { animation-timing-function: cubic-bezier(0.33, 0, 0.67, 0); stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(0.5turn); } 20% { animation-timing-function: cubic-bezier(0.33, 1, 0.67, 1); stroke: white; stroke-dashoffset: 147.53; transform: rotate(0.83turn); } 32%, to { stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(1.17turn); } }
@keyframes motion-thin { from, 4% { animation-timing-function: cubic-bezier(0.33, 0, 0.67, 0); stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(0.33turn); } 24% { animation-timing-function: cubic-bezier(0.33, 1, 0.67, 1); stroke: rgb(53, 53, 53); stroke-dashoffset: 134.7; transform: rotate(0.67turn); } 44%, to { stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(1turn); } }
@keyframes sand-drop { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 1; } 70%, to { stroke-dashoffset: -107; } }
@keyframes sand-fill { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 55; } 70%, to { stroke-dashoffset: -54; } }
@keyframes sand-grain-left { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 29; } 70%, to { stroke-dashoffset: -22; } }
@keyframes sand-grain-right { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 27; } 70%, to { stroke-dashoffset: -24; } }
@keyframes sand-line-left { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 53; } 70%, to { stroke-dashoffset: -55; } }
@keyframes sand-line-right { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 14; } 70%, to { stroke-dashoffset: -24.5; } }
@keyframes sand-mound-top { from, 10% { animation-timing-function: linear; transform: translate(0, 0); } 15% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); transform: translate(0, 1.5px); } 51%, to { transform: translate(0, 13px); } }
@keyframes sand-mound-bottom { from, 31% { animation-timing-function: cubic-bezier(0.61, 1, 0.88, 1); transform: scale(1, 0); } 56%, to { transform: scale(1, 1); } }

@media (prefers-reduced-motion: reduce) {
  .pdfv-overlay, .pdfv-dialog { transition: none !important; }
}
