/* TOP 20 - Lista Przebojów: style front-endowe.
   Wszystko oparte na zmiennych CSS (--top20-*), ustawianych z panelu Wygląd,
   dzięki czemu wtyczka dopasowuje się do dowolnego motywu bez konfliktów. */

.top20-wrap {
	box-sizing: border-box;
	font-family: var(--top20-font, inherit) !important;
	color: var(--top20-text, #1d1d1f) !important;
	width: 100% !important;
	max-width: 100% !important;
	background: transparent !important;
	float: none !important;
	display: block !important;
}

/* Wymuszenie pełnej szerokości nawet, gdy motyw/kreator stron (np. WPBakery Text Block,
   motywy ThemeREX takie jak Sounder) narzuca ograniczenie szerokości tekstu na elementach nadrzędnych. */
.wpb_text_column .top20-wrap,
.wpb_wrapper .top20-wrap,
.entry-content .top20-wrap,
.td-post-content .top20-wrap,
.content_wrap .top20-wrap,
.post_content .top20-wrap,
.content .top20-wrap,
article .top20-wrap {
	max-width: 100% !important;
	width: 100% !important;
}

/* Jeśli to sam BEZPOŚREDNI RODZIC (np. automatycznie wstawiony <p> albo wrapper
   WPBakery) jest zawężony przez typografię motywu, neutralizujemy ograniczenie
   TYLKO na nim (selektor bezpośredniego dziecka „>” - nigdy na dalszych przodkach,
   żeby nie zdjąć przypadkiem ograniczenia szerokości z całego layoutu strony). */
p:has(> .top20-wrap),
div:has(> .top20-wrap) {
	max-width: none !important;
	width: 100% !important;
}

.top20-wrap,
.top20-wrap *,
.top20-wrap *::before,
.top20-wrap *::after {
	box-sizing: border-box;
}

.top20-list-description {
	margin-bottom: 1em;
	color: var(--top20-text, #1d1d1f) !important;
	background: transparent !important;
}

.top20-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
	width: 100%;
	background: transparent !important;
}

.top20-voting-closed-note {
	background: var(--top20-row-bg-alt, rgba(0,0,0,0.04)) !important;
	border: 1px solid var(--top20-border, #e5e5ea) !important;
	border-radius: var(--top20-radius, 10px);
	padding: 8px 14px;
	color: var(--top20-muted, #6c757d) !important;
	font-size: 0.9em;
	margin-bottom: 10px;
}

.top20-empty {
	padding: 1em;
	color: var(--top20-muted, #6c757d) !important;
	text-align: center;
}

.top20-row {
	background: var(--top20-row-bg, #ffffff) !important;
	border: 1px solid var(--top20-border, #e5e5ea) !important;
	border-radius: var(--top20-radius, 10px);
	overflow: hidden;
	transition: box-shadow 0.15s ease;
}

.top20-list .top20-row:nth-child(even) {
	background: var(--top20-row-bg-alt, #f7f7f9) !important;
}

.top20-row-header {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 14px;
}

.top20-rank {
	box-sizing: border-box !important;
	flex: 0 0 auto !important;
	min-width: 30px !important;
	width: 30px !important;
	height: 30px !important;
	max-width: 30px !important;
	max-height: 30px !important;
	padding: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	font-weight: 700;
	font-size: 0.95em;
}

.top20-rank-circle .top20-rank {
	background: var(--top20-accent, #e63946) !important;
	color: #fff !important;
	border-radius: 50%;
}

.top20-rank-square .top20-rank {
	background: var(--top20-accent, #e63946) !important;
	color: #fff !important;
	border-radius: 4px;
}

.top20-rank-plain .top20-rank {
	color: var(--top20-accent, #e63946) !important;
	font-size: 1.1em;
}

.top20-rank-change {
	box-sizing: border-box !important;
	flex: 0 0 auto;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	font-size: 0.65em;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	min-width: 20px;
	padding: 3px 6px !important;
	border-radius: 999px !important;
	background: #ffffff !important;
	color: #000000 !important;
	border: 1px solid rgba(0, 0, 0, 0.1);
}

.top20-rank-change.is-new {
	font-size: 0.58em;
	letter-spacing: 0.02em;
}

.top20-thumb {
	box-sizing: border-box !important;
	flex: 0 0 auto !important;
	width: 44px !important;
	height: 44px !important;
	max-width: 44px !important;
	max-height: 44px !important;
	padding: 0 !important;
	border-radius: calc(var(--top20-radius, 10px) / 2);
	overflow: hidden;
	background: var(--top20-row-bg-alt, #f7f7f9) !important;
}

.top20-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.top20-meta {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	line-height: 1.3;
}

.top20-title {
	font-weight: 600;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--top20-text, #1d1d1f) !important;
}

.top20-artist {
	font-size: 0.85em;
	color: var(--top20-muted, #6c757d) !important;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.top20-votes {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 2px;
	background: var(--top20-vote-pill-bg, rgba(127, 127, 127, 0.12)) !important;
	border-radius: 999px !important;
	padding: 3px !important;
}

.top20-vote-btn {
	box-sizing: border-box !important;
	border: none !important;
	background: transparent !important;
	color: var(--top20-vote-icon, #6c757d) !important;
	border-radius: 50% !important;
	width: 30px !important;
	height: 30px !important;
	min-width: 30px !important;
	min-height: 30px !important;
	max-width: 30px !important;
	max-height: 30px !important;
	padding: 0 !important;
	margin: 0 !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	cursor: pointer;
	font-size: 1.05em;
	font-weight: 700;
	line-height: 1 !important;
	transition: background 0.15s ease, color 0.15s ease, transform 0.1s ease;
}

.top20-vote-icon {
	display: inline-flex;
	pointer-events: none;
}

.top20-vote-icon svg {
	display: block;
}

.top20-vote-btn:hover:not(:disabled) {
	background: var(--top20-vote-hover-bg, #e63946) !important;
	color: var(--top20-vote-hover-icon, #fff) !important;
	transform: scale(1.1);
}

.top20-vote-btn.is-active-up {
	background: var(--top20-accent, #e63946) !important;
	color: #fff !important;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

.top20-vote-btn.is-active-down {
	background: var(--top20-accent-down, #6c757d) !important;
	color: #fff !important;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

.top20-vote-btn:disabled {
	opacity: 1;
	cursor: default;
}

.top20-vote-btn:disabled:not(.is-active-up):not(.is-active-down) {
	opacity: 0.35;
}

.top20-score {
	min-width: 26px;
	text-align: center;
	font-weight: 700;
	color: var(--top20-score, #1d1d1f) !important;
}


.top20-expand-btn {
	box-sizing: border-box !important;
	flex: 0 0 auto !important;
	margin-left: auto !important;
	width: 32px !important;
	height: 32px !important;
	min-width: 32px !important;
	min-height: 32px !important;
	max-width: 32px !important;
	max-height: 32px !important;
	padding: 0 !important;
	border: 1px solid var(--top20-expand-border, #e5e5ea) !important;
	border-radius: 50% !important;
	background: var(--top20-expand-bg, transparent) !important;
	color: var(--top20-expand-icon, #6c757d) !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	cursor: pointer;
	font-size: 0.75em;
	line-height: 1 !important;
	transition: background 0.15s ease, color 0.15s ease, transform 0.2s ease, border-color 0.15s ease;
}

.top20-expand-btn:hover {
	border-color: var(--top20-expand-hover-bg, #e63946) !important;
	background: var(--top20-expand-hover-bg, #e63946) !important;
	color: var(--top20-expand-hover-icon, #fff) !important;
}

.top20-expand-icon {
	display: inline-flex;
	pointer-events: none;
	transition: transform 0.2s ease;
}

.top20-expand-icon svg {
	display: block;
}

.top20-row.is-open .top20-expand-btn {
	background: var(--top20-expand-hover-bg, #e63946) !important;
	border-color: var(--top20-expand-hover-bg, #e63946) !important;
	color: var(--top20-expand-hover-icon, #fff) !important;
}

.top20-row.is-open .top20-expand-icon {
	transform: scale(1.12);
}

.top20-embed-panel {
	border-top: 1px solid var(--top20-border, #e5e5ea) !important;
	padding: 12px 14px;
	background: var(--top20-row-bg-alt, #f7f7f9) !important;
}

.top20-embed-panel iframe {
	width: 100%;
	border: 0 !important;
	border-radius: calc(var(--top20-radius, 10px) / 2);
	display: block;
}

.top20-embed-panel iframe.top20-embed-spotify {
	height: 152px;
}

.top20-embed-panel iframe.top20-embed-youtube,
.top20-embed-panel iframe.top20-embed-generic {
	height: 315px;
	max-width: 560px;
}

@media (max-width: 480px) {
	.top20-row-header {
		flex-wrap: wrap;
		gap: 8px;
	}
	.top20-meta {
		flex-basis: 100%;
		order: 3;
	}
	.top20-embed-panel iframe.top20-embed-youtube,
	.top20-embed-panel iframe.top20-embed-generic {
		height: 220px;
	}
}
