/* Ad Engine — apresentação das posições de anúncio.
 * Moldura do publisher apenas: nunca estiliza, corta, escala ou sobrepõe o
 * criativo do provedor. As reservas de espaço ficam no CSS crítico (inline). */
.ae-label {
	position: absolute;
	inset-block-start: 8px;
	inset-inline-start: 0;
	inset-inline-end: 0;
	margin: 0;
	text-align: center;
	color: var(--text-muted, #8a8494);
	font: 600 10px/1.6 "Source Sans 3", Arial, sans-serif;
	letter-spacing: .07em;
	text-transform: uppercase;
	visibility: hidden;
	pointer-events: none;
}
.ae-slot[data-st="f"] .ae-label { visibility: visible; }
html[data-theme="light-mode"] .ae-label { color: #6a6372; }
.ae-slot__ad > ins.adsbygoogle { display: block; margin-inline: auto; }

/* 7.1.13 — fio editorial quase invisível entre anúncios e foto principal.
 * A linha não é parte do anúncio, não cobre imagem/criativo e não acrescenta
 * uma nova unidade. No desktop só o Hero encosta na foto: o Masthead voltou
 * para abaixo do cabeçalho. A separação é leve também no tema claro. */
@media (max-width:767px) {
  html.ae-mh body.single-post .od-article__masthead-ad.ae-mh--mobile::after {
    content: "";
    display: block;
    inline-size: min(90%, 760px);
    block-size: 1px;
    margin: 18px auto 0;
    background: linear-gradient(to right, transparent, currentColor 18%, currentColor 82%, transparent);
    opacity: .11;
    pointer-events: none;
  }
}
html.ae-hr body.single-post .od-article__hero-ad::before {
  content: "";
  display: block;
  inline-size: min(90%, 760px);
  block-size: 1px;
  margin: 0 auto 18px;
  background: linear-gradient(to right, transparent, currentColor 18%, currentColor 82%, transparent);
  opacity: .11;
  pointer-events: none;
}


/* Anúncio simulado (ambiente local ou ?ae_sim=1): mostra a geometria sem pedir anúncio real. */
.ae-sim {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	inline-size: min(100%, var(--ae-sim-w, 336px));
	margin-inline: auto;
	border: 1px dashed currentColor;
	color: var(--text-muted, #8a8494);
	font: 600 12px/1.4 "Source Sans 3", Arial, sans-serif;
	opacity: .7;
}

/* Top Scroll estático: rótulo legível em faixa editorial de 32 px,
 * sem botão de fechar nem elementos sobre o criativo. */
.ae-slot--ts { background: color-mix(in srgb, var(--surface-2, #24212b) 25%, transparent); border-block-end: 1px solid var(--od-editorial-rule, #ffffff14); }
.ae-ts__bar { position: absolute; inset-block-start: 0; inset-inline: 0; block-size: 32px; display: flex; align-items: center; justify-content: flex-start; padding-inline: 12px; }
.ae-ts__bar .ae-label { position: static; text-align: start; visibility: visible; }

/*
 * Lateral das listagens no desktop. O cartão da editoria tem 24 px de respiro
 * e o anúncio tem 300 px: dentro do cartão ele empurrava a coluna para 300 px e
 * os títulos saíam 24 px para fora. Com o anúncio presente, o cartão passa para
 * o painel dos módulos e o anúncio fica abaixo dele, na largura inteira da
 * coluna; a coluna ocupa a altura da listagem, então o anúncio sticky acompanha
 * a leitura. A especificidade supera as regras de editorial-index.css.
 */
.go-archive-aside > .ae-slot--lst-rail { flex: 0 0 auto; }
@media (min-width: 1101px) {
	html[data-theme].ae-on body.go-verge.od-listing-page #primary .go-archive-aside:has(> .ae-slot--lst-rail) {
		display: flex !important;
		flex-direction: column !important;
		align-self: stretch !important;
		height: auto !important;
		padding: 0 !important;
		border-radius: 0 !important;
		background: none !important;
	}
	html[data-theme].ae-on body.go-verge.od-listing-page #primary .go-archive-aside:has(> .ae-slot--lst-rail) > .go-archive-aside__panel {
		display: block !important;
		/* O tema alinha os itens da lateral pelo início: sem isto o painel encolhe. */
		align-self: stretch !important;
		inline-size: auto !important;
		min-inline-size: 0;
		box-sizing: border-box;
		padding: 24px;
		border-radius: 12px;
		background: var(--od-index-panel, #f0ecf5);
	}
}

@media (forced-colors: active) {
	.ae-label { color: CanvasText; }
}

/* 7.8.3: separação editorial dos anúncios premium. Sem sobreposição ou
 * clipping do criativo; posição sticky manual no mobile permanece proibida. */
body.single-post .od-article__topscroll-wrap .ae-ts__bar{padding-inline:12px}
body.single-post .od-article__premium-mobile .ae-slot,
body.single-post .od-article__hero-ad--distributed .ae-slot{box-sizing:border-box;max-inline-size:100%}
body.single-post .od-article__premium-mobile--mh > .ae-slot--mh,
body.single-post .od-article__hero-ad--distributed > .ae-slot--hero{margin-inline:auto}
/* 7.8.5: ambos podem crescer na altura definida pelo AdSense. Nunca cortar
 * o iframe interno nem impor min/max ao elemento INS em CSS externo. */
@media (max-width:767px){
  body.single-post :is(.od-article__premium-mobile--mh,.od-article__hero-ad--distributed) .ae-slot__ad{width:100%;max-width:100%;height:auto;max-height:none;overflow:visible}
}
body.single-post .od-article__hero-ad--distributed .ae-slot__ad{height:auto;max-height:none;overflow:visible}
