Files
Huntarr.io/frontend/static/css/requestarr-discover.css
2026-02-01 19:19:00 -05:00

3432 lines
67 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Requestarr Discover - Horizontal Scrolling Style */
/* Space above sponsor = space below (20px); minimal top so it matches bottom */
#requestarr-section .requestarr-content {
padding: 0 30px 20px 30px;
width: 100%;
max-width: none !important;
margin: 0;
overflow: visible;
box-sizing: border-box;
}
/* Global Search Bar - Full Width (8px below to match app pages) */
.global-search-bar {
position: relative;
width: 100%;
margin-bottom: 8px;
}
.global-search-bar i {
position: absolute;
left: 20px;
top: 50%;
transform: translateY(-50%);
color: #888;
font-size: 18px;
}
.global-search-bar input {
width: 100%;
padding: 16px 20px 16px 55px;
background: rgba(255, 255, 255, 0.08);
border: 2px solid rgba(255, 255, 255, 0.15);
border-radius: 12px;
color: #fff;
font-size: 16px;
transition: all 0.2s;
box-sizing: border-box;
}
.global-search-bar input:focus {
outline: none;
border-color: #667eea;
background: rgba(255, 255, 255, 0.12);
}
.global-search-bar input::placeholder {
color: #888;
}
/* Search Results - Full Width Grid Layout */
#search-results-view {
width: 100%;
max-width: none !important;
margin: 0;
padding: 20px 0 30px; /* Extra padding for hover scale effects */
box-sizing: border-box;
}
.search-results-title {
font-size: 1.3rem;
font-weight: 600;
margin-bottom: 25px;
color: var(--text-primary, #e0e0e0);
}
.search-results-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 20px;
padding: 0;
width: 100%;
max-width: none !important;
box-sizing: border-box;
justify-items: start;
overflow: visible; /* Allow cards to extend on hover */
}
/* Search results media cards - Let grid control width */
.search-results-grid .media-card {
width: 150px;
}
.requestarr-view {
display: none;
}
.requestarr-view.active {
display: block;
}
.page-title {
font-size: 1.3rem;
font-weight: 600;
margin-bottom: 20px;
color: var(--text-primary, #e0e0e0);
}
.view-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 30px;
gap: 20px;
}
/* Search Bar */
.search-bar {
position: relative;
flex: 0 0 350px;
}
.search-bar i {
position: absolute;
left: 15px;
top: 50%;
transform: translateY(-50%);
color: #666;
}
.search-bar input {
width: 100%;
padding: 12px 15px 12px 45px;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 8px;
color: #fff;
font-size: 14px;
}
.search-bar input:focus {
outline: none;
border-color: #667eea;
background: rgba(255, 255, 255, 0.08);
}
/* Carousel Sections (8px spacing to match app pages) */
.carousel-section {
margin-bottom: 8px;
padding-top: 8px;
}
.section-title {
font-size: 1.1rem;
font-weight: 600;
margin-bottom: 12px;
color: var(--text-primary, #e0e0e0);
}
.carousel-container {
position: relative;
width: 100%;
max-width: 100%;
overflow: visible; /* Allow cards to extend outside on hover */
}
/* Carousel Arrows - Fixed at container edges within viewport */
.carousel-arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 45px;
height: 45px;
background: rgba(0, 0, 0, 0.85);
border: none;
border-radius: 50%;
color: #fff;
font-size: 20px;
cursor: pointer;
z-index: 20;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s; /* Smooth transition for opacity and hover */
opacity: 0.8;
}
.carousel-arrow:hover {
background: rgba(0, 0, 0, 0.95);
opacity: 1 !important; /* Override hiding on hover */
transform: translateY(-50%) scale(1.1);
}
.carousel-arrow.left {
left: 10px;
}
.carousel-arrow.right {
right: 10px;
}
.carousel-arrow:disabled {
opacity: 0.3;
cursor: not-allowed;
}
/* Media Carousel - Horizontal Scrolling */
.media-carousel {
display: flex;
gap: 20px;
overflow-x: auto;
overflow-y: visible; /* Allow cards to extend above carousel */
scroll-behavior: smooth;
padding: 20px 60px 30px; /* Extra padding top and bottom for hover scale */
margin: 0 -60px; /* Negative margin to align content */
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE/Edge */
}
.media-carousel::-webkit-scrollbar {
display: none; /* Chrome/Safari */
}
/* Media Card */
.media-card {
flex: 0 0 150px;
cursor: pointer;
border-radius: 8px;
overflow: hidden;
transition: transform 0.2s, border 0.2s;
background: rgba(255, 255, 255, 0.05);
border: 2px solid transparent;
position: relative;
}
.media-card:hover {
transform: translateY(-5px) scale(1.05);
border: 2px solid #f59e0b; /* Huntarr gold/amber color */
}
.media-card-poster {
width: 150px;
height: 225px;
position: relative;
overflow: hidden;
border-radius: 8px;
background: #000;
/* Blackout background for missing posters */
background-image: url('../images/blackout.jpg');
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
/* Hover Overlay with Info */
.media-card-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0.9) 100%);
display: flex;
flex-direction: column;
justify-content: space-between; /* Space between title (top) and bottom content */
padding: 15px;
opacity: 0;
transition: opacity 0.3s;
z-index: 5;
pointer-events: none;
overflow: hidden; /* Prevent overflow */
}
.media-card:hover .media-card-overlay {
opacity: 1;
pointer-events: auto;
}
/* Title stays at top */
.media-card-overlay-title {
font-size: 15px;
font-weight: 600;
color: #fff;
line-height: 1.3;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
flex-shrink: 0; /* Don't shrink title */
}
/* Content section with year, description, and button at bottom */
.media-card-overlay-content {
display: flex;
flex-direction: column;
gap: 8px;
flex-shrink: 0; /* Don't shrink content */
max-height: calc(100% - 60px); /* Reserve space for title */
overflow: hidden;
}
.media-card-overlay-year {
font-size: 12px;
color: rgba(255, 255, 255, 0.7);
font-weight: 500;
flex-shrink: 0; /* Don't shrink year */
}
.media-card-overlay-description {
font-size: 11px;
color: rgba(255, 255, 255, 0.8);
line-height: 1.4;
display: -webkit-box;
-webkit-line-clamp: 4; /* Increased from 3 to 4 lines */
-webkit-box-orient: vertical;
overflow: hidden;
margin-bottom: 6px; /* Reduced gap before button */
flex-shrink: 1; /* Allow description to shrink if needed */
}
/* Request Button at Bottom */
.media-card-request-btn {
width: 100%;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); /* Huntarr gold gradient */
color: #fff;
border: none;
padding: 10px 16px;
border-radius: 6px;
font-size: 13px;
font-weight: 600;
cursor: pointer;
transition: background 0.2s, transform 0.2s;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4);
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
}
.media-card-request-btn:hover {
background: linear-gradient(135deg, #d97706 0%, #b45309 100%);
transform: scale(1.02);
box-shadow: 0 4px 12px rgba(245, 158, 11, 0.6);
}
.media-card-request-btn i {
font-size: 11px;
}
.media-card-poster img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* Media Card Status Badge (upper right corner) */
.media-card-status-badge {
position: absolute;
top: 8px;
right: 8px;
border-radius: 50%;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
}
.media-card-status-badge i {
color: #fff;
font-size: 12px;
}
/* Complete - Green with checkmark */
.media-card-status-badge.complete {
background: #22c55e;
border: 2px solid #16a34a;
}
/* Partial/Missing - Orange with exclamation */
.media-card-status-badge.partial {
background: #f97316;
border: 2px solid #ea580c;
}
/* Available - Blue with download icon */
.media-card-status-badge.available {
background: #3b82f6;
border: 2px solid #2563eb;
}
/* Cooldown - Red with stop sign */
.media-card-status-badge.cooldown {
background: #ef4444;
border: 2px solid #dc2626;
}
/* When media is in cooldown: hide Request button (badge alone indicates cooldown) */
.media-card.in-cooldown .media-card-request-btn {
display: none;
}
/* In cooldown or in library: no button, so push title and text lower in the overlay */
.media-card.in-cooldown .media-card-overlay,
.media-card.in-library .media-card-overlay {
justify-content: flex-end;
}
.media-card.in-cooldown .media-card-overlay-content,
.media-card.in-library .media-card-overlay-content {
padding-bottom: 8px;
}
.media-card.in-library .media-card-request-btn {
display: none;
}
.media-card.in-library .media-card-overlay-description {
max-height: none;
-webkit-line-clamp: 5; /* Limit to 5 lines even when expanded */
margin-bottom: 4px; /* Very small gap at bottom */
}
.media-card-info {
padding: 10px;
}
.media-card-title {
font-size: 13px;
font-weight: 500;
color: #fff;
margin-bottom: 4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.media-card-meta {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
color: #888;
gap: 8px;
}
.media-card-meta.no-hide .media-card-rating {
flex: 0;
justify-content: flex-end;
}
.media-card-year {
color: #888;
flex-shrink: 0;
}
.media-card-rating {
display: flex;
align-items: center;
gap: 4px;
color: #fbbf24;
flex: 1;
justify-content: center;
}
.media-card-rating i {
font-size: 11px;
}
.media-card-hide-btn {
background: none;
border: none;
color: #666;
cursor: pointer;
padding: 4px 6px;
border-radius: 4px;
transition: all 0.2s;
font-size: 12px;
flex-shrink: 0;
}
.media-card-hide-btn:hover {
color: #ef4444;
background: rgba(239, 68, 68, 0.1);
}
.media-card-hide-btn i {
font-size: 12px;
}
/* Smooth card removal animation */
.media-card {
transition: opacity 0.3s ease, transform 0.3s ease;
}
/* Loading Spinner */
.loading-spinner {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 60px 20px;
color: #888;
width: 100%;
grid-column: 1 / -1; /* Span all columns in the grid */
}
.loading-spinner i {
font-size: 48px;
margin-bottom: 15px;
}
.loading-spinner p {
font-size: 16px;
}
/* Modal */
.media-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
display: none;
align-items: center;
justify-content: center;
}
.media-modal[style*="display: flex"] {
display: flex !important;
}
/* Mobile responsive - remove sidebar offset on small screens */
@media (max-width: 768px) {
.media-modal {
margin-left: 0;
}
}
.modal-backdrop {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.9);
backdrop-filter: blur(10px);
z-index: 999;
}
/* Blur everything behind Requestarr modal (full page incl. top bar) */
body.requestarr-modal-open .app-container {
filter: blur(10px);
}
body.requestarr-modal-open {
overflow: hidden;
}
.modal-content {
position: relative;
background: rgba(15, 23, 42, 0.95);
border-radius: 12px;
max-width: 600px;
width: auto;
max-height: 90vh;
overflow-y: auto;
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
margin: 0 20px;
}
.modal-body {
border: 2px solid #f59e0b;
border-radius: 12px;
overflow: hidden;
background: rgba(15, 23, 42, 0.95);
position: relative;
z-index: 1000;
}
.modal-close {
display: none !important;
}
.modal-backdrop-image {
position: relative;
height: 400px;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.modal-backdrop-image::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 150px;
background: linear-gradient(to bottom, transparent, rgba(15, 23, 42, 0.95));
}
.modal-info {
padding: 30px;
display: flex;
gap: 30px;
margin-top: -100px;
position: relative;
}
.modal-poster {
flex-shrink: 0;
width: 200px;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.modal-poster img {
width: 100%;
display: block;
}
.modal-details {
flex: 1;
}
.modal-title {
font-size: 32px;
font-weight: 700;
margin-bottom: 15px;
color: #fff;
}
.modal-meta {
display: flex;
gap: 15px;
align-items: center;
margin-bottom: 15px;
font-size: 14px;
color: #888;
}
.modal-meta .rating {
display: flex;
align-items: center;
gap: 5px;
color: #fbbf24;
}
.modal-genres {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 20px;
}
.genre-tag {
padding: 5px 12px;
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 15px;
font-size: 12px;
color: #ccc;
}
.modal-overview {
font-size: 15px;
line-height: 1.6;
color: #ccc;
margin-bottom: 30px;
}
/* Request Section in Modal */
.modal-request-section {
background: rgba(255, 255, 255, 0.05);
padding: 20px;
border-radius: 8px;
margin-bottom: 30px;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.modal-request-section h3 {
font-size: 18px;
font-weight: 600;
margin-bottom: 15px;
color: #fff;
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
margin-bottom: 8px;
font-size: 14px;
color: #ccc;
}
.modal-select {
width: 100%;
padding: 10px 15px;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 6px;
color: #fff;
font-size: 14px;
}
.modal-select:focus {
outline: none;
border-color: #667eea;
}
.modal-request-btn {
width: 100%;
padding: 12px 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border: none;
border-radius: 6px;
color: #fff;
font-size: 16px;
font-weight: 600;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
transition: opacity 0.2s;
}
.modal-request-btn:hover:not(:disabled) {
opacity: 0.9;
}
.modal-request-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.modal-status {
margin-top: 15px;
padding: 10px;
border-radius: 6px;
font-size: 14px;
display: none;
}
.modal-status.show {
display: block;
}
.modal-status.success {
background: rgba(16, 185, 129, 0.1);
border: 1px solid #10b981;
color: #10b981;
}
.modal-status.error {
background: rgba(239, 68, 68, 0.1);
border: 1px solid #ef4444;
color: #ef4444;
}
/* Cast Section */
.modal-extra-info {
margin-top: 30px;
}
.cast-section h4 {
font-size: 18px;
font-weight: 600;
margin-bottom: 15px;
color: #fff;
}
.cast-list {
display: flex;
gap: 15px;
overflow-x: auto;
}
.cast-member {
flex-shrink: 0;
width: 100px;
text-align: center;
}
.cast-avatar {
width: 80px;
height: 80px;
border-radius: 50%;
overflow: hidden;
margin: 0 auto 10px;
background: rgba(255, 255, 255, 0.1);
}
.cast-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.cast-name {
font-size: 13px;
font-weight: 500;
color: #fff;
margin-bottom: 5px;
}
.cast-character {
font-size: 11px;
color: #888;
}
/* Request Modal - Overseerr Style */
.request-modal-header {
position: relative;
height: 180px;
background-size: cover;
background-position: center;
border-radius: 12px 12px 0 0;
overflow: hidden;
}
.request-modal-header::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 100%;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0.5) 50%, rgba(15, 23, 42, 0.95) 100%);
}
.request-modal-header-overlay {
position: absolute;
bottom: 15px;
left: 25px;
right: 25px;
z-index: 2;
}
.request-modal-title {
font-size: 13px;
font-weight: 600;
color: rgba(255, 255, 255, 0.7);
margin-bottom: 5px;
}
.request-modal-subtitle {
font-size: 22px;
font-weight: 700;
color: #fff;
margin: 0;
}
.modal-close-btn {
display: none !important;
}
.request-modal-content {
padding: 20px 25px 25px 25px;
background: rgba(15, 23, 42, 0.95);
}
/* Season Selection Table */
.season-selection-container {
margin-bottom: 30px;
}
.season-selection-header {
display: grid;
grid-template-columns: 60px 2fr 1fr 1fr;
gap: 15px;
padding: 12px 15px;
background: rgba(255, 255, 255, 0.05);
border-radius: 8px 8px 0 0;
font-size: 12px;
font-weight: 600;
color: rgba(255, 255, 255, 0.6);
text-transform: uppercase;
}
.season-selection-list {
border: 2px solid #f59e0b;
border-radius: 0 0 8px 8px;
overflow: hidden;
}
.season-row {
display: grid;
grid-template-columns: 60px 2fr 1fr 1fr;
gap: 15px;
padding: 15px;
align-items: center;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
transition: all 0.2s;
background: rgba(255, 255, 255, 0.02);
}
.season-row:last-child {
border-bottom: none;
}
.season-row:not(.requested):hover {
background: rgba(255, 255, 255, 0.05);
}
.season-row.requested {
opacity: 0.4;
}
/* Toggle Switch */
.season-toggle {
position: relative;
display: inline-block;
width: 44px;
height: 24px;
cursor: pointer;
}
.season-toggle input {
opacity: 0;
width: 0;
height: 0;
}
.toggle-slider {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(255, 255, 255, 0.2);
transition: 0.3s;
border-radius: 24px;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.toggle-slider:before {
position: absolute;
content: "";
height: 18px;
width: 18px;
left: 3px;
bottom: 2px;
background-color: white;
transition: 0.3s;
border-radius: 50%;
}
input:checked + .toggle-slider {
background-color: #f59e0b;
border-color: #f59e0b;
}
input:checked + .toggle-slider:before {
transform: translateX(20px);
}
input:disabled + .toggle-slider {
opacity: 0.5;
cursor: not-allowed;
}
.season-name {
font-size: 15px;
font-weight: 500;
color: #fff;
}
.season-episodes {
font-size: 14px;
color: rgba(255, 255, 255, 0.7);
}
.season-status .status-badge {
padding: 4px 12px;
border-radius: 12px;
font-size: 12px;
font-weight: 500;
}
.status-badge.requested {
background: rgba(34, 197, 94, 0.2);
color: #22c55e;
border: 1px solid rgba(34, 197, 94, 0.3);
}
.status-badge.not-requested {
background: rgba(148, 163, 184, 0.2);
color: #94a3b8;
border: 1px solid rgba(148, 163, 184, 0.3);
}
/* Advanced Section */
.request-advanced-section {
background: rgba(255, 255, 255, 0.03);
padding: 15px;
border-radius: 8px;
border: 1px solid rgba(255, 255, 255, 0.1);
margin-bottom: 15px;
}
.advanced-title {
font-size: 14px;
font-weight: 600;
color: #fff;
margin-bottom: 15px;
}
.advanced-field {
margin-bottom: 12px;
}
.advanced-field:last-child {
margin-bottom: 0;
}
.advanced-field label {
display: block;
font-size: 13px;
font-weight: 500;
color: rgba(255, 255, 255, 0.7);
margin-bottom: 8px;
}
.advanced-select,
.advanced-input {
width: 100%;
padding: 10px 14px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 6px;
color: #fff;
font-size: 14px;
transition: all 0.2s;
}
.advanced-select:focus,
.advanced-input:focus {
outline: none;
border-color: #f59e0b;
background: rgba(255, 255, 255, 0.12);
}
/* Request modal dropdown options: ensure visible text on dark background */
.advanced-select option,
.modal-select option {
background: #1e293b;
color: #fff;
padding: 8px;
}
/* Modal Actions */
.request-modal-actions {
display: flex;
gap: 12px;
justify-content: flex-end;
}
.modal-btn {
padding: 12px 24px;
border: none;
border-radius: 6px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
}
.modal-btn.cancel-btn {
background: rgba(255, 255, 255, 0.1);
color: #fff;
}
.modal-btn.cancel-btn:hover {
background: rgba(255, 255, 255, 0.15);
}
.modal-btn.request-btn {
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
color: #fff;
}
.modal-btn.request-btn:hover:not(.disabled) {
background: linear-gradient(135deg, #d97706 0%, #b45309 100%);
transform: scale(1.02);
box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);
}
.modal-btn.request-btn.disabled {
opacity: 0.4;
cursor: not-allowed;
pointer-events: none;
}
.modal-btn.request-btn.disabled:hover {
box-shadow: none !important;
transform: none !important;
}
/* History View */
.history-container {
display: flex;
flex-direction: column;
gap: 15px;
}
.history-item {
display: flex;
gap: 15px;
padding: 15px;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 8px;
}
.history-poster {
width: 60px;
height: 90px;
border-radius: 4px;
overflow: hidden;
background: rgba(255, 255, 255, 0.1);
}
.history-poster img {
width: 100%;
height: 100%;
object-fit: cover;
}
.history-info {
flex: 1;
}
.history-title {
font-size: 16px;
font-weight: 600;
color: #fff;
margin-bottom: 5px;
}
.history-meta {
font-size: 13px;
color: #888;
margin-bottom: 8px;
}
.history-status {
display: inline-block;
padding: 4px 10px;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
font-size: 12px;
color: #667eea;
}
/* Settings View */
.requestarr-settings-container {
max-width: 800px;
margin: 0 auto;
}
.settings-card {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
padding: 30px;
margin-bottom: 20px;
}
.settings-card h3 {
font-size: 20px;
font-weight: 600;
color: #fff;
margin-bottom: 10px;
}
.settings-description {
color: rgba(255, 255, 255, 0.6);
font-size: 14px;
margin-bottom: 30px;
line-height: 1.6;
}
.settings-field {
margin-bottom: 25px;
}
.settings-field:last-of-type {
margin-bottom: 30px;
}
.settings-field label {
display: block;
font-size: 14px;
font-weight: 500;
color: rgba(255, 255, 255, 0.9);
margin-bottom: 8px;
}
.settings-field small {
display: block;
font-size: 12px;
color: rgba(255, 255, 255, 0.5);
margin-top: 6px;
}
.settings-card-description {
color: rgba(255, 255, 255, 0.6);
font-size: 14px;
line-height: 1.5;
margin: -5px 0 20px 0;
}
.blacklisted-genres-pills {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 10px;
min-height: 24px;
}
.blacklisted-genre-pill {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
background: rgba(239, 68, 68, 0.15);
border: 1px solid rgba(239, 68, 68, 0.4);
border-radius: 6px;
color: #fca5a5;
font-size: 0.8125rem;
}
.blacklisted-genre-pill .remove-pill {
cursor: pointer;
color: #fca5a5;
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 2px;
transition: color 0.2s;
}
.blacklisted-genre-pill .remove-pill:hover {
color: #fff;
}
/* Custom Region Select Dropdown */
.custom-select-wrapper {
position: relative;
}
.custom-select-display {
width: 100%;
padding: 12px 16px;
background: #2d3748;
border: 1px solid #4a5568;
border-radius: 8px;
color: #fff;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
display: flex;
justify-content: space-between;
align-items: center;
}
.custom-select-display:hover {
background: #374151;
border-color: #718096;
}
.custom-select-display i {
color: #9ca3af;
transition: transform 0.2s;
}
.custom-select-display.open i {
transform: rotate(180deg);
}
.custom-select-dropdown {
position: absolute;
top: calc(100% + 4px);
left: 0;
right: 0;
background: #2d3748;
border: 1px solid #4a5568;
border-radius: 8px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
z-index: 1000;
overflow: hidden;
}
.custom-select-search {
padding: 8px;
border-bottom: 1px solid #4a5568;
}
.custom-select-search input {
width: 100%;
padding: 8px 12px;
background: #1e293b;
border: 1px solid #4a5568;
border-radius: 6px;
color: #fff;
font-size: 13px;
}
.custom-select-search input:focus {
outline: none;
border-color: #f59e0b;
}
.custom-select-list {
max-height: 240px; /* 6 items × 40px = 240px */
overflow-y: auto;
}
.custom-select-option {
padding: 12px 16px;
color: #fff;
font-size: 14px;
cursor: pointer;
transition: background 0.2s;
}
.custom-select-option:hover {
background: #374151;
}
.custom-select-option.selected {
background: #3b82f6;
color: #fff;
}
/* Scrollbar styling for custom select */
.custom-select-list::-webkit-scrollbar {
width: 8px;
}
.custom-select-list::-webkit-scrollbar-track {
background: #1e293b;
}
.custom-select-list::-webkit-scrollbar-thumb {
background: #4a5568;
border-radius: 4px;
}
.custom-select-list::-webkit-scrollbar-thumb:hover {
background: #718096;
}
/* Old settings-select (keep for cooldown dropdown) */
.settings-select {
width: 100%;
padding: 12px 16px;
background: #2d3748;
border: 1px solid #4a5568;
border-radius: 8px;
color: #fff;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
}
.settings-select option {
padding: 12px 16px;
background: #2d3748;
color: #fff;
font-size: 14px;
}
.settings-select:hover {
background: #374151;
border-color: #718096;
}
.settings-select:focus {
outline: none;
border-color: #f59e0b;
background: #374151;
}
.settings-actions {
display: flex;
justify-content: flex-end;
gap: 12px;
padding-top: 20px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.btn-primary {
padding: 12px 24px;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
color: #fff;
border: none;
border-radius: 8px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
}
.btn-primary:hover:not(:disabled) {
background: linear-gradient(135deg, #d97706 0%, #b45309 100%);
transform: scale(1.02);
box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);
}
.btn-primary:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.btn-primary i {
margin-right: 6px;
}
.btn-secondary {
padding: 12px 24px;
background: #475569;
color: #fff;
border: none;
border-radius: 8px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
}
.btn-secondary:hover:not(:disabled) {
background: #64748b;
transform: scale(1.02);
}
.btn-secondary:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.btn-secondary i {
margin-right: 6px;
}
/* Language Filter Styles */
.language-select-wrapper {
position: relative;
}
.language-tags {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 10px;
min-height: 30px;
}
.language-tag {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
background: #374151;
border: 1px solid #4b5563;
border-radius: 6px;
font-size: 13px;
color: #e5e7eb;
}
.language-tag-remove {
cursor: pointer;
color: #9ca3af;
transition: color 0.2s;
}
.language-tag-remove:hover {
color: #ef4444;
}
.settings-input {
width: 100%;
padding: 12px;
background: #2d3748;
border: 1px solid #4a5568;
border-radius: 8px;
color: #fff;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
}
.settings-input:hover {
border-color: #718096;
}
.settings-input:focus {
outline: none;
border-color: #f59e0b;
}
.language-dropdown {
position: absolute;
top: calc(100% + 8px);
left: 0;
right: 0;
background: #2d3748;
border: 1px solid #4a5568;
border-radius: 8px;
max-height: 300px;
overflow: hidden;
z-index: 1000;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
}
.language-search {
width: 100%;
padding: 12px;
background: #1e293b;
border: none;
border-bottom: 1px solid #4a5568;
color: #fff;
font-size: 14px;
}
.language-search:focus {
outline: none;
}
.language-list {
max-height: 250px;
overflow-y: auto;
}
.language-item {
padding: 12px 16px;
cursor: pointer;
color: #e5e7eb;
font-size: 14px;
transition: background 0.2s;
}
.language-item:hover {
background: #374151;
}
.language-item.selected {
background: #3b82f6;
color: #fff;
}
/* Responsive */
@media (max-width: 768px) {
.requestarr-content {
padding: 20px 15px;
}
.view-header {
flex-direction: column;
align-items: stretch;
}
.search-bar {
flex: 1;
}
.media-carousel {
padding: 10px 50px; /* Less padding on mobile */
margin: 0 -50px;
}
.carousel-arrow {
width: 38px;
height: 38px;
font-size: 16px;
}
.carousel-arrow.left {
left: 5px;
}
.carousel-arrow.right {
right: 5px;
}
.media-card {
flex: 0 0 120px;
}
.media-card-poster {
width: 120px;
height: 180px;
}
.modal-info {
flex-direction: column;
}
.modal-poster {
width: 150px;
margin: 0 auto;
}
}
/* Series Status Boxes */
.series-status-box {
display: flex;
align-items: center;
gap: 12px;
margin: 15px 0;
padding: 16px;
border-radius: 8px;
font-size: 14px;
font-weight: 500;
}
.series-status-box i {
font-size: 24px;
flex-shrink: 0;
}
.series-status-box > div {
flex: 1;
text-align: center;
}
.status-available {
background: rgba(34, 197, 94, 0.15);
border: 1px solid rgba(34, 197, 94, 0.3);
}
.status-available i {
color: #22c55e;
}
.status-available .status-title {
color: #22c55e;
font-weight: 600;
}
.status-requestable {
background: rgba(59, 130, 246, 0.15);
border: 1px solid rgba(59, 130, 246, 0.3);
}
.status-requestable i {
color: #3b82f6;
}
.status-requestable .status-title {
color: #3b82f6;
font-weight: 600;
}
.status-missing-episodes {
background: rgba(249, 115, 22, 0.15);
border: 1px solid rgba(249, 115, 22, 0.3);
}
.status-missing-episodes i {
color: #f97316;
}
.status-missing-episodes .status-title {
color: #f97316;
font-weight: 600;
}
.status-requested {
background: rgba(239, 68, 68, 0.15);
border: 1px solid rgba(239, 68, 68, 0.3);
}
.status-requested i {
color: #ef4444;
}
.status-requested .status-title {
color: #ef4444;
font-weight: 600;
}
.status-text {
color: rgba(255, 255, 255, 0.7);
font-size: 13px;
font-weight: 400;
margin-top: 3px;
}
/* Toast Notifications - Upper Right Corner */
.requestarr-notification {
position: fixed;
top: 20px;
right: 20px;
background: #1e1e28;
color: white;
padding: 16px 24px;
border-radius: 12px;
display: flex;
align-items: center;
gap: 12px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
z-index: 10000;
min-width: 300px;
max-width: 500px;
transform: translateX(120%);
transition: transform 0.3s ease, opacity 0.3s ease;
opacity: 0;
border-left: 4px solid;
}
.requestarr-notification.show {
transform: translateX(0);
opacity: 1;
}
.requestarr-notification.slideOut {
transform: translateX(120%);
opacity: 0;
}
.requestarr-notification i {
font-size: 24px;
flex-shrink: 0;
}
.requestarr-notification span {
flex: 1;
font-size: 15px;
line-height: 1.4;
}
.requestarr-notification.success {
border-left-color: #10b981;
background: #1a2e25;
}
.requestarr-notification.success i {
color: #10b981;
}
.requestarr-notification.error {
border-left-color: #ef4444;
background: #2e1a1a;
}
.requestarr-notification.error i {
color: #ef4444;
}
.requestarr-notification.info {
border-left-color: #3b82f6;
background: #1a2333;
}
.requestarr-notification.info i {
color: #3b82f6;
}
/* Success state for request button */
.request-btn.success {
background: linear-gradient(135deg, #10b981, #059669) !important;
color: white !important;
cursor: default !important;
}
/* ============================================
MOVIES GRID VIEW
============================================ */
.movies-controls {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
margin: 20px 0;
padding: 0 20px;
gap: 15px;
}
.instance-selector-container {
flex-shrink: 0;
}
.instance-select {
min-width: 200px;
}
.sort-dropdown {
flex-shrink: 0;
min-width: 250px;
}
.control-select {
width: 100%;
padding: 10px 16px;
background: #2d3748;
border: 1px solid #4a5568;
border-radius: 8px;
color: #fff;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
}
.control-select:hover {
background: #374151;
border-color: #718096;
}
.control-select:focus {
outline: none;
border-color: #f59e0b;
}
.control-select option {
background: #2d3748;
color: #fff;
padding: 8px;
}
.filter-button {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 20px;
background: #2d3748;
border: 1px solid #4a5568;
border-radius: 8px;
color: #fff;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
margin-left: auto;
}
.filter-button:hover {
background: #374151;
border-color: #718096;
}
.filter-button i {
font-size: 14px;
}
/* Mobile responsive controls */
@media (max-width: 768px) {
.movies-controls {
flex-direction: column;
align-items: stretch;
padding: 0 15px;
margin: 15px 0;
gap: 12px;
}
.instance-selector-container,
.sort-dropdown {
width: 100%;
min-width: unset;
}
.instance-select,
.control-select {
width: 100%;
}
.filter-button {
width: 100%;
justify-content: center;
margin-left: 0;
}
}
.media-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 20px;
padding: 0 20px 40px 20px;
min-height: 400px;
}
@media (max-width: 768px) {
.media-grid {
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 15px;
}
}
.load-more-container {
display: flex;
justify-content: center;
padding: 20px;
margin-bottom: 40px;
}
.btn-load-more {
padding: 12px 32px;
background: linear-gradient(135deg, #f59e0b, #d97706);
border: none;
border-radius: 8px;
color: white;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s;
}
.btn-load-more:hover {
background: linear-gradient(135deg, #d97706, #b45309);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);
}
.btn-load-more:active {
transform: translateY(0);
}
/* Filter Modal */
.filter-modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 10000;
align-items: center;
justify-content: center;
}
.filter-modal .modal-backdrop {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(4px);
}
.filter-modal-content {
position: relative;
background: #1a1d2e;
border-radius: 16px;
width: 90%;
max-width: 600px;
max-height: 85vh;
display: flex;
flex-direction: column;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
z-index: 10001;
}
.filter-modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24px 28px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.filter-modal-header h2 {
font-size: 1.5rem;
font-weight: 600;
color: #e0e0e0;
margin: 0;
}
.filter-modal-header .modal-close {
background: none;
border: none;
color: #888;
font-size: 24px;
cursor: pointer;
transition: color 0.2s;
padding: 0;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
}
.filter-modal-header .modal-close:hover {
color: #e0e0e0;
}
.filter-modal-body {
padding: 24px 28px;
overflow-y: auto;
flex: 1;
}
.filter-active-count {
margin-bottom: 24px;
padding: 12px 16px;
background: rgba(102, 126, 234, 0.15);
border: 1px solid rgba(102, 126, 234, 0.3);
border-radius: 8px;
color: #667eea;
font-weight: 600;
text-align: center;
}
.filter-section {
margin-bottom: 28px;
}
.filter-section:last-child {
margin-bottom: 0;
}
.filter-section h3 {
font-size: 1.1rem;
font-weight: 600;
color: #e0e0e0;
margin: 0 0 12px 0;
}
.filter-date-range {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
}
.filter-input-group {
display: flex;
flex-direction: column;
gap: 8px;
}
.filter-input-group label {
font-size: 0.9rem;
color: #888;
font-weight: 500;
}
.filter-input, .filter-select {
padding: 12px 16px;
background: rgba(255, 255, 255, 0.08);
border: 2px solid rgba(255, 255, 255, 0.15);
border-radius: 8px;
color: #fff;
font-size: 15px;
transition: all 0.2s;
}
.filter-input:focus, .filter-select:focus {
outline: none;
border-color: #667eea;
background: rgba(255, 255, 255, 0.12);
}
.filter-select {
cursor: pointer;
}
.filter-select[multiple] {
min-height: 180px;
}
.filter-select option {
padding: 8px;
background: #1a1d2e;
color: #e0e0e0;
}
.filter-select option:checked {
background: #667eea;
}
.filter-range-display {
margin-bottom: 12px;
padding: 10px 14px;
background: rgba(255, 255, 255, 0.05);
border-radius: 6px;
color: #888;
font-size: 14px;
text-align: center;
}
.filter-range-inputs {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.filter-input-small {
padding: 10px 14px;
background: rgba(255, 255, 255, 0.08);
border: 2px solid rgba(255, 255, 255, 0.15);
border-radius: 8px;
color: #fff;
font-size: 15px;
width: 100px;
transition: all 0.2s;
}
.filter-input-small:focus {
outline: none;
border-color: #667eea;
background: rgba(255, 255, 255, 0.12);
}
.filter-range-inputs span {
color: #888;
font-size: 14px;
}
.filter-modal-footer {
display: flex;
justify-content: space-between;
padding: 20px 28px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
gap: 12px;
}
.filter-btn-secondary, .filter-btn-primary {
padding: 12px 24px;
border-radius: 8px;
font-size: 15px;
font-weight: 600;
cursor: pointer;
border: none;
transition: all 0.2s;
flex: 1;
}
.filter-btn-secondary {
background: rgba(255, 255, 255, 0.08);
color: #e0e0e0;
}
.filter-btn-secondary:hover {
background: rgba(255, 255, 255, 0.12);
}
.filter-btn-primary {
background: #667eea;
color: white;
}
.filter-btn-primary:hover {
background: #5568d3;
transform: translateY(-1px);
}
/* Filter Side Panel - Overseerr Style */
.filter-panel {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 10000;
}
.filter-panel .filter-backdrop {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.75);
backdrop-filter: blur(4px);
}
.filter-panel-content {
position: absolute;
right: 0;
top: 0;
height: 100%;
width: 100%;
max-width: 440px;
background: #1a1d2e;
box-shadow: -4px 0 24px rgba(0, 0, 0, 0.5);
display: flex;
flex-direction: column;
transform: translateX(100%);
transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
}
.filter-panel[style*="flex"] .filter-panel-content,
.filter-panel.show .filter-panel-content {
transform: translateX(0);
}
.filter-panel-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24px 24px 20px 24px;
padding-top: 70px; /* Add space for top navigation bar */
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
flex-shrink: 0;
}
.filter-panel-header h2 {
font-size: 1.25rem;
font-weight: 700;
color: #e5e7eb;
margin: 0;
}
.filter-close {
background: none;
border: none;
color: #9ca3af;
font-size: 24px;
cursor: pointer;
transition: all 0.2s;
padding: 6px;
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 6px;
}
.filter-close:hover {
color: #f59e0b;
background: rgba(245, 158, 11, 0.1);
transform: scale(1.05);
}
.filter-close:active {
transform: scale(0.95);
}
.filter-panel-body {
padding: 20px 24px;
overflow-y: auto;
flex: 1;
}
.filter-active-badge {
margin-bottom: 20px;
padding: 10px 14px;
background: rgba(245, 158, 11, 0.15);
border: 1px solid rgba(245, 158, 11, 0.3);
border-radius: 6px;
text-align: center;
}
.filter-active-badge span {
color: #fbbf24;
font-size: 0.875rem;
font-weight: 600;
}
.filter-group {
margin-bottom: 24px;
}
.filter-group:last-child {
margin-bottom: 0;
}
.filter-label {
display: block;
font-size: 0.875rem;
font-weight: 600;
color: #e5e7eb;
margin-bottom: 10px;
}
/* Hide Available Toggle */
.filter-toggle-label {
display: flex;
align-items: center;
gap: 12px;
cursor: pointer;
padding: 12px;
background: rgba(31, 41, 55, 0.3);
border: 1px solid rgba(75, 85, 99, 0.3);
border-radius: 8px;
transition: all 0.2s;
}
.filter-toggle-label:hover {
background: rgba(31, 41, 55, 0.5);
border-color: rgba(245, 158, 11, 0.3);
}
.filter-checkbox {
width: 20px;
height: 20px;
cursor: pointer;
accent-color: #f59e0b;
border-radius: 4px;
}
.filter-toggle-text {
color: #e5e7eb;
font-size: 0.9rem;
font-weight: 500;
user-select: none;
}
.filter-sublabel {
display: block;
font-size: 0.75rem;
color: #9ca3af;
margin-bottom: 6px;
font-weight: 500;
}
.filter-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
.filter-col {
display: flex;
flex-direction: column;
}
/* Hidden Media Unhide Button */
.media-card-unhide-btn {
position: absolute;
top: 10px;
right: 10px;
background: rgba(15, 23, 42, 0.8);
border: 1px solid rgba(34, 197, 94, 0.7);
color: #22c55e;
border-radius: 999px;
padding: 6px 8px;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: transform 0.2s ease, box-shadow 0.2s ease;
z-index: 2;
}
.media-card-unhide-btn:hover {
transform: translateY(-1px);
box-shadow: 0 6px 14px rgba(34, 197, 94, 0.25);
}
.filter-date-input,
.filter-select-compact,
.filter-number-input {
padding: 10px 12px;
background: rgba(31, 41, 55, 0.5);
border: 1px solid rgba(75, 85, 99, 0.5);
border-radius: 6px;
color: #e5e7eb;
font-size: 0.875rem;
transition: all 0.2s;
width: 100%;
}
.filter-date-input:focus,
.filter-select-compact:focus,
.filter-number-input:focus {
outline: none;
border-color: #f59e0b;
background: rgba(31, 41, 55, 0.7);
}
.filter-select-compact {
cursor: pointer;
appearance: none;
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
background-position: right 0.5rem center;
background-repeat: no-repeat;
background-size: 1.5em 1.5em;
padding-right: 2.5rem;
}
/* Genre List - Compact Pills */
.filter-genre-list {
display: flex;
flex-wrap: wrap;
gap: 8px;
max-height: 200px;
overflow-y: auto;
padding: 2px;
}
.filter-genre-item {
padding: 8px 14px;
background: rgba(31, 41, 55, 0.5);
border: 1px solid rgba(75, 85, 99, 0.5);
border-radius: 6px;
color: #9ca3af;
font-size: 0.875rem;
cursor: pointer;
transition: all 0.2s;
user-select: none;
}
.filter-genre-item:hover {
background: rgba(31, 41, 55, 0.7);
border-color: rgba(245, 158, 11, 0.5);
}
.filter-genre-item.selected {
background: rgba(245, 158, 11, 0.2);
border-color: #f59e0b;
color: #fbbf24;
font-weight: 600;
}
/* Range Inputs */
.filter-range-text {
font-size: 0.8125rem;
color: #6b7280;
margin-bottom: 10px;
padding: 8px 10px;
background: rgba(31, 41, 55, 0.3);
border-radius: 4px;
text-align: center;
}
.filter-range-compact {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.filter-number-input {
width: 80px;
flex-shrink: 0;
}
.filter-range-separator {
color: #6b7280;
font-size: 0.875rem;
}
.filter-range-unit {
color: #6b7280;
font-size: 0.875rem;
}
/* Footer Buttons */
.filter-panel-footer {
display: flex;
gap: 12px;
padding: 16px 24px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
flex-shrink: 0;
}
.filter-btn-clear,
.filter-btn-apply {
flex: 1;
padding: 11px 20px;
border-radius: 6px;
font-size: 0.875rem;
font-weight: 600;
cursor: pointer;
border: none;
transition: all 0.2s;
}
.filter-btn-clear {
background: rgba(31, 41, 55, 0.5);
color: #e5e7eb;
border: 1px solid rgba(75, 85, 99, 0.5);
}
.filter-btn-clear:hover {
background: rgba(31, 41, 55, 0.7);
border-color: rgba(75, 85, 99, 0.7);
}
.filter-btn-apply {
background: #f59e0b;
color: white;
}
.filter-btn-apply:hover {
background: #d97706;
}
/* Mobile Responsive */
@media (max-width: 768px) {
.filter-panel-content {
max-width: 100%;
}
.filter-panel-body {
padding: 16px 20px;
}
.filter-panel-header {
padding: 16px 20px;
padding-top: 70px; /* Add space for top navigation bar on mobile */
}
.filter-number-input {
width: 70px;
}
}
/* Scrollbar Styling */
.filter-panel-body::-webkit-scrollbar,
.filter-genre-list::-webkit-scrollbar {
width: 8px;
}
.filter-panel-body::-webkit-scrollbar-track,
.filter-genre-list::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.2);
border-radius: 4px;
}
.filter-panel-body::-webkit-scrollbar-thumb,
.filter-genre-list::-webkit-scrollbar-thumb {
background: rgba(245, 158, 11, 0.3);
border-radius: 4px;
}
.filter-panel-body::-webkit-scrollbar-thumb:hover,
.filter-genre-list::-webkit-scrollbar-thumb:hover {
background: rgba(245, 158, 11, 0.5);
}
/* Genre Dropdown - Overseerr Style */
.selected-genres-container {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: 10px;
padding: 8px;
background: rgba(31, 41, 55, 0.3);
border-radius: 6px;
min-height: 38px;
}
.selected-genre-pill {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
background: rgba(245, 158, 11, 0.2);
border: 1px solid #f59e0b;
border-radius: 6px;
color: #fbbf24;
font-size: 0.8125rem;
font-weight: 600;
}
.selected-genre-pill .remove-genre {
cursor: pointer;
color: #fbbf24;
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
transition: color 0.2s;
}
.selected-genre-pill .remove-genre:hover {
color: #e0e7eb;
}
.genre-select-wrapper {
position: relative;
}
.genre-search-input {
width: 100%;
padding: 10px 12px;
background: rgba(31, 41, 55, 0.5);
border: 1px solid rgba(75, 85, 99, 0.5);
border-radius: 6px;
color: #e5e7eb;
font-size: 0.875rem;
cursor: pointer;
transition: all 0.2s;
}
.genre-search-input:focus {
outline: none;
border-color: #f59e0b;
background: rgba(31, 41, 55, 0.7);
}
.genre-dropdown {
position: absolute;
top: 100%;
left: 0;
right: 0;
margin-top: 4px;
background: #1f2937;
border: 1px solid rgba(75, 85, 99, 0.5);
border-radius: 6px;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
z-index: 100;
max-height: 250px;
overflow-y: auto;
}
.genre-list {
padding: 6px;
}
.genre-item {
padding: 10px 12px;
color: #9ca3af;
font-size: 0.875rem;
cursor: pointer;
border-radius: 4px;
transition: all 0.2s;
user-select: none;
}
.genre-item:hover {
background: rgba(245, 158, 11, 0.1);
color: #e5e7eb;
}
.genre-item.selected {
background: rgba(245, 158, 11, 0.2);
color: #fbbf24;
font-weight: 600;
}
.genre-item.selected::after {
content: '✓';
float: right;
color: #f59e0b;
font-weight: bold;
}
/* Scrollbar for dropdown */
.genre-dropdown::-webkit-scrollbar {
width: 8px;
}
.genre-dropdown::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.2);
border-radius: 4px;
}
.genre-dropdown::-webkit-scrollbar-thumb {
background: rgba(245, 158, 11, 0.3);
border-radius: 4px;
}
.genre-dropdown::-webkit-scrollbar-thumb:hover {
background: rgba(245, 158, 11, 0.5);
}
/* Update Filter Panel Colors to Huntarr Gold */
.filter-active-badge {
margin-bottom: 20px;
padding: 10px 14px;
background: rgba(245, 158, 11, 0.15);
border: 1px solid rgba(245, 158, 11, 0.3);
border-radius: 6px;
text-align: center;
}
.filter-active-badge span {
color: #fbbf24;
font-size: 0.875rem;
font-weight: 600;
}
.filter-date-input:focus,
.filter-select-compact:focus,
.filter-number-input:focus {
outline: none;
border-color: #f59e0b;
background: rgba(31, 41, 55, 0.7);
}
/* Selected Genre Pills - Gold Theme */
.selected-genre-pill {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
background: rgba(245, 158, 11, 0.2);
border: 1px solid #f59e0b;
border-radius: 6px;
color: #fbbf24;
font-size: 0.8125rem;
font-weight: 600;
}
.selected-genre-pill .remove-genre {
cursor: pointer;
color: #fbbf24;
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
transition: color 0.2s;
}
.genre-search-input:focus {
outline: none;
border-color: #f59e0b;
background: rgba(31, 41, 55, 0.7);
}
.genre-item:hover {
background: rgba(245, 158, 11, 0.1);
color: #e5e7eb;
}
.genre-item.selected {
background: rgba(245, 158, 11, 0.2);
color: #fbbf24;
font-weight: 600;
}
.genre-item.selected::after {
content: '✓';
float: right;
color: #f59e0b;
font-weight: bold;
}
/* Scrollbar for dropdown - Gold */
.genre-dropdown::-webkit-scrollbar-thumb {
background: rgba(245, 158, 11, 0.3);
border-radius: 4px;
}
.genre-dropdown::-webkit-scrollbar-thumb:hover {
background: rgba(245, 158, 11, 0.5);
}
/* Filter Panel Scrollbar - Gold */
.filter-panel-body::-webkit-scrollbar-thumb,
.filter-genre-list::-webkit-scrollbar-thumb {
background: rgba(245, 158, 11, 0.3);
border-radius: 4px;
}
.filter-panel-body::-webkit-scrollbar-thumb:hover,
.filter-genre-list::-webkit-scrollbar-thumb:hover {
background: rgba(245, 158, 11, 0.5);
}
/* Apply Button - Gold Gradient */
.filter-btn-apply {
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
color: white;
}
.filter-btn-apply:hover {
background: linear-gradient(135deg, #d97706 0%, #b45309 100%);
}
/* Range Slider Styling - Huntarr Gold Theme */
.filter-slider-container {
display: flex;
flex-direction: column;
gap: 16px;
padding: 8px 0;
}
.filter-slider {
-webkit-appearance: none;
appearance: none;
width: 100%;
height: 6px;
background: rgba(75, 85, 99, 0.3);
border-radius: 3px;
outline: none;
cursor: pointer;
transition: background 0.2s;
}
.filter-slider:hover {
background: rgba(75, 85, 99, 0.4);
}
/* Webkit (Chrome, Safari, Edge) */
.filter-slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
border-radius: 50%;
cursor: pointer;
border: 2px solid #1a1d2e;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4);
transition: all 0.2s;
}
.filter-slider::-webkit-slider-thumb:hover {
transform: scale(1.1);
box-shadow: 0 3px 12px rgba(245, 158, 11, 0.6);
}
.filter-slider::-webkit-slider-thumb:active {
transform: scale(1.05);
}
/* Firefox */
.filter-slider::-moz-range-thumb {
width: 20px;
height: 20px;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
border-radius: 50%;
cursor: pointer;
border: 2px solid #1a1d2e;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4);
transition: all 0.2s;
}
.filter-slider::-moz-range-thumb:hover {
transform: scale(1.1);
box-shadow: 0 3px 12px rgba(245, 158, 11, 0.6);
}
.filter-slider::-moz-range-thumb:active {
transform: scale(1.05);
}
.filter-slider::-moz-range-track {
width: 100%;
height: 6px;
background: rgba(75, 85, 99, 0.3);
border-radius: 3px;
}
/* Focus states */
.filter-slider:focus {
outline: none;
}
.filter-slider:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2), 0 3px 12px rgba(245, 158, 11, 0.6);
}
.filter-slider:focus::-moz-range-thumb {
box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2), 0 3px 12px rgba(245, 158, 11, 0.6);
}
/* Dual Range Slider - Single Bar with Two Thumbs */
.dual-range-slider {
position: relative;
height: 30px;
display: flex;
align-items: center;
}
.dual-range-slider input[type="range"] {
position: absolute;
width: 100%;
height: 6px;
background: transparent;
pointer-events: none;
-webkit-appearance: none;
appearance: none;
}
/* Background track (only show for the max slider) */
.dual-range-slider .range-max {
background: rgba(75, 85, 99, 0.3);
border-radius: 3px;
}
.dual-range-slider .range-min {
background: transparent;
}
/* Thumbs for both sliders */
.dual-range-slider input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
border-radius: 50%;
cursor: pointer;
pointer-events: all;
border: 2px solid #1a1d2e;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4);
transition: all 0.2s;
position: relative;
z-index: 3;
}
.dual-range-slider input[type="range"]::-moz-range-thumb {
width: 20px;
height: 20px;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
border-radius: 50%;
cursor: pointer;
pointer-events: all;
border: 2px solid #1a1d2e;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4);
transition: all 0.2s;
position: relative;
z-index: 3;
}
/* Hover effects */
.dual-range-slider input[type="range"]::-webkit-slider-thumb:hover {
transform: scale(1.1);
box-shadow: 0 3px 12px rgba(245, 158, 11, 0.6);
}
.dual-range-slider input[type="range"]::-moz-range-thumb:hover {
transform: scale(1.1);
box-shadow: 0 3px 12px rgba(245, 158, 11, 0.6);
}
/* Active/dragging state */
.dual-range-slider input[type="range"]:active::-webkit-slider-thumb {
transform: scale(1.05);
box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2), 0 3px 12px rgba(245, 158, 11, 0.6);
}
.dual-range-slider input[type="range"]:active::-moz-range-thumb {
transform: scale(1.05);
box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2), 0 3px 12px rgba(245, 158, 11, 0.6);
}
/* Focus state */
.dual-range-slider input[type="range"]:focus {
outline: none;
}
.dual-range-slider input[type="range"]:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2), 0 3px 12px rgba(245, 158, 11, 0.6);
}
.dual-range-slider input[type="range"]:focus::-moz-range-thumb {
box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2), 0 3px 12px rgba(245, 158, 11, 0.6);
}
/* Track styling for Firefox */
.dual-range-slider input[type="range"]::-moz-range-track {
width: 100%;
height: 6px;
background: transparent;
border: none;
}
.dual-range-slider .range-max::-moz-range-track {
background: rgba(75, 85, 99, 0.3);
border-radius: 3px;
}
/* Make sure min slider is on top when values are close */
.dual-range-slider .range-min {
z-index: 4;
}
.dual-range-slider .range-max {
z-index: 3;
}
/* When min slider is being used, put it on top */
.dual-range-slider .range-min:active {
z-index: 5;
}
/* Dual Range Slider with Visible Track and Gold Fill */
.dual-range-slider {
position: relative;
height: 30px;
display: flex;
align-items: center;
}
/* Background track (grey) */
.slider-track {
position: absolute;
width: 100%;
height: 6px;
background: rgba(75, 85, 99, 0.4);
border-radius: 3px;
z-index: 1;
}
/* Active range fill (gold) */
.slider-range {
position: absolute;
height: 6px;
background: linear-gradient(90deg, #f59e0b 0%, #d97706 100%);
border-radius: 3px;
z-index: 2;
}
/* Range inputs */
.dual-range-slider input[type="range"] {
position: absolute;
width: 100%;
height: 6px;
background: transparent;
pointer-events: none;
-webkit-appearance: none;
appearance: none;
}
/* Remove backgrounds from range inputs */
.dual-range-slider .range-max,
.dual-range-slider .range-min {
background: transparent;
}
/* Webkit track (make transparent) */
.dual-range-slider input[type="range"]::-webkit-slider-runnable-track {
height: 6px;
background: transparent;
border: none;
}
/* Firefox track (make transparent) */
.dual-range-slider input[type="range"]::-moz-range-track {
height: 6px;
background: transparent;
border: none;
}
/* Thumbs for both sliders */
.dual-range-slider input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
border-radius: 50%;
cursor: pointer;
pointer-events: all;
border: 3px solid #1f2937;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.5);
transition: all 0.2s;
position: relative;
z-index: 3;
}
.dual-range-slider input[type="range"]::-moz-range-thumb {
width: 20px;
height: 20px;
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
border-radius: 50%;
cursor: pointer;
pointer-events: all;
border: 3px solid #1f2937;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.5);
transition: all 0.2s;
position: relative;
z-index: 3;
}
/* Hover effects */
.dual-range-slider input[type="range"]::-webkit-slider-thumb:hover {
transform: scale(1.15);
box-shadow: 0 4px 16px rgba(245, 158, 11, 0.7);
}
.dual-range-slider input[type="range"]::-moz-range-thumb:hover {
transform: scale(1.15);
box-shadow: 0 4px 16px rgba(245, 158, 11, 0.7);
}
/* Active/dragging state */
.dual-range-slider input[type="range"]:active::-webkit-slider-thumb {
transform: scale(1.1);
box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.2), 0 4px 16px rgba(245, 158, 11, 0.7);
}
.dual-range-slider input[type="range"]:active::-moz-range-thumb {
transform: scale(1.1);
box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.2), 0 4px 16px rgba(245, 158, 11, 0.7);
}
/* Focus state */
.dual-range-slider input[type="range"]:focus {
outline: none;
}
.dual-range-slider input[type="range"]:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.2), 0 4px 16px rgba(245, 158, 11, 0.7);
}
.dual-range-slider input[type="range"]:focus::-moz-range-thumb {
box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.2), 0 4px 16px rgba(245, 158, 11, 0.7);
}
/* Z-index management for overlapping thumbs */
.dual-range-slider .range-min {
z-index: 4;
}
.dual-range-slider .range-max {
z-index: 3;
}
.dual-range-slider .range-min:active {
z-index: 5;
}
/* Fix overflow issue in movies view */
#requestarr-section .requestarr-content {
overflow-x: hidden;
overflow-y: auto;
}
.requestarr-view {
width: 100%;
max-width: 100%;
overflow-x: hidden;
}
.movies-controls {
max-width: 100%;
box-sizing: border-box;
}
.media-grid {
width: 100%;
max-width: 100%;
box-sizing: border-box;
}
/* Fix Movies view padding to match Discover view */
.movies-controls {
padding: 0 !important;
margin: 20px 0 !important;
}
.media-grid {
padding: 0 0 40px 0 !important;
}
/* Ensure no extra space on the right */
#requestarr-movies-view {
width: 100%;
max-width: 100%;
overflow-x: hidden;
box-sizing: border-box;
}
/* Match Movies view layout exactly to Discover view - 0 top padding */
#requestarr-section .requestarr-content {
padding: 0 30px 20px 30px;
overflow-x: hidden;
overflow-y: auto;
}
#requestarr-movies-view {
width: 100%;
max-width: 100%;
overflow: visible;
}
.movies-controls {
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 0 20px 0;
padding: 0;
gap: 15px;
}
.media-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 20px;
padding: 0;
min-height: 400px;
width: 100%;
box-sizing: border-box;
}
/* Ensure proper alignment */
.requestarr-view {
width: 100%;
max-width: 100%;
overflow: visible;
}
@media (max-width: 768px) {
#requestarr-section .requestarr-content {
padding: 0 15px 20px 15px;
}
.media-grid {
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 15px;
}
/* Search results: full width, minimal right padding to remove grey strip on mobile */
#search-results-view,
#home-search-results-view {
padding-left: 15px;
padding-right: 8px;
box-sizing: border-box;
}
.search-results-grid,
#home-search-results-grid {
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 15px;
width: 100%;
max-width: 100%;
justify-content: stretch;
justify-items: stretch;
padding-right: 0;
box-sizing: border-box;
}
.search-results-grid .media-card,
#home-search-results-grid .media-card {
width: 100%;
min-width: 0;
max-width: 100%;
}
}
/* Hidden Media Page Styles */
/* Search Bar - Full Width */
#requestarr-hidden-view .hidden-media-search {
position: relative;
width: 100%;
margin-bottom: 20px;
}
#requestarr-hidden-view .hidden-media-search i {
position: absolute;
left: 20px;
top: 50%;
transform: translateY(-50%);
color: #888;
font-size: 18px;
}
#requestarr-hidden-view .hidden-media-search-input {
width: 100%;
padding: 16px 20px 16px 55px;
background: rgba(255, 255, 255, 0.08);
border: 2px solid rgba(255, 255, 255, 0.15);
border-radius: 12px;
color: #fff;
font-size: 16px;
transition: all 0.2s;
box-sizing: border-box;
}
#requestarr-hidden-view .hidden-media-search-input:focus {
outline: none;
border-color: #22c55e;
background: rgba(255, 255, 255, 0.12);
}
#requestarr-hidden-view .hidden-media-search-input::placeholder {
color: #888;
}
/* Instance Selector Row */
.hidden-media-instance-row {
margin-bottom: 30px;
}
.hidden-media-instance-row .control-select {
min-width: 125px;
max-width: 200px;
}
.pagination-container {
display: flex;
justify-content: center;
align-items: center;
gap: 20px;
margin-top: 40px;
padding: 20px 0;
}
.pagination-btn {
padding: 10px 20px;
background: rgba(31, 41, 55, 0.5);
border: 1px solid rgba(75, 85, 99, 0.5);
border-radius: 8px;
color: #9ca3af;
cursor: pointer;
transition: all 0.2s;
font-size: 14px;
display: flex;
align-items: center;
gap: 8px;
}
.pagination-btn:hover:not(:disabled) {
background: rgba(31, 41, 55, 0.8);
border-color: #f59e0b;
color: #fff;
}
.pagination-btn:disabled {
opacity: 0.4;
cursor: not-allowed;
}
.page-info {
color: #9ca3af;
font-size: 14px;
}
.page-subtitle {
color: #888;
font-size: 14px;
margin-top: -10px;
margin-bottom: 25px;
}
/* Unhide button on hidden media cards - matching discover card status badges */
.media-card .media-card-unhide-btn {
position: absolute;
top: 8px;
right: 8px;
border-radius: 50%;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
background: #22c55e;
border: 2px solid #16a34a;
padding: 0;
cursor: pointer;
transition: all 0.2s;
}
.media-card .media-card-unhide-btn i {
color: #fff;
font-size: 14px;
}
.media-card .media-card-unhide-btn:hover {
transform: translateY(-2px) scale(1.05);
box-shadow: 0 4px 12px rgba(34, 197, 94, 0.6);
}
/* Hidden media cards - match discover card dimensions exactly */
#requestarr-hidden-view .media-card {
width: 150px;
height: 225px;
}
#requestarr-hidden-view .media-card-poster {
width: 150px;
height: 225px;
}
#requestarr-hidden-view .media-card-poster img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* Section Title Styling - Match Home Page */
.section-title-container {
display: flex;
align-items: center;
margin-bottom: 8px;
}
.section-title {
font-size: 1.4em;
font-weight: 700;
letter-spacing: 0.02em;
color: #e2e8f0;
margin: 0;
display: flex;
align-items: center;
gap: 10px;
}
.fire-emoji {
font-size: 1.3em;
animation: fire-pulse 2s ease-in-out infinite;
filter: drop-shadow(0 0 8px rgba(255, 100, 50, 0.8)) drop-shadow(0 0 16px rgba(255, 150, 50, 0.6));
}
.movie-emoji, .tv-emoji {
font-size: 1.3em;
}
@keyframes fire-pulse {
0%, 100% {
transform: scale(1);
filter: drop-shadow(0 0 8px rgba(255, 100, 50, 0.8)) drop-shadow(0 0 16px rgba(255, 150, 50, 0.6));
}
50% {
transform: scale(1.15);
filter: drop-shadow(0 0 12px rgba(255, 120, 50, 1)) drop-shadow(0 0 24px rgba(255, 180, 50, 0.8));
}
}
.trending-bar {
height: 3px;
width: 100%;
background: linear-gradient(to right,
rgba(59, 130, 246, 0.8) 0%,
rgba(96, 165, 250, 0.6) 25%,
rgba(59, 130, 246, 0.4) 50%,
rgba(96, 165, 250, 0.2) 75%,
transparent 100%
);
border-radius: 2px;
margin-bottom: 20px;
box-shadow: 0 0 10px rgba(59, 130, 246, 0.4);
animation: bar-glow 3s ease-in-out infinite;
}
@keyframes bar-glow {
0%, 100% {
opacity: 0.8;
box-shadow: 0 0 10px rgba(59, 130, 246, 0.4);
}
50% {
opacity: 1;
box-shadow: 0 0 16px rgba(59, 130, 246, 0.6);
}
}