/* Video thumbnail hover effects */ .videoThumbnail { position: relative; width: 100%; padding-bottom: 56.25%; /* 16:9 aspect ratio */ cursor: pointer; border-radius: 8px; overflow: hidden; border: 1px solid var(--ifm-color-emphasis-200); transition: transform 0.2s ease, box-shadow 0.2s ease; } .thumbnailImage { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; } .videoThumbnail:hover { transform: translateY(-2px); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); } .videoThumbnail:hover .playButton { transform: translate(-50%, -50%) scale(1.1); background-color: var(--ifm-color-primary); } .playButton { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80px; height: 80px; background-color: rgba(0, 0, 0, 0.8); border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; border: 3px solid rgba(255, 255, 255, 0.9); } .loadingHint { position: absolute; bottom: 10px; left: 10px; background-color: rgba(0, 0, 0, 0.7); color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px; font-weight: 500; backdrop-filter: blur(4px); } .videoContainer { display: flex; flex-direction: column; gap: 1.5rem; margin: 1rem 0; width: 100%; max-width: 100%; } .videoWrapper { position: relative; width: 100%; padding-bottom: 56.25%; /* 16:9 aspect ratio */ border-radius: 8px; overflow: hidden; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); } .loadedVideo { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; } /* Dark mode adjustments */ [data-theme="dark"] .videoThumbnail { border-color: var(--ifm-color-emphasis-300); } [data-theme="dark"] .videoThumbnail:hover { box-shadow: 0 4px 20px rgba(255, 255, 255, 0.1); } /* Responsive design */ @media (max-width: 768px) { .playButton { width: 60px; height: 60px; } .videoContainer { gap: 1rem; } } /* Loading state */ .videoThumbnail:focus-visible { outline: 2px solid var(--ifm-color-primary); outline-offset: 2px; } /* Animation for smooth loading */ .videoWrapper { animation: fadeInScale 0.3s ease-out; } @keyframes fadeInScale { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }