/**
 * PratiqueTech Studio — espaços de anúncio (.ad-slot)
 * Desde a v1.38.0. Chaves de posição renomeadas na v1.39.0 (modo híbrido
 * AdSense/produtos) -- ver pts_ad_posicao_alias_legado() em inc/ads.php.
 *
 * Reserva o espaço de cada posição em modo AdSense com CSS puro
 * (aspect-ratio + max-width): o navegador já sabe a altura do bloco no
 * primeiro paint, antes do <ins> do AdSense carregar e preencher o espaço
 * de verdade. É isto que zera o CLS (Cumulative Layout Shift) causado por
 * anúncio nessas posições -- sem reserva, o bloco nasce com altura 0 e
 * empurra o resto da página quando o anúncio chega.
 *
 * Gerado por pts_render_ad_posicao() em inc/ads.php, que já sabe a posição
 * (a classe ad-slot--{posicao} usa a própria chave de pts_ad_positions())
 * -- não exige nenhuma configuração extra além do que a tela Anúncios já
 * pede.
 *
 * Carregado só quando pts_ads_should_render() é verdadeiro (ver
 * pts_ads_registrar_estilo() em inc/ads.php): com anúncios desligados, nada
 * relacionado a anúncio é carregado -- nem uma div, nem este arquivo.
 */

.ad-slot {
	display: block;
	width: 100%;
	margin: 0 auto;
	overflow: hidden;
	background-color: #f1f1f2;
	position: relative;
	contain: layout paint;
}

/* O AdSense escreve style="width:...;height:..." direto no <ins> quando o
 * anúncio carrega -- só !important garante que é o contêiner (não o
 * anúncio) quem manda no tamanho reservado. */
.ad-slot ins.adsbygoogle,
.ad-slot iframe {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: 100%;
	max-height: 100%;
	border: 0;
}

/* Modo produtos (v1.39.0): a foto do produto já tem width/height própria
 * (pts_produto_imagem_tag(), desde a v1.37.0) -- já não sofre de CLS por
 * conta própria, então NÃO herda o tamanho fixo pensado pra banner do
 * AdSense (que cortaria ou deixaria vazio ao redor de uma foto de produto
 * com outra proporção). Overflow também volta a "visible": um card de
 * produto (foto + preço + título) pode ser mais alto que a caixa de
 * banner que ele substitui. background e contain continuam -- são
 * inofensivos pra um card de produto. */
.ad-slot.is-modo-produtos {
	aspect-ratio: auto;
	max-width: none;
	min-height: 0;
	overflow: visible;
	background-color: transparent;
}

/* Desktop — tamanhos por posição em modo AdSense ---------------------------
 * As chaves são as mesmas de pts_ad_positions() em inc/ads.php; mudar um
 * tamanho aqui não exige tocar em PHP, e vice-versa (a lista de posições
 * válidas continua vindo só de lá). */

.ad-slot--home-abaixo-destaque  { max-width: 970px; aspect-ratio: 970 / 250; }
.ad-slot--home-trilho-lateral   { max-width: 300px; aspect-ratio: 300 / 600; }
.ad-slot--home-antes-rodape     { max-width: 970px; aspect-ratio: 970 / 90; }
.ad-slot--artigo-antes-texto    { max-width: 728px; aspect-ratio: 728 / 90; }
.ad-slot--artigo-depois-texto   { max-width: 728px; aspect-ratio: 728 / 90; }
.ad-slot--artigo-meio-conteudo  { max-width: 336px; aspect-ratio: 336 / 280; }
.ad-slot--ferramenta-antes      { max-width: 728px; aspect-ratio: 728 / 90; }
.ad-slot--ferramenta-depois     { max-width: 728px; aspect-ratio: 728 / 90; }

/* Fallback para navegador sem aspect-ratio (Safari < 15 e outros antigos):
 * sem isto, nesses navegadores específicos o contêiner voltaria a nascer
 * com altura 0 e o CLS voltaria a existir só ali. Escopado com @supports
 * para nunca disputar com o cálculo de aspect-ratio onde ele existe. Não
 * repetido pra .is-modo-produtos -- ela já reseta min-height pra 0. */
@supports not (aspect-ratio: 1 / 1) {
	.ad-slot--home-abaixo-destaque  { min-height: 250px; }
	.ad-slot--home-trilho-lateral   { min-height: 600px; }
	.ad-slot--home-antes-rodape     { min-height: 90px; }
	.ad-slot--artigo-antes-texto    { min-height: 90px; }
	.ad-slot--artigo-depois-texto   { min-height: 90px; }
	.ad-slot--artigo-meio-conteudo  { min-height: 280px; }
	.ad-slot--ferramenta-antes      { min-height: 90px; }
	.ad-slot--ferramenta-depois     { min-height: 90px; }
}

/* Mobile --------------------------------------------------------------- */

@media (max-width: 768px) {
	.ad-slot--home-abaixo-destaque  { max-width: 320px; aspect-ratio: 320 / 100; }
	.ad-slot--home-trilho-lateral   { max-width: 300px; aspect-ratio: 300 / 250; }
	.ad-slot--home-antes-rodape     { max-width: 320px; aspect-ratio: 320 / 100; }
	.ad-slot--artigo-antes-texto    { max-width: 320px; aspect-ratio: 320 / 100; }
	.ad-slot--artigo-depois-texto   { max-width: 320px; aspect-ratio: 320 / 100; }
	.ad-slot--artigo-meio-conteudo  { max-width: 300px; aspect-ratio: 300 / 250; }
	.ad-slot--ferramenta-antes      { max-width: 320px; aspect-ratio: 320 / 100; }
	.ad-slot--ferramenta-depois     { max-width: 320px; aspect-ratio: 320 / 100; }

	@supports not (aspect-ratio: 1 / 1) {
		.ad-slot--home-abaixo-destaque  { min-height: 100px; }
		.ad-slot--home-trilho-lateral   { min-height: 250px; }
		.ad-slot--home-antes-rodape     { min-height: 100px; }
		.ad-slot--artigo-antes-texto    { min-height: 100px; }
		.ad-slot--artigo-depois-texto   { min-height: 100px; }
		.ad-slot--artigo-meio-conteudo  { min-height: 250px; }
		.ad-slot--ferramenta-antes      { min-height: 100px; }
		.ad-slot--ferramenta-depois     { min-height: 100px; }
	}
}

/* Layout do modo produtos (pts-ad-produtos--horizontal/vertical/grid) --
 * classe aplicada pelo shortcode [pratiquetech_produtos_rotativo] (ver
 * pts_ads_renderizar_produtos() em inc/ads.php), de propósito SEM estilo
 * nenhum aqui: o visual de .pts-produtos-rotativo-item/.is-ativo já é
 * responsabilidade do tema desde antes deste arquivo existir (ver docblock
 * de inc/produtos-rotativos.php) -- a classe de layout só dá ao tema um
 * gancho a mais pra diferenciar os três casos, sem o plugin decidir por ele
 * um comportamento que hoje só existe de fato quando o tema o define.
 */

/* v1.40.0 -- padrões de imagem (inc/ads-padroes.php): igual ao bloco acima,
 * de propósito SEM estilo nenhum aqui. Classes novas, todas aditivas
 * (nenhuma classe antiga foi removida ou renomeada):
 *
 *   .pts-ad             -- em TODO .ad-slot, qualquer modo.
 *   .pts-ad-adsense     -- quando a posição está renderizando o ramo AdSense.
 *   .pts-ad-produtos    -- quando está renderizando o ramo Produtos.
 *   .pts-ad-hibrido     -- quando o MODO CONFIGURADO da posição é híbrido,
 *                          independente de qual dos dois ramos foi sorteado
 *                          hoje (ver pts_ads_hibrido_resolver() em inc/ads.php).
 *   .pts-ad-padrao-{nome} -- nome de um padrão de pts_ad_padroes() (ex.:
 *                          .pts-ad-padrao-retangulo-grande), só no ramo
 *                          Produtos, quando o tamanho da imagem veio de um
 *                          padrão resolvido (não de um "Tamanho customizado"
 *                          nem do tamanho próprio do produto).
 *   .pts-ad-keywords    -- no wrapper da posição especial "Fim do artigo —
 *                          keywords" (alias -- ver inc/produtos-keywords.php).
 *   .pts-keywords       -- alias de .pts-produtos-keywords, mesmo elemento.
 *
 * Só ganchos pro tema -- "tema é aparência, plugin é função" (ver docblock
 * de inc/ads-padroes.php). Tamanho de imagem (width/height reais do <img>)
 * continua vindo do padrão resolvido em PHP, nunca destas classes.
 */
