/* static/styles.css */ :root { --button-color: #8b949e; /* Default button color */ --background-color: #3c4252; /* Default background color */ --text-color: #f6f5f4; --button-color: #3e4555; --container-button-color: transparent; --button-text-color: #f6f5f4; --text-secondary-color: #f6f5f4; --accent-color: #6d747f; --prog-bar-color: #3550af; --error-color: red; --bonus-color: black; --border-color: 000000; --secondary-background: #2e3440; --standout-color: #6e8e92; --hover-color: #5d80aa; --link-color: #5d80aa; --container-background: #2b2f3a; --transparent-background: rgba(63, 57, 90, 0.089); --alert-color: #880101; --warning-color: #ffcc00; --success-color: #00cc00; --check-box-color: #ffffff; } body { background-color: var(--background-color); min-height: 100vh; margin: 0; /* Default background color */ /* Other global styles */ } .main-container { max-width: 1200px; /* Set the maximum width you desire */ margin: 0 auto; /* This centers the div */ padding: 0 20px; } .login-link { color: var(--link-color); /* Default link color */ } /* Base container styling */ .episode-description-container { font-size: 1rem; line-height: 1.3; color: var(--text-color); } /* Headers */ .episode-description-container h1, .episode-description-container h2, .episode-description-container h3, .episode-description-container h4, .episode-description-container h5, .episode-description-container h6 { margin: 1.5em 0 0.75em; font-weight: 600; line-height: 1.3; } .episode-description-container h1 { font-size: 1.75em; } .episode-description-container h2 { font-size: 1.5em; } .episode-description-container h3 { font-size: 1.25em; } .episode-description-container h4 { font-size: 1.1em; } .episode-description-container h5, .episode-description-container h6 { font-size: 1em; } /* Paragraphs and spacing */ .episode-description-container p { margin: 1em 0; } .episode-description-container p + p { margin-top: 1.5em; } /* Lists */ .episode-description-container ul, .episode-description-container ol { margin: 1em 0; padding-left: 2em; } .episode-description-container li { margin: 0.5em 0; line-height: 1.6; } .episode-description-container ul { list-style-type: disc; } .episode-description-container ul ul { list-style-type: circle; } .episode-description-container ol { list-style-type: decimal; } /* Links */ .episode-description-container a { color: var(--link-color); text-decoration: none; border-bottom: 1px solid transparent; transition: border-color 0.2s ease; } .episode-description-container a:hover { border-bottom-color: currentColor; } /* Blockquotes */ .episode-description-container blockquote { margin: 1.5em 0; padding: 0.5em 1em; border-left: 4px solid var(--border-color); background: var(--blockquote-bg); font-style: italic; } /* Code blocks */ .episode-description-container code { background: var(--code-bg); padding: 0.2em 0.4em; border-radius: 3px; font-family: monospace; font-size: 0.9em; } .episode-description-container pre { background: var(--code-bg); padding: 1em; border-radius: 4px; overflow-x: auto; margin: 1.5em 0; } .episode-description-container pre code { background: none; padding: 0; } /* Images */ .episode-description-container img { max-width: 100%; height: auto; margin: 1.5em 0; border-radius: 4px; } /* Tables */ .episode-description-container table { width: 100%; border-collapse: collapse; margin: 1.5em 0; } .episode-description-container th, .episode-description-container td { padding: 0.75em; border: 1px solid var(--border-color); text-align: left; } .episode-description-container th { background: var(--table-header-bg); font-weight: 600; } /* Definition lists */ .episode-description-container dl { margin: 1.5em 0; } .episode-description-container dt { font-weight: 600; margin-top: 1em; } .episode-description-container dd { margin-left: 2em; margin-top: 0.5em; } /* Horizontal rules */ .episode-description-container hr { margin: 2em 0; border: none; border-top: 1px solid var(--border-color); } /* Bold and italic */ .episode-description-container strong { font-weight: 600; } .episode-description-container em { font-style: italic; } /* Special spacing for specific element combinations */ .episode-description-container h2 + p, .episode-description-container h3 + p, .episode-description-container h4 + p { margin-top: 0.75em; } .episode-description-container ul + p, .episode-description-container ol + p { margin-top: 1.5em; } /* CSS Variables for theming */ :root { --text-color: #333; --link-color: #0066cc; --border-color: #ddd; --blockquote-bg: #f8f8f8; --code-bg: #f5f5f5; --table-header-bg: #f5f5f5; } /* Dark mode support */ @media (prefers-color-scheme: dark) { :root { --text-color: #e0e0e0; --link-color: #66b3ff; --border-color: #444; --blockquote-bg: #2a2a2a; --code-bg: #2a2a2a; --table-header-bg: #2a2a2a; } } .item_container-text.episode-description-container a { color: var(--link-color); /* Replace #yourColorCode with the color you want */ text-decoration: none; /* Example property, adjust as needed */ } .episode-layout-container-shared { padding-top: 20px; } .item_container-text.episode-description-container a:hover { color: var(--hover-color); /* Replace #hoverColorCode with the color you want for hover state */ text-decoration: underline; /* Example property, adjust as needed */ } #login-page { background-image: url("./assets/backgrounds/2.jpg"); background-repeat: no-repeat; background-attachment: fixed; background-size: cover; } .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .search-page-container { max-width: 1200px; /* Set the maximum width you desire */ margin: 0 auto; /* This centers the div */ padding: 0 40px; } .episode-image { width: 100%; max-width: 200px; max-height: 200px; object-fit: cover; align-self: flex-start; margin-top: 10px; margin-bottom: 10px; border-radius: 10px; } @media (max-width: 768px) { /* Adjust breakpoint as needed */ .episode-image { max-width: 100px; /* Smaller max width for smaller screens */ max-height: 100px; /* Smaller max height for smaller screens */ width: 100px; height: 100px; } } .playlist-modal-background { position: fixed; top: 5vh; right: 0; left: 0; bottom: 5vh; z-index: 50; display: flex; justify-content: center; align-items: start; width: 100%; height: 90vh; background-color: rgba(0, 0, 0, 0.25); overflow-y: auto; padding: 1rem; } .playlist-modal-container { position: relative; width: 100%; max-width: 42rem; background-color: var(--container-background); border-radius: 0.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .playlist-modal-header { position: sticky; top: 0; display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; background-color: var(--secondary-background); border-bottom: 1px solid var(--border-color); border-top-left-radius: 0.5rem; border-top-right-radius: 0.5rem; color: var(--text-color); } .playlist-modal-close { background-color: transparent; padding: 0.5rem; border-radius: 0.375rem; color: var(--text-color); } .playlist-modal-close:hover { background-color: var(--hover-color); } .playlist-modal-content { padding: 1.25rem; background-color: var(--container-background); } .playlist-form { display: flex; flex-direction: column; gap: 1.25rem; } .playlist-input-group { display: flex; flex-direction: column; gap: 0.5rem; } .playlist-input-label { font-size: 0.875rem; font-weight: 500; color: var(--text-color); } .playlist-modal-input { width: 100%; padding: 0.625rem; background-color: var(--secondary-background); border: 1px solid var(--border-color); border-radius: 0.375rem; color: var(--text-color); } .playlist-modal-input:focus { outline: none; border-color: var(--hover-color); } .playlist-filters-section { display: flex; flex-direction: column; gap: 0.75rem; } .playlist-checkbox-container { display: flex; align-items: center; gap: 0.5rem; } .playlist-checkbox-container input[type="checkbox"] { accent-color: var(--accent-color); } .playlist-duration-inputs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; } .playlist-submit-btn { width: 100%; padding: 0.75rem; background-color: var(--button-color); color: var(--button-text-color); border-radius: 0.375rem; font-weight: 500; margin-top: 1rem; transition: background-color 0.2s; } .playlist-submit-btn:hover:not(:disabled) { background-color: var(--hover-color); } .playlist-submit-btn:disabled { opacity: 0.5; cursor: not-allowed; } .drawer-hr { border-color: var(--text-color); } .drawer-burger { background-color: var(--text-color); } .drawer-button { background-color: var(--button-color); color: var(--accent-color); /* Assuming you want white text */ padding: 0.5rem 1rem; border-radius: 0.25rem; cursor: pointer; /* Other button styles */ } .drawer-icon { z-index: 49; /* Higher than the search bar's z-index */ position: fixed; top: 13px; left: 10px; padding: 4px; color: var(--text-color); /* Other styles as needed */ } .drawer-background { background-color: var(--secondary-background); position: fixed; /* Other background styles */ } .drawer-text a { color: var(--text-color); } .drawer-text { color: var(--text-color); } /*body.no-scroll {*/ /* overflow: hidden; !* Prevents scrolling when drawer is open *!*/ /*}*/ .error-snackbar { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); background-color: var(--error-color); color: var(--text-color); padding: 12px 24px; border-radius: 4px; z-index: 1000; /* Ensure it's above other elements */ display: flex; justify-content: center; align-items: center; } .info-snackbar { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); background-color: var(--standout-color); color: var(--text-color); padding: 12px 24px; border-radius: 4px; z-index: 1000; /* Ensure it's above other elements */ display: flex; justify-content: center; align-items: center; } .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, 0.5); z-index: 50; margin: 0 !important; /* Override any margins */ padding: 0; overflow: hidden; display: flex; align-items: center; justify-content: center; } /* Remove the space utilities that are causing the gap */ .modal-overlay { --tw-space-x-reverse: 0; margin-right: 0; /* Override the calc margin */ margin-left: 0; /* Override the calc margin */ } .modal-content { background-color: var(--background-color); /* Equivalent to bg-white */ padding: 1.5rem; /* Equivalent to p-6 */ border-radius: 0.5rem; /* Equivalent to rounded-lg */ box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); /* Equivalent to shadow-xl */ } .spinner { width: 4rem; /* Equivalent to h-16 w-16 */ height: 4rem; border-top: 2px solid var(--link-color); /* Equivalent to border-t-2 border-blue-500 */ border-bottom: 2px solid var(--link-color); /* Equivalent to border-b-2 */ border-radius: 50%; /* Equivalent to rounded-full */ animation: spin 1s linear infinite; /* Equivalent to animate-spin */ } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .modal-title { font-size: 1.25rem; /* Equivalent to text-xl */ font-weight: 600; /* Equivalent to font-semibold */ color: var(--text-color); } .modal-subtitle { font-size: 0.875rem; /* Equivalent to text-sm */ color: var(--text-color); /* Equivalent to text-gray-600 */ } .empty-episodes-container { display: flex; flex-direction: column; align-items: center; justify-content: center; margin-top: 4rem; /* Adds spacing from the top */ padding: 2rem; /* Adds some padding around the content */ text-align: center; } .empty-episodes-container .logo { width: 96px; /* Fixed size for the logo */ height: 96px; margin-bottom: 1.5rem; /* Spacing between logo and text */ } .empty-episodes-container .page-paragraphs { max-width: 600px; /* Constrains text width for better readability */ margin: 0.75rem 0; /* Vertical spacing between text elements */ } .empty-episodes-container h1.page-paragraphs { font-size: 1.5rem; font-weight: 600; margin-bottom: 1rem; } .empty-episodes-container p.page-paragraphs { font-size: 1rem; line-height: 1.5; color: var(--text-color-secondary, #666); } .episodes-container { padding-top: 80px; /* Adjust the value to the height of your search bar */ } .center-text { align-items: center; justify-content: center; text-align: center; } .logo { max-width: 100px; /* Adjust size as needed */ margin-bottom: 20px; } .search-bar-container { display: flex; align-items: center; justify-content: end; padding: 10px 20px; background-color: var(--secondary-background); /* Adjust the color as needed */ position: fixed; /* Fix the position relative to the viewport */ top: 0; /* Align to the top of the viewport */ left: 0; /* Align to the left of the viewport */ right: 0; /* Ensure it extends to the right of the viewport */ z-index: 49; /* Make sure it stays on top of other content */ } /* Category UI styles */ .category-input { width: 100%; padding: 0.75rem 1rem; padding-right: 6rem; border: 1px solid var(--border-color); background-color: var(--background-color); color: var(--text-color); border-radius: 0.5rem; transition: all 0.2s ease; } .category-input:focus { outline: none; border-color: var(--hover-color); box-shadow: 0 0 0 2px rgba(var(--link-color-rgb), 0.2); } .category-input::placeholder { color: var(--text-secondary-color); } .category-tag { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.75rem; background-color: var(--secondary-background); color: var(--text-color); border-radius: 0.5rem; transition: background-color 0.2s ease; } .category-tag:hover { background-color: var(--hover-background); } .category-remove-btn { display: flex; align-items: center; justify-content: center; min-width: 2.5rem; /* 40px touch target */ min-height: 2.5rem; /* 40px touch target */ margin: -0.5rem -0.75rem -0.5rem 0; /* Negative margin to maintain visual spacing */ padding: 0.5rem; border-radius: 0.375rem; color: var(--text-color); transition: all 0.2s ease; } .category-remove-btn:hover { background-color: var(--destructive-color); color: var(--destructive-text); } .category-add-btn { position: absolute; right: 0.5rem; top: 50%; transform: translateY(-50%); display: flex; align-items: center; gap: 0.5rem; height: 2.5rem; /* Consistent height */ padding: 0 1rem; background-color: var(--primary-color); color: var(--primary-text); border-radius: 0.375rem; transition: background-color 0.2s ease; } .category-add-btn:hover { background-color: var(--primary-hover); } /* Mobile optimizations */ @media (max-width: 640px) { .category-add-btn { padding: 0; width: 2.5rem; justify-content: center; } } .search-input, .search-btn { box-sizing: border-box; line-height: normal; } .search-input-dropdown-border { border: 1px solid var(--border-color); background-color: var(--background-color); } .search-input { padding: 5px 10px; background-color: var(--background-color); border-radius: 4px; color: var(--text-color); outline: none; border: none; } .search-input:focus { border-color: var(--hover-color); ring-color: var(--link-color); } .search-input::placeholder { color: var(--text-secondary-color); } .search-source { padding: 5px 10px; margin-right: 10px; border: 1px solid #ccc; border-radius: 4px; } /* Search component styles */ .search-btn { background-color: transparent; color: var(--text-color); border-color: transparent; cursor: pointer; transition: transform 0.2s ease; } .search-btn:hover, .search-btn:focus { transform: scale(1.05); } .search-button:focus { outline-color: var(--hover-color); ring-color: var(--link-color); } /* Enhanced styling for the mobile dropdown */ .search-drop-solid { position: absolute; top: 100%; right: 0; z-index: 10; background-color: var(--accent-color); padding: 16px; margin-bottom: 10px; /* More pronounced shadow for depth */ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06); /* Rounded corners for modern look */ border-radius: 12px; /* Subtle border */ border: 1px solid var(--border-color); /* Add glass-like effect with slight opacity if supported */ background-color: var(--secondary-background); } /* Animation for showing and hiding dropdown */ .dropdown-visible { animation: dropdownFadeIn 0.3s ease-out forwards; transform-origin: top center; } .dropdown-hiding { animation: dropdownFadeOut 0.3s ease-in forwards; transform-origin: top center; } @keyframes dropdownFadeIn { 0% { opacity: 0; transform: translateY(-10px) scale(0.98); } 100% { opacity: 1; transform: translateY(0) scale(1); } } @keyframes dropdownFadeOut { 0% { opacity: 1; transform: translateY(0) scale(1); } 100% { opacity: 0; transform: translateY(-10px) scale(0.98); } } /* Enhancing the styling for the buttons in dropdown */ .search-drop-button { color: var(--text-color); margin-right: 10px; border-radius: 8px; transition: all 0.2s ease; background-color: var(--button-color); border: 1px solid var(--border-color); } .search-drop-button:hover { background-color: var(--container-button-color); transform: translateY(-2px); } .search-drop-button.active { background-color: var(--hover-color); color: var(--text-color); border: 1px solid var(--border-color); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } /* Input styling within dropdown */ .search-drop-solid .search-input { border-radius: 8px; background-color: var(--container-background); border: 1px solid var(--border-color); color: var(--text-color); transition: all 0.2s ease; padding: 10px 12px; } .search-drop-solid .search-input:focus { background-color: var(--container-background); border-color: var(--hover-color); box-shadow: 0 0 0 2px var(--hover-color); outline: none; } /* Search button styling within dropdown */ .search-drop-solid .search-btn { width: 100%; background-color: var(--hover-color); color: var(--text-color); font-weight: 600; border-radius: 8px; padding: 10px; margin-top: 4px; border: none; transition: all 0.2s ease; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } .search-drop-solid .search-btn:hover, .search-drop-solid .search-btn:focus { background-color: var(--link-color); transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); } .search-drop-solid .search-btn:active { transform: translateY(1px); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } /* Add this to your CSS */ .relative.inline-flex { display: flex; align-items: center; } /* styles.css */ .shorter-input { max-width: 88%; margin-bottom: 1px; } /* Additional mobile styling */ @media (max-width: 768px) { .search-drop-solid { width: 100%; max-width: 300px; right: 0; } /* Ensure the buttons are properly spaced */ .search-drop-button:last-child { margin-right: 0; } /* Make the icons stand out more */ .search-drop-button img { filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2)); transition: all 0.2s ease; } .search-drop-button:hover img, .search-drop-button.active img { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.3)); transform: scale(1.1); } } /* Add this to your CSS */ .relative.inline-flex { display: flex; align-items: center; } /* styles.css */ .shorter-input { max-width: 88%; margin-bottom: 1px; } /* Additional mobile styling */ @media (max-width: 768px) { .search-drop-solid { width: 100%; max-width: 300px; right: 0; } /* Ensure the buttons are properly spaced */ .search-drop-button:last-child { margin-right: 0; } /* Make the icons stand out more */ .search-drop-button img { filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2)); transition: all 0.2s ease; } .search-drop-button:hover img, .search-drop-button.active img { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.3)); transform: scale(1.1); } } /* Enhancing the styling for the buttons in dropdown */ .search-drop-button { color: var(--text-color); margin-right: 10px; border-radius: 8px; transition: all 0.2s ease; background-color: rgba(255, 255, 255, 0.05); border: 1px solid transparent; } .search-drop-button:hover { background-color: rgba(255, 255, 255, 0.1); transform: translateY(-2px); } .search-drop-button.active { background-color: var(--hover-color); color: var(--text-color); border: 1px solid rgba(255, 255, 255, 0.2); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } /* Input styling within dropdown */ .search-drop-solid .search-input { border-radius: 8px; background-color: rgba(255, 255, 255, 0.07); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--text-color); transition: all 0.2s ease; padding: 10px 12px; } .search-drop-solid .search-input:focus { background-color: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.2); box-shadow: 0 0 0 2px rgba(var(--hover-color-rgb, 0, 120, 212), 0.25); } /* Search button styling within dropdown */ .search-drop-solid .search-btn { width: 100%; background-color: var(--hover-color, #0078d4); color: #ffffff; font-weight: 600; border-radius: 8px; padding: 10px; margin-top: 4px; border: none; transition: all 0.2s ease; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } .search-drop-solid .search-btn:hover, .search-drop-solid .search-btn:focus { background-color: var(--active-color, #106ebe); transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); } .search-drop-solid .search-btn:active { transform: translateY(1px); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } /* Add this to your CSS */ .relative.inline-flex { display: flex; align-items: center; } /* styles.css */ .shorter-input { max-width: 88%; margin-bottom: 1px; } /* Additional mobile styling */ @media (max-width: 768px) { .search-drop-solid { width: 100%; max-width: 300px; right: 0; } /* Ensure the buttons are properly spaced */ .search-drop-button:last-child { margin-right: 0; } /* Make the icons stand out more */ .search-drop-button img { filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2)); transition: all 0.2s ease; } .search-drop-button:hover img, .search-drop-button.active img { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.3)); transform: scale(1.1); } } /* Enhancing the styling for the buttons in dropdown */ .search-drop-button { color: var(--text-color); margin-right: 10px; border-radius: 8px; transition: all 0.2s ease; background-color: rgba(255, 255, 255, 0.05); border: 1px solid transparent; } .search-drop-button:hover { background-color: rgba(255, 255, 255, 0.1); transform: translateY(-2px); } .search-drop-button.active { background-color: var(--hover-color); color: var(--text-color); border: 1px solid rgba(255, 255, 255, 0.2); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } /* Input styling within dropdown */ .search-drop-solid .search-input { border-radius: 8px; background-color: rgba(255, 255, 255, 0.07); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--text-color); transition: all 0.2s ease; padding: 10px 12px; } .search-drop-solid .search-input:focus { background-color: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.2); box-shadow: 0 0 0 2px rgba(var(--hover-color-rgb, 0, 120, 212), 0.25); } /* Search button styling within dropdown */ .search-drop-solid .search-btn { width: 100%; background-color: var(--hover-color, #0078d4); color: #ffffff; font-weight: 600; border-radius: 8px; padding: 10px; margin-top: 4px; border: none; transition: all 0.2s ease; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } .search-drop-solid .search-btn:hover, .search-drop-solid .search-btn:focus { background-color: var(--active-color, #106ebe); transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); } .search-drop-solid .search-btn:active { transform: translateY(1px); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } /* Add this to your CSS */ .relative.inline-flex { display: flex; align-items: center; } /* styles.css */ .shorter-input { max-width: 88%; margin-bottom: 1px; } /* Additional mobile styling */ @media (max-width: 768px) { .search-drop-solid { width: 100%; max-width: 300px; right: 0; } /* Ensure the buttons are properly spaced */ .search-drop-button:last-child { margin-right: 0; } /* Make the icons stand out more */ .search-drop-button img { filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2)); transition: all 0.2s ease; } .search-drop-button:hover img, .search-drop-button.active img { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.3)); transform: scale(1.1); } } .no-margin { margin-top: 0 !important; } .no-padding { padding-top: 0 !important; padding-bottom: 0 !important; } .chapter-select-modal { z-index: 1000; } .chapter-progress-container { width: 100%; height: 2px; background-color: rgba(128, 128, 128, 0.2); margin-top: 8px; border-radius: 1px; overflow: hidden; } .chapter-progress-bar { height: 100%; background: var(--prog-bar-color); transition: width 0.1s linear; } .current-chapter { background-color: var(--hover-color); } .chapter-info { display: flex; flex-direction: column; flex-grow: 1; position: relative; } .modal-container { background-color: var(--secondary-background); border-color: var(--border-color); color: var(--text-color); } .chapter-item { display: flex; align-items: flex-start; /* Change from center to flex-start to prevent squishing */ padding: 0.75rem; margin: 0.5rem 0; border-radius: 0.5rem; background-color: var(--container-background); transition: all 0.2s ease; cursor: pointer; /* Add cursor pointer since whole item is clickable */ } .chapter-item:hover { background-color: var(--hover-color); transform: translateX(4px); } .chapter-play-button { flex-shrink: 0; /* Prevent button from shrinking */ display: flex; align-items: center; justify-content: center; width: 2.5rem; min-width: 2.5rem; /* Add min-width to prevent shrinking */ height: 2.5rem; min-height: 2.5rem; /* Add min-height to prevent shrinking */ border-radius: 50%; background-color: var(--button-color); margin-right: 1rem; transition: all 0.2s ease; } .chapter-play-button:hover { background-color: var(--accent-color); transform: scale(1.1); } .chapter-info { display: flex; flex-direction: column; flex-grow: 1; } .chapter-title { font-weight: 500; color: var(--text-color); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; line-height: 1.2em; /* Add line height for better spacing */ max-height: 2.4em; /* 2 lines × 1.2em line height */ } .chapter-time { font-size: 0.875rem; color: var(--text-secondary-color); } input[type="range"] { accent-color: var(--prog-bar-color); /* Controls the filled part */ background: var(--unfilled-color); /* Controls the unfilled part */ } input[type="range"]::-webkit-slider-thumb { background-color: var(--thumb-color) !important; /* Controls thumb color */ /* rest of your existing thumb styles */ } input[type="range"]::-moz-range-thumb { background-color: var(--thumb-color) !important; /* Controls thumb color */ /* rest of your existing thumb styles */ } .title { color: var(--text-color) !important; } .audio-player { position: fixed; bottom: 0; left: 0; width: 100%; height: 60px; /* Initial height */ background-color: var(--secondary-background); display: flex; box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.3); z-index: 500; /* Ensure it's on top */ /* Animate the height */ transition: height 0.5s ease-in-out; } .audio-player .line-content { display: flex; justify-content: space-between; align-items: center; opacity: 1; visibility: visible; width: 100%; } .audio-player.expanded .line-content { opacity: 0; visibility: hidden; } .audio-player .top-section { opacity: 0; visibility: hidden; align-items: center; justify-content: center; display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; height: 100%; } .audio-player.expanded .top-section { opacity: 1; visibility: visible; } .audio-player .line-content .left-group { display: flex; align-items: center; flex: 0 1 auto; min-width: 0; } .audio-player .line-content .right-group { display: flex; align-items: center; } .audio-player .line-content .title { margin-right: 10px; } /* .audio-player .line-content, .audio-player .line-content .right-group { width: 100%; } */ .audio-player .line-content .ml-auto { display: flex; align-items: center; } .audio-player .line-content { padding: 10px 20px; box-sizing: border-box; } @keyframes fadeIn { from { opacity: 0; visibility: hidden; } to { opacity: 1; visibility: visible; } } .playback-speed-display { position: relative; width: 100%; padding: 10px 0; } .speed-text { position: absolute; left: 215px; top: 50%; transform: translateY(-50%); z-index: 1; color: var(--text-color); } .slider { width: 100%; display: block; margin: auto; } @media (max-width: 768px) { .speed-text { position: relative; left: auto; top: auto; transform: none; text-align: center; display: block; width: 100%; margin-bottom: 10px; } .speed-display-container { flex-direction: column-reverse; align-items: center; } } .playback-speed-display { animation: fadeIn 0.3s ease-out forwards; opacity: 0; visibility: hidden; display: flex; align-items: center; justify-content: center; } @keyframes fadeOut { from { opacity: 1; visibility: visible; } to { opacity: 0; visibility: hidden; } } .playback-speed-display.hidden { animation: fadeOut 0.3s ease-out forwards; } .playback-speed-display.visible { animation-name: fadeIn; /* Only change the animation name to trigger it */ } .audio-player .line-content .right-group { justify-content: flex-end; padding-right: 5px; flex: 1; display: flex; align-items: center; gap: 8px; } /* Seek bar container for minimized player */ .audio-player .line-content .seek-bar-container { flex: 1; max-width: 50%; min-width: 200px; margin-left: 16px; } /* Better responsive title sizing - dynamic space allocation */ .audio-player .line-content .title { flex: 1 1 auto; min-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-right: 24px; max-width: calc(100vw - 400px); /* Reserve space for controls */ } /* Responsive breakpoints - dynamic space allocation */ @media (min-width: 768px) { .audio-player .line-content .title { max-width: calc(100vw - 350px); } } @media (min-width: 1200px) { .audio-player .line-content .seek-bar-container { max-width: 45%; } .audio-player .line-content .title { max-width: calc(100vw - 320px); } } @media (min-width: 1600px) { .audio-player .line-content .seek-bar-container { max-width: 50%; } .audio-player .line-content .title { max-width: calc(100vw - 300px); } } @media (min-width: 2000px) { .audio-player .line-content .seek-bar-container { max-width: 55%; } .audio-player .line-content .title { max-width: calc(100vw - 280px); } } @media (max-width: 640px) { .audio-player .line-content .right-group { padding-right: 0; } } .audio-player.expanded { height: 100vh; /* Full viewport height when expanded */ bottom: 0; /* Keep at bottom */ align-items: center; justify-content: space-between; } .audio-player-line { /* Add these properties here */ display: flex; align-items: center; justify-content: space-between; } .audio-player .top-section, .audio-player .line-content { transition: opacity 0.5s linear; position: absolute; width: 100%; } .audio-player .top-section .retract-button { position: absolute; top: 25px; /* Adjust as needed */ left: 45px; /* Adjust as needed */ border: none; /* Remove the border */ background: none; /* Remove the background */ padding: 0; /* Remove the padding */ cursor: pointer; /* Cursor as pointer */ font-size: 48px; } .audio-player .top-section .retract-button { font-size: 48px; /* Adjust as needed */ } .audio-player .top-section { display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; height: 100%; } .audio-image-container { display: flex; justify-content: center; margin: 10px 0; } .audio-image-container img { border-radius: 8px; /* Adding rounded corners */ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); transition: transform 0.2s ease, box-shadow 0.2s ease; cursor: pointer; } .audio-image-container img:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2); } .audio-player.expanded .line-content, .audio-player.expanded .top-section { transition: visibility 0s 0.5s, opacity 0.5s linear; } .audio-player button { background-color: transparent; /* Button background color */ padding: 10px 15px; /* Padding inside the button */ margin-right: 20px; /* Margin to the right */ cursor: pointer; /* Cursor as pointer */ border-radius: 5px; /* Rounded corners */ } .audio-player .line-content .title { text-align: left; color: var(--text-color); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; flex-basis: 90%; user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; cursor: pointer; } /* Mobile/tablet progress bar container */ .audio-player .mobile-progress-container { position: absolute; top: 0; left: 0; width: 100%; height: 2px; background-color: rgba(128, 128, 128, 0.2); overflow: hidden; } .audio-player .mobile-progress-bar { height: 100%; background: var(--prog-bar-color); transition: width 0.1s linear; } /* Hide on desktop */ @media (min-width: 769px) { .audio-player .mobile-progress-container { display: none; } } /* Adjust padding for mobile/tablet */ @media (max-width: 768px) { .audio-player .line-content { padding-top: 12px; } } .audio-player .top-section { display: flex; justify-content: center; } .audio-player .top-section .title { text-align: center; margin: 20px 0; user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; cursor: pointer; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; max-width: calc(100% - 40px); font-size: 1em; /* Default for mobile */ } @media (min-width: 768px) { .audio-player .top-section .title { font-size: 1.5em; } } .audio-player .top-section .scrub-bar { display: flex; align-items: center; justify-content: center; width: 100%; padding: 10px 20px; font-size: 0.9em; margin: 10px auto; gap: 10px; /* Use gap instead of margins for better spacing */ } .audio-player .top-section .scrub-bar span { flex-shrink: 0; color: var(--text-color); min-width: 65px; /* Ensure consistent width for time displays */ text-align: center; } .audio-player .top-section .scrub-bar input[type="range"] { -webkit-appearance: none; appearance: none; width: 100%; background: transparent; /* Remove default background */ height: 4px; cursor: pointer; margin: 0; /* Remove default margins */ padding: 0; /* Remove default padding */ } /* Thumb styles */ .audio-player .top-section .scrub-bar input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 12px; height: 12px; background: #1db954; border-radius: 50%; cursor: pointer; margin-top: -4px; /* Centers the thumb on the track */ border: none; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); transition: transform 0.1s ease; } .audio-player .top-section .scrub-bar input[type="range"]::-moz-range-thumb { width: 12px; height: 12px; background: #1db954; border-radius: 50%; cursor: pointer; border: none; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); transition: transform 0.1s ease; } /* Track styles */ .audio-player .top-section .scrub-bar input[type="range"]::-webkit-slider-runnable-track { width: 100%; height: 4px; border-radius: 2px; background: var(--prog-bar-color); border: none; } .audio-player .top-section .scrub-bar input[type="range"]::-moz-range-track { width: 100%; height: 4px; border-radius: 2px; background: var(--prog-bar-color); border: none; } /* Hover effects */ .audio-player .top-section .scrub-bar input[type="range"]:hover::-webkit-slider-thumb { transform: scale(1.2); } .audio-player .top-section .scrub-bar input[type="range"]:hover::-moz-range-thumb { transform: scale(1.2); } /* Active state */ .audio-player .top-section .scrub-bar input[type="range"]:active::-webkit-slider-thumb { transform: scale(1.1); background: #1ed760; } .audio-player .top-section .scrub-bar input[type="range"]:active::-moz-range-thumb { transform: scale(1.1); background: #1ed760; } /* Container wrapper for better touch targets */ .scrub-bar-wrapper { position: relative; padding: 10px 0; flex-grow: 1; } /* Remove focus outline but keep it accessible */ .audio-player .top-section .scrub-bar input[type="range"]:focus { outline: none; } .audio-player .top-section .scrub-bar input[type="range"]:focus::-webkit-slider-thumb { box-shadow: 0 0 0 2px rgba(29, 185, 84, 0.2); } .audio-player .top-section .scrub-bar input[type="range"]:focus::-moz-range-thumb { box-shadow: 0 0 0 2px rgba(29, 185, 84, 0.2); } .lower-scrub input[type="range"].flex-grow { -webkit-appearance: none; /* Necessary to remove default styling in WebKit browsers */ width: 100%; height: 5px; /* Adjust the height of the slider track */ /* background: var(--prog-bar-color, #ddd); Default background color */ cursor: pointer; outline: none; } /* Track styles for WebKit browsers */ .lower-scrub input[type="range"].flex-grow::-webkit-slider-runnable-track { width: 100%; height: 5px; cursor: pointer; animate: 0.2s; background: linear-gradient( to right, var(--link-color, #000) 50%, var(--prog-bar-color, #ddd) 50% ); } /* Since Firefox does not support styling the filled part directly, we only set the overall track appearance */ .lower-scrub input[type="range"].flex-grow::-moz-range-track { width: 100%; height: 5px; cursor: pointer; background: var(--prog-bar-color, #ddd); } .search-bar-input { background-color: var(--container-background); color: var(--text-color); } .search-input::placeholder { color: var(--text-color); } .search-page-button { background-color: var(--button-color); color: var(--button-text-color); cursor: pointer; transition: background-color 0.3s ease; } .search-page-button:hover { background-color: var(--hover-color); } .audio-player span { text-align: left; /* Align text to the left */ color: var(--text-color); } .audio-player .top-section img { max-width: 100%; /* Ensure the image doesn't exceed its container */ height: auto; /* Maintain aspect ratio */ border-radius: 1; /* Remove the rounded effect */ } /* Small screens */ @media (max-width: 600px) { .audio-player .top-section img { width: 50vw; /* 50% of the viewport width */ } } /* Medium screens */ @media (min-width: 601px) and (max-width: 1024px) { .audio-player .top-section img { width: 40vw; /* 40% of the viewport width */ } } /* Large screens */ @media (min-width: 1025px) { .audio-player .top-section img { width: 30vw; /* 30% of the viewport width */ } } .top-section { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 9999; height: 100vh; background: var(--background-color); } .audio-player .artwork { width: 40px; /* Adjust as needed */ height: 40px; /* Adjust as needed */ border-radius: 50%; /* Make the image a circle */ object-fit: cover; /* Resize the image to cover the element */ margin-right: 10px; /* Add some space to the right of the image */ } .artwork.playing { animation: spin 3s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .episode-description-container a { color: blue; /* or any color you prefer */ text-decoration: underline; } .page_header { color: var(--text-color); } .page-paragraphs { color: var(--text-color); } .page-subtitles { color: var(--text-color); font-size: 1.9rem; } .header-text { font-weight: bold; margin-bottom: 5px; color: var(--text-color); } .item-header { display: flex; align-items: start; /* Ensure items are centered vertically */ background-color: var(--bonus-color); padding: 20px; margin-bottom: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .item-header-cover { flex-shrink: 0; /* Prevent the image from shrinking */ flex-basis: 25%; /* Set a base width */ min-width: 150px; /* Prevent the image from becoming too small */ object-fit: cover; border-radius: 5px; margin-right: 20px; height: auto; /* Adjust height automatically */ } .header-add-button-container { display: flex; /* Use flexbox to center the button */ justify-content: center; /* Center button horizontally */ width: 100%; /* Take the full width of its parent */ padding: 10px 0; /* Optional: Add some vertical padding */ width: 150px; /* Fixed width for the button */ } .header-add-button { display: flex; /* Use flexbox to center the button */ justify-content: center; /* Center button horizontally */ width: 100%; /* Take the full width of its parent */ padding: 10px 0; /* Optional: Add some vertical padding */ width: 150px; /* Fixed width for the button */ } .item-header-info { flex-grow: 1; min-width: 0; } .item-header-title { font-size: 1.5em; /* Larger title size */ font-weight: bold; margin-bottom: 10px; color: var(--text-color); margin-right: 20px; /* Adds space between title and button */ } .title-button-container { display: flex; align-items: center; width: 100%; /* Ensures the container takes full width */ } .item-header-description { color: var(--text-color); line-height: 1.4; margin-bottom: 15px; } .item-header-button { color: var(--text-color); background-color: var(--button-color); margin: 15px; } .large-card-button { color: var(--text-color); background-color: var(--button-color); margin: 15px; } .large-card-button:hover { background-color: var(--hover-color); } .large-card-button:focus { outline: none; box-shadow: 0 0 0 4px var(--border-color); } .category-box { display: inline-block; background-color: var(--accent-color); color: var(--bonus-color); padding: 5px 10px; margin: 5px; border-radius: 4px; /* Slightly rounded corners */ font-size: 0.8em; } .download-button { color: var(--button-text-color) !important; background-color: var(--button-color); border-color: var(--border-color); margin-bottom: 10px; } .save-button { color: var(--button-text-color) !important; background-color: var(--button-color); border-color: var(--border-color); } .filter-button { color: var(--button-text-color); background-color: var(--button-color); border-color: var(--border-color); } .filter-input { background-color: var(--button-color); color: var(--button-text-color); padding: 0.7rem; margin-bottom: 9px; font-size: 1rem; border-radius: 0.5rem; /* Rounded corners */ border: none; width: 157px; } .filter-input-pods { background-color: var(--button-color); color: var(--button-text-color); padding: 0.7rem; font-size: 1rem; border-radius: 0.5rem; /* Rounded corners */ border: none; width: 157px; } @media (max-width: 530px) { .filter-input { width: 100px; } } @media (max-width: 530px) { .filter-input-pods { width: 100px; } } .filter-input::placeholder { color: var(--button-text-color); opacity: 0.7; } .filter-input-pods::placeholder { color: var(--button-text-color); opacity: 0.7; } .filter-input:focus { outline: none; box-shadow: 0 0 0 2px rgba(var(--button-color), 0.5); } .filter-input-pods:focus { outline: none; box-shadow: 0 0 0 2px rgba(var(--button-color), 0.5); } .filter-dropdown-pods select { background-color: var(--button-color); /* Semi-transparent background */ color: var(--button-text-color); padding: 0.7rem; margin-bottom: 9px; font-size: 1rem; border-radius: 5px; appearance: none; -webkit-appearance: none; -moz-appearance: none; background-image: url("data:image/svg+xml;utf8,"); background-repeat: no-repeat; background-position-x: 98%; background-position-y: 50%; cursor: pointer; padding-right: 2rem; /* Increase right padding to prevent text overlap with arrow */ background-image: url("data:image/svg+xml;utf8,"); background-position: right 0.5rem center; /* Move arrow slightly more to the right */ background-repeat: no-repeat; -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important; /* Standard */ text-indent: 1px; text-overflow: ""; padding-right: 2rem; padding: 0.5rem 2rem 0.5rem 0.5rem; /* Adjusted padding to match py-2 px-2 */ line-height: 1.8rem; } .filter-dropdown select { background-color: var(--button-color); /* Semi-transparent background */ color: var(--button-text-color); padding: 0.7rem; margin-bottom: 9px; font-size: 1rem; border-radius: 5px; appearance: none; -webkit-appearance: none; -moz-appearance: none; background-image: url("data:image/svg+xml;utf8,"); background-repeat: no-repeat; background-position-x: 98%; background-position-y: 50%; cursor: pointer; padding-right: 2rem; /* Increase right padding to prevent text overlap with arrow */ background-image: url("data:image/svg+xml;utf8,"); background-position: right 0.5rem center; /* Move arrow slightly more to the right */ background-repeat: no-repeat; -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important; /* Standard */ text-indent: 1px; text-overflow: ""; padding-right: 2rem; padding: 0.5rem 2rem 0.5rem 0.5rem; /* Adjusted padding to match py-2 px-2 */ margin-bottom: 0; /* Remove margin-bottom if it's causing extra space */ line-height: 2.5rem; } .filter-dropdown select::-ms-expand { display: none; } .filter-dropdown-pods select::-ms-expand { display: none; } .filter-dropdown select:focus { outline: none; box-shadow: 0 0 0 2px rgba(var(--button-color), 0.5); } .filter-dropdown-pods select:focus { outline: none; box-shadow: 0 0 0 2px rgba(var(--button-color), 0.5); } /* Style for when dropdown is open */ .filter-dropdown select:active { background-color: var(--hover-color); } .filter-dropdown-pods select:active { background-color: var(--hover-color); } /* Style for the options in the dropdown */ .filter-dropdown select option { background-color: var(--button-color); /* Light grey background */ color: var(--text-color, #333); /* Dark grey text */ padding: 10px; } .filter-dropdown-pods select option { background-color: var(--button-color); /* Light grey background */ color: var(--text-color, #333); /* Dark grey text */ padding: 10px; } /* Style for the hover state of options */ .filter-dropdown select option:hover, .filter-dropdown select option:focus { background-color: var( --dropdown-hover-bg-color, #e0e0e0 ); /* Slightly darker on hover */ color: var(--dropdown-hover-text-color, #000); /* Black text on hover */ } .filter-dropdown-pods select option:hover, .filter-dropdown-pods select option:focus { background-color: var( --dropdown-hover-bg-color, #e0e0e0 ); /* Slightly darker on hover */ color: var(--dropdown-hover-text-color, #000); /* Black text on hover */ } /* Style for the selected option */ .filter-dropdown select option:checked { background-color: var( --dropdown-selected-bg-color, #d0d0d0 ); /* Even darker for selected */ color: var( --dropdown-selected-text-color, #000 ); /* Black text for selected */ } .filter-dropdown-pods select option:checked { background-color: var( --dropdown-selected-bg-color, #d0d0d0 ); /* Even darker for selected */ color: var( --dropdown-selected-text-color, #000 ); /* Black text for selected */ } .input-black { color: black; /* Set the text color to white to make it readable */ border-color: var(--border-color); /* Maintain consistent border styling */ } .share-button { color: var(--button-text-color); background-color: var(--button-color); border-color: var(--border-color); margin-bottom: 10px; max-width: 200px; /* Set a maximum width */ width: auto; /* Allow the button to size according to its content */ } .share-button-mobile { display: block; /* Makes the button block-level to use margin auto */ margin-left: auto; /* Centers the button horizontally */ margin-right: auto; /* Centers the button horizontally */ } .text-primary { color: var(--accent-color); } .checked\:bg-primary:checked { background-color: var(--accent-color); } .checked\:border-primary:checked { border-color: var(--accent-color); } /* Customize the focus ring */ .focus\:ring-primary:focus { --tw-ring-color: var(--accent-color); --tw-ring-opacity: 0.2; } .share:hover { background-color: var(--hover-color); } .bg-container-background { background-color: var(--secondary-background); border-color: var(--border-color); color: var(--text-color); } .podcast-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; padding: 1rem; max-width: 100%; } .podcast-grid-item { position: relative; overflow: hidden; border-radius: 0.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease, box-shadow 0.3s ease; cursor: pointer; } .touch-none { touch-action: none; } .podcast-grid-item:hover { transform: translateY(-5px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); } .podcast-image-container { position: relative; width: 100%; padding-top: 100%; /* This creates a 1:1 aspect ratio */ overflow: hidden; } .podcast-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } .podcast-grid-item:hover .podcast-image { transform: scale(1.1); } .podcast-info { position: absolute; bottom: 0; left: 0; right: 0; padding: 0.5rem; background-color: rgba(0, 0, 0, 0.7); color: white; opacity: 0; transition: opacity 0.3s ease; } .podcast-grid-item:hover .podcast-info { opacity: 1; } .podcast-title-grid { font-size: 0.875rem; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Mobile screens (3 columns) */ @media (max-width: 768px) { .podcast-grid { grid-template-columns: repeat(3, 1fr); gap: 0.5rem; padding: 0.5rem; } .podcast-title-grid { font-size: 0.75rem; } } /* Medium screens (4 columns) */ @media (min-width: 769px) and (max-width: 1200px) { .podcast-grid { grid-template-columns: repeat(4, 1fr); } } /* Large screens (5 columns) */ @media (min-width: 1201px) and (max-width: 1600px) { .podcast-grid { grid-template-columns: repeat(5, 1fr); } } /* Extra-large screens (6 columns max) */ @media (min-width: 1601px) { .podcast-grid { grid-template-columns: repeat(6, 1fr); max-width: 1800px; margin: 0 auto; } } .import-box { background-color: var(--container-background); border-color: var(--border-color); color: var(--text-color); padding: 20px; border-radius: 3px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .import-list { display: flex; align-items: center; /* Aligns items vertically in the center */ gap: 8px; } .link { color: var(--link-color); text-decoration: none; } .modal-overlay { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; background-color: var(--background-color); /* Solid background instead of transparent */ padding: 1rem; overflow-y: auto; } .modal-content { background-color: var(--secondary-background); border: 1px solid var(--border-color); border-radius: 0.75rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); width: 100%; max-width: 32rem; margin: auto; /* Center the modal */ max-height: min(95vh, 50rem); /* Limit height to 95% of viewport or 50rem */ display: flex; flex-direction: column; } .modal-body { padding: 1.5rem; overflow-y: auto; /* Enable scrolling in the body */ flex: 1; } /* Ensure the header stays fixed */ .modal-header { position: sticky; top: 0; background-color: var(--secondary-background); z-index: 1; display: flex; align-items: center; gap: 0.5rem; padding: 1rem 1.5rem; } .modal-form-group { margin-bottom: 1.5rem; } .modal-label { display: flex; align-items: center; gap: 0.5rem; color: var(--text-color); margin-bottom: 0.5rem; font-weight: 500; } .modal-select { width: 100%; padding: 0.5rem; background-color: var(--container-background); border: 1px solid var(--border-color); border-radius: 0.375rem; color: var(--text-color); } .modal-select:focus { outline: none; border-color: var(--accent-color); } .modal-button { width: 100%; display: flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.625rem 1rem; background-color: var(--button-color); color: var(--button-text-color); border-radius: 0.375rem; transition: background-color 0.2s; } .modal-welcome { display: flex; align-items: flex-start; gap: 0.75rem; color: var(--text-secondary-color); margin-bottom: 1.5rem; } .modal-container { background-color: var(--secondary-background); border-color: var(--border-color); color: var(--text-color); } .playlist-modal-background { position: fixed; top: 0; right: 0; left: 0; bottom: 0; z-index: 50; display: flex; justify-content: center; align-items: center; width: 100%; min-height: 100vh; background-color: rgba(0, 0, 0, 0.5); } .playlist-modal-container { position: relative; padding: 1rem; width: 100%; max-width: 42rem; max-height: 100%; border-radius: 0.5rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .playlist-modal-header { position: sticky; top: 0; display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.5rem; border-bottom: 1px solid var(--border-color); border-top-left-radius: 0.5rem; border-top-right-radius: 0.5rem; background-color: var(--secondary-background); } .playlist-modal-close { position: absolute; right: 0.75rem; color: var(--text-color-secondary); background: transparent; padding: 0.5rem; border-radius: 0.375rem; transition: all 0.2s; } .playlist-modal-close:hover { background-color: var(--hover-color); } .playlist-modal-content { padding: 1rem 1.5rem; overflow-y: auto; } .playlist-form { display: flex; flex-direction: column; gap: 1.5rem; } .playlist-input-group { display: flex; flex-direction: column; gap: 0.5rem; } .playlist-input-label { font-size: 0.875rem; font-weight: 500; color: var(--text-color); } .playlist-modal-input { width: 100%; padding: 0.625rem; border: 1px solid var(--border-color); border-radius: 0.375rem; background: var(--input-background); } .playlist-error-text { color: var(--error-color); font-size: 0.75rem; font-style: italic; } .playlist-submit-btn { width: 100%; padding: 0.625rem 1.25rem; font-weight: 500; border-radius: 0.375rem; background: var(--primary-color); transition: all 0.2s; } .playlist-checkbox-container { display: flex; align-items: center; gap: 0.5rem; } .playlist-duration-inputs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; } .mfa-code-box { background-color: var(--bonus-color); /* Replace with your desired color */ color: var(--text-color); /* Replace with your desired color */ } .desc-expanded { max-height: none; overflow: visible; } .desc-collapsed { max-height: 50px; /* or whatever max height you determine */ overflow: hidden; text-overflow: ellipsis; } .desc-pod-collapsed { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 5; /* Limit to 3 lines initially */ -webkit-box-orient: vertical; } .desc-pod-expanded { display: block; } .item-container { background-color: var(--container-background); border-color: var(--border-color); display: flex; justify-content: space-between; align-items: center; /* Add this line */ overflow: visible; transition: transform 0.1s ease; } .align-top-cover { align-self: flex-start; } .button-container { display: flex !important; align-items: center !important; justify-content: center; /* Centers button horizontally */ line-height: 1; } @media (max-width: 768px) { /* Adjust breakpoint as needed */ /* Styling for the button container */ .button-container { display: flex; flex-basis: 15%; /* Adjust this percentage based on your design needs */ flex-grow: 0; flex-shrink: 0; flex-direction: column; align-items: center; /* Center align the buttons vertically */ justify-content: center; /* Center align the buttons horizontally */ padding: 8px; gap: 8px; /* Space between buttons */ } .button-container button { width: 60px; /* Fixed width */ height: 60px; /* Fixed height */ border-radius: 30px; /* Fully rounded borders */ display: flex; align-items: center; justify-content: center; border: none; /* Remove border */ } } .episode-button-container { display: flex !important; align-items: center !important; justify-content: center; /* Centers button horizontally */ line-height: 1; } @media (max-width: 768px) { /* Adjust breakpoint as needed */ /* Styling for the button container */ .episode-button-container { display: flex; flex-basis: 15%; /* Adjust this percentage based on your design needs */ flex-grow: 0; flex-shrink: 0; align-items: center; /* Center align the buttons vertically */ justify-content: center; /* Center align the buttons horizontally */ padding: 8px; gap: 8px; /* Space between buttons */ } .episode-button-container button { border-radius: 30px; /* Fully rounded borders */ display: flex; align-items: center; justify-content: center; border: none; /* Remove border */ } } .item-container img { width: 100%; max-width: 200px; max-height: 200px; object-fit: cover; align-self: flex-start; margin-top: 10px; margin-bottom: 10px; border-radius: 10px; } @media (max-width: 768px) { /* Adjust breakpoint as needed */ .item-container img { max-width: 125px; /* Smaller max width for smaller screens */ max-height: 125px; /* Smaller max height for smaller screens */ width: 125px; height: 125px; } } @media (max-width: 530px) { /* Adjust breakpoint as needed */ .item-container img { max-width: 100px; /* Smaller max width for smaller screens */ max-height: 100px; /* Smaller max height for smaller screens */ width: 100px; height: 100px; } } @media (max-width: 530px) { .show-on-large { display: none; } } @media (min-width: 531px) { .show-on-large { display: block; } } /* Base styles */ .item-container-text { font-size: 1.25rem; /* example base size */ } .item-description-text { font-size: 0.9rem; /* example base size */ } @media (max-width: 530px) { .flex-col.space-y-2 > :not([hidden]) ~ :not([hidden]) { margin-top: 0 !important; margin-bottom: 0 !important; } } /* Additional styles for better alignment and consistency */ .item-container { align-items: center; /* Align items vertically */ justify-content: center; /* Center items horizontally */ } .dragging { opacity: 0.5; background-color: #f0f0f0; border: 1px dashed #ccc; } .sliding-rail-container { display: flex; overflow-x: scroll; scrollbar-width: none; /* Hide scrollbar in Firefox */ } .sliding-rail-container::-webkit-scrollbar { display: none; /* Hide scrollbar in WebKit browsers */ } .sliding-rail-item { min-width: 100px; margin: 0 10px; background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 5px; text-align: center; cursor: grab; } .item_container-text { color: var(--text-color); } .item_container-text.episode-title { font-size: 1rem; cursor: pointer; /* Base font size for larger screens */ } @media (max-width: 768px) { /* Adjust breakpoint as needed */ .item_container-text.episode-title { font-size: 1rem; /* Smaller font size for smaller screens */ } } @media (max-width: 480px) { /* Further adjustment for even smaller screens if needed */ .item_container-text.episode-title { font-size: 0.875rem; /* Even smaller font size for very small screens */ } } .item-container-text-link { color: var(--standout-color); /*background-color: var(--accent-color);*/ cursor: pointer; } .audio-top-button { color: var(--text-secondary-color); background-color: transparent; } @media (max-width: 768px) { .pronounce-mobile { width: 54px !important; height: 54px !important; } .pronounce-mobile .material-icons { font-size: 54px; } } .drag-handle { color: var(--text-secondary-color); background-color: var(--container-button-color); border-color: var(--text-secondary-color); } .drag-handle-wrapper { display: flex; align-items: center; /* Vertically centers the drag handle */ height: 100%; /* Ensure it spans the full height of the parent */ } .item-container-button { color: var(--text-secondary-color); background-color: var(--container-button-color); border-color: var(--text-secondary-color); } .search-border-bottom: 1px solid var(--border-color); background-color: var(--secondary-background); min-height: 180px; } .search-podcast-image-container { position: relative; width: 100%; height: 0; padding-top: 100%; /* 1:1 Aspect Ratio */ overflow: hidden; background-color: var(--secondary-background); } .search-podcast-image-container img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; } .search-podcast-image-container:hover img { transform: scale(1.05); } /* Force two columns on small screens */ @media (max-width: 639px) { .grid-cols-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .gap-4 { gap: 0.75rem !important; } .search-item-container h3 { font-size: 1rem; } .search-item-container .text-sm { font-size: 0.75rem; } .search-item-container button { width: 32px !important; height: 32px !important; } .search-item-container button i { font-size: 1.25rem; } } .podcast-grid-container { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; padding: 0 12px 24px; width: 100%; } /* Better hover effects and card styling */ .search-item-container { display: flex; flex-direction: column; background-color: var(--container-background); border-color: var(--border-color); transition: transform 0.2s ease, box-shadow 0.2s ease; height: 100%; width: 100%; } .search-item-container:hover { transform: translateY(-3px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2), 0 4px 6px -2px rgba(0, 0, 0, 0.1); } /* Fix text colors */ .search-item-container .item_container-text { color: var(--text-color); } /* Line clamp utility classes */ .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } /* Animation for loading spinner */ @keyframes spin { to { transform: rotate(360deg); } } .animate-spin { animation: spin 1s linear infinite; } /* Ensure grid styles always work */ .grid { display: grid; } .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } @media (min-width: 640px) { .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (min-width: 1024px) { .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } } /* Ensure images take full width and height */ .w-full { width: 100% !important; } .w-less-full { width: 100%; } .h-full { height: 100% !important; } .object-cover { object-fit: cover !important; } /* Fix aspect ratio */ [style*="aspect-ratio"] { position: relative; width: 100%; padding-bottom: 100%; /* 1:1 Aspect Ratio */ height: 0; overflow: hidden; } [style*="aspect-ratio"] img, [style*="aspect-ratio"] > * { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; } /* Fix for missing icons */ .ph { display: inline-block; } .ph-trash:before { content: "🗑️"; } .ph-plus-circle:before { content: "➕"; } .ph-spinner-gap:before { content: "⌛"; } .ph-microphone:before { content: "🎙️"; } .selector-button { background-color: var(--container-button-color); color: var(--button-text-color); transition: all 0.2s ease; } .selector-button:active { transform: scale(0.95); } /* Improved description styling */ .item-container .item_container-text { color: var(--text-color); } /* Line clamp utility classes */ .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } /* Animation for loading spinner */ @keyframes spin { to { transform: rotate(360deg); } } .animate-spin { animation: spin 1s linear infinite; } /* Responsive adjustments */ @media (max-width: 768px) { .search-item-container { margin-bottom: 1rem; } } @media (max-width: 480px) { .podcast-grid-container { gap: 10px; padding: 0 8px 16px; } .search-item-container { border-radius: 8px; } .search-item-container .p-4 { padding: 10px; } } .item-header-details { text-align: center; display: flex; } .item-header-pod { text-align: center; color: var(--text-color); } .episode-single-desc { overflow-y: auto; padding-bottom: calc( 80px + 1rem ); /* Audio player height (typically around 80px) plus some padding */ margin-bottom: 18px; /* Match the audio player height */ } /* Media query for smaller screens */ @media (max-width: 768px) { .item-container-button { border: none; /* Remove border on small screens */ } } @media (max-width: 768px) { .header-info { display: flex; justify-content: center; align-items: center; gap: 20px; /* Space between the elements */ margin: 8px auto; max-width: 90%; flex-wrap: wrap; /* Allow wrapping on very small screens */ text-align: center; } /* Remove the individual padding/margin from these elements since they're now handled by the container */ .header-info .item-container-button, .header-info .scroll-container { padding: 0; margin: 0; } /* Make sure the dropdown content still works as expected */ .scroll-container { position: relative; /* Ensure dropdown positioning works */ white-space: nowrap; overflow: visible; /* Allow dropdown to overflow */ } .item-header-pod { margin: 8px auto; /* Center the header */ max-width: 90%; /* Don't stretch full width */ border-radius: 12px; background: var(--button-background, rgba(0, 0, 0, 0.05)); transition: all 0.2s ease; cursor: pointer; position: relative; overflow: hidden; display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; background: var(--button-background, rgba(0, 0, 0, 0.05)); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); font-size: 1.2rem; /* Larger text */ font-weight: 600; } .item-header-pod:active { transform: translateY(1px); background: var(--button-hover-background, rgba(0, 0, 0, 0.08)); } /* Add subtle hover effect */ .item-header-pod:hover { background: var(--button-hover-background, rgba(0, 0, 0, 0.08)); } /* Add a subtle indicator that it's clickable */ .item-header-pod::after { content: "›"; font-size: 24px; opacity: 0.5; margin-left: 8px; } .mobile-layout .button-container { display: flex; flex-direction: row; gap: 10px; } .mobile-layout .item-header-mobile-cover-container { display: flex; justify-content: center; /* Center horizontally */ align-items: center; /* Center vertically */ border-radius: 1.25rem; } .episode-title .material-icons { margin-left: 8px; /* Adjust spacing as needed */ } .mobile-layout .item-header-mobile-cover { margin-top: 10px; flex-shrink: 0; /* Prevent the image from shrinking */ flex-basis: 40%; /* Set a base width */ min-width: 150px; /* Prevent the image from becoming too small */ max-width: 250px; /* Prevent the image from becoming too large */ object-fit: cover; border-radius: 5px; margin-right: 20px; height: auto; /* Adjust height automatically */ } .categories-container { display: flex; flex-wrap: wrap; justify-content: center; /* Center horizontally */ align-items: center; /* Center vertically */ padding-bottom: 10px; } .mobile-layout .category-box { padding-bottom: 10px; } .mobile-layout .item-header-title, .mobile-layout .item-header-description, .header-text { text-align: center; margin: 10px 0; } .mobile-layout .header-info { text-align: left; margin: 10px 0; padding-left: 4rem; font-weight: bold; margin-bottom: 5px; color: var(--text-color); } .mobile-layout .header-info-episode { text-align: center; margin: 10px 0; font-weight: bold; margin-bottom: 5px; color: var(--text-color); } .mobile-layout .button-row { display: flex; justify-content: space-between; gap: 8px; background: var(--background-color); border-radius: 8px; padding: 4px; } .mobile-layout .button-row button { flex: 1; padding: 12px 8px; border-radius: 8px; transition: all 0.2s ease; background: var(--button-background, rgba(0, 0, 0, 0.05)); border: none !important; /* Force remove any borders */ outline: none !important; /* Remove outline as well */ } .mobile-layout .episode-action-buttons { display: flex; flex-direction: column; gap: 8px; padding: 8px; background: transparent; /* Make container background transparent */ border-radius: 12px; margin-top: 8px; } /* Remove the vertical lines between buttons */ .button-row button:not(:last-child)::after { display: none; } /* Remove horizontal lines */ .button-row::before, .button-row::after { display: none; } /* Add hover effects */ .button-row button:hover { background: var(--button-hover-background, rgba(0, 0, 0, 0.1)); transform: translateY(-1px); } .button-row button:active { transform: translateY(0px); } /* Specific button styles */ .play-button { background: var(--primary-color, #3b82f6) !important; color: white !important; } .queue-button { background: var(--secondary-color, #8b5cf6) !important; color: white !important; } .save-button { background: var(--accent-color, #ef4444) !important; color: white !important; } .download-button-ep { background: var(--success-color, #10b981) !important; color: white !important; } /* Icon adjustments */ .button-row button i { margin-right: 4px; vertical-align: middle; } .mobile-layout .item-header-description { padding: 0 20px; } .mobile-layout .icon-button { margin: 0 auto; } .mobile-layout .item-header-info { display: flex; flex-direction: column; align-items: center; gap: 10px; } } .podcast-icon-button { padding: 0; margin: 0 4px; /* Adjust as needed for spacing between buttons */ width: 40px; /* Adjust as needed */ height: 40px; /* Adjust as needed */ display: flex; align-items: center; justify-content: center; border-radius: 50%; /* To ensure the buttons remain round */ } /* Podcast dropdown styles */ .podcast-dropdown-header { background-color: var(--container-background); border-color: var(--border-color); border-width: 1px; border-style: solid; border-radius: 0.5rem; margin-bottom: 0.75rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); transition: all 0.2s ease; overflow: hidden; } .podcast-dropdown-header:hover { transform: translateY(-2px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .podcast-dropdown-content { display: flex; align-items: center; padding: 0.75rem 1rem; cursor: pointer; } .podcast-dropdown-image { width: 3.5rem; height: 3.5rem; border-radius: 0.375rem; object-fit: cover; } .podcast-dropdown-info { flex-grow: 1; margin-left: 1rem; margin-right: 1rem; } .podcast-dropdown-title { font-weight: 600; font-size: 1.125rem; color: var(--text-color); margin-bottom: 0.25rem; } .podcast-dropdown-count { font-size: 0.875rem; color: var(--text-color); opacity: 0.8; } .podcast-dropdown-arrow { color: var(--text-color); transition: transform 0.3s ease; } .podcast-dropdown-arrow.expanded { transform: rotate(180deg); } .podcast-dropdown-checkbox { margin-right: 0.75rem; height: 1.25rem; width: 1.25rem; border-radius: 0.25rem; border: 2px solid var(--check-box-color); cursor: pointer; appearance: none; position: relative; background-color: var(--container-background); } .podcast-dropdown-checkbox:checked { background-color: var(--primary-color); border-color: var(--check-box-color); } .podcast-dropdown-checkbox:checked::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; /* Use mask instead of background-image */ -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l3.793-3.793a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l3.793-3.793a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E"); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; background-color: var(--check-box-color, var(--text-color)); } /* Episode list container that will be shown/hidden */ .podcast-episodes-container { max-height: 0; overflow: visible; transition: max-height 0.3s ease-out; } .podcast-episodes-container.expanded { max-height: 2000px; /* Large value to accommodate any number of episodes */ transition: max-height 0.5s ease-in; } /* Inner padding for the episode list */ .podcast-episodes-inner { padding: 0 1rem 1rem 1rem; } .item-container-alert-button { color: var(--text-color); background-color: var(--alert-color); border: 1px solid var(--border-color); border-radius: 5px; /* Adjust as needed */ padding: 10px 20px; /* Adjust as needed */ margin-left: 10px; margin-right: 10px; } button.item-container-action-button.item-container-action-button { background-color: var(--alert-color); } .text-button { border-color: var(--standout-color); } .border-color { border-color: var(--border-color); } .spinner-border.custom-spinner-color { /*background-color: var(--standout-color); !* Specify only for the spinner *!*/ } .material-icons { margin: 0; padding: 0; line-height: 1; /* Adjust the size if necessary */ } .material-standard-color { color: var(--text-color); } .material-bonus-color { color: var(--text-secondary-color); } .large-material-icons { width: 40px; height: 40px; font-size: 36px !important; /* Or whatever size you prefer */ } .home-material-icons { width: 30px; height: 35px; font-size: 33px !important; /* Or whatever size you prefer */ } .icon-space { margin-right: 10px; } .icon-size { transform: translateY(3px); margin-right: 10px; } .align-avatar { display: flex; align-items: center; } .quick-link-card { background-color: var(--container-background); border: 1px solid var(--button-color); color: var(--text-color) transition: all 0.2s ease-in-out; min-height: 70px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-decoration: none; padding: 0.5rem; } .quick-link-card:hover { transform: translateY(-2px); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .quick-link-card i { color: var(--text-color); font-size: 1.5rem; } .quick-link-card span { color: var(--text-color); margin-top: 0.25rem; font-size: 0.875rem; text-align: center; } @media (max-width: 768px) { .quick-link-card { min-height: 60px; } .quick-link-card i { font-size: 1.25rem; } .quick-link-card span { font-size: 0.75rem; } } .playlist-card { cursor: pointer; transition: all 0.3s ease; margin-bottom: 1rem; } .playlist-card:hover { transform: translateY(-4px); } .playlist-card:hover .playlist-card-stack::before { transform: translateX(-50%) rotate(2deg); } .playlist-card:hover .playlist-card-stack::after { transform: translateX(-50%) rotate(-2deg); } .playlist-card-stack { position: relative; padding: 0.5rem; } .playlist-card-stack::before, .playlist-card-stack::after { content: ""; position: absolute; background-color: var(--container-background); border-radius: 0.5rem; left: 50%; width: 95%; height: 100%; transform: translateX(-50%); transition: transform 0.3s ease; z-index: -1; } .playlist-card-stack::before { bottom: -4px; opacity: 0.7; } .playlist-card-stack::after { bottom: -8px; width: 90%; opacity: 0.4; } .playlist-card-content { background-color: var(--container-background); border-radius: 0.5rem; padding: 1.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); display: flex; align-items: flex-start; gap: 1rem; position: relative; z-index: 1; } .playlist-icon { font-size: 2rem; color: var(--text-color); flex-shrink: 0; width: 2.5rem; height: 2.5rem; display: flex; align-items: center; justify-content: center; } .playlist-info { display: flex; flex-direction: column; gap: 0.5rem; flex-grow: 1; min-width: 0; } .playlist-title { font-weight: 600; font-size: 1.125rem; color: var(--text-color); margin: 0; } .playlist-count { font-size: 0.875rem; color: var(--text-secondary-color); } .playlist-description { font-size: 0.875rem; color: var(--text-secondary-color); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; margin: 0; } .stats-card { background-color: var(--secondary-background); padding: 2rem; border-radius: 0.5rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); text-align: center; border-color: var(--border-color); } .stats-label { font-size: 1rem; color: var(--text-color); margin-bottom: 0.5rem; } .stats-value { font-size: 1.5rem; font-weight: 700; color: var(--text-secondary-color); } .stats-detail { font-size: 1.2rem; font-weight: 400; color: var(--text-secondary-color); } .large-card { background-color: var(--secondary-background); padding: 2rem; border-radius: 0.5rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); display: flex; flex-direction: column; align-items: center; justify-content: center; border-color: var(--border-color); } .large-card-image { height: auto; border-radius: 0.5rem; width: 100%; max-width: 200px; max-height: 200px; object-fit: cover; align-self: center !important; margin-top: 10px; margin-bottom: 10px; } .large-card-content { margin-top: 1rem; text-align: center; /* Center the content */ } .large-card-link { display: block; color: #3182ce; text-decoration: none; margin: 0.5rem 0; } .large-card-paragraph { margin-top: 1rem; text-align: center; /* Center the paragraph text */ } .search-container { position: relative; display: flex; justify-content: center; align-items: center; height: 100vh; padding-top: 120px; } .search-container.shrink-input { height: auto; display: block; align-items: initial; padding-top: 120px; } .search-page-input { width: 60%; transition: all 1s ease-in-out; position: absolute; top: 40%; /* Start from the center of the screen */ left: 50%; /* Start from the center of the screen */ transform: translate(-50%, -50%); /* Move up and left by half of its own width and height */ z-index: 1; /* Ensure it's on top */ } /* Styles for smaller screens */ @media (max-width: 768px) { .search-page-input { width: 90%; /* Increase width to 90% of the viewport */ } } @media (max-width: 520px) { .search-page-input { width: 100%; /* Increase width to 90% of the viewport */ } } .search-page-input.move-to-top { top: 25px; /* Move to the top of the screen */ left: 50%; /* Move to the left of the screen */ transform: translate(-50%, 0); /* Keep the element at the top */ } .episode-time-badge { color: var(--text-color); /* Dark gray text */ font-size: 0.875rem; /* Larger text */ display: inline-flex; /* Keeps elements in line but allows for internal flex properties */ align-items: center; white-space: nowrap; /* Prevent line breaks */ overflow: hidden; /* Hide overflow if needed */ text-overflow: ellipsis; /* Show ellipsis for overflow */ font-size: 14px; /* Aligns children vertically in the center */ } /* Progressively reduce text size on smaller screens */ @media (max-width: 600px) { .episode-time-badge { font-size: 13px; } } @media (max-width: 500px) { .episode-time-badge { font-size: 11px; padding: 1px 4px !important; /* Reduce padding */ } .episode-time-badge .time-icon { width: 2px !important; height: 2px !important; margin-right: 3px !important; } } @media (max-width: 400px) { .episode-time-badge { font-size: 10px; padding: 1px 3px !important; } } /* Ensure the container doesn't grow too large */ .episode-time-badge-container { max-width: 100%; display: flex; align-items: center; } .time-icon { /* Customize your SVG icon here if needed */ } .tab.active { background-color: var(--secondary-background); /* Light gray background */ color: var(--text-color); /* Darker text color */ border-bottom-color: transparent; /* Hide bottom border */ } /* Example background colors */ .bg-custom-light { background-color: var(--secondary-background); /* Adjust the color as needed */ } .bg-custom-dark { background-color: var(--background-color); /* Adjust the color as needed */ } .setting-box { background-color: var(--accent-color); border-color: var(--border-color); color: var(--text-color); border-width: 1px; } .tab-base { @apply px-6 py-3 font-medium transition-all relative; } .tab-hightlight-colors { color: var(--text-color); background-color: var(--accent-color); } .tab-unselect-colors { color: var(--text-color); background-color: var(--secondary-background); } .tab-active { @apply text-accent-color; } .tab-active::after { content: ""; @apply absolute bottom-0 left-0 w-full h-0.5 bg-accent-color; } /* Specific targeting for first and last accordion item */ #accordion-collapse > :first-child > button { border-top-left-radius: 0.75rem; /* 12px */ border-top-right-radius: 0.75rem; /* 12px */ } #accordion-collapse > :last-child > button { border-bottom-left-radius: 0.75rem; /* 12px */ border-bottom-right-radius: 0.75rem; /* 12px */ } /* Background color for accordion content */ .accordion-content { background-color: var(--secondary-background); /* Example color, adjust as needed */ color: --var(--text-color); } /* Background color for accordion arrow */ .accordion-arrow { background-color: transparent; /* Transparent background */ position: relative; /* Relative position */ width: 24px; /* Define width */ height: 24px; /* Define height */ } /* Accordion styling */ .accordion-container { @apply border-0; /* Remove default borders */ } .accordion-button { @apply w-full px-6 py-4 flex items-center justify-between transition-colors hover:bg-opacity-5 hover:bg-white; } .accordion-content { @apply px-6 py-4 bg-opacity-5 bg-black; } .accordion-arrow { @apply w-5 h-5 transition-transform duration-200 text-accent-color; } /* Remove the hover circle and replace with subtle background */ .accordion-button:hover::before { display: none; } /* Setting box container */ .setting-box { @apply bg-transparent border-0 shadow-none; } /* First and last items */ .accordion-container:first-child .accordion-button { @apply rounded-t-xl; } .accordion-container:last-child .accordion-button { @apply rounded-b-xl; } .hosts-arrow { margin-bottom: 0.2rem; margin-left: 0.5rem; } /* Hover background color for accordion arrow */ /* Hover effect for the button, with a smaller circle */ .accordion-button:hover::before { content: ""; position: absolute; top: 50%; /* Center the circle vertically relative to the button */ left: 50%; /* Center the circle horizontally relative to the button */ transform: translate(-50%, -50%); /* Offset the centering to the exact middle */ left: calc(100% - 26px); width: 30px; /* Smaller width, adjust based on your arrow or button size */ height: 30px; /* Smaller height, match width for circle */ background-color: var(--hover-color); /* Example color, adjust as needed */ border-radius: 50%; /* Rounded shape */ z-index: 0; /* Ensure it's visible above the button background but below text/icons */ } .accordion-button { @apply w-full px-6 py-4 flex items-center justify-between transition-colors hover:bg-opacity-5 hover:bg-white; } /* Styles for the select dropdown */ .theme-select-dropdown { background-color: var(--background-color); color: var(--text-color); border-color: var(--border-color); } .theme-select-dropdown:hover { border-color: var(--dropdown-hover-border-color); } .theme-select-dropdown:focus { outline-color: var(--dropdown-focus-outline-color); box-shadow: 0 0 0 3px var(--dropdown-focus-shadow-color); } .tab-background { background-color: var(--secondary-background); } /* Styles for the dropdown arrow */ .theme-dropdown-arrow { color: var(--text-color); } /* Styles for the submit button */ .theme-submit-button { background-color: var(--transparent-background); color: var(--text-color); } .theme-submit-button:hover { background-color: var(--hover-color); } .theme-submit-button:focus { outline-color: var(--button-focus-outline-color); box-shadow: 0 0 0 3px var(--button-focus-shadow-color); } .email-input { background-color: var(--background-color); /* Change to your desired background color */ color: var(--button-text-color); /* Change to your desired text color */ border: 1px solid var(--border-color); /* You can change this as needed */ padding: 8px; /* Adjust padding as needed */ border-radius: 4px; /* Rounded corners */ } .email-input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ color: var(--accent-color); /* Change to your desired placeholder text color */ opacity: 1; /* Firefox */ } .email-input:-ms-input-placeholder { /* Internet Explorer 10-11 */ color: var(--accent-color); } .email-input::-ms-input-placeholder { /* Microsoft Edge */ color: var(--accent-color); } .email-select { background-color: var(--background-color); /* Change to your desired background color */ color: var(--text-color); /* Change to your desired text color */ border: 1px solid var(--border-color); /* You can change this as needed */ padding: 8px; /* Adjust padding as needed */ border-radius: 4px; /* Rounded corners */ } .settings-button { color: var(--button-text-color); background-color: var(--button-color); border-color: var(--border-color); margin-bottom: 10px; margin-top: 10px; display: inline-block; padding: 5px 10px; /* Adjust as needed */ cursor: pointer; border-radius: 5px; /* Adjust as needed */ border: 1px solid var(--button-border-color); } /* OIDC Provider Styles */ .oidc-provider-card { margin-bottom: 1rem; background-color: var(--container-background); border: 1px solid var(--border-color); border-radius: 8px; padding: 1.5rem; } .oidc-provider-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .oidc-provider-info { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; } .oidc-info-group { padding: 0.75rem; background-color: var(--background-color); border-radius: 6px; } .oidc-info-label { font-weight: 500; color: var(--text-color); margin-bottom: 0.5rem; } .oidc-info-value { color: var(--text-color); opacity: 0.8; word-break: break-all; font-size: 0.9rem; } .oidc-empty-state { text-align: center; padding: 2rem; background-color: var(--container-background); border: 2px dashed var(--border-color); border-radius: 8px; color: var(--text-color); opacity: 0.7; } .oidc-remove-button { background-color: var(--error-color); color: var(--text-color); padding: 0.5rem 1rem; border-radius: 6px; display: flex; align-items: center; gap: 0.5rem; transition: opacity 0.2s; } .oidc-remove-button:hover { opacity: 0.9; } /* User Settings Styles */ .user-settings-container { max-width: 800px; margin: 2rem auto; padding: 2rem; background-color: var(--container-background); border-radius: 12px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .settings-header { display: flex; flex-direction: column; gap: 1rem; margin-bottom: 2rem; color: var(--text-color); } @media (min-width: 640px) { .settings-header { flex-direction: row; align-items: center; justify-content: space-between; } } .settings-header i { font-size: 1.5rem; color: var(--accent-color); } .form-group { margin-bottom: 1.75rem; background-color: var(--background-color); padding: 1.25rem; border-radius: 8px; border: 1px solid var(--border-color); } .form-label { display: block; margin-bottom: 0.75rem; font-weight: 500; color: var(--text-color); font-size: 0.95rem; } .form-input { width: 100%; padding: 0.75rem 1rem; border: 2px solid var(--button-color); border-radius: 6px; background-color: var(--container-background); color: var(--text-color); transition: all 0.2s ease; font-size: 0.95rem; } .form-input:focus { outline: none; border-color: var(--accent-color); box-shadow: 0 0 0 3px rgba(93, 128, 170, 0.1); } .form-input:hover { border-color: var(--hover-color); } .password-section { margin-top: 2.5rem; padding: 1.5rem; border-radius: 8px; background-color: var(--background-color); border: 1px solid var(--border-color); } .password-section h3 { margin-bottom: 1.5rem; color: var(--text-color); } .error-text { color: var(--error-color); font-size: 0.875rem; margin-top: 0.5rem; padding-left: 0.25rem; } .success-message { background-color: rgba(0, 204, 0, 0.1); color: var(--success-color); padding: 1rem; border-radius: 6px; margin-bottom: 1.5rem; border: 1px solid var(--success-color); display: flex; align-items: center; gap: 0.5rem; } .success-message::before { content: "✓"; font-weight: bold; } .submit-button { width: 100%; padding: 0.875rem; background-color: var(--accent-color); color: var(--text-color); border: none; border-radius: 6px; font-weight: 500; cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; gap: 0.5rem; margin-top: 2rem; } .submit-button:hover { background-color: var(--hover-color); transform: translateY(-1px); } .submit-button:active { transform: translateY(0); } .submit-button i { font-size: 1.25rem; } /* Notification settings helper text */ .form-helper-text { color: var(--text-secondary-color); opacity: 0.8; font-size: 0.875rem; margin-top: 0.25rem; display: block; } /* Modern toggle switch for notification enable/disable */ .notification-toggle-switch { position: relative; display: inline-block; width: 50px; height: 26px; } .notification-toggle-switch input { opacity: 0; width: 0; height: 0; } .notification-toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--button-color); transition: 0.3s; border-radius: 26px; border: 2px solid var(--border-color); } .notification-toggle-slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 2px; bottom: 2px; background-color: var(--text-color); transition: 0.3s; border-radius: 50%; } input:checked + .notification-toggle-slider { background-color: var(--accent-color); border-color: var(--hover-color); } input:checked + .notification-toggle-slider:before { transform: translateX(24px); } .notification-toggle-slider:hover { background-color: var(--hover-color); } /* Notification platform selector tabs */ .notification-platform-tabs { background-color: var(--secondary-background); padding: 0.25rem; border-radius: 0.5rem; width: fit-content; display: inline-flex; } .notification-platform-tab { color: var(--text-color); padding: 0.5rem 1.5rem; border-radius: 0.375rem; transition: all 0.2s ease; background-color: var(--secondary-background); border: 1px solid transparent; cursor: pointer; font-size: 0.875rem; font-weight: 500; margin-right: 0.25rem; } .notification-platform-tab:last-child { margin-right: 0; } .notification-platform-tab:hover { background-color: var(--container-button-color); transform: translateY(-1px); } .notification-platform-tab.active { background-color: var(--accent-color); color: var(--text-color); border: 1px solid var(--border-color); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } .playback-submit-button { width: 100%; padding: 0.875rem; background-color: var(--accent-color); color: var(--text-color); border: none; border-radius: 6px; font-weight: 500; cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .playback-submit-button:hover { background-color: var(--hover-color); transform: translateY(-1px); } .playback-submit-button:active { transform: translateY(0); } .playback-submit-button i { font-size: 1.25rem; } .input-button { display: none; /* Hide the default file input */ } .input-button-label { display: inline-block; padding: 10px 20px; /* Adjust as needed */ background-color: var(--button-color); color: var(--button-text-color); cursor: pointer; border-radius: 5px; /* Adjust as needed */ border: 1px solid var(--button-border-color); } .input-button-label:hover { background-color: var(--hover-color); } .links-custom a { color: #3182ce; /* or your preferred link color */ text-decoration: underline; transition: color 0.2s; } .links-custom a:hover { color: #2c5282; /* darker shade for hover */ } .dark .links-custom a { color: #63b3ed; /* lighter blue for dark mode */ } .dark .links-custom a:hover { color: #90cdf4; /* even lighter for hover in dark mode */ } // Add this to your styles.css /* OIDC Provider Buttons */ .oidc-divider { position: relative; margin: 1rem 0; } .oidc-divider-line { width: 100%; border-top: 1px solid; } .oidc-divider-text { position: relative; padding: 0 0.5rem; color: var(--text-color); } .oidc-button { display: flex; align-items: center; justify-content: center; width: 100%; padding: 0.5rem; margin: 0.25rem 0; border: 1px solid var(--border-color); border-radius: 0.375rem; transition: opacity 0.2s; } .oidc-button:hover { opacity: 0.9; } .oidc-icon { width: 1.25rem; height: 1.25rem; margin-right: 0.5rem; display: inline-flex; align-items: center; } .dropdown-content-class { top: 100%; /* Position just below the button */ right: 0; /* Align with the left edge of the button */ background-color: var(--background-color); border-color: var(--border-color); /* ... other styles ... */ } .search-dropdown-content-class { top: 100%; /* Position just below the button */ left: 0; /* Align with the left edge of the button */ background-color: var(--background-color); border-color: var(--border-color); /* ... other styles ... */ } .search-input-custom-border { border-style: solid; border-width: 1px 1px 1px 0; /* top, right, bottom, left */ border-color: var(--border-color); background-color: var(--background-color); border-radius: 0 0.5rem 0.5rem 0; /* Keep rounded right corners */ } .dropdown-container { background-color: var(--background-color); /* Remove the background-color property */ } .transition-all { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } .duration-300 { transition-duration: 300ms; } .rotate-180 { transform: rotate(180deg); } .rotate-0 { transform: rotate(0deg); } /* Optional: Add hover effect to the header */ .podcast-header:hover { background-color: rgba(0, 0, 0, 0.05); } .person-avatar { height: 6rem !important; width: 6rem !important; border-radius: 50% !important; object-fit: cover !important; border: 2px solid var(--border-color); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); transition: border-color 200ms ease; } .person-avatar:hover { border-color: var(--accent-color); } @media (prefers-color-scheme: dark) { .person-avatar { border-color: var(--border-color-dark); } .person-avatar:hover { border-color: var(--accent-color-dark); } } .buffering-indicator { background: rgba(0, 0, 0, 0.7); color: white; padding: 8px; border-radius: 4px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .dropdown-button { cursor: pointer; background-color: var(--button-color); color: var(--text-color); } .dropdown-button:hover { background-color: var(--hover-color); /* Add your hover color here */ } .dropdown-button:hover { background-color: var(--hover-color); /* Change background color on hover */ } .dropdown-option { cursor: pointer; padding: 0.5rem 1rem; border-bottom: 1px solid #eee; /* Border for each option */ transition: background-color 0.3s; /* Remove the background-color property */ color: var(--text-color); } .dropdown-option:hover { background-color: var(--hover-color); /* Add your hover color here */ } .dropdown-option:last-child { border-bottom: none; /* Remove border for the last option */ } .dropdown-option:hover { background-color: var(--hover-color); /* Change background color on hover */ } .table-header { text-transform: uppercase; background-color: var(--bonus-color); /* Light gray background for table header */ color: var(--text-color); } .table-row { background-color: var(--secondary-background); color: var(--text-color); /* Regular font color */ cursor: pointer; /* Change cursor to pointer */ } .table-row:hover { background-color: var(--secondary-background); /* Slightly darker background on hover */ } .episode-top-info { display: flex; align-items: start; margin-bottom: 20px; } .rounded-corners { border-radius: 1rem; } .episode-artwork { /* Adjust to scale with page size */ max-width: 45%; height: auto; object-fit: cover; padding-right: 10px; } .episode-mobile-artwork { /* Adjust to scale with page size */ max-width: 30%; height: auto; object-fit: cover; } .episode-details { display: flex; flex-direction: column; } .custom-volume-button { margin-top: 9px; /* Adjust the value as needed */ } .volume-control-container { position: relative; display: inline-block; } .volume-slider-container { position: absolute; left: 50%; transform: translateX(-50%); background: var(--background-color); border: 1px solid var(--border-color); border-radius: 8px; padding: 8px; width: 160px; margin-top: 8px; z-index: 100; opacity: 0; visibility: hidden; transform: translateY(-10px) translateX(-50%); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; } .volume-slider-container.visible { opacity: 1; visibility: visible; transform: translateY(0) translateX(-50%); } .volume-text { text-align: center; margin-bottom: 4px; font-size: 0.875rem; color: var(--text-color); } .volume-slider { width: 100%; -webkit-appearance: none; height: 4px; border-radius: 2px; background: var(--border-color); outline: none; } .volume-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--button-color); cursor: pointer; transition: background-color 0.2s; } .volume-slider::-webkit-slider-thumb:hover { background: var(--hover-color); } .speed-control-container { position: relative; display: inline-block; } .speed-slider-container { position: absolute; left: 50%; transform: translateX(-50%); background: var(--background-color); border: 1px solid var(--border-color); border-radius: 8px; padding: 8px; width: 160px; margin-top: 8px; z-index: 100; opacity: 0; visibility: hidden; transform: translateY(-10px) translateX(-50%); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); } /* Force consistent container behavior regardless of screen size */ @media (min-width: 768px) { .speed-slider-container { position: absolute !important; left: 50% !important; transform: translateX(-50%) !important; width: 160px !important; } .speed-control-content { width: 100% !important; position: relative !important; } .speed-text { position: relative !important; left: auto !important; transform: none !important; color: var(--text-color); } } .speed-slider-container.visible { opacity: 1; visibility: visible; transform: translateY(0) translateX(-50%); } .speed-control-content { background: var(--background-color); border-radius: 6px; padding: 8px; width: 100%; } .speed-text { text-align: center; margin-bottom: 4px; font-size: 0.875rem; } .speed-slider { width: 100%; -webkit-appearance: none; height: 4px; border-radius: 2px; background: var(--border-color); outline: none; } .speed-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--button-color); cursor: pointer; transition: background-color 0.2s; } .speed-slider::-webkit-slider-thumb:hover { background: var(--hover-color); } .podcast-title { /* Larger font size for podcast title */ font-size: 1.75rem; /* Adjust as needed */ color: var(--text-color); font-weight: bold; /* Make the title bold */ margin-bottom: 0.5rem; /* Add some space below the title */ } .hover-pointer-podcast-name { cursor: pointer; } .episode-title { font-size: 1.5rem; /* Adjust as needed */ color: var(--text-color); font-weight: bold; /* Make the title bold */ margin-bottom: 0.5rem; /* Add some space below the title */ } .episode-duration, .episode-release-date { /* Style for duration and release date */ font-size: 1rem; /* Adjust as needed */ color: var(--text-color); font-style: italic; /* Make the text italic */ } .episode-action-buttons { display: flex; justify-content: space-between; } .episode-action-buttons button { background-color: transparent; color: var(--text-color); padding: 2px 5px 10px 15px; /* Add padding to the bottom */ font-size: 1rem; font-weight: 500; /* Equivalent to font-medium */ line-height: normal; flex-grow: 1; /* Make buttons take up equal space */ text-align: center; transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out; /* Add transition for background-color */ border-radius: 5px; /* Round the corners */ } .no-media-warning { display: inline-flex; align-items: center; background-color: var(--background-accent); border-radius: 0.5rem; padding: 0.5rem 1rem; margin-top: 0.5rem; margin-left: 0.5rem; font-size: 0.875rem; } .context-button-wrapper { position: relative; } .dropdown-content-class { position: absolute; top: 100%; right: 0; margin-top: 0.5rem; background-color: #fff; /* Adjust as needed */ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); z-index: 1000; } /* Ensure the dropdown is on top of other elements */ .item-container { overflow: visible !important; } /* If needed, adjust the container of the ContextButton */ .button-container { position: static !important; } .episode-action-buttons .no-media-warning { display: flex; justify-content: center; align-items: center; text-align: center; width: 100%; } .episode-action-buttons i.material-icons { position: relative; top: 7px; /* Adjust this value as needed */ margin-right: 5px; /* Add some space to the right of the icon */ } .episode-action-buttons button:focus { color: var(--text-color); outline: none; border-color: var(--focus-color); /* Change border color on focus */ } .episode-action-buttons button:active { color: var(--text-color); border-color: var(--active-color); /* Change border color on active */ } .episode-description { max-width: 800px; /* Adjust this value based on your desired width */ margin-left: auto; margin-right: auto; /* Other styles as needed */ } .episode-single-desc { margin-top: 12px; /* Add space above the description */ /* ...rest of the styles */ } .qr-code-container { /* Center content */ display: flex; justify-content: center; align-items: center; /* White background */ background-color: white; /* Rounded corners */ border-radius: 8px; /* Optional: Set a specific size for the QR code container if necessary */ width: auto; height: auto; /* Add some padding around the QR code for better aesthetics */ padding: 10px; /* Drop shadow for depth (optional) */ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .progress-bar-container { height: 10px; /* Or whatever height you prefer */ background-color: var(--unfilled-color); /* Background of the unfulfilled part */ width: 100%; /* Or adjust to fit your layout */ border-radius: 5px; /* Optional, for rounded corners */ } .progress-bar { height: 100%; background-color: var(--prog-bar-color); /* Or any color you prefer */ border-radius: 5px; /* Match container's border-radius */ transition: width 0.5s ease-in-out; /* Smooth transition for changes, optional */ } .cursor-pointer:hover { cursor: pointer; } .time-display { display: inline-block; width: 80px; /* Adjust this width based on the maximum expected length of the time strings */ text-align: center; } .loading-container { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; font-family: system-ui, -apple-system, sans-serif; } .loading-spinner { width: 48px; height: 48px; margin-bottom: 16px; border: 4px solid var(--text-color-dim); border-left-color: var(--accent-color); border-radius: 50%; position: relative; animation: spinner-rotate 1s linear infinite; } .loading-spinner::before { content: ""; position: absolute; top: -4px; left: -4px; right: -4px; bottom: -4px; border: 4px solid transparent; border-right-color: var(--accent-color-dim); border-radius: 50%; animation: spinner-pulse 1s cubic-bezier(0.4, 0, 0.2, 1) infinite; } .loading-container p { color: var(--text-color); font-size: 1.1rem; margin: 0; opacity: 0; animation: text-fade 400ms ease forwards; animation-delay: 200ms; } .auth-error-container { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 50vh; padding: 2rem; gap: 2rem; } .auth-error-message { display: flex; flex-direction: column; align-items: center; gap: 1rem; text-align: center; color: var(--error-color); } .auth-error-message .material-icons { font-size: 3rem; } .auth-error-button { padding: 0.75rem 1.5rem; background-color: var(--primary-color); color: white; border-radius: 0.375rem; text-decoration: none; transition: background-color 0.2s; } .auth-error-button:hover { background-color: var(--primary-color-dark); } /* Add these styles to your main.css or create a new notification_center.css file */ /* Add to your existing CSS */ /* Toast Container */ .toast-container { position: fixed; top: 5rem; right: 1rem; max-width: 24rem; z-index: 1000; display: flex; flex-direction: column; gap: 0.75rem; pointer-events: none; } /* Individual Toast Item */ .toast-item { transform-origin: top right; pointer-events: auto; transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out, max-height 0.3s ease-in-out, margin-bottom 0.3s ease-in-out; will-change: transform, opacity; } /* Toast Visibility States with Explicit Animations */ .toast-visible { opacity: 1; transform: translateX(0); max-height: 200px; margin-bottom: 0.75rem; animation: slideIn 0.3s ease-in-out forwards; } .toast-hidden { opacity: 0; transform: translateX(100%); max-height: 0; margin-bottom: 0; animation: slideOut 0.3s ease-in-out forwards; } /* Toast Styling */ .toast { padding: 0.75rem 1rem; border-radius: 0.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08); background-color: var(--container-background); width: 100%; } .toast-info { border-left: 4px solid #3b82f6; /* Blue accent */ } .toast-error { border-left: 4px solid #ef4444; /* Red accent */ } .toast-message { font-size: 0.875rem; line-height: 1.25rem; color: var(--text-color); word-break: break-word; } /* Toast Dismiss Button */ .toast-dismiss { cursor: pointer; opacity: 0.6; transition: opacity 0.2s; margin-left: auto; padding-left: 0.5rem; background: transparent; border: none; color: var(--text-color); } .toast-dismiss:hover { opacity: 1; } /* Define explicit keyframe animations */ @keyframes slideIn { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } } @keyframes slideOut { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(100%); } } /* Notification bell styling */ .notification-bell { color: var(--text-color); background-color: var(--container-button-color); transition: background-color 0.2s ease; } /* Notification badge */ .notification-badge { background-color: var(--alert-color); color: var(--text-color); min-width: 18px; height: 18px; } /* Notification dropdown */ .notification-dropdown { background-color: var(--container-background); border: 1px solid var(--border-color); border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); animation: slideDown 0.2s ease-out forwards; } @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* Notification header */ .notification-header { background-color: var(--secondary-background); color: var(--text-color); border-bottom: 1px solid var(--border-color); border-top-left-radius: 8px; border-top-right-radius: 8px; } /* Notification items */ .notification-item { background-color: var(--background-color); border-left: 3px solid var(--accent-color); margin-bottom: 8px; transition: background-color 0.2s ease; } .notification-item:hover { background-color: var(--secondary-background); } /* Status styles */ .notification-status { font-weight: 500; } .status-pending { background-color: var(--accent-color); color: var(--text-color); } .status-started { background-color: var(--prog-bar-color); color: var(--text-color); } .status-success { background-color: var(--success-color); color: var(--text-color); } .status-failed { background-color: var(--error-color); color: var(--text-color); } /* Progress bar */ .notification-progress-bar-container { background-color: var(--secondary-background); border-radius: 4px; overflow: hidden; } .progress-bar-fill { background-color: var(--prog-bar-color); transition: width 0.3s ease; } .progress-text { color: var(--text-color); font-size: 0.75rem; } /* Message notifications */ .notification-error { border-left-color: var(--error-color); } .notification-error i { color: var(--error-color); } .notification-info { border-left-color: var(--success-color); } .notification-info i { color: var(--success-color); } /* Empty state */ .notification-empty { color: var(--accent-color); font-style: italic; } /* Scrollbar styling for notification dropdown */ .notification-dropdown::-webkit-scrollbar { width: 6px; } .notification-dropdown::-webkit-scrollbar-track { background: var(--secondary-background); border-radius: 8px; } .notification-dropdown::-webkit-scrollbar-thumb { background-color: var(--accent-color); border-radius: 8px; } /* Mobile responsiveness */ @media (max-width: 640px) { .notification-dropdown { width: 100%; max-width: calc(100vw - 20px); right: -5px; } } @keyframes spinner-rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes spinner-pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.5; } 100% { transform: scale(1); opacity: 1; } } @keyframes text-fade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes frameAnimation { 0%, 100% { opacity: 0; } 50% { opacity: 1; } } .loading-animation { display: flex; justify-content: center; align-items: start; width: 100%; height: 100vh; position: relative; padding-top: 6vh; } .loading-animation div { position: absolute; width: min( 500px, 80vw ); /* Use the smaller of 500px or 80% viewport width */ height: min(500px, 80vw); /* Keep it square by using same value */ background-size: cover; animation: frameAnimation 3s infinite; } /* Media query for smaller screens */ @media (max-width: 640px) { .loading-animation { padding-top: 4vh; /* Reduce top padding on mobile */ } .loading-animation div { width: 85vw; /* Take up most of the screen width */ height: 85vw; /* Keep it square */ } } /* Animation frames stay the same */ .loading-animation .frame1 { background-image: url("./assets/images/og-same.png"); animation-delay: -4.5s; } /* ... rest of the frames ... */ .loading-animation .frame2 { background-image: url("./assets/images/low5.png"); animation-delay: -4s; } .loading-animation .frame3 { background-image: url("./assets/images/low4.png"); animation-delay: -3.5s; } .loading-animation .frame4 { background-image: url("./assets/images/low3.png"); animation-delay: -3s; } .loading-animation .frame5 { background-image: url("./assets/images/low2.png"); animation-delay: -2.5s; } .loading-animation .frame6 { background-image: url("./assets/images/low1.png"); animation-delay: -2s; } /* History Filter Styling */ .page-tab-indicator { position: absolute; top: -1.5rem; left: 1rem; padding: 0.25rem 0.75rem; border-radius: 0.5rem 0.5rem 0 0; border: 1px solid var(--border-color); border-bottom: 0; font-size: 0.75rem; font-weight: 500; background-color: var(--background-color); color: var(--text-secondary-color); display: flex; align-items: center; gap: 0.25rem; } .tab-icon { color: var(--accent-color); } .search-input { width: 100%; height: 100%; padding-left: 1rem; padding-right: 3rem; font-size: 1rem; border-radius: 0.75rem 0 0 0.75rem; border: 1px solid var(--border-color); border-right: 1px solid var(--border-color); background-color: var(--background-color); color: var(--text-color); outline: none; position: relative; z-index: 1; transition: border-color 0.2s; } .search-input:focus { border-color: var(--accent-color); z-index: 10; } .search-input::placeholder { color: var(--text-secondary-color); } .search-icon { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); font-size: 1.25rem; color: var(--text-secondary-color); pointer-events: none; } .sort-dropdown { appearance: none; width: 100%; height: 100%; padding-left: 1rem; padding-right: 3rem; font-size: 0.875rem; font-weight: 500; border-radius: 0 0.75rem 0.75rem 0; border: 1px solid var(--border-color); border-left: 0; background-color: var(--background-color); color: var(--text-color); outline: none; position: relative; z-index: 1; transition: border-color 0.2s; } .sort-dropdown:focus { border-color: var(--accent-color); z-index: 10; } .dropdown-arrow { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); font-size: 1.125rem; color: var(--text-secondary-color); pointer-events: none; } .filter-chip { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border-radius: 9999px; border: none; background-color: var(--background-color); color: var(--text-color); transition: all 0.2s; white-space: nowrap; min-height: 44px; cursor: pointer; } .filter-chip:hover { background-color: var(--hover-color); color: var(--text-color); } .filter-chip-active { background-color: var(--accent-color); color: var(--text-color); } .filter-chip-active:hover { background-color: var(--accent-color); color: var(--text-color); } .filter-chip-alert { background-color: var(--alert-color); color: var(--text-color); } .filter-chip-alert:hover { background-color: var(--alert-color); color: var(--text-color); } .downloads-search-input { width: 100%; height: 48px; padding-left: 1rem; padding-right: 3rem; font-size: 1rem; border-radius: 0.75rem; border: 1px solid var(--border-color); background-color: var(--background-color); color: var(--text-color); outline: none; transition: border-color 0.2s; } .downloads-search-input:focus { border-color: var(--accent-color); } .downloads-search-input::placeholder { color: var(--text-secondary-color); } /* Bulk Episode Management Styles */ .bulk-select-button { padding: 0.25rem 0.75rem; font-size: 0.75rem; border-radius: 9999px; background-color: var(--container-background); color: var(--text-color); border: 1px solid var(--accent-color); cursor: pointer; transition: background-color 0.2s; } .bulk-select-button:hover { background-color: var(--hover-color); } .bulk-filter-button { padding: 0.25rem 0.75rem; font-size: 0.75rem; border-radius: 9999px; background-color: var(--secondary-background); color: var(--text-color); border: 1px solid var(--accent-color); cursor: pointer; transition: background-color 0.2s; } .bulk-filter-button:hover { background-color: var(--hover-color); } .bulk-action-success { padding: 0.25rem 0.75rem; font-size: 0.75rem; border-radius: 0.375rem; background-color: var(--success-color); color: white; border: none; cursor: pointer; transition: opacity 0.2s; } .bulk-action-success:hover { opacity: 0.8; } .bulk-action-primary { padding: 0.25rem 0.75rem; font-size: 0.75rem; border-radius: 0.375rem; background-color: var(--link-color); color: white; border: none; cursor: pointer; transition: opacity 0.2s; } .bulk-action-primary:hover { opacity: 0.8; } .episode-select-button { padding: 0.125rem 0.25rem; font-size: 0.75rem; border-radius: 0.25rem; background-color: var(--accent-color); color: white; border: none; cursor: pointer; transition: opacity 0.2s; } .episode-select-button:hover { opacity: 0.8; } /* Merged Podcast Styles */ .merged-podcast-item { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem; background-color: var(--secondary-background); border-radius: 0.375rem; margin-bottom: 0.5rem; } .merged-podcast-name { font-size: 0.875rem; color: var(--text-color); } .unmerge-button { font-size: 0.75rem; padding: 0.25rem 0.5rem; border-radius: 0.25rem; }