Files
Huntarr.io/frontend/static/css/requestarr-discover.css
2026-02-16 15:13:50 -05:00

4472 lines
95 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 */
/* ── Modern blue design — match Home page aesthetic ─────────────── */
#requestarr-section {
background: linear-gradient(180deg, rgba(15, 23, 42, 0.95) 0%, rgba(15, 23, 42, 0.85) 100%);
}
/* Space above sponsor = space below (20px); minimal top so it matches bottom */
#requestarr-section .requestarr-content {
padding: 0;
width: 100%;
overflow: visible;
box-sizing: border-box;
}
/* requestarr-view-header layout */
.requestarr-view-header {
display: flex;
align-items: center;
gap: 10px;
}
/* Smart Hunt: sponsor banners above toolbar */
.reqset-banners-row {
margin-bottom: 12px;
}
/* Global Search Bar - Full Width — refined blue style */
.global-search-bar {
position: relative;
width: 100%;
margin-bottom: 8px;
}
.global-search-bar i {
position: absolute;
left: 18px;
top: 50%;
transform: translateY(-50%);
color: #475569;
font-size: 14px;
z-index: 1;
pointer-events: none;
}
.global-search-bar input {
width: 100%;
padding: 12px 16px 12px 44px;
background: rgba(30, 41, 59, 0.8);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 10px;
color: #e2e8f0;
font-size: 14px;
transition: border-color 0.2s, box-shadow 0.2s;
box-sizing: border-box;
}
.global-search-bar input:focus {
outline: none;
border-color: rgba(99, 102, 241, 0.5);
box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);
background: rgba(30, 41, 59, 0.9);
}
.global-search-bar input::placeholder {
color: #475569;
}
/* 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: 13px;
top: 50%;
transform: translateY(-50%);
color: #666;
font-size: 12px;
}
.search-bar input {
width: 100%;
padding: 10px 12px 10px 38px;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 8px;
color: #fff;
font-size: 12px;
}
.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 {
position: relative; /* Positioning context for arrows */
margin-bottom: 8px;
padding: 8px 44px 0; /* Top + horizontal room for 38px arrows + 6px buffer */
}
.section-title {
font-size: 1.1rem;
font-weight: 600;
margin-bottom: 12px;
color: var(--text-primary, #e0e0e0);
}
.carousel-container {
position: static; /* Arrows position relative to .carousel-section instead */
width: 100%;
max-width: 100%;
overflow: visible; /* Allow cards to extend outside on hover */
}
/* Carousel Arrows — positioned relative to .carousel-section (has the padding) */
.carousel-arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 38px;
height: 38px;
background: rgba(15, 23, 42, 0.85);
border: 1px solid rgba(148, 163, 184, 0.15);
border-radius: 50%;
color: #94a3b8;
font-size: 16px;
cursor: pointer;
z-index: 20;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.25s ease;
opacity: 0.8;
}
.carousel-arrow:hover {
background: rgba(99, 102, 241, 0.15);
border-color: rgba(99, 102, 241, 0.4);
color: #a5b4fc;
opacity: 1 !important;
transform: translateY(-50%) scale(1.1);
}
/* Left arrow hidden at start; JS shows it after user scrolls right (then it stays visible) */
.carousel-arrow.left {
left: 3px;
opacity: 0;
pointer-events: none;
}
/* Right arrow always visible by default so users know the carousel scrolls (no trackpad/touch needed) */
.carousel-arrow.right {
right: 3px;
opacity: 0.8;
}
.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 0 30px; /* Extra padding top and bottom for hover scale */
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: 10px;
overflow: hidden;
transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
background: rgba(30, 41, 59, 0.5);
border: 1px solid rgba(148, 163, 184, 0.08);
position: relative;
}
.media-card:hover {
transform: translateY(-4px);
border-color: rgba(245, 158, 11, 0.4);
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
}
.media-card-poster {
width: 150px;
height: 225px;
position: relative;
overflow: hidden;
border-radius: 10px;
background: #0f172a;
/* 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: #6366f1;
border: 2px solid #2563eb;
}
/* In library: no button, so push title and text lower in the overlay */
.media-card.in-library .media-card-overlay {
justify-content: flex-end;
}
.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: 8px 10px 10px;
}
.media-card-title {
font-size: 12.5px;
font-weight: 600;
color: #e2e8f0;
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: #64748b;
gap: 8px;
}
.media-card-meta.no-hide .media-card-rating {
flex: 0;
justify-content: flex-end;
}
.media-card-year {
color: #64748b;
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: #475569;
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;
}
/* Delete (trash) button on media cards */
.media-card-delete-btn {
background: none;
border: none;
color: #475569;
cursor: pointer;
padding: 4px 6px;
border-radius: 4px;
transition: all 0.2s;
font-size: 12px;
flex-shrink: 0;
}
.media-card-delete-btn:hover {
color: #ef4444;
background: rgba(239, 68, 68, 0.1);
}
.media-card-delete-btn i {
font-size: 12px;
}
/* Smooth card removal animation */
.media-card.removing {
opacity: 0;
transform: scale(0.95);
}
/* 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 for Requestarr modal is handled by media-hunt.css (shared mh-req-modal styles) */
.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-request-btn.pressed {
opacity: 0.4 !important;
background: rgba(148, 163, 184, 0.2) !important;
border-color: rgba(148, 163, 184, 0.3) !important;
color: #94a3b8 !important;
cursor: default !important;
pointer-events: none !important;
box-shadow: none !important;
}
.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 — base definition is in style.css (single source of truth).
Only the season-toggle checked colour override is kept here. */
.season-toggle input:checked + .toggle-slider {
background-color: #f59e0b;
border-color: rgba(245, 158, 11, 0.5);
}
.season-name {
font-size: 15px;
font-weight: 500;
color: #fff;
}
/* Requestarr TV Detail - Huntarr blue (replace gold) */
#requestarr-tv-detail-view .mh-section-title,
#requestarr-tv-detail-view .mh-section-title i {
color: #a5b4fc;
}
#requestarr-tv-detail-view .mh-btn-primary {
background: linear-gradient(135deg, #6366f1 0%, #2563eb 100%);
border: 1px solid rgba(99, 102, 241, 0.5);
color: #fff;
}
#requestarr-tv-detail-view .mh-btn-primary:hover:not(:disabled) {
background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
filter: brightness(1.1);
}
#requestarr-tv-detail-view .mh-badge-warn {
background: rgba(99, 102, 241, 0.15);
color: #a5b4fc;
border: 1px solid rgba(99, 102, 241, 0.3);
}
#requestarr-tv-detail-view .mh-info-bar .mh-badge i {
color: inherit;
}
/* Show-level monitor: right of title */
.mh-hero-title-row {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.mh-hero-title-row .mh-hero-title {
margin-bottom: 0;
}
.mh-hero-series-monitor,
.mh-hero-movie-monitor {
flex-shrink: 0;
}
/* Series monitor button: larger icon, opaque background, right of title */
.mh-hero-title-row .mh-monitor-btn {
padding: 8px 12px;
font-size: 1.3em;
background: rgba(15, 23, 42, 0.9);
border: 1px solid rgba(148, 163, 184, 0.3);
border-radius: 8px;
cursor: pointer;
flex-shrink: 0;
color: #a5b4fc;
}
.mh-hero-title-row .mh-monitor-btn:hover {
background: rgba(30, 41, 59, 0.95);
border-color: rgba(148, 163, 184, 0.5);
color: #93c5fd;
}
.mh-hero-title-row .mh-monitor-btn .far.fa-bookmark {
color: #94a3b8;
}
/* Requestarr TV Detail - Season accordion */
.requestarr-tv-seasons-list {
display: flex;
flex-direction: column;
gap: 4px;
}
.requestarr-tv-season-item {
display: flex;
align-items: center;
padding: 12px 16px;
background: rgba(30, 30, 50, 0.5);
border-radius: 6px;
border: 1px solid rgba(255, 255, 255, 0.06);
cursor: pointer;
user-select: none;
transition: background 0.2s;
gap: 12px;
}
.requestarr-tv-season-item:hover {
background: rgba(30, 30, 50, 0.8);
}
.requestarr-tv-season-item .season-chevron {
color: #888;
transition: transform 0.2s;
width: 16px;
}
.requestarr-tv-season-item.expanded .season-chevron {
transform: rotate(90deg);
}
.requestarr-tv-season-item .season-name {
flex: 1;
}
/* TV Hunt monitor bookmark buttons */
.mh-monitor-btn {
background: none;
border: none;
cursor: pointer;
padding: 4px 6px;
color: #a5b4fc;
opacity: 0.9;
}
.mh-monitor-btn:hover {
opacity: 1;
color: #93c5fd;
}
.mh-monitor-btn .far.fa-bookmark {
color: #6b7280;
}
#requestarr-tv-detail-view .mh-ib-monitor {
display: flex;
align-items: center;
}
.requestarr-tv-season-item .season-ep-count {
font-size: 0.85em;
color: #888;
}
/* Season count badge: X / Y with color-coded status */
.season-count-badge {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 56px;
padding: 5px 10px;
font-size: 0.8em;
font-weight: 600;
letter-spacing: 0.02em;
border-radius: 6px;
transition: color 0.2s, background 0.2s, box-shadow 0.2s;
}
.season-count-badge-unknown {
color: #64748b;
background: rgba(100, 116, 139, 0.15);
}
.season-count-badge-empty {
color: #f87171;
background: rgba(239, 68, 68, 0.2);
box-shadow: 0 0 0 1px rgba(239, 68, 68, 0.25);
}
.season-count-badge-partial {
color: #facc15;
background: rgba(234, 179, 8, 0.2);
box-shadow: 0 0 0 1px rgba(234, 179, 8, 0.25);
}
.season-count-badge-complete {
color: #4ade80;
background: rgba(34, 197, 94, 0.2);
box-shadow: 0 0 0 1px rgba(34, 197, 94, 0.25);
}
.requestarr-tv-season-item .season-actions {
margin-left: auto;
}
/* Request Season: download icon. Red=empty, yellow=partial, grey=full/disabled */
.requestarr-tv-season-item .season-action-btn.request-season-btn {
padding: 6px 10px;
font-size: 0.9em;
border: 1px solid transparent;
border-radius: 6px;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
.requestarr-tv-season-item .season-action-btn.request-season-btn:disabled {
cursor: not-allowed;
opacity: 0.7;
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-unknown {
color: #64748b;
background: rgba(100, 116, 139, 0.2);
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-empty {
color: #f87171;
background: rgba(239, 68, 68, 0.2);
border-color: rgba(239, 68, 68, 0.3);
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-empty:hover:not(:disabled) {
background: rgba(239, 68, 68, 0.35);
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-partial {
color: #facc15;
background: rgba(234, 179, 8, 0.2);
border-color: rgba(234, 179, 8, 0.3);
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-partial:hover:not(:disabled) {
background: rgba(234, 179, 8, 0.35);
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-upgrade {
color: #facc15;
background: rgba(234, 179, 8, 0.2);
border-color: rgba(234, 179, 8, 0.3);
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-upgrade:hover:not(:disabled) {
background: rgba(234, 179, 8, 0.35);
}
.requestarr-tv-season-item .season-action-btn.request-season-btn-complete {
color: #94a3b8;
background: rgba(148, 163, 184, 0.2);
}
/* Episode request: download icon. Red=missing, yellow=not released, grey=in library */
.requestarr-tv-season-episodes .episode-table .ep-request-btn,
.requestarr-tv-season-episodes .episode-table .ep-request-inlibrary,
.requestarr-tv-season-episodes .episode-table .ep-upgrade-btn {
padding: 6px 10px;
border-radius: 6px;
display: inline-flex;
align-items: center;
justify-content: center;
transition: all 0.2s ease;
}
.requestarr-tv-season-episodes .episode-table .ep-request-btn,
.requestarr-tv-season-episodes .episode-table .ep-upgrade-btn {
cursor: pointer;
}
.requestarr-tv-season-episodes .episode-table .ep-upgrade-btn {
color: #facc15;
background: rgba(234, 179, 8, 0.15);
border: 1px solid rgba(234, 179, 8, 0.3);
}
.requestarr-tv-season-episodes .episode-table .ep-upgrade-btn:hover {
background: rgba(234, 179, 8, 0.25);
border-color: rgba(234, 179, 8, 0.5);
}
.requestarr-tv-season-episodes .episode-table .ep-request-btn.pressed,
.requestarr-tv-season-episodes .episode-table .ep-upgrade-btn.pressed,
.requestarr-tv-season-item .season-action-btn.pressed {
opacity: 0.4 !important;
background: rgba(148, 163, 184, 0.2) !important;
border-color: rgba(148, 163, 184, 0.3) !important;
color: #94a3b8 !important;
cursor: default !important;
pointer-events: none !important;
}
.requestarr-tv-season-episodes .episode-table .ep-request-inlibrary {
color: #94a3b8;
opacity: 0.6;
cursor: default;
}
.requestarr-tv-season-episodes .episode-table .ep-request-btn.ep-request-missing {
color: #f87171;
background: rgba(239, 68, 68, 0.2);
border: 1px solid rgba(239, 68, 68, 0.3);
}
.requestarr-tv-season-episodes .episode-table .ep-request-btn.ep-request-missing:hover {
background: rgba(239, 68, 68, 0.35);
}
.requestarr-tv-season-episodes .episode-table .ep-request-btn.ep-request-notreleased {
color: #facc15;
background: rgba(234, 179, 8, 0.2);
border: 1px solid rgba(234, 179, 8, 0.3);
}
.requestarr-tv-season-episodes .episode-table .ep-request-btn.ep-request-notreleased:hover {
background: rgba(234, 179, 8, 0.35);
}
.requestarr-tv-season-episodes .episode-table .ep-request-inlibrary {
color: #94a3b8;
opacity: 0.6;
cursor: default;
}
.mh-ep-status {
font-size: 0.85em;
padding: 4px 8px;
border-radius: 4px;
}
.mh-ep-status-ok {
color: #4ade80;
background: rgba(34, 197, 94, 0.15);
}
.mh-ep-status-warn {
color: #a5b4fc;
background: rgba(99, 102, 241, 0.15);
}
.mh-ep-status-notreleased {
color: #facc15;
background: rgba(234, 179, 8, 0.15);
}
.requestarr-tv-season-episodes {
display: none;
padding: 12px 16px;
background: rgba(20, 20, 40, 0.5);
border-radius: 0 0 6px 6px;
margin: -4px 0 4px 0;
border: 1px solid rgba(255, 255, 255, 0.06);
border-top: none;
}
.requestarr-tv-season-episodes.expanded {
display: block;
}
.requestarr-tv-season-episodes .episode-table {
width: 100%;
border-collapse: collapse;
}
.requestarr-tv-season-episodes .episode-table th {
padding: 8px 12px;
text-align: left;
font-size: 0.8em;
font-weight: 600;
color: #888;
text-transform: uppercase;
}
.requestarr-tv-season-episodes .episode-table td {
padding: 8px 12px;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
color: #e2e8f0;
}
.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: Modern Layout ---- */
.reqset-container {
width: 100%;
padding: 0;
box-sizing: border-box;
}
/* Toolbar */
.reqset-toolbar {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
padding: 9px 14px;
background: rgba(15, 23, 42, 0.55);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(148, 163, 184, 0.08);
border-radius: 10px;
gap: 12px;
}
.reqset-toolbar-left {
display: flex;
align-items: center;
gap: 10px;
}
.reqset-toolbar-right {
display: flex;
align-items: center;
gap: 8px;
}
.reqset-back-btn {
display: flex;
align-items: center;
gap: 5px;
padding: 5px 11px;
border-radius: 6px;
border: 1px solid rgba(255, 255, 255, 0.1);
background: rgba(255, 255, 255, 0.04);
color: var(--text-muted, #94a3b8);
font-size: 12px;
cursor: pointer;
transition: all 0.15s ease;
}
.reqset-back-btn:hover {
background: rgba(255, 255, 255, 0.1);
color: var(--text-primary, #e2e8f0);
}
.reqset-breadcrumb {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-weight: 500;
color: var(--text-primary, #e2e8f0);
}
.reqset-breadcrumb i:first-child {
color: #818cf8;
}
.reqset-breadcrumb-sep {
font-size: 9px;
color: var(--text-muted, #64748b);
}
.reqset-save-btn {
display: flex;
align-items: center;
gap: 5px;
padding: 6px 15px;
border-radius: 6px;
border: none;
background: linear-gradient(135deg, #6366f1, #818cf8);
color: #fff;
font-size: 12px;
font-weight: 500;
cursor: pointer;
transition: all 0.15s ease;
}
.reqset-save-btn:hover {
box-shadow: 0 4px 14px rgba(99, 102, 241, 0.4);
}
.reqset-save-btn:disabled {
opacity: 0.6;
cursor: not-allowed;
box-shadow: none;
}
/* Two-column grid */
.reqset-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
align-items: start;
}
/* Cards */
.reqset-card {
background: rgba(30, 32, 44, 0.65);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 12px;
overflow: visible;
}
.reqset-card-header {
display: flex;
align-items: center;
gap: 12px;
padding: 14px 18px;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 12px 12px 0 0;
}
.reqset-card-header h3 {
margin: 0;
font-size: 15px;
font-weight: 600;
color: var(--text-primary, #e2e8f0);
border: none;
padding: 0;
}
.reqset-card-icon {
width: 32px;
height: 32px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
color: #fff;
flex-shrink: 0;
}
.reqset-icon-blue { background: linear-gradient(135deg, #6366f1, #818cf8); }
.reqset-icon-red { background: linear-gradient(135deg, #dc2626, #f87171); }
.reqset-card-body {
padding: 18px;
}
.reqset-card-desc {
color: var(--text-muted, #94a3b8);
font-size: 13px;
line-height: 1.5;
margin: 0 0 16px 0;
}
/* Responsive */
@media (max-width: 900px) {
.reqset-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 600px) {
.reqset-toolbar-right {
width: auto;
justify-content: flex-end;
}
}
/* Legacy compat — keep old class working if referenced elsewhere */
.requestarr-settings-container {
width: 100%;
}
.settings-card {
background: rgba(30, 32, 44, 0.65);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 12px;
padding: 24px;
margin-bottom: 16px;
}
.settings-card h3 {
font-size: 1.1rem;
font-weight: 600;
color: #f1f5f9;
margin: 0 0 16px 0;
padding: 0 0 12px 0;
border-bottom: 1px solid rgba(148, 163, 184, 0.12);
letter-spacing: 0.3px;
}
.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: 10px 14px;
background-color: var(--input-bg, rgba(15, 23, 42, 0.6));
border: 1px solid var(--input-border, rgba(71, 85, 105, 0.4));
border-radius: var(--input-radius, 8px);
color: var(--input-text, #e2e8f0);
font-size: 0.9rem;
cursor: pointer;
transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
display: flex;
justify-content: space-between;
align-items: center;
}
.custom-select-display:hover {
border-color: var(--input-focus-border, rgba(99, 102, 241, 0.5));
}
.custom-select-display i {
color: #94a3b8;
transition: transform 0.2s;
}
.custom-select-display.open i {
transform: rotate(180deg);
}
.custom-select-display.open {
border-color: var(--input-focus-border, rgba(99, 102, 241, 0.5));
box-shadow: var(--input-focus-glow, 0 0 0 3px rgba(99, 102, 241, 0.1));
}
.custom-select-dropdown {
position: absolute;
top: calc(100% + 4px);
left: 0;
right: 0;
background: rgba(15, 23, 42, 0.95);
border: 1px solid var(--input-border, rgba(71, 85, 105, 0.4));
border-radius: var(--input-radius, 8px);
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
z-index: 9999;
overflow: hidden;
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
.custom-select-search {
padding: 8px;
border-bottom: 1px solid #4a5568;
}
.custom-select-search input {
width: 100%;
padding: 8px 12px;
background: rgba(15, 23, 42, 0.6) !important;
border: 1px solid rgba(71, 85, 105, 0.4) !important;
border-radius: 6px;
color: var(--input-text, #e2e8f0) !important;
font-size: 13px;
}
.custom-select-search input:focus {
outline: none;
border-color: var(--input-focus-border, rgba(99, 102, 241, 0.5)) !important;
}
.custom-select-list {
max-height: 240px; /* 6 items × 40px = 240px */
overflow-y: auto;
}
.custom-select-option {
padding: 12px 16px;
color: var(--input-text, #e2e8f0);
font-size: 14px;
cursor: pointer;
transition: background 0.2s;
}
.custom-select-option:hover {
background: rgba(99, 102, 241, 0.12);
}
.custom-select-option.selected {
background: #6366f1;
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;
}
/* Settings select */
.settings-select {
width: 100%;
padding: 10px 14px;
background-color: var(--input-bg, rgba(15, 23, 42, 0.6));
border: 1px solid var(--input-border, rgba(71, 85, 105, 0.4));
border-radius: var(--input-radius, 8px);
color: var(--input-text, #e2e8f0);
font-size: 0.9rem;
cursor: pointer;
transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.settings-select option {
padding: 12px 16px;
background: rgba(15, 23, 42, 0.95);
color: var(--input-text, #e2e8f0);
font-size: 14px;
}
.settings-select:hover {
border-color: var(--input-focus-border, rgba(99, 102, 241, 0.5));
}
.settings-select:focus {
outline: none;
border-color: var(--input-focus-border, rgba(99, 102, 241, 0.5));
box-shadow: var(--input-focus-glow, 0 0 0 3px rgba(99, 102, 241, 0.1));
}
.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: rgba(99, 102, 241, 0.1);
border: 1px solid rgba(99, 102, 241, 0.2);
border-radius: 6px;
font-size: 13px;
color: #c7d2fe;
}
.language-tag-remove {
cursor: pointer;
color: #9ca3af;
transition: color 0.2s;
}
.language-tag-remove:hover {
color: #ef4444;
}
.settings-input {
width: 100%;
padding: 10px 14px;
background-color: var(--input-bg, rgba(15, 23, 42, 0.6)) !important;
border: 1px solid var(--input-border, rgba(71, 85, 105, 0.4)) !important;
border-radius: var(--input-radius, 8px) !important;
color: var(--input-text, #e2e8f0) !important;
font-size: 0.9rem;
cursor: pointer;
transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.settings-input:hover {
border-color: var(--input-focus-border, rgba(99, 102, 241, 0.5)) !important;
}
.settings-input:focus {
outline: none;
border-color: var(--input-focus-border, rgba(99, 102, 241, 0.5)) !important;
box-shadow: var(--input-focus-glow, 0 0 0 3px rgba(99, 102, 241, 0.1)) !important;
}
.language-dropdown {
position: absolute;
top: calc(100% + 8px);
left: 0;
right: 0;
background: rgba(15, 23, 42, 0.95);
border: 1px solid var(--input-border, rgba(71, 85, 105, 0.4));
border-radius: var(--input-radius, 8px);
max-height: 300px;
overflow: hidden;
z-index: 9999;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
.language-search {
width: 100%;
padding: 12px;
background: rgba(15, 23, 42, 0.6) !important;
border: none !important;
border-bottom: 1px solid rgba(71, 85, 105, 0.4) !important;
color: var(--input-text, #e2e8f0) !important;
font-size: 14px;
border-radius: 0 !important;
}
.language-search:focus {
outline: none;
}
.language-list {
max-height: 250px;
overflow-y: auto;
}
.language-item {
padding: 12px 16px;
cursor: pointer;
color: var(--input-text, #e2e8f0);
font-size: 14px;
transition: background 0.2s;
}
.language-item:hover {
background: rgba(99, 102, 241, 0.12);
}
.language-item.selected {
background: #6366f1;
color: #fff;
}
/* Responsive */
@media (max-width: 768px) {
.requestarr-content {
padding: 0;
}
.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-section {
padding-left: 34px;
padding-right: 34px;
}
.carousel-arrow.left {
left: 0;
}
.carousel-arrow.right {
right: 0;
}
.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(99, 102, 241, 0.15);
border: 1px solid rgba(99, 102, 241, 0.3);
}
.status-requestable i {
color: #6366f1;
}
.status-requestable .status-title {
color: #6366f1;
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: #6366f1;
background: #1a2333;
}
.requestarr-notification.info i {
color: #6366f1;
}
/* 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: rgba(30, 41, 59, 0.7);
border: 1px solid rgba(148, 163, 184, 0.12);
border-radius: 8px;
color: #e2e8f0;
font-size: 14px;
cursor: pointer;
transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
}
.control-select:hover {
background: rgba(30, 41, 59, 0.9);
border-color: rgba(148, 163, 184, 0.25);
}
.control-select:focus {
outline: none;
border-color: rgba(99, 102, 241, 0.5);
box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);
}
.control-select option {
background: #0f172a;
color: #e2e8f0;
padding: 8px;
}
.filter-button {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 20px;
background: rgba(15, 23, 42, 0.6);
border: 1px solid rgba(148, 163, 184, 0.12);
border-radius: 8px;
color: #e2e8f0;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
margin-left: auto;
}
.filter-button:hover {
background: rgba(15, 23, 42, 0.8);
border-color: rgba(148, 163, 184, 0.25);
}
.filter-button i {
font-size: 14px;
}
/* Mobile responsive controls */
@media (max-width: 768px) {
.movies-controls {
flex-direction: column;
align-items: stretch;
padding: 0;
margin: 0 0 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;
justify-items: start;
}
/* Force media cards in grid to stay 150px (no stretching) */
.media-grid .media-card {
width: 150px;
}
@media (max-width: 768px) {
.media-grid {
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 15px;
justify-items: start;
}
.media-grid .media-card {
width: 120px;
}
}
.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: visible;
}
.movies-controls {
max-width: 100%;
box-sizing: border-box;
}
.media-grid {
width: 100%;
max-width: 100%;
box-sizing: border-box;
justify-items: start;
}
/* Fix Movies/TV view: match Discover compact layout (minimal vertical/horizontal spacing) */
.movies-controls {
padding: 0 !important;
margin: 0 0 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;
overflow-x: hidden;
overflow-y: auto;
}
#requestarr-movies-view {
width: 100%;
max-width: 100%;
overflow: visible;
}
.movies-controls {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
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;
justify-items: start;
}
/* Force cards in this grid to stay 150px */
#requestarr-movies-view .media-grid .media-card,
#requestarr-tv-view .media-grid .media-card {
width: 150px;
}
/* Ensure proper alignment */
.requestarr-view {
width: 100%;
max-width: 100%;
overflow: visible;
}
/* Settings view: allow dropdowns to overflow outside cards */
#requestarr-settings-view {
overflow: visible !important;
}
#requestarr-settings-view .reqset-card {
overflow: visible !important;
}
#requestarr-settings-view .reqset-card-body {
overflow: visible !important;
}
/* When settings is active, remove the scroll container that clips dropdowns */
.requestarr-content.settings-active {
overflow: visible !important;
}
@media (max-width: 768px) {
#requestarr-section .requestarr-content {
padding: 0;
}
/* No extra grey: cards fixed width at 120px */
.media-grid {
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 15px;
justify-items: start;
}
.media-grid .media-card,
#requestarr-movies-view .media-grid .media-card,
#requestarr-tv-view .media-grid .media-card {
width: 120px;
}
/* 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-items: start;
padding-right: 0;
box-sizing: border-box;
}
.search-results-grid .media-card,
#home-search-results-grid .media-card {
width: 120px;
}
}
/* Hidden Media Page Styles */
/* Search Bar - match Home/Discover global-search-bar (size + colors) */
#requestarr-hidden-view .hidden-media-search {
position: relative;
width: 100%;
margin-bottom: 8px;
}
#requestarr-hidden-view .hidden-media-search i {
position: absolute;
left: 18px;
top: 50%;
transform: translateY(-50%);
color: #475569;
font-size: 14px;
z-index: 1;
pointer-events: none;
}
#requestarr-hidden-view .hidden-media-search-input {
width: 100%;
padding: 12px 16px 12px 44px;
background: rgba(30, 41, 59, 0.8);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 10px;
color: #e2e8f0;
font-size: 14px;
transition: border-color 0.2s, box-shadow 0.2s;
box-sizing: border-box;
}
#requestarr-hidden-view .hidden-media-search-input:focus {
outline: none;
border-color: rgba(99, 102, 241, 0.5);
box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);
background: rgba(30, 41, 59, 0.9);
}
#requestarr-hidden-view .hidden-media-search-input::placeholder {
color: #475569;
}
/* Discover View Instance Controls */
.discover-instance-controls {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 15px;
margin: 0 0 20px 0;
padding: 0;
}
.discover-instance-controls .instance-selector-container {
flex-shrink: 0;
}
@media (max-width: 768px) {
.discover-instance-controls {
flex-direction: column;
align-items: stretch;
gap: 12px;
}
.discover-instance-controls .instance-selector-container {
width: 100%;
}
}
/* 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;
}
/* Glow only for Smart Hunt flame, not for Trending chart */
.smarthunt-flame {
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;
}
.trending-bar {
height: 3px;
width: 100%;
background: linear-gradient(to right,
rgba(99, 102, 241, 0.8) 0%,
rgba(96, 165, 250, 0.6) 25%,
rgba(99, 102, 241, 0.4) 50%,
rgba(96, 165, 250, 0.2) 75%,
transparent 100%
);
border-radius: 2px;
margin-bottom: 20px;
box-shadow: 0 0 10px rgba(99, 102, 241, 0.4);
}
/* ===================================================================
Requestarr Request Modal Two-column poster + form layout
=================================================================== */
/* Blur backgrounds when request modal is open */
body.requestarr-modal-open .app-container,
body.requestarr-modal-open .movie-detail-view {
filter: blur(10px);
}
body.requestarr-modal-open {
overflow: hidden;
}
/* Modal overlay */
.mh-req-modal {
position: fixed;
inset: 0;
z-index: 10000;
display: flex;
align-items: center;
justify-content: center;
isolation: isolate;
transform: translateZ(0);
filter: none;
}
.mh-req-modal .modal-backdrop {
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.7);
backdrop-filter: none;
-webkit-backdrop-filter: none;
z-index: 0;
}
/* Card */
.mh-req-card {
position: relative;
z-index: 2;
background: #1e293b;
border: 1px solid rgba(148, 163, 184, 0.12);
border-radius: 12px;
box-shadow: 0 24px 80px rgba(0, 0, 0, 0.55);
overflow: hidden;
max-width: 620px;
width: 92vw;
max-height: 90vh;
overflow-y: auto;
}
/* Close button */
.mh-req-close {
position: absolute;
top: 10px;
right: 10px;
z-index: 5;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.45);
border: none;
border-radius: 6px;
color: rgba(255, 255, 255, 0.7);
font-size: 14px;
cursor: pointer;
transition: all 0.15s;
}
.mh-req-close:hover {
background: rgba(0, 0, 0, 0.7);
color: #fff;
}
/* Two-column layout */
.mh-req-layout { display: flex; }
.mh-req-poster {
flex-shrink: 0;
width: 200px;
background: #0f172a;
}
.mh-req-poster img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.mh-req-form {
flex: 1;
min-width: 0;
padding: 24px 24px 20px;
display: flex;
flex-direction: column;
gap: 16px;
}
/* Header */
.mh-req-header {
display: flex;
flex-direction: column;
gap: 2px;
}
.mh-req-label {
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.6px;
color: #f59e0b;
}
.mh-req-title {
font-size: 20px;
font-weight: 700;
color: #fff;
margin: 0;
line-height: 1.25;
}
.mh-req-meta {
font-size: 13px;
color: rgba(148, 163, 184, 0.7);
margin-top: 2px;
}
/* Status badge */
.mh-req-status { display: flex; }
.mh-req-badge {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 12px;
border-radius: 6px;
font-size: 12px;
font-weight: 600;
}
.mh-req-badge i { font-size: 13px; }
.mh-req-badge-ok {
background: rgba(99, 102, 241, 0.12);
color: #a5b4fc;
border: 1px solid rgba(99, 102, 241, 0.2);
}
.mh-req-badge-lib {
background: rgba(34, 197, 94, 0.12);
color: #4ade80;
border: 1px solid rgba(34, 197, 94, 0.2);
}
.mh-req-badge-loading {
background: rgba(148, 163, 184, 0.08);
color: rgba(148, 163, 184, 0.6);
border: 1px solid rgba(148, 163, 184, 0.1);
}
.mh-req-badge-requested {
background: rgba(245, 158, 11, 0.12);
color: #fbbf24;
border: 1px solid rgba(245, 158, 11, 0.2);
}
.mh-req-badge-error {
background: rgba(239, 68, 68, 0.12);
color: #f87171;
border: 1px solid rgba(239, 68, 68, 0.2);
}
/* Form fields */
.mh-req-fields {
display: flex !important;
flex-direction: column !important;
gap: 12px !important;
width: 100% !important;
}
.mh-req-field {
display: grid !important;
grid-template-columns: 160px 1fr !important;
gap: 0 15px !important;
align-items: center !important;
width: 100% !important;
margin: 0 !important;
padding: 0 !important;
}
.mh-hidden {
display: none !important;
}
.mh-req-field label {
grid-column: 1 !important;
grid-row: 1 !important;
width: 160px !important;
min-width: 160px !important;
display: flex !important;
align-items: center !important;
white-space: nowrap !important;
color: rgba(148, 163, 184, 0.7) !important;
font-size: 13px !important;
font-weight: 600 !important;
}
/* Instance and root folder fields: icon + select in a row */
.mh-req-instance-wrap,
.mh-req-root-folder-wrap {
display: flex !important;
align-items: center !important;
gap: 8px !important;
grid-column: 2 !important;
grid-row: 1 !important;
}
.mh-req-instance-wrap .mh-req-root-info-icon,
.mh-req-root-folder-wrap .mh-req-root-info-icon {
flex-shrink: 0;
color: #94a3b8;
font-size: 16px;
text-decoration: none;
transition: color 0.2s;
}
.mh-req-instance-wrap .mh-req-root-info-icon:hover,
.mh-req-root-folder-wrap .mh-req-root-info-icon:hover {
color: #6366f1;
}
.mh-req-instance-wrap select,
.mh-req-root-folder-wrap select {
flex: 1 !important;
min-width: 0 !important;
}
.mh-req-field select {
grid-column: 2 !important;
grid-row: 1 !important;
width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
height: 36px !important;
padding: 0 35px 0 12px !important;
background-color: rgba(15, 23, 42, 0.6) !important;
border: 1px solid rgba(148, 163, 184, 0.2) !important;
border-radius: 6px !important;
color: #f1f5f9 !important;
font-size: 13px !important;
cursor: pointer !important;
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E") !important;
background-repeat: no-repeat !important;
background-position: right 12px center !important;
}
.mh-req-field select:focus {
outline: none !important;
border-color: #6366f1 !important;
background-color: rgba(15, 23, 42, 0.8) !important;
}
/* Thin red border when no instance or no root configured */
.mh-req-field select.field-warning {
border: 1px solid #ef4444 !important;
}
.mh-req-field select option {
background-color: #1e293b !important;
color: #f1f5f9 !important;
}
/* Actions */
.mh-req-actions {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 12px;
padding-top: 8px;
}
.mh-req-checkbox-wrap {
display: flex;
align-items: center;
gap: 8px;
font-size: 13px;
color: #94a3b8;
cursor: pointer;
width: 100%;
}
.mh-req-checkbox-wrap input { cursor: pointer; }
.mh-req-buttons {
display: flex;
justify-content: flex-end;
gap: 8px;
}
.mh-req-btn {
padding: 8px 20px;
border: none;
border-radius: 6px;
font-size: 13px;
font-weight: 600;
cursor: pointer;
transition: all 0.15s;
}
.mh-req-btn-cancel {
background: rgba(148, 163, 184, 0.1);
color: #94a3b8;
border: 1px solid rgba(148, 163, 184, 0.15);
}
.mh-req-btn-cancel:hover {
background: rgba(148, 163, 184, 0.15);
color: #e2e8f0;
}
.mh-req-btn-submit {
background: linear-gradient(135deg, #f59e0b, #d97706);
color: #000;
font-weight: 700;
}
.mh-req-btn-submit:hover:not(:disabled) {
filter: brightness(1.1);
box-shadow: 0 4px 12px rgba(245, 158, 11, 0.35);
}
.mh-req-btn-submit:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.mh-req-more-info-icon {
display: inline-flex;
align-items: center;
justify-content: center;
margin-left: 6px;
color: rgba(148, 163, 184, 0.5);
font-size: 12px;
text-decoration: none;
}
.mh-req-more-info-icon:hover { color: #a5b4fc; }
/* Mobile responsive */
@media (max-width: 600px) {
.mh-req-card { max-width: 95vw !important; }
.mh-req-layout { flex-direction: column !important; }
.mh-req-poster { width: 100% !important; height: 180px !important; }
.mh-req-poster img { object-position: center 20% !important; }
.mh-req-form { padding: 18px 16px 16px !important; }
.mh-req-field {
grid-template-columns: 1fr !important;
gap: 6px !important;
}
.mh-req-field label {
grid-column: 1 !important;
grid-row: 1 !important;
width: 100% !important;
min-width: 0 !important;
}
.mh-req-field select {
grid-column: 1 !important;
grid-row: 2 !important;
width: 100% !important;
}
.mh-req-close { top: 6px !important; right: 6px !important; }
}
/* ================================================================
Smart Hunt Settings
================================================================ */
.smarthunt-total-bar {
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
padding: 10px 16px;
margin-bottom: 16px;
border-radius: 8px;
font-size: 14px;
background: linear-gradient(145deg, rgba(20, 25, 35, 0.6), rgba(15, 19, 26, 0.4));
border: 1px solid rgba(99, 102, 241, 0.3);
color: #a5b4fc;
}
.smarthunt-total-bar.is-valid {
border-color: rgba(34, 197, 94, 0.5);
color: #86efac;
}
.smarthunt-total-bar.is-invalid {
border-color: rgba(239, 68, 68, 0.5);
color: #fca5a5;
}
.smarthunt-weight-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px solid rgba(90, 109, 137, 0.15);
}
.smarthunt-weight-row:last-child {
border-bottom: none;
}
.smarthunt-weight-label {
display: flex;
flex-direction: column;
flex: 1;
min-width: 0;
}
.smarthunt-weight-label span {
font-size: 14px;
font-weight: 500;
color: #e0e6ed;
}
.smarthunt-weight-label small {
font-size: 11px;
color: #8892a4;
margin-top: 2px;
}
.smarthunt-weight-input {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
}
.smarthunt-weight-input input.smarthunt-pct {
width: 60px;
text-align: center;
padding: 6px 4px;
font-size: 14px;
border-radius: 6px;
background: rgba(15, 19, 26, 0.5);
border: 1px solid rgba(90, 109, 137, 0.3);
color: #e0e6ed;
}
.smarthunt-weight-input span {
font-size: 13px;
color: #8892a4;
}
/* Toggle label for Smart Hunt settings */
#requestarr-smarthunt-settings-view .toggle-label {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
color: #e0e6ed;
}
/* Settings input (number) */
#requestarr-smarthunt-settings-view .settings-input {
width: 100%;
padding: 8px 12px;
font-size: 14px;
border-radius: 6px;
background: rgba(15, 19, 26, 0.5);
border: 1px solid rgba(90, 109, 137, 0.3);
color: #e0e6ed;
box-sizing: border-box;
}
/* Purple icon variant */
.reqset-icon-purple {
background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), rgba(99, 102, 241, 0.1));
color: #a78bfa;
}
@media (max-width: 600px) {
.smarthunt-weight-row {
flex-direction: column;
align-items: flex-start;
gap: 6px;
}
}
/* ── Media Type Badge (TV / Movie) ── */
.media-card .media-type-badge {
position: absolute;
top: 8px;
left: 8px;
z-index: 3;
padding: 1px 8px;
border-radius: 3px;
font-size: 9px;
font-weight: 700;
letter-spacing: 0.8px;
text-transform: uppercase;
line-height: 1.3;
pointer-events: none;
white-space: nowrap;
border: 1px solid rgba(30, 39, 56, 0.6);
background: rgba(17, 24, 39, 0.92);
color: #cbd5e1;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
transition: opacity 0.25s ease;
}
.media-card:hover .media-type-badge {
opacity: 0;
}