/** * Video Modal Component Styles * Reusable video player modal for Anime Downloader */ /* Modal - Desktop: Centered, Mobile: Fullscreen */ #videoModal .modal-dialog { max-width: 1100px; margin: 30px auto; height: 80vh; /* Reduced from 85vh */ } #videoModal .modal-content { border-radius: 12px !important; display: flex; flex-direction: column; height: 100%; /* Fill the 85vh height */ max-height: calc(100vh - 60px); } #videoModal .modal-header { flex-shrink: 0; padding: 10px 16px; } #videoModal .modal-body { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-height: 0; /* Crucial for flex nested items */ } /* Close Button - Prominent */ #videoModal .close { font-size: 32px; font-weight: 300; color: #fff; text-shadow: 0 0 10px rgba(0,0,0,0.5); opacity: 1; padding: 0; margin: -5px -5px -5px auto; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; background: rgba(239, 68, 68, 0.8); border-radius: 8px; transition: all 0.2s ease; } #videoModal .close:hover { background: rgba(239, 68, 68, 1); transform: scale(1.1); } /* Video Container */ .video-container { position: relative; overflow: hidden; background: #000; flex: 1; /* Stretch to fill space */ display: flex; align-items: center !important; /* Force center */ justify-content: center !important; min-height: 350px; /* Reduced from 450px */ } .video-container .video-js { margin: auto !important; max-width: 100%; max-height: 100%; } /* Zoomed state via CSS class */ .video-container .video-js.vjs-zoomed { object-fit: cover !important; max-height: 100% !important; } .video-container .video-js.vjs-zoomed video { object-fit: cover !important; } /* Zoom Button */ .video-zoom-btn { position: absolute; top: 15px; right: 15px; z-index: 10; background: rgba(15, 23, 42, 0.6); backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.15); color: white; width: 38px; height: 38px; border-radius: 10px; opacity: 0; transition: opacity 0.3s; display: flex; align-items: center; justify-content: center; cursor: pointer; } .video-container:hover .video-zoom-btn { opacity: 1; } .video-zoom-btn.active { background: #3b82f6; border-color: transparent; } /* Episode Selector Row (Alist Style) */ .episode-selector-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; background: linear-gradient(135deg, rgba(15, 23, 42, 0.95) 0%, rgba(30, 41, 59, 0.95) 100%); border-bottom: 1px solid rgba(255, 255, 255, 0.1); } /* Episode Dropdown */ .episode-dropdown-wrapper { position: relative; flex: 1; } .episode-dropdown { width: 100%; padding: 10px 40px 10px 14px; background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); border: none; border-radius: 8px; color: white; font-size: 14px; font-weight: 600; cursor: pointer; appearance: none; -webkit-appearance: none; transition: all 0.2s ease; box-shadow: 0 2px 8px rgba(37, 99, 235, 0.3); } .episode-dropdown:hover { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); box-shadow: 0 4px 12px rgba(37, 99, 235, 0.5); } .episode-dropdown:focus { outline: none; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.4); } .episode-dropdown option { background: #1e293b; color: #f1f5f9; padding: 10px; } .dropdown-arrow { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: white; pointer-events: none; } /* Auto-Next Toggle Switch */ .auto-next-toggle { display: flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; } .auto-next-toggle input { display: none; } .toggle-label { font-size: 13px; color: #94a3b8; font-weight: 500; transition: color 0.2s; } .auto-next-toggle input:checked ~ .toggle-label { color: #f1f5f9; } .toggle-switch { position: relative; width: 44px; height: 24px; background: #334155; border-radius: 12px; transition: all 0.3s ease; } .toggle-switch::after { content: ''; position: absolute; width: 20px; height: 20px; background: white; border-radius: 50%; top: 2px; left: 2px; transition: all 0.3s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.2); } .auto-next-toggle input:checked ~ .toggle-switch { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); } .auto-next-toggle input:checked ~ .toggle-switch::after { left: 22px; } /* External Players Section */ .external-players { padding: 12px 16px; background: linear-gradient(135deg, rgba(15, 23, 42, 0.95) 0%, rgba(30, 41, 59, 0.95) 100%); border-top: 1px solid rgba(255, 255, 255, 0.1); } .external-players-grid { display: flex; flex-direction: row; flex-wrap: wrap !important; /* Force wrap */ justify-content: center; align-items: center; gap: 12px; width: 100%; padding: 10px 0; } .ext-player-btn { display: flex; align-items: center; justify-content: center; padding: 8px; background: rgba(59, 130, 246, 0.12); border: 1px solid rgba(59, 130, 246, 0.25); border-radius: 10px; text-decoration: none; transition: all 0.2s ease; cursor: pointer; } .ext-player-btn:hover { background: rgba(59, 130, 246, 0.3); border-color: rgba(59, 130, 246, 0.5); transform: translateY(-2px) scale(1.05); box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); } .ext-player-btn img { width: 28px; height: 28px; object-fit: contain; } /* Video.js Theme Overrides */ .video-js.vjs-theme-fantasy .vjs-big-play-button { background: linear-gradient(135deg, rgba(59, 130, 246, 0.9) 0%, rgba(37, 99, 235, 0.9) 100%) !important; border: none !important; width: 90px !important; height: 90px !important; line-height: 90px !important; border-radius: 50% !important; box-shadow: 0 0 30px rgba(37, 99, 235, 0.6) !important; transition: all 0.3s ease !important; } .video-js.vjs-theme-fantasy .vjs-big-play-button .vjs-icon-placeholder:before { font-size: 60px !important; line-height: 90px !important; } .video-js .vjs-control-bar { background: rgba(15, 23, 42, 0.8) !important; backdrop-filter: blur(10px) !important; } /* Mobile Responsive */ @media (max-width: 768px) { #videoModal .modal-dialog { width: 100% !important; max-width: 100% !important; margin: 0 !important; height: 100%; } #videoModal .modal-content { border-radius: 0 !important; max-height: 92vh; /* Use max-height instead of fixed 100vh to avoid taking too much space */ height: auto; display: flex; flex-direction: column; } #video-player { width: 100% !important; height: auto !important; max-width: 100%; } .video-container { flex: 1; display: flex; align-items: center; min-height: 250px; /* Fixed height for video area on mobile */ } .playlist-controls { padding-bottom: 25px; /* Mobile safe area */ } .video-zoom-btn { opacity: 0.8; top: 10px; right: 10px; } .episode-selector-row { flex-direction: column; align-items: stretch; gap: 10px; } .auto-next-toggle { justify-content: flex-end; } .external-players-grid { display: flex; flex-wrap: wrap; /* Force wrap */ justify-content: center; gap: 8px; /* Increased gap slightly for better spacing when wrapped */ padding: 5px 0; } .ext-player-btn { padding: 6px; min-width: 44px; /* Ensure touch targets are large enough */ } .ext-player-btn img { width: 24px; height: 24px; } }