/* ========================================
   CSS RESET & NORMALIZATION
   ======================================== */
*,
*::before,
*::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

html {
	font-size: 16px;
	line-height: 1.5;
	-webkit-text-size-adjust: 100%;
	-moz-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

body {
	background-color: #000;
	color: #fff;
	font-family: Arial, sans-serif;
	margin: 0;
	overflow-x: hidden;
	width: 100%;
	min-height: 100vh;
	padding-top: env(safe-area-inset-top, 0);
	padding-right: env(safe-area-inset-right, 0);
	padding-bottom: env(safe-area-inset-bottom, 0);
	padding-left: env(safe-area-inset-left, 0);
}

/* Remove default list styles */
ul,
ol {
	list-style: none;
}

/* Remove default link underlines */
a {
	text-decoration: none;
	color: inherit;
}

/* Remove default button styles */
button,
input,
select,
textarea {
	font-family: inherit;
	font-size: inherit;
	line-height: inherit;
	margin: 0;
}

/* Remove default table styles */
table {
	border-collapse: collapse;
	border-spacing: 0;
}

/* Images */
img {
	max-width: 100%;
	height: auto;
	display: block;
}

/* Form elements */
input,
select,
textarea,
button {
	outline: none;
}

/* ========================================
   DESIGN TOKENS
   ======================================== */
:root {
	/* Colors */
	--color-primary: #ff9900;
	--color-primary-hover: #ffcc00;
	--color-primary-dark: #e68a00;
	--color-background-dark: #1a1a1a;
	--color-background: #2a2a2a;
	--color-background-alt: #333333;
	--color-surface: #333333;
	--color-black: #000000;
	--color-white: #ffffff;
	--color-text: #ffffff;
	--color-text-muted: #cccccc;
	--color-border: #ff9900;
	--color-success: #4caf50;
	--color-success-light: #66bb6a;
	--color-error: #f44336;
	--color-error-dark: #c62828;
	--color-error-light: #ef5350;

	/* Shadows */
	--shadow-sm: 0 0 10px rgba(255, 153, 0, 0.5);
	--shadow-md: 0 0 15px rgba(255, 153, 0, 0.5);
	--shadow-lg: 0 0 25px rgba(255, 153, 0, 0.6);
	--shadow-glow: 0 0 15px rgba(255, 153, 0, 0.5);
	--shadow-focus: 0 0 8px rgba(255, 153, 0, 0.5);

	/* Spacing */
	--spacing-xs: 5px;
	--spacing-sm: 10px;
	--spacing-md: 15px;
	--spacing-lg: 20px;
	--spacing-xl: 30px;

	/* Border Radius */
	--radius-sm: 4px;
	--radius-md: 8px;
	--border-radius-sm: 4px;
	--border-radius-md: 8px;

	/* Transitions */
	--transition-fast: 0.2s;
	--transition-normal: 0.3s;

	/* Breakpoints */
	--breakpoint-mobile: 480px;
	--breakpoint-sm: 480px;
	--breakpoint-tablet: 768px;
	--breakpoint-md: 768px;
	--breakpoint-lg: 900px;
}

h1 {
	color: #ff9900;
	text-align: center;
	padding: 20px;
	text-shadow: 0 0 10px #ff9900;
	margin: 0;
	font-size: 2em;
}

/* Common button styles */
button {
	padding: 10px 20px;
	background: var(--color-primary);
	color: #000;
	border: none;
	border-radius: var(--radius-sm);
	cursor: pointer;
	font-weight: bold;
	transition:
		background var(--transition-normal),
		box-shadow var(--transition-normal);
	box-shadow: var(--shadow-sm);
}

button:hover {
	background: var(--color-primary-hover);
	box-shadow: var(--shadow-md);
}

/* Common form styles */
.form-group {
	margin-bottom: 20px;
}

label {
	display: block;
	margin-bottom: 5px;
	color: #ff9900;
}

input[type="text"],
input[type="password"] {
	width: 100%;
	padding: var(--spacing-sm);
	background: var(--color-background-alt);
	border: 1px solid #444;
	border-radius: var(--radius-sm);
	color: var(--color-text);
	font-size: 16px;
	transition:
		border-color var(--transition-normal),
		box-shadow var(--transition-normal);
}

input[type="text"]:focus,
input[type="password"]:focus {
	outline: none;
	border-color: var(--color-primary);
	box-shadow: 0 0 5px rgba(255, 153, 0, 0.3);
}

/* Prevent iOS zoom on focus */
select,
textarea {
	font-size: 16px;
}

/* Common notification styles */
.notification {
	position: fixed;
	top: var(--spacing-lg);
	right: var(--spacing-lg);
	padding: var(--spacing-md) var(--spacing-lg);
	background: var(--color-background);
	border-left: 4px solid var(--color-primary);
	color: var(--color-text);
	border-radius: var(--radius-sm);
	box-shadow: var(--shadow-sm);
	opacity: 0;
	transition:
		opacity var(--transition-normal),
		transform var(--transition-normal);
	transform: translateX(100%);
	z-index: 1000;
	max-width: calc(100vw - 40px);
	word-wrap: break-word;
}

.notification.show {
	opacity: 1;
	transform: translateX(0);
}

.notification.success {
	border-left-color: #4caf50;
}

.notification.error {
	border-left-color: #f44336;
}

/* Common card styles */
.card {
	background: var(--color-background);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-md);
	overflow: hidden;
	transition:
		transform var(--transition-fast),
		box-shadow var(--transition-fast);
	border: 1px solid var(--color-border);
}

.card:hover {
	transform: translateY(-5px);
	box-shadow: var(--shadow-lg);
}

/* Common grid styles */
.grid-container {
	display: grid;
	gap: var(--spacing-lg);
	padding: var(--spacing-lg);
	width: 100%;
	box-sizing: border-box;
}

/* Unified card container styles */
.media-container,
.torrents-container,
.videos-container,
.videos-grid,
.playlists-container,
.folders-grid {
	display: grid;
	grid-template-columns: repeat(
			auto-fill,
			minmax(var(--card-size, 200px), 1fr)
		);
	gap: var(--spacing-lg);
	padding: var(--spacing-lg);
	width: 100%;
	box-sizing: border-box;
	overflow: hidden;
}

/* Unified card base styles - shared by torrent, video, playlist, and folder cards */
.media-card,
.torrent-card,
.video-card,
.playlist-card,
.folder-card {
	background: var(--color-background);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-md);
	overflow: hidden;
	transition:
		transform var(--transition-fast),
		box-shadow var(--transition-fast);
	border: 1px solid var(--color-border);
	position: relative;
	padding-bottom: calc(var(--card-size, 200px) * 0.15);
	cursor: pointer;
	text-decoration: none;
	color: var(--color-text);
	display: block;
	min-width: 0;
}

.media-card:hover,
.torrent-card:hover,
.video-card:hover,
.playlist-card:hover,
.folder-card:hover {
	transform: translateY(-5px);
	box-shadow: var(--shadow-lg);
}

/* Card thumbnail wrapper */
.media-card-thumbnail-wrapper {
	position: relative;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	background: var(--color-background-alt);
}

/* Image card thumbnail wrapper - flexible aspect ratio */
.image-card .media-card-thumbnail-wrapper {
	aspect-ratio: unset;
	min-height: 100px;
	max-height: 240px;
	display: flex;
	align-items: center;
	justify-content: center;
}

/* Card image */
.media-card-image,
.torrent-image,
.video-image,
.playlist-card img {
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-bottom: 2px solid var(--color-border);
	display: block;
}

/* Image thumbnail - no fixed aspect ratio, maintains original proportions */
.image-thumbnail {
	aspect-ratio: unset;
	object-fit: contain;
	max-height: 240px;
}

/* Card title */
.media-card-title,
.torrent-title,
.video-title,
.playlist-title,
.folder-name {
	padding: calc(var(--card-size, 200px) * 0.08);
	font-size: calc(var(--card-size, 200px) * 0.06);
	font-weight: bold;
	color: var(--color-text);
	text-align: center;
	word-wrap: break-word;
}

/* Image title - smaller padding for image cards */
.image-title {
	padding: 8px;
	font-size: 12px;
}

/* Card stats bar */
.media-card-stats,
.torrent-stats {
	display: flex;
	justify-content: space-around;
	align-items: center;
	padding: calc(var(--card-size, 200px) * 0.04)
		calc(var(--card-size, 200px) * 0.08);
	font-size: calc(var(--card-size, 200px) * 0.05);
	color: var(--color-primary);
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	background: rgba(26, 26, 26, 0.9);
	border-top: 1px solid var(--color-border);
}

/* Stat components */
.media-card-stat {
	display: flex;
	align-items: center;
	gap: calc(var(--card-size, 200px) * 0.03);
}

.media-card-stat-icon {
	width: calc(var(--card-size, 200px) * 0.07);
	height: calc(var(--card-size, 200px) * 0.07);
}

.media-card-stat-value {
	font-weight: bold;
	margin-left: 4px;
}

/* No thumbnail placeholder */
.media-card-no-thumb {
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: calc(var(--card-size, 200px) * 0.25);
	background: var(--color-background-alt);
}

/* Torrent card specific styles */
.torrent-card.snatched {
	background: #1a2a1a;
	border: 1px solid #00ff00;
	box-shadow: 0 0 15px rgba(0, 255, 0, 0.5);
}

/* Legacy stat classes for compatibility */
.stat-value {
	font-weight: bold;
	margin-left: 4px;
}

.stat {
	display: flex;
	align-items: center;
	gap: 5px;
}

.stat-icon {
	width: 12px;
	height: 12px;
}

/* Card Size Control Styles */
.size-control-container {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--spacing-md);
	margin: var(--spacing-lg) auto;
	padding: var(--spacing-sm);
	background: var(--color-background);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-sm);
	max-width: 90%;
}

.size-control-container label {
	font-weight: bold;
	color: var(--color-primary);
}

#cardSizeSlider {
	width: 200px;
	height: 8px;
	border-radius: var(--radius-sm);
	background: var(--color-background-alt);
	outline: none;
	-webkit-appearance: none;
}

#cardSizeSlider::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--color-primary);
	cursor: pointer;
	box-shadow: 0 0 5px rgba(255, 153, 0, 0.8);
}

#cardSizeSlider::-moz-range-thumb {
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--color-primary);
	cursor: pointer;
	box-shadow: 0 0 5px rgba(255, 153, 0, 0.8);
	border: none;
}

#currentSizeValue {
	font-weight: bold;
	color: var(--color-primary);
	min-width: 40px;
	text-align: center;
}

/* Pagination styles */
.pagination-container {
	position: fixed;
	bottom: 0;
	left: 0;
	width: 100%;
	background: rgba(0, 0, 0, 0.9);
	padding: var(--spacing-sm) 0;
	padding-bottom: max(var(--spacing-sm), env(safe-area-inset-bottom, 0));
	z-index: 1000;
	text-align: center;
	color: var(--color-primary);
	font-size: 1.2em;
	border-top: 1px solid var(--color-border);
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.pagination-container a,
.pagination-container span {
	color: #ff9900;
	text-decoration: none;
	padding: 5px 10px;
}

.pagination-container a.disabled,
.pagination-container span.disabled {
	color: #555;
}

/* Ensure page content doesn't go under fixed pagination */
.media-container,
.torrents-container,
.videos-container,
.videos-grid,
.playlists-container,
.folders-grid {
	padding-bottom: 80px;
}

/* Common mobile styles */
@media (max-width: 768px) {
	h1 {
		font-size: 1.5em;
		padding: 15px 10px;
	}

	.notification {
		right: 10px;
		left: 10px;
		max-width: none;
		font-size: 14px;
		padding: var(--spacing-sm) var(--spacing-md);
	}

	/* Unified card grid layouts */
	.torrents-container,
	.videos-container,
	.videos-grid,
	.media-container,
	.playlists-container,
	.folders-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 10px;
		padding: 10px;
	}

	.torrent-card,
	.video-card,
	.media-card,
	.playlist-card,
	.folder-card {
		padding-bottom: 15px;
	}

	/* Unified card hover effects disabled on mobile */
	.torrent-card:hover,
	.video-card:hover,
	.media-card:hover,
	.playlist-card:hover,
	.folder-card:hover {
		transform: none;
	}

	.torrent-title,
	.video-title,
	.media-card-title,
	.playlist-title,
	.folder-name {
		font-size: 12px;
		padding: 6px;
	}

	.torrent-stats,
	.media-card-stats {
		font-size: 12px;
		padding: 5px;
	}

	.media-card-stat-icon,
	.stat-icon {
		width: 12px;
		height: 12px;
	}

	.folder-icon {
		font-size: 32px;
		padding: 15px;
	}

	.pagination-container {
		padding: 8px 10px;
		font-size: 0.9em;
		gap: 5px;
	}

	.pagination-container a,
	.pagination-container span {
		padding: 12px 16px;
		min-height: 44px;
		display: inline-flex;
		align-items: center;
	}

	/* Torrent and video image responsive */
	.torrent-image,
	.video-image,
	.media-card-image,
	.playlist-card img {
		height: auto;
		aspect-ratio: 16 / 9;
	}

	/* Unified thumbnail wrapper responsive */
	.thumbnail-wrapper,
	.media-card-thumbnail-wrapper {
		height: auto;
		aspect-ratio: 16 / 9;
	}

	.thumbnail-wrapper img,
	.media-card-thumbnail-wrapper img {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	/* Size control container responsive */
	.size-control-container {
		flex-direction: column;
		gap: 10px;
		padding: 15px;
	}

	#cardSizeSlider {
		width: 100%;
		max-width: 200px;
		height: 44px;
	}

	#cardSizeSlider::-webkit-slider-thumb {
		width: 28px;
		height: 28px;
	}

	#cardSizeSlider::-moz-range-thumb {
		width: 28px;
		height: 28px;
	}

	.size-control-container label,
	#currentSizeValue {
		margin: 0 auto;
	}
}

@media (max-width: 480px) {
	h1 {
		font-size: 1.2em;
	}

	.torrents-container,
	.videos-container,
	.videos-grid,
	.media-container,
	.playlists-container,
	.folders-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 8px;
		padding: 5px;
	}

	.folder-icon {
		font-size: 24px;
		padding: 10px;
	}

	.folder-name {
		font-size: 12px;
		padding: 5px;
	}

	.torrent-stats,
	.media-card-stats {
		font-size: 12px;
		padding: 3px 5px;
	}

	.media-card-stat-icon,
	.stat-icon {
		width: 12px;
		height: 12px;
	}
}

/* ─── Quality switcher ─────────────────────────────────────────────────── */
/* Small control on torrent cards that have multiple quality variants. */
.torrent-card .quality-switch-button {
	display: none;
	position: absolute;
	bottom: var(--spacing-xs);
	left: 50%;
	transform: translateX(-50%);
	background: rgba(0, 0, 0, 0.78);
	color: var(--color-primary);
	border: 1px solid var(--color-primary);
	border-radius: var(--radius-sm);
	padding: 2px 8px;
	font-size: 11px;
	font-weight: bold;
	cursor: pointer;
	white-space: nowrap;
	z-index: 5;
}
.torrent-card:hover .quality-switch-button {
	display: block;
}
.torrent-card .quality-switch-button:hover {
	background: var(--color-primary);
	color: #000;
}

.quality-switch-dropdown {
	background: #1a1a1a;
	border: 1px solid var(--color-primary);
	border-radius: var(--radius-sm);
	padding: 4px;
	z-index: 3000;
	min-width: 110px;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.6);
}
.quality-switch-option {
	padding: 5px 10px;
	color: #ddd;
	font-size: 12px;
	cursor: pointer;
	border-radius: 3px;
	white-space: nowrap;
}
.quality-switch-option:hover {
	background: rgba(255, 153, 0, 0.18);
	color: #fff;
}
.quality-switch-option.active {
	color: var(--color-primary);
	font-weight: bold;
}
