/* ============================================================
   DHRUV AWS PROJECT — media-viewer.css
   Shared media viewer styles: fullscreen overlay/modal,
   image zoom/pan, Plyr overrides, and navigation controls.
   ============================================================ */

/* ── OVERLAY: full viewport, highest z-index, dim background ── */
.mv-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 999999;
  background: rgba(0, 0, 0, 0.85);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: none;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* ── MODAL: centered, themed, fills available space ── */
.mv-modal {
  width: 92vw;
  max-width: 1400px;
  height: 88vh;
  max-height: 88vh;
  background: var(--bg-primary, #0F172A);
  border: 1px solid var(--border, rgba(0, 229, 255, 0.12));
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(0, 229, 255, 0.05);
  animation: mvModalIn 0.2s ease-out;
}

@keyframes mvModalIn {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* ── HEADER ── */
.mv-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border, rgba(0, 229, 255, 0.08));
  flex-shrink: 0;
  background: rgba(15, 23, 42, 0.6);
}

.mv-filename {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-white, #F8FAFC);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}

.mv-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: 12px;
}

.mv-close-btn {
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  color: var(--text-gray, #94A3B8);
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.mv-close-btn:hover {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.25);
  color: #EF4444;
}

/* ── BODY: flex-fill, centers content ── */
.mv-body {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
  min-height: 0;
}

/* ── FOOTER: navigation + meta ── */
.mv-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 20px;
  border-top: 1px solid var(--border, rgba(0, 229, 255, 0.08));
  flex-shrink: 0;
  background: rgba(15, 23, 42, 0.6);
}

.mv-nav {
  display: flex;
  align-items: center;
  gap: 10px;
}

.mv-nav-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--bg-tertiary, #1E2A3A);
  border: 1px solid var(--border, rgba(0, 229, 255, 0.1));
  border-radius: 8px;
  color: var(--text-gray, #94A3B8);
  font-size: 12px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.2s ease;
}

.mv-nav-btn:hover {
  border-color: rgba(0, 229, 255, 0.4);
  color: #00E5FF;
}

.mv-nav-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

.mv-counter {
  font-size: 12px;
  color: var(--text-dim, #64748B);
  font-weight: 500;
  min-width: 60px;
  text-align: center;
}

.mv-meta {
  font-size: 11px;
  color: var(--text-gray, #64748B);
}

/* ── IMAGE CONTAINER: fills body, centers image ── */
.mv-img-container {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: grab;
  background: radial-gradient(ellipse at center, rgba(0, 229, 255, 0.02) 0%, transparent 70%);
}

.mv-img-container:active {
  cursor: grabbing;
}

.mv-img-container img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  user-select: none;
  -webkit-user-drag: none;
}

/* ── Zoom controls bar (bottom-right of image) ── */
.mv-zoom-controls {
  position: absolute;
  bottom: 16px;
  right: 16px;
  display: flex;
  gap: 4px;
  background: rgba(15, 23, 42, 0.85);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(0, 229, 255, 0.15);
  border-radius: 8px;
  padding: 4px;
  opacity: 0;
  transition: opacity 0.2s ease;
  z-index: 10;
}

.mv-img-container:hover .mv-zoom-controls {
  opacity: 1;
}

.mv-zoom-btn {
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-radius: 5px;
  color: #94A3B8;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.15s ease;
}

.mv-zoom-btn:hover {
  background: rgba(0, 229, 255, 0.1);
  color: #00E5FF;
}

.mv-zoom-level {
  font-size: 10px;
  color: #64748B;
  display: flex;
  align-items: center;
  padding: 0 6px;
  font-family: 'Syne', sans-serif;
  min-width: 32px;
  justify-content: center;
}

/* ── Image info overlay (bottom-left) ── */
.mv-img-info {
  position: absolute;
  bottom: 16px;
  left: 16px;
  background: rgba(15, 23, 42, 0.75);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(0, 229, 255, 0.1);
  border-radius: 6px;
  padding: 4px 10px;
  font-size: 11px;
  color: #94A3B8;
  opacity: 0;
  transition: opacity 0.2s ease;
  pointer-events: none;
  z-index: 10;
}

.mv-img-container:hover .mv-img-info {
  opacity: 1;
}

/* ── VIDEO CONTAINER: fills modal body, centers player ── */
.mv-video-wrap {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  overflow: hidden;
  box-sizing: border-box;
}

.mv-video-wrap video {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  border-radius: 8px;
}

.mv-video-wrap .plyr--video {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  border-radius: 8px;
  overflow: hidden;
}

/* ── Plyr overrides for fullscreen modal ── */
:root {
  --plyr-color-main: #00E5FF;
  --plyr-video-background: #0F172A;
  --plyr-video-controls-background: linear-gradient(rgba(15, 23, 42, 0), rgba(15, 23, 42, 0.85));
  --plyr-menu-background: #1E2A3A;
  --plyr-menu-color: #F8FAFC;
  --plyr-menu-border-color: rgba(0, 229, 255, 0.1);
  --plyr-control-radius: 6px;
  --plyr-control-spacing: 8px;
  --plyr-control-icon-size: 18px;
  --plyr-tooltip-background: #1E2A3A;
  --plyr-tooltip-color: #F8FAFC;
  --plyr-range-thumb-background: #00E5FF;
  --plyr-range-track-height: 4px;
  --plyr-range-thumb-height: 14px;
  --plyr-range-thumb-width: 14px;
  --plyr-range-fill-background: linear-gradient(90deg, #00E5FF, #FF9900);
  --plyr-captions-background: rgba(0, 0, 0, 0.7);
}

.plyr--video {
  border-radius: 0;
  box-shadow: none;
}

.plyr--video .plyr__controls {
  padding: 12px 16px 8px;
  background: linear-gradient(transparent, rgba(15, 23, 42, 0.92) 40%, rgba(15, 23, 42, 0.98));
}

.plyr__control--overlaid {
  background: rgba(0, 229, 255, 0.9);
  padding: 18px;
  border-radius: 50%;
}

.plyr__control--overlaid:hover {
  background: #00E5FF !important;
}

.plyr__control--overlaid svg {
  width: 22px;
  height: 22px;
}

.plyr--full-ui .plyr__volume input[type="range"] {
  color: #00E5FF;
}

.plyr__progress input[type="range"]::-webkit-slider-thumb {
  background: #00E5FF;
  border: 2px solid #fff;
  box-shadow: 0 0 6px rgba(0, 229, 255, 0.4);
}

.plyr__menu__container {
  background: #1E2A3A !important;
  border: 1px solid rgba(0, 229, 255, 0.1) !important;
  border-radius: 8px !important;
}

.plyr__menu__container .plyr__control {
  color: #F8FAFC !important;
}

.plyr__menu__container .plyr__control:hover {
  background: rgba(0, 229, 255, 0.1) !important;
  color: #00E5FF !important;
}

/* ── AUDIO: centered in modal body ── */
.mv-audio-wrap {
  text-align: center;
  padding: 24px 32px;
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
}

.mv-audio-art {
  width: 100px;
  height: 100px;
  margin: 0 auto 20px;
  border-radius: 50%;
  background: linear-gradient(135deg, rgba(0, 229, 255, 0.12), rgba(255, 153, 0, 0.08));
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid rgba(0, 229, 255, 0.2);
  animation: mvPulse 2.5s ease-in-out infinite;
}

.mv-audio-art i {
  font-size: 40px;
  color: #00E5FF;
}

.mv-audio-name {
  color: #F8FAFC;
  font-weight: 600;
  font-size: 15px;
  margin-bottom: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mv-audio-size {
  color: #94A3B8;
  font-size: 12px;
  margin-bottom: 20px;
}

.plyr--audio {
  max-width: 100%;
  margin: 0 auto;
  border-radius: 8px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
}

@keyframes mvPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(0, 229, 255, 0.15); }
  50% { box-shadow: 0 0 0 12px rgba(0, 229, 255, 0); }
}

/* ── LOADING / FALLBACK STATE ── */
.mv-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  padding: 40px;
  color: #94A3B8;
}

.mv-loading i {
  font-size: 36px;
  color: #00E5FF;
}

/* ── PDF ── */
.mv-body iframe {
  width: 100%;
  height: 100%;
  border: none;
}

/* ── CODE / TEXT VIEWER ── */
.mv-code-wrap {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  background: #0D1117;
  border-radius: 8px;
  overflow: hidden;
  font-family: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', 'Consolas', monospace;
  font-size: 13px;
  line-height: 1.6;
}

.mv-code-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  background: #161B22;
  border-bottom: 1px solid rgba(0, 229, 255, 0.08);
  flex-shrink: 0;
}

.mv-code-lang {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 600;
  color: #00E5FF;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  font-family: 'Syne', sans-serif;
}

.mv-code-lang i {
  font-size: 12px;
}

.mv-code-lines {
  font-size: 11px;
  color: #8B949E;
  font-family: 'Syne', sans-serif;
}

.mv-code-scroll {
  flex: 1;
  overflow: auto;
  padding: 8px 0;
}

.mv-code-scroll::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

.mv-code-scroll::-webkit-scrollbar-track {
  background: transparent;
}

.mv-code-scroll::-webkit-scrollbar-thumb {
  background: rgba(0, 229, 255, 0.15);
  border-radius: 3px;
}

.mv-code-scroll::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 229, 255, 0.3);
}

.mv-code-table {
  width: 100%;
  border-collapse: collapse;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

.mv-code-table tr {
  transition: background 0.1s ease;
}

.mv-code-table tr:hover {
  background: rgba(0, 229, 255, 0.03);
}

.mv-code-line-num {
  width: 1%;
  min-width: 48px;
  padding: 0 16px 0 20px;
  text-align: right;
  color: #484F58;
  user-select: none;
  vertical-align: top;
  white-space: pre;
  font-size: 12px;
  border-right: 1px solid rgba(0, 229, 255, 0.06);
}

.mv-code-line-content {
  padding: 0 20px 0 16px;
  white-space: pre-wrap;
  word-break: break-all;
  color: #E6EDF3;
  vertical-align: top;
}

/* ── RESPONSIVE ── */
@media (max-width: 1024px) {
  .mv-modal { width: 94vw; max-width: 94vw; }
  .mv-nav-btn { padding: 6px 12px; font-size: 11px; }
  .mv-zoom-controls { bottom: 12px; right: 12px; }
}

@media (max-width: 768px) {
  .mv-modal {
    width: 100vw;
    height: 100vh;
    max-width: 100vw;
    max-height: 100vh;
    border-radius: 0;
    border: none;
    box-shadow: none;
  }

  .mv-header {
    padding: 12px 14px;
  }
  
  .mv-header-actions { gap: 4px; }
  .mv-close-btn { width: 30px; height: 30px; font-size: 12px; }

  .mv-footer {
    padding: 8px 14px;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: center;
  }

  .mv-nav {
    gap: 6px;
  }

  .mv-nav-btn {
    padding: 6px 10px;
    font-size: 11px;
  }

  .mv-zoom-controls {
    bottom: 12px;
    right: 12px;
  }
  
  .mv-img-info { display: none; }
  .mv-video-wrap { padding: 8px; }
  .mv-audio-wrap { padding: 16px; }
  .mv-audio-art { width: 72px; height: 72px; }
  .mv-audio-art i { font-size: 30px; }
  .mv-audio-name { font-size: 13px; }
  .mv-counter { min-width: 40px; font-size: 11px; }
  .mv-meta { font-size: 10px; }
  .mv-filename { font-size: 13px; }
}

@media (max-width: 600px) {
  .mv-modal { height: 100vh; max-height: 100vh; }
  .mv-header { padding: 10px 12px; }
  .mv-footer { padding: 6px 12px; }
  .mv-nav-btn { padding: 5px 8px; font-size: 10px; gap: 4px; }
  .mv-counter { min-width: 30px; font-size: 10px; }
  .mv-zoom-btn { width: 26px; height: 26px; font-size: 10px; }
  .mv-zoom-controls { bottom: 8px; right: 8px; padding: 2px; }
  .mv-code-wrap { font-size: 11px; }
  .mv-code-line-num { min-width: 36px; padding: 0 8px 0 12px; font-size: 10px; }
  .mv-code-line-content { padding: 0 12px 0 10px; font-size: 11px; }
  .mv-code-header { padding: 6px 10px; }
}

@media (max-width: 400px) {
  .mv-header { padding: 8px 10px; }
  .mv-filename { font-size: 12px; }
  .mv-close-btn { width: 28px; height: 28px; font-size: 11px; }
  .mv-footer { padding: 4px 8px; }
  .mv-nav-btn { padding: 4px 6px; font-size: 9px; }
  .mv-counter { font-size: 9px; min-width: 24px; }
  .mv-audio-wrap { padding: 12px; }
  .mv-audio-art { width: 60px; height: 60px; }
  .mv-audio-art i { font-size: 24px; }
  .mv-code-wrap { font-size: 10px; }
}
