.fv { position: relative; width: 100%; max-width: 900px; margin: 0 auto; overflow: hidden;
  touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab; outline: none; }
.fv.fv-drag { cursor: grabbing; }
.fv:fullscreen { max-width: none; aspect-ratio: auto !important; display: flex; }
.fv-stage { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.fv-img { max-width: 100%; max-height: 100%; object-fit: contain; pointer-events: none;
  }
.fv-loading { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 14px; background: rgba(244,244,244,.6); transition: opacity .4s; }
.fv-loading img { width: 80px; height: 80px; animation: fv-spin 1.6s linear infinite; }
.fv-bar { width: 40%; height: 3px; background: rgba(0,0,0,.1); border-radius: 2px; overflow: hidden; }
.fv-bar span { display: block; height: 100%; width: 0; background: #e8591a; transition: width .15s; }
.fv-hidden { opacity: 0; pointer-events: none; }
@keyframes fv-spin { to { transform: rotate(360deg); } }
