.ipv-jambox { font-family: inherit; }
.ipv-jambox .ipv-filter { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; }
.ipv-jambox .ipv-filter-btn {
	padding: .4rem .9rem; border: 1px solid #ddd; background: #fff; border-radius: 999px;
	cursor: pointer; font-size: .9rem;
}
.ipv-jambox .ipv-filter-btn.is-active { background: #1a1a2e; color: #fff; border-color: #1a1a2e; }
.ipv-jambox .ipv-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
}
.ipv-jambox .ipv-card {
	padding: 1rem; border: 1px solid #eee; border-radius: 8px; background: #fff; text-align: center;
}
.ipv-jambox .ipv-card img { max-width: 100%; height: 60px; object-fit: contain; }
.ipv-jambox .ipv-card h3 { font-size: .95rem; margin: .5rem 0 .2rem; }
.ipv-jambox .ipv-card.is-hidden { display: none; }
.ipv-jambox .ipv-num { font-size: .8rem; color: #666; }

.ipv-jambox.ipv-decoders .ipv-decoder-row {
	display: flex; gap: 1.5rem; padding: 1.5rem 0; border-bottom: 1px solid #eee;
	align-items: flex-start; flex-wrap: wrap;
}
.ipv-jambox.ipv-decoders .ipv-decoder-row img.icon { width: 48px; height: 48px; object-fit: contain; }
.ipv-jambox.ipv-decoders .ipv-decoder-row img.main { width: 200px; height: auto; }
.ipv-jambox.ipv-decoders .ipv-decoder-body { flex: 1; min-width: 240px; }

.ipv-jambox.ipv-promos .ipv-promo-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.ipv-jambox.ipv-promos .ipv-promo-grid a { display: block; text-decoration: none; color: inherit; }
.ipv-jambox.ipv-promos .ipv-promo-grid img { width: 100%; height: auto; border-radius: 8px; }
.ipv-jambox.ipv-promos .ipv-promo-grid p { margin-top: .5rem; font-weight: 600; }
