/*
 * components-jnews.css — recriação visual dos componentes que no template de
 * referência dependiam do plugin proprietário JNews (mechero,
 * mec-select-share, mec-instagram).
 *
 * Nada aqui importa ou depende do plugin: os arquivos originais serviram
 * apenas de referência visual (decisão 3 do planejamento). Nenhuma classe
 * `mec-`/`mecpw-` do plugin é reutilizada — a nomenclatura própria do tema
 * usa o prefixo `omec-`, casando com o JS vanilla das tasks 021 (hero),
 * 023 (compartilhamento).
 *
 * Depende de tokens.css.
 */

/* ==========================================================================
   Hero slider — equivalente ao mechero (task 021)
   ========================================================================== */

.omec-slider {
	position: relative;
	overflow: hidden;
}

.omec-slider__track {
	display: flex;
	transition: transform var(--mec-transition-base);
}

.omec-slider__slide {
	position: relative;
	flex: 0 0 100%;
	min-width: 0;
	aspect-ratio: 16 / 9;
}

.omec-slider__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.omec-slider__caption {
	position: absolute;
	inset-inline: 0;
	inset-block-end: 0;
	display: flex;
	flex-direction: column;
	gap: var(--mec-space-xs);
	padding: var(--mec-space-xl) var(--mec-space-lg) var(--mec-space-lg);
	background-image: linear-gradient(to top, rgb(0 0 0 / 80%), transparent);
	color: var(--mec-color-inverse);
}

.omec-slider__title {
	color: var(--mec-color-inverse);
	font-size: var(--mec-font-size-xl);
}

.omec-slider__title a {
	color: inherit;
}

.omec-slider__control {
	position: absolute;
	inset-block-start: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	background-color: rgb(0 0 0 / 45%);
	border-radius: var(--mec-radius-circle);
	color: var(--mec-color-inverse);
	transform: translateY(-50%);
	transition: background-color var(--mec-transition-fast);
}

.omec-slider__control:hover {
	background-color: var(--mec-color-accent);
	color: var(--mec-color-accent-contrast);
}

.omec-slider__control--prev {
	inset-inline-start: var(--mec-space-sm);
}

.omec-slider__control--next {
	inset-inline-end: var(--mec-space-sm);
}

.omec-slider__dots {
	position: absolute;
	inset-inline: 0;
	inset-block-end: var(--mec-space-sm);
	display: flex;
	gap: var(--mec-space-3xs);
	justify-content: center;
}

/*
 * `padding: 0` não é higiene: o `<button>` nasce com `padding: 1px 6px` do
 * navegador, e com `box-sizing: border-box` esses 12px horizontais viram o
 * piso da largura. O bullet saía 12x8 — ovalado — apesar de largura e altura
 * iguais aqui. `flex: 0 0 auto` completa: item de flex encolhe por omissão.
 */
.omec-slider__dot {
	flex: 0 0 auto;
	width: 0.5rem;
	height: 0.5rem;
	padding: 0;
	border: 0;
	background-color: rgb(255 255 255 / 45%);
	border-radius: var(--mec-radius-circle);
	transition: background-color var(--mec-transition-fast);
}

.omec-slider__dot.is-active {
	background-color: var(--mec-color-accent);
}

/* ==========================================================================
   Compartilhamento social

   Cinco redes em colunas iguais, ocupando a largura toda. NÃO segue o modelo:
   é especificação própria do PO.
   ========================================================================== */

.omec-share {
	display: grid;
	/*
	 * Contagem fixa, e não `auto-fit`: são sempre cinco, e `1fr` com
	 * `minmax(0, …)` implícito garante colunas iguais mesmo quando o nome de
	 * uma rede é bem mais longo que o das outras.
	 */
	grid-template-columns: repeat(5, 1fr);
	/*
	 * O fio de 1px é o fundo da página aparecendo entre as colunas: com cinco
	 * cores encostadas, o Facebook e o LinkedIn — dois azuis — se fundiam num
	 * bloco só.
	 */
	gap: 1px;
	padding: 0;
	list-style: none;
}

.omec-share-bloco {
	margin-block: var(--mec-space-lg);
}

/*
 * Rótulo do bloco, no mesmo idioma dos outros rótulos do tema: caixa alta,
 * miúdo e com espaçamento de letra. É `<p>` e não título de seção porque não
 * abre seção nenhuma — só nomeia a fileira logo abaixo, e virar `<h2>` sujaria
 * o esqueleto de títulos do post.
 */
.omec-share__titulo {
	margin: 0;
	color: var(--mec-color-heading);
	font-size: var(--mec-font-size-xs);
	font-weight: var(--mec-font-weight-bold);
	letter-spacing: var(--mec-letter-spacing-wide);
	text-transform: uppercase;
}

/*
 * Cores oficiais de cada marca. E-mail não tem marca: usa um cinza chumbo, que
 * é neutro e não disputa com o preto do X nem com os dois azuis. Contraste do
 * branco sobre ele: 7,6:1.
 */
.omec-share__link--facebook { --omec-share-cor: #1877f2; }
.omec-share__link--x        { --omec-share-cor: #000000; }
.omec-share__link--linkedin { --omec-share-cor: #0a66c2; }
.omec-share__link--whatsapp { --omec-share-cor: #25d366; }
.omec-share__link--email    { --omec-share-cor: #4a5459; }

.omec-share__link {
	display: flex;
	align-items: center;
	justify-content: center;
	/*
	 * 36px por decisão do PO. Fica abaixo dos 48px que as diretrizes de toque
	 * recomendam; em compensação a coluna inteira é área de clique, e no
	 * celular ela tem 71px de largura, o que dá folga no eixo que mais erra.
	 *
	 * O padding `xs` é o que faz os 36px valerem: 8px em cima e embaixo mais os
	 * 20px do ícone fecham exatamente nesse número. Com `sm` a caixa ia a 40px
	 * e o `min-height` nunca chegava a valer.
	 *
	 * `height: 100%` faz o `<a>` preencher o `<li>` do grid, de modo que não
	 * sobra faixa clicável fora dele.
	 */
	min-height: 36px;
	height: 100%;
	padding: var(--mec-space-xs);
	background-color: var(--omec-share-cor);
	color: #ffffff;
	line-height: 1;
	text-decoration: none;
	transition: background-color var(--mec-transition-fast);
}

.omec-share__icone {
	flex: 0 0 auto;
}

/*
 * O hover CLAREIA a própria cor da marca, em vez de trocar por outra.
 *
 * A cor do ÍCONE precisa ser reafirmada aqui. O `a:hover` do base.css tem
 * especificidade (0,1,1) contra os (0,1,0) de `.omec-share__link`, então vencia
 * e pintava o ícone de accent no hover — medido: `rgb(0, 68, 137)` sobre o azul
 * do Facebook. Branco é a única cor que funciona sobre os cinco fundos.
 */
@media (hover: hover) {
	.omec-share__link:hover {
		background-color: color-mix(in srgb, var(--omec-share-cor) 82%, #ffffff);
	}
}

.omec-share__link:hover,
.omec-share__link:focus,
.omec-share__link:focus-visible {
	color: #ffffff;
}

.omec-share__link:focus-visible {
	background-color: color-mix(in srgb, var(--omec-share-cor) 82%, #ffffff);
}

/*
 * Sem `color-mix` (navegador antigo), o hover ainda precisa responder — a
 * própria consulta garante que só um dos dois valha.
 */
@supports not (background-color: color-mix(in srgb, red 50%, black)) {
	.omec-share__link:hover,
	.omec-share__link:focus-visible {
		filter: brightness(1.15);
	}
}

/* O foco tem de ser visível sobre cinco fundos escuros diferentes. */
.omec-share__link:focus-visible {
	outline: 2px solid #ffffff;
	outline-offset: -5px;
}

/*
 * Sem `prefers-reduced-motion` aqui: o hover não move mais nada — o PO tirou a
 * subida do botão —, e o que resta é uma transição de cor, que não é movimento.
 */

/* ==========================================================================
   Grid do Instagram — equivalente ao mec-instagram
   ========================================================================== */

.omec-instagram {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(6rem, 1fr));
	gap: var(--mec-space-3xs);
}

.omec-instagram__item {
	position: relative;
	display: block;
	overflow: hidden;
	aspect-ratio: 1 / 1;
}

.omec-instagram__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--mec-transition-base);
}

.omec-instagram__item:hover img {
	transform: scale(1.06);
}

.omec-instagram__item::after {
	content: "";
	position: absolute;
	inset: 0;
	background-color: rgb(0 0 0 / 25%);
	opacity: 0;
	transition: opacity var(--mec-transition-fast);
}

.omec-instagram__item:hover::after {
	opacity: 1;
}

/* ==========================================================================
   Card flutuante do próximo post — equivalente ao mec_popup_post do modelo
   ========================================================================== */

/*
 * Aparece no canto inferior direito quando o leitor chega ao fim do texto, e
 * pode ser fechado. As medidas são as do `single.css` do modelo: 300px de
 * largura, canto de 3px, sombra dupla e a subida de 150px para 100px ao entrar.
 */
.mec_popup_post {
	position: fixed;
	inset-block-end: 9.375rem; /* 150px */
	inset-inline-end: 15px;
	z-index: var(--mec-z-sticky);
	width: 300px;
	max-width: calc(100vw - 30px);
	padding: 5px 20px 15px 15px;
	background-color: var(--mec-color-bg);
	border-radius: 3px;
	box-shadow: 0 0 1px rgb(0 0 0 / 20%), 0 2px 20px rgb(0 0 0 / 15%);
	visibility: hidden;
	opacity: 0;
	transition: opacity var(--mec-transition-base),
		inset-block-end var(--mec-transition-base),
		visibility 0s linear var(--mec-transition-base);
}

.mec_popup_post.active {
	inset-block-end: 6.25rem; /* 100px */
	visibility: visible;
	opacity: 1;
	transition: opacity 400ms ease, inset-block-end 400ms ease, visibility 0s;
}

/* A tarja fica presa no canto de baixo, sobre a borda do card. */
.mec_popup_post .caption {
	position: absolute;
	inset-block-end: 0;
	inset-inline-end: 0;
	padding: 3px 5px;
	background-color: var(--mec-color-accent);
	color: var(--mec-color-accent-contrast);
	font-size: var(--mec-font-size-xs);
	font-weight: var(--mec-font-weight-bold);
	letter-spacing: 1px;
	line-height: 1;
	text-transform: uppercase;
}

.mec_popup_content {
	display: flex;
	gap: var(--mec-space-sm);
	align-items: flex-start;
	margin-block-start: var(--mec-space-md);
}

.mec_popup_content .mec_thumb {
	flex: 0 0 60px;
}

.mec_popup_content .mec_thumb img {
	width: 60px;
	height: 60px;
	object-fit: cover;
}

.mec_popup_content .post-title {
	margin: 0;
	font-size: var(--mec-font-size-base);
	line-height: 1.4;
}

.mec_popup_close {
	position: absolute;
	inset-block-start: 0;
	inset-inline-end: 0;
	width: 25px;
	height: 25px;
	color: #949494;
	font-size: var(--mec-font-size-sm);
	line-height: 25px;
	text-align: center;
	transition: color var(--mec-transition-fast);
}

.mec_popup_close:hover {
	color: var(--mec-color-heading);
}
